export groups - minor updates

pull/130/head
Hunter Long 2019-01-08 20:20:43 -08:00
parent 373c2d1d5b
commit 50e3cf2143
16 changed files with 94 additions and 33 deletions

View File

@ -13,6 +13,7 @@ vendor
servers servers
dev dev
!dev/postman_environment.json !dev/postman_environment.json
!dev/demo-script.sh
!build/alpine-linux-amd64 !build/alpine-linux-amd64
config.yml config.yml
statup.db statup.db

View File

@ -233,6 +233,7 @@ func HelpEcho() {
fmt.Println(" ADMIN_USER - Username for administrator account (default: admin)") fmt.Println(" ADMIN_USER - Username for administrator account (default: admin)")
fmt.Println(" ADMIN_PASS - Password for administrator account (default: admin)") fmt.Println(" ADMIN_PASS - Password for administrator account (default: admin)")
fmt.Println(" SASS - Set the absolute path to the sass binary location") fmt.Println(" SASS - Set the absolute path to the sass binary location")
fmt.Println(" HTTP_PROXY - Use a HTTP Proxy for HTTP Requests")
fmt.Println(" * You can insert environment variables into a '.env' file in root directory.") fmt.Println(" * You can insert environment variables into a '.env' file in root directory.")
fmt.Println("Give Statping a Star at https://github.com/hunterlong/statping") fmt.Println("Give Statping a Star at https://github.com/hunterlong/statping")
} }

View File

@ -51,9 +51,18 @@ type ExportData struct {
Messages []*Message `json:"messages"` Messages []*Message `json:"messages"`
Checkins []*Checkin `json:"checkins"` Checkins []*Checkin `json:"checkins"`
Users []*User `json:"users"` Users []*User `json:"users"`
Groups []*Group `json:"groups"`
Notifiers []types.AllNotifiers `json:"notifiers"` Notifiers []types.AllNotifiers `json:"notifiers"`
} }
// ExportSettings will export a JSON file containing all of the settings below:
// - Core
// - Notifiers
// - Checkins
// - Users
// - Services
// - Groups
// - Messages
func ExportSettings() ([]byte, error) { func ExportSettings() ([]byte, error) {
users, err := SelectAllUsers() users, err := SelectAllUsers()
messages, err := SelectMessages() messages, err := SelectMessages()
@ -66,6 +75,7 @@ func ExportSettings() ([]byte, error) {
Checkins: AllCheckins(), Checkins: AllCheckins(),
Users: users, Users: users,
Services: CoreApp.Services, Services: CoreApp.Services,
Groups: SelectGroups(true, true),
Messages: messages, Messages: messages,
} }
export, err := json.Marshal(data) export, err := json.Marshal(data)

View File

@ -66,11 +66,11 @@ func InsertSampleData() error {
Name: "JSON API Tester", Name: "JSON API Tester",
Domain: "https://jsonplaceholder.typicode.com/posts", Domain: "https://jsonplaceholder.typicode.com/posts",
ExpectedStatus: 201, ExpectedStatus: 201,
Expected: types.NewNullString(`(title)": "((\\"|[statup])*)"`), Expected: types.NewNullString(`(title)": "((\\"|[statping])*)"`),
Interval: 30, Interval: 30,
Type: "http", Type: "http",
Method: "POST", Method: "POST",
PostData: types.NewNullString(`{ "title": "statup", "body": "bar", "userId": 19999 }`), PostData: types.NewNullString(`{ "title": "statping", "body": "bar", "userId": 19999 }`),
Timeout: 30, Timeout: 30,
Order: 4, Order: 4,
Public: types.NewNullBool(true), Public: types.NewNullBool(true),

View File

@ -355,9 +355,8 @@ func (s *Service) index() int {
} }
// updateService will update a service in the []*core.Services slice // updateService will update a service in the []*core.Services slice
func updateService(service *Service) { func updateService(s *Service) {
index := service.index() CoreApp.Services[s.index()] = s
CoreApp.Services[index] = service
} }
// Delete will remove a service from the database, it will also end the service checking go routine // Delete will remove a service from the database, it will also end the service checking go routine

26
dev/Dockerfile-demo Normal file
View File

@ -0,0 +1,26 @@
FROM alpine
MAINTAINER "Hunter Long (https://github.com/hunterlong)"
ENV STATPING_VERSION=0.80.35
RUN apk add --no-cache ca-certificates linux-headers curl
RUN curl -L -s https://assets.statping.com/sass -o /usr/local/bin/sass && \
chmod +x /usr/local/bin/sass
RUN curl -L -s https://github.com/hunterlong/statping/releases/download/v$STATPING_VERSION/statping-linux-alpine.tar.gz | tar -xz && \
chmod +x statping && mv statping /usr/local/bin/statping
ENV DB_CONN=sqlite
ENV NAME="Statping Demo"
ENV DESCRIPTION="An Awesome Demo of a Statping Server running on Docker"
ENV DOMAIN=demo.statping.com
ENV SASS=/usr/local/bin/sass
ENV IS_DOCKER=true
ENV STATPING_DIR=/app
WORKDIR /app
COPY ./dev/demo-script.sh /app/
ENTRYPOINT ./demo-script.sh

7
dev/demo-script.sh Executable file
View File

@ -0,0 +1,7 @@
#!/usr/bin/env sh
COMMAND="rm -rf /app/statping.db && reboot"
echo "* * * * * echo $COMMAND >> /test_file 2>&1" > /etc/crontabs/root
statping

15
dev/play-with-docker.yml Normal file
View File

@ -0,0 +1,15 @@
# Deploy Portainer demo (demo.portainer.io) in a play-with-docker playground
#
# - Go to http://play-with-docker.com/?stack=https://raw.githubusercontent.com/portainer/portainer-demo/master/play-with-docker/docker-stack.yml
# - Login and/or Start.
# - Wait until 'Your session is ready!' and 'Close' modal.
# - Refresh (if a shell is not shown).
# - Wait until a link with text '80' is shown. It is the link to the demo.
# - Visit https://github.com/portainer/portainer to check default credentials.
#
version: '3'
services:
trigger:
image: franela/dind
command: sh -c "git clone https://github.com/portainer/portainer-demo/ && ./portainer-demo/portainer-demo.sh && tail -f /dev/null"
volumes: [ '/var/run/docker.sock:/var/run/docker.sock' ]

View File

@ -1,6 +1,6 @@
{ {
"id": "0ff1dcd6-54f3-44a7-9c18-cc3c8e7df357", "id": "0ff1dcd6-54f3-44a7-9c18-cc3c8e7df357",
"name": "Local Statup", "name": "Local Statping",
"values": [ "values": [
{ {
"key": "endpoint", "key": "endpoint",

View File

@ -40,8 +40,10 @@ func apiIndexHandler(w http.ResponseWriter, r *http.Request) {
sendUnauthorizedJson(w, r) sendUnauthorizedJson(w, r)
return return
} }
coreClone := *core.CoreApp
coreClone.Started = utils.Timezoner(core.CoreApp.Started, core.CoreApp.Timezone)
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(core.CoreApp) json.NewEncoder(w).Encode(coreClone)
} }
func apiRenewHandler(w http.ResponseWriter, r *http.Request) { func apiRenewHandler(w http.ResponseWriter, r *http.Request) {

View File

@ -79,7 +79,7 @@ func dataJson(s *types.Service, f *types.Failure) map[string]interface{} {
if f != nil { if f != nil {
issue = f.Issue issue = f.Issue
} }
link := fmt.Sprintf("statup://service?id=%v", serviceId) link := fmt.Sprintf("statping://service?id=%v", serviceId)
out := map[string]interface{}{ out := map[string]interface{}{
"status": online, "status": online,
"id": serviceId, "id": serviceId,

View File

@ -117,7 +117,7 @@ func (u *telegram) OnSave() error {
// OnTest will test the Twilio SMS messaging // OnTest will test the Twilio SMS messaging
func (u *telegram) OnTest() error { func (u *telegram) OnTest() error {
msg := fmt.Sprintf("Testing the Twilio SMS Notifier on your Statup server") msg := fmt.Sprintf("Testing the Twilio SMS Notifier on your Statping server")
return u.Send(msg) return u.Send(msg)
} }

View File

@ -2,7 +2,7 @@
// Copyright (C) 2018. Hunter Long and the project contributors // Copyright (C) 2018. Hunter Long and the project contributors
// Written by Hunter Long <info@socialeck.com> and the project contributors // Written by Hunter Long <info@socialeck.com> and the project contributors
// //
// https://github.com/hunterlong/statup // https://github.com/hunterlong/statping
// //
// The licenses for most software and other practical works are designed // The licenses for most software and other practical works are designed
// to take away your freedom to share and change the works. By contrast, // to take away your freedom to share and change the works. By contrast,

View File

@ -2,7 +2,7 @@
"info": { "info": {
"_postman_id": "94807b85-ef65-4370-9144-b1a74e04cb0e", "_postman_id": "94807b85-ef65-4370-9144-b1a74e04cb0e",
"name": "Statping", "name": "Statping",
"description": "Statup API Requests", "description": "Statping API Requests",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
}, },
"item": [ "item": [
@ -10,7 +10,7 @@
"name": "Main", "name": "Main",
"item": [ "item": [
{ {
"name": "Statup Details", "name": "Statping Details",
"event": [ "event": [
{ {
"listen": "test", "listen": "test",

View File

@ -1,6 +1,6 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2019-01-03 22:14:02.567846 -0800 PST m=+0.846504189 // 2019-01-04 02:40:51.133321 -0800 PST m=+0.790626621
// //
// This contains the most recently Markdown source for the Statping Wiki. // This contains the most recently Markdown source for the Statping Wiki.
package source package source

View File

@ -10,7 +10,7 @@ US_E_2="ami-cc7a40a9"
AMI_IMAGE=$US_W_2 AMI_IMAGE=$US_W_2
AWS_CLI=$(which aws) AWS_CLI=$(which aws)
DOCKER_CLI=$(which docker) DOCKER_CLI=$(which docker)
DOCKER_IMG="hunterlong/statup" DOCKER_IMG="hunterlong/statping"
AWS_ECS="$AWS_CLI --output json" AWS_ECS="$AWS_CLI --output json"
DOCKER_PORT=8080 DOCKER_PORT=8080
@ -20,7 +20,7 @@ cat <<EOM
A simple shell script that will help you install Statping on your local machine, AWS, or Docker. A simple shell script that will help you install Statping on your local machine, AWS, or Docker.
Commands: Commands:
install Install statup to your local system install Install statping to your local system
aws Create a new EC2 instance running Statping aws Create a new EC2 instance running Statping
docker Start the latest Statping Docker image docker Start the latest Statping Docker image
docker-compose Create Statping with a Postgres database docker-compose Create Statping with a Postgres database
@ -55,7 +55,7 @@ function require() {
# Get the latest release from github # Get the latest release from github
get_latest_release() { get_latest_release() {
STATUP_VERSION=$(curl --silent "https://api.github.com/repos/$DOCKER_IMG/releases/latest" | jq -r .tag_name) STATPING_VERSION=$(curl --silent "https://api.github.com/repos/$DOCKER_IMG/releases/latest" | jq -r .tag_name)
} }
# auto set AWS environment variables # auto set AWS environment variables
@ -111,12 +111,12 @@ function askSecurityName {
read -p "Enter a name for the new Security Group: " EC2SECGROUP read -p "Enter a name for the new Security Group: " EC2SECGROUP
} }
# ask user if they want to install statup to the bin folder # ask user if they want to install statping to the bin folder
function askInstallGlobal { function askInstallGlobal {
read -p "Do you want to move Statping to the bin folder? (y/N): " MOVEBIN read -p "Do you want to move Statping to the bin folder? (y/N): " MOVEBIN
} }
# ask user if they want statup to start on boot # ask user if they want statping to start on boot
function askInstallSystemCTL { function askInstallSystemCTL {
read -p "Do you want to auto start Statping on boot? (y/N): " SYSTEMCTL read -p "Do you want to auto start Statping on boot? (y/N): " SYSTEMCTL
} }
@ -143,7 +143,7 @@ function awsCreateEC2 {
echo "New EC2 instance created: $INSTANCE_ID with status $EC2_STATUS"; echo "New EC2 instance created: $INSTANCE_ID with status $EC2_STATUS";
} }
# task to created a new EC2 instance with statup image # task to created a new EC2 instance with statping image
function ec2TaskComplete { function ec2TaskComplete {
echo "New EC2 instance is ready! $INSTANCE_ID with status $EC2_STATUS"; echo "New EC2 instance is ready! $INSTANCE_ID with status $EC2_STATUS";
echo "Instance ID: $INSTANCE_ID with status $EC2_STATUS"; echo "Instance ID: $INSTANCE_ID with status $EC2_STATUS";
@ -184,14 +184,14 @@ function awsTask {
ec2TaskComplete ec2TaskComplete
} }
# function to move the statup binary to the bin folder # function to move the statping binary to the bin folder
function moveToBin { function moveToBin {
mv statup /usr/local/bin/statup mv statping /usr/local/bin/statping
} }
# function to install a systemctl service to the local system # function to install a systemctl service to the local system
function installSystemCTL { function installSystemCTL {
FILE=statup.service FILE=statping.service
cat > $FILE <<- EOM cat > $FILE <<- EOM
[Unit] [Unit]
Description=Statping Server Description=Statping Server
@ -202,7 +202,7 @@ After=network-online.target
[Service] [Service]
Type=simple Type=simple
Restart=always Restart=always
ExecStart=/usr/local/bin/statup ExecStart=/usr/local/bin/statping
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@ -210,8 +210,8 @@ EOM
echo "Installing systemctl service file to: /etc/systemd/system/$FILE" echo "Installing systemctl service file to: /etc/systemd/system/$FILE"
mv $FILE /etc/systemd/system/$FILE mv $FILE /etc/systemd/system/$FILE
systemctl daemon-reload systemctl daemon-reload
systemctl enable statup.service systemctl enable statping.service
systemctl start statup systemctl start statping
echo "Statping has been installed to SystemCTL and will start on boot" echo "Statping has been installed to SystemCTL and will start on boot"
} }
@ -220,21 +220,21 @@ function downloadBin {
getOS getOS
getArch getArch
get_latest_release get_latest_release
GIT_DOWNLOAD="https://github.com/$DOCKER_IMG/releases/download/$STATUP_VERSION/statup-$OS-$ARCH.tar.gz" GIT_DOWNLOAD="https://github.com/$DOCKER_IMG/releases/download/$STATPING_VERSION/statping-$OS-$ARCH.tar.gz"
echo "Downloading Statping $STATUP_VERSION from $GIT_DOWNLOAD" echo "Downloading Statping $STATPING_VERSION from $GIT_DOWNLOAD"
curl -L --silent $GIT_DOWNLOAD | tar xz curl -L --silent $GIT_DOWNLOAD | tar xz
echo "Download complete" echo "Download complete"
} }
# install statup locally from github # install statping locally from github
function localTask { function localTask {
downloadBin downloadBin
echo "Try Statping by running 'statup version'!" echo "Try Statping by running 'statping version'!"
askInstallGlobal askInstallGlobal
if [ $MOVEBIN == "y" ]; then if [ $MOVEBIN == "y" ]; then
moveToBin moveToBin
echo "Statping can now be ran anywhere with command 'statup'" echo "Statping can now be ran anywhere with command 'statping'"
echo "Install location: /usr/local/bin/statup" echo "Install location: /usr/local/bin/statping"
if [ $OS == "linux" ]; then if [ $OS == "linux" ]; then
askInstallSystemCTL askInstallSystemCTL
if [ $SYSTEMCTL == "y" ]; then if [ $SYSTEMCTL == "y" ]; then
@ -245,7 +245,7 @@ function localTask {
} }
function uninstallTask { function uninstallTask {
rm -f /usr/local/bin/statup rm -f /usr/local/bin/statping
} }
# start the Statping docker image # start the Statping docker image
@ -293,7 +293,7 @@ function getOS {
function echoVersion { function echoVersion {
require jq require jq
get_latest_release get_latest_release
echo "Statping Latest: $STATUP_VERSION" echo "Statping Latest: $STATPING_VERSION"
echo "Statpinger Tool: v$VERSION" echo "Statpinger Tool: v$VERSION"
} }