revert: restore local fallback domains

This commit is contained in:
2026-08-05 15:25:52 +08:00
parent f25bd7abf9
commit 5e6520c258
171 changed files with 369 additions and 27 deletions

View File

@@ -17,6 +17,16 @@ public class DataInfo implements Serializable {
public String tgUrl; // tg分享地址
public String wsUrl; //whatsapp分享地址
public String linkConfig;
public String backupDomains;
public String getBackupDomains() {
return backupDomains;
}
public void setBackupDomains(String backupDomains) {
this.backupDomains = backupDomains;
}
public String getLinkConfig() {
return linkConfig;
}

View File

@@ -598,16 +598,17 @@ public class MainActivity extends AppCompatActivity {
@Override
public void onSuccess(Result<DataInfo> o) {
DataInfo dataInfo = o == null ? null : o.data;
DataInfo dataInfo = o.data;
if (dataInfo != null) {
if (dataInfo.getIsUse() == 0) {
MainActivity.this.finish();
return;
}
if (!TextUtils.isEmpty(dataInfo.getUrl())) {
saveString(MainActivity.this, "base_url", dataInfo.getUrl());
toLoadWebUrl(dataInfo);
} else {
showSiteUrlError();
}
String link = dataInfo.getLinkConfig();
@@ -685,7 +686,8 @@ public class MainActivity extends AppCompatActivity {
activityMain2Binding.layoutOtherapp.setVisibility(View.GONE);
}
} else {
showSiteUrlError();
url = getString(MainActivity.this, "base_url", url);
activityMain2Binding.webview.loadUrl(url);
}
@@ -693,25 +695,60 @@ public class MainActivity extends AppCompatActivity {
@Override
public void onError(int code, String msg) {
showSiteUrlError();
url = getString(MainActivity.this, "base_url", url);
activityMain2Binding.webview.loadUrl(url);
}
@Override
public void onError2(Result<DataInfo> o) {
showSiteUrlError();
url = getString(MainActivity.this, "base_url", url);
activityMain2Binding.webview.loadUrl(url);
}
});
}
private void toLoadWebUrl(DataInfo dataInfo) {
url = dataInfo.getUrl();
activityMain2Binding.webview.loadUrl(url);
if (TextUtils.isEmpty(dataInfo.getBackupDomains())) {
activityMain2Binding.webview.loadUrl(dataInfo.getUrl());
} else {
//拼接主域名和备用域名的数组
urlList = new ArrayList<>();
urlList.add(dataInfo.getUrl());
String[] urls = dataInfo.getBackupDomains().split(",");
if (urls != null && urls.length > 0) {
for (int i = 0; i < urls.length; i++) {
urlList.add(urls[i]);
}
}
LogUtils.i("地址是啥:" + GsonUtils.beanToJSONString(urlList));
checkUrl(0);
}
}
private void showSiteUrlError() {
activityMain2Binding.progressError.setVisibility(View.GONE);
onShowErrorView(getString(R.string.site_url_unavailable));
private ArrayList<String> urlList = new ArrayList<>();
int lastCheckIndex = 0;
private void checkUrl(int index) {
lastCheckIndex = index;
Uri uri = Uri.parse(urlList.get(lastCheckIndex));
new Thread(() -> {
String result = PingUtils.ping(uri.getHost());
runOnUiThread(() -> {
if (TextUtils.isEmpty(result)) {
if (lastCheckIndex != urlList.size() - 1) {
checkUrl(lastCheckIndex + 1);
} else {
activityMain2Binding.webview.loadUrl(urlList.get(0));
}
} else {
activityMain2Binding.webview.loadUrl(urlList.get(lastCheckIndex));
}
});
}).start();
}
private void checkUpdate(String url) {

View File

@@ -0,0 +1,39 @@
package com.webclip.base;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
* **********************
*
* @Author bug machine
* 创建时间: 2026/1/16 15:30
* 用途
* **********************
*/
public class PingUtils {
/**
* 执行 ping 命令
* @param address 域名或IP
* @return 返回执行结果
*/
public static String ping(String address) {
StringBuilder result = new StringBuilder();
try {
// -c 4 表示执行4次
Process process = Runtime.getRuntime().exec("ping -c 3 " + address);
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
result.append(line).append("\n");
}
reader.close();
process.destroy();
} catch (Exception e) {
result.append("Ping失败: ").append(e.getMessage());
}
return result.toString();
}
}

View File

@@ -51,11 +51,10 @@
<string name="app_toastloading">暂无更多数据</string>
<string name="app_notify_title">通知</string>
<string name="agentweb_loading">Loading…</string>
<string name="site_url_unavailable">无法获取站点地址,请稍后重试</string>
<string name="text_title">文本</string>
<string name="image_title">图片</string>
<string name="link_title">链接</string>
</resources>
</resources>