Support core status check and force restart Optimize proxies page and access page Update flutter and pub dependencies
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
|
|
}
|