Temp
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,6 +5,7 @@ build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/
|
||||
.idea/modules.xml
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
|
||||
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -4,7 +4,7 @@
|
||||
<component name="FrameworkDetectionExcludesConfiguration">
|
||||
<file type="web" url="file://$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="azul-21" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="zulu-21" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,63 +1,111 @@
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
||||
@Serializable
|
||||
data class Clash(
|
||||
// Port
|
||||
val port: Int? = null,
|
||||
val socksPort: Int? = null,
|
||||
val mixedPort: Int? = null,
|
||||
// LAN
|
||||
/*------------------------------------------- *General configuration* -------------------------------------------*/
|
||||
// Allow LAN
|
||||
val allowLan: Boolean? = null,
|
||||
val bindAddress: String? = null,
|
||||
val authentication: List<String>? = null,
|
||||
val skipAuthPrefixes: List<String>? = null,
|
||||
val lanAllowedIps: List<String>? = null,
|
||||
val lanDisallowedIps: List<String>? = null,
|
||||
val findProcessMode: String? = null,
|
||||
val authentication: List<String>? = null,
|
||||
val skipAuthPrefixes: List<String>? = null,
|
||||
|
||||
// Operation Mode
|
||||
val mode: String? = null,
|
||||
// Geo
|
||||
val geoxUrl: GeoXUrl? = null,
|
||||
val geoAutoUpdate: Boolean? = null,
|
||||
val geoUpdateInterval: Int? = null,
|
||||
|
||||
// Log Level
|
||||
val logLevel: String? = null,
|
||||
val ipv6: Boolean? = null,
|
||||
val tls: TLS? = null,
|
||||
// External Controller
|
||||
|
||||
// TCP Keep Alive Settings
|
||||
val keepAliveInterval: Int? = null,
|
||||
val keepAliveIdle: Int? = null,
|
||||
val disableKeepAlive: Boolean? = null,
|
||||
|
||||
// Process Matching Mode
|
||||
val findProcessMode: String? = null,
|
||||
|
||||
// External Control (API)
|
||||
val externalController: String? = null,
|
||||
val externalControllerTls: String? = null,
|
||||
val externalControllerCors: ExternalControllerCors? = null,
|
||||
val externalControllerUnix: String? = null,
|
||||
val externalControllerPipe: String? = null,
|
||||
val secret: String? = null,
|
||||
val externalDohServer: String? = null,
|
||||
|
||||
// External User Interface
|
||||
val externalUi: String? = null,
|
||||
val externalUiName: String? = null,
|
||||
val externalUiUrl: String? = null,
|
||||
val externalDohServer: String? = null,
|
||||
val interfaceName: String? = null,
|
||||
val globalClientFingerprint: String? = null,
|
||||
val experimental: Experimental? = null,
|
||||
val unifiedDelay: Boolean? = null,
|
||||
val hosts: List<String>? = null,
|
||||
|
||||
// Cache
|
||||
val profile: Profile? = null,
|
||||
val tun: Tun? = null,
|
||||
val sniffer: Sniffer? = null,
|
||||
val tunnels: List<Tunnel>? = null,
|
||||
|
||||
// Unified Delay
|
||||
val unifiedDelay: Boolean? = null,
|
||||
|
||||
// TCP Concurrency
|
||||
val tcpConcurrent: Boolean? = null,
|
||||
|
||||
// Outbound Interface
|
||||
val interfaceName: String? = null,
|
||||
|
||||
// Routing Mark
|
||||
val routingMark: Int? = null,
|
||||
|
||||
// TLS
|
||||
val tls: TLS? = null,
|
||||
|
||||
// GEO Data Configuration
|
||||
val geoxUrl: GeoXUrl? = null,
|
||||
val geoAutoUpdate: Boolean? = null,
|
||||
val geoUpdateInterval: Int? = null,
|
||||
|
||||
// Global Client Fingerprint
|
||||
val globalClientFingerprint: String? = null,
|
||||
|
||||
// Custom Global UA
|
||||
val globalUa: String? = null,
|
||||
|
||||
// ETag Support
|
||||
val etagSupport: Boolean? = null,
|
||||
|
||||
/*------------------------------------------------ *DNS* ------------------------------------------------*/
|
||||
val hosts: List<String>? = null,
|
||||
// TODO:
|
||||
val dns: DNS? = null,
|
||||
val sniffer: Sniffer? = null,
|
||||
|
||||
|
||||
/*------------------------------------------------ *Inbounds* ------------------------------------------------*/
|
||||
// Proxy Port
|
||||
val port: Int? = null,
|
||||
val socksPort: Int? = null,
|
||||
val mixedPort: Int? = null,
|
||||
val redirPort: Int? = null,
|
||||
val tproxyPort: Int? = null,
|
||||
val tun: Tun? = null,
|
||||
val listeners: List<Listener>? = null,
|
||||
|
||||
// 未在文档中提到的属性
|
||||
val experimental: Experimental? = null,
|
||||
val tunnels: List<Tunnel>? = null,
|
||||
val proxies: List<Proxy>? = null,
|
||||
val proxyGroups: List<ProxyGroup>? = null,
|
||||
val proxyProviders: Map<String, ProxyProvider>? = null,
|
||||
val ruleProviders: Map<String, RuleProvider>? = null,
|
||||
val rules: List<String>? = null,
|
||||
val subRules: Map<String, List<String>>? = null,
|
||||
val listeners: List<Listener>? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class GeoXUrl(
|
||||
val geoip: String? = null,
|
||||
val geosite: String? = null,
|
||||
val mmdb: String? = null
|
||||
val mmdb: String? = null,
|
||||
val asn: String? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
@@ -88,20 +136,23 @@ data class Profile(
|
||||
data class Tun(
|
||||
val enable: Boolean? = null,
|
||||
val stack: String? = null,
|
||||
val dnsHijack: List<String>? = null,
|
||||
val autoDetectInterface: Boolean? = null,
|
||||
val autoRoute: Boolean? = null,
|
||||
val autoRedirect: Boolean? = null,
|
||||
val autoDetectInterface: Boolean? = null,
|
||||
val dnsHijack: List<String>? = null,
|
||||
val device: String? = null,
|
||||
val mtu: Int? = null,
|
||||
val strictRoute: Boolean? = null,
|
||||
val gso: Boolean? = null,
|
||||
val gsoMaxSize: Int? = null,
|
||||
val autoRedirect: Boolean? = null,
|
||||
val strictRoute: Boolean? = null,
|
||||
val udpTimeout: Int? = null,
|
||||
val iproute2TableIndex: Int? = null,
|
||||
val iproute2RuleIndex: Int? = null,
|
||||
val endpointIndependentNat: Boolean? = null,
|
||||
val routeAddressSet: List<String>? = null,
|
||||
val routeExcludeAddressSet: List<String>? = null,
|
||||
val routeAddress: List<String>? = null,
|
||||
val inet4RouteAddress: List<String>? = null,
|
||||
val inet6RouteAddress: List<String>? = null,
|
||||
val endpointIndependentNat: Boolean? = null,
|
||||
val routeExcludeAddress: List<String>? = null,
|
||||
val includeInterface: List<String>? = null,
|
||||
val excludeInterface: List<String>? = null,
|
||||
val includeUid: List<Int>? = null,
|
||||
@@ -110,20 +161,26 @@ data class Tun(
|
||||
val excludeUidRange: List<Pair<Int, Int>>? = null,
|
||||
val includeAndroidUser: List<Int>? = null,
|
||||
val includePackage: List<String>? = null,
|
||||
val excludePackage: List<String>? = null
|
||||
val excludePackage: List<String>? = null,
|
||||
@Deprecated("") val inet4RouteAddress: List<String>? = null,
|
||||
@Deprecated("") val inet6RouteAddress: List<String>? = null,
|
||||
@Deprecated("") val inet4RouteExcludeAddress: List<String>? = null,
|
||||
@Deprecated("") val inet6RouteExcludeAddress: List<String>? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class Sniffer(
|
||||
val enable: Boolean? = null,
|
||||
val forceDnsMapping: Boolean? = null,
|
||||
val parsePureIp: Boolean? = null,
|
||||
val overrideDestination: Boolean? = null,
|
||||
val sniff: Sniff? = null,
|
||||
val forceDomain: List<String>? = null,
|
||||
val skipDomain: List<String>? = null,
|
||||
val skipSrcAddress: List<String>? = null,
|
||||
val skipDstAddress: List<String>? = null,
|
||||
val skipDomain: List<String>? = null,
|
||||
val sniffing: List<String>? = null,
|
||||
val portWhitelist: List<String>? = null
|
||||
@Deprecated("") val sniffing: List<String>? = null,
|
||||
@Deprecated("") val portWhitelist: List<String>? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
@@ -204,173 +261,173 @@ data class FallbackFilter(
|
||||
|
||||
@Serializable
|
||||
sealed class Proxy {
|
||||
// @Serializable
|
||||
// data class Socks5Proxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val username: String? = null,
|
||||
// val password: String? = null,
|
||||
// val tls: Boolean? = null,
|
||||
// val fingerprint: String? = null,
|
||||
// val skipCertVerify: Boolean? = null,
|
||||
// val udp: Boolean? = null,
|
||||
// val ipVersion: String? = null
|
||||
// ) : Proxy()
|
||||
//
|
||||
// @Serializable
|
||||
// data class HttpProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val username: String? = null,
|
||||
// val password: String? = null,
|
||||
// val tls: Boolean? = null,
|
||||
// val skipCertVerify: Boolean? = null,
|
||||
// val sni: String? = null,
|
||||
// val fingerprint: String? = null,
|
||||
// val ipVersion: String? = null
|
||||
// ) : Proxy()
|
||||
//
|
||||
// @Serializable
|
||||
// data class SnellProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val psk: String? = null,
|
||||
// val version: Int? = null,
|
||||
// val obfsOpts: ObfsOpts? = null
|
||||
// ) : Proxy() {
|
||||
// @Serializable
|
||||
// data class ObfsOpts(
|
||||
// val mode: String? = null,
|
||||
// val host: String? = null
|
||||
// )
|
||||
// }
|
||||
//
|
||||
// @Serializable
|
||||
// data class ShadowsocksProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val cipher: String? = null,
|
||||
// val password: String? = null,
|
||||
// val udp: Boolean? = null,
|
||||
// val ipVersion: String? = null,
|
||||
// val plugin: String? = null,
|
||||
// val pluginOpts: PluginOpts? = null
|
||||
// ) : Proxy() {
|
||||
// @Serializable
|
||||
// data class PluginOpts(
|
||||
// val mode: String? = null,
|
||||
// val host: String? = null,
|
||||
// val tls: Boolean? = null,
|
||||
// val skipCertVerify: Boolean? = null,
|
||||
// val fingerprint: String? = null,
|
||||
// val path: String? = null,
|
||||
// val headers: Map<String, String>? = null,
|
||||
// val clientFingerprint: String? = null,
|
||||
// val version: Int? = null,
|
||||
// val password: String? = null,
|
||||
// val restlsScript: String? = null
|
||||
// )
|
||||
// }
|
||||
//
|
||||
// @Serializable
|
||||
// data class VmessProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val uuid: String? = null,
|
||||
// val alterId: Int? = null,
|
||||
// val cipher: String? = null,
|
||||
// val udp: Boolean? = null,
|
||||
// val tls: Boolean? = null,
|
||||
// val fingerprint: String? = null,
|
||||
// val skipCertVerify: Boolean? = null,
|
||||
// val servername: String? = null,
|
||||
// val network: String? = null,
|
||||
// val wsOpts: WsOpts? = null,
|
||||
// val h2Opts: H2Opts? = null,
|
||||
// val grpcOpts: GrpcOpts? = null
|
||||
// ) : Proxy() {
|
||||
// @Serializable
|
||||
// data class WsOpts(
|
||||
// val path: String? = null,
|
||||
// val headers: Map<String, String>? = null
|
||||
// )
|
||||
//
|
||||
// @Serializable
|
||||
// data class H2Opts(
|
||||
// val host: List<String>? = null,
|
||||
// val path: String? = null
|
||||
// )
|
||||
//
|
||||
// @Serializable
|
||||
// data class GrpcOpts(
|
||||
// val grpcServiceName: String? = null
|
||||
// )
|
||||
// }
|
||||
//
|
||||
// @Serializable
|
||||
// data class VlessProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val uuid: String? = null,
|
||||
// val network: String? = null,
|
||||
// val tls: Boolean? = null,
|
||||
// val udp: Boolean? = null,
|
||||
// val flow: String? = null,
|
||||
// val clientFingerprint: String? = null,
|
||||
// val servername: String? = null,
|
||||
// val realityOpts: RealityOpts? = null,
|
||||
// val grpcOpts: GrpcOpts? = null,
|
||||
// val wsOpts: WsOpts? = null
|
||||
// ) : Proxy() {
|
||||
// @Serializable
|
||||
// data class RealityOpts(
|
||||
// val publicKey: String? = null,
|
||||
// val shortId: String? = null
|
||||
// )
|
||||
//
|
||||
// @Serializable
|
||||
// data class GrpcOpts(
|
||||
// val grpcServiceName: String? = null
|
||||
// )
|
||||
//
|
||||
// @Serializable
|
||||
// data class WsOpts(
|
||||
// val path: String? = null,
|
||||
// val headers: Map<String, String>? = null
|
||||
// )
|
||||
// }
|
||||
//
|
||||
// @Serializable
|
||||
// data class TrojanProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val password: String? = null,
|
||||
// val clientFingerprint: String? = null,
|
||||
// val udp: Boolean? = null,
|
||||
// val sni: String? = null,
|
||||
// val skipCertVerify: Boolean? = null,
|
||||
// val flow: String? = null,
|
||||
// val grpcOpts: GrpcOpts? = null,
|
||||
// val wsOpts: WsOpts? = null
|
||||
// ) : Proxy() {
|
||||
// @Serializable
|
||||
// data class GrpcOpts(
|
||||
// val grpcServiceName: String? = null
|
||||
// )
|
||||
//
|
||||
// @Serializable
|
||||
// data class WsOpts(
|
||||
// val path: String? = null,
|
||||
// val headers: Map<String, String>? = null
|
||||
// )
|
||||
// }
|
||||
@Serializable
|
||||
data class Socks5Proxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val username: String? = null,
|
||||
val password: String? = null,
|
||||
val tls: Boolean? = null,
|
||||
val fingerprint: String? = null,
|
||||
val skipCertVerify: Boolean? = null,
|
||||
val udp: Boolean? = null,
|
||||
val ipVersion: String? = null
|
||||
) : Proxy()
|
||||
|
||||
@Serializable
|
||||
data class HttpProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val username: String? = null,
|
||||
val password: String? = null,
|
||||
val tls: Boolean? = null,
|
||||
val skipCertVerify: Boolean? = null,
|
||||
val sni: String? = null,
|
||||
val fingerprint: String? = null,
|
||||
val ipVersion: String? = null
|
||||
) : Proxy()
|
||||
|
||||
@Serializable
|
||||
data class SnellProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val psk: String? = null,
|
||||
val version: Int? = null,
|
||||
val obfsOpts: ObfsOpts? = null
|
||||
) : Proxy() {
|
||||
@Serializable
|
||||
data class ObfsOpts(
|
||||
val mode: String? = null,
|
||||
val host: String? = null
|
||||
)
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class ShadowsocksProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val cipher: String? = null,
|
||||
val password: String? = null,
|
||||
val udp: Boolean? = null,
|
||||
val ipVersion: String? = null,
|
||||
val plugin: String? = null,
|
||||
val pluginOpts: PluginOpts? = null
|
||||
) : Proxy() {
|
||||
@Serializable
|
||||
data class PluginOpts(
|
||||
val mode: String? = null,
|
||||
val host: String? = null,
|
||||
val tls: Boolean? = null,
|
||||
val skipCertVerify: Boolean? = null,
|
||||
val fingerprint: String? = null,
|
||||
val path: String? = null,
|
||||
val headers: Map<String, String>? = null,
|
||||
val clientFingerprint: String? = null,
|
||||
val version: Int? = null,
|
||||
val password: String? = null,
|
||||
val restlsScript: String? = null
|
||||
)
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class VmessProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val uuid: String? = null,
|
||||
val alterId: Int? = null,
|
||||
val cipher: String? = null,
|
||||
val udp: Boolean? = null,
|
||||
val tls: Boolean? = null,
|
||||
val fingerprint: String? = null,
|
||||
val skipCertVerify: Boolean? = null,
|
||||
val servername: String? = null,
|
||||
val network: String? = null,
|
||||
val wsOpts: WsOpts? = null,
|
||||
val h2Opts: H2Opts? = null,
|
||||
val grpcOpts: GrpcOpts? = null
|
||||
) : Proxy() {
|
||||
@Serializable
|
||||
data class WsOpts(
|
||||
val path: String? = null,
|
||||
val headers: Map<String, String>? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class H2Opts(
|
||||
val host: List<String>? = null,
|
||||
val path: String? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class GrpcOpts(
|
||||
val grpcServiceName: String? = null
|
||||
)
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class VlessProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val uuid: String? = null,
|
||||
val network: String? = null,
|
||||
val tls: Boolean? = null,
|
||||
val udp: Boolean? = null,
|
||||
val flow: String? = null,
|
||||
val clientFingerprint: String? = null,
|
||||
val servername: String? = null,
|
||||
val realityOpts: RealityOpts? = null,
|
||||
val grpcOpts: GrpcOpts? = null,
|
||||
val wsOpts: WsOpts? = null
|
||||
) : Proxy() {
|
||||
@Serializable
|
||||
data class RealityOpts(
|
||||
val publicKey: String? = null,
|
||||
val shortId: String? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class GrpcOpts(
|
||||
val grpcServiceName: String? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WsOpts(
|
||||
val path: String? = null,
|
||||
val headers: Map<String, String>? = null
|
||||
)
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class TrojanProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val password: String? = null,
|
||||
val clientFingerprint: String? = null,
|
||||
val udp: Boolean? = null,
|
||||
val sni: String? = null,
|
||||
val skipCertVerify: Boolean? = null,
|
||||
val flow: String? = null,
|
||||
val grpcOpts: GrpcOpts? = null,
|
||||
val wsOpts: WsOpts? = null
|
||||
) : Proxy() {
|
||||
@Serializable
|
||||
data class GrpcOpts(
|
||||
val grpcServiceName: String? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WsOpts(
|
||||
val path: String? = null,
|
||||
val headers: Map<String, String>? = null
|
||||
)
|
||||
}
|
||||
|
||||
@Serializable
|
||||
@SerialName("hysteria2")
|
||||
@@ -388,80 +445,80 @@ sealed class Proxy {
|
||||
val fingerprint: String? = null
|
||||
) : Proxy()
|
||||
|
||||
// @Serializable
|
||||
// data class WireguardProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val ip: String? = null,
|
||||
// val ipv6: String? = null,
|
||||
// val publicKey: String? = null,
|
||||
// val privateKey: String? = null,
|
||||
// val udp: Boolean? = null,
|
||||
// val reserved: String? = null,
|
||||
// val peers: List<Peer>? = null
|
||||
// ) : Proxy() {
|
||||
// @Serializable
|
||||
// data class Peer(
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val publicKey: String? = null,
|
||||
// val allowedIps: List<String>? = null,
|
||||
// val reserved: String? = null
|
||||
// )
|
||||
// }
|
||||
//
|
||||
// @Serializable
|
||||
// data class TuicProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val token: String? = null,
|
||||
// val uuid: String? = null,
|
||||
// val password: String? = null,
|
||||
// val udpRelayMode: String? = null,
|
||||
// val congestionController: String? = null,
|
||||
// val skipCertVerify: Boolean? = null,
|
||||
// val sni: String? = null
|
||||
// ) : Proxy()
|
||||
//
|
||||
// @Serializable
|
||||
// data class ShadowsocksRProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val cipher: String? = null,
|
||||
// val password: String? = null,
|
||||
// val obfs: String? = null,
|
||||
// val protocol: String? = null,
|
||||
// val udp: Boolean? = null
|
||||
// ) : Proxy()
|
||||
//
|
||||
// @Serializable
|
||||
// data class SSHProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val username: String? = null,
|
||||
// val password: String? = null,
|
||||
// val privateKey: String? = null
|
||||
// ) : Proxy()
|
||||
//
|
||||
// @Serializable
|
||||
// data class MieruProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val transport: String? = null,
|
||||
// val username: String? = null,
|
||||
// val password: String? = null,
|
||||
// val multiplexing: String? = null
|
||||
// ) : Proxy()
|
||||
//
|
||||
// @Serializable
|
||||
// data class DNSProxy(
|
||||
// val name: String? = null
|
||||
// ) : Proxy()
|
||||
@Serializable
|
||||
data class WireguardProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val ip: String? = null,
|
||||
val ipv6: String? = null,
|
||||
val publicKey: String? = null,
|
||||
val privateKey: String? = null,
|
||||
val udp: Boolean? = null,
|
||||
val reserved: String? = null,
|
||||
val peers: List<Peer>? = null
|
||||
) : Proxy() {
|
||||
@Serializable
|
||||
data class Peer(
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val publicKey: String? = null,
|
||||
val allowedIps: List<String>? = null,
|
||||
val reserved: String? = null
|
||||
)
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class TuicProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val token: String? = null,
|
||||
val uuid: String? = null,
|
||||
val password: String? = null,
|
||||
val udpRelayMode: String? = null,
|
||||
val congestionController: String? = null,
|
||||
val skipCertVerify: Boolean? = null,
|
||||
val sni: String? = null
|
||||
) : Proxy()
|
||||
|
||||
@Serializable
|
||||
data class ShadowsocksRProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val cipher: String? = null,
|
||||
val password: String? = null,
|
||||
val obfs: String? = null,
|
||||
val protocol: String? = null,
|
||||
val udp: Boolean? = null
|
||||
) : Proxy()
|
||||
|
||||
@Serializable
|
||||
data class SSHProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val username: String? = null,
|
||||
val password: String? = null,
|
||||
val privateKey: String? = null
|
||||
) : Proxy()
|
||||
|
||||
@Serializable
|
||||
data class MieruProxy(
|
||||
val name: String? = null,
|
||||
val server: String? = null,
|
||||
val port: Int? = null,
|
||||
val transport: String? = null,
|
||||
val username: String? = null,
|
||||
val password: String? = null,
|
||||
val multiplexing: String? = null
|
||||
) : Proxy()
|
||||
|
||||
@Serializable
|
||||
data class DNSProxy(
|
||||
val name: String? = null
|
||||
) : Proxy()
|
||||
}
|
||||
|
||||
@Serializable
|
||||
@@ -648,6 +705,20 @@ data class Payload(
|
||||
@Serializable
|
||||
sealed class Listener {
|
||||
@Serializable
|
||||
@SerialName("http")
|
||||
data class HttpListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val users: List<User>? = null,
|
||||
val certificate: String? = null,
|
||||
val privateKey: String? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("socks")
|
||||
data class SocksListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
@@ -655,20 +726,13 @@ sealed class Listener {
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val udp: Boolean? = null,
|
||||
val users: List<User>? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
data class HttpListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val users: List<User>? = null
|
||||
val users: List<User>? = null,
|
||||
val certificate: String? = null,
|
||||
val privateKey: String? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("mixed")
|
||||
data class MixedListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
@@ -676,10 +740,13 @@ sealed class Listener {
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val udp: Boolean? = null,
|
||||
val users: List<User>? = null
|
||||
val users: List<User>? = null,
|
||||
val certificate: String? = null,
|
||||
val privateKey: String? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("redir")
|
||||
data class RedirListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
@@ -689,84 +756,18 @@ sealed class Listener {
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("tproxy")
|
||||
data class TProxyListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val udp: Boolean? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
data class ShadowsocksListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val password: String? = null,
|
||||
val cipher: String? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
data class VmessListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val users: List<VmessUser>? = null,
|
||||
val wsPath: String? = null,
|
||||
val certificate: String? = null,
|
||||
val privateKey: String? = null,
|
||||
val realityConfig: RealityConfig? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
data class TuicListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val token: List<String>? = null,
|
||||
val users: Map<String, String>? = null,
|
||||
val certificate: String? = null,
|
||||
val privateKey: String? = null,
|
||||
val congestionController: String? = null,
|
||||
val maxIdleTime: Int? = null,
|
||||
val authenticationTimeout: Int? = null,
|
||||
val alpn: List<String>? = null,
|
||||
val maxUdpRelayPacketSize: Int? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
data class TunnelListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val network: List<String>? = null,
|
||||
val target: String? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
data class VlessListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val users: List<VlessUser>? = null,
|
||||
val wsPath: String? = null,
|
||||
val certificate: String? = null,
|
||||
val privateKey: String? = null,
|
||||
val realityConfig: RealityConfig? = null
|
||||
val udp: Boolean? = null,
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("tun")
|
||||
data class TunListener(
|
||||
val name: String? = null,
|
||||
val stack: String? = null,
|
||||
@@ -790,6 +791,101 @@ sealed class Listener {
|
||||
val includePackage: List<String>? = null,
|
||||
val excludePackage: List<String>? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("shadowsocks")
|
||||
data class ShadowsocksListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val password: String? = null,
|
||||
val cipher: String? = null,
|
||||
val udp: Boolean? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("vmess")
|
||||
data class VmessListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val users: List<VmessUser>? = null,
|
||||
val privateKey: String? = null,
|
||||
val certificate: String? = null,
|
||||
// Follows are from mihomo config yaml
|
||||
val wsPath: String? = null,
|
||||
val realityConfig: RealityConfig? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("tuic")
|
||||
data class TuicListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val token: List<String>? = null,
|
||||
val users: Map<String, String>? = null,
|
||||
val certificate: String? = null,
|
||||
val privateKey: String? = null,
|
||||
val congestionController: String? = null,
|
||||
val maxIdleTime: Int? = null,
|
||||
val authenticationTimeout: Int? = null,
|
||||
val alpn: List<String>? = null,
|
||||
val maxUdpRelayPacketSize: Int? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("hysteria2")
|
||||
data class Hysteria2Listener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val users: Map<String, String>? = null,
|
||||
val up: Int? = null,
|
||||
val down: Int? = null,
|
||||
val ignoreClientBandwidth: Boolean? = null,
|
||||
val obfs: String? = null,
|
||||
val obfsPassword: String? = null,
|
||||
val masquerade: String? = null,
|
||||
val alpn: List<String>? = null,
|
||||
val certificate: String? = null,
|
||||
val privateKey: String? = null,
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("tunnel")
|
||||
data class TunnelListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val network: List<String>? = null,
|
||||
val target: String? = null
|
||||
) : Listener()
|
||||
|
||||
@Serializable
|
||||
@SerialName("vless")
|
||||
data class VlessListener(
|
||||
val name: String? = null,
|
||||
val port: Int? = null,
|
||||
val listen: String? = null,
|
||||
val rule: String? = null,
|
||||
val proxy: String? = null,
|
||||
val users: List<VlessUser>? = null,
|
||||
val wsPath: String? = null,
|
||||
val certificate: String? = null,
|
||||
val privateKey: String? = null,
|
||||
val realityConfig: RealityConfig? = null
|
||||
) : Listener()
|
||||
}
|
||||
|
||||
@Serializable
|
||||
|
||||
Reference in New Issue
Block a user