From 271fa6a102613408aa30eeb316272e2cc22ff822 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Thu, 23 Jun 2022 20:29:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=80=9A=E9=81=93`Bark`/`Gotify`=E6=94=AF=E6=8C=81HTTP?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E8=AE=A4=E8=AF=81=20=E3=80=90=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=EF=BC=9Ahttp://username:password@domain.com/uri?= =?UTF-8?q?=E3=80=91=20#170?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sms/forwarder/utils/sender/BarkUtils.kt | 13 ++++++++-- .../utils/sender/BasicAuthInterceptor.kt | 24 +++++++++++++++++++ .../sms/forwarder/utils/sender/GotifyUtils.kt | 13 ++++++++-- 3 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/idormy/sms/forwarder/utils/sender/BasicAuthInterceptor.kt diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt index 5d533f22..277eb094 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt @@ -41,8 +41,17 @@ class BarkUtils { val requestUrl: String = setting.server //推送地址 Log.i(TAG, "requestUrl:$requestUrl") - val request = XHttp.post(requestUrl) - .params("title", title) + //支持HTTP基本认证(Basic Authentication) + val regex = "^(https?://)([^:]+):([^@]+)@(.+)" + val matches = Regex(regex, RegexOption.IGNORE_CASE).findAll(requestUrl).toList().flatMap(MatchResult::groupValues) + Log.i(TAG, "matches = $matches") + val request = if (matches.isNotEmpty()) { + XHttp.post(matches[1] + matches[4]).addInterceptor(BasicAuthInterceptor(matches[2], matches[3])) + } else { + XHttp.post(requestUrl) + } + + request.params("title", title) .params("body", content) .params("isArchive", 1) if (!TextUtils.isEmpty(setting.group)) request.params("group", setting.group) diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BasicAuthInterceptor.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BasicAuthInterceptor.kt new file mode 100644 index 00000000..7373657e --- /dev/null +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BasicAuthInterceptor.kt @@ -0,0 +1,24 @@ +package com.idormy.sms.forwarder.utils.sender + +import okhttp3.Credentials +import okhttp3.Interceptor +import okhttp3.Request +import okhttp3.Response +import java.io.IOException + +class BasicAuthInterceptor(user: String, password: String) : Interceptor { + + private val credentials: String + + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + val request: Request = chain.request() + val authenticatedRequest: Request = request.newBuilder() + .header("Authorization", credentials).build() + return chain.proceed(authenticatedRequest) + } + + init { + credentials = Credentials.basic(user, password) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/GotifyUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/GotifyUtils.kt index a81d5550..e7bb2436 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/GotifyUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/GotifyUtils.kt @@ -39,8 +39,17 @@ class GotifyUtils { val requestUrl: String = setting.webServer //推送地址 Log.i(TAG, "requestUrl:$requestUrl") - XHttp.post(requestUrl) - .params("title", title) + //支持HTTP基本认证(Basic Authentication) + val regex = "^(https?://)([^:]+):([^@]+)@(.+)" + val matches = Regex(regex, RegexOption.IGNORE_CASE).findAll(requestUrl).toList().flatMap(MatchResult::groupValues) + Log.i(TAG, "matches = $matches") + val request = if (matches.isNotEmpty()) { + XHttp.post(matches[1] + matches[4]).addInterceptor(BasicAuthInterceptor(matches[2], matches[3])) + } else { + XHttp.post(requestUrl) + } + + request.params("title", title) .params("message", content) .params("priority", setting.priority) .keepJson(true)