diff --git a/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm b/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm
index 8a6e81abb..31733a1ee 100644
--- a/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm
+++ b/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm
@@ -215,42 +215,25 @@ function import_ssr_url(btn, urlname, sid) {
s.innerHTML = "<%:Import configuration information successfully.%>";
return false;
case "trojan":
- var url0, param = "";
- var ploc = ssu[1].indexOf("#");
- if (ploc > 0) {
- url0 = ssu[1].substr(0, ploc);
- param = ssu[1].substr(ploc + 1);
- } else {
- url0 = ssu[1]
+ try {
+ var url = new URL("http://" + ssu[1]);
+ } catch(e) {
+ alert(e)
+ return false;
}
- var sstr = url0;
+
+ document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = url.hash ? decodeURIComponent(url.hash.slice(1)) : "";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].value = "v2ray";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
document.getElementsByName('cbid.shadowsocksr.' + sid + '.v2ray_protocol')[0].value = "trojan";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.v2ray_protocol')[0].dispatchEvent(event);
- var team = sstr.split('@');
- var password = team[0]
- var serverPart = team[1].split(':');
- var others = serverPart[1].split('?');
- var port = parseInt(others[0]);
- var queryParam = {}
- if (others.length > 1) {
- var queryParams = others[1]
- var queryArray = queryParams.split('&');
- for (i = 0; i < queryArray.length; i++) {
- var params = queryArray[i].split('=');
- queryParam[decodeURIComponent(params[0])] = decodeURIComponent(params[1] || '');
- }
- }
- document.getElementsByName('cbid.shadowsocksr.' + sid + '.server')[0].value = serverPart[0];
- document.getElementsByName('cbid.shadowsocksr.' + sid + '.server_port')[0].value = port || '443';
- document.getElementsByName('cbid.shadowsocksr.' + sid + '.password')[0].value = password;
+ document.getElementsByName('cbid.shadowsocksr.' + sid + '.server')[0].value = url.hostname;
+ document.getElementsByName('cbid.shadowsocksr.' + sid + '.server_port')[0].value = url.port || "80";
+ document.getElementsByName('cbid.shadowsocksr.' + sid + '.password')[0].value = decodeURIComponent(url.username);
document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls')[0].checked = true;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls')[0].dispatchEvent(event);
- document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls_host')[0].value = queryParam.sni || '';
- if (param != undefined) {
- document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = decodeURI(param);
- }
+ document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls_host')[0].value = url.searchParams.get("sni");
+
s.innerHTML = "<%:Import configuration information successfully.%>";
return false;
case "vmess":