From fafe3ee196a0a9f5d02dd4467b00bc61779661da Mon Sep 17 00:00:00 2001 From: Jonathan Barney Date: Wed, 18 Aug 2021 07:20:14 -0700 Subject: [PATCH 01/52] Allow webhook to set multiple headers --- notifiers/webhook.go | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/notifiers/webhook.go b/notifiers/webhook.go index 3831718a..b33f94d9 100644 --- a/notifiers/webhook.go +++ b/notifiers/webhook.go @@ -3,16 +3,17 @@ package notifiers import ( "bytes" "fmt" + "io/ioutil" + "net/http" + "strings" + "time" + "github.com/statping/statping/types/failures" "github.com/statping/statping/types/notifications" "github.com/statping/statping/types/notifier" "github.com/statping/statping/types/null" "github.com/statping/statping/types/services" "github.com/statping/statping/utils" - "io/ioutil" - "net/http" - "strings" - "time" ) var _ notifier.Notifier = (*webhooker)(nil) @@ -85,15 +86,30 @@ func (w *webhooker) Valid(values notifications.Values) error { } func (w *webhooker) sendHttpWebhook(body string) (*http.Response, error) { - utils.Log.Infoln(fmt.Sprintf("sending body: '%v' to %v as a %v request", body, w.Host.String, w.Var1.String)) client := new(http.Client) client.Timeout = 10 * time.Second req, err := http.NewRequest(w.Var1.String, w.Host.String, bytes.NewBufferString(body)) if err != nil { return nil, err } + if w.ApiKey.String != "" { + req.Header.Add("Content-Type", w.ApiKey.String) + } else { + req.Header.Add("Content-Type", "application/json") + } + req.Header.Set("User-Agent", "Statping") + req.Header.Set("Statping-Version", utils.Params.GetString("VERSION")) + + var customHeaders []string + if w.ApiSecret.String != "" { - keyVal := strings.SplitN(w.ApiSecret.String, "=", 2) + customHeaders = strings.Split(w.ApiSecret.String, ",") + } else { + customHeaders = nil + } + + for _, h := range customHeaders { + keyVal := strings.SplitN(h, "=", 2) if len(keyVal) == 2 { if keyVal[0] != "" && keyVal[1] != "" { if strings.ToLower(keyVal[0]) == "host" { @@ -104,13 +120,8 @@ func (w *webhooker) sendHttpWebhook(body string) (*http.Response, error) { } } } - if w.ApiKey.String != "" { - req.Header.Add("Content-Type", w.ApiKey.String) - } else { - req.Header.Add("Content-Type", "application/json") - } - req.Header.Set("User-Agent", "Statping") - req.Header.Set("Statping-Version", utils.Params.GetString("VERSION")) + + utils.Log.Infoln(fmt.Sprintf("sending body: '%v' to %v as a %v request with headers: '%v'", body, w.Host.String, w.Var1.String, req.Header)) resp, err := client.Do(req) if err != nil { return nil, err From 2516aacc96b01de9c8da3717bea6b03813c44de5 Mon Sep 17 00:00:00 2001 From: Jonathan Barney Date: Wed, 18 Aug 2021 07:34:59 -0700 Subject: [PATCH 02/52] fix imports --- notifiers/webhook.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/notifiers/webhook.go b/notifiers/webhook.go index 57722a59..2706fa89 100644 --- a/notifiers/webhook.go +++ b/notifiers/webhook.go @@ -3,16 +3,17 @@ package notifiers import ( "bytes" "fmt" + "io/ioutil" + "net/http" + "strings" + "time" + "github.com/statping-ng/statping-ng/types/failures" "github.com/statping-ng/statping-ng/types/notifications" "github.com/statping-ng/statping-ng/types/notifier" "github.com/statping-ng/statping-ng/types/null" "github.com/statping-ng/statping-ng/types/services" "github.com/statping-ng/statping-ng/utils" - "io/ioutil" - "net/http" - "strings" - "time" ) var _ notifier.Notifier = (*webhooker)(nil) From adb0c5682a745237d8594ae1ec73f3871c072b55 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 23 Aug 2021 10:25:28 +0100 Subject: [PATCH 03/52] Update README.md Updated a docker link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c8b7fe87..bad9d4b1 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Statping-ng is built in Go Language so all you need is the precompile binary bas                      - +

From 4611f9e66d79b7738b00ddccde115c972f9b800b Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Tue, 24 Aug 2021 13:13:29 +0100 Subject: [PATCH 04/52] Updated README --- README.md | 208 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 124 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index bad9d4b1..883f3323 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,152 @@ -

- +

+ Statping-ng +

+

+ Statping-ng - Web and App Status Monitoring for Any Type of Project

-

- Statping-ng - Web and App Status Monitoring for Any Type of Project
- Website | View Wiki | API +

+ Website | + Wiki
- Docker | Linux | Mac | Windows + Linux | + Windows | + Mac | + Containers

-# Statping-ng - Status Page & Monitoring Server - -An easy to use Status Page for your websites and applications. Statping will automatically fetch the application and render a beautiful status page with tons of features for you to build an even better status page. This Status Page generator allows you to use MySQL, Postgres, or SQLite on multiple operating systems. - +

Statping-ng - Status Page & Monitoring Server

+

An easy to use Status Page for your websites and applications. Statping will automatically fetch the application and render a beautiful status page with tons of features for you to build an even better status page. This Status Page generator allows you to use MySQL, Postgres, or SQLite on multiple operating systems. +

Statping-ng aims to be an updated drop-in replacement of statping after development stopped on the original fork. - -![GitHub license](https://img.shields.io/github/license/statping-ng/statping-ng?color=green&style=for-the-badge) ![GitHub last commit](https://img.shields.io/github/last-commit/statping-ng/statping-ng?style=for-the-badge) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/statping-ng/statping-ng/2.%20Unstable%20Build,%20Test%20and%20Deploy?label=Dev%20Build&style=for-the-badge) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/statping-ng/statping-ng/3.%20Stable%20Build,%20Test%20and%20Deploy?label=Stable%20Build&style=for-the-badge) ![Docker Pulls](https://img.shields.io/docker/pulls/adamboutcher/statping-ng?style=for-the-badge) ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/adamboutcher/statping-ng/latest?style=for-the-badge) - -

- -

A Future-Proof Status Page

-Statping-ng strives to remain future-proof and remain intact if a failure is created. Your Statping service should not be running on the same instance you're trying to monitor. If your server crashes your Status Page should still remaining online to notify your users of downtime. - -
(dashboard login is `admin`, password `admin`) -


- -

No Requirements

-Statping-ng is built in Go Language so all you need is the precompile binary based on your operating system. You won't need to install anything extra once you have the Statping binary installed. You can even run Statping on a Raspberry Pi. -

-

-        -        -        -        -        - -

- - - -

Lightweight and Fast

-Statping-ng is a very lightweight application and is available for Linux, Mac, and Windows. The Docker image is only ~16Mb so you know that this application won't be filling up your hard drive space. -The Status binary for all other OS's is ~17Mb at most. -





- - -

Mobile App is Gorgeous

-The Statping app is available on the App Store and Google Play for free. The app will allow you to view services, receive notifications when a service is offline, update groups, users, services, messages, and more! Start your own Statping-ng server and then connect it to the app by scanning the QR code in settings. - -

- -

-

+

+ License +

+ Last Commit + Dev Build Status + Unstable Build Status + Stable Build Status +

+ Docker Pulls + Docker Image Size +

+ Go Version + Go Report +

-## Run on Any Server -Want to run it on your own Docker server? Awesome! Statping-ng has multiple docker-compose.yml files to work with. Statping-ng can automatically create a SSL Certification for your status page. -



+
+

About Statping-ng

- -

Custom SASS Styling

-Statping-ng will allow you to completely customize your Status Page using SASS styling with easy to use variables. The Docker image actually contains a prebuilt SASS binary so you won't even need to setup anything! -



+ +

A Future-Proof Status Page

+

+ Statping-ng strives to remain future-proof and remain intact if a failure is created. Your Statping-ng service should not be running on the same instance you're trying to monitor. If your server crashes your Status Page should still remaining online to notify your users of downtime. +

+

+ Try Statping-ng via Play with Docker - Login is admin, password admin. +

+


-## Slack, Email, Twilio and more -Statping-ng includes email notification via SMTP and Slack integration using [Incoming Webhook](https://api.slack.com/incoming-webhooks). Insert the webhook URL into the Settings page in Statping-ng and enable the Slack integration. Anytime a service fails, the channel that you specified on Slack will receive a message. -



-

User Created Notifiers

-View the [Plugin Wiki](https://github.com/statping-ng/statping-ng/wiki/Statping-Plugins) to see detailed information about Golang Plugins. Statping-ng isn't just another Status Page for your applications, it's a framework that allows you to create your own plugins to interact with every element of your status page. [Notifier's](https://github.com/statping-ng/statping-ng/wiki/Notifiers) can also be create with only 1 golang file. -



+

No Requirements - Run on Any Server

+

+Statping-ng is built in Go Language so all you need is the pre-compiled binary based on your operating system. You won't need to install anything extra once you have the Statping binary installed. Windows, Linux or Mac, We compile to all the popular systems, including Raspberry Pi! +

+

+Linux +Windows +Apple Mac +Containers +Android Play Store +Apple Apps Store +

+
+


- -



+ +

Lightweight and Fast

+

+Statping-ng is a very lightweight application and is available for Linux, Mac, and Windows. The Docker image is only ~20Mb so you know that this application won't be filling up your hard drive space. +The Status binary for all other OS's is ~17Mb at most. +

+



- + +

Want easy containers?

+

+No Worries, we provide docker containers for many different system architectures, with multiple docker-compose files to suit your needs, you can even bring your own SSL Certificate or automatically leverage Lets Encrypt to keep things secure. But it's can be as simple as a docker run! +

+


+ + + +

Custom SASS Styling

+Statping-ng will allow you to completely customize your Status Page using SASS styling with easy to use variables. The container image actually contains a pre-built SASS binary so you won't even need to setup anything! +



+ + + +

Compatible with the Statping App

+

+Statping-ng is 100% compatible with the statping app which is available on the Apple App Store and Google Play for free. The app will allow you to view services, receive notifications when a service is offline, update groups, users, services, messages, and more! Start your own Statping-ng server and then connect it to the app by scanning the QR code in settings.

+

+ + +

+

The mobile app is not maintained by statping-ng and includes in-app purchases to the developer of statping.

+


+ +

Notifications - Slack, Email, Twilio and more

+

Statping-ng includes email notification via SMTP and Slack integration using Incoming Webhook. Insert the webhook URL into the Settings page in Statping-ng and enable the Slack integration. Anytime a service fails, the channel that you specified on Slack will receive a message.

+

View the Plugin Wiki to see detailed information about Golang Plugins. Statping-ng isn't just another Status Page for your applications, it's a framework that allows you to create your own plugins to interact with every element of your status page. Notifier's can also be create with only 1 golang file.

+



+ + +

Easy to use Dashboard

-Having a straight forward dashboard makes Statping-ng that much better. Monitor your websites and applications with a basic HTTP GET request, or add a POST request with your own JSON to post to the endpoint. -



+

+Having a straight forward dashboard makes Statping-ng that much better. Quickly and Easy view statuses. Monitor your websites and applications with a basic HTTP GET request, or add a POST request with your own JSON to post to the endpoint.

+




+ + + + + + +

Quick Start

+

Here's a few quick start guides to get you going, fast.

+ +

Docker

+

Use the Statping Docker Image to create a status page in seconds. Checkout the Docker Wiki to view more details on how to get started using Docker. +

-## Run on Docker -Use the [Statping Docker Image](https://hub.docker.com/r/adamboutcher/statping-ng) to create a status page in seconds. Checkout the [Docker Wiki](https://github.com/statping-ng/statping-ng/wiki/Docker) to view more details on how to get started using Docker. ```bash docker run -it -p 8080:8080 adamboutcher/statping-ng ``` -There are multiple ways to startup a Statping-ng server. You want to make sure Statping-ng is on it's own instance that is not on the same server as the applications you wish to monitor. It doesn't look good when your Status Page goes down. -



-## Docker Compose -In this folder there is a standard docker-compose file that include nginx, postgres, and Statping-ng. +

Docker Compose

+

In the root (base) folder there is a standard docker-compose file that includes nginx, postgres, and Statping-ng.

+ ```bash docker-compose up -d ``` -



-## Docker Compose with Automatic SSL -You can automatically start a Statping-ng server with automatic SSL encryption using this docker-compose file. First point your domain's DNS to the Statping-ng server, and then run this docker-compose command with DOMAIN and EMAIL. Email is for letsencrypt services. +

Docker Compose with Automatic SSL

+

You can automatically start a Statping-ng server with automatic SSL encryption using this docker-compose file. First point your domain's DNS to the Statping-ng server, and then run this docker-compose command with DOMAIN and EMAIL. Email is for letsencrypt services.

+ ```bash LETSENCRYPT_HOST=mydomain.com \ LETSENCRYPT_EMAIL=info@mydomain.com \ docker-compose -f docker-compose-ssl.yml up -d ``` -Once your instance has started, it will take a moment to get your SSL certificate. Make sure you have a A or CNAME record on your domain that points to the IP/DNS of your server running Statping-ng. -



-## Prometheus Exporter -Statping-ng includes a [Prometheus Exporter](https://github.com/statping-ng/statping-ng/wiki/Prometheus-Exporter) so you can have even more monitoring power with your services. The Prometheus exporter can be seen on `/metrics`, simply create another exporter in your prometheus config. Use your Statping-ng API Secret for the Authorization Bearer header, the `/metrics` URL is dedicated for Prometheus and requires the correct API Secret has `Authorization` header. +

Once your instance has started, it will take a moment to get your SSL certificate. Make sure you have a A or CNAME record on your domain that points to the IP/DNS of your server running Statping-ng.

+ +

Prometheus Exporter

+

Statping-ng includes a Prometheus Exporter so you can have even more monitoring power with your services. The Prometheus exporter can be seen on /metrics, simply create another exporter in your prometheus config. Use your Statping-ng API Secret for the Authorization Bearer header, the /metrics URL is dedicated for Prometheus and requires the correct API Secret has Authorization header.

+ ```yaml scrape_configs: - job_name: 'statping' @@ -114,9 +154,9 @@ scrape_configs: static_configs: - targets: ['statping:8080'] ``` -



-## Contributing -Statping-ng accepts Push Requests to the `dev` branch! Feel free to add your own features and notifiers. You probably want to checkout the [Notifier Wiki](https://github.com/statping-ng/statping-ng/wiki/Notifiers) to get a better understanding on how to create your own notification methods for failing/successful services. Testing on Statping-ng will test each function on MySQL, Postgres, and SQLite. I recommend running MySQL and Postgres Docker containers for testing. You can find multiple docker-compose files in the dev directory. - -[![Go Report Card](https://goreportcard.com/badge/github.com/statping-ng/statping-ng)](https://goreportcard.com/report/github.com/statping-ng/statping-ng) +

Contributing

+

Statping-ng accepts Push Requests to the dev branch!

+

Feel free to add your own features and notifiers.You probably want to checkout the Notifier Wiki to get a better understanding on how to create your own notification methods for failing/successful services.

+

Testing on Statping-ng will test each function on MySQL, Postgres, and SQLite. I recommend running MySQL and Postgres Docker containers for testing.

+

You can find multiple docker-compose files in the dev directory.

From 49efcaf10470176bdbb5c8094c4974e17ce289b9 Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 10:30:58 +0100 Subject: [PATCH 05/52] Windows 32bit for unstable, Windows 32/64 and darwin 64 for stable. --- .github/workflows/2_unstable.yml | 2 + .github/workflows/3_stable.yml | 68 ++++++++++++++++---------------- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/.github/workflows/2_unstable.yml b/.github/workflows/2_unstable.yml index c9a18933..71b9cad8 100644 --- a/.github/workflows/2_unstable.yml +++ b/.github/workflows/2_unstable.yml @@ -64,6 +64,8 @@ jobs: include: - platform: darwin arch: amd64 + - platform: windows + arch: 386 - platform: windows arch: amd64 diff --git a/.github/workflows/3_stable.yml b/.github/workflows/3_stable.yml index 71fec2ad..3c5537c0 100644 --- a/.github/workflows/3_stable.yml +++ b/.github/workflows/3_stable.yml @@ -74,11 +74,13 @@ jobs: matrix: platform: [linux] arch: [386, amd64, arm-7, arm-6, arm64] -# include: -# - platform: darwin -# arch: amd64 -# - platform: windows -# arch: amd64 + include: + - platform: darwin + arch: amd64 + - platform: windows + arch: 386 + - platform: windows + arch: amd64 steps: - uses: actions/checkout@v2 @@ -108,17 +110,17 @@ jobs: echo "XGO_TAGS=netgo osusergo linux sqlite_omit_load_extension" >> $GITHUB_ENV shell: bash -# - name: Set Darwin Build Flags -# if: matrix.platform == 'darwin' -# run: echo "XGO_TAGS=netgo osusergo darwin sqlite_omit_load_extension" >> $GITHUB_ENV -# shell: bash + - name: Set Darwin Build Flags + if: matrix.platform == 'darwin' + run: echo "XGO_TAGS=netgo osusergo darwin sqlite_omit_load_extension" >> $GITHUB_ENV + shell: bash -# - name: Set Windows Build Flags -# if: matrix.platform == 'windows' -# run: | -# echo "BUILD_FLAGS=-extldflags -static" >> $GITHUB_ENV -# echo "XGO_TAGS=netgo osusergo sqlite_omit_load_extension" >> $GITHUB_ENV -# shell: bash + - name: Set Windows Build Flags + if: matrix.platform == 'windows' + run: | + echo "BUILD_FLAGS=-extldflags -static -buildmode=exe" >> $GITHUB_ENV + echo "XGO_TAGS=netgo osusergo sqlite_omit_load_extension" >> $GITHUB_ENV + shell: bash - name: Build ${{ matrix.platform }}/${{ matrix.arch }} uses: crazy-max/ghaction-xgo@v1 @@ -148,25 +150,25 @@ jobs: rm -rf statping echo "compressed=statping-linux-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV -# - name: Compress Windows Builds -# if: matrix.platform == 'windows' -# run: | -# cd build -# mv statping-windows-4.0-${{ matrix.arch }}.exe statping.exe -# chmod +x statping.exe -# zip statping-windows-${{ matrix.arch }}.zip statping.exe -# rm -rf statping.exe -# echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV + - name: Compress Windows Builds + if: matrix.platform == 'windows' + run: | + cd build + mv statping-windows-4.0-${{ matrix.arch }}.exe statping.exe + chmod +x statping.exe + zip statping-windows-${{ matrix.arch }}.zip statping.exe + rm -rf statping.exe + echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV -# - name: Compress Darwin Builds -# if: matrix.platform == 'darwin' -# run: | -# cd build -# mv statping-darwin-10.6-${{ matrix.arch }} statping -# chmod +x statping -# tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping -# rm -rf statping -# echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV + - name: Compress Darwin Builds + if: matrix.platform == 'darwin' + run: | + cd build + mv statping-darwin-10.12-${{ matrix.arch }} statping + chmod +x statping + tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping + rm -rf statping + echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV - name: Upload Compiled Statping Binary uses: actions/upload-artifact@v1 From 3bd621e0e3d35a46a993f928c1f6b707725fdf66 Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 10:31:18 +0100 Subject: [PATCH 06/52] Test darwin 32bit on dev --- .github/workflows/1_dev.yml | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/.github/workflows/1_dev.yml b/.github/workflows/1_dev.yml index 22282697..6d8f063e 100644 --- a/.github/workflows/1_dev.yml +++ b/.github/workflows/1_dev.yml @@ -63,9 +63,13 @@ jobs: arch: [386, amd64, arm-7, arm-6, arm64] include: - platform: darwin - arch: [386, amd64] + arch: 386 + - platform: darwin + arch: amd64 - platform: windows - arch: [386, amd64] + arch: 386 + - platform: windows + arch: amd64 steps: - uses: actions/checkout@v2 @@ -140,7 +144,15 @@ jobs: echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV - name: Compress Darwin ${{matrix.arch}} Builds - if: matrix.platform == 'darwin' + if: matrix.platform == 'darwin' and matrix.platform == '386' + run: | + cd build + mv statping-darwin-10.6-${{ matrix.arch }} statping + chmod +x statping + tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping + rm -rf statping + echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV + if: matrix.platform == 'darwin' and matrix.platform == 'amd64' run: | cd build mv statping-darwin-10.12-${{ matrix.arch }} statping @@ -148,6 +160,14 @@ jobs: tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping rm -rf statping echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV +# if: matrix.platform == 'darwin' and matrix.platform == 'arm64' +# run: | +# cd build +# mv statping-darwin-10.15-${{ matrix.arch }} statping +# chmod +x statping +# tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping +# rm -rf statping +# echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV test: needs: frontend From a76ba0c4ed90c968d38fd71327437689ef37b08c Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 10:33:20 +0100 Subject: [PATCH 07/52] Fixed bad workflow logic. --- .github/workflows/1_dev.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/1_dev.yml b/.github/workflows/1_dev.yml index 6d8f063e..aaf45c8e 100644 --- a/.github/workflows/1_dev.yml +++ b/.github/workflows/1_dev.yml @@ -133,7 +133,7 @@ jobs: rm -rf statping echo "compressed=statping-linux-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV - - name: Compress Windows ${{matrix.arch}} Builds + - name: Compress Windows Builds if: matrix.platform == 'windows' run: | cd build @@ -143,7 +143,7 @@ jobs: rm -rf statping.exe echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV - - name: Compress Darwin ${{matrix.arch}} Builds + - name: Compress Darwin 32bit Builds if: matrix.platform == 'darwin' and matrix.platform == '386' run: | cd build @@ -152,6 +152,8 @@ jobs: tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping rm -rf statping echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV + + - name: Compress Darwin 32bit Builds if: matrix.platform == 'darwin' and matrix.platform == 'amd64' run: | cd build @@ -160,6 +162,8 @@ jobs: tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping rm -rf statping echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV + +# - name: Compress Darwin arm64 Builds # if: matrix.platform == 'darwin' and matrix.platform == 'arm64' # run: | # cd build From 6c5c5d1827a459f6b02965cfdb52df9d558a11f4 Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 10:35:40 +0100 Subject: [PATCH 08/52] Fixed bad workflow logic on dev. --- .github/workflows/1_dev.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/1_dev.yml b/.github/workflows/1_dev.yml index aaf45c8e..3b7ff1e1 100644 --- a/.github/workflows/1_dev.yml +++ b/.github/workflows/1_dev.yml @@ -144,7 +144,7 @@ jobs: echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV - name: Compress Darwin 32bit Builds - if: matrix.platform == 'darwin' and matrix.platform == '386' + if: matrix.platform == 'darwin' && matrix.platform == '386' run: | cd build mv statping-darwin-10.6-${{ matrix.arch }} statping @@ -154,7 +154,7 @@ jobs: echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV - name: Compress Darwin 32bit Builds - if: matrix.platform == 'darwin' and matrix.platform == 'amd64' + if: matrix.platform == 'darwin' && matrix.platform == 'amd64' run: | cd build mv statping-darwin-10.12-${{ matrix.arch }} statping @@ -164,7 +164,7 @@ jobs: echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV # - name: Compress Darwin arm64 Builds -# if: matrix.platform == 'darwin' and matrix.platform == 'arm64' +# if: matrix.platform == 'darwin' && matrix.platform == 'arm64' # run: | # cd build # mv statping-darwin-10.15-${{ matrix.arch }} statping From 0e4fc8542f9276fd3492bd3bbec175a723ff320a Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 10:36:44 +0100 Subject: [PATCH 09/52] Workflow for unstable now uses unstable branch. --- .github/workflows/2_unstable.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/2_unstable.yml b/.github/workflows/2_unstable.yml index 71b9cad8..9e730edd 100644 --- a/.github/workflows/2_unstable.yml +++ b/.github/workflows/2_unstable.yml @@ -2,7 +2,7 @@ name: 2. Unstable Build, Test and Deploy on: push: branches: - - dev + - unstable paths-ignore: - '**.md' From a2139e91bcdaf0876c5f9dc4d3f1f003a961fd43 Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 10:52:21 +0100 Subject: [PATCH 10/52] Try a fix for snaps. --- snapcraft.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 0d4ec108..72fcb0be 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -36,4 +36,5 @@ parts: apt-get update apt-get install -y curl tar curl -o- -L https://raw.githubusercontent.com/statping-ng/statping-ng/stable/install.sh | bash - mv /usr/local/bin/statping ./ + cp /usr/local/bin/statping statping + cp /usr/local/bin/statping /build/statping-ng/prime/./statping From aa2fcc976b0bd76194c2848a1fdc08ec728b6ad3 Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 10:53:08 +0100 Subject: [PATCH 11/52] Updates to statping install script, including a new quiet for curl. --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index ad6f7fc3..a7ae50a3 100755 --- a/install.sh +++ b/install.sh @@ -24,7 +24,7 @@ statping_get_tarball() { printf "$cyan> Downloading latest version for $OS $ARCH...\n$url $reset\n" # Get both the tarball and its GPG signature tarball_tmp=`mktemp -t statping.tar.gz.XXXXXXXXXX` - if curl --fail -L -o "$tarball_tmp" "$url"; then + if curl --fail -L -s -o "$tarball_tmp" "$url"; then # All this dance is because `tar --strip=1` does not work everywhere temp=$(mktemp -d statping.XXXXXXXXXX) if [ ${OS} == 'windows' ]; then @@ -32,11 +32,11 @@ statping_get_tarball() { else tar xzf $tarball_tmp -C "$temp" fi - printf "$green> Installing to $DEST/statping\n" + printf "$green> Installing to $DEST/statping-ng\n" mv "$temp"/statping "$DEST" rm -rf "$temp" rm $tarball_tmp* - printf "$cyan> Statping is now installed! $reset\n" + printf "$cyan> Statping-ng is now installed! $reset\n" printf "$white> Repo: $repo $reset\n" printf "$white> Wiki: $repo/wiki $reset\n" printf "$white> Issues: $repo/issues $reset\n" @@ -66,7 +66,7 @@ statping_brew_install() { } statping_install() { - printf "${white}Installing Statping!$reset\n" + printf "${white}Installing Statping-ng!$reset\n" getOS getArch statping_get_tarball $OS $ARCH From 01619c93c0721b86005b0aa65023242c015ae9e2 Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 14:52:02 +0100 Subject: [PATCH 12/52] Darwin 32bit build test --- .github/workflows/1_dev.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/1_dev.yml b/.github/workflows/1_dev.yml index 3b7ff1e1..764da660 100644 --- a/.github/workflows/1_dev.yml +++ b/.github/workflows/1_dev.yml @@ -144,7 +144,7 @@ jobs: echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV - name: Compress Darwin 32bit Builds - if: matrix.platform == 'darwin' && matrix.platform == '386' + if: matrix.platform == 'darwin' && matrix.arch == '386' run: | cd build mv statping-darwin-10.6-${{ matrix.arch }} statping @@ -153,8 +153,8 @@ jobs: rm -rf statping echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV - - name: Compress Darwin 32bit Builds - if: matrix.platform == 'darwin' && matrix.platform == 'amd64' + - name: Compress Darwin 64bit Builds + if: matrix.platform == 'darwin' && matrix.arch == 'amd64' run: | cd build mv statping-darwin-10.12-${{ matrix.arch }} statping @@ -164,7 +164,7 @@ jobs: echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV # - name: Compress Darwin arm64 Builds -# if: matrix.platform == 'darwin' && matrix.platform == 'arm64' +# if: matrix.platform == 'darwin' && matrix.arch == 'arm64' # run: | # cd build # mv statping-darwin-10.15-${{ matrix.arch }} statping @@ -173,6 +173,12 @@ jobs: # rm -rf statping # echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV + - name: Upload Compiled Statping Binary + uses: actions/upload-artifact@v1 + with: + name: statping-${{ matrix.platform }}-${{ matrix.arch }} + path: ./build + test: needs: frontend runs-on: ubuntu-latest From 694d3b94a1f64acd2071685293c3abbb3b4ccc3e Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 15:04:38 +0100 Subject: [PATCH 13/52] Darwin Build Test --- .github/workflows/1_dev.yml | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/.github/workflows/1_dev.yml b/.github/workflows/1_dev.yml index 764da660..5386efc4 100644 --- a/.github/workflows/1_dev.yml +++ b/.github/workflows/1_dev.yml @@ -144,17 +144,7 @@ jobs: echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV - name: Compress Darwin 32bit Builds - if: matrix.platform == 'darwin' && matrix.arch == '386' - run: | - cd build - mv statping-darwin-10.6-${{ matrix.arch }} statping - chmod +x statping - tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping - rm -rf statping - echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV - - - name: Compress Darwin 64bit Builds - if: matrix.platform == 'darwin' && matrix.arch == 'amd64' + if: matrix.platform == 'darwin' run: | cd build mv statping-darwin-10.12-${{ matrix.arch }} statping @@ -163,16 +153,6 @@ jobs: rm -rf statping echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV -# - name: Compress Darwin arm64 Builds -# if: matrix.platform == 'darwin' && matrix.arch == 'arm64' -# run: | -# cd build -# mv statping-darwin-10.15-${{ matrix.arch }} statping -# chmod +x statping -# tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping -# rm -rf statping -# echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV - - name: Upload Compiled Statping Binary uses: actions/upload-artifact@v1 with: From 203b84c724598c65bf6f3fca33828add15ff7731 Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Wed, 25 Aug 2021 15:21:46 +0100 Subject: [PATCH 14/52] Uplaod whatever darwin binary, this isnt for release --- .github/workflows/1_dev.yml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/1_dev.yml b/.github/workflows/1_dev.yml index 5386efc4..cd11ccc9 100644 --- a/.github/workflows/1_dev.yml +++ b/.github/workflows/1_dev.yml @@ -144,7 +144,17 @@ jobs: echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV - name: Compress Darwin 32bit Builds - if: matrix.platform == 'darwin' + if: matrix.platform == 'darwin' && matrix.arch == '386' + run: | + cd build +# mv statping-darwin-10.6-${{ matrix.arch }} statping +# chmod +x statping + tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz * +# rm -rf statping + echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV + + - name: Compress Darwin 64bit Builds + if: matrix.platform == 'darwin' && matrix.arch == 'amd64' run: | cd build mv statping-darwin-10.12-${{ matrix.arch }} statping @@ -153,6 +163,16 @@ jobs: rm -rf statping echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV +# - name: Compress Darwin arm64 Builds +# if: matrix.platform == 'darwin' && matrix.arch == 'arm64' +# run: | +# cd build +# mv statping-darwin-10.15-${{ matrix.arch }} statping +# chmod +x statping +# tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping +# rm -rf statping +# echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV + - name: Upload Compiled Statping Binary uses: actions/upload-artifact@v1 with: From 1f11e317817dad4addafb76bc132a503eb7c0b05 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 25 Aug 2021 18:55:23 +0100 Subject: [PATCH 15/52] Update 1_dev.yml --- .github/workflows/1_dev.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/1_dev.yml b/.github/workflows/1_dev.yml index cd11ccc9..bd650878 100644 --- a/.github/workflows/1_dev.yml +++ b/.github/workflows/1_dev.yml @@ -147,11 +147,12 @@ jobs: if: matrix.platform == 'darwin' && matrix.arch == '386' run: | cd build + ls >> $GITHUB_ENV # mv statping-darwin-10.6-${{ matrix.arch }} statping # chmod +x statping - tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz * +# tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz * # rm -rf statping - echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV +# echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV - name: Compress Darwin 64bit Builds if: matrix.platform == 'darwin' && matrix.arch == 'amd64' From 25a5aada2ce20acda59e90c16c75273d76af025a Mon Sep 17 00:00:00 2001 From: Nils Date: Sat, 28 Aug 2021 00:08:20 +0200 Subject: [PATCH 16/52] Dockerfile build local files not remote files --- Dockerfile | 55 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 05c090ed..aa448ba7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,53 @@ -FROM adamboutcher/statping-ng:base AS base +FROM node:12.18.2-alpine AS frontend +LABEL maintainer="Statping-ng (https://github.com/statping-ng)" ARG BUILDPLATFORM -# Statping main Docker image that contains all required libraries -FROM alpine:latest +WORKDIR /statping +COPY ./frontend/package.json . +COPY ./frontend/yarn.lock . +RUN yarn install --pure-lockfile --network-timeout 1000000 +COPY ./frontend . +RUN yarn build && yarn cache clean + +# Statping Golang BACKEND building from source +# Creates "/go/bin/statping" and "/usr/local/bin/sass" for copying +FROM golang:1.14-alpine AS backend +LABEL maintainer="Statping-NG (https://github.com/statping-ng)" +ARG VERSION +ARG COMMIT +ARG BUILDPLATFORM +ARG TARGETARCH +RUN apk add --update --no-cache libstdc++ gcc g++ make git autoconf \ + libtool ca-certificates linux-headers wget curl jq && \ + update-ca-certificates + +WORKDIR /root +RUN git clone https://github.com/sass/sassc.git +RUN . sassc/script/bootstrap && make -C sassc -j4 +# sassc binary: /root/sassc/bin/sassc + +WORKDIR /go/src/github.com/statping-ng/statping-ng +ADD go.mod go.sum ./ +RUN go mod download +ENV GO111MODULE on +ENV CGO_ENABLED 1 +RUN go get github.com/stretchr/testify/assert && \ + go get github.com/stretchr/testify/require && \ + go get github.com/GeertJohan/go.rice/rice && \ + go get github.com/cortesi/modd/cmd/modd && \ + go get github.com/crazy-max/xgo +COPY . . +COPY --from=frontend /statping/dist/ ./source/dist/ +RUN make clean generate embed +RUN go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION} -X main.COMMIT=${COMMIT}" -o statping --tags "netgo linux" ./cmd +RUN chmod a+x statping && mv statping /go/bin/statping +# /go/bin/statping - statping binary +# /root/sassc/bin/sassc - sass binary +# /statping - Vue frontend (from frontend) + RUN apk --no-cache add libgcc libstdc++ ca-certificates curl jq && update-ca-certificates -COPY --from=base /go/bin/statping /usr/local/bin/ -COPY --from=base /root/sassc/bin/sassc /usr/local/bin/ -COPY --from=base /usr/local/share/ca-certificates /usr/local/share/ +RUN cp /go/bin/statping /usr/local/bin/ +RUN cp /root/sassc/bin/sassc /usr/local/bin/ WORKDIR /app VOLUME /app @@ -20,4 +61,4 @@ EXPOSE $PORT HEALTHCHECK --interval=60s --timeout=10s --retries=3 CMD curl -s "http://localhost:$PORT/health" | jq -r -e ".online==true" -CMD statping --port $PORT +CMD statping --port $PORT \ No newline at end of file From 6a0250b0ea7fc64d017b8f9338e3b29fd523618f Mon Sep 17 00:00:00 2001 From: Nils Date: Sat, 28 Aug 2021 00:18:56 +0200 Subject: [PATCH 17/52] reduce size of Image --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index aa448ba7..3f7b4407 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,10 +44,12 @@ RUN chmod a+x statping && mv statping /go/bin/statping # /root/sassc/bin/sassc - sass binary # /statping - Vue frontend (from frontend) +FROM alpine:latest + RUN apk --no-cache add libgcc libstdc++ ca-certificates curl jq && update-ca-certificates -RUN cp /go/bin/statping /usr/local/bin/ -RUN cp /root/sassc/bin/sassc /usr/local/bin/ +COPY --from=backend /go/bin/statping /usr/local/bin/ +COPY --from=backend /root/sassc/bin/sassc /usr/local/bin/ WORKDIR /app VOLUME /app From e36323c2476ba12e5d9efe444b613f5f261d437b Mon Sep 17 00:00:00 2001 From: Nils Date: Sat, 28 Aug 2021 00:47:35 +0200 Subject: [PATCH 18/52] remove base-image --- Makefile | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/Makefile b/Makefile index c701900f..e3af0ecc 100644 --- a/Makefile +++ b/Makefile @@ -111,13 +111,10 @@ db-down: console: docker exec -t -i statping /bin/sh -compose-build-full: docker-base +compose-build-full: docker-compose -f docker-compose.yml -f dev/docker-compose.full.yml build --parallel --build-arg VERSION=${VERSION} -docker-base: - docker build -t statping-ng/statping-ng:base -f Dockerfile.base --build-arg VERSION=${VERSION} . - -docker-latest: docker-base +docker-latest: docker build -t statping-ng/statping-ng:latest --build-arg VERSION=${VERSION} . docker-vue: @@ -126,13 +123,6 @@ docker-vue: docker-test: docker-compose -f docker-compose.test.yml up --remove-orphans -push-base: clean compile docker-base - docker push statping-ng/statping-ng:base - -push-vue: clean compile docker-base docker-vue - docker push statping-ng/statping-ng:base - docker push statping-ng/statping-ng:vue - modd: modd -f ./dev/modd.conf @@ -285,16 +275,9 @@ download-key: wget -O statping.gpg $(SIGN_URL) gpg --import statping.gpg -# push the :dev docker tag using curl -dockerhub-dev: - docker build --build-arg VERSION=${VERSION} -t statping-ng/statping-ng:dev --no-cache -f Dockerfile.base . - docker push statping-ng/statping-ng:dev - dockerhub: - docker build --build-arg VERSION=${VERSION} -t statping-ng/statping-ng:base --no-cache -f Dockerfile.base . docker build --build-arg VERSION=${VERSION} -t statping-ng/statping-ng:latest --no-cache -f Dockerfile . docker tag statping-ng/statping-ng statping-ng/statping-ng:v${VERSION} - docker push statping-ng/statping-ng:base docker push statping-ng/statping-ng:v${VERSION} docker push statping-ng/statping-ng @@ -392,12 +375,6 @@ buildx-dev: multiarch docker buildx build --builder statping-dev --cache-from "type=local,src=/tmp/.buildx-cache" --cache-to "type=local,dest=/tmp/.buildx-cache,mode=max" --push --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 -f Dockerfile -t adamboutcher/statping-ng:dev --build-arg=VERSION=${VERSION} --build-arg=COMMIT=${COMMIT} . docker buildx rm statping-dev -buildx-base: multiarch - docker buildx create --name statping-base --driver-opt image=moby/buildkit:master - docker buildx inspect --builder statping-base --bootstrap - docker buildx build --builder statping-base --cache-from "type=local,src=/tmp/.buildx-cache" --cache-to "type=local,dest=/tmp/.buildx-cache,mode=max" --push --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 -f Dockerfile.base -t adamboutcher/statping-ng:base --build-arg=VERSION=${VERSION} --build-arg=COMMIT=${COMMIT} . - docker buildx rm statping-base - multiarch: mkdir /tmp/.buildx-cache || true docker run --rm --privileged multiarch/qemu-user-static --reset -p yes @@ -426,5 +403,5 @@ gen_help: marked -o html/$file.html $file --gfm done -.PHONY: all check build certs multiarch install-darwin 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 +.PHONY: all check build certs multiarch install-darwin go-build build-all 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 From ccbf9baaf03de4a9213dd9e43c3d68dc8cbf409f Mon Sep 17 00:00:00 2001 From: Nils Date: Sat, 28 Aug 2021 00:48:22 +0200 Subject: [PATCH 19/52] adjust image names to be statping-ng/statping-ng --- dev/docker-compose.lite.yml | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/docker-compose.lite.yml b/dev/docker-compose.lite.yml index 78f7dd2d..66b9c85e 100644 --- a/dev/docker-compose.lite.yml +++ b/dev/docker-compose.lite.yml @@ -4,7 +4,7 @@ services: statping_dev: container_name: statping_dev - image: statping/statping:dev + image: statping-ng/statping-ng:dev restart: on-failure volumes: - ./cmd:/go/src/github.com/statping-ng/statping-ng/cmd/ diff --git a/docker-compose.yml b/docker-compose.yml index 38533e5a..c5f45948 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,7 @@ version: '2.3' services: statping: container_name: statping - image: aboutcher/statping-ng:dev + image: statping-ng/statping-ng:dev restart: always volumes: - statping_data:/app From e5c7c4541d2099824882e3f86540071b7d1adfec Mon Sep 17 00:00:00 2001 From: nils1323 Date: Sat, 28 Aug 2021 02:00:50 +0200 Subject: [PATCH 20/52] add description for Image with binary Co-authored-by: Willy --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 3f7b4407..fbe6d76b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,6 +44,7 @@ RUN chmod a+x statping && mv statping /go/bin/statping # /root/sassc/bin/sassc - sass binary # /statping - Vue frontend (from frontend) +# Statping main Docker image that contains all required libraries FROM alpine:latest RUN apk --no-cache add libgcc libstdc++ ca-certificates curl jq && update-ca-certificates From 9327dbbf52c2f0692b88319dab9ee46b44e38bd1 Mon Sep 17 00:00:00 2001 From: nils1323 Date: Sat, 28 Aug 2021 02:10:54 +0200 Subject: [PATCH 21/52] Apply suggestions from code review Co-authored-by: Willy --- Dockerfile | 3 ++- docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index fbe6d76b..ca503f78 100644 --- a/Dockerfile +++ b/Dockerfile @@ -51,6 +51,7 @@ RUN apk --no-cache add libgcc libstdc++ ca-certificates curl jq && update-ca-cer COPY --from=backend /go/bin/statping /usr/local/bin/ COPY --from=backend /root/sassc/bin/sassc /usr/local/bin/ +COPY --from=backend /usr/local/share/ca-certificates /usr/local/share/ WORKDIR /app VOLUME /app @@ -64,4 +65,4 @@ EXPOSE $PORT HEALTHCHECK --interval=60s --timeout=10s --retries=3 CMD curl -s "http://localhost:$PORT/health" | jq -r -e ".online==true" -CMD statping --port $PORT \ No newline at end of file +CMD statping --port $PORT diff --git a/docker-compose.yml b/docker-compose.yml index c5f45948..38533e5a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,7 @@ version: '2.3' services: statping: container_name: statping - image: statping-ng/statping-ng:dev + image: aboutcher/statping-ng:dev restart: always volumes: - statping_data:/app From ad416c9499b4f6ed64f53927da9cb3762c3eb46b Mon Sep 17 00:00:00 2001 From: nils1323 Date: Sat, 28 Aug 2021 02:13:22 +0200 Subject: [PATCH 22/52] remove docker-vue --- Makefile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Makefile b/Makefile index e3af0ecc..5d484547 100644 --- a/Makefile +++ b/Makefile @@ -117,9 +117,6 @@ compose-build-full: docker-latest: docker build -t statping-ng/statping-ng:latest --build-arg VERSION=${VERSION} . -docker-vue: - docker build -t statping-ng/statping-ng:vue --build-arg VERSION=${VERSION} . - docker-test: docker-compose -f docker-compose.test.yml up --remove-orphans From a222b0148a00ebe8b69dc30fb0b94e90ad9310ea Mon Sep 17 00:00:00 2001 From: Nils Date: Sat, 28 Aug 2021 20:42:12 +0200 Subject: [PATCH 23/52] fixed naming for dockerhub --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 5d484547..04ae8c6f 100644 --- a/Makefile +++ b/Makefile @@ -273,10 +273,10 @@ download-key: gpg --import statping.gpg dockerhub: - docker build --build-arg VERSION=${VERSION} -t statping-ng/statping-ng:latest --no-cache -f Dockerfile . - docker tag statping-ng/statping-ng statping-ng/statping-ng:v${VERSION} - docker push statping-ng/statping-ng:v${VERSION} - docker push statping-ng/statping-ng + docker build --build-arg VERSION=${VERSION} -t adamboutcher/statping-ng:latest --no-cache -f Dockerfile . + docker tag adamboutcher/statping-ng adamboutcher/statping-ng:v${VERSION} + docker push adamboutcher/statping-ng:v${VERSION} + docker push adamboutcher/statping-ng docker-build-dev: docker build --build-arg VERSION=${VERSION} -t statping-ng/statping-ng:latest --no-cache -f Dockerfile . From 57e594823a7ace7a74540bdbb013a769fa23173a Mon Sep 17 00:00:00 2001 From: Nils Date: Sat, 28 Aug 2021 20:50:11 +0200 Subject: [PATCH 24/52] fix naming in docker-compose --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 38533e5a..395b773e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,7 @@ version: '2.3' services: statping: container_name: statping - image: aboutcher/statping-ng:dev + image: adamboutcher/statping-ng:latest restart: always volumes: - statping_data:/app From 1504265fb15458c0c15192b11abb01634a676bbc Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Fri, 3 Sep 2021 19:22:28 +0100 Subject: [PATCH 25/52] Tweaks to make Snapcrafts Build --- snapcraft.yaml | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 72fcb0be..781fdd86 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -1,28 +1,31 @@ name: statping-ng -version-script: cat version.txt version: "stable" +version-script: cat version.txt summary: Statping-ng Server Monitoring with Status Page -description: > +description: | An easy to use Status Page for your websites and applications. Statping will automatically fetch the application and render a beautiful status page with tons of features for you to build an even better status page. This Status Page generator allows you to use MySQL, Postgres, or SQLite on multiple operating systems. -base: base + +base: bare +build-base: core18 type: app confinement: strict grade: stable -issues: https://github.com/statping-ng/statping-ng/issues +license: GPL-3.0 architectures: + - build-on: i386 - build-on: amd64 - build-on: armhf - build-on: arm64 - - build-on: i386 apps: statping: - command: statping + command: bin/statping + daemon: simple plugs: - home - network @@ -33,8 +36,10 @@ parts: source: . plugin: nil override-build: | - apt-get update - apt-get install -y curl tar - curl -o- -L https://raw.githubusercontent.com/statping-ng/statping-ng/stable/install.sh | bash - cp /usr/local/bin/statping statping - cp /usr/local/bin/statping /build/statping-ng/prime/./statping + curl -o- -L https://raw.githubusercontent.com/adamboutcher/statping-ng/dev/install.sh | bash + build-packages: + - tar + - curl + - bash + organize: + /usr/local/bin/statping: bin/ From 66df2f116afdcde4522ba50bf37c3cc02b2ec569 Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Fri, 3 Sep 2021 19:35:23 +0100 Subject: [PATCH 26/52] Remove snapcraft as a statping service --- snapcraft.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 781fdd86..4afea18f 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -25,7 +25,6 @@ architectures: apps: statping: command: bin/statping - daemon: simple plugs: - home - network From dedfbaca9d2ccfdfc07fc38ddde79d97204267ad Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Fri, 3 Sep 2021 20:15:15 +0100 Subject: [PATCH 27/52] Snap now a service and works correctly --- snapcraft.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 4afea18f..96ae07fc 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -9,7 +9,7 @@ description: | This Status Page generator allows you to use MySQL, Postgres, or SQLite on multiple operating systems. -base: bare +base: core18 build-base: core18 type: app confinement: strict @@ -25,6 +25,7 @@ architectures: apps: statping: command: bin/statping + daemon: simple plugs: - home - network From 0bd42f3eaeb9484c552e7fab732e5aedaeb4e934 Mon Sep 17 00:00:00 2001 From: Florian Feldmann Date: Sun, 5 Sep 2021 03:20:17 +0200 Subject: [PATCH 28/52] Update german language --- frontend/src/languages/german.js | 56 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/frontend/src/languages/german.js b/frontend/src/languages/german.js index e9f80593..362d37a4 100644 --- a/frontend/src/languages/german.js +++ b/frontend/src/languages/german.js @@ -1,8 +1,8 @@ const german = { settings: "Einstellungen", - dashboard: "Armaturenbrett", - services: "Dienstleistungen", - service: "Service", + dashboard: "Dashboard", + services: "Dienste", + service: "Dienst", failures: "Ausfälle", users: "Benutzer", login: "Login", @@ -20,43 +20,43 @@ const german = { close: "Schließen", secret: "Geheimnis", regen_api: "API-Schlüssel neu generieren", - regen_desc: "API Secret wird für Lesen erstellen Update und Löschen Routen verwendet. Sie können API-Schlüssel bei Bedarf neu generieren.", + regen_desc: "Der API-Schlüssel wird für das Lesen, Erstellen, Updaten und Löschen von Routen verwendet. Sie können API-Schlüssel bei Bedarf neu generieren.", visibility: "Sichtbarkeit", group: "Gruppe", group_create: "Gruppe erstellen", group_update: "Gruppe aktualisieren", - group_public_desc: "Gruppendienste für die Öffentlichkeit anzeigen", + group_public_desc: "Gruppendienste öffentlich anzeigen", groups: "Gruppen", no_group: "Keine Gruppe", - public: "Öffentlichkeit", + public: "Öffentlich", private: "Privat", announcements: "Ankündigungen", - notifiers: "Notifizierer", + notifiers: "Benachrichtigungen", logs: "Protokolle", - help: "Helfen", + help: "Hilfe", type: "Typ", edit: "Bearbeiten", update: "Update", - create: "Schaffen", - view: "Ansicht", - save: "sparen", + create: "Erstellen", + view: "Anzeigen", + save: "Speichern", title: "Titel", status: "Status", begins: "Beginnt", - total_services: "Dienstleistungen insgesamt", + total_services: "Dienste insgesamt", online_services: "Online-Dienste", - request_timeout: "Zeitüberschreitung anfordern", - service_never_online: "Service war noch nie online", + request_timeout: "Zeitüberschreitung bei Anforderung", + service_never_online: "Dienst war noch nie online", service_online_check: "Online geprüft", service_offline_time: "Dienst war offline für", - days_ago: "Vor Tagen", + days_ago: "Tage vergangen", today: "Heute", week: "Woche", month: "Monat", day: "Tag", hour: "Stunde", minute: "Minute", - failures_24_hours: "Ausfälle dauern 24 Stunden", + failures_24_hours: "Ausfälle letzte 24 Stunden", no_services: "Sie haben derzeit keine Dienste!", theme: "Thema", cache: "Cache", @@ -66,8 +66,8 @@ const german = { variables: "Variablen", docs: "Dokumentation", links: "Links", - changelog: "Protokoll ändern", - repo: "Depot", + changelog: "Änderungsprotokoll", + repo: "Repo", language: "Sprache", db_connection: "Datenbankverbindung", db_host: "Datenbank-Host", @@ -77,7 +77,7 @@ const german = { db_database: "Name der Datenbank", send_reports: "Fehlerberichte senden", send_reports_desc: "Fehler zum Debuggen an Statping senden", - project_name: "Name der Seite „Status“", + project_name: "Name der Statusseite", description: "Beschreibung", domain: "Domäne", enable_cdn: "CDN aktivieren", @@ -95,7 +95,7 @@ const german = { wrong_login: "Falscher Benutzername oder Passwort", theme_editor: "Theme-Editor", enable_assets: "Lokale Assets aktivieren", - assets_desc: "Passen Sie das Design Ihrer Statusseite an, indem Sie lokale Elemente aktivieren. Dadurch wird ein Verzeichnis „Assets“ erstellt, das alle CSS enthält.", + assets_desc: "Passen Sie das Design Ihrer Statusseite an, indem Sie lokale Assets aktivieren. Dadurch wird ein Verzeichnis „Assets“ erstellt, das das gesamte CSS enthält.", assets_btn: "Lokale Assets aktivieren", assets_loading: "Erstellen von Assets", assets_dir: "Assets Verzeichnis", @@ -106,7 +106,7 @@ const german = { notify_users: "Benutzer benachrichtigen", notify_desc: "Benutzer vor geplanter Zeit benachrichtigen", notify_method: "Benachrichtigungsmethode", - notify_before: "Vor benachrichtigen", + notify_before: "Benachrichtigen vor", message_create: "Ankündigung erstellen", message_edit: "Ankündigung bearbeiten", minutes: "Protokoll", @@ -117,15 +117,15 @@ const german = { administrator: "Administrator", checkins: "Checkins", incidents: "Vorfälle", - service_info: "Service-Info", + service_info: "Dienstinfo", service_name: "Dienstname", - service_type: "Service-Art", + service_type: "Dienstart", permalink: "Permalink-URL", service_public: "Öffentlicher Dienst", check_interval: "Intervall prüfen", - service_endpoint: "Service-Endpunkt", - service_check: "Service-Prüfungstyp", - service_timeout: "Zeitüberschreitung anfordern", + service_endpoint: "Dienst-Endpunkt", + service_check: "Dienst-Prüfungstyp", + service_timeout: "Dienst Zeitüberschreitung", expected_resp: "Erwartete Antwort", expected_code: "Erwarteter Statuscode", follow_redir: "Weiterleitungen folgen", @@ -134,9 +134,9 @@ const german = { notification_opts: "Benachrichtigungsoptionen", notifications_enable: "Benachrichtigungen aktivieren", notify_after: "Benachrichtigung nach Fehlern", - notify_all: "Alle Änderungen benachrichtigen", + notify_all: "Benachrichtigung nach allen Änderungen", service_update: "Dienst aktualisieren", service_create: "Dienst erstellen" } -export default german \ No newline at end of file +export default german From c250ad73a38cb5bdf247e723125a02a8c66c8de5 Mon Sep 17 00:00:00 2001 From: Fjuro Date: Sun, 5 Sep 2021 18:08:45 +0200 Subject: [PATCH 29/52] Add Czech language --- frontend/src/languages/czech.js | 142 ++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 frontend/src/languages/czech.js diff --git a/frontend/src/languages/czech.js b/frontend/src/languages/czech.js new file mode 100644 index 00000000..c29276d2 --- /dev/null +++ b/frontend/src/languages/czech.js @@ -0,0 +1,142 @@ +const czech = { + settings: "Nastavení", + dashboard: "Nástěnka", + services: "Služby", + service: "Služba", + failures: "Selhání", + users: "Uživatelé", + login: "Přihlásit se", + logout: "Odhlásit se", + online: "Online", + offline: "Offline", + configs: "Konfigurace", + username: "Uživatelské jméno", + password: "Heslo", + email: "E-mail", + confirm_password: "Potvrzení hesla", + uptime: "Doba provozu", + name: "Název", + copy: "Zkopírovat", + close: "Zavřít", + secret: "Tajný klíč", + regen_api: "Znovu vygenerovat API klíče", + regen_desc: "Tajný API klíč se používá ke trasám read, create, update a delete. Pokud potřebujete, můžete znovu vygenerovat vaše API klíče.", + visibility: "Viditelnost", + group: "Skupina", + group_create: "Vytvořit skupinu", + group_update: "Aktualizovat skupinu", + group_public_desc: "Zobrazit skupiny veřejně", + groups: "Skupiny", + no_group: "Žádná skupina", + public: "Veřejné", + private: "Soukromé", + announcements: "Oznámení", + notifiers: "Oznamovače", + logs: "Protokol", + help: "Podpora", + type: "Typ", + edit: "Upravit", + update: "Aktualizovat", + create: "Vytvořot", + view: "Zobrazit", + save: "Uložit", + title: "Název", + status: "Stav", + begins: "Začíná", + total_services: "Celkový počet služeb", + online_services: "Online služby", + request_timeout: "Časový limit požadavku vypršel", + service_never_online: "Služba nikdy nebyla online", + service_online_check: "Online zkontrolováno", + service_offline_time: "Služba je offline", + days_ago: "dny", + today: "Dnes", + week: "Týden", + month: "Měsíc", + day: "Den", + hour: "Hodina", + minute: "Minuta", + failures_24_hours: "Selhání v posledních 24 hodinách", + no_services: "Momentálně nemáte žádné služby!", + theme: "Téma", + cache: "Cache", + authentication: "Autentifikace", + import: "Importovat", + main_settings: "Obecná nastavení", + variables: "Proměnné", + docs: "Dokumentace", + links: "Odkazy", + changelog: "Seznam změn", + repo: "Repozitář", + language: "Jazyk", + db_connection: "Spojení s databází", + db_host: "Host databáze", + db_port: "Database Port", + db_username: "Uživatelské jméno databáze", + db_password: "Heslo databáze", + db_database: "Název databáze", + send_reports: "Posílat hlášení o chybách", + send_reports_desc: "Posílat hlášení o chybách Statpingu pro ladění", + project_name: "Název stavové stránky", + description: "Popis", + domain: "Doména", + enable_cdn: "Povolit CDN", + newsletter: "Newsletter", + newsletter_note: "Budeme vám posílat e-maily pouze s velkými změnami", + loading: "Načítání", + save_settings: "Uložit nastavení", + average_response: "Průměrná odpověď", + last_uptime: "Poslední doba provozu", + sign_in: "Přihlásit se", + last_login: "Poslední přihlášení", + admin: "Správce", + user: "Uživatel", + failed: "Selhání", + wrong_login: "Nesprávné uživatelské jméno nebo heslo", + theme_editor: "Editor témat", + enable_assets: "Povolit lokální assety", + assets_desc: "Přizpůsobte si vaši stavovou stránku povolením lokálních assetů. Vytvoříme adresář s názvem 'assets' obsahující všechno CSS.", + assets_btn: "Povolit lokální assety", + assets_loading: "Vytváření assetů", + assets_dir: "Adresář assetů", + footer: "Zápatí", + footer_notes: "V zápatí můžete používat HTML značky", + global_announcement: "Globální oznámení", + announcement_date: "Rozsah data oznámení", + notify_users: "Oznámit uživatelům", + notify_desc: "Oznámit uživatelům před naplánovanou dobou", + notify_method: "Metoda oznámení", + notify_before: "Oznámit před", + message_create: "Vytvořit oznámení", + message_edit: "Upravit oznámení", + minutes: "Minut", + hours: "Hodin", + days: "Dnů", + user_create: "Vytvořit uživatele", + user_update: "Aktualizovat uživatele", + administrator: "Správce", + checkins: "Kontroly", + incidents: "Incidenty", + service_info: "Informace o službě", + service_name: "Název služby", + service_type: "Typ služby", + permalink: "Pevná URL", + service_public: "Veřejná služba", + check_interval: "Interval kontroly", + service_endpoint: "Koncový bod služby", + service_check: "Typ kontroly služby", + service_timeout: "Vypršení času", + expected_resp: "Očekávaná odpověď", + expected_code: "Očekávaný stavový kód", + follow_redir: "Následovaná přesměrování", + verify_ssl: "Ověřit SSL", + tls_cert: "Použít TLS certifikát", + notification_opts: "Možnosti oznámení", + notifications_enable: "Povolit oznámení", + notify_after: "Oznámit po selháních", + notify_all: "Oznamovat vše", + service_update: "Aktualizovat službu", + service_create: "Vytvořit službu" +} + +export default czech From eb5589eeaf22e1e6d6adee6497ff9356eb0871af Mon Sep 17 00:00:00 2001 From: Nils Date: Sun, 5 Sep 2021 20:09:30 +0200 Subject: [PATCH 30/52] allow numeric input when using telegram --- frontend/src/forms/Notifier.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/forms/Notifier.vue b/frontend/src/forms/Notifier.vue index ebbf0ff3..4eb7538d 100644 --- a/frontend/src/forms/Notifier.vue +++ b/frontend/src/forms/Notifier.vue @@ -282,7 +282,7 @@ export default { this.notifier.form.forEach((f) => { let field = f.field.toLowerCase() let val = this.notifier[field] - if (this.isNumeric(val)) { + if (this.isNumeric(val) && (this.form.method!='telegram' && field != 'var1')) { val = parseInt(val) } this.form[field] = val @@ -304,7 +304,7 @@ export default { this.notifier.form.forEach((f) => { let field = f.field.toLowerCase() let val = this.notifier[field] - if (this.isNumeric(val)) { + if (this.isNumeric(val) && (this.form.method!='telegram' && field != 'var1')) { val = parseInt(val) } this.form[field] = val From 5a0639a14ea2c9be062a25280fa2a0588db0830d Mon Sep 17 00:00:00 2001 From: Nils Date: Sun, 5 Sep 2021 20:36:15 +0200 Subject: [PATCH 31/52] adjust info text --- notifiers/telegram.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notifiers/telegram.go b/notifiers/telegram.go index e5c87676..ee2558dc 100644 --- a/notifiers/telegram.go +++ b/notifiers/telegram.go @@ -52,8 +52,8 @@ var Telegram = &telegram{¬ifications.Notification{ }, { Type: "text", Title: "Channel", - Placeholder: "@statping_channel", - SmallText: "Insert your Telegram Channel including the @ symbol. The bot will need to be an administrator of this channel.", + Placeholder: "@statping_channel/-123123512312", + SmallText: "Insert your Telegram Channel including the @ symbol. The bot will need to be an administrator of this channel. You can also supply a chat_id.", DbField: "var1", Required: true, }}}, From e764f639d0b015c9e059e18d915f2a4f43161288 Mon Sep 17 00:00:00 2001 From: nils1323 Date: Mon, 6 Sep 2021 17:37:43 +0200 Subject: [PATCH 32/52] Fix logic check if it is var1 is not necessary because telegram only needs strings and no numbers --- frontend/src/forms/Notifier.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/forms/Notifier.vue b/frontend/src/forms/Notifier.vue index 4eb7538d..1e5c8ef5 100644 --- a/frontend/src/forms/Notifier.vue +++ b/frontend/src/forms/Notifier.vue @@ -282,7 +282,7 @@ export default { this.notifier.form.forEach((f) => { let field = f.field.toLowerCase() let val = this.notifier[field] - if (this.isNumeric(val) && (this.form.method!='telegram' && field != 'var1')) { + if (this.isNumeric(val) && this.form.method!='telegram') { val = parseInt(val) } this.form[field] = val @@ -304,7 +304,7 @@ export default { this.notifier.form.forEach((f) => { let field = f.field.toLowerCase() let val = this.notifier[field] - if (this.isNumeric(val) && (this.form.method!='telegram' && field != 'var1')) { + if (this.isNumeric(val) && this.form.method!='telegram') { val = parseInt(val) } this.form[field] = val From 819c0bf3752c94db36d2b310e5620dd447db066f Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Sat, 11 Sep 2021 21:04:10 +0100 Subject: [PATCH 33/52] Moved reliance on assets.statping.com to our github site. --- frontend/public/base.gohtml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/public/base.gohtml b/frontend/public/base.gohtml index 696d733f..3cae161e 100644 --- a/frontend/public/base.gohtml +++ b/frontend/public/base.gohtml @@ -25,7 +25,7 @@ {{if USE_CDN}} - + {{else}} <% _.each(htmlWebpackPlugin.tags.headTags, function(headTag) { %> <%= headTag %> <% }) %> @@ -39,10 +39,10 @@
{{if USE_CDN}} - - - - + + + + {{else}} <% _.each(htmlWebpackPlugin.tags.bodyTags, function(bodyTag) { %> <%= bodyTag %> <% }) %> From 6aa229c0aafe61798fd611166fada641dc009a1f Mon Sep 17 00:00:00 2001 From: Adam Boutcher Date: Sat, 11 Sep 2021 21:04:33 +0100 Subject: [PATCH 34/52] Branding changes --- frontend/src/components/Dashboard/TopNav.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/Dashboard/TopNav.vue b/frontend/src/components/Dashboard/TopNav.vue index 8136fff8..c8692de6 100644 --- a/frontend/src/components/Dashboard/TopNav.vue +++ b/frontend/src/components/Dashboard/TopNav.vue @@ -1,6 +1,6 @@