luci-app-shadowsocks-libev: local_{ipv4,ipv6}_address for ss_server
authorYousong Zhou <yszhou4tech@gmail.com>
Wed, 29 Jul 2020 06:53:32 +0000 (14:53 +0800)
committerYousong Zhou <yszhou4tech@gmail.com>
Mon, 3 Aug 2020 03:53:26 +0000 (11:53 +0800)
Following changes are related and included in the same commit

 - Deprecate bind_address by not displaying and handling it in the UI
 - Allow ipv6 address for the old local_address option

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
applications/luci-app-shadowsocks-libev/htdocs/luci-static/resources/shadowsocks-libev.js
applications/luci-app-shadowsocks-libev/htdocs/luci-static/resources/view/shadowsocks-libev/instances.js

index ef93a1c754f4e604c19273ed07ba130ee80ec694..c0f1ced5534faab6e7038467a498dd73c41bf9cc 100644 (file)
@@ -21,6 +21,7 @@ var names_options_client = [
 ];
 
 var names_options_common = [
+       'local_address',
        'verbose',
        'ipv6_first',
        'fast_open',
@@ -100,7 +101,7 @@ return baseclass.extend({
                        }
                });
        },
-       values_ipaddr: function(o, netDevs) {
+       values_ip4addr: function(o, netDevs) {
                netDevs.forEach(function(v) {
                        v.getIPAddrs().forEach(function(a) {
                                var host = a.split('/')[0];
@@ -108,6 +109,18 @@ return baseclass.extend({
                        });
                });
        },
+       values_ip6addr: function(o, netDevs) {
+               netDevs.forEach(function(v) {
+                       v.getIP6Addrs().forEach(function(a) {
+                               var host = a.split('/')[0];
+                               o.value(host, '%s (%s)'.format(host, v.getShortName()));
+                       });
+               });
+       },
+       values_ipaddr: function(o, netDevs) {
+               this.values_ip4addr(o, netDevs)
+               this.values_ip6addr(o, netDevs)
+       },
        options_client: function(s, tab, netDevs) {
                var o = s.taboption(tab, form.ListValue, 'server', _('Remote server'));
                this.values_serverlist(o);
@@ -191,7 +204,7 @@ return baseclass.extend({
                if (stype === 'ss_server') {
                        this.cfgvalue_overview_(sdata, lines, names_options_server);
                        this.cfgvalue_overview_(sdata, lines, names_options_common);
-                       this.cfgvalue_overview_(sdata, lines, ['bind_address']);
+                       this.cfgvalue_overview_(sdata, lines, ['local_ipv4_address', 'local_ipv6_address']);
                } else if (stype === 'ss_local' || stype === 'ss_redir' || stype === 'ss_tunnel') {
                        this.cfgvalue_overview_(sdata, lines, names_options_client);
                        if (stype === 'ss_tunnel') {
index 9a591d596245db3a060a30c15205c69ddb18c8fc..671f17a9e41072b807d914e721b648bd34200d29 100644 (file)
@@ -84,12 +84,21 @@ return view.extend({
 
                                        if (stype === 'ss_server') {
                                                ss.options_server(s, { tab: 'general' });
-                                               o = s.taboption('general', form.Value, 'bind_address',
-                                                       _('Bind address'),
-                                                       _('The address ss-server will initiate connection from'));
+                                               o = s.taboption('advanced', form.Value, 'local_address',
+                                                       _('Local address'),
+                                                       _('The address ss-server will initiate connections from'));
                                                o.datatype = 'ipaddr';
-                                               o.placeholder = '0.0.0.0';
                                                ss.values_ipaddr(o, res[1]);
+                                               o = s.taboption('advanced', form.Value, 'local_ipv4_address',
+                                                       _('Local IPv4 address'),
+                                                       _('The IPv4 address ss-server will initiate IPv4 connections from'));
+                                               o.datatype = 'ip4addr';
+                                               ss.values_ip4addr(o, res[1]);
+                                               o = s.taboption('advanced', form.Value, 'local_ipv6_address',
+                                                       _('Local IPv6 address'),
+                                                       _('The IPv6 address ss-server will initiate IPv6 connections from'));
+                                               o.datatype = 'ip6addr';
+                                               ss.values_ip6addr(o, res[1]);
                                        } else {
                                                ss.options_client(s, 'general', res[1]);
                                                if (stype === 'ss_tunnel') {