mirror of https://github.com/statping/statping
removed exports - cleaned
parent
c539c72c60
commit
892331ead6
|
@ -1,115 +0,0 @@
|
|||
// Statup
|
||||
// Copyright (C) 2018. Hunter Long and the project contributors
|
||||
// Written by Hunter Long <info@socialeck.com> and the project contributors
|
||||
//
|
||||
// https://github.com/hunterlong/statup
|
||||
//
|
||||
// The licenses for most software and other practical works are designed
|
||||
// to take away your freedom to share and change the works. By contrast,
|
||||
// the GNU General Public License is intended to guarantee your freedom to
|
||||
// share and change all versions of a program--to make sure it remains free
|
||||
// software for all its users.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// +build debug
|
||||
|
||||
// Statup
|
||||
// Copyright (C) 2018. Hunter Long and the project contributors
|
||||
// Written by Hunter Long <info@socialeck.com> and the project contributors
|
||||
//
|
||||
// https://github.com/hunterlong/statup
|
||||
//
|
||||
// The licenses for most software and other practical works are designed
|
||||
// to take away your freedom to share and change the works. By contrast,
|
||||
// the GNU General Public License is intended to guarantee your freedom to
|
||||
// share and change all versions of a program--to make sure it remains free
|
||||
// software for all its users.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//
|
||||
// Debug instance of Statup using pprof and debugcharts
|
||||
//
|
||||
// go get -u github.com/google/pprof
|
||||
// go get -v -u github.com/mkevac/debugcharts
|
||||
//
|
||||
// debugcharts web interface is on http://localhost:9090
|
||||
//
|
||||
// - pprof -http=localhost:6060 http://localhost:8080/debug/pprof/profile
|
||||
// - pprof -http=localhost:6060 http://localhost:8080/debug/pprof/heap
|
||||
// - pprof -http=localhost:6060 http://localhost:8080/debug/pprof/goroutine
|
||||
// - pprof -http=localhost:6060 http://localhost:8080/debug/pprof/block
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
gorillahandler "github.com/gorilla/handlers"
|
||||
"github.com/hunterlong/statup/core"
|
||||
"github.com/hunterlong/statup/handlers"
|
||||
_ "github.com/mkevac/debugcharts"
|
||||
"net/http"
|
||||
"net/http/pprof"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
func init() {
|
||||
os.Setenv("GO_ENV", "test")
|
||||
go func() {
|
||||
time.Sleep(5 * time.Second)
|
||||
r := handlers.ReturnRouter()
|
||||
r.HandleFunc("/debug/pprof/", pprof.Index)
|
||||
r.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
|
||||
r.HandleFunc("/debug/pprof/profile", pprof.Profile)
|
||||
r.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
|
||||
r.HandleFunc("/debug/pprof/trace", pprof.Trace)
|
||||
r.Handle("/debug/pprof/goroutine", pprof.Handler("goroutine"))
|
||||
r.Handle("/debug/pprof/heap", pprof.Handler("heap"))
|
||||
r.Handle("/debug/pprof/threadcreate", pprof.Handler("threadcreate"))
|
||||
r.Handle("/debug/pprof/block", pprof.Handler("block"))
|
||||
handlers.UpdateRouter(r)
|
||||
time.Sleep(5 * time.Second)
|
||||
go ViewPagesLoop()
|
||||
}()
|
||||
go func() {
|
||||
panic(http.ListenAndServe(":9090", gorillahandler.CompressHandler(http.DefaultServeMux)))
|
||||
}()
|
||||
}
|
||||
|
||||
func ViewPagesLoop() {
|
||||
httpRequest("/")
|
||||
httpRequest("/charts.js")
|
||||
httpRequest("/css/base.css")
|
||||
httpRequest("/css/bootstrap.min.css")
|
||||
httpRequest("/js/main.js")
|
||||
httpRequest("/js/jquery-3.3.1.min.js")
|
||||
httpRequest("/login")
|
||||
httpRequest("/dashboard")
|
||||
httpRequest("/settings")
|
||||
httpRequest("/users")
|
||||
httpRequest("/users/1")
|
||||
httpRequest("/services")
|
||||
httpRequest("/help")
|
||||
httpRequest("/logs")
|
||||
httpRequest("/404pageishere")
|
||||
for i := 1; i <= len(core.CoreApp.Services()); i++ {
|
||||
httpRequest(fmt.Sprintf("/service/%v", i))
|
||||
}
|
||||
defer ViewPagesLoop()
|
||||
}
|
||||
|
||||
func httpRequest(url string) {
|
||||
domain := fmt.Sprintf("http://localhost:%v%v", port, url)
|
||||
response, err := http.Get(domain)
|
||||
if err != nil {
|
||||
fmt.Printf("%s", err)
|
||||
return
|
||||
}
|
||||
defer response.Body.Close()
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
|
@ -26,7 +26,7 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
type ApiResponse struct {
|
||||
type apiResponse struct {
|
||||
Status string `json:"status"`
|
||||
Object string `json:"type"`
|
||||
Id int64 `json:"id"`
|
||||
|
@ -192,7 +192,7 @@ func apiServiceDeleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
output := ApiResponse{
|
||||
output := apiResponse{
|
||||
Object: "service",
|
||||
Method: "delete",
|
||||
Id: service.Id,
|
||||
|
@ -274,7 +274,7 @@ func apiUserDeleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
output := ApiResponse{
|
||||
output := apiResponse{
|
||||
Object: "user",
|
||||
Method: "delete",
|
||||
Id: user.Id,
|
||||
|
@ -312,7 +312,7 @@ func apiCreateUsersHandler(w http.ResponseWriter, r *http.Request) {
|
|||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
output := ApiResponse{
|
||||
output := apiResponse{
|
||||
Object: "user",
|
||||
Method: "create",
|
||||
Id: uId,
|
||||
|
|
|
@ -159,7 +159,7 @@ func TestApiDeleteServiceHandler(t *testing.T) {
|
|||
rr, err := httpRequestAPI(t, "DELETE", "/api/services/1", nil)
|
||||
assert.Nil(t, err)
|
||||
body := rr.Body.String()
|
||||
var obj ApiResponse
|
||||
var obj apiResponse
|
||||
formatJSON(body, &obj)
|
||||
assert.Equal(t, 200, rr.Code)
|
||||
assert.Equal(t, "delete", obj.Method)
|
||||
|
@ -186,7 +186,7 @@ func TestApiCreateUserHandler(t *testing.T) {
|
|||
rr, err := httpRequestAPI(t, "POST", "/api/users", strings.NewReader(data))
|
||||
assert.Nil(t, err)
|
||||
body := rr.Body.String()
|
||||
var obj ApiResponse
|
||||
var obj apiResponse
|
||||
formatJSON(body, &obj)
|
||||
assert.Equal(t, 200, rr.Code)
|
||||
assert.Contains(t, "create", obj.Method)
|
||||
|
@ -224,7 +224,7 @@ func TestApiDeleteUserHandler(t *testing.T) {
|
|||
rr, err := httpRequestAPI(t, "DELETE", "/api/users/1", nil)
|
||||
assert.Nil(t, err)
|
||||
body := rr.Body.String()
|
||||
var obj ApiResponse
|
||||
var obj apiResponse
|
||||
formatJSON(body, &obj)
|
||||
assert.Equal(t, 200, rr.Code)
|
||||
assert.Equal(t, "delete", obj.Method)
|
||||
|
|
|
@ -40,10 +40,10 @@ func dashboardHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
func loginHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if Store == nil {
|
||||
if sessionStore == nil {
|
||||
resetCookies()
|
||||
}
|
||||
session, _ := Store.Get(r, COOKIE_KEY)
|
||||
session, _ := sessionStore.Get(r, cookieKey)
|
||||
r.ParseForm()
|
||||
username := r.PostForm.Get("username")
|
||||
password := r.PostForm.Get("password")
|
||||
|
@ -60,7 +60,7 @@ func loginHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
func logoutHandler(w http.ResponseWriter, r *http.Request) {
|
||||
session, _ := Store.Get(r, COOKIE_KEY)
|
||||
session, _ := sessionStore.Get(r, cookieKey)
|
||||
session.Values["authenticated"] = false
|
||||
session.Save(r, w)
|
||||
http.Redirect(w, r, "/", http.StatusSeeOther)
|
||||
|
|
|
@ -31,12 +31,12 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
COOKIE_KEY = "statup_auth"
|
||||
cookieKey = "statup_auth"
|
||||
)
|
||||
|
||||
var (
|
||||
Store *sessions.CookieStore
|
||||
httpServer *http.Server
|
||||
sessionStore *sessions.CookieStore
|
||||
httpServer *http.Server
|
||||
)
|
||||
|
||||
// RunHTTPServer will start a HTTP server on a specific IP and port
|
||||
|
@ -71,10 +71,10 @@ func IsAuthenticated(r *http.Request) bool {
|
|||
if core.CoreApp == nil {
|
||||
return false
|
||||
}
|
||||
if Store == nil {
|
||||
if sessionStore == nil {
|
||||
return false
|
||||
}
|
||||
session, err := Store.Get(r, COOKIE_KEY)
|
||||
session, err := sessionStore.Get(r, cookieKey)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -114,16 +114,7 @@ func Router() *mux.Router {
|
|||
return r
|
||||
}
|
||||
|
||||
func ReturnRouter() *mux.Router {
|
||||
return router
|
||||
}
|
||||
|
||||
func UpdateRouter(routes *mux.Router) {
|
||||
router = routes
|
||||
httpServer.Handler = router
|
||||
}
|
||||
|
||||
func ResetRouter() {
|
||||
func resetRouter() {
|
||||
router = Router()
|
||||
httpServer.Handler = router
|
||||
}
|
||||
|
@ -131,8 +122,8 @@ func ResetRouter() {
|
|||
func resetCookies() {
|
||||
if core.CoreApp != nil {
|
||||
cookie := fmt.Sprintf("%v_%v", core.CoreApp.ApiSecret, time.Now().Nanosecond())
|
||||
Store = sessions.NewCookieStore([]byte(cookie))
|
||||
sessionStore = sessions.NewCookieStore([]byte(cookie))
|
||||
} else {
|
||||
Store = sessions.NewCookieStore([]byte("secretinfo"))
|
||||
sessionStore = sessions.NewCookieStore([]byte("secretinfo"))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ func saveSASSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
source.SaveAsset([]byte(variables), utils.Directory, "scss/variables.scss")
|
||||
source.SaveAsset([]byte(mobile), utils.Directory, "scss/mobile.scss")
|
||||
source.CompileSASS(utils.Directory)
|
||||
ResetRouter()
|
||||
resetRouter()
|
||||
executeResponse(w, r, "settings.html", core.CoreApp, "/settings")
|
||||
}
|
||||
|
||||
|
@ -105,7 +105,7 @@ func saveAssetsHandler(w http.ResponseWriter, r *http.Request) {
|
|||
source.CopyToPublic(source.CssBox, dir+"/assets/css", "base.css")
|
||||
utils.Log(2, "Default 'base.css' was insert because SASS did not work.")
|
||||
}
|
||||
ResetRouter()
|
||||
resetRouter()
|
||||
executeResponse(w, r, "settings.html", core.CoreApp, "/settings")
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,7 @@ func deleteAssetsHandler(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
source.DeleteAllAssets(utils.Directory)
|
||||
ResetRouter()
|
||||
resetRouter()
|
||||
executeResponse(w, r, "settings.html", core.CoreApp, "/settings")
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ func TestDir(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestCommand(t *testing.T) {
|
||||
t.SkipNow()
|
||||
in, out, err := Command("pwd")
|
||||
assert.Nil(t, err)
|
||||
assert.Contains(t, in, "statup")
|
||||
|
|
Loading…
Reference in New Issue