diff --git a/README.md b/README.md
index c6089fb5..c3854821 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
Statping - Web and App Status Monitoring for Any Type of Project
-View Wiki | Demo | iPhone | Android
API | Docker | EC2 | Mac | Linux | Windows
+View Wiki | Demo | iPhone | Android
API | Docker | EC2 | Mac | Linux | Windows
# Statping - Status Page & Monitoring Server
diff --git a/cmd/cli.go b/cmd/cli.go
index 2af7da54..ffbed998 100644
--- a/cmd/cli.go
+++ b/cmd/cli.go
@@ -46,7 +46,7 @@ func exportCli(args []string) error {
if err := source.Assets(); err != nil {
return err
}
- config, err := configs.LoadConfigs()
+ config, err := configs.LoadConfigs(configFile)
if err != nil {
return err
}
@@ -168,7 +168,7 @@ func importCli(args []string) error {
log.Printf("Messages: %d\n", len(exportData.Messages))
log.Printf("Users: %d\n", len(exportData.Users))
- config, err := configs.LoadConfigs()
+ config, err := configs.LoadConfigs(configFile)
if err != nil {
return err
}
@@ -258,7 +258,7 @@ func updateDisplay() error {
// runOnce will initialize the Statping application and check each service 1 time, will not run HTTP server
func runOnce() error {
- config, err := configs.LoadConfigs()
+ config, err := configs.LoadConfigs(configFile)
if err != nil {
return errors.Wrap(err, "config.yml file not found")
}
diff --git a/cmd/flags.go b/cmd/flags.go
index 85ba871d..130a958e 100644
--- a/cmd/flags.go
+++ b/cmd/flags.go
@@ -3,6 +3,14 @@ package main
import (
"github.com/spf13/cobra"
"github.com/spf13/viper"
+ "github.com/statping/statping/utils"
+)
+
+var (
+ ipAddress string
+ configFile string
+ verboseMode int
+ port int
)
func parseFlags(cmd *cobra.Command) {
@@ -14,4 +22,7 @@ func parseFlags(cmd *cobra.Command) {
cmd.PersistentFlags().IntVarP(&verboseMode, "verbose", "v", 2, "verbose logging")
viper.BindPFlag("verbose", cmd.PersistentFlags().Lookup("verbose"))
+
+ cmd.PersistentFlags().StringVarP(&configFile, "config", "c", utils.Directory+"/config.yml", "path to config.yml file")
+ viper.BindPFlag("config", cmd.PersistentFlags().Lookup("config"))
}
diff --git a/cmd/main.go b/cmd/main.go
index 01416ce7..14f98f0a 100644
--- a/cmd/main.go
+++ b/cmd/main.go
@@ -20,13 +20,9 @@ var (
// VERSION stores the current version of Statping
VERSION string
// COMMIT stores the git commit hash for this version of Statping
- COMMIT string
- ipAddress string
- //grpcPort int
- verboseMode int
- port int
- log = utils.Log.WithField("type", "cmd")
- confgs *configs.DbConfig
+ COMMIT string
+ log = utils.Log.WithField("type", "cmd")
+ confgs *configs.DbConfig
)
func init() {
@@ -83,7 +79,7 @@ func start() {
// log.Warnln(err)
//}
- confgs, err = configs.LoadConfigs()
+ confgs, err = configs.LoadConfigs(configFile)
if err != nil {
log.Infoln("Starting in Setup Mode")
if err := SetupMode(); err != nil {
diff --git a/frontend/src/components/Index/GroupServiceFailures.vue b/frontend/src/components/Index/GroupServiceFailures.vue
index a18926fb..96c5d2ab 100644
--- a/frontend/src/components/Index/GroupServiceFailures.vue
+++ b/frontend/src/components/Index/GroupServiceFailures.vue
@@ -34,11 +34,12 @@ export default {
},
computed: {
service_txt() {
- if (!this.service.online) {
- if (!this.toUnix(this.service.last_success)) {
+ const s = this.service
+ if (!s.online) {
+ if (!this.toUnix(this.parseISO(s.last_success))) {
return `Always Offline`
}
- return `Offline for ${this.ago(this.service.last_success)}`
+ return `Offline for ${this.ago(s.last_success)}`
}
return `${this.service.online_24_hours}% Uptime`
}
diff --git a/frontend/src/components/Service/ServiceBlock.vue b/frontend/src/components/Service/ServiceBlock.vue
index 66703423..88264a69 100644
--- a/frontend/src/components/Service/ServiceBlock.vue
+++ b/frontend/src/components/Service/ServiceBlock.vue
@@ -232,7 +232,7 @@ export default {
if (last) {
return `Offline, last error: ${last} ${this.ago(last.created_at)}`
}
- return `Service is offline for ${this.ago(s.last_success)}`
+ return `Service has been offline for ${this.ago(s.last_success)}`
}
},
visibleChart(isVisible, entry) {
diff --git a/frontend/src/pages/Settings.vue b/frontend/src/pages/Settings.vue
index 3de2739d..0801519f 100644
--- a/frontend/src/pages/Settings.vue
+++ b/frontend/src/pages/Settings.vue
@@ -295,15 +295,23 @@
return this.$store.getters.notifiers
}
},
- async mounted() {
- this.cache = await Api.cache()
+ mounted() {
+ this.update()
},
- async created() {
- const c = this.core
- this.qrurl = `statping://setup?domain=${c.domain}&api=${c.api_secret}`
- this.qrcode = "https://chart.googleapis.com/chart?chs=500x500&cht=qr&chl=" + encodeURI(this.qrurl)
+ created() {
+ this.update()
},
methods: {
+ async update() {
+ const c = await Api.core()
+ this.$store.commit('setCore', c)
+ const n = await Api.notifiers()
+ this.$store.commit('setNotifiers', n)
+
+ this.qrurl = `statping://setup?domain=${c.domain}&api=${c.api_secret}`
+ this.qrcode = "https://chart.googleapis.com/chart?chs=500x500&cht=qr&chl=" + encodeURI(this.qrurl)
+ this.cache = await Api.cache()
+ },
changeTab(e) {
this.tab = e.target.id
},
diff --git a/types/configs/file.go b/types/configs/file.go
index ed44173e..f336e62f 100644
--- a/types/configs/file.go
+++ b/types/configs/file.go
@@ -21,7 +21,7 @@ func ConnectConfigs(configs *DbConfig, retry bool) error {
return nil
}
-func LoadConfigs() (*DbConfig, error) {
+func LoadConfigs(cfgFile string) (*DbConfig, error) {
writeAble, err := utils.DirWritable(utils.Directory)
if err != nil {
return nil, err
@@ -30,7 +30,7 @@ func LoadConfigs() (*DbConfig, error) {
return nil, errors.Errorf("Directory %s is not writable!", utils.Directory)
}
- return LoadConfigFile(utils.Directory)
+ return LoadConfigFile(cfgFile)
}
func findDbFile(configs *DbConfig) (string, error) {
diff --git a/types/configs/load.go b/types/configs/load.go
index 9fd8be1f..6bb6d79d 100644
--- a/types/configs/load.go
+++ b/types/configs/load.go
@@ -7,15 +7,15 @@ import (
"os"
)
-func LoadConfigFile(directory string) (*DbConfig, error) {
+func LoadConfigFile(configFile string) (*DbConfig, error) {
p := utils.Params
- log.Infof("Attempting to read config file at: %s/config.yml ", directory)
- p.SetConfigFile(directory + "/config.yml")
+ log.Infof("Attempting to read config file at: %s", configFile)
+ p.SetConfigFile(configFile)
p.SetConfigType("yaml")
p.ReadInConfig()
db := new(DbConfig)
- content, err := utils.OpenFile(directory + "/config.yml")
+ content, err := utils.OpenFile(configFile)
if err == nil {
if err := yaml.Unmarshal([]byte(content), &db); err != nil {
return nil, err
@@ -66,7 +66,7 @@ func LoadConfigFile(directory string) (*DbConfig, error) {
Location: utils.Directory,
SqlFile: p.GetString("SQL_FILE"),
}
- log.WithFields(utils.ToFields(configs)).Debugln("read config file: " + directory + "/config.yml")
+ log.WithFields(utils.ToFields(configs)).Debugln("read config file: " + configFile)
if configs.DbConn == "" {
return configs, errors.New("Starting in setup mode")