Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/src/main/java/shop/whitedns/client/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ class MainActivity : ComponentActivity() {
ConnectionStatus.CONNECTED -> viewModel.disconnect()
}
},
onTestProfileClick = viewModel::testCurrentProfileReadiness,
onScanFileSelected = viewModel::beginScanFromFile,
onScanDefaultListSelected = viewModel::beginScanFromDefaultResolvers,
onScanStartClick = viewModel::startPreparedScan,
Expand Down
143 changes: 142 additions & 1 deletion app/src/main/java/shop/whitedns/client/model/WhiteDnsAutoTune.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,57 @@ package shop.whitedns.client.model
data class WhiteDnsAutoTunePreset(
val id: String,
val label: String,
val listenIp: String? = null,
val listenPort: String? = null,
val httpProxyEnabled: Boolean? = null,
val httpProxyPort: String? = null,
val socks5Authentication: Boolean? = null,
val socksUsername: String? = null,
val socksPassword: String? = null,
val localDnsEnabled: Boolean? = null,
val localDnsPort: String? = null,
val balancingStrategy: Int? = null,
val minUploadMtu: String,
val maxUploadMtu: String,
val minDownloadMtu: String,
val maxDownloadMtu: String,
val resolverTimeoutSeconds: String,
val resolverRetries: String? = null,
val resolverParallelism: String? = null,
val logRetries: String? = null,
val logTimeoutSeconds: String? = null,
val logParallelism: String? = null,
val dnsResponseFragmentStoreCapacity: String,
val uploadDuplication: String,
val downloadDuplication: String,
val uploadCompression: Int,
val downloadCompression: Int,
val baseEncodeData: Boolean? = null,
val rxTxWorkers: String? = null,
val tunnelProcessWorkers: String? = null,
val tunnelPacketTimeoutSeconds: String? = null,
val dispatcherIdlePollIntervalSeconds: String? = null,
val txChannelSize: String? = null,
val rxChannelSize: String? = null,
val resolverUdpConnectionPoolSize: String? = null,
val streamQueueInitialCapacity: String? = null,
val orphanQueueInitialCapacity: String? = null,
val maxActiveStreams: String? = null,
val localHandshakeTimeoutSeconds: String? = null,
val socksUdpAssociateReadTimeoutSeconds: String? = null,
val clientTerminalStreamRetentionSeconds: String? = null,
val clientCancelledSetupRetentionSeconds: String? = null,
val sessionInitRetryBaseSeconds: String? = null,
val sessionInitRetryStepSeconds: String? = null,
val sessionInitRetryLinearAfter: String? = null,
val sessionInitRetryMaxSeconds: String? = null,
val sessionInitBusyRetryIntervalSeconds: String? = null,
val startupMode: String? = null,
val pingWatchdogSeconds: String? = null,
val trafficWarmupEnabled: Boolean? = null,
val trafficWarmupProbeCount: String? = null,
val trafficKeepaliveIntervalSeconds: String? = null,
val logLevel: String? = null,
)

object WhiteDnsAutoTunePresets {
Expand Down Expand Up @@ -115,6 +156,61 @@ object WhiteDnsAutoTunePresets {
uploadCompression = 2,
downloadCompression = 2,
),
WhiteDnsAutoTunePreset(
id = "field-milad-telegram",
label = "Milad Telegram Proxy",
listenIp = "127.0.0.1",
listenPort = "10886",
httpProxyEnabled = true,
httpProxyPort = "10887",
socks5Authentication = false,
socksUsername = "master_dns_vpn",
socksPassword = "master_dns_vpn",
localDnsEnabled = false,
localDnsPort = "53",
balancingStrategy = 3,
minUploadMtu = "5",
maxUploadMtu = "30",
minDownloadMtu = "300",
maxDownloadMtu = "300",
resolverTimeoutSeconds = "3.0",
resolverRetries = "3",
resolverParallelism = "100",
logRetries = "5",
logTimeoutSeconds = "2.0",
logParallelism = "32",
dnsResponseFragmentStoreCapacity = "64",
uploadDuplication = "3",
downloadDuplication = "4",
uploadCompression = 2,
downloadCompression = 2,
baseEncodeData = false,
rxTxWorkers = "4",
tunnelProcessWorkers = "4",
tunnelPacketTimeoutSeconds = "10.0",
dispatcherIdlePollIntervalSeconds = "0.02",
txChannelSize = "2048",
rxChannelSize = "2048",
resolverUdpConnectionPoolSize = "64",
streamQueueInitialCapacity = "128",
orphanQueueInitialCapacity = "32",
maxActiveStreams = "2048",
localHandshakeTimeoutSeconds = "5.0",
socksUdpAssociateReadTimeoutSeconds = "30.0",
clientTerminalStreamRetentionSeconds = "45.0",
clientCancelledSetupRetentionSeconds = "120.0",
sessionInitRetryBaseSeconds = "1.0",
sessionInitRetryStepSeconds = "1.0",
sessionInitRetryLinearAfter = "5",
sessionInitRetryMaxSeconds = "60.0",
sessionInitBusyRetryIntervalSeconds = "60.0",
startupMode = "resolvers",
pingWatchdogSeconds = "30",
trafficWarmupEnabled = true,
trafficWarmupProbeCount = "4",
trafficKeepaliveIntervalSeconds = "5",
logLevel = "WARN",
),
)
}

Expand Down Expand Up @@ -182,17 +278,62 @@ object WhiteDnsParallelTest {

fun WhiteDnsSettings.applyAutoTunePreset(preset: WhiteDnsAutoTunePreset): WhiteDnsSettings {
return copy(
listenIp = preset.listenIp ?: listenIp,
listenPort = preset.listenPort ?: listenPort,
httpProxyEnabled = preset.httpProxyEnabled ?: httpProxyEnabled,
httpProxyPort = preset.httpProxyPort ?: httpProxyPort,
socks5Authentication = preset.socks5Authentication ?: socks5Authentication,
socksUsername = preset.socksUsername ?: socksUsername,
socksPassword = preset.socksPassword ?: socksPassword,
localDnsEnabled = preset.localDnsEnabled ?: localDnsEnabled,
localDnsPort = preset.localDnsPort ?: localDnsPort,
balancingStrategy = preset.balancingStrategy ?: balancingStrategy,
minUploadMtu = preset.minUploadMtu,
maxUploadMtu = preset.maxUploadMtu,
minDownloadMtu = preset.minDownloadMtu,
maxDownloadMtu = preset.maxDownloadMtu,
mtuTestTimeoutResolvers = preset.resolverTimeoutSeconds,
mtuTestTimeoutLogs = preset.resolverTimeoutSeconds,
mtuTestRetriesResolvers = preset.resolverRetries ?: mtuTestRetriesResolvers,
mtuTestParallelismResolvers = preset.resolverParallelism ?: mtuTestParallelismResolvers,
mtuTestRetriesLogs = preset.logRetries ?: mtuTestRetriesLogs,
mtuTestTimeoutLogs = preset.logTimeoutSeconds ?: preset.resolverTimeoutSeconds,
mtuTestParallelismLogs = preset.logParallelism ?: mtuTestParallelismLogs,
dnsResponseFragmentStoreCapacity = preset.dnsResponseFragmentStoreCapacity,
uploadDuplication = preset.uploadDuplication,
downloadDuplication = preset.downloadDuplication,
uploadCompression = preset.uploadCompression,
downloadCompression = preset.downloadCompression,
baseEncodeData = preset.baseEncodeData ?: baseEncodeData,
rxTxWorkers = preset.rxTxWorkers ?: rxTxWorkers,
tunnelProcessWorkers = preset.tunnelProcessWorkers ?: tunnelProcessWorkers,
tunnelPacketTimeoutSeconds = preset.tunnelPacketTimeoutSeconds ?: tunnelPacketTimeoutSeconds,
dispatcherIdlePollIntervalSeconds = preset.dispatcherIdlePollIntervalSeconds ?: dispatcherIdlePollIntervalSeconds,
txChannelSize = preset.txChannelSize ?: txChannelSize,
rxChannelSize = preset.rxChannelSize ?: rxChannelSize,
resolverUdpConnectionPoolSize = preset.resolverUdpConnectionPoolSize ?: resolverUdpConnectionPoolSize,
streamQueueInitialCapacity = preset.streamQueueInitialCapacity ?: streamQueueInitialCapacity,
orphanQueueInitialCapacity = preset.orphanQueueInitialCapacity ?: orphanQueueInitialCapacity,
maxActiveStreams = preset.maxActiveStreams ?: maxActiveStreams,
localHandshakeTimeoutSeconds = preset.localHandshakeTimeoutSeconds ?: localHandshakeTimeoutSeconds,
socksUdpAssociateReadTimeoutSeconds = preset.socksUdpAssociateReadTimeoutSeconds
?: socksUdpAssociateReadTimeoutSeconds,
clientTerminalStreamRetentionSeconds = preset.clientTerminalStreamRetentionSeconds
?: clientTerminalStreamRetentionSeconds,
clientCancelledSetupRetentionSeconds = preset.clientCancelledSetupRetentionSeconds
?: clientCancelledSetupRetentionSeconds,
sessionInitRetryBaseSeconds = preset.sessionInitRetryBaseSeconds ?: sessionInitRetryBaseSeconds,
sessionInitRetryStepSeconds = preset.sessionInitRetryStepSeconds ?: sessionInitRetryStepSeconds,
sessionInitRetryLinearAfter = preset.sessionInitRetryLinearAfter ?: sessionInitRetryLinearAfter,
sessionInitRetryMaxSeconds = preset.sessionInitRetryMaxSeconds ?: sessionInitRetryMaxSeconds,
sessionInitBusyRetryIntervalSeconds = preset.sessionInitBusyRetryIntervalSeconds
?: sessionInitBusyRetryIntervalSeconds,
startupMode = preset.startupMode ?: startupMode,
pingWatchdogSeconds = preset.pingWatchdogSeconds ?: pingWatchdogSeconds,
trafficWarmupEnabled = preset.trafficWarmupEnabled ?: trafficWarmupEnabled,
trafficWarmupProbeCount = preset.trafficWarmupProbeCount ?: trafficWarmupProbeCount,
trafficKeepaliveIntervalSeconds = preset.trafficKeepaliveIntervalSeconds
?: trafficKeepaliveIntervalSeconds,
logLevel = preset.logLevel ?: logLevel,
).syncSelectedConnectionProfileFields()
}

Expand Down
Loading
Loading