Completes basic functionality for UI configuration

This commit is contained in:
Alicia Sykes 2021-05-17 21:04:50 +01:00
parent 062f48a6ef
commit e59f501dab
4 changed files with 45 additions and 164 deletions

View File

@ -1,165 +1,33 @@
--- ---
pageInfo: pageInfo:
title: Networking Services title: Dashy
navLinks:
- title: Home
path: /
- title: About
path: /about
- title: Source Code
path: https://github.com/Lissy93/dashy
appConfig:
theme: colorful
fontAwesomeKey: 0821c65656
sections: sections:
- name: Firewall - name: Getting Started
items: items:
- title: OPNsense - title: Source
description: Firewall Central Management description: Source code and documentation on GitHub
icon: networking/opnsense.png icon: fab fa-github
target: iframe url: https://github.com/Lissy93/dashy
url: https://192.168.1.1 - title: Issues
- title: NetData description: View currently open issues, or raise a new one
description: System resource usage on firewall icon: fas fa-bug
icon: networking/netdata.png url: https://github.com/Lissy93/dashy/issues
url: http://192.168.1.1:19999/ - title: Demo 1
- title: MalTrail description: 'Live Demo #1'
description: Malicious traffic detection system icon: far fa-rocket
icon: networking/maltrail.png url: https://dashy-demo-1.netlify.app
url: http://192.168.1.1:8338 - title: Demo 2
- title: Ntopng description: 'Live Demo #2'
description: Network traffic probe and network use monitor icon: fad fa-planet-ringed
icon: networking/ntop.png url: https://dashy-demo-2.netlify.app
url: http://192.168.1.1:3001
- title: Sensei
description: Additional data features
icon: networking/sensei.png
url: https://192.168.1.1/ui/sensei/
- title: Monit
description: Status of firewall system alerts
icon: networking/monit.png
url: https://192.168.1.1/ui/monit/status
- title: Firewall Logs
description: Real-time view of firewall data and logs
icon: networking/logs.png
url: https://192.168.1.1/ui/diagnostics/firewall/log
- title: WireGuard
description: Manage WireGuard client and server on firewall
icon: networking/wireguard.png
url: https://192.168.1.1/ui/wireguard/general
- name: DNS Device
displayData:
collapsed: false
rows: 2
items:
- title: Pi-Hole
description: DNS settings for ad & tracker blocking
icon: networking/pihole.png
url: http://192.168.130.2/admin
- title: PiAlert
description: Presence monitoring and ARP scanning
icon: networking/pialert.png
url: http://192.168.130.2/pialert/
- title: SmokePing
description: Network latency monitoring
icon: networking/smokeping.png
url: http://192.168.130.2:8086/
- title: StatPing
description: Up-time monitoring for local service
icon: networking/statping.png
url: http://192.168.130.2:8083/
- title: LibreSpeed
description: Local network speed and latency test
icon: networking/librespeed.png
url: http://192.168.130.2:49154/
- title: NetData
description: Real-time system resource usage
icon: networking/netdata.png
url: http://192.168.130.2:19999
- title: Portainer
description: Docker container management
icon: networking/portainer.png
url: http://192.168.130.2:9000/
- title: cAdvisor
description: Container monitoring
icon: networking/cadvisor.png
url: http://192.168.130.2:8084/
- title: Glances
description: Simple resource usage
icon: networking/glances.png
url: http://192.168.130.2:61208
- title: Dozzle
description: Docker container web log viewer
icon: networking/dozzle.png
url: http://192.168.130.2:8093
- title: Prometheus
description: System Statistics Aggregation with PromQL
icon: networking/prometheus.png
url: http://192.168.130.2:8090/
- title: Grafana
description: Data visualised on dashboards
icon: networking/grafana.png
url: http://192.168.130.2:8091/
- name: External Services
items:
- title: DuckDNS
description: Dynamic DNS for fixed public IP
icon: networking/duckdns.png
url: https://www.duckdns.org/
- title: BorgBase
description: Off-site system Borg backups
icon: networking/borgbase.png
url: https://www.borgbase.com/repositories
- title: Mullvad
description: Hosted VPN provider
icon: networking/mullvad.png
url: https://mullvad.net/en/account/
- title: ZeroTier
description: Secure networks between devices
icon: networking/zeroteir.png
url: https://my.zerotier.com/
- title: HealthChecks
description: Cron Job Monitoring
icon: networking/healthchecks.png
url: https://healthchecks.io/checks/
- title: ISP - Vodafone
description: Broadband internet provider
icon: networking/vodafone.png
url: https://myaccount.vodafone.co.uk/
- title: Digital Ocean
description: Cloud Hosting
icon: networking/digital-ocean.png
url: https://cloud.digitalocean.com/
- title: CloudFlare
description: Domain and DNS Management
icon: networking/cloudflare.png
url: https://dash.cloudflare.com/
- name: Other Devices
items:
- title: Modem
description: ISP Router Modem Combo
icon: ''
url: http://192.168.1.5
- title: Wireless Access Point
description: View clients connected to WiFi
icon: ''
url: http://192.168.1.109/info.php
- title: Fing
description: Monitor connectivity issues, ISP quality, health checks and troubleshooting
provider: Fing
icon: ''
url: https://app.fing.com/
- title: Switch
description: Manage VLANs on Ubiquity Ethernet switch
icon: ''
url: "#"
- name: External Utilities
displayData:
collapsed: true
items:
- title: Public IP
description: Check public IP and associated data
icon: ''
url: https://www.whatismyip.com/
- title: Who Is Lookup
description: Check ICAN info for a given IP address or domain
icon: ''
url: https://whois.domaintools.com/
- title: Speed Test
description: Upload + download speeds and latency
icon: ''
url: https://speed.cloudflare.com/
- title: Mullvad Check
description: Confirms a secure connection to Mullvad's WireGuard servers
icon: ''
url: https://mullvad.net/check

View File

@ -27,7 +27,13 @@ export default {
/* Returns either page info from the config, or default values */ /* Returns either page info from the config, or default values */
getPageInfo(pageInfo) { getPageInfo(pageInfo) {
const defaults = Defaults.pageInfo; const defaults = Defaults.pageInfo;
const localPageInfo = JSON.parse(localStorage[localStorageKeys.PAGE_INFO]);
let localPageInfo;
try {
localPageInfo = JSON.parse(localStorage[localStorageKeys.PAGE_INFO]);
} catch (e) {
localPageInfo = {};
}
if (pageInfo) { if (pageInfo) {
return { return {
title: localPageInfo.title || pageInfo.title || defaults.title, title: localPageInfo.title || pageInfo.title || defaults.title,

View File

@ -36,6 +36,7 @@ export default {
pageInfo.footerText = this.formElements.footerText; pageInfo.footerText = this.formElements.footerText;
localStorage.setItem(localStorageKeys.PAGE_INFO, JSON.stringify(pageInfo)); localStorage.setItem(localStorageKeys.PAGE_INFO, JSON.stringify(pageInfo));
this.$toasted.show('Changes seved succesfully'); this.$toasted.show('Changes seved succesfully');
setTimeout(() => { location.reload(); }, 1500); // eslint-disable-line no-restricted-globals
}, },
}, },
data() { data() {

View File

@ -2,11 +2,17 @@ import Vue from 'vue';
import Router from 'vue-router'; import Router from 'vue-router';
import Home from './views/Home.vue'; import Home from './views/Home.vue';
import conf from '../public/conf.yml'; // Main site configuration import conf from '../public/conf.yml'; // Main site configuration
import { pageInfo as defaultPageInfo } from './utils/defaults'; import { pageInfo as defaultPageInfo, localStorageKeys } from './utils/defaults';
Vue.use(Router); Vue.use(Router);
const { sections, pageInfo, appConfig } = conf; const { sections, pageInfo, appConfig } = conf;
let localPageInfo;
try {
localPageInfo = JSON.parse(localStorage[localStorageKeys.PAGE_INFO]);
} catch (e) {
localPageInfo = undefined;
}
const router = new Router({ const router = new Router({
routes: [ routes: [
@ -16,7 +22,7 @@ const router = new Router({
component: Home, component: Home,
props: { props: {
sections: sections || [], sections: sections || [],
pageInfo: pageInfo || defaultPageInfo, pageInfo: localPageInfo || pageInfo || defaultPageInfo,
appConfig: appConfig || {}, appConfig: appConfig || {},
}, },
meta: { meta: {