mirror of
https://github.com/pppscn/SmsForwarder
synced 2024-11-17 21:25:31 +00:00
优化:webhook发送通道的 webParams 新增可用标签
This commit is contained in:
parent
a1fa816e89
commit
c357517f6f
@ -935,7 +935,7 @@ public class SenderActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
SmsVo smsVo = new SmsVo(getString(R.string.test_phone_num), getString(R.string.test_sender_sms), new Date(), getString(R.string.test_sim_info));
|
SmsVo smsVo = new SmsVo(getString(R.string.test_phone_num), getString(R.string.test_sender_sms), new Date(), getString(R.string.test_sim_info));
|
||||||
SenderWebNotifyMsg.sendMsg(0, handler, null, webServer, webParams, secret, method, smsVo.getMobile(), smsVo.getSmsVoForSend());
|
SenderWebNotifyMsg.sendMsg(0, handler, null, webServer, webParams, secret, method, smsVo, "", "");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
ToastUtils.delayedShow(getString(R.string.failed_to_fwd) + e.getMessage(), 3000);
|
ToastUtils.delayedShow(getString(R.string.failed_to_fwd) + e.getMessage(), 3000);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -244,7 +244,7 @@ public class SendUtil {
|
|||||||
WebNotifySettingVo webNotifySettingVo = JSON.parseObject(senderModel.getJsonSetting(), WebNotifySettingVo.class);
|
WebNotifySettingVo webNotifySettingVo = JSON.parseObject(senderModel.getJsonSetting(), WebNotifySettingVo.class);
|
||||||
if (webNotifySettingVo != null) {
|
if (webNotifySettingVo != null) {
|
||||||
try {
|
try {
|
||||||
SenderWebNotifyMsg.sendMsg(logId, handError, retryInterceptor, webNotifySettingVo.getWebServer(), webNotifySettingVo.getWebParams(), webNotifySettingVo.getSecret(), webNotifySettingVo.getMethod(), smsVo.getMobile(), smsVo.getSmsVoForSend(smsTemplate, regexReplace));
|
SenderWebNotifyMsg.sendMsg(logId, handError, retryInterceptor, webNotifySettingVo.getWebServer(), webNotifySettingVo.getWebParams(), webNotifySettingVo.getSecret(), webNotifySettingVo.getMethod(), smsVo, smsTemplate, regexReplace);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.updateLog(logId, 0, e.getMessage());
|
LogUtil.updateLog(logId, 0, e.getMessage());
|
||||||
Log.e(TAG, "senderSendMsg: SenderWebNotifyMsg error " + e.getMessage());
|
Log.e(TAG, "senderSendMsg: SenderWebNotifyMsg error " + e.getMessage());
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.idormy.sms.forwarder.sender;
|
package com.idormy.sms.forwarder.sender;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
@ -7,13 +8,16 @@ import android.util.Log;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import com.idormy.sms.forwarder.model.vo.SmsVo;
|
||||||
import com.idormy.sms.forwarder.utils.CertUtils;
|
import com.idormy.sms.forwarder.utils.CertUtils;
|
||||||
import com.idormy.sms.forwarder.utils.Define;
|
import com.idormy.sms.forwarder.utils.Define;
|
||||||
import com.idormy.sms.forwarder.utils.LogUtil;
|
import com.idormy.sms.forwarder.utils.LogUtil;
|
||||||
|
import com.idormy.sms.forwarder.utils.SettingUtil;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@ -34,7 +38,9 @@ public class SenderWebNotifyMsg extends SenderBaseMsg {
|
|||||||
|
|
||||||
static final String TAG = "SenderWebNotifyMsg";
|
static final String TAG = "SenderWebNotifyMsg";
|
||||||
|
|
||||||
public static void sendMsg(final long logId, final Handler handError, final RetryIntercepter retryInterceptor, String webServer, String webParams, String secret, String method, String from, String content) throws Exception {
|
public static void sendMsg(final long logId, final Handler handError, final RetryIntercepter retryInterceptor, String webServer, String webParams, String secret, String method, SmsVo smsVo, String smsTemplate, String regexReplace) throws Exception {
|
||||||
|
String from = smsVo.getMobile();
|
||||||
|
String content = smsVo.getSmsVoForSend(smsTemplate, regexReplace);
|
||||||
Log.i(TAG, "sendMsg webServer:" + webServer + " webParams:" + webParams + " from:" + from + " content:" + content);
|
Log.i(TAG, "sendMsg webServer:" + webServer + " webParams:" + webParams + " from:" + from + " content:" + content);
|
||||||
|
|
||||||
if (webServer == null || webServer.isEmpty()) {
|
if (webServer == null || webServer.isEmpty()) {
|
||||||
@ -42,6 +48,12 @@ public class SenderWebNotifyMsg extends SenderBaseMsg {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Long timestamp = System.currentTimeMillis();
|
Long timestamp = System.currentTimeMillis();
|
||||||
|
String orgContent = smsVo.getContent();
|
||||||
|
String deviceMark = SettingUtil.getAddExtraDeviceMark().trim();
|
||||||
|
String appVersion = SettingUtil.getVersionName();
|
||||||
|
String simInfo = smsVo.getSimInfo();
|
||||||
|
@SuppressLint("SimpleDateFormat") String receiveTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(smsVo.getDate());
|
||||||
|
|
||||||
String sign = "";
|
String sign = "";
|
||||||
if (secret != null && !secret.isEmpty()) {
|
if (secret != null && !secret.isEmpty()) {
|
||||||
String stringToSign = timestamp + "\n" + secret;
|
String stringToSign = timestamp + "\n" + secret;
|
||||||
@ -64,9 +76,16 @@ public class SenderWebNotifyMsg extends SenderBaseMsg {
|
|||||||
Log.d(TAG, "method = GET, Url = " + webServer);
|
Log.d(TAG, "method = GET, Url = " + webServer);
|
||||||
request = new Request.Builder().url(webServer).get().build();
|
request = new Request.Builder().url(webServer).get().build();
|
||||||
} else if (method.equals("GET") && !TextUtils.isEmpty(webParams)) {
|
} else if (method.equals("GET") && !TextUtils.isEmpty(webParams)) {
|
||||||
webParams = webParams.replace("\n", "%0A")
|
webParams = webParams.replace("[from]", URLEncoder.encode(from, "UTF-8"))
|
||||||
.replace("[from]", URLEncoder.encode(from, "UTF-8"))
|
.replace("[content]", URLEncoder.encode(content, "UTF-8"))
|
||||||
.replace("[msg]", URLEncoder.encode(content, "UTF-8"));
|
.replace("[msg]", URLEncoder.encode(content, "UTF-8"))
|
||||||
|
.replace("[org_content]", URLEncoder.encode(orgContent, "UTF-8"))
|
||||||
|
.replace("[device_mark]", URLEncoder.encode(deviceMark, "UTF-8"))
|
||||||
|
.replace("[app_version]", URLEncoder.encode(appVersion, "UTF-8"))
|
||||||
|
.replace("[title]", URLEncoder.encode(simInfo, "UTF-8"))
|
||||||
|
.replace("[card_slot]", URLEncoder.encode(simInfo, "UTF-8"))
|
||||||
|
.replace("[receive_time]", URLEncoder.encode(receiveTime, "UTF-8"))
|
||||||
|
.replace("\n", "%0A");
|
||||||
if (secret != null && !secret.isEmpty()) {
|
if (secret != null && !secret.isEmpty()) {
|
||||||
webParams = webParams.replace("[timestamp]", String.valueOf(timestamp))
|
webParams = webParams.replace("[timestamp]", String.valueOf(timestamp))
|
||||||
.replace("[sign]", URLEncoder.encode(sign, "UTF-8"));
|
.replace("[sign]", URLEncoder.encode(sign, "UTF-8"));
|
||||||
@ -77,18 +96,33 @@ public class SenderWebNotifyMsg extends SenderBaseMsg {
|
|||||||
request = new Request.Builder().url(webServer).get().build();
|
request = new Request.Builder().url(webServer).get().build();
|
||||||
} else if (webParams != null && webParams.contains("[msg]")) {
|
} else if (webParams != null && webParams.contains("[msg]")) {
|
||||||
String bodyMsg;
|
String bodyMsg;
|
||||||
String Content_Type = "application/x-www-form-urlencoded";
|
String contentType = "application/x-www-form-urlencoded";
|
||||||
if (webParams.startsWith("{")) {
|
if (webParams.startsWith("{")) {
|
||||||
bodyMsg = content.replace("\n", "\\n");
|
contentType = "application/json;charset=utf-8";
|
||||||
bodyMsg = webParams.replace("[msg]", bodyMsg);
|
bodyMsg = webParams.replace("[from]", from)
|
||||||
Content_Type = "application/json;charset=utf-8";
|
.replace("[content]", escapeJson(content))
|
||||||
|
.replace("[msg]", escapeJson(content))
|
||||||
|
.replace("[org_content]", escapeJson(orgContent))
|
||||||
|
.replace("[device_mark]", escapeJson(deviceMark))
|
||||||
|
.replace("[app_version]", appVersion)
|
||||||
|
.replace("[title]", escapeJson(simInfo))
|
||||||
|
.replace("[card_slot]", escapeJson(simInfo))
|
||||||
|
.replace("[receive_time]", receiveTime);
|
||||||
} else {
|
} else {
|
||||||
bodyMsg = webParams.replace("[msg]", URLEncoder.encode(content, "UTF-8"));
|
bodyMsg = webParams.replace("[from]", URLEncoder.encode(from, "UTF-8"))
|
||||||
|
.replace("[content]", URLEncoder.encode(content, "UTF-8"))
|
||||||
|
.replace("[msg]", URLEncoder.encode(content, "UTF-8"))
|
||||||
|
.replace("[org_content]", URLEncoder.encode(orgContent, "UTF-8"))
|
||||||
|
.replace("[device_mark]", URLEncoder.encode(deviceMark, "UTF-8"))
|
||||||
|
.replace("[app_version]", URLEncoder.encode(appVersion, "UTF-8"))
|
||||||
|
.replace("[title]", URLEncoder.encode(simInfo, "UTF-8"))
|
||||||
|
.replace("[card_slot]", URLEncoder.encode(simInfo, "UTF-8"))
|
||||||
|
.replace("[receive_time]", URLEncoder.encode(receiveTime, "UTF-8"));
|
||||||
}
|
}
|
||||||
RequestBody body = RequestBody.create(MediaType.parse(Content_Type), bodyMsg);
|
RequestBody body = RequestBody.create(MediaType.parse(contentType), bodyMsg);
|
||||||
request = new Request.Builder()
|
request = new Request.Builder()
|
||||||
.url(webServer)
|
.url(webServer)
|
||||||
.addHeader("Content-Type", Content_Type)
|
.addHeader("Content-Type", contentType)
|
||||||
.method("POST", body)
|
.method("POST", body)
|
||||||
.build();
|
.build();
|
||||||
Log.d(TAG, "method = POST webParams, Body = " + bodyMsg);
|
Log.d(TAG, "method = POST webParams, Body = " + bodyMsg);
|
||||||
@ -142,4 +176,17 @@ public class SenderWebNotifyMsg extends SenderBaseMsg {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//JSON需要转义的字符
|
||||||
|
private static String escapeJson(String str) {
|
||||||
|
return str.replace("\n", "\\n")
|
||||||
|
.replace("\"", "\\\"")
|
||||||
|
.replace("\\/", "\\\\/")
|
||||||
|
.replace("\\b", "\\\\b")
|
||||||
|
.replace("\\f", "\\\\f")
|
||||||
|
.replace("\\t", "\\\\t")
|
||||||
|
.replace("\\n", "\\\\n")
|
||||||
|
.replace("\\r", "\\\\r")
|
||||||
|
.replace("\\u", "\\\\u");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user