From bceebbddd4f11e8789f960d6aa47003619304a40 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Sun, 17 Dec 2023 23:25:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=C2=B7=E5=BF=AB=E6=8D=B7=E6=8C=87=E4=BB=A4=20?= =?UTF-8?q?=EF=BC=88=E5=BC=80=E5=8F=91=E4=B8=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sms/forwarder/activity/ClientActivity.kt | 12 -- .../sms/forwarder/activity/MainActivity.kt | 8 - .../sms/forwarder/activity/TaskActivity.kt | 12 -- .../forwarder/adapter/TaskPagingAdapter.kt | 2 +- .../forwarder/adapter/TaskSettingAdapter.kt | 2 +- .../idormy/sms/forwarder/core/BaseActivity.kt | 20 ++ .../sms/forwarder/database/dao/FrpcDao.kt | 11 +- .../entity/{task => }/TaskSetting.kt | 2 +- .../forwarder/entity/action/FrpcSetting.kt | 9 + .../entity/action/HttpServerSetting.kt | 10 + .../entity/{task => action}/SmsSetting.kt | 2 +- .../{task => condition}/BatterySetting.kt | 2 +- .../{task => condition}/ChargeSetting.kt | 2 +- .../entity/{task => condition}/CronSetting.kt | 2 +- .../{task => condition}/LocationSetting.kt | 2 +- .../{task => condition}/LockScreenSetting.kt | 2 +- .../{task => condition}/NetworkSetting.kt | 2 +- .../entity/{task => condition}/SimSetting.kt | 2 +- .../forwarder/fragment/TasksEditFragment.kt | 4 +- .../forwarder/fragment/action/FrpcFragment.kt | 49 ++++- .../fragment/action/HttpServerFragment.kt | 2 +- .../fragment/action/SendSmsFragment.kt | 2 +- .../fragment/condition/BatteryFragment.kt | 2 +- .../fragment/condition/ChargeFragment.kt | 2 +- .../fragment/condition/CronFragment.kt | 2 +- .../condition/LeaveAddressFragment.kt | 2 +- .../fragment/condition/LockScreenFragment.kt | 2 +- .../fragment/condition/NetworkFragment.kt | 2 +- .../fragment/condition/SimFragment.kt | 2 +- .../fragment/condition/ToAddressFragment.kt | 2 +- .../idormy/sms/forwarder/utils/Constants.kt | 2 + .../sms/forwarder/utils/SmsCommandUtils.kt | 41 ++-- .../forwarder/utils/task/ConditionUtils.kt | 16 +- .../sms/forwarder/workers/ActionWorker.kt | 127 ++++++++++-- .../sms/forwarder/workers/BatteryWorker.kt | 6 +- .../sms/forwarder/workers/CronWorker.kt | 4 +- .../sms/forwarder/workers/LocationWorker.kt | 4 +- .../sms/forwarder/workers/LockScreenWorker.kt | 4 +- .../sms/forwarder/workers/NetworkWorker.kt | 4 +- .../idormy/sms/forwarder/workers/SimWorker.kt | 4 +- .../res/layout/fragment_tasks_action_frpc.xml | 181 ++++++++++++++++++ app/src/main/res/values-en/strings.xml | 4 + app/src/main/res/values/strings.xml | 4 + 43 files changed, 451 insertions(+), 127 deletions(-) rename app/src/main/java/com/idormy/sms/forwarder/entity/{task => }/TaskSetting.kt (89%) create mode 100644 app/src/main/java/com/idormy/sms/forwarder/entity/action/FrpcSetting.kt create mode 100644 app/src/main/java/com/idormy/sms/forwarder/entity/action/HttpServerSetting.kt rename app/src/main/java/com/idormy/sms/forwarder/entity/{task => action}/SmsSetting.kt (81%) rename app/src/main/java/com/idormy/sms/forwarder/entity/{task => condition}/BatterySetting.kt (95%) rename app/src/main/java/com/idormy/sms/forwarder/entity/{task => condition}/ChargeSetting.kt (96%) rename app/src/main/java/com/idormy/sms/forwarder/entity/{task => condition}/CronSetting.kt (73%) rename app/src/main/java/com/idormy/sms/forwarder/entity/{task => condition}/LocationSetting.kt (91%) rename app/src/main/java/com/idormy/sms/forwarder/entity/{task => condition}/LockScreenSetting.kt (94%) rename app/src/main/java/com/idormy/sms/forwarder/entity/{task => condition}/NetworkSetting.kt (95%) rename app/src/main/java/com/idormy/sms/forwarder/entity/{task => condition}/SimSetting.kt (92%) create mode 100644 app/src/main/res/layout/fragment_tasks_action_frpc.xml diff --git a/app/src/main/java/com/idormy/sms/forwarder/activity/ClientActivity.kt b/app/src/main/java/com/idormy/sms/forwarder/activity/ClientActivity.kt index 7bd2c957..abb47645 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/activity/ClientActivity.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/activity/ClientActivity.kt @@ -4,23 +4,11 @@ import android.os.Bundle import androidx.viewbinding.ViewBinding import com.idormy.sms.forwarder.core.BaseActivity import com.idormy.sms.forwarder.fragment.ClientFragment -import com.idormy.sms.forwarder.utils.EVENT_TOAST_ERROR -import com.idormy.sms.forwarder.utils.EVENT_TOAST_SUCCESS -import com.idormy.sms.forwarder.utils.XToastUtils -import com.jeremyliao.liveeventbus.LiveEventBus class ClientActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) openPage(ClientFragment::class.java) - - //替换 Looper.loop() 后再 Toast 形式 - LiveEventBus.get(EVENT_TOAST_SUCCESS, String::class.java).observe(this) { msg: String -> - XToastUtils.success(msg) - } - LiveEventBus.get(EVENT_TOAST_ERROR, String::class.java).observe(this) { msg: String -> - XToastUtils.error(msg, 15000) - } } } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt b/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt index 4c17026a..df647990 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt @@ -264,14 +264,6 @@ class MainActivity : BaseActivity(), LiveEventBus.get(EVENT_UPDATE_RULE_TYPE, String::class.java).observe(this) { type: String -> ruleType = type } - - //替换 Looper.loop() 后再 Toast 形式 - LiveEventBus.get(EVENT_TOAST_SUCCESS, String::class.java).observe(this) { msg: String -> - XToastUtils.success(msg) - } - LiveEventBus.get(EVENT_TOAST_ERROR, String::class.java).observe(this) { msg: String -> - XToastUtils.error(msg, 15000) - } } /** diff --git a/app/src/main/java/com/idormy/sms/forwarder/activity/TaskActivity.kt b/app/src/main/java/com/idormy/sms/forwarder/activity/TaskActivity.kt index 4ed76437..bf0ada98 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/activity/TaskActivity.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/activity/TaskActivity.kt @@ -4,23 +4,11 @@ import android.os.Bundle import androidx.viewbinding.ViewBinding import com.idormy.sms.forwarder.core.BaseActivity import com.idormy.sms.forwarder.fragment.TasksFragment -import com.idormy.sms.forwarder.utils.EVENT_TOAST_ERROR -import com.idormy.sms.forwarder.utils.EVENT_TOAST_SUCCESS -import com.idormy.sms.forwarder.utils.XToastUtils -import com.jeremyliao.liveeventbus.LiveEventBus class TaskActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) openPage(TasksFragment::class.java) - - //替换 Looper.loop() 后再 Toast 形式 - LiveEventBus.get(EVENT_TOAST_SUCCESS, String::class.java).observe(this) { msg: String -> - XToastUtils.success(msg) - } - LiveEventBus.get(EVENT_TOAST_ERROR, String::class.java).observe(this) { msg: String -> - XToastUtils.error(msg, 15000) - } } } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt index 45006f34..f828b661 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt @@ -15,7 +15,7 @@ import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.adapter.TaskPagingAdapter.MyViewHolder import com.idormy.sms.forwarder.database.entity.Task import com.idormy.sms.forwarder.databinding.AdapterTasksCardViewListItemBinding -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting import com.xuexiang.xutil.data.DateUtils class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt index 0f7a93f0..92d221f2 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt @@ -12,7 +12,7 @@ import android.widget.TextView import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import com.idormy.sms.forwarder.R -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting class TaskSettingAdapter( val itemList: MutableList, diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/BaseActivity.kt b/app/src/main/java/com/idormy/sms/forwarder/core/BaseActivity.kt index 345e78f2..49590d2f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/BaseActivity.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/BaseActivity.kt @@ -5,6 +5,12 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import androidx.viewbinding.ViewBinding +import com.idormy.sms.forwarder.utils.EVENT_TOAST_ERROR +import com.idormy.sms.forwarder.utils.EVENT_TOAST_INFO +import com.idormy.sms.forwarder.utils.EVENT_TOAST_SUCCESS +import com.idormy.sms.forwarder.utils.EVENT_TOAST_WARNING +import com.idormy.sms.forwarder.utils.XToastUtils +import com.jeremyliao.liveeventbus.LiveEventBus import com.xuexiang.xpage.base.XPageActivity import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.core.CoreSwitchBean @@ -47,6 +53,20 @@ open class BaseActivity : XPageActivity() { initStatusBarStyle() super.onCreate(savedInstanceState) registerSlideBack() + + //用于接收各种事件的吐司 + LiveEventBus.get(EVENT_TOAST_ERROR, String::class.java).observe(this) { msg: String -> + XToastUtils.error(msg, 15000) + } + LiveEventBus.get(EVENT_TOAST_SUCCESS, String::class.java).observe(this) { msg: String -> + XToastUtils.success(msg) + } + LiveEventBus.get(EVENT_TOAST_INFO, String::class.java).observe(this) { msg: String -> + XToastUtils.info(msg) + } + LiveEventBus.get(EVENT_TOAST_WARNING, String::class.java).observe(this) { msg: String -> + XToastUtils.warning(msg, 10000) + } } /** 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 2ac168e4..74612605 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 @@ -1,7 +1,13 @@ package com.idormy.sms.forwarder.database.dao import androidx.paging.PagingSource -import androidx.room.* +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.Query +import androidx.room.RawQuery +import androidx.room.Transaction +import androidx.room.Update import androidx.sqlite.db.SupportSQLiteQuery import com.idormy.sms.forwarder.database.entity.Frpc import io.reactivex.Single @@ -31,6 +37,9 @@ interface FrpcDao { @Query("SELECT * FROM Frpc where autorun=1") fun getAutorun(): List + @Query("SELECT * FROM Frpc WHERE uid IN (:uids)") + fun getByUids(uids: List): List + @Query("SELECT * FROM Frpc ORDER BY time DESC") fun pagingSource(): PagingSource diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/task/TaskSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/TaskSetting.kt similarity index 89% rename from app/src/main/java/com/idormy/sms/forwarder/entity/task/TaskSetting.kt rename to app/src/main/java/com/idormy/sms/forwarder/entity/TaskSetting.kt index ffb82e11..4e682df1 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/task/TaskSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/TaskSetting.kt @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.entity.task +package com.idormy.sms.forwarder.entity import com.idormy.sms.forwarder.utils.task.TaskUtils import java.io.Serializable diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/action/FrpcSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/action/FrpcSetting.kt new file mode 100644 index 00000000..60ea3274 --- /dev/null +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/action/FrpcSetting.kt @@ -0,0 +1,9 @@ +package com.idormy.sms.forwarder.entity.action + +import java.io.Serializable + +data class FrpcSetting( + var description: String = "", //描述 + var action: String = "start", //动作: start=启动, stop=停止 + var uids: String = "", //指定配置UID,多个以半角逗号分隔 +) : Serializable diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/action/HttpServerSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/action/HttpServerSetting.kt new file mode 100644 index 00000000..66670eb5 --- /dev/null +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/action/HttpServerSetting.kt @@ -0,0 +1,10 @@ +package com.idormy.sms.forwarder.entity.action + +import java.io.Serializable + +data class HttpServerSetting( + var description: String = "", //描述 + var action: String = "start", //动作: start=启动, stop=停止 + var startUid: String = "", //手机号码 + var stopUid: String = "", //短信内容 +) : Serializable diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/task/SmsSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/action/SmsSetting.kt similarity index 81% rename from app/src/main/java/com/idormy/sms/forwarder/entity/task/SmsSetting.kt rename to app/src/main/java/com/idormy/sms/forwarder/entity/action/SmsSetting.kt index 2f652366..b203457e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/task/SmsSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/action/SmsSetting.kt @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.entity.task +package com.idormy.sms.forwarder.entity.action import java.io.Serializable diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/task/BatterySetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/BatterySetting.kt similarity index 95% rename from app/src/main/java/com/idormy/sms/forwarder/entity/task/BatterySetting.kt rename to app/src/main/java/com/idormy/sms/forwarder/entity/condition/BatterySetting.kt index 0880c65a..a2d91cf0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/task/BatterySetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/BatterySetting.kt @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.entity.task +package com.idormy.sms.forwarder.entity.condition import android.os.BatteryManager import com.idormy.sms.forwarder.R diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/task/ChargeSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/ChargeSetting.kt similarity index 96% rename from app/src/main/java/com/idormy/sms/forwarder/entity/task/ChargeSetting.kt rename to app/src/main/java/com/idormy/sms/forwarder/entity/condition/ChargeSetting.kt index 0732a3b3..c32ae04c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/task/ChargeSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/ChargeSetting.kt @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.entity.task +package com.idormy.sms.forwarder.entity.condition import android.os.BatteryManager import com.idormy.sms.forwarder.R diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/task/CronSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/CronSetting.kt similarity index 73% rename from app/src/main/java/com/idormy/sms/forwarder/entity/task/CronSetting.kt rename to app/src/main/java/com/idormy/sms/forwarder/entity/condition/CronSetting.kt index 077062ab..8fd8c8fe 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/task/CronSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/CronSetting.kt @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.entity.task +package com.idormy.sms.forwarder.entity.condition import java.io.Serializable diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/task/LocationSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/LocationSetting.kt similarity index 91% rename from app/src/main/java/com/idormy/sms/forwarder/entity/task/LocationSetting.kt rename to app/src/main/java/com/idormy/sms/forwarder/entity/condition/LocationSetting.kt index 08d08cd6..784c15df 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/task/LocationSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/LocationSetting.kt @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.entity.task +package com.idormy.sms.forwarder.entity.condition import com.idormy.sms.forwarder.R import java.io.Serializable diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/task/LockScreenSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/LockScreenSetting.kt similarity index 94% rename from app/src/main/java/com/idormy/sms/forwarder/entity/task/LockScreenSetting.kt rename to app/src/main/java/com/idormy/sms/forwarder/entity/condition/LockScreenSetting.kt index 258ffdb3..25e7fc91 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/task/LockScreenSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/LockScreenSetting.kt @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.entity.task +package com.idormy.sms.forwarder.entity.condition import android.content.Intent import com.idormy.sms.forwarder.R diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/task/NetworkSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/NetworkSetting.kt similarity index 95% rename from app/src/main/java/com/idormy/sms/forwarder/entity/task/NetworkSetting.kt rename to app/src/main/java/com/idormy/sms/forwarder/entity/condition/NetworkSetting.kt index a538137f..f31d1879 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/task/NetworkSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/NetworkSetting.kt @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.entity.task +package com.idormy.sms.forwarder.entity.condition import com.idormy.sms.forwarder.R import com.xuexiang.xutil.resource.ResUtils.getString diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/task/SimSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/SimSetting.kt similarity index 92% rename from app/src/main/java/com/idormy/sms/forwarder/entity/task/SimSetting.kt rename to app/src/main/java/com/idormy/sms/forwarder/entity/condition/SimSetting.kt index 3b70ca98..593126ea 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/task/SimSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/SimSetting.kt @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.entity.task +package com.idormy.sms.forwarder.entity.condition import com.idormy.sms.forwarder.R import com.xuexiang.xutil.resource.ResUtils.getString diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt index 16a3563c..43b5a377 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt @@ -24,8 +24,8 @@ import com.idormy.sms.forwarder.database.entity.Task import com.idormy.sms.forwarder.database.viewmodel.BaseViewModelFactory import com.idormy.sms.forwarder.database.viewmodel.TaskViewModel import com.idormy.sms.forwarder.databinding.FragmentTasksEditBinding -import com.idormy.sms.forwarder.entity.task.CronSetting -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting +import com.idormy.sms.forwarder.entity.condition.CronSetting import com.idormy.sms.forwarder.service.LocationService import com.idormy.sms.forwarder.utils.* import com.idormy.sms.forwarder.utils.task.CronJobScheduler diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/FrpcFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/FrpcFragment.kt index 25f3f4f5..01b0a051 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/FrpcFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/FrpcFragment.kt @@ -9,9 +9,10 @@ import android.view.ViewGroup import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment -import com.idormy.sms.forwarder.databinding.FragmentTasksActionSendSmsBinding -import com.idormy.sms.forwarder.entity.task.CronSetting +import com.idormy.sms.forwarder.databinding.FragmentTasksActionFrpcBinding +import com.idormy.sms.forwarder.entity.action.FrpcSetting import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_ACTION +import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_ACTION import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_ACTION import com.idormy.sms.forwarder.utils.KEY_TEST_ACTION import com.idormy.sms.forwarder.utils.TASK_ACTION_FRPC @@ -26,7 +27,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar @Page(name = "Frpc") @Suppress("PrivatePropertyName") -class FrpcFragment : BaseFragment(), View.OnClickListener { +class FrpcFragment : BaseFragment(), View.OnClickListener { private val TAG: String = FrpcFragment::class.java.simpleName private var titleBar: TitleBar? = null @@ -36,7 +37,6 @@ class FrpcFragment : BaseFragment(), View.On @AutoWired(name = KEY_EVENT_DATA_ACTION) var eventData: String? = null - private var expression = "* * * * * ? *" private var description = "测试描述" override fun initArgs() { @@ -46,8 +46,8 @@ class FrpcFragment : BaseFragment(), View.On override fun viewBindingInflate( inflater: LayoutInflater, container: ViewGroup, - ): FragmentTasksActionSendSmsBinding { - return FragmentTasksActionSendSmsBinding.inflate(inflater, container, false) + ): FragmentTasksActionFrpcBinding { + return FragmentTasksActionFrpcBinding.inflate(inflater, container, false) } override fun initTitle(): TitleBar? { @@ -71,9 +71,26 @@ class FrpcFragment : BaseFragment(), View.On } }) + binding!!.rgFrpcState.setOnCheckedChangeListener { _, checkedId -> + when (checkedId) { + R.id.rb_start_server -> { + binding!!.layoutStartServer.visibility = View.VISIBLE + binding!!.layoutStopServer.visibility = View.GONE + } + + R.id.rb_stop_server -> { + binding!!.layoutStartServer.visibility = View.GONE + binding!!.layoutStopServer.visibility = View.VISIBLE + } + } + } + Log.d(TAG, "initViews eventData:$eventData") if (eventData != null) { - val settingVo = Gson().fromJson(eventData, CronSetting::class.java) + val settingVo = Gson().fromJson(eventData, FrpcSetting::class.java) + binding!!.etStartUid.setText(settingVo.uids) + binding!!.etStopUid.setText(settingVo.uids) + binding!!.rgFrpcState.check(if (settingVo.action == "start") R.id.rb_start_server else R.id.rb_stop_server) Log.d(TAG, "initViews settingVo:$settingVo") } } @@ -121,6 +138,7 @@ class FrpcFragment : BaseFragment(), View.On R.id.btn_save -> { val settingVo = checkSetting() val intent = Intent() + intent.putExtra(KEY_BACK_DESCRIPTION_ACTION, description) intent.putExtra(KEY_BACK_DATA_ACTION, Gson().toJson(settingVo)) setFragmentResult(TASK_ACTION_FRPC, intent) popToBack() @@ -135,7 +153,20 @@ class FrpcFragment : BaseFragment(), View.On //检查设置 @SuppressLint("SetTextI18n") - private fun checkSetting(): CronSetting { - return CronSetting(description, expression) + private fun checkSetting(): FrpcSetting { + val startUid = binding!!.etStartUid.text.toString().trim() + val stopUid = binding!!.etStopUid.text.toString().trim() + val action: String + val uids: String + if (binding!!.rgFrpcState.checkedRadioButtonId == R.id.rb_start_server) { + description = if (startUid == "") "启动全部自启动的Frpc" else "启动UID为${startUid}的Frpc" + action = "start" + uids = startUid + } else { + description = if (stopUid == "") "停止全部自启动的Frpc" else "停止UID为${stopUid}的Frpc" + action = "stop" + uids = stopUid + } + return FrpcSetting(description, action, uids) } } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/HttpServerFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/HttpServerFragment.kt index f5d300c6..79dbeb8a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/HttpServerFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/HttpServerFragment.kt @@ -10,7 +10,7 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksActionSendSmsBinding -import com.idormy.sms.forwarder.entity.task.CronSetting +import com.idormy.sms.forwarder.entity.condition.CronSetting import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_ACTION import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_ACTION import com.idormy.sms.forwarder.utils.KEY_TEST_ACTION diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SendSmsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SendSmsFragment.kt index 5f592fce..ba1e1929 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SendSmsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SendSmsFragment.kt @@ -18,7 +18,7 @@ import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksActionSendSmsBinding -import com.idormy.sms.forwarder.entity.task.SmsSetting +import com.idormy.sms.forwarder.entity.action.SmsSetting import com.idormy.sms.forwarder.server.model.ConfigData import com.idormy.sms.forwarder.utils.EVENT_KEY_PHONE_NUMBERS import com.idormy.sms.forwarder.utils.EVENT_KEY_SIM_SLOT diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/BatteryFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/BatteryFragment.kt index 40cae608..7b5f90bb 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/BatteryFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/BatteryFragment.kt @@ -11,7 +11,7 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksConditionBatteryBinding -import com.idormy.sms.forwarder.entity.task.BatterySetting +import com.idormy.sms.forwarder.entity.condition.BatterySetting import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ChargeFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ChargeFragment.kt index 26aaeef1..0240e61c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ChargeFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ChargeFragment.kt @@ -10,7 +10,7 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksConditionChargeBinding -import com.idormy.sms.forwarder.entity.task.ChargeSetting +import com.idormy.sms.forwarder.entity.condition.ChargeSetting import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/CronFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/CronFragment.kt index 1d759126..e6f6cc7f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/CronFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/CronFragment.kt @@ -14,7 +14,7 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksConditionCronBinding -import com.idormy.sms.forwarder.entity.task.CronSetting +import com.idormy.sms.forwarder.entity.condition.CronSetting import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LeaveAddressFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LeaveAddressFragment.kt index b8c86ee9..ddc25e75 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LeaveAddressFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LeaveAddressFragment.kt @@ -13,7 +13,7 @@ import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksConditionLeaveAddressBinding -import com.idormy.sms.forwarder.entity.task.LocationSetting +import com.idormy.sms.forwarder.entity.condition.LocationSetting import com.idormy.sms.forwarder.service.LocationService import com.idormy.sms.forwarder.utils.HttpServerUtils import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LockScreenFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LockScreenFragment.kt index d7c68be6..53b97144 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LockScreenFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LockScreenFragment.kt @@ -10,7 +10,7 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksConditionLockScreenBinding -import com.idormy.sms.forwarder.entity.task.LockScreenSetting +import com.idormy.sms.forwarder.entity.condition.LockScreenSetting import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/NetworkFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/NetworkFragment.kt index 2bd9d2fd..3eac051f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/NetworkFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/NetworkFragment.kt @@ -12,7 +12,7 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksConditionNetworkBinding -import com.idormy.sms.forwarder.entity.task.NetworkSetting +import com.idormy.sms.forwarder.entity.condition.NetworkSetting import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/SimFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/SimFragment.kt index babc1ffc..e6b6e085 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/SimFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/SimFragment.kt @@ -10,7 +10,7 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksConditionSimBinding -import com.idormy.sms.forwarder.entity.task.SimSetting +import com.idormy.sms.forwarder.entity.condition.SimSetting import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ToAddressFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ToAddressFragment.kt index 5859dfd8..af598400 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ToAddressFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ToAddressFragment.kt @@ -13,7 +13,7 @@ import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.databinding.FragmentTasksConditionToAddressBinding -import com.idormy.sms.forwarder.entity.task.LocationSetting +import com.idormy.sms.forwarder.entity.condition.LocationSetting import com.idormy.sms.forwarder.service.LocationService import com.idormy.sms.forwarder.utils.HttpServerUtils import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt index 619972d1..4a3e7670 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt @@ -355,6 +355,8 @@ const val KEY_URL = "key_url" //吐司监听 const val EVENT_TOAST_SUCCESS = "key_toast_success" const val EVENT_TOAST_ERROR = "key_toast_error" +const val EVENT_TOAST_INFO = "key_toast_info" +const val EVENT_TOAST_WARNING = "key_toast_warning" //主页监听时间 const val EVENT_UPDATE_LOGS_TYPE = "key_logs_type" diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SmsCommandUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/SmsCommandUtils.kt index ed4d5041..4cc1317a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SmsCommandUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/SmsCommandUtils.kt @@ -49,39 +49,20 @@ class SmsCommandUtils { return false } - if (TextUtils.isEmpty(param)) { - GlobalScope.async(Dispatchers.IO) { - val frpcList = AppDatabase.getInstance(App.context).frpcDao().getAutorun() - - if (frpcList.isEmpty()) { - Log.d(TAG, "没有自启动的Frpc") - return@async - } - - for (frpc in frpcList) { - if (action == "start") { - if (!Frpclib.isRunning(frpc.uid)) { - val error = Frpclib.runContent(frpc.uid, frpc.config) - if (!TextUtils.isEmpty(error)) { - Log.e(TAG, error) - } - } - } else if (action == "stop") { - if (Frpclib.isRunning(frpc.uid)) { - Frpclib.close(frpc.uid) - } - } - } + GlobalScope.async(Dispatchers.IO) { + val frpcList = if (param.isEmpty()) { + AppDatabase.getInstance(App.context).frpcDao().getAutorun() + } else { + val uids = param.split(",") + AppDatabase.getInstance(App.context).frpcDao().getByUids(uids) } - } else { - GlobalScope.async(Dispatchers.IO) { - val frpc = AppDatabase.getInstance(App.context).frpcDao().getOne(param) - if (frpc.uid.isEmpty()) { - Log.d(TAG, "没有找到指定的Frpc") - return@async - } + if (frpcList.isEmpty()) { + Log.d(TAG, "没有需要操作的Frpc") + return@async + } + for (frpc in frpcList) { if (action == "start") { if (!Frpclib.isRunning(frpc.uid)) { val error = Frpclib.runContent(frpc.uid, frpc.config) diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/task/ConditionUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/task/ConditionUtils.kt index 6d8b4327..1cf1bb72 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/task/ConditionUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/task/ConditionUtils.kt @@ -3,14 +3,14 @@ package com.idormy.sms.forwarder.utils.task import android.os.BatteryManager import android.util.Log import com.google.gson.Gson -import com.idormy.sms.forwarder.entity.task.BatterySetting -import com.idormy.sms.forwarder.entity.task.ChargeSetting -import com.idormy.sms.forwarder.entity.task.CronSetting -import com.idormy.sms.forwarder.entity.task.LocationSetting -import com.idormy.sms.forwarder.entity.task.LockScreenSetting -import com.idormy.sms.forwarder.entity.task.NetworkSetting -import com.idormy.sms.forwarder.entity.task.SimSetting -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting +import com.idormy.sms.forwarder.entity.condition.BatterySetting +import com.idormy.sms.forwarder.entity.condition.ChargeSetting +import com.idormy.sms.forwarder.entity.condition.CronSetting +import com.idormy.sms.forwarder.entity.condition.LocationSetting +import com.idormy.sms.forwarder.entity.condition.LockScreenSetting +import com.idormy.sms.forwarder.entity.condition.NetworkSetting +import com.idormy.sms.forwarder.entity.condition.SimSetting import com.idormy.sms.forwarder.utils.DELAY_TIME_AFTER_SIM_READY import com.idormy.sms.forwarder.utils.TASK_CONDITION_BATTERY import com.idormy.sms.forwarder.utils.TASK_CONDITION_CHARGE diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/ActionWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/ActionWorker.kt index c7170d15..1efa6583 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/workers/ActionWorker.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/workers/ActionWorker.kt @@ -2,6 +2,7 @@ package com.idormy.sms.forwarder.workers import android.Manifest import android.content.Context +import android.content.Intent import android.content.pm.PackageManager import android.util.Log import androidx.core.app.ActivityCompat @@ -10,26 +11,40 @@ import androidx.work.WorkerParameters import com.google.gson.Gson import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.R +import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo -import com.idormy.sms.forwarder.entity.task.SmsSetting -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting +import com.idormy.sms.forwarder.entity.action.FrpcSetting +import com.idormy.sms.forwarder.entity.action.HttpServerSetting +import com.idormy.sms.forwarder.entity.action.SmsSetting +import com.idormy.sms.forwarder.service.HttpServerService +import com.idormy.sms.forwarder.utils.EVENT_TOAST_ERROR +import com.idormy.sms.forwarder.utils.EVENT_TOAST_INFO +import com.idormy.sms.forwarder.utils.EVENT_TOAST_SUCCESS +import com.idormy.sms.forwarder.utils.EVENT_TOAST_WARNING import com.idormy.sms.forwarder.utils.PhoneUtils import com.idormy.sms.forwarder.utils.SendUtils +import com.idormy.sms.forwarder.utils.TASK_ACTION_FRPC +import com.idormy.sms.forwarder.utils.TASK_ACTION_HTTPSERVER import com.idormy.sms.forwarder.utils.TASK_ACTION_NOTIFICATION import com.idormy.sms.forwarder.utils.TASK_ACTION_SENDSMS import com.idormy.sms.forwarder.utils.TaskWorker +import com.jeremyliao.liveeventbus.LiveEventBus +import com.xuexiang.xrouter.utils.TextUtils import com.xuexiang.xui.utils.ResUtils -import com.xuexiang.xutil.XUtil +import com.xuexiang.xutil.file.FileUtils +import frpclib.Frpclib //执行每个task具体动作任务 @Suppress("PrivatePropertyName", "DEPRECATION") class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker(context, params) { private val TAG: String = ActionWorker::class.java.simpleName + private var taskId = -1L override suspend fun doWork(): Result { - val taskId = inputData.getLong(TaskWorker.taskId, -1L) + taskId = inputData.getLong(TaskWorker.taskId, -1L) val taskActionsJson = inputData.getString(TaskWorker.taskActions) val msgInfoJson = inputData.getString(TaskWorker.msgInfo) Log.d(TAG, "taskId: $taskId, taskActionsJson: $taskActionsJson, msgInfoJson: $msgInfoJson") @@ -40,13 +55,13 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker val actionList = Gson().fromJson(taskActionsJson, Array::class.java).toMutableList() if (actionList.isEmpty()) { - Log.d(TAG, "任务$taskId:actionList is empty") + writeLog("actionList is empty") return Result.failure() } val msgInfo = Gson().fromJson(msgInfoJson, MsgInfo::class.java) if (msgInfo == null) { - Log.d(TAG, "任务$taskId:msgInfo is null") + writeLog("msgInfo is null") return Result.failure() } @@ -57,7 +72,7 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker TASK_ACTION_SENDSMS -> { val smsSetting = Gson().fromJson(action.setting, SmsSetting::class.java) if (smsSetting == null) { - Log.d(TAG, "任务$taskId:smsSetting is null") + writeLog("smsSetting is null") continue } //获取卡槽信息 @@ -71,14 +86,14 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker //TODO:取不到卡槽信息时,采用默认卡槽发送 val mSubscriptionId: Int = App.SimInfoList[simSlotIndex]?.mSubscriptionId ?: -1 - val msg = if (ActivityCompat.checkSelfPermission(XUtil.getContext(), Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { + val msg = if (ActivityCompat.checkSelfPermission(App.context, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { ResUtils.getString(R.string.no_sms_sending_permission) } else { PhoneUtils.sendSms(mSubscriptionId, smsSetting.phoneNumbers, smsSetting.msgContent) successNum++ } - Log.d(TAG, "任务$taskId:send sms result: $msg") + writeLog("send sms result: $msg") } TASK_ACTION_NOTIFICATION -> { @@ -88,17 +103,107 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker successNum++ } + TASK_ACTION_FRPC -> { + if (!FileUtils.isFileExists(App.context.filesDir?.absolutePath + "/libs/libgojni.so")) { + writeLog("还未下载Frpc库") + continue + } + val frpcSetting = Gson().fromJson(action.setting, FrpcSetting::class.java) + if (frpcSetting == null) { + writeLog("frpcSetting is null") + continue + } + + val frpcList = if (frpcSetting.uids.isEmpty()) { + AppDatabase.getInstance(App.context).frpcDao().getAutorun() + } else { + val uids = frpcSetting.uids.split(",") + AppDatabase.getInstance(App.context).frpcDao().getByUids(uids) + } + + if (frpcList.isEmpty()) { + writeLog("没有需要操作的Frpc") + continue + } + + for (frpc in frpcList) { + if (frpcSetting.action == "start") { + if (!Frpclib.isRunning(frpc.uid)) { + val error = Frpclib.runContent(frpc.uid, frpc.config) + if (!TextUtils.isEmpty(error)) { + Log.e(TAG, error) + } + } + } else if (frpcSetting.action == "stop") { + if (Frpclib.isRunning(frpc.uid)) { + Frpclib.close(frpc.uid) + } + } + } + } + + TASK_ACTION_HTTPSERVER -> { + val httpServerSetting = Gson().fromJson(action.setting, HttpServerSetting::class.java) + if (httpServerSetting == null) { + writeLog("httpServerSetting is null") + continue + } + Intent(App.context, HttpServerService::class.java).also { + if (httpServerSetting.action == "start") { + App.context.startService(it) + } else if (httpServerSetting.action == "stop") { + App.context.stopService(it) + } + } + } + else -> { - Log.d(TAG, "任务$taskId:action.type is ${action.type}") + writeLog("action.type is ${action.type}") } } } catch (e: Exception) { e.printStackTrace() - Log.d(TAG, "任务$taskId:action.type is ${action.type}, exception: ${e.message}") + writeLog("action.type is ${action.type}, exception: ${e.message}") } } return if (successNum == actionList.size) Result.success() else Result.failure() } + private fun writeLog(msg: String, level: String = "DEBUG") { + val key = when (level) { + "INFO" -> { + Log.i(TAG, "TASK-$taskId:$msg") + EVENT_TOAST_INFO + } + + "WARN" -> { + Log.w(TAG, "TASK-$taskId:$msg") + EVENT_TOAST_WARNING + } + + "ERROR" -> { + Log.e(TAG, "TASK-$taskId:$msg") + EVENT_TOAST_ERROR + } + + "SUCCESS" -> { + Log.d(TAG, "TASK-$taskId:$msg") + EVENT_TOAST_SUCCESS + } + + else -> { + Log.d(TAG, "TASK-$taskId:$msg") + "" + } + } + + if (taskId == 0L && key.isNotEmpty()) { + LiveEventBus.get(key, String::class.java).post(msg) + return + } + + //TODO: 写入日志 + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/BatteryWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/BatteryWorker.kt index 71e85779..1a6cd8a0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/workers/BatteryWorker.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/workers/BatteryWorker.kt @@ -11,9 +11,9 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.entity.MsgInfo -import com.idormy.sms.forwarder.entity.task.BatterySetting -import com.idormy.sms.forwarder.entity.task.ChargeSetting -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting +import com.idormy.sms.forwarder.entity.condition.BatterySetting +import com.idormy.sms.forwarder.entity.condition.ChargeSetting import com.idormy.sms.forwarder.utils.TASK_CONDITION_BATTERY import com.idormy.sms.forwarder.utils.TASK_CONDITION_CHARGE import com.idormy.sms.forwarder.utils.TaskWorker diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/CronWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/CronWorker.kt index 04c5f95b..aa5df16d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/workers/CronWorker.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/workers/CronWorker.kt @@ -11,8 +11,8 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.entity.MsgInfo -import com.idormy.sms.forwarder.entity.task.CronSetting -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting +import com.idormy.sms.forwarder.entity.condition.CronSetting import com.idormy.sms.forwarder.utils.TaskWorker import com.idormy.sms.forwarder.utils.task.ConditionUtils import com.idormy.sms.forwarder.utils.task.CronJobScheduler diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/LocationWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/LocationWorker.kt index ba47513f..4610efcf 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/workers/LocationWorker.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/workers/LocationWorker.kt @@ -13,8 +13,8 @@ import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.entity.LocationInfo import com.idormy.sms.forwarder.entity.MsgInfo -import com.idormy.sms.forwarder.entity.task.LocationSetting -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting +import com.idormy.sms.forwarder.entity.condition.LocationSetting import com.idormy.sms.forwarder.utils.TASK_CONDITION_LEAVE_ADDRESS import com.idormy.sms.forwarder.utils.TASK_CONDITION_TO_ADDRESS import com.idormy.sms.forwarder.utils.TaskWorker diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/LockScreenWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/LockScreenWorker.kt index 35175bfa..6d7754f3 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/workers/LockScreenWorker.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/workers/LockScreenWorker.kt @@ -12,8 +12,8 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.entity.MsgInfo -import com.idormy.sms.forwarder.entity.task.LockScreenSetting -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting +import com.idormy.sms.forwarder.entity.condition.LockScreenSetting import com.idormy.sms.forwarder.utils.TaskWorker import com.idormy.sms.forwarder.utils.task.ConditionUtils import java.util.Date diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/NetworkWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/NetworkWorker.kt index b52f58db..87da4c93 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/workers/NetworkWorker.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/workers/NetworkWorker.kt @@ -12,8 +12,8 @@ import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.entity.MsgInfo -import com.idormy.sms.forwarder.entity.task.NetworkSetting -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting +import com.idormy.sms.forwarder.entity.condition.NetworkSetting import com.idormy.sms.forwarder.utils.PhoneUtils import com.idormy.sms.forwarder.utils.TaskWorker import com.idormy.sms.forwarder.utils.task.ConditionUtils diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/SimWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/SimWorker.kt index b47d944a..d13681b1 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/workers/SimWorker.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/workers/SimWorker.kt @@ -13,8 +13,8 @@ import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.entity.MsgInfo -import com.idormy.sms.forwarder.entity.task.SimSetting -import com.idormy.sms.forwarder.entity.task.TaskSetting +import com.idormy.sms.forwarder.entity.TaskSetting +import com.idormy.sms.forwarder.entity.condition.SimSetting import com.idormy.sms.forwarder.utils.PhoneUtils import com.idormy.sms.forwarder.utils.TaskWorker import com.idormy.sms.forwarder.utils.task.ConditionUtils diff --git a/app/src/main/res/layout/fragment_tasks_action_frpc.xml b/app/src/main/res/layout/fragment_tasks_action_frpc.xml new file mode 100644 index 00000000..2c71cf92 --- /dev/null +++ b/app/src/main/res/layout/fragment_tasks_action_frpc.xml @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 20d4f4e0..a3799a88 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1147,6 +1147,7 @@ Send Sms Notification Frpc Setting + Control the start/stop of FRPC. Server Setting Second @@ -1252,4 +1253,7 @@ Current Address: %s Location failed. Please try again later. , %s meters from the center. + + Specified Uid + Enter FRPC config UIDs, separate with commas. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2f5740ed..28b8f6b5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1148,6 +1148,7 @@ 发送短信 通道推送 Frpc设置 + 控制内网穿透·FRPC的启动/停止 HttpServer设置 @@ -1253,4 +1254,7 @@ 当前地址:%s 定位失败,请稍后重试 , 当前距离中心%s米 + + 指定配置 + 填写frpc的uid,多个以半角逗号分隔