().apply {
- if (item.isBuiltin())this += "SSVPN Builtin"
+ if (item.isBuiltin())this += "Builtin VPN Server"
else if (item.isBuiltin2()) this += "3rd-party free server"
else if (item.url_group.isNotEmpty()) this += item.url_group
else if (!item.name.isNullOrEmpty()) this += item.formattedAddress
@@ -581,7 +581,6 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
return when (item.itemId) {
R.id.update_servers -> {
Core.updateBuiltinServers()
- if(DataStore.is_get_free_servers)Core.importFreeSubs()
true
}
R.id.action_scan_qr_code -> {
diff --git a/mobile/src/main/res/layout/layout_main.xml b/mobile/src/main/res/layout/layout_main.xml
index 75f41dc..03d90ff 100644
--- a/mobile/src/main/res/layout/layout_main.xml
+++ b/mobile/src/main/res/layout/layout_main.xml
@@ -7,16 +7,16 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
-
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/src/main/res/xml/pref_profile.xml b/mobile/src/main/res/xml/pref_profile.xml
index 011b91d..1a949c7 100644
--- a/mobile/src/main/res/xml/pref_profile.xml
+++ b/mobile/src/main/res/xml/pref_profile.xml
@@ -137,7 +137,7 @@
app:icon="@drawable/ic_maps_360"
app:title="@string/udp_fallback"
app:summary="@string/plugin_disabled">
-
diff --git a/mobile/src/main/res/xml/shortcuts.xml b/mobile/src/main/res/xml/shortcuts.xml
index bdb6390..896223c 100644
--- a/mobile/src/main/res/xml/shortcuts.xml
+++ b/mobile/src/main/res/xml/shortcuts.xml
@@ -5,7 +5,7 @@
android:shortcutShortLabel="@string/quick_toggle"
android:shortcutLongLabel="@string/quick_toggle">
diff --git a/mobile/src/main/res/raw/about.html b/mobile/src/ssvpn/res/raw/about.html
similarity index 100%
rename from mobile/src/main/res/raw/about.html
rename to mobile/src/ssvpn/res/raw/about.html
diff --git a/mobile/src/v2free/res/raw/about.html b/mobile/src/v2free/res/raw/about.html
new file mode 100644
index 0000000..e1ebd17
--- /dev/null
+++ b/mobile/src/v2free/res/raw/about.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ V2free, A Android VPN base on V2ray, written in Kotlin.
+ Copyright (C) by bannedbook fanqiang
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see http://www.gnu.org/licenses/.
+ Open Source Licenses
+
+
+
diff --git a/obfs/src/main/AndroidManifest.xml b/obfs/src/main/AndroidManifest.xml
index e9736ed..d14ff3c 100644
--- a/obfs/src/main/AndroidManifest.xml
+++ b/obfs/src/main/AndroidManifest.xml
@@ -3,9 +3,9 @@
-
+ android:authorities="${applicationId}.ObfsBinaryProvider">
diff --git a/obfs/src/main/java/com/github/shadowsocks/plugin/obfs_local/BinaryProvider.kt b/obfs/src/main/java/free/shadowsocks/proxy/VPN/ObfsBinaryProvider.kt
similarity index 86%
rename from obfs/src/main/java/com/github/shadowsocks/plugin/obfs_local/BinaryProvider.kt
rename to obfs/src/main/java/free/shadowsocks/proxy/VPN/ObfsBinaryProvider.kt
index 02297ad..4287f81 100644
--- a/obfs/src/main/java/com/github/shadowsocks/plugin/obfs_local/BinaryProvider.kt
+++ b/obfs/src/main/java/free/shadowsocks/proxy/VPN/ObfsBinaryProvider.kt
@@ -1,4 +1,4 @@
-package com.github.shadowsocks.plugin.obfs_local
+package free.shadowsocks.proxy.VPN
import android.net.Uri
import android.os.ParcelFileDescriptor
@@ -7,7 +7,7 @@ import com.github.shadowsocks.plugin.PathProvider
import java.io.File
import java.io.FileNotFoundException
-class SSVpnBinaryProvider : NativePluginProvider() {
+class ObfsBinaryProvider : NativePluginProvider() {
override fun populateFiles(provider: PathProvider) {
provider.addPath("obfs-local", 755)
}
diff --git a/obfs/src/main/java/free/v2ray/proxy/VPN/ObfsBinaryProvider.kt b/obfs/src/main/java/free/v2ray/proxy/VPN/ObfsBinaryProvider.kt
new file mode 100644
index 0000000..c36acaf
--- /dev/null
+++ b/obfs/src/main/java/free/v2ray/proxy/VPN/ObfsBinaryProvider.kt
@@ -0,0 +1,20 @@
+package free.v2ray.proxy.VPN
+
+import android.net.Uri
+import android.os.ParcelFileDescriptor
+import com.github.shadowsocks.plugin.NativePluginProvider
+import com.github.shadowsocks.plugin.PathProvider
+import java.io.File
+import java.io.FileNotFoundException
+
+class ObfsBinaryProvider : NativePluginProvider() {
+ override fun populateFiles(provider: PathProvider) {
+ provider.addPath("obfs-local", 755)
+ }
+
+ override fun getExecutable() = context!!.applicationInfo.nativeLibraryDir + "/libobfs-local.so"
+ override fun openFile(uri: Uri): ParcelFileDescriptor = when (uri.path) {
+ "/obfs-local" -> ParcelFileDescriptor.open(File(getExecutable()), ParcelFileDescriptor.MODE_READ_ONLY)
+ else -> throw FileNotFoundException()
+ }
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 7f2e888..64b1b61 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,4 @@
include ':libv2ray'
//include ':ssvpn-v2ray'
include ':obfs'
-include ':mobile', ':core', ':plugin', ':dpreference'
+include ':mobile', ':core', ':plugin'//, ':dpreference'