From f8e60bead5facd43241347e786ddb00fb1f2a632 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 00:04:18 -0700 Subject: [PATCH 01/52] systemctl command --- CloudronManifest.json | 19 ++++++++++++++ cmd/cli.go | 61 +++++++++++++++++++++++++++++++++++++++++-- cmd/commands.go | 18 ++++++++++--- 3 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 CloudronManifest.json diff --git a/CloudronManifest.json b/CloudronManifest.json new file mode 100644 index 00000000..7ae27752 --- /dev/null +++ b/CloudronManifest.json @@ -0,0 +1,19 @@ +{ + "id": "com.statping", + "title": "Statping", + "author": "Hunter Long ", + "description": "Monitor your web services and remote servers", + "tagline": "Server Monitoring", + "version": "0.90.61", + "healthCheckPath": "/health", + "httpPort": 8080, + "addons": { + "localstorage": {} + }, + "manifestVersion": 2, + "website": "https://github.com/statping/statping", + "contactEmail": "info@statping.com", + "icon": "https://assets.statping.com/icon.png", + "tags": [ "monitoring", "uptime" ], + "mediaLinks": [ "https://assets.statping.com/cloudron.png" ] +}s diff --git a/cmd/cli.go b/cmd/cli.go index 389b0ca4..e3c2d20a 100644 --- a/cmd/cli.go +++ b/cmd/cli.go @@ -34,8 +34,65 @@ func assetsCli() error { return nil } -func systemctlCli() error { - fmt.Println("still in the works...") +func systemctlCli(dir string, uninstall bool, port int64) error { + location := "/etc/systemd/system/statping.service" + + if uninstall { + if _, _, err := utils.Command("systemctl", "stop", "statping"); err != nil { + log.Errorln(err) + } + if _, _, err := utils.Command("systemctl", "disable", "statping"); err != nil { + log.Errorln(err) + } + if err := utils.DeleteFile(location); err != nil { + log.Errorln(err) + } + return nil + } + if ok := utils.FolderExists(dir); !ok { + return errors.New("directory does not exist: " + dir) + } + + binPath, err := os.Executable() + if err != nil { + return err + } + + config := []byte(`[Unit] +Description=Statping Server +After=network.target +After=systemd-user-sessions.service +After=network-online.target + +[Service] +Type=simple +Restart=always +Environment=STATPING_DIR=` + dir + ` +Environment=ALLOW_REPORTS=true +ExecStart=` + binPath + ` --port=` + utils.ToString(port) + ` +WorkingDirectory=` + dir + ` + +[Install] +WantedBy=multi-user.target" +`) + fmt.Println("Saving systemctl service to: ", location) + fmt.Printf("Using directory %s for Statping data\n", dir) + fmt.Printf("Running on port %d\n", port) + if err := utils.SaveFile(location, config); err != nil { + return err + } + if _, _, err := utils.Command("systemctl", "daemon-reload"); err != nil { + return err + } + if _, _, err := utils.Command("systemctl", "enable", "statping.service"); err != nil { + return err + } + if _, _, err := utils.Command("systemctl", "start", "statping"); err != nil { + return err + } + fmt.Println("Statping was will auto start on reboots") + fmt.Println("systemctl service: /etc/systemd/system/statping.service") + return nil } diff --git a/cmd/commands.go b/cmd/commands.go index b9609115..19d2b59c 100644 --- a/cmd/commands.go +++ b/cmd/commands.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/pkg/errors" "github.com/spf13/cobra" + "github.com/statping/statping/utils" "io" "os" "os/exec" @@ -72,17 +73,26 @@ var versionCmd = &cobra.Command{ var systemctlCmd = &cobra.Command{ Use: "systemctl [install/uninstall]", - Short: "Install or Uninstall systemctl links", + Short: "Install or Uninstall systemctl services", RunE: func(cmd *cobra.Command, args []string) error { - if err := systemctlCli(); err != nil { + if args[1] == "install" { + if len(args) < 3 { + return errors.New("requires 'install '") + } + } + port := utils.ToInt(args[2]) + if port == 0 { + port = 80 + } + if err := systemctlCli(args[1], args[0] == "uninstall", port); err != nil { return err } os.Exit(0) return nil }, Args: func(cmd *cobra.Command, args []string) error { - if len(args) < 1 { - return errors.New("requires 'install' or 'uninstall' as arguments") + if len(args) < 2 { + return errors.New("requires 'install ' or 'uninstall' as arguments") } return nil }, From f2eed4aa8d5c19cb6f6ef26e02e9ede39748f8ae Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 01:02:17 -0700 Subject: [PATCH 02/52] snapcraft build --- snapcraft.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index 436315e0..3dd905c9 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -17,6 +17,7 @@ architectures: - build-on: amd64 - build-on: armhf - build-on: arm64 + - build-on: i386 apps: statping: From 35c32b1067826ef189d212071c91f0711ff21a5d Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 01:53:15 -0700 Subject: [PATCH 03/52] snapcraft --- snapcraft.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index 3dd905c9..5d2c34a3 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -35,6 +35,7 @@ parts: apt-get update apt-get install -y curl curl -o- -L https://statping.com/install.sh | bash + mv /usr/local/bin/statping ./ build-packages: - git - gcc From 9885c4b9eccbca54b32fe5d680fe32903a4f3307 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 12:34:38 -0700 Subject: [PATCH 04/52] upload compiled frontend to s3 --- .github/workflows/dev.yml | 14 ++++++++++++++ .github/workflows/master.yml | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 688addbe..6623ccfd 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -53,6 +53,20 @@ jobs: name: static-rice-box path: ./source + - name: Compress frontend source + run: tar -czvf frontend-dev.tar.gz source + + - name: Upload frontend dist to S3 + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks --delete + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'frontend-dev.tar.gz' + test: needs: compile runs-on: ubuntu-latest diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index f20aa940..f21d79c5 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -48,6 +48,20 @@ jobs: name: static-rice-box path: ./source + - name: Compress frontend source + run: tar -czvf frontend.tar.gz source + + - name: Upload frontend dist to S3 + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks --delete + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'frontend.tar.gz' + test: needs: compile runs-on: ubuntu-latest From 41f80af72e1d3359374cdfc99524a1e571886051 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 12:41:01 -0700 Subject: [PATCH 05/52] s3 uploads --- .github/workflows/dev.yml | 4 ++-- .github/workflows/master.yml | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 6623ccfd..972ab815 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -58,8 +58,8 @@ jobs: - name: Upload frontend dist to S3 uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks --delete + with: + args: --acl public-read --follow-symlinks --delete env: AWS_S3_BUCKET: assets.statping.com AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index f21d79c5..280fbc32 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -49,7 +49,9 @@ jobs: path: ./source - name: Compress frontend source - run: tar -czvf frontend.tar.gz source + run: | + tar -czvf frontend.tar.gz source + cp frontend.tar.gz frontend-${VERSION}.tar.gz - name: Upload frontend dist to S3 uses: jakejarvis/s3-sync-action@master @@ -62,6 +64,18 @@ jobs: AWS_REGION: 'us-west-2' SOURCE_DIR: 'frontend.tar.gz' + - name: Upload frontend current version to S3 + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks --delete + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: us-west-2 + DEST_DIR: source + SOURCE_DIR: frontend-${VERSION}.tar.gz + test: needs: compile runs-on: ubuntu-latest From 6bfca8375542d11c6f5431a976ff5e62732fae4d Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 12:42:50 -0700 Subject: [PATCH 06/52] frontend s3 --- .github/workflows/dev.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 972ab815..418646fb 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -60,12 +60,12 @@ jobs: uses: jakejarvis/s3-sync-action@master with: args: --acl public-read --follow-symlinks --delete - env: - AWS_S3_BUCKET: assets.statping.com - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' - SOURCE_DIR: 'frontend-dev.tar.gz' + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'frontend-dev.tar.gz' test: needs: compile From 3bdb725814246aff7108862eb1f3647fa7d7b37d Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 12:45:27 -0700 Subject: [PATCH 07/52] builds --- .github/workflows/dev.yml | 2 +- .github/workflows/master.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 418646fb..582b631c 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -59,7 +59,7 @@ jobs: - name: Upload frontend dist to S3 uses: jakejarvis/s3-sync-action@master with: - args: --acl public-read --follow-symlinks --delete + args: --acl public-read --follow-symlinks env: AWS_S3_BUCKET: assets.statping.com AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 280fbc32..4c2ef84e 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -56,7 +56,7 @@ jobs: - name: Upload frontend dist to S3 uses: jakejarvis/s3-sync-action@master with: - args: --acl public-read --follow-symlinks --delete + args: --acl public-read --follow-symlinks env: AWS_S3_BUCKET: assets.statping.com AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} @@ -67,7 +67,7 @@ jobs: - name: Upload frontend current version to S3 uses: jakejarvis/s3-sync-action@master with: - args: --acl public-read --follow-symlinks --delete + args: --acl public-read --follow-symlinks env: AWS_S3_BUCKET: assets.statping.com AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} From b02425e0d4a66baf4109ca519562a30886b23985 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 12:59:58 -0700 Subject: [PATCH 08/52] upload assets --- .github/workflows/dev.yml | 11 +++++++++++ .github/workflows/master.yml | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 582b631c..40b763c3 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -52,6 +52,17 @@ jobs: with: name: static-rice-box path: ./source + + - name: Upload frontend assets to CDN + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'source/dist' - name: Compress frontend source run: tar -czvf frontend-dev.tar.gz source diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 4c2ef84e..4f01349a 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -48,6 +48,17 @@ jobs: name: static-rice-box path: ./source + - name: Upload frontend assets to CDN + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'source/dist' + - name: Compress frontend source run: | tar -czvf frontend.tar.gz source From 78275e3761531db727429427ec637ac771b6a195 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 13:01:03 -0700 Subject: [PATCH 09/52] actions fix --- .github/workflows/dev.yml | 8 ++++---- .github/workflows/master.yml | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 40b763c3..91d4da51 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -49,10 +49,10 @@ jobs: - name: Upload Compiled Frontend (rice-box.go) uses: actions/upload-artifact@v1 - with: - name: static-rice-box - path: ./source - + with: + name: static-rice-box + path: ./source + - name: Upload frontend assets to CDN uses: jakejarvis/s3-sync-action@master with: diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 4f01349a..20312d59 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -44,9 +44,9 @@ jobs: - name: Upload Compiled Frontend (rice-box.go) uses: actions/upload-artifact@v1 - with: - name: static-rice-box - path: ./source + with: + name: static-rice-box + path: ./source - name: Upload frontend assets to CDN uses: jakejarvis/s3-sync-action@master From 518777503f95c9f198bcd417e041d7a6ba5f66f4 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 13:05:59 -0700 Subject: [PATCH 10/52] CDN assets --- .github/workflows/dev.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 91d4da51..03bce80b 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -53,7 +53,7 @@ jobs: name: static-rice-box path: ./source - - name: Upload frontend assets to CDN + - name: Upload frontend CSS to CDN uses: jakejarvis/s3-sync-action@master with: args: --acl public-read --follow-symlinks @@ -62,7 +62,20 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-west-2' - SOURCE_DIR: 'source/dist' + SOURCE_DIR: 'source/dist/css' + DEST_DIR: 'css' + + - name: Upload frontend JS to CDN + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'source/dist/js' + DEST_DIR: 'js' - name: Compress frontend source run: tar -czvf frontend-dev.tar.gz source From 92d2ae19dc2e9bcbd3d78845a61115f3b6bea8d0 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 13:07:09 -0700 Subject: [PATCH 11/52] action fix --- .github/workflows/dev.yml | 6 +++--- .github/workflows/master.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 03bce80b..4718f3cf 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -49,9 +49,9 @@ jobs: - name: Upload Compiled Frontend (rice-box.go) uses: actions/upload-artifact@v1 - with: - name: static-rice-box - path: ./source + with: + name: static-rice-box + path: ./source - name: Upload frontend CSS to CDN uses: jakejarvis/s3-sync-action@master diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 20312d59..4f01349a 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -44,9 +44,9 @@ jobs: - name: Upload Compiled Frontend (rice-box.go) uses: actions/upload-artifact@v1 - with: - name: static-rice-box - path: ./source + with: + name: static-rice-box + path: ./source - name: Upload frontend assets to CDN uses: jakejarvis/s3-sync-action@master From b38220cc833d065607ad32cce1b109b68f66a5f9 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 13:08:22 -0700 Subject: [PATCH 12/52] link fix --- .github/workflows/dev.yml | 36 +++++++++++++------------- .github/workflows/master.yml | 50 ++++++++++++++++++------------------ 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 4718f3cf..77e81c09 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -55,27 +55,27 @@ jobs: - name: Upload frontend CSS to CDN uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: assets.statping.com - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' - SOURCE_DIR: 'source/dist/css' - DEST_DIR: 'css' + with: + args: --acl public-read --follow-symlinks + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'source/dist/css' + DEST_DIR: 'css' - name: Upload frontend JS to CDN uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: assets.statping.com - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' - SOURCE_DIR: 'source/dist/js' - DEST_DIR: 'js' + with: + args: --acl public-read --follow-symlinks + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'source/dist/js' + DEST_DIR: 'js' - name: Compress frontend source run: tar -czvf frontend-dev.tar.gz source diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 4f01349a..20479655 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -50,14 +50,14 @@ jobs: - name: Upload frontend assets to CDN uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: assets.statping.com - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' - SOURCE_DIR: 'source/dist' + with: + args: --acl public-read --follow-symlinks + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'source/dist' - name: Compress frontend source run: | @@ -66,26 +66,26 @@ jobs: - name: Upload frontend dist to S3 uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: assets.statping.com - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' - SOURCE_DIR: 'frontend.tar.gz' + with: + args: --acl public-read --follow-symlinks + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-2' + SOURCE_DIR: 'frontend.tar.gz' - name: Upload frontend current version to S3 uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: assets.statping.com - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: us-west-2 - DEST_DIR: source - SOURCE_DIR: frontend-${VERSION}.tar.gz + with: + args: --acl public-read --follow-symlinks + env: + AWS_S3_BUCKET: assets.statping.com + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: us-west-2 + DEST_DIR: source + SOURCE_DIR: frontend-${VERSION}.tar.gz test: needs: compile From a50db9f16c81847a13d7e92a6e27653cf51c513e Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 14:36:07 -0700 Subject: [PATCH 13/52] makefile updates --- .github/workflows/dev.yml | 2 -- .github/workflows/master.yml | 5 +---- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 77e81c09..08eba4a8 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -61,7 +61,6 @@ jobs: AWS_S3_BUCKET: assets.statping.com AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' SOURCE_DIR: 'source/dist/css' DEST_DIR: 'css' @@ -73,7 +72,6 @@ jobs: AWS_S3_BUCKET: assets.statping.com AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' SOURCE_DIR: 'source/dist/js' DEST_DIR: 'js' diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 20479655..13c330b7 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -56,7 +56,6 @@ jobs: AWS_S3_BUCKET: assets.statping.com AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' SOURCE_DIR: 'source/dist' - name: Compress frontend source @@ -72,7 +71,6 @@ jobs: AWS_S3_BUCKET: assets.statping.com AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' SOURCE_DIR: 'frontend.tar.gz' - name: Upload frontend current version to S3 @@ -83,8 +81,7 @@ jobs: AWS_S3_BUCKET: assets.statping.com AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: us-west-2 - DEST_DIR: source + DEST_DIR: 'source' SOURCE_DIR: frontend-${VERSION}.tar.gz test: From d97547865a1e01cbfabed4ec23b247ecc846b9ad Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 15:12:45 -0700 Subject: [PATCH 14/52] actions --- .github/workflows/dev.yml | 6 +++--- .github/workflows/master.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 08eba4a8..356ad997 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -58,7 +58,7 @@ jobs: with: args: --acl public-read --follow-symlinks env: - AWS_S3_BUCKET: assets.statping.com + AWS_S3_BUCKET: 'assets.statping.com' AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} SOURCE_DIR: 'source/dist/css' @@ -69,7 +69,7 @@ jobs: with: args: --acl public-read --follow-symlinks env: - AWS_S3_BUCKET: assets.statping.com + AWS_S3_BUCKET: 'assets.statping.com' AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} SOURCE_DIR: 'source/dist/js' @@ -83,7 +83,7 @@ jobs: with: args: --acl public-read --follow-symlinks env: - AWS_S3_BUCKET: assets.statping.com + AWS_S3_BUCKET: 'assets.statping.com' AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-west-2' diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 13c330b7..70b5a93e 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -53,7 +53,7 @@ jobs: with: args: --acl public-read --follow-symlinks env: - AWS_S3_BUCKET: assets.statping.com + AWS_S3_BUCKET: 'assets.statping.com' AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} SOURCE_DIR: 'source/dist' @@ -68,7 +68,7 @@ jobs: with: args: --acl public-read --follow-symlinks env: - AWS_S3_BUCKET: assets.statping.com + AWS_S3_BUCKET: 'assets.statping.com' AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} SOURCE_DIR: 'frontend.tar.gz' @@ -78,7 +78,7 @@ jobs: with: args: --acl public-read --follow-symlinks env: - AWS_S3_BUCKET: assets.statping.com + AWS_S3_BUCKET: 'assets.statping.com' AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} DEST_DIR: 'source' From a84fad320fd40e1750470d1fcedff12807df115a Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 16:58:52 -0700 Subject: [PATCH 15/52] actionzzz --- .github/workflows/dev.yml | 46 +++++++++--------------------------- .github/workflows/master.yml | 16 +++++++++++++ 2 files changed, 27 insertions(+), 35 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 356ad997..f6d5dd76 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -21,6 +21,12 @@ jobs: - uses: actions/setup-node@v1 with: node-version: '12.18.2' + - name: Configure AWS credentials from account + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-west-2 - uses: actions/checkout@v2 - name: Add GOBIN to PATH @@ -53,41 +59,11 @@ jobs: name: static-rice-box path: ./source - - name: Upload frontend CSS to CDN - uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: 'assets.statping.com' - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - SOURCE_DIR: 'source/dist/css' - DEST_DIR: 'css' - - - name: Upload frontend JS to CDN - uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: 'assets.statping.com' - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - SOURCE_DIR: 'source/dist/js' - DEST_DIR: 'js' - - - name: Compress frontend source - run: tar -czvf frontend-dev.tar.gz source - - - name: Upload frontend dist to S3 - uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: 'assets.statping.com' - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-2' - SOURCE_DIR: 'frontend-dev.tar.gz' + - name: Upload Assets to S3 + run: | + tar -czvf source.tar.gz source/ + aws s3 cp source.tar.gz s3://assets.statping.com/ + rm -rf source.tar.gz test: needs: compile diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 70b5a93e..35dd943e 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -16,6 +16,12 @@ jobs: - uses: actions/setup-node@v1 with: node-version: '12.18.2' + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-west-2 - uses: actions/checkout@v2 - name: Add GOBIN to PATH @@ -48,6 +54,16 @@ jobs: name: static-rice-box path: ./source + - name: Upload Assets to S3 + run: | + tar -czvf source.tar.gz source/ + aws s3 cp source.tar.gz s3://assets.statping.com/ + rm -rf source.tar.gz + aws s3 cp source/dist/css/ s3://assets.statping.com/css/ --recursive --exclude "*" --include "*.css" + aws s3 cp source/dist/js/ s3://assets.statping.com/js/ --recursive --exclude "*" --include "*.js" + aws s3 cp source/dist/scss/ s3://assets.statping.com/scss/ --recursive --exclude "*" --include "*.scss" + aws s3 cp install.sh s3://assets.statping.com/ + - name: Upload frontend assets to CDN uses: jakejarvis/s3-sync-action@master with: From 84e68ea1832b722f3d421df29b43460161f3e3bd Mon Sep 17 00:00:00 2001 From: hunterlong Date: Sun, 26 Jul 2020 17:19:26 -0700 Subject: [PATCH 16/52] actions, testing --- .github/workflows/master.yml | 45 ++++-------------------------- notifiers/gotify_test.go | 3 +- notifiers/mobile_test.go | 5 ++-- notifiers/pushover_test.go | 2 +- notifiers/slack_test.go | 3 +- notifiers/statping_emailer_test.go | 3 +- notifiers/telegram_test.go | 6 ++-- notifiers/twilio_test.go | 8 +++--- notifiers/webhook_test.go | 6 ++-- 9 files changed, 27 insertions(+), 54 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 35dd943e..fc864a13 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -57,49 +57,16 @@ jobs: - name: Upload Assets to S3 run: | tar -czvf source.tar.gz source/ + cp source.tar.gz source-${VERSION}.tar.gz aws s3 cp source.tar.gz s3://assets.statping.com/ + aws s3 cp source-${VERSION}.tar.gz s3://assets.statping.com/ rm -rf source.tar.gz - aws s3 cp source/dist/css/ s3://assets.statping.com/css/ --recursive --exclude "*" --include "*.css" - aws s3 cp source/dist/js/ s3://assets.statping.com/js/ --recursive --exclude "*" --include "*.js" - aws s3 cp source/dist/scss/ s3://assets.statping.com/scss/ --recursive --exclude "*" --include "*.scss" + rm -rf source-${VERSION}.tar.gz + aws s3 cp source/dist/css/ s3://assets.statping.com/css/ --recursive + aws s3 cp source/dist/js/ s3://assets.statping.com/js/ --recursive + aws s3 cp source/dist/scss/ s3://assets.statping.com/scss/ --recursive aws s3 cp install.sh s3://assets.statping.com/ - - name: Upload frontend assets to CDN - uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: 'assets.statping.com' - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - SOURCE_DIR: 'source/dist' - - - name: Compress frontend source - run: | - tar -czvf frontend.tar.gz source - cp frontend.tar.gz frontend-${VERSION}.tar.gz - - - name: Upload frontend dist to S3 - uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: 'assets.statping.com' - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - SOURCE_DIR: 'frontend.tar.gz' - - - name: Upload frontend current version to S3 - uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks - env: - AWS_S3_BUCKET: 'assets.statping.com' - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - DEST_DIR: 'source' - SOURCE_DIR: frontend-${VERSION}.tar.gz - test: needs: compile runs-on: ubuntu-latest diff --git a/notifiers/gotify_test.go b/notifiers/gotify_test.go index 5b12c7bd..e93ff516 100644 --- a/notifiers/gotify_test.go +++ b/notifiers/gotify_test.go @@ -21,9 +21,10 @@ var ( ) func TestGotifyNotifier(t *testing.T) { - t.Parallel() err := utils.InitLogs() require.Nil(t, err) + + t.Parallel() GOTIFY_URL = utils.Params.GetString("GOTIFY_URL") GOTIFY_TOKEN = utils.Params.GetString("GOTIFY_TOKEN") diff --git a/notifiers/mobile_test.go b/notifiers/mobile_test.go index 9160e0e7..e46db6f9 100644 --- a/notifiers/mobile_test.go +++ b/notifiers/mobile_test.go @@ -19,11 +19,12 @@ var ( ) func TestMobileNotifier(t *testing.T) { - t.Parallel() - t.SkipNow() err := utils.InitLogs() require.Nil(t, err) + t.Parallel() + t.SkipNow() + mobileToken = utils.Params.GetString("MOBILE_TOKEN") if mobileToken == "" { t.Log("Mobile notifier testing skipped, missing MOBILE_ID environment variable") diff --git a/notifiers/pushover_test.go b/notifiers/pushover_test.go index d885408b..658b94d3 100644 --- a/notifiers/pushover_test.go +++ b/notifiers/pushover_test.go @@ -19,10 +19,10 @@ var ( ) func TestPushoverNotifier(t *testing.T) { - t.Parallel() err := utils.InitLogs() require.Nil(t, err) + t.Parallel() PUSHOVER_TOKEN = utils.Params.GetString("PUSHOVER_TOKEN") PUSHOVER_API = utils.Params.GetString("PUSHOVER_API") diff --git a/notifiers/slack_test.go b/notifiers/slack_test.go index 508305ed..8600d1fa 100644 --- a/notifiers/slack_test.go +++ b/notifiers/slack_test.go @@ -19,9 +19,10 @@ var ( ) func TestSlackNotifier(t *testing.T) { - t.Parallel() err := utils.InitLogs() require.Nil(t, err) + + t.Parallel() db, err := database.OpenTester() require.Nil(t, err) db.AutoMigrate(¬ifications.Notification{}) diff --git a/notifiers/statping_emailer_test.go b/notifiers/statping_emailer_test.go index 103bafca..8cf71227 100644 --- a/notifiers/statping_emailer_test.go +++ b/notifiers/statping_emailer_test.go @@ -19,9 +19,10 @@ var ( ) func TestStatpingEmailerNotifier(t *testing.T) { - t.Parallel() err := utils.InitLogs() require.Nil(t, err) + + t.Parallel() db, err := database.OpenTester() require.Nil(t, err) db.AutoMigrate(¬ifications.Notification{}) diff --git a/notifiers/telegram_test.go b/notifiers/telegram_test.go index 022c3b0d..cc06857f 100644 --- a/notifiers/telegram_test.go +++ b/notifiers/telegram_test.go @@ -20,6 +20,9 @@ var ( ) func TestTelegramNotifier(t *testing.T) { + err := utils.InitLogs() + require.Nil(t, err) + t.Parallel() telegramToken = utils.Params.GetString("TELEGRAM_TOKEN") @@ -29,9 +32,6 @@ func TestTelegramNotifier(t *testing.T) { t.SkipNow() } - err := utils.InitLogs() - require.Nil(t, err) - Telegram.ApiSecret = null.NewNullString(telegramToken) Telegram.Var1 = null.NewNullString(telegramChannel) diff --git a/notifiers/twilio_test.go b/notifiers/twilio_test.go index 7e2a2ef8..5510b6cd 100644 --- a/notifiers/twilio_test.go +++ b/notifiers/twilio_test.go @@ -20,13 +20,10 @@ var ( ) func TestTwilioNotifier(t *testing.T) { - t.Parallel() - err := utils.InitLogs() require.Nil(t, err) - TWILIO_SID = utils.Params.GetString("TWILIO_SID") - TWILIO_SECRET = utils.Params.GetString("TWILIO_SECRET") + t.Parallel() db, err := database.OpenTester() require.Nil(t, err) @@ -34,6 +31,9 @@ func TestTwilioNotifier(t *testing.T) { notifications.SetDB(db) core.Example() + TWILIO_SID = utils.Params.GetString("TWILIO_SID") + TWILIO_SECRET = utils.Params.GetString("TWILIO_SECRET") + if TWILIO_SID == "" || TWILIO_SECRET == "" { t.Log("twilio notifier testing skipped, missing TWILIO_SID and TWILIO_SECRET environment variable") t.SkipNow() diff --git a/notifiers/webhook_test.go b/notifiers/webhook_test.go index 25fbbcff..73d2103e 100644 --- a/notifiers/webhook_test.go +++ b/notifiers/webhook_test.go @@ -21,10 +21,12 @@ var ( ) func TestWebhookNotifier(t *testing.T) { - t.Parallel() - t.SkipNow() err := utils.InitLogs() require.Nil(t, err) + + t.Parallel() + t.SkipNow() + db, err := database.OpenTester() require.Nil(t, err) db.AutoMigrate(¬ifications.Notification{}) From 1a438a6198e7bcef21115f2afdb571c3711f8bdc Mon Sep 17 00:00:00 2001 From: hunterlong Date: Thu, 30 Jul 2020 16:14:41 -0700 Subject: [PATCH 17/52] 0.90.62 updates --- CHANGELOG.md | 7 + Makefile | 28 +- database/grouping.go | 2 +- frontend/src/App.vue | 7 +- frontend/src/assets/scss/base.scss | 4 + frontend/src/assets/scss/forms.scss | 6 +- frontend/src/assets/scss/main.scss | 4 - frontend/src/assets/scss/mobile.scss | 17 +- frontend/src/assets/scss/variables.scss | 2 +- frontend/src/codemirror_json.js | 2 +- .../src/components/Dashboard/Checkins.vue | 12 +- .../Dashboard/DashboardServices.vue | 4 +- .../src/components/Dashboard/Failures.vue | 128 +++++-- .../src/components/Dashboard/Incidents.vue | 2 +- .../src/components/Dashboard/ServiceInfo.vue | 5 +- .../src/components/Dashboard/ServicesList.vue | 6 +- .../components/Elements/IncidentUpdate.vue | 39 +++ frontend/src/components/Index/Group.vue | 5 +- .../components/Index/GroupServiceFailures.vue | 2 +- .../src/components/Index/IncidentsBlock.vue | 16 +- .../src/components/Index/UpdatesBlock.vue | 52 --- .../src/components/Service/AdvancedChart.vue | 9 +- frontend/src/forms/Checkin.vue | 8 +- frontend/src/forms/IncidentUpdates.vue | 28 +- frontend/src/forms/Message.vue | 2 +- frontend/src/forms/Notifier.vue | 28 +- frontend/src/forms/Service.vue | 18 +- frontend/src/forms/Setup.vue | 17 +- frontend/src/pages/Index.vue | 4 +- frontend/src/pages/Service.vue | 35 +- frontend/src/routes.js | 5 + frontend/src/store.js | 4 +- handlers/notifications.go | 8 +- handlers/notifiers_test.go | 4 +- notifiers/slack.go | 5 +- source/source.go | 31 +- source/source_test.go | 13 +- types/checkins/checkins_test.go | 1 + types/notifications/methods.go | 41 +-- types/notifications/struct.go | 14 +- types/services/database.go | 13 +- types/services/methods.go | 38 +-- types/services/notifications.go | 87 +++++ types/services/routine.go | 55 --- types/services/samples.go | 5 +- types/services/services_test.go | 30 +- types/services/services_test_alerts_test.go | 321 ++++++++++++++++++ types/services/struct.go | 42 ++- version.txt | 2 +- 49 files changed, 831 insertions(+), 387 deletions(-) delete mode 100644 frontend/src/assets/scss/main.scss create mode 100644 frontend/src/components/Elements/IncidentUpdate.vue delete mode 100644 frontend/src/components/Index/UpdatesBlock.vue create mode 100644 types/services/notifications.go create mode 100644 types/services/services_test_alerts_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 42f4efca..c9f83666 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# 0.90.62 (07-30-2020) +- Added Notification logs +- Fixed issues with notifications +- Updated Incident UI +- Added additional testing for notifications +- + # 0.90.61 (07-22-2020) - Modified sass layouts, organized and split up sections - Modified Checkins to seconds rather than milliseconds (for cronjob) diff --git a/Makefile b/Makefile index fde732d3..41008a04 100644 --- a/Makefile +++ b/Makefile @@ -17,11 +17,18 @@ ARCHS = 386 arm amd64 arm64 all: build-deps compile install test build test: clean compile - go test -v -p=1 -ldflags="-X main.VERSION=0.99.99" -coverprofile=coverage.out ./... + go test -v -p=1 -ldflags="-X main.VERSION=${VERSION}" -coverprofile=coverage.out ./... build: clean go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o statping --tags "netgo linux" ./cmd +go-build: clean + rm -rf source/dist + rm -rf source/rice-box.go + wget https://assets.statping.com/source.tar.gz + tar -xvf source.tar.gz + go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o statping --tags "netgo" ./cmd + up: docker-compose -f docker-compose.yml -f dev/docker-compose.full.yml up -d --remove-orphans make print_details @@ -291,11 +298,14 @@ post-release: frontend-build upload_to_s3 publish-homebrew dockerhub publish-homebrew: curl -s -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "Travis-API-Version: 3" -H "Authorization: token $(TRAVIS_API)" -d $(PUBLISH_BODY) https://api.travis-ci.com/repo/statping%2Fhomebrew-statping/requests -upload_to_s3: travis_s3_creds - aws s3 cp ./source/dist/css $(ASSETS_BKT) --recursive --exclude "*" --include "*.css" - aws s3 cp ./source/dist/js $(ASSETS_BKT) --recursive --exclude "*" --include "*.js" - aws s3 cp ./source/dist/scss $(ASSETS_BKT) --recursive --exclude "*" --include "*.scss" - aws s3 cp ./install.sh $(ASSETS_BKT) +upload_to_s3: + tar -czvf source.tar.gz source/ + aws s3 cp source.tar.gz s3://assets.statping.com/ + rm -rf source.tar.gz + aws s3 cp source/dist/css/ s3://assets.statping.com/css/ --recursive --exclude "*" --include "*.css" + aws s3 cp source/dist/js/ s3://assets.statping.com/js/ --recursive --exclude "*" --include "*.js" + aws s3 cp source/dist/scss/ s3://assets.statping.com/scss/ --recursive --exclude "*" --include "*.scss" + aws s3 cp install.sh s3://assets.statping.com/ travis_s3_creds: mkdir -p ~/.aws @@ -376,6 +386,10 @@ multiarch: mkdir /tmp/.buildx-cache || true docker run --rm --privileged multiarch/qemu-user-static --reset -p yes +delve: + go build -gcflags "all=-N -l" -o statping ./cmd + dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./statping + check: @echo "Checking the programs required for the build are installed..." @echo "go: $(shell go version) - $(shell which go)" && go version >/dev/null 2>&1 || (echo "ERROR: go 1.14 is required."; exit 1) @@ -383,5 +397,5 @@ check: @echo "yarn: $(shell yarn --version) - $(shell which yarn)" && yarn --version >/dev/null 2>&1 || (echo "ERROR: yarn is required."; exit 1) @echo "All required programs are installed!" -.PHONY: all check build certs multiarch build-all buildx-base buildx-dev buildx-latest build-alpine test-all test test-api docker frontend up down print_details lite sentry-release snapcraft build-linux build-mac build-win build-all postman +.PHONY: all check build certs multiarch go-build build-all buildx-base buildx-dev buildx-latest build-alpine test-all test test-api docker frontend up down print_details lite sentry-release snapcraft build-linux build-mac build-win build-all postman .SILENT: travis_s3_creds diff --git a/database/grouping.go b/database/grouping.go index 54544870..6d982a3b 100644 --- a/database/grouping.go +++ b/database/grouping.go @@ -39,7 +39,7 @@ type GroupQuery struct { } func (b GroupQuery) Find(data interface{}) error { - return b.db.Find(data).Error() + return b.db.Order("id DESC").Find(data).Error() } func (b GroupQuery) Database() Database { diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 8a8d0dad..21c1cf53 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,7 +1,7 @@ @@ -55,5 +55,8 @@ diff --git a/frontend/src/assets/scss/base.scss b/frontend/src/assets/scss/base.scss index 83be8649..e5bc7242 100644 --- a/frontend/src/assets/scss/base.scss +++ b/frontend/src/assets/scss/base.scss @@ -154,6 +154,10 @@ padding: 5px 7px; } + .service_li { + min-height: 115px !important; + } + .btn-sm { line-height: 1.3; font-size: 0.75rem; diff --git a/frontend/src/assets/scss/forms.scss b/frontend/src/assets/scss/forms.scss index 18fa3370..6ddaf46f 100644 --- a/frontend/src/assets/scss/forms.scss +++ b/frontend/src/assets/scss/forms.scss @@ -31,7 +31,7 @@ .form-control[readonly] { background-color: lighten($background-color, 12%) !important; - color: darken($background-color, 5%) !important; + color: lighten($input-color, 40%) !important; } /* The slider itself */ @@ -268,6 +268,10 @@ input.inputTags-field:focus { color: $text-color; } +.nav-link.active A:HOVER { + color: white !important; +} + .nav-pills I { margin-right: 10px; } diff --git a/frontend/src/assets/scss/main.scss b/frontend/src/assets/scss/main.scss deleted file mode 100644 index 917857de..00000000 --- a/frontend/src/assets/scss/main.scss +++ /dev/null @@ -1,4 +0,0 @@ -@import 'base'; -@import 'layout'; -@import 'forms'; -@import 'mobile'; diff --git a/frontend/src/assets/scss/mobile.scss b/frontend/src/assets/scss/mobile.scss index 8ad729d0..2b9e0338 100644 --- a/frontend/src/assets/scss/mobile.scss +++ b/frontend/src/assets/scss/mobile.scss @@ -74,10 +74,19 @@ position: absolute; } - .btn-sm { - line-height: 1.4rem; - font-size: 0.83rem; - } + .btn-sm { + line-height: 1.3; + font-size: 0.75rem; + } + + .badge { + padding-top: 2px; + padding-bottom: 3px; + } + + .switch LABEL { + font-size: 10pt; + } .full-col-12 { padding-left: 0px; diff --git a/frontend/src/assets/scss/variables.scss b/frontend/src/assets/scss/variables.scss index 80cdaa1b..87c82ffd 100644 --- a/frontend/src/assets/scss/variables.scss +++ b/frontend/src/assets/scss/variables.scss @@ -1,7 +1,7 @@ /* Index Page */ $background-color: #f5f5f5; $container-color: #ffffff; -$text-color: #1d1d1d; +$text-color: #2a2a2a; $max-width: 860px; $title-color: #4e4e4e; $description-color: #828282; diff --git a/frontend/src/codemirror_json.js b/frontend/src/codemirror_json.js index 65cf09de..70b27fc6 100644 --- a/frontend/src/codemirror_json.js +++ b/frontend/src/codemirror_json.js @@ -6,7 +6,7 @@ CodeMirror.defineMode('mymode', () => { if (stream.match(".Service") || (stream.match(".Core")) || (stream.match(".Failure"))) { return "var-highlight" } else if (stream.match(".Id") || stream.match(".Domain") || stream.match(".CreatedAt") || - stream.match(".Name") || stream.match(".DowntimeAgo") || stream.match(".Issue") || stream.match(".LastStatusCode") || + stream.match(".Name") || stream.match(".Downtime.Human") || stream.match(".Issue") || stream.match(".LastStatusCode") || stream.match(".Port") || stream.match(".FailuresLast24Hours") || stream.match(".PingTime")) { return "var-sub-highlight" } else if (stream.match("{{") || stream.match("}}")) { diff --git a/frontend/src/components/Dashboard/Checkins.vue b/frontend/src/components/Dashboard/Checkins.vue index 41ac97b0..38f8a8cb 100644 --- a/frontend/src/components/Dashboard/Checkins.vue +++ b/frontend/src/components/Dashboard/Checkins.vue @@ -6,7 +6,7 @@
{{checkin.name}} - +
@@ -18,8 +18,8 @@
Send a GET request to this URL every {{checkin.interval}} minutes - Requested {{ago(checkin.last_hit)}} ago - Request expected every {{checkin.interval}} minutes + Requested {{ago(checkin.last_hit)}} ago + Request expected every {{checkin.interval}} minutes
@@ -62,15 +62,15 @@
-
+
-
+
-
+
diff --git a/frontend/src/components/Dashboard/DashboardServices.vue b/frontend/src/components/Dashboard/DashboardServices.vue index 761a03e1..097a6654 100644 --- a/frontend/src/components/Dashboard/DashboardServices.vue +++ b/frontend/src/components/Dashboard/DashboardServices.vue @@ -25,7 +25,7 @@ {{ $t('dashboard.name') }} - {{ $tc('dashboard.service', 2) }} + {{ $tc('dashboard.service', 2) }} {{ $t('dashboard.visibility') }} @@ -36,7 +36,7 @@ {{group.name}} - {{$store.getters.servicesInGroup(group.id).length}} + {{$store.getters.servicesInGroup(group.id).length}} {{group.public ? $t('public') : $t('private')}} diff --git a/frontend/src/components/Dashboard/Failures.vue b/frontend/src/components/Dashboard/Failures.vue index 2fa471eb..9c002e61 100644 --- a/frontend/src/components/Dashboard/Failures.vue +++ b/frontend/src/components/Dashboard/Failures.vue @@ -1,22 +1,77 @@ + + diff --git a/frontend/src/components/Index/Group.vue b/frontend/src/components/Index/Group.vue index 63042fa4..eddfea22 100644 --- a/frontend/src/components/Index/Group.vue +++ b/frontend/src/components/Index/Group.vue @@ -3,7 +3,7 @@

{{group.name}}

diff --git a/frontend/src/components/Index/GroupServiceFailures.vue b/frontend/src/components/Index/GroupServiceFailures.vue index 50f8d2cb..19cadc27 100644 --- a/frontend/src/components/Index/GroupServiceFailures.vue +++ b/frontend/src/components/Index/GroupServiceFailures.vue @@ -2,7 +2,7 @@
- {{d.amount}} + {{d.amount}}
diff --git a/frontend/src/components/Index/IncidentsBlock.vue b/frontend/src/components/Index/IncidentsBlock.vue index 7ca7a54e..8c71496d 100644 --- a/frontend/src/components/Index/IncidentsBlock.vue +++ b/frontend/src/components/Index/IncidentsBlock.vue @@ -1,25 +1,24 @@ - - - diff --git a/frontend/src/components/Service/AdvancedChart.vue b/frontend/src/components/Service/AdvancedChart.vue index 2201b3f9..600cbaba 100644 --- a/frontend/src/components/Service/AdvancedChart.vue +++ b/frontend/src/components/Service/AdvancedChart.vue @@ -1,11 +1,6 @@ diff --git a/frontend/src/forms/Checkin.vue b/frontend/src/forms/Checkin.vue index 77567c03..fd78062d 100644 --- a/frontend/src/forms/Checkin.vue +++ b/frontend/src/forms/Checkin.vue @@ -16,19 +16,19 @@
-
+
-
+
-
+
-
+
diff --git a/frontend/src/forms/IncidentUpdates.vue b/frontend/src/forms/IncidentUpdates.vue index 2ddf51c8..8300d361 100644 --- a/frontend/src/forms/IncidentUpdates.vue +++ b/frontend/src/forms/IncidentUpdates.vue @@ -6,19 +6,11 @@
- +
-
+
-
+
-
+
-
+
{{notifier.title}} Outgoing Request @@ -136,6 +136,31 @@ {{loadingTest ? "Loading..." : "Test Failure"}}
+
+
+ +
+
+ + {{notifier.title}} Logs + {{notifier.logs.length}} +
+
+ +
+ + Service '{{$store.getters.serviceById(log.service).name}}' + {{log.success ? "Success Triggered" : "Failure Triggered"}} + + +
+ {{log.message}} +
+ +
+ {{niceDate(log.created_at)}} +
+
@@ -183,6 +208,7 @@ export default { success: false, saved: false, expanded: false, + expanded_logs: false, success_data: null, failure_data: null, form: {}, diff --git a/frontend/src/forms/Service.vue b/frontend/src/forms/Service.vue index bb633cb1..bcdce136 100644 --- a/frontend/src/forms/Service.vue +++ b/frontend/src/forms/Service.vue @@ -44,7 +44,7 @@
-
+
@@ -145,8 +145,8 @@
- -
+ +
@@ -155,8 +155,8 @@
- -
+ +
@@ -166,8 +166,8 @@
- -
+ +
@@ -209,7 +209,7 @@
-
+
@@ -226,7 +226,7 @@
-
+
diff --git a/frontend/src/forms/Setup.vue b/frontend/src/forms/Setup.vue index 5232b4e0..ddc94133 100644 --- a/frontend/src/forms/Setup.vue +++ b/frontend/src/forms/Setup.vue @@ -7,7 +7,7 @@
-
+
-
+
-
+
@@ -65,12 +65,11 @@
-
-
+
@@ -125,9 +124,11 @@ {{error}}
- +
+ +
diff --git a/frontend/src/pages/Index.vue b/frontend/src/pages/Index.vue index f1fe3197..bc6daa32 100644 --- a/frontend/src/pages/Index.vue +++ b/frontend/src/pages/Index.vue @@ -5,12 +5,12 @@ diff --git a/frontend/src/pages/Service.vue b/frontend/src/pages/Service.vue index 809c26ea..8486e5d6 100644 --- a/frontend/src/pages/Service.vue +++ b/frontend/src/pages/Service.vue @@ -7,12 +7,12 @@ {{service.online ? $t('online') : $t('offline')}} -

+ {{core.name}} - {{service.name}} {{service.online ? $t('online') : $t('offline')}} -

+ @@ -20,17 +20,17 @@
Timeframe
-
+
-
- +
+ From {{this.format(new Date(start_time))}}
-
- +
+ To {{this.format(new Date(end_time))}}
-
+
- +
@@ -36,8 +38,6 @@ - +{{else if USING_ASSETS }} + + + + {{else}} <% _.each(htmlWebpackPlugin.tags.bodyTags, function(bodyTag) { %> <%= bodyTag %> <% }) %> diff --git a/frontend/public/main.scss b/frontend/public/main.scss new file mode 100644 index 00000000..fe1ad7d4 --- /dev/null +++ b/frontend/public/main.scss @@ -0,0 +1,6 @@ +@import 'variables'; +@import 'mixin'; +@import 'base'; +@import 'forms'; +@import 'layout'; +@import 'mobile'; diff --git a/source/source.go b/source/source.go index 9693e1d4..71d93ba9 100644 --- a/source/source.go +++ b/source/source.go @@ -49,21 +49,20 @@ func CompileSASS(files ...string) error { sassBin = bin } - for _, file := range files { - scssFile := filepath.Join(utils.Params.GetString("STATPING_DIR"), "assets", file) - log.Infoln(fmt.Sprintf("Compiling SASS %v into %v", scssFile, scssRendered(scssFile))) + scssFile := filepath.Join(utils.Params.GetString("STATPING_DIR"), "assets", "scss", "main.scss") + log.Infoln(fmt.Sprintf("Compiling SASS %v into %v", scssFile, scssRendered(scssFile))) - stdout, stderr, err := utils.Command(sassBin, scssFile, scssRendered(scssFile)) - if err != nil { - log.Errorln(fmt.Sprintf("Failed to compile assets with SASS %v", err)) - log.Errorln(fmt.Sprintf("%s %s %s", sassBin, scssFile, scssRendered(scssFile))) - return errors.Wrapf(err, "failed to compile assets, %s %s %s", err, stdout, stderr) - } - - if stdout != "" || stderr != "" { - log.Infoln(fmt.Sprintf("out: %v | error: %v", stdout, stderr)) - } + stdout, stderr, err := utils.Command(sassBin, scssFile, scssRendered(scssFile)) + if err != nil { + log.Errorln(fmt.Sprintf("Failed to compile assets with SASS %v", err)) + log.Errorln(fmt.Sprintf("%s %s %s", sassBin, scssFile, scssRendered(scssFile))) + return errors.Wrapf(err, "failed to compile assets, %s %s %s", err, stdout, stderr) } + + if stdout != "" || stderr != "" { + log.Infoln(fmt.Sprintf("out: %v | error: %v", stdout, stderr)) + } + log.Infoln("SASS Compiling is complete!") return nil } @@ -103,10 +102,10 @@ func SaveAsset(data []byte, path string) error { // OpenAsset returns a file's contents as a string func OpenAsset(path string) string { - path = fmt.Sprintf("%s/assets/%s", utils.Directory, path) + path = filepath.Join(utils.Directory, "assets", path) data, err := utils.OpenFile(path) if err != nil { - log.Errorln(fmt.Sprintf("Failed to open %v, %v", path, err)) + log.Errorln(fmt.Sprintf("Failed to open %s, %v", path, err)) return "" } return data @@ -114,7 +113,7 @@ func OpenAsset(path string) string { // CreateAllAssets will dump HTML, CSS, SCSS, and JS assets into the '/assets' directory func CreateAllAssets(folder string) error { - log.Infoln(fmt.Sprintf("Dump Statping assets into %v/assets", folder)) + log.Infoln(fmt.Sprintf("Dump Statping assets into %s/assets", folder)) fp := filepath.Join if err := MakePublicFolder(fp(folder, "/assets")); err != nil { diff --git a/source/source_test.go b/source/source_test.go index 2a418461..573f1390 100644 --- a/source/source_test.go +++ b/source/source_test.go @@ -25,12 +25,16 @@ func TestCore_UsingAssets(t *testing.T) { func TestCreateAssets(t *testing.T) { assert.Nil(t, CreateAllAssets(dir)) + assert.FileExists(t, dir+"/assets/js/bundle.js") assert.True(t, UsingAssets(dir)) assert.Nil(t, CompileSASS(DefaultScss...)) assert.FileExists(t, dir+"/assets/css/style.css") - assert.FileExists(t, dir+"/assets/css/vendor.css") + assert.FileExists(t, dir+"/assets/css/main.css") + assert.FileExists(t, dir+"/assets/scss/main.scss") assert.FileExists(t, dir+"/assets/scss/base.scss") + assert.FileExists(t, dir+"/assets/scss/forms.scss") assert.FileExists(t, dir+"/assets/scss/mobile.scss") + assert.FileExists(t, dir+"/assets/scss/layout.scss") assert.FileExists(t, dir+"/assets/scss/variables.scss") } From ae25e84128e87be62e489bbe6e936304f00906c1 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Mon, 3 Aug 2020 02:10:22 -0700 Subject: [PATCH 22/52] CDN asset changes, SCSS entry file change --- cmd/cli.go | 2 +- frontend/public/base.gohtml | 13 ++++--- handlers/dashboard.go | 4 +-- handlers/routes.go | 8 ++--- source/source.go | 16 ++++----- source/source_test.go | 67 ++++++++++++++++++++++++++----------- 6 files changed, 68 insertions(+), 42 deletions(-) diff --git a/cmd/cli.go b/cmd/cli.go index e3c2d20a..4673318c 100644 --- a/cmd/cli.go +++ b/cmd/cli.go @@ -135,7 +135,7 @@ func sassCli() error { if err := source.Assets(); err != nil { return err } - if err := source.CompileSASS(source.DefaultScss...); err != nil { + if err := source.CompileSASS(); err != nil { return err } return nil diff --git a/frontend/public/base.gohtml b/frontend/public/base.gohtml index 2eefa195..51914057 100644 --- a/frontend/public/base.gohtml +++ b/frontend/public/base.gohtml @@ -43,8 +43,8 @@ {{if USE_CDN}} - - + + {{else if USING_ASSETS }} @@ -52,7 +52,6 @@ <% _.each(htmlWebpackPlugin.tags.headTags, function(headTag) { %> <%= headTag %> <% }) %> {{end}} - {{end}}