From 6d3e2041312fc2d1cdb3629616911e016aa3a757 Mon Sep 17 00:00:00 2001 From: Hunter Long Date: Wed, 29 Jan 2020 20:34:47 -0800 Subject: [PATCH] updates --- core/checker.go | 12 +- frontend/package.json | 3 +- frontend/src/components/API.js | 16 ++ .../Dashboard/DashboardMessages.vue | 29 ++-- .../Dashboard/DashboardServices.vue | 28 ++-- .../components/Dashboard/DashboardUsers.vue | 16 +- .../src/components/Dashboard/EditService.vue | 15 +- .../src/components/Dashboard/ServiceInfo.vue | 6 +- frontend/src/components/Footer.vue | 2 +- .../src/components/Service/ServiceBlock.vue | 2 +- frontend/src/forms/CoreSettings.vue | 22 ++- frontend/src/forms/Group.vue | 51 ++++++- frontend/src/forms/Message.vue | 137 +++++++++++------- frontend/src/forms/Service.vue | 40 +++-- frontend/src/forms/Setup.vue | 14 +- frontend/src/forms/User.vue | 57 ++++++-- frontend/src/mixin.js | 15 +- frontend/src/pages/Service.vue | 22 +-- frontend/src/store.js | 6 +- frontend/yarn.lock | 12 ++ handlers/routes.go | 1 + handlers/services.go | 18 +++ 22 files changed, 356 insertions(+), 168 deletions(-) diff --git a/core/checker.go b/core/checker.go index 6324056d..574051aa 100644 --- a/core/checker.go +++ b/core/checker.go @@ -44,11 +44,11 @@ func checkServices() { func (s *Service) Check(record bool) { switch s.Type { case "http": - s.checkHttp(record) + s.CheckHttp(record) case "tcp", "udp": - s.checkTcp(record) + s.CheckTcp(record) case "icmp": - s.checkIcmp(record) + s.CheckIcmp(record) } } @@ -122,7 +122,7 @@ func isIPv6(address string) bool { } // checkIcmp will send a ICMP ping packet to the service -func (s *Service) checkIcmp(record bool) *Service { +func (s *Service) CheckIcmp(record bool) *Service { p := fastping.NewPinger() resolveIP := "ip4:icmp" if isIPv6(s.Domain) { @@ -148,7 +148,7 @@ func (s *Service) checkIcmp(record bool) *Service { } // checkTcp will check a TCP service -func (s *Service) checkTcp(record bool) *Service { +func (s *Service) CheckTcp(record bool) *Service { dnsLookup, err := s.dnsCheck() if err != nil { if record { @@ -188,7 +188,7 @@ func (s *Service) checkTcp(record bool) *Service { } // checkHttp will check a HTTP service -func (s *Service) checkHttp(record bool) *Service { +func (s *Service) CheckHttp(record bool) *Service { dnsLookup, err := s.dnsCheck() if err != nil { if record { diff --git a/frontend/package.json b/frontend/package.json index aec50be9..2d35cefc 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,7 +5,7 @@ "scripts": { "serve": "vue-cli-service serve", "build": "rm -rf dist && cross-env NODE_ENV=production webpack", - "dev": "cross-env NODE_ENV=development webpack-dev-server --progress", + "dev": "cross-env NODE_ENV=development webpack-dev-server --host 0.0.0.0 --port 8888 --progress", "lint": "vue-cli-service lint" }, "dependencies": { @@ -22,6 +22,7 @@ "querystring": "^0.2.0", "vue": "^2.6.10", "vue-apexcharts": "^1.5.2", + "vue-flatpickr-component": "^8.1.5", "vue-moment": "^4.1.0", "vue-router": "~3.0", "vuedraggable": "^2.23.2", diff --git a/frontend/src/components/API.js b/frontend/src/components/API.js index 1a5e9a55..3e3f13c6 100644 --- a/frontend/src/components/API.js +++ b/frontend/src/components/API.js @@ -64,6 +64,10 @@ class Api { return axios.post('/api/groups', data).then(response => (response.data)) } + async group_update (data) { + return axios.post('/api/groups/'+data.id, data).then(response => (response.data)) + } + async users () { return axios.get('/api/users').then(response => (response.data)) } @@ -72,6 +76,10 @@ class Api { return axios.post('/api/users', data).then(response => (response.data)) } + async user_update (data) { + return axios.post('/api/users/'+data.id, data).then(response => (response.data)) + } + async user_delete (id) { return axios.delete('/api/users/'+id).then(response => (response.data)) } @@ -80,6 +88,14 @@ class Api { return axios.get('/api/messages').then(response => (response.data)) } + async message_create (data) { + return axios.post('/api/messages', data).then(response => (response.data)) + } + + async message_update (data) { + return axios.post('/api/messages/'+data.id, data).then(response => (response.data)) + } + async message_delete (id) { return axios.delete('/api/messages/'+id).then(response => (response.data)) } diff --git a/frontend/src/components/Dashboard/DashboardMessages.vue b/frontend/src/components/Dashboard/DashboardMessages.vue index 8a5d0363..999597a7 100644 --- a/frontend/src/components/Dashboard/DashboardMessages.vue +++ b/frontend/src/components/Dashboard/DashboardMessages.vue @@ -16,13 +16,13 @@ {{message.title}} - {{service(message.service)}} + {{service(message.service)}} {{message.start_on}}
- Edit - + Edit +
@@ -31,15 +31,8 @@ + -
-

Create Message

-
-
- -
-
-
@@ -52,12 +45,22 @@ components: {FormMessage}, data () { return { - + edit: false, + message: {} } }, methods: { + editChange(v) { + this.message = {} + this.edit = v + }, + editMessage(m, mode) { + this.message = m + this.edit = !mode + }, service (id) { - return this.$store.getters.serviceById(id).name || "" + const s = this.$store.getters.serviceById(id) || {} + return s.name || "Global Message" }, async deleteMessage(m) { let c = confirm(`Are you sure you want to delete message '${m.title}'?`) diff --git a/frontend/src/components/Dashboard/DashboardServices.vue b/frontend/src/components/Dashboard/DashboardServices.vue index 0c28bda6..955643a2 100644 --- a/frontend/src/components/Dashboard/DashboardServices.vue +++ b/frontend/src/components/Dashboard/DashboardServices.vue @@ -6,6 +6,7 @@ Create + @@ -16,7 +17,7 @@ - +
@@ -40,7 +41,7 @@ View - + @@ -74,8 +75,8 @@ @@ -85,13 +86,7 @@
-

Create Group

- -
-
- -
-
+ @@ -112,7 +107,8 @@ }, data () { return { - + edit: false, + group: {} } }, computed: { @@ -149,6 +145,14 @@ }, methods: { + editChange(v) { + this.group = {} + this.edit = v + }, + editGroup(g, mode) { + this.group = g + this.edit = !mode + }, reordered_services() { }, diff --git a/frontend/src/components/Dashboard/DashboardUsers.vue b/frontend/src/components/Dashboard/DashboardUsers.vue index a263741d..e8b92439 100644 --- a/frontend/src/components/Dashboard/DashboardUsers.vue +++ b/frontend/src/components/Dashboard/DashboardUsers.vue @@ -14,15 +14,15 @@ {{user.username}}
- Edit - + Edit +
- + @@ -36,13 +36,17 @@ data () { return { edit: false, - user: null + user: {} } }, methods: { - editUser(u) { - this.edit = true + editChange(v) { + this.user = {} + this.edit = v + }, + editUser(u, mode) { this.user = u + this.edit = !mode }, async deleteUser(u) { let c = confirm(`Are you sure you want to delete user '${u.username}'?`) diff --git a/frontend/src/components/Dashboard/EditService.vue b/frontend/src/components/Dashboard/EditService.vue index 5329c3a9..991bf1e5 100644 --- a/frontend/src/components/Dashboard/EditService.vue +++ b/frontend/src/components/Dashboard/EditService.vue @@ -1,6 +1,10 @@ @@ -25,15 +29,16 @@ data () { return { ready: false, - service: null + service: {} } }, computed: { }, async beforeCreate() { - if (this.$route.params.id) { - this.service = await Api.service(this.$route.params.id) + const id = this.$route.params.id + if (id) { + this.service = await Api.service(id) } this.ready = true }, diff --git a/frontend/src/components/Dashboard/ServiceInfo.vue b/frontend/src/components/Dashboard/ServiceInfo.vue index cc39f0e6..52d16256 100644 --- a/frontend/src/components/Dashboard/ServiceInfo.vue +++ b/frontend/src/components/Dashboard/ServiceInfo.vue @@ -1,8 +1,10 @@ diff --git a/frontend/src/components/Service/ServiceBlock.vue b/frontend/src/components/Service/ServiceBlock.vue index fdb5a00a..78711b0d 100644 --- a/frontend/src/components/Service/ServiceBlock.vue +++ b/frontend/src/components/Service/ServiceBlock.vue @@ -35,7 +35,7 @@ Online, last Failure was Wednesday 1:16:49PM, Dec 18 2019
- View Service + View Service
diff --git a/frontend/src/forms/CoreSettings.vue b/frontend/src/forms/CoreSettings.vue index c3823717..9ceea0ed 100644 --- a/frontend/src/forms/CoreSettings.vue +++ b/frontend/src/forms/CoreSettings.vue @@ -84,7 +84,7 @@
- + API Key can be used for read only routes
@@ -92,7 +92,7 @@
- + API Secret is used for read, create, update and delete routes You can Regenerate API Keys if you need to.
@@ -102,21 +102,15 @@ diff --git a/frontend/src/forms/Group.vue b/frontend/src/forms/Group.vue index eabcbe40..19f789f4 100644 --- a/frontend/src/forms/Group.vue +++ b/frontend/src/forms/Group.vue @@ -1,9 +1,17 @@ diff --git a/frontend/src/forms/Message.vue b/frontend/src/forms/Message.vue index c1fe7bc9..ea98727b 100644 --- a/frontend/src/forms/Message.vue +++ b/frontend/src/forms/Message.vue @@ -1,56 +1,42 @@ diff --git a/frontend/src/forms/Service.vue b/frontend/src/forms/Service.vue index c366aa6c..f5e76b4e 100644 --- a/frontend/src/forms/Service.vue +++ b/frontend/src/forms/Service.vue @@ -38,7 +38,7 @@
-

Request Details

+

Request Details

@@ -82,7 +82,7 @@
- +
@@ -146,8 +146,12 @@
-
- +
+ +
+ +
+
@@ -178,7 +182,7 @@ check_interval: 60, timeout: 15, permalink: "", - order: 0, + order: 1, verify_ssl: true, allow_notifications: true, public: true, @@ -186,16 +190,17 @@ groups: [], } }, - props: { - in_service: { - type: Object, - required: false, - } - }, - async created() { - if (this.props.in_service) { - this.service = this.props.in_service - } + props: { + in_service: { + type: Object + } + }, + watch: { + in_service() { + this.service = this.in_service + } + }, + async mounted() { if (!this.$store.getters.groups) { const groups = await Api.groups() this.$store.commit('setGroups', groups) @@ -211,7 +216,10 @@ delete s.last_success delete s.latency delete s.online_24_hours - await Api.service_save() + await Api.service_create(s) + }, + async testService(e) { + } } } diff --git a/frontend/src/forms/Setup.vue b/frontend/src/forms/Setup.vue index 17f576b5..5e08abf7 100644 --- a/frontend/src/forms/Setup.vue +++ b/frontend/src/forms/Setup.vue @@ -6,7 +6,7 @@
-
+
@@ -147,15 +147,13 @@ this.loading = false return } - await this.completeAuth() - this.loading = false - this.$router.push('') - }, - async completeAuth() { - const auth = await Api.login(this.setup.username, this.setup.password) - this.auth = Api.saveToken(this.setup.username, auth.token) + const auth = await Api.login(s.username, s.password) + this.auth = Api.saveToken(s.username, auth.token) await this.$store.dispatch('loadAdmin') + + this.loading = false + this.$router.push('/') } } } diff --git a/frontend/src/forms/User.vue b/frontend/src/forms/User.vue index d38c1da7..b5746966 100644 --- a/frontend/src/forms/User.vue +++ b/frontend/src/forms/User.vue @@ -1,6 +1,9 @@