diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/AppDatabase.kt b/app/src/main/java/com/idormy/sms/forwarder/database/AppDatabase.kt index f5d5d165..00229499 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/AppDatabase.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/AppDatabase.kt @@ -58,6 +58,7 @@ server_port = 8888 #可选,建议启用 token = 888888888 +#[二选一即可]每台机器不可重复,通过 http://88.88.88.88:5000 访问 [SmsForwarder-TCP] type = tcp local_ip = 127.0.0.1 @@ -65,6 +66,7 @@ local_port = 5000 #只要修改下面这一行 remote_port = 5000 +#[二选一即可]每台机器不可重复,通过 http://smsf.demo.com 访问 [SmsForwarder-HTTP] type = http local_ip = 127.0.0.1 @@ -177,6 +179,7 @@ server_port = 8888 #可选,建议启用 token = 888888888 +#[二选一即可]每台机器不可重复,通过 http://88.88.88.88:5000 访问 [SmsForwarder-TCP] type = tcp local_ip = 127.0.0.1 @@ -184,6 +187,7 @@ local_port = 5000 #只要修改下面这一行 remote_port = 5000 +#[二选一即可]每台机器不可重复,通过 http://smsf.demo.com 访问 [SmsForwarder-HTTP] type = http local_ip = 127.0.0.1 diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/dao/FrpcDao.kt b/app/src/main/java/com/idormy/sms/forwarder/database/dao/FrpcDao.kt index 38203c6f..fced7f92 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/dao/FrpcDao.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/dao/FrpcDao.kt @@ -30,4 +30,10 @@ interface FrpcDao { @Query("SELECT * FROM Frpc ORDER BY time DESC") fun pagingSource(): PagingSource + //TODO:允许主线程访问,后面再优化 + @Query("SELECT * FROM Frpc ORDER BY time ASC") + fun getAll(): List + + @Query("DELETE FROM Frpc") + fun deleteAll() } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/dao/RuleDao.kt b/app/src/main/java/com/idormy/sms/forwarder/database/dao/RuleDao.kt index f0e17ef3..899d9e33 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/dao/RuleDao.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/dao/RuleDao.kt @@ -43,10 +43,10 @@ interface RuleDao { fun pagingSource(type: String): PagingSource @Transaction - @Query("SELECT * FROM rule where type=:type and status=:status and (sim_slot='ALL' or sim_slot=:simSlot)") + @Query("SELECT * FROM Rule where type=:type and status=:status and (sim_slot='ALL' or sim_slot=:simSlot)") suspend fun getRuleAndSender(type: String, status: Int, simSlot: String): List //TODO:允许主线程访问,后面再优化 - @Query("SELECT * FROM rule ORDER BY id ASC") + @Query("SELECT * FROM Rule ORDER BY id ASC") fun getAll(): List } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/dao/SenderDao.kt b/app/src/main/java/com/idormy/sms/forwarder/database/dao/SenderDao.kt index 09411eb8..6aa8ac27 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/dao/SenderDao.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/dao/SenderDao.kt @@ -31,14 +31,14 @@ interface SenderDao { @Query("SELECT * FROM Sender where status=:status ORDER BY id DESC") fun pagingSource(status: Int): PagingSource - @Query("SELECT * FROM sender ORDER BY id DESC") + @Query("SELECT * FROM Sender ORDER BY id DESC") fun getAll(): Single> - @Query("SELECT COUNT(id) FROM sender WHERE status = 1") + @Query("SELECT COUNT(id) FROM Sender WHERE status = 1") fun getOnCount(): Flow //TODO:允许主线程访问,后面再优化 - @Query("SELECT * FROM sender ORDER BY id ASC") + @Query("SELECT * FROM Sender ORDER BY id ASC") fun getAll2(): List @Query("DELETE FROM Sender") diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/repository/FrpcRepository.kt b/app/src/main/java/com/idormy/sms/forwarder/database/repository/FrpcRepository.kt index 9669ccb5..58c4be7e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/repository/FrpcRepository.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/repository/FrpcRepository.kt @@ -26,4 +26,11 @@ class FrpcRepository( @WorkerThread fun update(frpc: Frpc) = frpcDao.update(frpc) + //TODO:允许主线程访问,后面再优化 + val all: List = frpcDao.getAll() + + fun deleteAll() { + frpcDao.deleteAll() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/repository/SenderRepository.kt b/app/src/main/java/com/idormy/sms/forwarder/database/repository/SenderRepository.kt index 7963e044..c633325d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/repository/SenderRepository.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/repository/SenderRepository.kt @@ -26,6 +26,7 @@ class SenderRepository(private val senderDao: SenderDao) { //TODO:允许主线程访问,后面再优化 val all: List = senderDao.getAll2() + fun deleteAll() { senderDao.deleteAll() } diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/CloneInfo.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/CloneInfo.kt index a07d800b..36dbf475 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/CloneInfo.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/CloneInfo.kt @@ -1,6 +1,7 @@ package com.idormy.sms.forwarder.entity import com.google.gson.annotations.SerializedName +import com.idormy.sms.forwarder.database.entity.Frpc import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.database.entity.Sender import java.io.Serializable @@ -76,4 +77,6 @@ data class CloneInfo( var senderList: List? = null, @SerializedName("rule_list") var ruleList: List? = null, + @SerializedName("frpc_list") + var frpcList: List? = null, ) : Serializable \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/HttpServerUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/HttpServerUtils.kt index 13eadbd9..45ca9a1e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/HttpServerUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/HttpServerUtils.kt @@ -186,6 +186,7 @@ class HttpServerUtils private constructor() { cloneInfo.enablePureClientMode = SettingUtils.enablePureClientMode cloneInfo.senderList = Core.sender.all cloneInfo.ruleList = Core.rule.all + cloneInfo.frpcList = Core.frpc.all return cloneInfo } @@ -228,12 +229,23 @@ class HttpServerUtils private constructor() { //删除发送通道、转发规则、转发日志 Core.sender.deleteAll() //发送通道 - for (sender in cloneInfo.senderList!!) { - Core.sender.insert(sender) + if (!cloneInfo.senderList.isNullOrEmpty()) { + for (sender in cloneInfo.senderList!!) { + Core.sender.insert(sender) + } } //转发规则 - for (rule in cloneInfo.ruleList!!) { - Core.rule.insert(rule) + if (!cloneInfo.ruleList.isNullOrEmpty()) { + for (rule in cloneInfo.ruleList!!) { + Core.rule.insert(rule) + } + } + //Frpc配置 + Core.frpc.deleteAll() + if (!cloneInfo.frpcList.isNullOrEmpty()) { + for (frpc in cloneInfo.frpcList!!) { + Core.frpc.insert(frpc) + } } true } catch (e: Exception) {