mirror of
https://github.com/key-networks/ztncui.git
synced 2025-06-05 17:53:44 +02:00
Add DNS support
This commit is contained in:
parent
48aa9585b1
commit
d6aa0e209f
5 changed files with 78 additions and 16 deletions
|
@ -443,6 +443,30 @@ exports.v6AssignMode = async function (req, res) {
|
|||
}
|
||||
}
|
||||
|
||||
// dns POST
|
||||
exports.dns = async function (req, res) {
|
||||
const navigate = {
|
||||
active: 'networks',
|
||||
whence: ''
|
||||
};
|
||||
const dns = {
|
||||
dns: {
|
||||
domain: req.body.domain,
|
||||
servers: req.body.servers
|
||||
.split('\n')
|
||||
.map(x => x.trim())
|
||||
.filter(x => !!x)
|
||||
}
|
||||
};
|
||||
try {
|
||||
const network = await zt.network_object(req.params.nwid, dns);
|
||||
navigate.whence = '/controller/network/' + network.nwid;
|
||||
res.render('dns', {title: 'dns', navigate: navigate, network: network});
|
||||
} catch (err) {
|
||||
res.render('dns', {title: 'dns', navigate: navigate, error: 'Error updating dns for network ' + req.params.nwid + ': ' + err});
|
||||
}
|
||||
}
|
||||
|
||||
// Display detail page for specific member
|
||||
exports.member_detail = async function(req, res) {
|
||||
const navigate =
|
||||
|
|
|
@ -43,6 +43,9 @@ router.get('/network/:nwid/routes/:target_ip/:target_prefix/delete', restrict, n
|
|||
// POST request for routes
|
||||
router.post('/network/:nwid/routes', restrict, networkController.routes);
|
||||
|
||||
// POST request for dns
|
||||
router.post('/network/:nwid/dns', restrict, networkController.dns);
|
||||
|
||||
// POST request for private
|
||||
router.post('/network/:nwid/private', restrict, networkController.private);
|
||||
|
||||
|
|
35
src/views/dns.pug
Normal file
35
src/views/dns.pug
Normal file
|
@ -0,0 +1,35 @@
|
|||
//-
|
||||
ztncui - ZeroTier network controller UI
|
||||
Copyright (C) 2017-2018 Key Networks (https://key-networks.com)
|
||||
Licensed under GPLv3 - see LICENSE for details.
|
||||
|
||||
extends network_layout
|
||||
|
||||
block net_content
|
||||
- const dns = network.dns || {};
|
||||
form(method='POST' action='')
|
||||
.form-group.row
|
||||
.col-sm-12
|
||||
label(for='domain') Domain:
|
||||
.col-sm-12
|
||||
input#domain.form-control(type='text' name='domain' value=dns.domain)
|
||||
|
||||
.form-group.row
|
||||
.col-sm-12
|
||||
label(for='servers') Servers:
|
||||
.col-sm-12
|
||||
textarea#servers.form-control(type='text' name='servers' placeholder='(one IP address per line)')
|
||||
= !dns.servers ? '' : dns.servers.join('\n')
|
||||
|
||||
.form-group.row
|
||||
.col-sm-12
|
||||
button.btn.btn-primary(type='submit') Submit
|
||||
= ' '
|
||||
a.btn.btn-default(href=('/controller/network/' + network.nwid) name='cancel' role='button') Cancel
|
||||
|
||||
if errors
|
||||
.row
|
||||
.col-sm-12
|
||||
ul
|
||||
for err in errors
|
||||
li!= err.msg
|
|
@ -9,11 +9,11 @@ block title
|
|||
//- don't display that title
|
||||
|
||||
block net_content
|
||||
- const nwurl = '/controller/network/' + network.nwid;
|
||||
if error
|
||||
b #{error}
|
||||
else
|
||||
form(method='POST' action=(network.nwid + '/name'))
|
||||
|
||||
form(method='POST' action=(nwurl + '/name'))
|
||||
.form-group.row
|
||||
.col-sm-2
|
||||
label(for='name') Name:
|
||||
|
@ -22,19 +22,19 @@ block net_content
|
|||
.col-sm-2.col-xs-3
|
||||
button.btn.btn-primary(type='submit') Submit
|
||||
|
||||
|
||||
a.btn.btn-primary(style="margin: 5px" href=(network.nwid + '/private') role='button')
|
||||
a.btn.btn-primary(style="margin: 5px" href=(nwurl + '/private') role='button')
|
||||
= network.private ? "Private" : "Public"
|
||||
a.btn.btn-primary(style="margin: 5px" href=(network.nwid + '/easy') role='button') Easy setup
|
||||
a.btn.btn-primary(style="margin: 5px" href=(network.nwid + '/routes') role='button') Routes
|
||||
a.btn.btn-primary(style="margin: 5px" href=(network.nwid + '/ipAssignmentPools') role='button') Assignment Pools
|
||||
a.btn.btn-primary(style="margin: 5px" href=(network.nwid + '/v4AssignMode') role='button') IPv4 Assign Mode
|
||||
a.btn.btn-primary(style="margin: 5px" href=(network.nwid + '/v6AssignMode') role='button') IPv6 Assign Mode
|
||||
a.btn.btn-primary(style="margin: 5px" href=(nwurl + '/easy') role='button') Easy setup
|
||||
a.btn.btn-primary(style="margin: 5px" href=(nwurl + '/routes') role='button') Routes
|
||||
a.btn.btn-primary(style="margin: 5px" href=(nwurl + '/ipAssignmentPools') role='button') Assignment Pools
|
||||
a.btn.btn-primary(style="margin: 5px" href=(nwurl + '/v4AssignMode') role='button') IPv4 Assign Mode
|
||||
a.btn.btn-primary(style="margin: 5px" href=(nwurl + '/v6AssignMode') role='button') IPv6 Assign Mode
|
||||
a.btn.btn-primary(style="margin: 5px" href=(nwurl + '/dns') role='button') DNS
|
||||
|
||||
if (members !== undefined)
|
||||
script.
|
||||
$(function() {
|
||||
const url = "/controller/network/#{network.nwid}/members";
|
||||
const url = "#{nwurl}/members";
|
||||
$('.authCheck').on('click', function() {
|
||||
$.post(url, {'id': this.value, 'auth': this.checked});
|
||||
});
|
||||
|
@ -63,7 +63,7 @@ block net_content
|
|||
| IP assignment
|
||||
each member in members
|
||||
tr
|
||||
- let url = '/controller/network/' + network.nwid + '/member/' + member.id
|
||||
- const url = nwurl + '/member/' + member.id
|
||||
td
|
||||
a(href=url + '/delete')
|
||||
i.glyphicon.glyphicon-trash
|
||||
|
@ -77,12 +77,12 @@ block net_content
|
|||
input.bridgeCheck(type='checkbox' value=member.id checked=(member.activeBridge? true : false))
|
||||
td
|
||||
each ipAssignment in member.ipAssignments
|
||||
a(href='/controller/network/' + network.nwid + '/member/' + member.id + '/ipAssignments')
|
||||
a(href=nwurl + '/member/' + member.id + '/ipAssignments')
|
||||
each digit in ipAssignment
|
||||
= digit
|
||||
= ' '
|
||||
else
|
||||
a(href='/controller/network/' + network.nwid + '/member/' + member.id + '/ipAssignments')
|
||||
a(href=nwurl + '/member/' + member.id + '/ipAssignments')
|
||||
| IP assignment
|
||||
else
|
||||
.alert.alert-info
|
||||
|
|
|
@ -27,19 +27,19 @@ block net_content
|
|||
|
||||
form(method='POST' action='/controller/network/' + network.nwid + '/routes')
|
||||
.form-group.row
|
||||
.col-sm-2
|
||||
.col-sm-12
|
||||
label(for='target') Target:
|
||||
.col-sm-12
|
||||
input#target.form-control(type='text' name='target' placeholder='e.g. 10.11.12.0/24' value=(undefined===route? '' : route.target))
|
||||
|
||||
.form-group.row
|
||||
.col-sm-2
|
||||
.col-sm-12
|
||||
label(for='via') Gateway:
|
||||
.col-sm-12
|
||||
input#via.form-control(type='text' name='via' placeholder='e.g. 172.16.2.1 or leave blank if the target is the ZT network' value=(undefined===route? '' : route.via))
|
||||
|
||||
.form-group.row
|
||||
.col-sm-2
|
||||
.col-sm-12
|
||||
button.btn.btn-primary(type='submit') Submit
|
||||
= ' '
|
||||
a.btn.btn-default(href=('/controller/network/' + network.nwid) name='cancel' role='button') Cancel
|
||||
|
|
Loading…
Add table
Reference in a new issue