From bcc47f1e8cc768f14bbb6d0e3f8ac846625ee034 Mon Sep 17 00:00:00 2001 From: watson1982 <112817572+watson1982@users.noreply.github.com> Date: Mon, 14 Aug 2023 15:14:50 +0800 Subject: [PATCH] get-push --- .../github/tvbox/osc/server/RemoteServer.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java b/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java index 63065c08..566c2554 100644 --- a/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java +++ b/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java @@ -4,9 +4,11 @@ import android.annotation.SuppressLint; import android.content.Context; import android.net.wifi.WifiManager; import android.os.Environment; +import android.util.Base64; import com.github.tvbox.osc.R; import com.github.tvbox.osc.api.ApiConfig; +import com.github.tvbox.osc.event.RefreshEvent; import com.github.tvbox.osc.event.ServerEvent; import com.github.tvbox.osc.util.FileUtils; import com.github.tvbox.osc.util.OkGoHelper; @@ -22,10 +24,13 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; +import java.net.URLDecoder; +import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -148,7 +153,20 @@ public class RemoteServer extends NanoHTTPD { rs = new byte[0]; } return NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.OK, "application/dns-message", new ByteArrayInputStream(rs), rs.length); - } + } else if (fileName.startsWith("/push/")) { + String url = fileName.substring(6); + if (url.startsWith("b64:")) { + try { + url = new String(Base64.decode(url.substring(4), Base64.DEFAULT | Base64.URL_SAFE | Base64.NO_WRAP), "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } else { + url = URLDecoder.decode(url); + } + EventBus.getDefault().post(new RefreshEvent(RefreshEvent.TYPE_PUSH_URL, url)); + return NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_PLAINTEXT, "ok"); + } } else if (session.getMethod() == Method.POST) { Map files = new HashMap(); try {