Auto replace localhost

pull/137/head
FongMi 4 years ago
parent aee5de2a03
commit 8625026f26
  1. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java
  2. 3
      app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
  3. 5
      app/src/main/java/com/fongmi/android/tv/api/JarLoader.java
  4. 30
      app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java
  5. 35
      app/src/main/java/com/fongmi/android/tv/utils/Utils.java
  6. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java

@ -17,6 +17,7 @@ import com.fongmi.android.tv.server.Server;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.QRCode;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Utils;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.greenrobot.eventbus.EventBus;
@ -71,8 +72,7 @@ public class ConfigDialog implements DialogInterface.OnDismissListener {
private void onPositive(View view) {
String url = binding.text.getText().toString().trim();
if (url.startsWith("clan")) url = url.replace("clan", "file");
callback.setConfig(url);
callback.setConfig(Utils.checkClan(url));
dialog.dismiss();
}

@ -14,6 +14,7 @@ import com.fongmi.android.tv.net.OKHttp;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Json;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.Utils;
import com.github.catvod.crawler.Spider;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
@ -149,7 +150,7 @@ public class ApiConfig {
private String parseExt(String ext) {
if (ext.startsWith("http")) return ext;
else if (ext.startsWith("file")) return FileUtil.read(ext);
else if (ext.endsWith(".json")) return parseExt(FileUtil.convert(ext));
else if (ext.endsWith(".json")) return parseExt(Utils.convert(ext));
return ext;
}

@ -5,6 +5,7 @@ import android.content.Context;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.net.OKHttp;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Utils;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderNull;
@ -73,13 +74,13 @@ public class JarLoader {
} else if (jar.startsWith("file")) {
load(key, FileUtil.getLocal(jar));
} else if (!jar.isEmpty()) {
parseJar(key, FileUtil.convert(jar));
parseJar(key, Utils.convert(jar));
}
}
public Spider getSpider(String key, String api, String ext, String jar) {
try {
String spKey = (current = FileUtil.getMD5(jar)) + key;
String spKey = (current = Utils.getMD5(jar)) + key;
if (spiders.containsKey(spKey)) return spiders.get(spKey);
if (!loaders.containsKey(current)) parseJar(current, jar);
Spider spider = (Spider) loaders.get(current).loadClass("com.github.catvod.spider." + api.replace("csp_", "")).newInstance();

@ -16,10 +16,8 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.net.URLConnection;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class FileUtil {
@ -42,7 +40,7 @@ public class FileUtil {
}
public static File getJar(String fileName) {
return getCacheFile(getMD5(fileName).concat(".jar"));
return getCacheFile(Utils.getMD5(fileName).concat(".jar"));
}
public static File getLocal(String path) {
@ -80,17 +78,7 @@ public class FileUtil {
}
}
public static String convert(String text) {
if (TextUtils.isEmpty(text)) return "";
if (text.startsWith("clan")) return text.replace("clan", "file");
if (text.startsWith(".")) text = text.substring(1);
if (text.startsWith("/")) text = text.substring(1);
Uri uri = Uri.parse(Prefers.getUrl());
if (uri.getLastPathSegment() == null) return uri.getScheme() + "://" + text;
return uri.toString().replace(uri.getLastPathSegment(), text);
}
private static String getMd5(File file) {
public static String getMd5(File file) {
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
FileInputStream fis = new FileInputStream(file);
@ -107,20 +95,6 @@ public class FileUtil {
}
}
public static String getMD5(String src) {
try {
if (TextUtils.isEmpty(src)) return "";
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(src.getBytes());
BigInteger no = new BigInteger(1, messageDigest);
StringBuilder sb = new StringBuilder(no.toString(16));
while (sb.length() < 32) sb.insert(0, "0");
return sb.toString().toLowerCase();
} catch (NoSuchAlgorithmException e) {
return "";
}
}
public static boolean equals(String jar, String md5) {
return getMd5(getJar(jar)).equalsIgnoreCase(md5);
}

@ -2,7 +2,9 @@ package com.fongmi.android.tv.utils;
import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.os.IBinder;
import android.text.TextUtils;
import android.util.Base64;
import android.view.KeyEvent;
import android.view.View;
@ -10,6 +12,9 @@ import android.view.inputmethod.InputMethodManager;
import com.fongmi.android.tv.App;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@ -67,6 +72,36 @@ public class Utils {
return false;
}
public static String checkClan(String text) {
if (text.contains("/localhost/")) text = text.replace("/localhost/", "/");
if (text.startsWith("clan")) text = text.replace("clan", "file");
return text;
}
public static String convert(String text) {
if (TextUtils.isEmpty(text)) return "";
if (text.startsWith("clan")) return checkClan(text);
if (text.startsWith(".")) text = text.substring(1);
if (text.startsWith("/")) text = text.substring(1);
Uri uri = Uri.parse(Prefers.getUrl());
if (uri.getLastPathSegment() == null) return uri.getScheme() + "://" + text;
return uri.toString().replace(uri.getLastPathSegment(), text);
}
public static String getMD5(String src) {
try {
if (TextUtils.isEmpty(src)) return "";
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(src.getBytes());
BigInteger no = new BigInteger(1, messageDigest);
StringBuilder sb = new StringBuilder(no.toString(16));
while (sb.length() < 32) sb.insert(0, "0");
return sb.toString().toLowerCase();
} catch (NoSuchAlgorithmException e) {
return "";
}
}
public static String getBase64(String ext) {
return Base64.encodeToString(ext.getBytes(), Base64.DEFAULT | Base64.NO_WRAP);
}

@ -52,8 +52,7 @@ public class ConfigDialog {
private void onPositive(View view) {
String url = binding.text.getText().toString().trim();
if (url.startsWith("clan")) url = url.replace("clan", "file");
callback.setConfig(url);
callback.setConfig(Utils.checkClan(url));
dialog.dismiss();
}

Loading…
Cancel
Save