mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-03 09:27:41 +08:00
新增:主动控制·客户端 -> 一键换新机 支持导出导入Frpc配置
This commit is contained in:
parent
0579a5815b
commit
16fa5ffa62
@ -58,6 +58,7 @@ server_port = 8888
|
|||||||
#可选,建议启用
|
#可选,建议启用
|
||||||
token = 888888888
|
token = 888888888
|
||||||
|
|
||||||
|
#[二选一即可]每台机器不可重复,通过 http://88.88.88.88:5000 访问
|
||||||
[SmsForwarder-TCP]
|
[SmsForwarder-TCP]
|
||||||
type = tcp
|
type = tcp
|
||||||
local_ip = 127.0.0.1
|
local_ip = 127.0.0.1
|
||||||
@ -65,6 +66,7 @@ local_port = 5000
|
|||||||
#只要修改下面这一行
|
#只要修改下面这一行
|
||||||
remote_port = 5000
|
remote_port = 5000
|
||||||
|
|
||||||
|
#[二选一即可]每台机器不可重复,通过 http://smsf.demo.com 访问
|
||||||
[SmsForwarder-HTTP]
|
[SmsForwarder-HTTP]
|
||||||
type = http
|
type = http
|
||||||
local_ip = 127.0.0.1
|
local_ip = 127.0.0.1
|
||||||
@ -177,6 +179,7 @@ server_port = 8888
|
|||||||
#可选,建议启用
|
#可选,建议启用
|
||||||
token = 888888888
|
token = 888888888
|
||||||
|
|
||||||
|
#[二选一即可]每台机器不可重复,通过 http://88.88.88.88:5000 访问
|
||||||
[SmsForwarder-TCP]
|
[SmsForwarder-TCP]
|
||||||
type = tcp
|
type = tcp
|
||||||
local_ip = 127.0.0.1
|
local_ip = 127.0.0.1
|
||||||
@ -184,6 +187,7 @@ local_port = 5000
|
|||||||
#只要修改下面这一行
|
#只要修改下面这一行
|
||||||
remote_port = 5000
|
remote_port = 5000
|
||||||
|
|
||||||
|
#[二选一即可]每台机器不可重复,通过 http://smsf.demo.com 访问
|
||||||
[SmsForwarder-HTTP]
|
[SmsForwarder-HTTP]
|
||||||
type = http
|
type = http
|
||||||
local_ip = 127.0.0.1
|
local_ip = 127.0.0.1
|
||||||
|
@ -30,4 +30,10 @@ interface FrpcDao {
|
|||||||
@Query("SELECT * FROM Frpc ORDER BY time DESC")
|
@Query("SELECT * FROM Frpc ORDER BY time DESC")
|
||||||
fun pagingSource(): PagingSource<Int, Frpc>
|
fun pagingSource(): PagingSource<Int, Frpc>
|
||||||
|
|
||||||
|
//TODO:允许主线程访问,后面再优化
|
||||||
|
@Query("SELECT * FROM Frpc ORDER BY time ASC")
|
||||||
|
fun getAll(): List<Frpc>
|
||||||
|
|
||||||
|
@Query("DELETE FROM Frpc")
|
||||||
|
fun deleteAll()
|
||||||
}
|
}
|
@ -43,10 +43,10 @@ interface RuleDao {
|
|||||||
fun pagingSource(type: String): PagingSource<Int, RuleAndSender>
|
fun pagingSource(type: String): PagingSource<Int, RuleAndSender>
|
||||||
|
|
||||||
@Transaction
|
@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<RuleAndSender>
|
suspend fun getRuleAndSender(type: String, status: Int, simSlot: String): List<RuleAndSender>
|
||||||
|
|
||||||
//TODO:允许主线程访问,后面再优化
|
//TODO:允许主线程访问,后面再优化
|
||||||
@Query("SELECT * FROM rule ORDER BY id ASC")
|
@Query("SELECT * FROM Rule ORDER BY id ASC")
|
||||||
fun getAll(): List<Rule>
|
fun getAll(): List<Rule>
|
||||||
}
|
}
|
@ -31,14 +31,14 @@ interface SenderDao {
|
|||||||
@Query("SELECT * FROM Sender where status=:status ORDER BY id DESC")
|
@Query("SELECT * FROM Sender where status=:status ORDER BY id DESC")
|
||||||
fun pagingSource(status: Int): PagingSource<Int, Sender>
|
fun pagingSource(status: Int): PagingSource<Int, Sender>
|
||||||
|
|
||||||
@Query("SELECT * FROM sender ORDER BY id DESC")
|
@Query("SELECT * FROM Sender ORDER BY id DESC")
|
||||||
fun getAll(): Single<List<Sender>>
|
fun getAll(): Single<List<Sender>>
|
||||||
|
|
||||||
@Query("SELECT COUNT(id) FROM sender WHERE status = 1")
|
@Query("SELECT COUNT(id) FROM Sender WHERE status = 1")
|
||||||
fun getOnCount(): Flow<Long>
|
fun getOnCount(): Flow<Long>
|
||||||
|
|
||||||
//TODO:允许主线程访问,后面再优化
|
//TODO:允许主线程访问,后面再优化
|
||||||
@Query("SELECT * FROM sender ORDER BY id ASC")
|
@Query("SELECT * FROM Sender ORDER BY id ASC")
|
||||||
fun getAll2(): List<Sender>
|
fun getAll2(): List<Sender>
|
||||||
|
|
||||||
@Query("DELETE FROM Sender")
|
@Query("DELETE FROM Sender")
|
||||||
|
@ -26,4 +26,11 @@ class FrpcRepository(
|
|||||||
@WorkerThread
|
@WorkerThread
|
||||||
fun update(frpc: Frpc) = frpcDao.update(frpc)
|
fun update(frpc: Frpc) = frpcDao.update(frpc)
|
||||||
|
|
||||||
|
//TODO:允许主线程访问,后面再优化
|
||||||
|
val all: List<Frpc> = frpcDao.getAll()
|
||||||
|
|
||||||
|
fun deleteAll() {
|
||||||
|
frpcDao.deleteAll()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -26,6 +26,7 @@ class SenderRepository(private val senderDao: SenderDao) {
|
|||||||
|
|
||||||
//TODO:允许主线程访问,后面再优化
|
//TODO:允许主线程访问,后面再优化
|
||||||
val all: List<Sender> = senderDao.getAll2()
|
val all: List<Sender> = senderDao.getAll2()
|
||||||
|
|
||||||
fun deleteAll() {
|
fun deleteAll() {
|
||||||
senderDao.deleteAll()
|
senderDao.deleteAll()
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.idormy.sms.forwarder.entity
|
package com.idormy.sms.forwarder.entity
|
||||||
|
|
||||||
import com.google.gson.annotations.SerializedName
|
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.Rule
|
||||||
import com.idormy.sms.forwarder.database.entity.Sender
|
import com.idormy.sms.forwarder.database.entity.Sender
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
@ -76,4 +77,6 @@ data class CloneInfo(
|
|||||||
var senderList: List<Sender>? = null,
|
var senderList: List<Sender>? = null,
|
||||||
@SerializedName("rule_list")
|
@SerializedName("rule_list")
|
||||||
var ruleList: List<Rule>? = null,
|
var ruleList: List<Rule>? = null,
|
||||||
|
@SerializedName("frpc_list")
|
||||||
|
var frpcList: List<Frpc>? = null,
|
||||||
) : Serializable
|
) : Serializable
|
@ -186,6 +186,7 @@ class HttpServerUtils private constructor() {
|
|||||||
cloneInfo.enablePureClientMode = SettingUtils.enablePureClientMode
|
cloneInfo.enablePureClientMode = SettingUtils.enablePureClientMode
|
||||||
cloneInfo.senderList = Core.sender.all
|
cloneInfo.senderList = Core.sender.all
|
||||||
cloneInfo.ruleList = Core.rule.all
|
cloneInfo.ruleList = Core.rule.all
|
||||||
|
cloneInfo.frpcList = Core.frpc.all
|
||||||
|
|
||||||
return cloneInfo
|
return cloneInfo
|
||||||
}
|
}
|
||||||
@ -228,12 +229,23 @@ class HttpServerUtils private constructor() {
|
|||||||
//删除发送通道、转发规则、转发日志
|
//删除发送通道、转发规则、转发日志
|
||||||
Core.sender.deleteAll()
|
Core.sender.deleteAll()
|
||||||
//发送通道
|
//发送通道
|
||||||
for (sender in cloneInfo.senderList!!) {
|
if (!cloneInfo.senderList.isNullOrEmpty()) {
|
||||||
Core.sender.insert(sender)
|
for (sender in cloneInfo.senderList!!) {
|
||||||
|
Core.sender.insert(sender)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//转发规则
|
//转发规则
|
||||||
for (rule in cloneInfo.ruleList!!) {
|
if (!cloneInfo.ruleList.isNullOrEmpty()) {
|
||||||
Core.rule.insert(rule)
|
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
|
true
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user