luci-mod-network: 'srvhosts' tab added
authorPaul Dee <itsascambutmailmeanyway@gmail.com>
Wed, 19 Oct 2022 17:18:03 +0000 (19:18 +0200)
committerJo-Philipp Wich <jo@mein.io>
Thu, 20 Oct 2022 21:36:56 +0000 (23:36 +0200)
DHCP Help does not document srv-host, but they are available in dnsmasq.

This effectively implements SRV records within DNS.

Tested on 22.03.2

Signed-off-by: Paul Dee <itsascambutmailmeanyway@gmail.com>
[fix _() calls, join translation strings on the same line, replace &hellip;
 with …, fix commit subject]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js

index 2c0a557b01a6b445a4718095d59c03ee6e270fb8..d260c95814b77af5d0572c88bf056f62b92c7d1b 100644 (file)
@@ -255,6 +255,7 @@ return view.extend({
                s.tab('advanced', _('Advanced Settings'));
                s.tab('leases', _('Static Leases'));
                s.tab('hosts', _('Hostnames'));
+               s.tab('srvhosts', _('SRV'));
                s.tab('ipsets', _('IP Sets'));
 
                s.taboption('general', form.Flag, 'domainneeded',
@@ -547,6 +548,44 @@ return view.extend({
                        so.value(index, '%s (Domain: %s, Local: %s)'.format(index, val.domain || '?', val.local || '?'));
                });
 
+               o = s.taboption('srvhosts', form.SectionValue, '__srvhosts__', form.TableSection, 'srvhost', null,
+                       _('Bind service records to a domain name: specify the location of services. See <a href="%s">RFC2782</a>.').format('https://datatracker.ietf.org/doc/html/rfc2782')
+                       + '<br />' + _('_service: _sip, _ldap, _imap, _stun, _xmpp-client, … . (Note: while _http is possible, no browsers support SRV records.)')
+                       + '<br />' + _('_proto: _tcp, _udp, _sctp, _quic, … .')
+                       + '<br />' + _('You may add multiple records for the same Target.')
+                       + '<br />' + _('Larger weights (of the same prio) are given a proportionately higher probability of being selected.'));
+               ss = o.subsection;
+
+               ss.addremove = true;
+               ss.anonymous = true;
+               ss.sortable  = true;
+               ss.rowcolors = true;
+
+               so = ss.option(form.Value, 'srv', _('SRV'), _('Syntax: <code>_service._proto.example.com</code>.'));
+               so.rmempty = false;
+               so.datatype = 'hostname';
+               so.placeholder = '_sip._tcp.example.com';
+
+               so = ss.option(form.Value, 'target', _('Target'), _('CNAME or fqdn'));
+               so.rmempty = false;
+               so.datatype = 'hostname';
+               so.placeholder = 'sip.example.com';
+
+               so = ss.option(form.Value, 'port', _('Port'));
+               so.rmempty = false;
+               so.datatype = 'port';
+               so.placeholder = '5060';
+
+               so = ss.option(form.Value, 'class', _('Priority'), _('Ordinal: lower comes first.'));
+               so.rmempty = true;
+               so.datatype = 'range(0,65535)';
+               so.placeholder = '10';
+
+               so = ss.option(form.Value, 'weight', _('Weight'));
+               so.rmempty = true;
+               so.datatype = 'range(0,65535)';
+               so.placeholder = '50';
+
                o = s.taboption('hosts', form.SectionValue, '__hosts__', form.GridSection, 'domain', null,
                        _('Hostnames are used to bind a domain name to an IP address. This setting is redundant for hostnames already configured with static leases, but it can be useful to rebind an FQDN.'));