Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0748f994ef | |||
| 233b34bda6 | |||
| 6ece3385fe | |||
| 9b8a810445 | |||
| f63242d147 |
Regular → Executable
+2
-2
@@ -23,8 +23,8 @@ trap 'echo -e "Aborted, error $? in command: $BASH_COMMAND"; trap ERR; clear_tmp
|
||||
install -m644 $__dir/tun2socks.mk $TMPDIR/
|
||||
|
||||
pushd $TMPDIR
|
||||
git clone --depth=1 https://github.com/shadowsocks/badvpn.git
|
||||
git clone --depth=1 https://github.com/shadowsocks/libancillary.git
|
||||
git clone --depth=1 https://github.com/XTLS/badvpn.git
|
||||
git clone --depth=1 https://github.com/XTLS/libancillary.git
|
||||
$NDK_HOME/ndk-build \
|
||||
NDK_PROJECT_PATH=. \
|
||||
APP_BUILD_SCRIPT=./tun2socks.mk \
|
||||
|
||||
Regular → Executable
BIN
Binary file not shown.
Regular → Executable
BIN
Binary file not shown.
Regular → Executable
BIN
Binary file not shown.
Regular → Executable
BIN
Binary file not shown.
@@ -47,7 +47,7 @@ class MainRecyclerAdapter(val activity: MainActivity) : RecyclerView.Adapter<Mai
|
||||
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
|
||||
if (holder is MainViewHolder) {
|
||||
val guid = mActivity.mainViewModel.serverList.getOrNull(position) ?: return
|
||||
val config = MmkvManager.decodeServerConfig(guid) ?: return
|
||||
val config = mActivity.mainViewModel.serversCache.getOrElse(guid, { MmkvManager.decodeServerConfig(guid) })?: return
|
||||
val outbound = config.getProxyOutbound()
|
||||
val aff = MmkvManager.decodeServerAffiliationInfo(guid)
|
||||
|
||||
|
||||
@@ -246,8 +246,8 @@ class ServerActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun saveStreamSettings(streamSetting: V2rayConfig.OutboundBean.StreamSettingsBean, config: ServerConfig) {
|
||||
val requestHost = et_request_host?.text.toString().trim()
|
||||
val path = et_path?.text.toString().trim()
|
||||
val requestHost = if (et_request_host != null) et_request_host.text.toString().trim() else ""
|
||||
val path = if (et_path != null) et_path.text.toString().trim() else ""
|
||||
var sni = streamSetting.populateTransportSettings(
|
||||
if (sp_network != null) networks[sp_network.selectedItemPosition] else DEFAULT_NETWORK,
|
||||
if (sp_header_type != null) headertypes[sp_header_type.selectedItemPosition] else "",
|
||||
|
||||
@@ -21,13 +21,15 @@ import com.v2ray.ang.util.*
|
||||
import com.v2ray.ang.util.MmkvManager.KEY_ANG_CONFIGS
|
||||
import kotlinx.coroutines.*
|
||||
import java.util.*
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
private val mainStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_MAIN, MMKV.MULTI_PROCESS_MODE) }
|
||||
private val serverRawStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_SERVER_RAW, MMKV.MULTI_PROCESS_MODE) }
|
||||
|
||||
var serverList= MmkvManager.decodeServerList()
|
||||
var serverList = MmkvManager.decodeServerList()
|
||||
private set
|
||||
val serversCache = ConcurrentHashMap<String, ServerConfig>()
|
||||
val isRunning by lazy { MutableLiveData<Boolean>() }
|
||||
val updateListAction by lazy { MutableLiveData<Int>() }
|
||||
val updateTestResultAction by lazy { MutableLiveData<String>() }
|
||||
@@ -50,6 +52,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
|
||||
fun reloadServerList() {
|
||||
serverList = MmkvManager.decodeServerList()
|
||||
updateCache()
|
||||
updateListAction.value = -1
|
||||
}
|
||||
|
||||
@@ -65,6 +68,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
val key = MmkvManager.encodeServerConfig("", config)
|
||||
serverRawStorage?.encode(key, server)
|
||||
serverList.add(key)
|
||||
serversCache[key] = config
|
||||
}
|
||||
|
||||
fun swapServer(fromPosition: Int, toPosition: Int) {
|
||||
@@ -72,6 +76,17 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
mainStorage?.encode(KEY_ANG_CONFIGS, Gson().toJson(serverList))
|
||||
}
|
||||
|
||||
fun updateCache() {
|
||||
serversCache.clear()
|
||||
GlobalScope.launch(Dispatchers.Default) {
|
||||
serverList.forEach { guid ->
|
||||
MmkvManager.decodeServerConfig(guid)?.let {
|
||||
serversCache[guid] = it
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun testAllTcping() {
|
||||
tcpingTestScope.coroutineContext[Job]?.cancelChildren()
|
||||
Utils.closeAllTcpSockets()
|
||||
@@ -80,7 +95,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
|
||||
getApplication<AngApplication>().toast(R.string.connection_test_testing)
|
||||
for (guid in serverList) {
|
||||
MmkvManager.decodeServerConfig(guid)?.getProxyOutbound()?.let { outbound ->
|
||||
serversCache.getOrElse(guid, { MmkvManager.decodeServerConfig(guid) })?.getProxyOutbound()?.let { outbound ->
|
||||
val serverAddress = outbound.getServerAddress()
|
||||
val serverPort = outbound.getServerPort()
|
||||
if (serverAddress != null && serverPort != null) {
|
||||
|
||||
Reference in New Issue
Block a user