From 8eeb2b1cc28c3374fc1e291a0de71bc3d48e0d09 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Fri, 20 Oct 2023 23:47:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A`=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=BA=94=E7=94=A8`=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=80=9A=E9=81=93=E5=85=81=E8=AE=B8=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?API=E5=9C=B0=E5=9D=80=E3=80=90=E9=80=9A=E8=BF=87=E5=8F=8D?= =?UTF-8?q?=E5=90=91=E4=BB=A3=E7=90=86(proxy=5Fpass)=E7=BB=95=E8=BF=87IP?= =?UTF-8?q?=E7=99=BD=E5=90=8D=E5=8D=95=E9=99=90=E5=88=B6=E3=80=91=20#352?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/setting/WeworkAgentSetting.kt | 1 + .../fragment/senders/WeworkAgentFragment.kt | 8 +++- .../utils/sender/WeworkAgentUtils.kt | 7 +++- .../layout/fragment_senders_wework_agent.xml | 40 ++++++++++++++++++- app/src/main/res/values-en/strings.xml | 7 +++- app/src/main/res/values/strings.xml | 3 ++ 6 files changed, 60 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/setting/WeworkAgentSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/setting/WeworkAgentSetting.kt index 1384140a..437790ab 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/setting/WeworkAgentSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/setting/WeworkAgentSetting.kt @@ -18,6 +18,7 @@ data class WeworkAgentSetting( val proxyAuthenticator: Boolean? = false, val proxyUsername: String? = "", val proxyPassword: String? = "", + val customizeAPI: String = "https://qyapi.weixin.qq.com/cgi-bin", ) : Serializable { fun getProxyTypeCheckId(): Int { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt index 56decf1d..4c1bf136 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt @@ -140,6 +140,7 @@ class WeworkAgentFragment : BaseFragment(), binding!!.sbProxyAuthenticator.isChecked = settingVo.proxyAuthenticator == true binding!!.etProxyUsername.setText(settingVo.proxyUsername) binding!!.etProxyPassword.setText(settingVo.proxyPassword) + binding!!.etCustomizeAPI.setText(settingVo.customizeAPI) } } }) @@ -293,7 +294,12 @@ class WeworkAgentFragment : BaseFragment(), throw Exception(getString(R.string.invalid_username_or_password)) } - return WeworkAgentSetting(corpID, agentID, secret, atAll, toUser, toParty, toTag, proxyType, proxyHost, proxyPort, proxyAuthenticator, proxyUsername, proxyPassword) + val customizeAPI = binding!!.etCustomizeAPI.text.toString().trim() + if (!CommonUtils.checkUrl(customizeAPI, true)) { + throw Exception(getString(R.string.invalid_customize_api)) + } + + return WeworkAgentSetting(corpID, agentID, secret, atAll, toUser, toParty, toTag, proxyType, proxyHost, proxyPort, proxyAuthenticator, proxyUsername, proxyPassword, customizeAPI) } override fun onDestroyView() { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkAgentUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkAgentUtils.kt index ca21e791..bd2cd6db 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkAgentUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkAgentUtils.kt @@ -26,6 +26,7 @@ import java.net.InetSocketAddress import java.net.PasswordAuthentication import java.net.Proxy +@Suppress("DEPRECATION") class WeworkAgentUtils private constructor() { companion object { @@ -46,7 +47,8 @@ class WeworkAgentUtils private constructor() { return sendTextMsg(setting, msgInfo, rule, senderIndex, logId, msgId) } - var getTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?" + val customApi = if (TextUtils.isEmpty(setting.customizeAPI)) "https://qyapi.weixin.qq.com/cgi-bin" else setting.customizeAPI + var getTokenUrl = "$customApi/gettoken?" getTokenUrl += "corpid=" + setting.corpID getTokenUrl += "&corpsecret=" + setting.secret Log.d(TAG, "getTokenUrl:$getTokenUrl") @@ -139,7 +141,8 @@ class WeworkAgentUtils private constructor() { textText["content"] = content textMsgMap["text"] = textText val accessToken: String by SharedPreference("access_token_" + setting.agentID, "") - val requestUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$accessToken" + val customApi = if (TextUtils.isEmpty(setting.customizeAPI)) "https://qyapi.weixin.qq.com/cgi-bin" else setting.customizeAPI + val requestUrl = "$customApi/message/send?access_token=$accessToken" Log.i(TAG, "requestUrl:$requestUrl") val requestMsg: String = Gson().toJson(textMsgMap) Log.i(TAG, "requestMsg:$requestMsg") diff --git a/app/src/main/res/layout/fragment_senders_wework_agent.xml b/app/src/main/res/layout/fragment_senders_wework_agent.xml index 682a7242..def792c8 100644 --- a/app/src/main/res/layout/fragment_senders_wework_agent.xml +++ b/app/src/main/res/layout/fragment_senders_wework_agent.xml @@ -224,7 +224,6 @@ - + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 0f9236d6..2194186c 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -283,8 +283,9 @@ SendKey cannot be empty Up to two channels, multiple channel values separated by a vertical bar | Multiple openids are separated by , - WebServer is empty or not a valid URL - WebHook is empty or not a valid URL + Customize API is invalid + WebServer is empty or invalid + WebHook is empty or invalid URL Scheme is empty or invalid toUser/toParty/toTag cannot be empty or select @all CoreID, AgentID, and Secret cannot be empty @@ -310,6 +311,7 @@ Text Interactive Interactive Title + Customize API Corp ID Agent ID App Secret @@ -323,6 +325,7 @@ Tip: List of member IDs that receive messages (multiple recipients are separated by \'|\', up to 1000) Tip: List of party IDs that receive messages (multiple recipients are separated by \'|\', up to 1000) Tip: List of tag IDs that receive messages (multiple recipients are separated by \'|\', up to 1000) + Tip: Bypass IP whitelist restrictions using reverse proxy (proxy_pass). Tip: The userid of the user who receives the message, up to 20 at a time (separated by \'|\') SendKey Message Channel diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bcba3697..fc661c91 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -284,6 +284,7 @@ Server酱·Turbo版的 SendKey 不能为空 最多两个通道,多个通道值用竖线|隔开 多个 openid 用 , 隔开 + 自定义API地址 不是有效URL WebServer为空 或 不是有效URL WebHook为空 或 不是有效URL URL Scheme 为空 或 无效 @@ -311,6 +312,7 @@ 纯文本 消息卡片 标题模板 + 自定义API 企业ID AgentId Secret @@ -324,6 +326,7 @@ Tip:接收消息的成员ID列表(多个接收者用‘|’分隔,最多支持1000个) Tip:接收消息的部门ID列表(多个接收者用‘|’分隔,最多支持1000个) Tip:接收消息的标签ID列表(多个接收者用‘|’分隔,最多支持1000个) + Tip:通过反向代理(proxy_pass)绕过IP白名单限制 Tip:接收用户的userid,每次最多传20个(用‘|’分隔) SendKey 消息通道