From 4adc0affbed4273c574411e53966006091e5d87e Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sun, 22 Sep 2024 16:54:38 +0800 Subject: [PATCH] Add HTTP protocol --- .../app/src/main/kotlin/com/v2ray/ang/AppConfig.kt | 1 + .../src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt | 3 ++- .../main/kotlin/com/v2ray/ang/dto/ServerConfig.kt | 5 ++++- .../src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt | 9 ++++++--- .../src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt | 5 +++++ .../main/kotlin/com/v2ray/ang/ui/ServerActivity.kt | 12 +++++++++--- .../kotlin/com/v2ray/ang/util/AngConfigManager.kt | 1 + .../kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt | 1 + V2rayNG/app/src/main/res/menu/menu_main.xml | 4 ++++ V2rayNG/app/src/main/res/values-ar/strings.xml | 1 + V2rayNG/app/src/main/res/values-bn/strings.xml | 1 + V2rayNG/app/src/main/res/values-fa/strings.xml | 1 + V2rayNG/app/src/main/res/values-ru/strings.xml | 1 + V2rayNG/app/src/main/res/values-vi/strings.xml | 1 + V2rayNG/app/src/main/res/values-zh-rCN/strings.xml | 1 + V2rayNG/app/src/main/res/values-zh-rTW/strings.xml | 1 + V2rayNG/app/src/main/res/values/strings.xml | 1 + 17 files changed, 41 insertions(+), 8 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt index 480b331b..a621f36e 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt @@ -142,6 +142,7 @@ object AppConfig { const val CUSTOM = "" const val SHADOWSOCKS = "ss://" const val SOCKS = "socks://" + const val HTTP = "http://" const val VLESS = "vless://" const val TROJAN = "trojan://" const val WIREGUARD = "wireguard://" diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt index 0cde22f0..6ed15816 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt @@ -10,7 +10,8 @@ enum class EConfigType(val value: Int, val protocolScheme: String) { SOCKS(4, AppConfig.SOCKS), VLESS(5, AppConfig.VLESS), TROJAN(6, AppConfig.TROJAN), - WIREGUARD(7, AppConfig.WIREGUARD); + WIREGUARD(7, AppConfig.WIREGUARD), + HTTP(10, AppConfig.HTTP); companion object { fun fromInt(value: Int) = values().firstOrNull { it.value == value } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt index 0ee12d4f..a004f142 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt @@ -35,7 +35,10 @@ data class ServerConfig( EConfigType.CUSTOM -> return ServerConfig(configType = configType) - EConfigType.SHADOWSOCKS, EConfigType.SOCKS, EConfigType.TROJAN -> + EConfigType.SHADOWSOCKS, + EConfigType.SOCKS, + EConfigType.HTTP, + EConfigType.TROJAN -> return ServerConfig( configType = configType, outboundBean = V2rayConfig.OutboundBean( diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt index 6b841470..dfbb1f26 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt @@ -137,9 +137,9 @@ data class V2rayConfig( data class ServersBean( var address: String = "", - var method: String = "chacha20-poly1305", + var method: String? = null, var ota: Boolean = false, - var password: String = "", + var password: String? = null, var port: Int = DEFAULT_PORT, var level: Int = DEFAULT_LEVEL, val email: String? = null, @@ -425,6 +425,7 @@ data class V2rayConfig( return settings?.vnext?.get(0)?.address } else if (protocol.equals(EConfigType.SHADOWSOCKS.name, true) || protocol.equals(EConfigType.SOCKS.name, true) + || protocol.equals(EConfigType.HTTP.name, true) || protocol.equals(EConfigType.TROJAN.name, true) ) { return settings?.servers?.get(0)?.address @@ -441,6 +442,7 @@ data class V2rayConfig( return settings?.vnext?.get(0)?.port } else if (protocol.equals(EConfigType.SHADOWSOCKS.name, true) || protocol.equals(EConfigType.SOCKS.name, true) + || protocol.equals(EConfigType.HTTP.name, true) || protocol.equals(EConfigType.TROJAN.name, true) ) { return settings?.servers?.get(0)?.port @@ -465,7 +467,8 @@ data class V2rayConfig( || protocol.equals(EConfigType.TROJAN.name, true) ) { return settings?.servers?.get(0)?.password - } else if (protocol.equals(EConfigType.SOCKS.name, true)) { + } else if (protocol.equals(EConfigType.SOCKS.name, true) + || protocol.equals(EConfigType.HTTP.name, true)) { return settings?.servers?.get(0)?.users?.get(0)?.pass } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { return settings?.secretKey diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt index cc7d9d31..2c1a0cfe 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt @@ -277,6 +277,11 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList true } + R.id.import_manually_http -> { + importManually(EConfigType.HTTP.value) + true + } + R.id.import_manually_trojan -> { importManually(EConfigType.TROJAN.value) true diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt index 8aa5dd71..ec76abe5 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt @@ -130,6 +130,7 @@ class ServerActivity : BaseActivity() { EConfigType.CUSTOM -> return EConfigType.SHADOWSOCKS -> setContentView(R.layout.activity_server_shadowsocks) EConfigType.SOCKS -> setContentView(R.layout.activity_server_socks) + EConfigType.HTTP -> setContentView(R.layout.activity_server_socks) EConfigType.VLESS -> setContentView(R.layout.activity_server_vless) EConfigType.TROJAN -> setContentView(R.layout.activity_server_trojan) EConfigType.WIREGUARD -> setContentView(R.layout.activity_server_wireguard) @@ -249,7 +250,9 @@ class ServerActivity : BaseActivity() { et_id.text = Utils.getEditable(outbound.getPassword().orEmpty()) et_alterId?.text = Utils.getEditable(outbound.settings?.vnext?.get(0)?.users?.get(0)?.alterId.toString()) - if (config.configType == EConfigType.SOCKS) { + if (config.configType == EConfigType.SOCKS + || config.configType == EConfigType.HTTP + ) { et_security?.text = Utils.getEditable(outbound.settings?.servers?.get(0)?.users?.get(0)?.user.orEmpty()) } else if (config.configType == EConfigType.VLESS) { @@ -404,7 +407,10 @@ class ServerActivity : BaseActivity() { } val config = MmkvManager.decodeServerConfig(editGuid) ?: ServerConfig.create(createConfigType) - if (config.configType != EConfigType.SOCKS && TextUtils.isEmpty(et_id.text.toString())) { + if (config.configType != EConfigType.SOCKS + && config.configType != EConfigType.HTTP + && TextUtils.isEmpty(et_id.text.toString()) + ) { if (config.configType == EConfigType.TROJAN || config.configType == EConfigType.SHADOWSOCKS) { toast(R.string.server_lab_id3) } else { @@ -477,7 +483,7 @@ class ServerActivity : BaseActivity() { if (config.configType == EConfigType.SHADOWSOCKS) { server.password = et_id.text.toString().trim() server.method = shadowsocksSecuritys[sp_security?.selectedItemPosition ?: 0] - } else if (config.configType == EConfigType.SOCKS) { + } else if (config.configType == EConfigType.SOCKS || config.configType == EConfigType.HTTP) { if (TextUtils.isEmpty(et_security?.text) && TextUtils.isEmpty(et_id.text)) { server.users = null } else { diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt index f937b4cc..8408404c 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt @@ -88,6 +88,7 @@ object AngConfigManager { EConfigType.CUSTOM -> "" EConfigType.SHADOWSOCKS -> ShadowsocksFmt.toUri(config) EConfigType.SOCKS -> SocksFmt.toUri(config) + EConfigType.HTTP -> "" EConfigType.VLESS -> VlessFmt.toUri(config) EConfigType.TROJAN -> TrojanFmt.toUri(config) EConfigType.WIREGUARD -> WireguardFmt.toUri(config) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt index 7e1c030b..4764f403 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt @@ -377,6 +377,7 @@ object V2rayConfigUtil { val protocol = outbound.protocol if (protocol.equals(EConfigType.SHADOWSOCKS.name, true) || protocol.equals(EConfigType.SOCKS.name, true) + || protocol.equals(EConfigType.HTTP.name, true) || protocol.equals(EConfigType.TROJAN.name, true) || protocol.equals(EConfigType.WIREGUARD.name, true) ) { diff --git a/V2rayNG/app/src/main/res/menu/menu_main.xml b/V2rayNG/app/src/main/res/menu/menu_main.xml index 7894237b..c701223b 100644 --- a/V2rayNG/app/src/main/res/menu/menu_main.xml +++ b/V2rayNG/app/src/main/res/menu/menu_main.xml @@ -36,6 +36,10 @@ android:id="@+id/import_manually_socks" android:title="@string/menu_item_import_config_manually_socks" app:showAsAction="never" /> + الكتابة يدويًا [VLESS] الكتابة يدويًا [Shadowsocks] الكتابة يدويًا [Socks] + Type manually[HTTP] الكتابة يدويًا [Trojan] الكتابة يدويًا [Wireguard] تكوين مخصص diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml index 86967872..f44d1129 100644 --- a/V2rayNG/app/src/main/res/values-bn/strings.xml +++ b/V2rayNG/app/src/main/res/values-bn/strings.xml @@ -29,6 +29,7 @@ ম্যানুয়ালি টাইপ করুন [VLESS] ম্যানুয়ালি টাইপ করুন [Shadowsocks] ম্যানুয়ালি টাইপ করুন [Socks] + Type manually[HTTP] ম্যানুয়ালি টাইপ করুন [Trojan] ম্যানুয়ালি টাইপ করুন [Wireguard] কাস্টম কনফিগারেশন diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index 08b5683d..b9340e32 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -28,6 +28,7 @@ تایپ دستی[VLESS] تایپ دستی[Shadowsocks] تایپ دستی[Socks] + Type manually[HTTP] تایپ دستی[Trojan] [Wireguard]تایپ دستی کانفیگ سفارشی diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index 3a1e21f5..84134dc8 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -28,6 +28,7 @@ Ручной ввод VLESS Ручной ввод Shadowsocks Ручной ввод Socks + Type manually[HTTP] Ручной ввод Trojan Ручной ввод Wireguard Другой профиль diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index 38d244fd..1fe6e114 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -28,6 +28,7 @@ Nhập thủ công [VLESS] Nhập thủ công [ShadowSocks] Nhập thủ công [Socks] + Type manually[HTTP] Nhập thủ công [Trojan] Nhập thủ công [WireGuard] Nâng cao / Cấu hình tùy chỉnh diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml index 6b41cc65..ef32eb7e 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -28,6 +28,7 @@ 手动输入[VLESS] 手动输入[Shadowsocks] 手动输入[Socks] + 手动输入[HTTP] 手动输入[Trojan] 手动输入[Wireguard] 自定义配置 diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml index d408e904..af786cda 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -28,6 +28,7 @@ 手動鍵入 [VLESS] 手動鍵入 [Shadowsocks] 手動鍵入 [Socks] + 手動鍵入 [HTTP] 手動鍵入 [Trojan] 手動鍵入 [Wireguard] 自訂配置 diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 060d10f8..84f79a7a 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -29,6 +29,7 @@ Type manually[VLESS] Type manually[Shadowsocks] Type manually[Socks] + Type manually[HTTP] Type manually[Trojan] Type manually[Wireguard] Custom config