Temp
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import com.charleskorn.kaml.YamlNode
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -89,12 +90,13 @@ data class Clash(
|
||||
val tun: Tun? = null,
|
||||
val listeners: List<Listener>? = null,
|
||||
|
||||
// Outbound
|
||||
val proxies: List<Proxy>? = null,
|
||||
val proxyProviders: Map<String, ProxyProvider>? = 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,
|
||||
@@ -246,268 +248,6 @@ data class FallbackFilter(
|
||||
val domain: List<String>? = null
|
||||
)
|
||||
|
||||
//@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
|
||||
// @SerialName("hysteria2")
|
||||
// data class HysteriaProxy(
|
||||
// val name: String? = null,
|
||||
// val server: String? = null,
|
||||
// val port: Int? = null,
|
||||
// val authStr: String? = null,
|
||||
// val obfs: String? = null,
|
||||
// val protocol: String? = null,
|
||||
// val up: String? = null,
|
||||
// val down: String? = null,
|
||||
// val sni: String? = null,
|
||||
// val skipCertVerify: Boolean? = null,
|
||||
// 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
|
||||
sealed class Proxy {
|
||||
abstract val tfo: Boolean?
|
||||
@@ -677,8 +417,8 @@ sealed class Proxy {
|
||||
val cipher: String? = null,
|
||||
val udp: Boolean? = null,
|
||||
val plugin: String? = null,
|
||||
// TODO:
|
||||
// val pluginOpts: Map<String, @Contextual Any>? = null,
|
||||
// NOTE: 暂时先不对该字段进行解析
|
||||
val pluginOpts: Map<String, YamlNode>? = null,
|
||||
val udpOverTCP: Boolean? = null,
|
||||
val udpOverTCPVersion: Int? = null,
|
||||
val clientFingerprint: String? = null,
|
||||
@@ -724,8 +464,7 @@ sealed class Proxy {
|
||||
val psk: String? = null,
|
||||
val udp: Boolean? = null,
|
||||
val version: Int? = null,
|
||||
// TODO:
|
||||
// val obfsOpts: Map<String, @Contextual Any>? = null,
|
||||
val obfsOpts: Map<String, SimpleObfsOption>? = null,
|
||||
|
||||
override val tfo: Boolean? = null,
|
||||
override val mptcp: Boolean? = null,
|
||||
@@ -1032,6 +771,12 @@ sealed class Proxy {
|
||||
val up: String? = null,
|
||||
val down: String? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class SimpleObfsOption(
|
||||
val mode: String? = null,
|
||||
val host: String? = null
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1118,31 +863,177 @@ sealed class ProxyGroup {
|
||||
) : ProxyGroup()
|
||||
}
|
||||
|
||||
//@Serializable
|
||||
//sealed class ProxyProvider {
|
||||
// @Serializable
|
||||
// data class HttpProxyProvider(
|
||||
// val type: String? = null,
|
||||
// val url: String? = null,
|
||||
// val interval: Int? = null,
|
||||
// val path: String? = null,
|
||||
// val proxy: String? = null,
|
||||
// val header: Header? = null,
|
||||
// val healthCheck: HealthCheck? = null,
|
||||
// val override: Override? = null
|
||||
// ) : ProxyProvider()
|
||||
//
|
||||
// @Serializable
|
||||
// data class InlineProxyProvider(
|
||||
// val type: String? = null, val dialerProxy: String? = null, val payload: List<Payload>? = null
|
||||
// ) : ProxyProvider()
|
||||
//
|
||||
// @Serializable
|
||||
// data class FileProxyProvider(
|
||||
// val type: String? = null, val path: String? = null, val healthCheck: HealthCheck? = null
|
||||
// ) : ProxyProvider()
|
||||
//}
|
||||
|
||||
|
||||
//data class ProxyProvider(
|
||||
// val type: String? = null,
|
||||
// val path: String? = null,
|
||||
// val url: String? = null,
|
||||
// val proxy: String? = null,
|
||||
// val interval: Int? = null,
|
||||
// val filter: String? = null,
|
||||
// val excludeFilter: String? = null,
|
||||
// val excludeType: String? = null,
|
||||
// val dialerProxy: String? = null,
|
||||
// val sizeLimit: Long? = null,
|
||||
// val payload: List<Map<String, Any>>? = null,
|
||||
// val healthCheck: HealthCheck? = null,
|
||||
// val override: Override? = null,
|
||||
// val header: Map<String, List<String>>? = null
|
||||
//) {
|
||||
// data class HealthCheck(
|
||||
// val enable: Boolean? = null,
|
||||
// val url: String? = null,
|
||||
// val interval: Int? = null,
|
||||
// val testTimeout: Int? = null,
|
||||
// val lazy: Boolean? = null,
|
||||
// val expectedStatus: String? = null
|
||||
// )
|
||||
//
|
||||
// data class Override(
|
||||
// val tfo: Boolean? = null,
|
||||
// val mptcp: Boolean? = null,
|
||||
// val udp: Boolean? = null,
|
||||
// val udpOverTcp: Boolean? = null,
|
||||
// val up: String? = null,
|
||||
// val down: String? = null,
|
||||
// val dialerProxy: String? = null,
|
||||
// val skipCertVerify: Boolean? = null,
|
||||
// val interfaceName: String? = null,
|
||||
// val routingMark: Int? = null,
|
||||
// val ipVersion: String? = null,
|
||||
// val additionalPrefix: String? = null,
|
||||
// val additionalSuffix: String? = null,
|
||||
// val proxyName: List<OverrideProxyNameSchema>? = null
|
||||
// )
|
||||
//
|
||||
// data class OverrideProxyNameSchema(
|
||||
// val pattern: String? = null,
|
||||
// val target: String? = null
|
||||
// )
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
@Serializable
|
||||
sealed class ProxyProvider {
|
||||
abstract val name: String?
|
||||
abstract val interval: Int?
|
||||
abstract val filter: String?
|
||||
abstract val excludeFilter: String?
|
||||
abstract val excludeType: String?
|
||||
abstract val dialerProxy: String?
|
||||
abstract val healthCheck: HealthCheck?
|
||||
abstract val override: Override?
|
||||
|
||||
@Serializable
|
||||
data class HttpProxyProvider(
|
||||
val type: String? = null,
|
||||
val url: String? = null,
|
||||
val interval: Int? = null,
|
||||
@SerialName("file")
|
||||
data class FileProvider(
|
||||
override val name: String? = null,
|
||||
override val interval: Int?,
|
||||
override val filter: String?,
|
||||
override val excludeFilter: String?,
|
||||
override val excludeType: String?,
|
||||
override val dialerProxy: String?,
|
||||
override val healthCheck: HealthCheck?,
|
||||
override val override: Override?,
|
||||
val path: String?,
|
||||
) : ProxyProvider()
|
||||
|
||||
@Serializable
|
||||
@SerialName("http")
|
||||
data class HttpProvider(
|
||||
override val name: String? = null,
|
||||
override val interval: Int?,
|
||||
override val filter: String?,
|
||||
override val excludeFilter: String?,
|
||||
override val excludeType: String?,
|
||||
override val dialerProxy: String?,
|
||||
override val healthCheck: HealthCheck?,
|
||||
override val override: Override?,
|
||||
val url: String,
|
||||
val path: String? = null,
|
||||
val proxy: String? = null,
|
||||
val header: Header? = null,
|
||||
val healthCheck: HealthCheck? = null,
|
||||
val override: Override? = null
|
||||
val sizeLimit: Long? = null,
|
||||
val header: Map<String, List<String>>? = null,
|
||||
) : ProxyProvider()
|
||||
|
||||
@Serializable
|
||||
data class InlineProxyProvider(
|
||||
val type: String? = null, val dialerProxy: String? = null, val payload: List<Payload>? = null
|
||||
@SerialName("inline")
|
||||
data class InlineProvider(
|
||||
override val name: String? = null,
|
||||
override val interval: Int?,
|
||||
override val filter: String?,
|
||||
override val excludeFilter: String?,
|
||||
override val excludeType: String?,
|
||||
override val dialerProxy: String?,
|
||||
override val healthCheck: HealthCheck?,
|
||||
override val override: Override?,
|
||||
// TODO:
|
||||
val payload: List<Map<String, YamlNode>>?,
|
||||
) : ProxyProvider()
|
||||
|
||||
@Serializable
|
||||
data class FileProxyProvider(
|
||||
val type: String? = null, val path: String? = null, val healthCheck: HealthCheck? = null
|
||||
) : ProxyProvider()
|
||||
data class HealthCheck(
|
||||
val enable: Boolean,
|
||||
val url: String,
|
||||
val interval: Int,
|
||||
val timeout: Int? = null,
|
||||
val lazy: Boolean? = true,
|
||||
val expectedStatus: String? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class Override(
|
||||
val tfo: Boolean? = null,
|
||||
val mptcp: Boolean? = null,
|
||||
val udp: Boolean? = null,
|
||||
val udpOverTcp: Boolean? = null,
|
||||
val up: String? = null,
|
||||
val down: String? = null,
|
||||
val dialerProxy: String? = null,
|
||||
val skipCertVerify: Boolean? = null,
|
||||
val interfaceName: String? = null,
|
||||
val routingMark: Int? = null,
|
||||
val ipVersion: String? = null,
|
||||
val additionalPrefix: String? = null,
|
||||
val additionalSuffix: String? = null,
|
||||
val proxyName: List<OverrideProxyName>? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class OverrideProxyName(
|
||||
val pattern: String,
|
||||
val target: String,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Serializable
|
||||
sealed class RuleProvider {
|
||||
@Serializable
|
||||
|
||||
Reference in New Issue
Block a user