Browse Source

Merge pull request #132 from MHSanaei/master

Master
Ho3ein 1 year ago
parent
commit
ef24174a38

File diff suppressed because it is too large
+ 1 - 1
web/assets/[email protected]/antd.min.css


+ 9 - 17
web/assets/js/model/xray.js

@@ -17,16 +17,15 @@ const VmessMethods = {
 };
 
 const SSMethods = {
-    // AES_256_CFB: 'aes-256-cfb',
-    // AES_128_CFB: 'aes-128-cfb',
-    // CHACHA20: 'chacha20',
-    // CHACHA20_IETF: 'chacha20-ietf',
-    CHACHA20_POLY1305: 'chacha20-poly1305',
-    AES_256_GCM: 'aes-256-gcm',
-    AES_128_GCM: 'aes-128-gcm',
+	AES_128_GCM: 'aes-128-gcm',
+	AES_256_GCM: 'aes-256-gcm',
+	CHACHA20_POLY1305: 'chacha20-poly1305',
+	CHACHA20_IETF_POLY1305: 'chacha20-ietf-poly1305',
+	XCHACHA20_POLY1305: 'xchacha20-poly1305',
+	XCHACHA20_IETF_POLY1305: 'xchacha20-ietf-poly1305',
 	BLAKE3_AES_128_GCM: '2022-blake3-aes-128-gcm',
-    BLAKE3_AES_256_GCM: '2022-blake3-aes-256-gcm',
-    BLAKE3_CHACHA20_POLY1305: '2022-blake3-chacha20-poly1305',
+	BLAKE3_AES_256_GCM: '2022-blake3-aes-256-gcm',
+	BLAKE3_CHACHA20_POLY1305: '2022-blake3-chacha20-poly1305',
 };
 
 const RULE_IP = {
@@ -940,7 +939,6 @@ class Inbound extends XrayCommonClass {
             case Protocols.VMESS:
             case Protocols.VLESS:
             case Protocols.TROJAN:
-            case Protocols.SHADOWSOCKS:
                 break;
             default:
                 return false;
@@ -992,7 +990,6 @@ class Inbound extends XrayCommonClass {
             case Protocols.VMESS:
             case Protocols.VLESS:
 			case Protocols.TROJAN:
-            case Protocols.SHADOWSOCKS:
                 return true;
             default:
                 return false;
@@ -1186,12 +1183,7 @@ class Inbound extends XrayCommonClass {
         if (!ObjectUtil.isEmpty(server)) {
             address = server;
         }
-        if (settings.method == SSMethods.BLAKE3_AES_128_GCM || settings.method == SSMethods.BLAKE3_AES_256_GCM || settings.method == SSMethods.BLAKE3_CHACHA20_POLY1305) {
-            return `ss://${settings.method}:${settings.password}@${address}:${this.port}#${encodeURIComponent(remark)}`;
-        } else {
-            return 'ss://' + safeBase64(settings.method + ':' + settings.password + '@' + address + ':' + this.port)
-                + '#' + encodeURIComponent(remark);
-        }
+			return 'ss://' + safeBase64(settings.method + ':' + settings.password) + `@${address}:${this.port}#${encodeURIComponent(remark)}`;
     }
 
     genTrojanLink(address = '', remark = '', clientIndex = 0) {

+ 3 - 3
web/html/xui/form/protocol/dokodemo.html

@@ -8,9 +8,9 @@
     </a-form-item>
     <a-form-item label='{{ i18n "pages.inbounds.network"}}'>
         <a-select v-model="inbound.settings.network" style="width: 100px;" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''">
-            <a-select-option value="tcp,udp">tcp+udp</a-select-option>
-            <a-select-option value="tcp">tcp</a-select-option>
-            <a-select-option value="udp">udp</a-select-option>
+            <a-select-option value="tcp,udp">TCP+UDP</a-select-option>
+            <a-select-option value="tcp">TCP</a-select-option>
+            <a-select-option value="udp">UDP</a-select-option>
         </a-select>
     </a-form-item>
     <a-form-item label="FollowRedirect">

+ 5 - 5
web/html/xui/form/protocol/shadowsocks.html

@@ -1,18 +1,18 @@
 {{define "form/shadowsocks"}}
 <a-form layout="inline">
     <a-form-item label='{{ i18n "encryption" }}'>
-        <a-select v-model="inbound.settings.method" style="width: 165px;" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''">
+        <a-select v-model="inbound.settings.method" style="width: 250px;" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''">
             <a-select-option v-for="method in SSMethods" :value="method">[[ method ]]</a-select-option>
         </a-select>
     </a-form-item>
     <a-form-item label='{{ i18n "password" }}'>
-        <a-input v-model.trim="inbound.settings.password"></a-input>
+        <a-input v-model.trim="inbound.settings.password" style="width: 250px;"></a-input>
     </a-form-item>
     <a-form-item label='{{ i18n "pages.inbounds.network" }}'>
         <a-select v-model="inbound.settings.network" style="width: 100px;" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''">
-            <a-select-option value="tcp,udp">tcp+udp</a-select-option>
-            <a-select-option value="tcp">tcp</a-select-option>
-            <a-select-option value="udp">udp</a-select-option>
+            <a-select-option value="tcp,udp">TCP+UDP</a-select-option>
+            <a-select-option value="tcp">TCP</a-select-option>
+            <a-select-option value="udp">UDP</a-select-option>
         </a-select>
     </a-form-item>
 </a-form>

+ 70 - 1
web/html/xui/setting.html

@@ -97,7 +97,9 @@
                             <a-list item-layout="horizontal" :style="siderDrawer.isDarkTheme ? 'color: hsla(0,0%,100%,.65);': 'background: white;'">
                                 <setting-list-item type="switch" title='{{ i18n "pages.setting.xrayConfigTorrent"}}' desc='{{ i18n "pages.setting.xrayConfigTorrentDesc"}}'  v-model="torrentSettings"></setting-list-item>
                                 <setting-list-item type="switch" title='{{ i18n "pages.setting.xrayConfigPrivateIp"}}' desc='{{ i18n "pages.setting.xrayConfigPrivateIpDesc"}}'  v-model="privateIpSettings"></setting-list-item>
-                                <a-divider>{{ i18n "pages.setting.advancedTemplate"}}</a-divider>
+                                <setting-list-item type="switch" title='{{ i18n "pages.setting.xrayConfigIRIp"}}' desc='{{ i18n "pages.setting.xrayConfigIRIpDesc"}}'  v-model="IRIpSettings"></setting-list-item>
+								<setting-list-item type="switch" title='{{ i18n "pages.setting.xrayConfigIRdomain"}}' desc='{{ i18n "pages.setting.xrayConfigIRdomainDesc"}}'  v-model="IRdomainSettings"></setting-list-item>
+								<a-divider>{{ i18n "pages.setting.advancedTemplate"}}</a-divider>
                                 <a-collapse>
                                     <a-collapse-panel header="{{ i18n "pages.setting.xrayConfigInbounds"}}">
                                         <setting-list-item type="textarea" title='{{ i18n "pages.setting.xrayConfigInbounds"}}' desc='{{ i18n "pages.setting.xrayConfigInboundsDesc"}}' v-model ="inboundSettings"></setting-list-item>
@@ -304,6 +306,73 @@
                     this.templateSettings = newTemplateSettings
                 },
             },
+			IRIpSettings: {
+                get: function () {
+                    localIpFilter = false
+                    if(this.templateSettings != null){
+                        this.templateSettings.routing.rules.forEach(routingRule => {
+                            if(routingRule.hasOwnProperty("ip")){
+                                if (routingRule.ip[0] === "geoip:ir" && routingRule.outboundTag == "blocked"){
+                                    localIpFilter = true
+                                }
+                            }
+                        });
+                    }
+                    return localIpFilter
+                },
+                set: function (newValue) {
+                    newTemplateSettings = JSON.parse(this.allSetting.xrayTemplateConfig);
+                    if (newValue){
+                        newTemplateSettings.routing.rules.push(JSON.parse("{\"outboundTag\": \"blocked\",\"ip\": [\"geoip:ir\"],\"type\": \"field\"}"))
+                    }
+                    else {
+                        newTemplateSettings.routing.rules = [];
+                        this.templateSettings.routing.rules.forEach(routingRule => {
+                            if (routingRule.hasOwnProperty('ip')){
+                                if (routingRule.ip[0] === "geoip:ir" && routingRule.outboundTag == "blocked"){
+                                    return;
+                                }
+                            }
+                            newTemplateSettings.routing.rules.push(routingRule);
+                        });
+                    }
+                    this.templateSettings = newTemplateSettings
+                },
+            },
+			IRdomainSettings: {
+                get: function () {
+                    localdomainFilter = false
+                    if(this.templateSettings != null){
+                        this.templateSettings.routing.rules.forEach(routingRule => {
+                            if(routingRule.hasOwnProperty("domain")){
+                                if (routingRule.domain[0] === "regexp:.+.ir$" && routingRule.outboundTag == "blocked"){
+                                    localdomainFilter = true
+                                }
+                            }
+                        });
+                    }
+                    return localdomainFilter
+                },
+                set: function (newValue) {
+                    newTemplateSettings = JSON.parse(this.allSetting.xrayTemplateConfig);
+                    if (newValue){
+                        newTemplateSettings.routing.rules.push(JSON.parse("{\"outboundTag\": \"blocked\",\"domain\": [\"regexp:.+.ir$\"],\"type\": \"field\"}"))
+                    }
+                    else {
+                        newTemplateSettings.routing.rules = [];
+                        this.templateSettings.routing.rules.forEach(routingRule => {
+                            if (routingRule.hasOwnProperty('domain')){
+                                if (routingRule.domain[0] === "regexp:.+.ir$" && routingRule.outboundTag == "blocked"){
+                                    return;
+                                }
+                            }
+                            newTemplateSettings.routing.rules.push(routingRule);
+                        });
+                    }
+                    this.templateSettings = newTemplateSettings
+                },
+            },
+			
         }
     });
 

+ 5 - 1
web/translation/translate.en_US.toml

@@ -202,8 +202,12 @@
 "xrayConfigTemplateDesc" = "Generate the final xray configuration file based on this template, restart the panel to take effect."
 "xrayConfigTorrent" = "Ban bittorrent usage"
 "xrayConfigTorrentDesc" = "Change the configuration temlate to avoid using bittorrent by users, restart the panel to take effect"
-"xrayConfigPrivateIp" = "Ban private ip range to connect"
+"xrayConfigPrivateIp" = "Ban private IP ranges to connect"
 "xrayConfigPrivateIpDesc" = "Change the configuration temlate to avoid connecting with private IP ranges, restart the panel to take effect"
+"xrayConfigIRIp" = "Ban Iran IP ranges to connect"
+"xrayConfigIRIpDesc" = "Change the configuration temlate to avoid connecting with Iran IP ranges, restart the panel to take effect"
+"xrayConfigIRdomain" = "Ban IR domains to connect"
+"xrayConfigIRdomainDesc" = "Change the configuration temlate to avoid connecting with IR domains, restart the panel to take effect"
 "xrayConfigInbounds" = "Configuration of Inbounds"
 "xrayConfigInboundsDesc" = "Change the configuration temlate to accept special clients, restart the panel to take effect"
 "xrayConfigOutbounds" = "Configuration of Outbounds"

Some files were not shown because too many files changed in this diff