pull/429/head
hunterlong 2020-02-25 09:39:38 -08:00
parent c0d76eb891
commit 7ac26c2841
8 changed files with 9754 additions and 56 deletions

View File

@ -178,11 +178,10 @@ func catchCLI(args []string) error {
func ExportIndexHTML() []byte { func ExportIndexHTML() []byte {
source.Assets() source.Assets()
core.CoreApp.Connect(false, utils.Directory) core.CoreApp.Connect(false, utils.Directory)
core.CoreApp.SelectAllServices(false) core.SelectAllServices(false)
core.CoreApp.UseCdn = types.NewNullBool(true) core.CoreApp.UseCdn = types.NewNullBool(true)
for _, srv := range core.CoreApp.Services { for _, srv := range core.Services() {
service := srv.(*core.Service) core.CheckService(srv, true)
service.Check(true)
} }
w := httptest.NewRecorder() w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/", nil) r := httptest.NewRequest("GET", "/", nil)
@ -220,12 +219,12 @@ func runOnce() {
if err != nil { if err != nil {
fmt.Println("Core database was not found, Statping is not setup yet.") fmt.Println("Core database was not found, Statping is not setup yet.")
} }
_, err = core.CoreApp.SelectAllServices(true) _, err = core.SelectAllServices(true)
if err != nil { if err != nil {
log.Errorln(err) log.Errorln(err)
} }
for _, out := range core.CoreApp.Services { for _, srv := range core.Services() {
out.Check(true) core.CheckService(srv, true)
} }
} }

View File

@ -16,6 +16,8 @@
package core package core
import ( import (
"encoding/json"
"github.com/hunterlong/statping/database"
"github.com/hunterlong/statping/types" "github.com/hunterlong/statping/types"
) )
@ -39,21 +41,19 @@ type ExportData struct {
// - Services // - Services
// - Groups // - Groups
// - Messages // - Messages
//func ExportSettings() ([]byte, error) { func ExportSettings() ([]byte, error) {
// users, err := SelectAllUsers() users := database.AllUsers()
// messages, err := SelectMessages() messages := database.AllMessages()
// if err != nil {
// return nil, err data := ExportData{
// } Core: CoreApp.Core,
// data := ExportData{ Notifiers: CoreApp.Notifications,
// Core: CoreApp.Core, //Checkins: database.AllCheckins(),
// Notifiers: CoreApp.Notifications, Users: users,
// Checkins: database.AllCheckins(), //Services: CoreApp.Services,
// Users: database.AllUsers(), //Groups: SelectGroups(true, true),
// Services: CoreApp.Services, Messages: messages,
// Groups: SelectGroups(true, true), }
// Messages: messages, export, err := json.Marshal(data)
// } return export, err
// export, err := json.Marshal(data) }
// return export, err
//}

View File

@ -18,6 +18,7 @@ package core
import ( import (
"fmt" "fmt"
"github.com/hunterlong/statping/database" "github.com/hunterlong/statping/database"
"github.com/hunterlong/statping/types"
"github.com/hunterlong/statping/utils" "github.com/hunterlong/statping/utils"
"golang.org/x/crypto/bcrypt" "golang.org/x/crypto/bcrypt"
"time" "time"
@ -88,14 +89,9 @@ func (u *User) Create() (int64, error) {
} }
// SelectAllUsers returns all users // SelectAllUsers returns all users
func SelectAllUsers() ([]*User, error) { func SelectAllUsers() []*types.User {
var users []*User users := database.AllUsers()
err := database.AllUsers(&users) return users
if err != nil {
log.Errorln(fmt.Sprintf("Failed to load all users. %v", err))
return nil, err
}
return users, err
} }
// AuthUser will return the User and a boolean if authentication was correct. // AuthUser will return the User and a boolean if authentication was correct.

View File

@ -14,6 +14,12 @@ func Message(id int64) (*MessageObj, error) {
return &MessageObj{Message: &message, o: wrapObject(id, &message, query)}, finder.Error() return &MessageObj{Message: &message, o: wrapObject(id, &message, query)}, finder.Error()
} }
func AllMessages() []*types.Message {
var messages []*types.Message
database.Messages().Find(&messages)
return messages
}
func (m *MessageObj) object() *Object { func (m *MessageObj) object() *Object {
return m.o return m.o
} }

View File

@ -159,17 +159,22 @@ func (s *ServiceObj) UpdateStats() *types.Stats {
// AvgTime will return the average amount of time for a service to response back successfully // AvgTime will return the average amount of time for a service to response back successfully
func (s *ServiceObj) AvgTime() float64 { func (s *ServiceObj) AvgTime() float64 {
var sum float64 var sum []float64
database.Hits(). database.Hits().
Select("AVG(latency) as amount"). Select("AVG(latency) as amount").
Where("service = ?", s.Id).Pluck("amount", &sum).Debug() Where("service = ?", s.Id).Pluck("amount", &sum).Debug()
sumTotal := float64(0)
for _, v := range sum {
sumTotal += v
}
total := s.Hits().Count() total := s.Hits().Count()
if total == 0 { if total == 0 {
return 0 return 0
} }
avg := sum / float64(total) * 100 avg := sumTotal / float64(total) * 100
f, _ := strconv.ParseFloat(fmt.Sprintf("%0.0f", avg*10), 32) f, _ := strconv.ParseFloat(fmt.Sprintf("%0.0f", avg*10), 32)
return f return f
} }

View File

@ -21,9 +21,10 @@ func UserByUsername(username string) (*UserObj, error) {
return &UserObj{User: &user, o: wrapObject(user.Id, &user, query)}, finder.Error() return &UserObj{User: &user, o: wrapObject(user.Id, &user, query)}, finder.Error()
} }
func AllUsers(input interface{}) error { func AllUsers() []*types.User {
err := database.Users().Find(&input) var users []*types.User
return err.Error() database.Users().Find(&users)
return users
} }
func (u *UserObj) object() *Object { func (u *UserObj) object() *Object {

9708
frontend/yarn.lock Normal file

File diff suppressed because it is too large Load Diff

View File

@ -25,21 +25,8 @@ import (
"github.com/hunterlong/statping/types" "github.com/hunterlong/statping/types"
"github.com/hunterlong/statping/utils" "github.com/hunterlong/statping/utils"
"net/http" "net/http"
"strconv"
) )
func usersHandler(w http.ResponseWriter, r *http.Request) {
users, _ := core.SelectAllUsers()
ExecuteResponse(w, r, "users.gohtml", users, nil)
}
func usersEditHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
id, _ := strconv.Atoi(vars["id"])
user, _ := core.SelectUser(int64(id))
ExecuteResponse(w, r, "user.gohtml", user, nil)
}
func apiUserHandler(w http.ResponseWriter, r *http.Request) { func apiUserHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r) vars := mux.Vars(r)
user, err := core.SelectUser(utils.ToInt(vars["id"])) user, err := core.SelectUser(utils.ToInt(vars["id"]))
@ -92,11 +79,7 @@ func apiUserDeleteHandler(w http.ResponseWriter, r *http.Request) {
} }
func apiAllUsersHandler(w http.ResponseWriter, r *http.Request) { func apiAllUsersHandler(w http.ResponseWriter, r *http.Request) {
users, err := core.SelectAllUsers() users := core.SelectAllUsers()
if err != nil {
sendErrorJson(err, w, r)
return
}
returnJson(users, w, r) returnJson(users, w, r)
} }