mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-02 17:07:41 +08:00
新增:bark
发送通道允许自定义自动复制copy
字段 #538
This commit is contained in:
parent
3a341f6c4e
commit
b05d856f26
@ -27,4 +27,6 @@ data class BarkSetting(
|
||||
val iv: String = "",
|
||||
//持续提醒
|
||||
val call: String = "",
|
||||
) : Serializable
|
||||
//自动复制模板
|
||||
val autoCopy: String = "",
|
||||
) : Serializable
|
||||
|
@ -183,6 +183,10 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
|
||||
binding!!.btInsertExtra.setOnClickListener(this)
|
||||
binding!!.btInsertTime.setOnClickListener(this)
|
||||
binding!!.btInsertDeviceName.setOnClickListener(this)
|
||||
binding!!.btInsertSenderApp.setOnClickListener(this)
|
||||
binding!!.btInsertUid.setOnClickListener(this)
|
||||
binding!!.btInsertTitleApp.setOnClickListener(this)
|
||||
binding!!.btInsertContentApp.setOnClickListener(this)
|
||||
binding!!.btnTest.setOnClickListener(this)
|
||||
binding!!.btnDel.setOnClickListener(this)
|
||||
binding!!.btnSave.setOnClickListener(this)
|
||||
@ -193,6 +197,7 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
|
||||
override fun onClick(v: View) {
|
||||
try {
|
||||
val etTitleTemplate: EditText = binding!!.etTitleTemplate
|
||||
val etAutoCopyTemplate: EditText = binding!!.etAutoCopyTemplate
|
||||
when (v.id) {
|
||||
R.id.bt_insert_sender -> {
|
||||
CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from))
|
||||
@ -214,6 +219,26 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
|
||||
return
|
||||
}
|
||||
|
||||
R.id.bt_insert_sender_app -> {
|
||||
CommonUtils.insertOrReplaceText2Cursor(etAutoCopyTemplate, getString(R.string.tag_package_name))
|
||||
return
|
||||
}
|
||||
|
||||
R.id.bt_insert_uid -> {
|
||||
CommonUtils.insertOrReplaceText2Cursor(etAutoCopyTemplate, getString(R.string.tag_uid))
|
||||
return
|
||||
}
|
||||
|
||||
R.id.bt_insert_title_app -> {
|
||||
CommonUtils.insertOrReplaceText2Cursor(etAutoCopyTemplate, getString(R.string.tag_title))
|
||||
return
|
||||
}
|
||||
|
||||
R.id.bt_insert_content_app -> {
|
||||
CommonUtils.insertOrReplaceText2Cursor(etAutoCopyTemplate, getString(R.string.tag_msg))
|
||||
return
|
||||
}
|
||||
|
||||
R.id.btn_test -> {
|
||||
mCountDownHelper?.start()
|
||||
Thread {
|
||||
@ -290,6 +315,7 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
|
||||
throw Exception(getString(R.string.invalid_bark_url))
|
||||
}
|
||||
val title = binding!!.etTitleTemplate.text.toString().trim()
|
||||
val autoCopy = binding!!.etAutoCopyTemplate.text.toString().trim()
|
||||
val key = binding!!.etEncryptionKey.text.toString().trim()
|
||||
val iv = binding!!.etEncryptionIv.text.toString().trim()
|
||||
if (transformation.startsWith("AES128") && key.length != 16) {
|
||||
@ -303,7 +329,7 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
|
||||
throw Exception(getString(R.string.bark_encryption_key_error4))
|
||||
}
|
||||
|
||||
return BarkSetting(server, group, icon, sound, badge, url, barkLevel, title, transformation, key, iv, call)
|
||||
return BarkSetting(server, group, icon, sound, badge, url, barkLevel, title, transformation, key, iv, call, autoCopy)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
@ -311,4 +337,4 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -70,15 +70,20 @@ class BarkUtils {
|
||||
if (!TextUtils.isEmpty(setting.url)) msgMap["url"] = setting.url
|
||||
if (!TextUtils.isEmpty(setting.call)) msgMap["call"] = setting.call
|
||||
|
||||
//自动复制验证码
|
||||
val pattern = Regex("(?<!回复)(验证码|授权码|校验码|检验码|确认码|激活码|动态码|安全码|(验证)?代码|校验代码|检验代码|激活代码|确认代码|动态代码|安全代码|登入码|认证码|识别码|短信口令|动态密码|交易码|上网密码|动态口令|随机码|驗證碼|授權碼|校驗碼|檢驗碼|確認碼|激活碼|動態碼|(驗證)?代碼|校驗代碼|檢驗代碼|確認代碼|激活代碼|動態代碼|登入碼|認證碼|識別碼|一次性密码|[Cc][Oo][Dd][Ee]|[Vv]erification)")
|
||||
if (pattern.containsMatchIn(content)) {
|
||||
var code = content.replace("(.*)((代|授权|验证|动态|校验)码|[【\\[].*[】\\]]|[Cc][Oo][Dd][Ee]|[Vv]erification\\s?([Cc]ode)?)\\s?(G-|<#>)?([::\\s是为]|[Ii][Ss]){0,3}[\\((\\[【{「]?(([0-9\\s]{4,7})|([\\dA-Za-z]{5,6})(?!([Vv]erification)?([Cc][Oo][Dd][Ee])|:))[」}】\\])\\)]?(?=([^0-9a-zA-Z]|\$))(.*)".toRegex(), "$7").trim()
|
||||
code = code.replace("\\D*[\\((\\[【{「]?([0-9]{3}\\s?[0-9]{1,3})[」}】\\])\\)]?(?=.*((代|授权|验证|动态|校验)码|[【\\[].*[】\\]]|[Cc][Oo][Dd][Ee]|[Vv]erification\\s?([Cc]ode)?))(.*)".toRegex(), "$1").trim()
|
||||
if (code.isNotEmpty()) {
|
||||
msgMap["copy"] = code
|
||||
msgMap["autoCopy"] = 1
|
||||
//自动复制
|
||||
if (TextUtils.isEmpty(setting.autoCopy)) {
|
||||
val pattern = Regex("(?<!回复)(验证码|授权码|校验码|检验码|确认码|激活码|动态码|安全码|(验证)?代码|校验代码|检验代码|激活代码|确认代码|动态代码|安全代码|登入码|认证码|识别码|短信口令|动态密码|交易码|上网密码|动态口令|随机码|驗證碼|授權碼|校驗碼|檢驗碼|確認碼|激活碼|動態碼|(驗證)?代碼|校驗代碼|檢驗代碼|確認代碼|激活代碼|動態代碼|登入碼|認證碼|識別碼|一次性密码|[Cc][Oo][Dd][Ee]|[Vv]erification)")
|
||||
if (pattern.containsMatchIn(content)) {
|
||||
var code = content.replace("(.*)((代|授权|验证|动态|校验)码|[【\\[].*[】\\]]|[Cc][Oo][Dd][Ee]|[Vv]erification\\s?([Cc]ode)?)\\s?(G-|<#>)?([::\\s是为]|[Ii][Ss]){0,3}[\\((\\[【{「]?(([0-9\\s]{4,7})|([\\dA-Za-z]{5,6})(?!([Vv]erification)?([Cc][Oo][Dd][Ee])|:))[」}】\\])\\)]?(?=([^0-9a-zA-Z]|\$))(.*)".toRegex(), "$7").trim()
|
||||
code = code.replace("\\D*[\\((\\[【{「]?([0-9]{3}\\s?[0-9]{1,3})[」}】\\])\\)]?(?=.*((代|授权|验证|动态|校验)码|[【\\[].*[】\\]]|[Cc][Oo][Dd][Ee]|[Vv]erification\\s?([Cc]ode)?))(.*)".toRegex(), "$1").trim()
|
||||
if (code.isNotEmpty()) {
|
||||
msgMap["copy"] = code
|
||||
msgMap["autoCopy"] = 1
|
||||
}
|
||||
}
|
||||
} else {
|
||||
msgMap["copy"] = msgInfo.getContentForSend(setting.autoCopy)
|
||||
msgMap["autoCopy"] = 1
|
||||
}
|
||||
|
||||
val requestMsg: String = Gson().toJson(msgMap)
|
||||
@ -162,4 +167,4 @@ class BarkUtils {
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -325,6 +325,75 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_auto_copy_template"
|
||||
style="@style/BarStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/auto_copy"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:text="@string/custom_template_tips"
|
||||
android:textSize="@dimen/text_size_mini"
|
||||
tools:ignore="SmallSp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.xuexiang.xui.widget.edittext.materialedittext.MaterialEditText
|
||||
android:id="@+id/et_auto_copy_template"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
app:met_clearButton="true" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.xuexiang.xui.widget.button.shadowbutton.RippleShadowShadowButton
|
||||
android:id="@+id/bt_insert_title_app"
|
||||
style="@style/insertButtonStyle"
|
||||
android:layout_marginStart="5dp"
|
||||
android:text="@string/insert_title_app" />
|
||||
|
||||
<com.xuexiang.xui.widget.button.shadowbutton.RippleShadowShadowButton
|
||||
android:id="@+id/bt_insert_content_app"
|
||||
style="@style/insertButtonStyle"
|
||||
android:layout_marginStart="5dp"
|
||||
android:text="@string/insert_content_app" />
|
||||
|
||||
<com.xuexiang.xui.widget.button.shadowbutton.RippleShadowShadowButton
|
||||
android:id="@+id/bt_insert_sender_app"
|
||||
style="@style/insertButtonStyle"
|
||||
android:layout_marginStart="5dp"
|
||||
android:text="@string/insert_sender_app" />
|
||||
|
||||
<com.xuexiang.xui.widget.button.shadowbutton.RippleShadowShadowButton
|
||||
android:id="@+id/bt_insert_uid"
|
||||
style="@style/insertButtonStyle"
|
||||
android:layout_marginStart="5dp"
|
||||
android:text="@string/insert_uid" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
style="@style/BarStyle"
|
||||
android:layout_width="match_parent"
|
||||
@ -427,4 +496,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
@ -411,6 +411,7 @@
|
||||
<string name="GotifyWebServer">WebServer</string>
|
||||
<string name="GotifyWebServerTips"><![CDATA[eg.: https://push.ppps.cn/message?token=<apptoken>]]></string>
|
||||
<string name="title_template">Title Template</string>
|
||||
<string name="auto_copy">Auto Copy</string>
|
||||
<string name="priority">Priority(1 – 9)</string>
|
||||
<string name="dingtalk_robot">Dingtalk Group Bot</string>
|
||||
<string name="dingtalk_inner_robot">Dingtalk Inner Bot</string>
|
||||
|
@ -412,6 +412,7 @@
|
||||
<string name="GotifyWebServer">WebServer</string>
|
||||
<string name="GotifyWebServerTips"><![CDATA[例:https://push.ppps.cn/message?token=<apptoken>]]></string>
|
||||
<string name="title_template">标题模板</string>
|
||||
<string name="auto_copy">自动复制</string>
|
||||
<string name="priority">优先级(1 – 9)</string>
|
||||
<string name="dingtalk_robot">钉钉群机器人</string>
|
||||
<string name="dingtalk_inner_robot">钉钉企业机器人</string>
|
||||
|
@ -405,6 +405,7 @@
|
||||
<string name="GotifyWebServer">WebServer</string>
|
||||
<string name="GotifyWebServerTips"><![CDATA[例:https://push.ppps.cn/message?token=<apptoken>]]></string>
|
||||
<string name="title_template">標題模板</string>
|
||||
<string name="auto_copy">自動複製</string>
|
||||
<string name="priority">優先級(1 – 9)</string>
|
||||
<string name="dingtalk_robot">釘釘群機器人</string>
|
||||
<string name="dingtalk_inner_robot">釘釘企業機器人</string>
|
||||
|
@ -439,6 +439,7 @@
|
||||
<string name="GotifyWebServer">WebServer</string>
|
||||
<string name="GotifyWebServerTips"><![CDATA[例:https://push.ppps.cn/message?token=<apptoken>]]></string>
|
||||
<string name="title_template">标题模板</string>
|
||||
<string name="auto_copy">自动复制</string>
|
||||
<string name="priority">优先级(1 – 9)</string>
|
||||
<string name="dingtalk_robot">钉钉群机器人</string>
|
||||
<string name="dingtalk_inner_robot">钉钉企业机器人</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user