Support core status check and force restart Optimize proxies page and access page Update flutter and pub dependencies Update go version Optimize more details
131 lines
4.7 KiB
Go
131 lines
4.7 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/metacubex/mihomo/adapter/provider"
|
|
P "github.com/metacubex/mihomo/component/process"
|
|
"github.com/metacubex/mihomo/constant"
|
|
"github.com/metacubex/mihomo/log"
|
|
"github.com/metacubex/mihomo/tunnel"
|
|
"net/netip"
|
|
"time"
|
|
)
|
|
|
|
type InitParams struct {
|
|
HomeDir string `json:"home-dir"`
|
|
Version int `json:"version"`
|
|
}
|
|
|
|
type SetupParams struct {
|
|
SelectedMap map[string]string `json:"selected-map"`
|
|
TestURL string `json:"test-url"`
|
|
}
|
|
|
|
type UpdateParams struct {
|
|
Tun *tunSchema `json:"tun"`
|
|
AllowLan *bool `json:"allow-lan"`
|
|
MixedPort *int `json:"mixed-port"`
|
|
FindProcessMode *P.FindProcessMode `json:"find-process-mode"`
|
|
Mode *tunnel.TunnelMode `json:"mode"`
|
|
LogLevel *log.LogLevel `json:"log-level"`
|
|
IPv6 *bool `json:"ipv6"`
|
|
Sniffing *bool `json:"sniffing"`
|
|
TCPConcurrent *bool `json:"tcp-concurrent"`
|
|
ExternalController *string `json:"external-controller"`
|
|
Interface *string `json:"interface-name"`
|
|
UnifiedDelay *bool `json:"unified-delay"`
|
|
}
|
|
|
|
type tunSchema struct {
|
|
Enable bool `yaml:"enable" json:"enable"`
|
|
Device *string `yaml:"device" json:"device"`
|
|
Stack *constant.TUNStack `yaml:"stack" json:"stack"`
|
|
DNSHijack *[]string `yaml:"dns-hijack" json:"dns-hijack"`
|
|
AutoRoute *bool `yaml:"auto-route" json:"auto-route"`
|
|
RouteAddress *[]netip.Prefix `yaml:"route-address" json:"route-address,omitempty"`
|
|
}
|
|
|
|
type ChangeProxyParams struct {
|
|
GroupName *string `json:"group-name"`
|
|
ProxyName *string `json:"proxy-name"`
|
|
}
|
|
|
|
type TestDelayParams struct {
|
|
ProxyName string `json:"proxy-name"`
|
|
TestUrl string `json:"test-url"`
|
|
Timeout int64 `json:"timeout"`
|
|
}
|
|
|
|
type ExternalProvider struct {
|
|
Name string `json:"name"`
|
|
Type string `json:"type"`
|
|
VehicleType string `json:"vehicle-type"`
|
|
Count int `json:"count"`
|
|
Path string `json:"path"`
|
|
UpdateAt time.Time `json:"update-at"`
|
|
SubscriptionInfo *provider.SubscriptionInfo `json:"subscription-info"`
|
|
}
|
|
|
|
const (
|
|
messageMethod Method = "message"
|
|
initClashMethod Method = "initClash"
|
|
getIsInitMethod Method = "getIsInit"
|
|
forceGcMethod Method = "forceGc"
|
|
shutdownMethod Method = "shutdown"
|
|
validateConfigMethod Method = "validateConfig"
|
|
updateConfigMethod Method = "updateConfig"
|
|
getProxiesMethod Method = "getProxies"
|
|
changeProxyMethod Method = "changeProxy"
|
|
getTrafficMethod Method = "getTraffic"
|
|
getTotalTrafficMethod Method = "getTotalTraffic"
|
|
resetTrafficMethod Method = "resetTraffic"
|
|
asyncTestDelayMethod Method = "asyncTestDelay"
|
|
getConnectionsMethod Method = "getConnections"
|
|
closeConnectionsMethod Method = "closeConnections"
|
|
resetConnectionsMethod Method = "resetConnectionsMethod"
|
|
closeConnectionMethod Method = "closeConnection"
|
|
getExternalProvidersMethod Method = "getExternalProviders"
|
|
getExternalProviderMethod Method = "getExternalProvider"
|
|
getCountryCodeMethod Method = "getCountryCode"
|
|
getMemoryMethod Method = "getMemory"
|
|
updateGeoDataMethod Method = "updateGeoData"
|
|
updateExternalProviderMethod Method = "updateExternalProvider"
|
|
sideLoadExternalProviderMethod Method = "sideLoadExternalProvider"
|
|
startLogMethod Method = "startLog"
|
|
stopLogMethod Method = "stopLog"
|
|
startListenerMethod Method = "startListener"
|
|
stopListenerMethod Method = "stopListener"
|
|
updateDnsMethod Method = "updateDns"
|
|
crashMethod Method = "crash"
|
|
setupConfigMethod Method = "setupConfig"
|
|
getConfigMethod Method = "getConfig"
|
|
deleteFile Method = "deleteFile"
|
|
)
|
|
|
|
type Method string
|
|
|
|
type MessageType string
|
|
|
|
type Delay struct {
|
|
Url string `json:"url"`
|
|
Name string `json:"name"`
|
|
Value int32 `json:"value"`
|
|
}
|
|
|
|
type Message struct {
|
|
Type MessageType `json:"type"`
|
|
Data interface{} `json:"data"`
|
|
}
|
|
|
|
const (
|
|
LogMessage MessageType = "log"
|
|
DelayMessage MessageType = "delay"
|
|
RequestMessage MessageType = "request"
|
|
LoadedMessage MessageType = "loaded"
|
|
)
|
|
|
|
func (message *Message) Json() (string, error) {
|
|
data, err := json.Marshal(message)
|
|
return string(data), err
|
|
}
|