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)