-
Reboting
+
@@ -147,6 +158,7 @@
+
diff --git a/src/web/js/loader.js b/src/web/js/loader.js
new file mode 100644
index 0000000..22e211f
--- /dev/null
+++ b/src/web/js/loader.js
@@ -0,0 +1,13 @@
+const loader = document.querySelector('.loader')
+const loaderheader = document.querySelector('#loaderheader')
+
+const defaultloaderheader = ""
+
+const start_loader = (header = defaultloaderheader) => {
+ loaderheader.innerHTML = header
+ loader.classList.add('active')
+}
+
+const stop_loader = () => {
+ loader.classList.remove('active')
+}
\ No newline at end of file
diff --git a/src/web/js/notification.js b/src/web/js/notification.js
index 52b1e91..4bb0196 100644
--- a/src/web/js/notification.js
+++ b/src/web/js/notification.js
@@ -1,7 +1,19 @@
-const notificationbox = document.querySelector('.notification')
-const notificationtext = document.querySelector('.notificationtext')
+const notificationsection = document.querySelector('.notificationsection')
+// const notificationtext = document.querySelector('.notificationtext')
const notification = (text, type) => {
+ const notificationbox = document.createElement('div')
+ const notificationtextbox = document.createElement('div')
+ const notificationtext = document.createElement('h3')
+ notificationtext.classList.add('notificationtext')
+ notificationtextbox.append(notificationtext)
+ notificationtextbox.classList.add('notificationtextbox')
+ notificationbox.append(notificationtextbox)
+ notificationbox.classList.add('notification')
+ notificationbox.addEventListener('click', () => {
+ notificationbox.classList.remove('active')
+ })
+ notificationsection.append(notificationbox)
if (type === "error") {
notificationbox.classList.remove('success')
notificationbox.classList.add('error')
@@ -10,14 +22,19 @@ const notification = (text, type) => {
notificationbox.classList.add('success')
}
notificationtext.innerHTML = text
- notificationbox.classList.add('active')
+ setTimeout(() => {
+ notificationbox.classList.add('active')
+ }, 300)
setTimeout(() => {
notificationbox.classList.remove('active')
- }, 2000)
+ setTimeout(() => {
+ notificationsection.removeChild(notificationbox)
+ }, 200)
+ }, 3000)
}
-const closenotification = () => {
- notificationbox.classList.remove('active')
-}
+// const closenotification = () => {
+ // notificationbox.classList.remove('active')
+// }
-notificationbox.addEventListener('click', closenotification)
\ No newline at end of file
+// notificationbox.addEventListener('click', closenotification)
\ No newline at end of file
diff --git a/src/web/js/reboot.js b/src/web/js/reboot.js
index 206c626..c64ec4b 100644
--- a/src/web/js/reboot.js
+++ b/src/web/js/reboot.js
@@ -1,5 +1,4 @@
const rebootbutton = document.querySelector('#rebootbutton')
-const loader = document.querySelector('.loader')
rebootbutton.addEventListener('click', () => {
get_confirm_form("Confirm reboot?", reboot)
@@ -13,7 +12,7 @@ const reboot = () => {
}).then(data => data.json()).then(jsondata => {
}).catch((error) => {
- loader.classList.add('active')
+ start_loader("Rebooting")
setTimeout(waitreboot, 2000)
})
}
@@ -23,7 +22,7 @@ const waitreboot = () => {
method: 'POST',
body: `{"token":"${localStorage.getItem("token")}"}`
}).then(res => res.json()).then(jsondata => {
- loader.classList.remove('active')
+ stop_loader()
}).catch((error) => {
waitreboot()
})
diff --git a/src/web/js/routes.js b/src/web/js/routes.js
index 08e2f6c..049ad4c 100644
--- a/src/web/js/routes.js
+++ b/src/web/js/routes.js
@@ -1,4 +1,4 @@
-const authhost = 'http://192.168.0.110:43243'
+const authhost = 'http://172.20.10.2:43243'
const host = window.location.origin
const prefix = 'api'
@@ -11,6 +11,7 @@ const routes = {
dns_status: () => [host, prefix, 'settings', 'dns', 'get'].join('/'),
dns_status_set: () => [host, prefix, 'settings', 'dns', 'set'].join('/'),
dns_servers_get: () => [host, prefix, 'settings', 'dns', 'servers', 'get'].join('/'),
+ dns_servers_set: () => [host, prefix, 'settings', 'dns', 'servers', 'set'].join('/'),
ftp_status: () => [host, prefix, 'settings', 'ftp', 'get'].join('/'),
ftp_status_set: () => [host, prefix, 'settings', 'ftp', 'set'].join('/'),
diff --git a/src/web/js/settings/confirm.js b/src/web/js/settings/confirm.js
index c6f57ce..1f3c55a 100644
--- a/src/web/js/settings/confirm.js
+++ b/src/web/js/settings/confirm.js
@@ -3,12 +3,17 @@ const confirmformheader = document.querySelector('#confirmformheader')
const cancelbutton = document.querySelector('#cancel')
const confirmformbuttons = document.querySelector('#confirmformbuttons')
-const get_confirm_form = (header, reqfunc) => {
+const defaultcancelreqfunc = () => {
+ confirmform.classList.remove('active')
+}
+
+const get_confirm_form = (header, reqfunc = defaultcancelreqfunc, cancelreqfunc = defaultcancelreqfunc) => {
console.log("confirmform")
confirmformheader.innerHTML = header
console.log("confirmformheader")
confirmform.classList.add('active')
console.log("activeconfirmform")
+
var confirmbutton = document.createElement('button')
confirmbutton.classList.add('formbutton')
confirmbutton.id = "confirm"
@@ -18,8 +23,14 @@ const get_confirm_form = (header, reqfunc) => {
confirmform.classList.remove('active')
})
confirmformbuttons.replaceChild(confirmbutton, document.querySelector('#confirm'))
-}
-cancelbutton.addEventListener('click', () => {
- confirmform.classList.remove('active')
-})
+ var cancelbutton = document.createElement('button')
+ cancelbutton.classList.add('formbutton')
+ cancelbutton.id = "cancel"
+ cancelbutton.innerHTML = "Cancel"
+ cancelbutton.addEventListener('click', () => {
+ cancelreqfunc()
+ confirmform.classList.remove('active')
+ })
+ confirmformbuttons.replaceChild(cancelbutton, document.querySelector('#cancel'))
+}
diff --git a/src/web/js/settings/dns.js b/src/web/js/settings/dns.js
index 9044bc1..7278e05 100644
--- a/src/web/js/settings/dns.js
+++ b/src/web/js/settings/dns.js
@@ -3,6 +3,14 @@ const setdnssettingsbutton = document.querySelector('#set_dns_settings')
const dnssettingbody = document.querySelector('#dnssettingsbody')
const dnsserverstablebody = document.querySelector('#dnsserverstablebody')
+const adddnsserverbutton = document.querySelector('#add_dns_server_button')
+const adddnsserverform = document.querySelector('#adddnsserverform')
+const adddnsservercancelbutton = document.querySelector('#adddnsservercancel')
+const adddnsserverconfirmbutton = document.querySelector('#adddnsserverconfirm')
+const adddnsserverinput = document.querySelector('#adddnsserverinput')
+
+let dnsservers = []
+
const get_dns_enabled_status = () => {
fetch(routes.dns_status(), {
method: 'POST',
@@ -12,7 +20,11 @@ const get_dns_enabled_status = () => {
if (jsondata.enabled === '1') {
dnsenabled.checked = true
dnssettingbody.classList.add('active')
+ adddnsserverbutton.classList.add('active')
+ // adddnsserverbutton.parentElement.classList.remove('onebutton')
return;
+ } else {
+ adddnsserverbutton.parentElement.classList.add('onebutton')
}
}).catch((error) => {
notification(`Ошибка на сервере: ${error}`, "error")
@@ -27,6 +39,7 @@ const set_dns_enabled_status = () => {
if (jsondata.enabled === '1') {
dnsenabled.checked = true
dnssettingbody.classList.add('active')
+ adddnsserverbutton.classList.add('active')
}
notification("Настройки dns сохранены", "success")
}).catch((error) => {
@@ -34,16 +47,25 @@ const set_dns_enabled_status = () => {
})
}
+const set_dns_settings = () => {
+ set_dns_enabled_status()
+ set_dns_server()
+}
+
setdnssettingsbutton.addEventListener('click', () =>{
- get_confirm_form("Confirm dns settings?", set_dns_enabled_status)
+ get_confirm_form("Confirm DNS settings?", set_dns_settings)
})
dnsenabled.addEventListener('click', () => {
if (dnsenabled.checked) {
dnssettingbody.classList.add('active')
+ adddnsserverbutton.classList.add('active')
+ adddnsserverbutton.parentElement.classList.remove('onebutton')
get_dns_server()
} else {
dnssettingbody.classList.remove('active')
+ adddnsserverbutton.classList.remove('active')
+ adddnsserverbutton.parentElement.classList.add('onebutton')
}
})
@@ -53,10 +75,61 @@ const get_dns_server = () => {
body: `{"token":"${localStorage.getItem("token")}"}`
}).then(res => res.json()).then(jsondata => {
console.log(jsondata)
+ dnsservers = jsondata.servers
+ dnsserverstablebody.innerHTML = ""
for (const server in jsondata.servers) {
- dnsserverstablebody.innerHTML += `
| ${jsondata.servers[server]} |
|---|
`
+ dnsserverstablebody.innerHTML += `
| ${jsondata.servers[server]} |
|---|
`
}
}).catch((error) => {
notification(`Ошибка на сервере: ${error}`, "error")
})
}
+
+const set_dns_server = () => {
+ start_loader("Load DNS")
+ console.log(`{"token":"${localStorage.getItem('token')}","servers":${JSON.stringify(dnsservers)}}`)
+ fetch(routes.dns_servers_set(), {
+ method: 'POST',
+ body: `{"token":"${localStorage.getItem('token')}","servers":${JSON.stringify(dnsservers)}}`
+ }).then(data => data.json()).then(jsondata => {
+ stop_loader()
+ jsondata.success ? get_dns_server() : notification("Неизвестная ошибка", "error")
+ }).catch((error) => {
+ notification(`Ошибка на сервере: ${error}`, "error")
+ })
+ adddnsserverinput.value = ""
+}
+
+const cancel_add_dns_server = () => {
+ adddnsserverform.classList.remove('active')
+ adddnsserverinput.value = ""
+}
+
+const cancel_confirm_add_dns_server = () => {
+ confirmform.classList.remove('active')
+ adddnsserverform.classList.add('active')
+}
+
+adddnsserverbutton.addEventListener('click', () => {
+ adddnsserverform.classList.add('active')
+})
+
+adddnsservercancelbutton.addEventListener('click', cancel_add_dns_server)
+
+adddnsserverconfirmbutton.addEventListener('click', () => {
+ adddnsserverform.classList.remove('active')
+ if (adddnsserverinput.value === "") {
+ return
+ }
+ dnsservers.push(adddnsserverinput.value)
+ get_confirm_form(`Confirm DNS settings? (Add DNS server: ${adddnsserverinput.value})`, set_dns_server, cancel_confirm_add_dns_server)
+})
+
+dnsserverstablebody.addEventListener('click', (e) => {
+ if (e.target.classList.contains('deldnsserverbutton')) {
+ dnsservers.splice(dnsservers.indexOf(e.target.id), 1)
+ set_dns_server()
+ console.log('del', e.target.id)
+ get_dns_server()
+ }
+})
diff --git a/src/web/js/settings/telnet.js b/src/web/js/settings/telnet.js
index 1b03cf3..98bf9e4 100644
--- a/src/web/js/settings/telnet.js
+++ b/src/web/js/settings/telnet.js
@@ -1,6 +1,7 @@
const telnetenabled = document.querySelector('#telnetenable')
const telnetsettingbody = document.querySelector('.telnetsettingbody')
const settelnetsettingsbutton = document.querySelector('#set_telnet_settings')
+const addtelnetuserbutton = document.querySelector('#add_telnet_user_button')
const get_telnet_enabled_status = () => {
fetch(routes.telnet_status(), {
@@ -10,8 +11,12 @@ const get_telnet_enabled_status = () => {
console.log(jsondata)
if (jsondata.enabled === '1') {
telnetenabled.checked = true
+ addtelnetuserbutton.classList.add('active')
+ addtelnetuserbutton.parentElement.classList.remove('onebutton')
// telnetsettingbody.classList.add('active')
return;
+ } else {
+ addtelnetuserbutton.parentElement.classList.add('onebutton')
}
}).catch((error) => {
notification(`Ошибка на сервере: ${error}`, "error")
@@ -35,9 +40,13 @@ const set_telnet_enabled_status = () => {
telnetenabled.addEventListener('click', () => {
if (telnetenabled.checked) {
+ addtelnetuserbutton.classList.add('active')
+ addtelnetuserbutton.parentElement.classList.remove('onebutton')
// telnetsettingbody.classList.add('active')
} else {
telnetsettingbody.classList.remove('active')
+ addtelnetuserbutton.classList.remove('active')
+ addtelnetuserbutton.parentElement.classList.add('onebutton')
}
})