core

package
v0.0.0-...-5073c34 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 4, 2018 License: GPL-3.0 Imports: 28 Imported by: 0

Documentation

Overview

Package core contains the main functionality of Statup. This includes everything for Services, Hits, Failures, Users, service checking mechanisms, databases, and notifiers in the notifier package

More info on: https://github.com/hunterlong/statup

Index

Constants

This section is empty.

Variables

View Source
var (
	Configs   *DbConfig // Configs holds all of the config.yml and database info
	CoreApp   *Core     // CoreApp is a global variable that contains many elements
	SetupMode bool      // SetupMode will be true if Statup does not have a database connection
	VERSION   string    // VERSION is set on build automatically by setting a -ldflag
)
View Source
var (
	// DbSession stores the Statup database session
	DbSession *gorm.DB
)

Functions

func AuthUser

func AuthUser(username, password string) (*user, bool)

AuthUser will return the user and a boolean if authentication was correct. AuthUser accepts username, and password as a string

func CheckHash

func CheckHash(password, hash string) bool

CheckHash returns true if the password matches with a hashed bcrypt password

func CloseDB

func CloseDB()

CloseDB will close the database connection if available

func CountFailures

func CountFailures() uint64

CountFailures returns the total count of failures for all services

func DatabaseMaintence

func DatabaseMaintence()

DatabaseMaintence will automatically delete old records from 'failures' and 'hits' this function is currently set to delete records 7+ days old every 60 minutes

func Dbtimestamp

func Dbtimestamp(group string, column string) string

Dbtimestamp will return a SQL query for grouping by date

func DefaultPort

func DefaultPort(db string) int64

DefaultPort accepts a database type and returns its default port

func DeleteAllSince

func DeleteAllSince(table string, date time.Time)

DeleteAllSince will delete a specific table's records based on a time.

func DeleteConfig

func DeleteConfig() error

DeleteConfig will delete the 'config.yml' file

func ExportChartsJs

func ExportChartsJs() string

ExportChartsJs renders the charts for the index page

func ExportIndexHTML

func ExportIndexHTML() string

ExportIndexHTML returns the HTML of the index page as a string

func InitApp

func InitApp()

InitApp will initialize Statup

func InsertLargeSampleData

func InsertLargeSampleData() error

InsertLargeSampleData will create the example/dummy services for testing the Statup server

func InsertNotifierDB

func InsertNotifierDB() error

InsertNotifierDB inject the Statup database instance to the Notifier package

func InsertSampleData

func InsertSampleData() error

InsertSampleData will create the example/dummy services for a brand new Statup installation

func InsertSampleHits

func InsertSampleHits() error

InsertSampleHits will create a couple new hits for the sample services

func ReturnCheckinHit

func ReturnCheckinHit(c *types.CheckinHit) *checkinHit

ReturnCheckinHit converts *types.checkinHit to *core.checkinHit

func ReturnUser

func ReturnUser(u *types.User) *user

ReturnUser returns *core.user based off a *types.user

func SampleData

func SampleData() error

SampleData runs all the sample data for a new Statup installation

func SelectAllUsers

func SelectAllUsers() ([]*user, error)

SelectAllUsers returns all users

func SelectServicer

func SelectServicer(id int64) types.ServiceInterface

SelectServicer returns a types.ServiceInterface from in memory

func SelectUser

func SelectUser(id int64) (*user, error)

SelectUser returns the user based on the user's ID.

func SelectUsername

func SelectUsername(username string) (*user, error)

SelectUsername returns the user based on the user's username

func Services

func Services() []types.ServiceInterface

Types

type Checkin

type Checkin struct {
	*types.Checkin
}

func ReturnCheckin

func ReturnCheckin(c *types.Checkin) *Checkin

ReturnCheckin converts *types.Checking to *core.Checkin

func SelectCheckin

func SelectCheckin(api string) *Checkin

SelectCheckin will find a Checkin based on the API supplied

func SelectCheckinId

func SelectCheckinId(id int64) *Checkin

SelectCheckin will find a Checkin based on the API supplied

func (*Checkin) AfterFind

func (c *Checkin) AfterFind() (err error)

AfterFind for Checkin will set the timezone

func (*Checkin) BeforeCreate

func (c *Checkin) BeforeCreate() (err error)

BeforeCreate for Checkin will set CreatedAt to UTC

func (*Checkin) Create

func (c *Checkin) Create() (int64, error)

Create will create a new Checkin

func (*Checkin) CreateFailure

func (c *Checkin) CreateFailure() (int64, error)

func (*Checkin) Delete

func (c *Checkin) Delete() error

Create will create a new Checkin

func (*Checkin) Expected

func (c *Checkin) Expected() time.Duration

Expected returns the duration of when the serviec should receive a Checkin

func (*Checkin) Grace

func (c *Checkin) Grace() time.Duration

Grace will return the duration of the Checkin Grace Period (after service hasn't responded, wait a bit for a response)

func (*Checkin) Hits

func (c *Checkin) Hits() []*checkinHit

Hits returns all of the CheckinHits for a given Checkin

func (*Checkin) Last

func (c *Checkin) Last() *checkinHit

Last returns the last checkinHit for a Checkin

func (c *Checkin) Link() string

func (*Checkin) Period

func (c *Checkin) Period() time.Duration

Period will return the duration of the Checkin interval

func (*Checkin) RecheckCheckinFailure

func (c *Checkin) RecheckCheckinFailure(guard chan struct{})

RecheckCheckinFailure will check if a Service Checkin has been reported yet

func (*Checkin) Routine

func (c *Checkin) Routine()

Routine for checking if the last Checkin was within its interval

func (*Checkin) Service

func (c *Checkin) Service() *Service

func (*Checkin) String

func (c *Checkin) String() string

String will return a Checkin API string

func (*Checkin) Update

func (c *Checkin) Update() (int64, error)

Update will update a Checkin

type Core

type Core struct {
	*types.Core
}

func NewCore

func NewCore() *Core

NewCore return a new *core.Core struct

func SelectCore

func SelectCore() (*Core, error)

SelectCore will return the CoreApp global variable and the settings/configs for Statup

func UpdateCore

func UpdateCore(c *Core) (*Core, error)

UpdateCore will update the CoreApp variable inside of the 'core' table in database

func (Core) AllOnline

func (c Core) AllOnline() bool

AllOnline will be true if all services are online

func (Core) BaseSASS

func (c Core) BaseSASS() string

BaseSASS is the base design , this opens the file /assets/scss/base.scss to be edited in Theme

func (*Core) Count24HFailures

func (c *Core) Count24HFailures() uint64

Count24HFailures returns the amount of failures for a service within the last 24 hours

func (*Core) CountOnline

func (c *Core) CountOnline() int

CountOnline

func (Core) CurrentTime

func (c Core) CurrentTime() string

CurrentTime will return the current local time

func (Core) MobileSASS

func (c Core) MobileSASS() string

MobileSASS is the -webkit responsive custom css designs. This opens the file /assets/scss/mobile.scss to be edited in Theme

func (Core) SassVars

func (c Core) SassVars() string

SassVars opens the file /assets/scss/variables.scss to be edited in Theme

func (*Core) SelectAllServices

func (c *Core) SelectAllServices(start bool) ([]*Service, error)

SelectAllServices returns a slice of *core.Service to be store on []*core.Services, should only be called once on startup.

func (*Core) ServicesCount

func (c *Core) ServicesCount() int

ServicesCount returns the amount of services inside the []*core.Services slice

func (*Core) ToCore

func (c *Core) ToCore() *types.Core

ToCore will convert *core.Core to *types.Core

func (Core) UsingAssets

func (c Core) UsingAssets() bool

UsingAssets will return true if /assets folder is present

type DateScan

type DateScan struct {
	CreatedAt string `json:"x,omitempty"`
	Value     int64  `json:"y"`
}

DateScan struct is for creating the charts.js graph JSON array

type DateScanObj

type DateScanObj struct {
	Array []DateScan `json:"data"`
}

DateScanObj struct is for creating the charts.js graph JSON array

func GraphDataRaw

func GraphDataRaw(service types.ServiceInterface, start, end time.Time, group string, column string) *DateScanObj

GraphDataRaw will return all the hits between 2 times for a Service

func (*DateScanObj) ToString

func (d *DateScanObj) ToString() string

ToString will convert the DateScanObj into a JSON string for the charts to render

type DbConfig

type DbConfig types.DbConfig

DbConfig stores the config.yml file for the statup configuration

func EnvToConfig

func EnvToConfig() *DbConfig

EnvToConfig converts environment variables to a DbConfig variable

func LoadConfigFile

func LoadConfigFile(directory string) (*DbConfig, error)

LoadConfigFile will attempt to load the 'config.yml' file in a specific directory

func LoadUsingEnv

func LoadUsingEnv() (*DbConfig, error)

LoadUsingEnv will attempt to load database configs based on environment variables. If DB_CONN is set if will force this function.

func (*DbConfig) Close

func (db *DbConfig) Close() error

Close shutsdown the database connection

func (*DbConfig) Connect

func (db *DbConfig) Connect(retry bool, location string) error

Connect will attempt to connect to the sqlite, postgres, or mysql database

func (*DbConfig) CreateCore

func (c *DbConfig) CreateCore() *Core

CreateCore will initialize the global variable 'CoreApp". This global variable contains most of Statup app.

func (*DbConfig) CreateDatabase

func (db *DbConfig) CreateDatabase() error

CreateDatabase will CREATE TABLES for each of the Statup elements

func (*DbConfig) DropDatabase

func (db *DbConfig) DropDatabase() error

DropDatabase will DROP each table Statup created

func (*DbConfig) InsertCore

func (db *DbConfig) InsertCore() (*Core, error)

InsertCore create the single row for the Core settings in Statup

func (*DbConfig) MigrateDatabase

func (db *DbConfig) MigrateDatabase() error

MigrateDatabase will migrate the database structure to current version. This function will NOT remove previous records, tables or columns from the database. If this function has an issue, it will ROLLBACK to the previous state.

func (*DbConfig) Save

func (db *DbConfig) Save() (*DbConfig, error)

Save will initially create the config.yml file

func (*DbConfig) Update

func (db *DbConfig) Update() error

Update will save the config.yml file

type ErrorResponse

type ErrorResponse struct {
	Error string
}

ErrorResponse is used for HTTP errors to show to user

type Hit

type Hit struct {
	*types.Hit
}

func (*Hit) BeforeCreate

func (h *Hit) BeforeCreate() (err error)

BeforeCreate for Hit will set CreatedAt to UTC

type Message

type Message struct {
	*types.Message
}

func ReturnMessage

func ReturnMessage(m *types.Message) *Message

ReturnMessage will convert *types.Message to *core.Message

func SelectMessage

func SelectMessage(id int64) (*Message, error)

SelectMessage returns a Message based on the ID passed

func SelectMessages

func SelectMessages() ([]*Message, error)

SelectMessages returns all messages

func SelectServiceMessages

func SelectServiceMessages(id int64) []*Message

SelectServiceMessages returns all messages for a service

func (*Message) Create

func (m *Message) Create() (int64, error)

Create will create a Message and insert it into the database

func (*Message) Delete

func (m *Message) Delete() error

Delete will delete a Message from database

func (*Message) Service

func (m *Message) Service() *Service

func (*Message) Update

func (m *Message) Update() (*Message, error)

Update will update a Message in the database

type PluginJSON

type PluginJSON types.PluginJSON

type PluginRepos

type PluginRepos types.PluginRepos

type Service

type Service struct {
	*types.Service
}

func ReturnService

func ReturnService(s *types.Service) *Service

ReturnService will convert *types.Service to *core.Service

func SelectService

func SelectService(id int64) *Service

SelectService returns a *core.Service from in memory

func (*Service) ActiveMessages

func (s *Service) ActiveMessages() []*Message

ActiveMessages returns all Messages for a Service

func (*Service) AfterFind

func (s *Service) AfterFind() (err error)

AfterFind for Service will set the timezone

func (*Service) AllFailures

func (s *Service) AllFailures() []*failure

AllFailures will return all failures attached to a service

func (*Service) AvgTime

func (s *Service) AvgTime() float64

AvgTime will return the average amount of time for a service to response back successfully

func (*Service) AvgUptime

func (s *Service) AvgUptime(ago time.Time) string

AvgUptime returns average online status for last 24 hours

func (*Service) AvgUptime24

func (s *Service) AvgUptime24() string

AvgUptime24 returns a service's average online status for last 24 hours

func (*Service) BeforeCreate

func (s *Service) BeforeCreate() (err error)

BeforeCreate for Service will set CreatedAt to UTC

func (*Service) Check

func (s *Service) Check(record bool)

Check will run checkHttp for HTTP services and checkTcp for TCP services

func (*Service) CheckQueue

func (s *Service) CheckQueue(record bool)

CheckQueue is the main go routine for checking a service

func (*Service) CheckinProcess

func (s *Service) CheckinProcess()

CheckinProcess runs the checkin routine for each checkin attached to service

func (*Service) Checkins

func (s *Service) Checkins() []*Checkin

Checkins will return a slice of Checkins for a Service

func (*Service) CountHits

func (s *Service) CountHits() (int64, error)

CountHits returns a int64 for all hits for a service

func (*Service) Create

func (s *Service) Create(check bool) (int64, error)

Create will create a service and insert it into the database

func (*Service) CreateFailure

func (s *Service) CreateFailure(fail types.FailureInterface) (int64, error)

CreateFailure will create a new failure record for a service

func (*Service) CreateHit

func (s *Service) CreateHit(h *types.Hit) (int64, error)

CreateHit will create a new 'hit' record in the database for a successful/online service

func (*Service) Delete

func (s *Service) Delete() error

Delete will remove a service from the database, it will also end the service checking go routine

func (*Service) DeleteFailures

func (s *Service) DeleteFailures()

DeleteFailures will delete all failures for a service

func (*Service) Downtime

func (s *Service) Downtime() time.Duration

Downtime returns the amount of time of a offline service

func (*Service) DowntimeText

func (s *Service) DowntimeText() string

DowntimeText will return the amount of downtime for a service based on the duration

service.DowntimeText()
// Service has been offline for 15 minutes

func (*Service) Hits

func (s *Service) Hits() ([]*types.Hit, error)

Hits returns all successful hits for a service

func (*Service) HitsBetween

func (s *Service) HitsBetween(t1, t2 time.Time, group string, column string) *gorm.DB

HitsBetween returns the gorm database query for a collection of service hits between a time range

func (*Service) LimitedCheckins

func (s *Service) LimitedCheckins() []*Checkin

LimitedCheckins will return a slice of Checkins for a Service

func (*Service) LimitedFailures

func (s *Service) LimitedFailures(amount int64) []*failure

LimitedFailures will return the last amount of failures from a service

func (*Service) LimitedHits

func (s *Service) LimitedHits() ([]*types.Hit, error)

LimitedHits returns the last 1024 successful/online 'hit' records for a service

func (*Service) Messages

func (s *Service) Messages() []*Message

Messages returns all Messages for a Service

func (*Service) Online24

func (s *Service) Online24() float32

Online24 returns the service's uptime percent within last 24 hours

func (*Service) OnlineSince

func (s *Service) OnlineSince(ago time.Time) float32

OnlineSince accepts a time since parameter to return the percent of a service's uptime.

func (*Service) Select

func (s *Service) Select() *types.Service

Select will return the *types.Service struct for Service

func (*Service) SmallText

func (s *Service) SmallText() string

SmallText returns a short description about a services status

service.SmallText()
// Online since Monday 3:04:05PM, Jan _2 2006

func (*Service) Sum

func (s *Service) Sum() (float64, error)

Sum returns the added value Latency for all of the services successful hits.

func (*Service) ToJSON

func (s *Service) ToJSON() string

ToJSON will convert a service to a JSON string

func (*Service) TotalFailures

func (s *Service) TotalFailures() (uint64, error)

TotalFailures returns the total amount of failures for a service

func (*Service) TotalFailures24

func (s *Service) TotalFailures24() (uint64, error)

TotalFailures24 returns the amount of failures for a service within the last 24 hours

func (*Service) TotalFailuresSince

func (s *Service) TotalFailuresSince(ago time.Time) (uint64, error)

TotalFailuresSince returns the total amount of failures for a service since a specific time/date

func (*Service) TotalHits

func (s *Service) TotalHits() (uint64, error)

TotalHits returns the total amount of successful hits a service has

func (*Service) TotalHitsSince

func (s *Service) TotalHitsSince(ago time.Time) (uint64, error)

TotalHitsSince returns the total amount of hits based on a specific time/date

func (*Service) TotalUptime

func (s *Service) TotalUptime() string

TotalUptime returns the total uptime percent of a service

func (*Service) Update

func (s *Service) Update(restart bool) error

Update will update a service in the database, the service's checking routine can be restarted by passing true

func (*Service) UpdateSingle

func (s *Service) UpdateSingle(attr ...interface{}) error

UpdateSingle will update a single column for a service

type ServiceOrder

type ServiceOrder []types.ServiceInterface

ServiceOrder will reorder the services based on 'order_id' (Order)

func (ServiceOrder) Len

func (c ServiceOrder) Len() int

Sort interface for resroting the Services in order

func (ServiceOrder) Less

func (c ServiceOrder) Less(i, j int) bool

func (ServiceOrder) Swap

func (c ServiceOrder) Swap(i, j int)

Directories

Path Synopsis
Package notifier contains the main functionality for the Statup Notification system Example Notifier Below is an example of a Notifier with multiple Form values to custom your inputs.
Package notifier contains the main functionality for the Statup Notification system Example Notifier Below is an example of a Notifier with multiple Form values to custom your inputs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL