From 0681aa69c32201cd7660bf6958ff70163763d907 Mon Sep 17 00:00:00 2001 From: segfault-bilibili <80713224+segfault-bilibili@users.noreply.github.com> Date: Fri, 12 Aug 2022 14:20:02 +0800 Subject: [PATCH] build server instead --- core/build.gradle.kts | 3 +- .../com/github/shadowsocks/bg/Executable.kt | 4 +-- .../github/shadowsocks/bg/ProxyInstance.kt | 29 ++++------------ .../github/shadowsocks/database/Profile.kt | 33 ++----------------- .../shadowsocks/preference/DataStore.kt | 2 +- .../src/main/res/layout/navigation_header.xml | 2 +- mobile/src/main/res/raw/about.html | 2 +- mobile/src/main/res/values/arrays.xml | 4 --- mobile/src/main/res/xml/pref_global.xml | 2 +- tv/src/main/res/xml/pref_main.xml | 2 +- 10 files changed, 18 insertions(+), 65 deletions(-) diff --git a/core/build.gradle.kts b/core/build.gradle.kts index af9ab5248b..7962fb4b82 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -36,11 +36,12 @@ android { cargo { module = "src/main/rust/shadowsocks-rust" - libname = "sslocal" + libname = "ssserver" targets = listOf("arm", "arm64", "x86", "x86_64") profile = findProperty("CARGO_PROFILE")?.toString() ?: currentFlavor extraCargoBuildArguments = listOf("--bin", libname!!) featureSpec.noDefaultBut(arrayOf( + "server", "stream-cipher", "aead-cipher-extra", "logging", diff --git a/core/src/main/java/com/github/shadowsocks/bg/Executable.kt b/core/src/main/java/com/github/shadowsocks/bg/Executable.kt index cde47b060f..22b2f54f13 100644 --- a/core/src/main/java/com/github/shadowsocks/bg/Executable.kt +++ b/core/src/main/java/com/github/shadowsocks/bg/Executable.kt @@ -30,10 +30,10 @@ import java.io.IOException object Executable { const val REDSOCKS = "libredsocks.so" - const val SS_LOCAL = "libsslocal.so" + const val SS_SERVER = "libssserver.so" const val TUN2SOCKS = "libtun2socks.so" - private val EXECUTABLES = setOf(SS_LOCAL, REDSOCKS, TUN2SOCKS) + private val EXECUTABLES = setOf(SS_SERVER, REDSOCKS, TUN2SOCKS) fun killAll() { for (process in File("/proc").listFiles { _, name -> TextUtils.isDigitsOnly(name) } ?: return) { diff --git a/core/src/main/java/com/github/shadowsocks/bg/ProxyInstance.kt b/core/src/main/java/com/github/shadowsocks/bg/ProxyInstance.kt index f55579158e..200d7627e8 100644 --- a/core/src/main/java/com/github/shadowsocks/bg/ProxyInstance.kt +++ b/core/src/main/java/com/github/shadowsocks/bg/ProxyInstance.kt @@ -71,38 +71,21 @@ class ProxyInstance(val profile: Profile, private val route: String = profile.ro config.put("plugin", path).put("plugin_opts", opts.toString()) } config.put("dns", "system") - config.put("locals", JSONArray().apply { + config.put("servers", JSONArray().apply { // local SOCKS5 proxy put(JSONObject().apply { - put("local_address", DataStore.listenAddress) - put("local_port", DataStore.portProxy) - put("local_udp_address", DataStore.listenAddress) - put("local_udp_port", DataStore.portProxy) + put("address", profile.host) + put("port", profile.remotePort) put("mode", mode) + put("method", profile.method) + put("password", profile.password); }) - - // local DNS proxy - if (dnsRelay) try { - URI("dns://${profile.remoteDns}") - } catch (e: URISyntaxException) { - throw BaseService.ExpectedExceptionWrapper(e) - }.let { dns -> - put(JSONObject().apply { - put("local_address", DataStore.listenAddress) - put("local_port", DataStore.portLocalDns) - put("local_dns_address", "local_dns_path") - put("remote_dns_address", dns.host ?: "0.0.0.0") - put("remote_dns_port", if (dns.port < 0) 53 else dns.port) - put("protocol", "dns") - }) - } }) configFile.writeText(config.toString()) // build the command line val cmd = arrayListOf( - File((service as Context).applicationInfo.nativeLibraryDir, Executable.SS_LOCAL).absolutePath, - "--stat-path", stat.absolutePath, + File((service as Context).applicationInfo.nativeLibraryDir, Executable.SS_SERVER).absolutePath, "-c", configFile.absolutePath, ) diff --git a/core/src/main/java/com/github/shadowsocks/database/Profile.kt b/core/src/main/java/com/github/shadowsocks/database/Profile.kt index bae60e1066..63abd57205 100644 --- a/core/src/main/java/com/github/shadowsocks/database/Profile.kt +++ b/core/src/main/java/com/github/shadowsocks/database/Profile.kt @@ -54,10 +54,10 @@ data class Profile( // user configurable fields var name: String? = "", - var host: String = "example.shadowsocks.org", + var host: String = "127.0.0.1", var remotePort: Int = 8388, - var password: String = "u1rRWTssNv0p", - var method: String = "aes-256-cfb", + var password: String = "magireco", + var method: String = "chacha20-ietf-poly1305", var route: String = "all", var remoteDns: String = "dns.google", @@ -309,33 +309,6 @@ data class Profile( override fun toString() = toUri().toString() fun toJson(profiles: LongSparseArray? = null): JSONObject = JSONObject().apply { - put("server", host) - put("server_port", remotePort) - put("password", password) - put("method", method) - if (profiles == null) return@apply - PluginConfiguration(plugin ?: "").getOptions().also { - if (it.id.isNotEmpty()) { - put("plugin", it.id) - put("plugin_opts", it.toString()) - } - } - put("remarks", name) - put("route", route) - put("remote_dns", remoteDns) - put("ipv6", ipv6) - put("metered", metered) - put("proxy_apps", JSONObject().apply { - put("enabled", proxyApps) - if (proxyApps) { - put("bypass", bypass) - // android_ prefix is used because package names are Android specific - put("android_list", JSONArray(individual.split("\n"))) - } - }) - put("udpdns", udpdns) - val fallback = profiles.get(udpFallback ?: return@apply) - if (fallback != null && fallback.plugin.isNullOrEmpty()) fallback.toJson().also { put("udp_fallback", it) } } fun serialize() { diff --git a/core/src/main/java/com/github/shadowsocks/preference/DataStore.kt b/core/src/main/java/com/github/shadowsocks/preference/DataStore.kt index a523681f74..9dcc2431e2 100644 --- a/core/src/main/java/com/github/shadowsocks/preference/DataStore.kt +++ b/core/src/main/java/com/github/shadowsocks/preference/DataStore.kt @@ -63,7 +63,7 @@ object DataStore : OnPreferenceDataStoreChangeListener { ?: BootReceiver.enabled.also { publicStore.putBoolean(Key.persistAcrossReboot, it) } val canToggleLocked: Boolean get() = publicStore.getBoolean(Key.directBootAware) == true val directBootAware: Boolean get() = Core.directBootSupported && canToggleLocked - val serviceMode get() = publicStore.getString(Key.serviceMode) ?: Key.modeVpn + val serviceMode get() = publicStore.getString(Key.serviceMode) ?: Key.modeProxy val listenAddress get() = if (publicStore.getBoolean(Key.shareOverLan, false)) "0.0.0.0" else "127.0.0.1" var portProxy: Int get() = getLocalPort(Key.portProxy, 1080) diff --git a/mobile/src/main/res/layout/navigation_header.xml b/mobile/src/main/res/layout/navigation_header.xml index 5843fec0e0..8e65df86a0 100644 --- a/mobile/src/main/res/layout/navigation_header.xml +++ b/mobile/src/main/res/layout/navigation_header.xml @@ -17,7 +17,7 @@ android:layout_centerVertical="true" android:fontFamily="@font/iceland" android:gravity="center" - android:text="shadowsocks" + android:text="shadowsocks-server" android:textColor="@android:color/white" android:textSize="32sp" tools:ignore="HardcodedText"/> diff --git a/mobile/src/main/res/raw/about.html b/mobile/src/main/res/raw/about.html index 2bd462d24b..e6fe9c6bd0 100644 --- a/mobile/src/main/res/raw/about.html +++ b/mobile/src/main/res/raw/about.html @@ -4,7 +4,7 @@ -

A Shadowsocks client for Android, written in Kotlin.

+

A Shadowsocks server for Android, written in Kotlin.

Copyright (C) 2017 by Max Lv max.c.lv@gmail.com

Copyright (C) 2017 by Mygod Studio contact-shadowsocks-android@mygod.be

This program is free software: you can redistribute it and/or modify diff --git a/mobile/src/main/res/values/arrays.xml b/mobile/src/main/res/values/arrays.xml index 69d47ce2d0..6575185d83 100644 --- a/mobile/src/main/res/values/arrays.xml +++ b/mobile/src/main/res/values/arrays.xml @@ -27,12 +27,8 @@ @string/service_mode_proxy - @string/service_mode_vpn - @string/service_mode_transproxy proxy - vpn - transproxy diff --git a/mobile/src/main/res/xml/pref_global.xml b/mobile/src/main/res/xml/pref_global.xml index 9a4808d8b3..37f8a4c1c7 100644 --- a/mobile/src/main/res/xml/pref_global.xml +++ b/mobile/src/main/res/xml/pref_global.xml @@ -17,7 +17,7 @@ app:icon="@drawable/ic_device_developer_mode" app:entries="@array/service_modes" app:entryValues="@array/service_mode_values" - app:defaultValue="vpn" + app:defaultValue="proxy" app:title="@string/service_mode" app:useSimpleSummaryProvider="true"/>