新增:bark发送通道允许自定义自动复制copy字段 #538

This commit is contained in:
pppscn 2024-11-14 19:15:24 +08:00
parent 3a341f6c4e
commit b05d856f26
8 changed files with 119 additions and 13 deletions

View File

@ -27,4 +27,6 @@ data class BarkSetting(
val iv: String = "", val iv: String = "",
//持续提醒 //持续提醒
val call: String = "", val call: String = "",
//自动复制模板
val autoCopy: String = "",
) : Serializable ) : Serializable

View File

@ -183,6 +183,10 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
binding!!.btInsertExtra.setOnClickListener(this) binding!!.btInsertExtra.setOnClickListener(this)
binding!!.btInsertTime.setOnClickListener(this) binding!!.btInsertTime.setOnClickListener(this)
binding!!.btInsertDeviceName.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!!.btnTest.setOnClickListener(this)
binding!!.btnDel.setOnClickListener(this) binding!!.btnDel.setOnClickListener(this)
binding!!.btnSave.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this)
@ -193,6 +197,7 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
override fun onClick(v: View) { override fun onClick(v: View) {
try { try {
val etTitleTemplate: EditText = binding!!.etTitleTemplate val etTitleTemplate: EditText = binding!!.etTitleTemplate
val etAutoCopyTemplate: EditText = binding!!.etAutoCopyTemplate
when (v.id) { when (v.id) {
R.id.bt_insert_sender -> { R.id.bt_insert_sender -> {
CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from)) CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from))
@ -214,6 +219,26 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
return 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 -> { R.id.btn_test -> {
mCountDownHelper?.start() mCountDownHelper?.start()
Thread { Thread {
@ -290,6 +315,7 @@ class BarkFragment : BaseFragment<FragmentSendersBarkBinding?>(), View.OnClickLi
throw Exception(getString(R.string.invalid_bark_url)) throw Exception(getString(R.string.invalid_bark_url))
} }
val title = binding!!.etTitleTemplate.text.toString().trim() val title = binding!!.etTitleTemplate.text.toString().trim()
val autoCopy = binding!!.etAutoCopyTemplate.text.toString().trim()
val key = binding!!.etEncryptionKey.text.toString().trim() val key = binding!!.etEncryptionKey.text.toString().trim()
val iv = binding!!.etEncryptionIv.text.toString().trim() val iv = binding!!.etEncryptionIv.text.toString().trim()
if (transformation.startsWith("AES128") && key.length != 16) { 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)) 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() { override fun onDestroyView() {

View File

@ -70,7 +70,8 @@ class BarkUtils {
if (!TextUtils.isEmpty(setting.url)) msgMap["url"] = setting.url if (!TextUtils.isEmpty(setting.url)) msgMap["url"] = setting.url
if (!TextUtils.isEmpty(setting.call)) msgMap["call"] = setting.call if (!TextUtils.isEmpty(setting.call)) msgMap["call"] = setting.call
//自动复制验证码 //自动复制
if (TextUtils.isEmpty(setting.autoCopy)) {
val pattern = Regex("(?<!回复)(验证码|授权码|校验码|检验码|确认码|激活码|动态码|安全码|(验证)?代码|校验代码|检验代码|激活代码|确认代码|动态代码|安全代码|登入码|认证码|识别码|短信口令|动态密码|交易码|上网密码|动态口令|随机码|驗證碼|授權碼|校驗碼|檢驗碼|確認碼|激活碼|動態碼|(驗證)?代碼|校驗代碼|檢驗代碼|確認代碼|激活代碼|動態代碼|登入碼|認證碼|識別碼|一次性密码|[Cc][Oo][Dd][Ee]|[Vv]erification)") val pattern = Regex("(?<!回复)(验证码|授权码|校验码|检验码|确认码|激活码|动态码|安全码|(验证)?代码|校验代码|检验代码|激活代码|确认代码|动态代码|安全代码|登入码|认证码|识别码|短信口令|动态密码|交易码|上网密码|动态口令|随机码|驗證碼|授權碼|校驗碼|檢驗碼|確認碼|激活碼|動態碼|(驗證)?代碼|校驗代碼|檢驗代碼|確認代碼|激活代碼|動態代碼|登入碼|認證碼|識別碼|一次性密码|[Cc][Oo][Dd][Ee]|[Vv]erification)")
if (pattern.containsMatchIn(content)) { 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() 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()
@ -80,6 +81,10 @@ class BarkUtils {
msgMap["autoCopy"] = 1 msgMap["autoCopy"] = 1
} }
} }
} else {
msgMap["copy"] = msgInfo.getContentForSend(setting.autoCopy)
msgMap["autoCopy"] = 1
}
val requestMsg: String = Gson().toJson(msgMap) val requestMsg: String = Gson().toJson(msgMap)
Log.i(TAG, "requestMsg:$requestMsg") Log.i(TAG, "requestMsg:$requestMsg")

View File

@ -325,6 +325,75 @@
</LinearLayout> </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 <LinearLayout
style="@style/BarStyle" style="@style/BarStyle"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -411,6 +411,7 @@
<string name="GotifyWebServer">WebServer</string> <string name="GotifyWebServer">WebServer</string>
<string name="GotifyWebServerTips"><![CDATA[eg.: https://push.ppps.cn/message?token=<apptoken>]]></string> <string name="GotifyWebServerTips"><![CDATA[eg.: https://push.ppps.cn/message?token=<apptoken>]]></string>
<string name="title_template">Title Template</string> <string name="title_template">Title Template</string>
<string name="auto_copy">Auto Copy</string>
<string name="priority">Priority1 9</string> <string name="priority">Priority1 9</string>
<string name="dingtalk_robot">Dingtalk Group Bot</string> <string name="dingtalk_robot">Dingtalk Group Bot</string>
<string name="dingtalk_inner_robot">Dingtalk Inner Bot</string> <string name="dingtalk_inner_robot">Dingtalk Inner Bot</string>

View File

@ -412,6 +412,7 @@
<string name="GotifyWebServer">WebServer</string> <string name="GotifyWebServer">WebServer</string>
<string name="GotifyWebServerTips"><![CDATA[例https://push.ppps.cn/message?token=<apptoken>]]></string> <string name="GotifyWebServerTips"><![CDATA[例https://push.ppps.cn/message?token=<apptoken>]]></string>
<string name="title_template">标题模板</string> <string name="title_template">标题模板</string>
<string name="auto_copy">自动复制</string>
<string name="priority">优先级1 9</string> <string name="priority">优先级1 9</string>
<string name="dingtalk_robot">钉钉群机器人</string> <string name="dingtalk_robot">钉钉群机器人</string>
<string name="dingtalk_inner_robot">钉钉企业机器人</string> <string name="dingtalk_inner_robot">钉钉企业机器人</string>

View File

@ -405,6 +405,7 @@
<string name="GotifyWebServer">WebServer</string> <string name="GotifyWebServer">WebServer</string>
<string name="GotifyWebServerTips"><![CDATA[例https://push.ppps.cn/message?token=<apptoken>]]></string> <string name="GotifyWebServerTips"><![CDATA[例https://push.ppps.cn/message?token=<apptoken>]]></string>
<string name="title_template">標題模板</string> <string name="title_template">標題模板</string>
<string name="auto_copy">自動複製</string>
<string name="priority">優先級1 9</string> <string name="priority">優先級1 9</string>
<string name="dingtalk_robot">釘釘群機器人</string> <string name="dingtalk_robot">釘釘群機器人</string>
<string name="dingtalk_inner_robot">釘釘企業機器人</string> <string name="dingtalk_inner_robot">釘釘企業機器人</string>

View File

@ -439,6 +439,7 @@
<string name="GotifyWebServer">WebServer</string> <string name="GotifyWebServer">WebServer</string>
<string name="GotifyWebServerTips"><![CDATA[例https://push.ppps.cn/message?token=<apptoken>]]></string> <string name="GotifyWebServerTips"><![CDATA[例https://push.ppps.cn/message?token=<apptoken>]]></string>
<string name="title_template">标题模板</string> <string name="title_template">标题模板</string>
<string name="auto_copy">自动复制</string>
<string name="priority">优先级1 9</string> <string name="priority">优先级1 9</string>
<string name="dingtalk_robot">钉钉群机器人</string> <string name="dingtalk_robot">钉钉群机器人</string>
<string name="dingtalk_inner_robot">钉钉企业机器人</string> <string name="dingtalk_inner_robot">钉钉企业机器人</string>