mirror of https://github.com/statping/statping
				
				
				
			new
							parent
							
								
									9c2cc65c7c
								
							
						
					
					
						commit
						3cd46fa6c4
					
				| 
						 | 
				
			
			@ -3,3 +3,4 @@ rice-box.go
 | 
			
		|||
config.yml
 | 
			
		||||
statup.db
 | 
			
		||||
plugins/*.so
 | 
			
		||||
data
 | 
			
		||||
							
								
								
									
										18
									
								
								Dockerfile
								
								
								
								
							
							
						
						
									
										18
									
								
								Dockerfile
								
								
								
								
							| 
						 | 
				
			
			@ -1,13 +1,17 @@
 | 
			
		|||
FROM alpine
 | 
			
		||||
FROM golang:alpine
 | 
			
		||||
 | 
			
		||||
#RUN apk add --no-cache libc6-compat
 | 
			
		||||
RUN apk update && apk add git g++
 | 
			
		||||
 | 
			
		||||
ENV VERSION="v0.14"
 | 
			
		||||
RUN wget -q https://github.com/hunterlong/statup/releases/download/$VERSION/statup-linux-static
 | 
			
		||||
RUN chmod +x statup-linux-static && mv statup-linux-static /usr/local/bin/statup
 | 
			
		||||
WORKDIR $GOPATH/src/github.com/hunterlong/statup/
 | 
			
		||||
 | 
			
		||||
COPY . $GOPATH/src/github.com/hunterlong/statup/
 | 
			
		||||
RUN go get github.com/GeertJohan/go.rice/rice
 | 
			
		||||
RUN go get -d -v
 | 
			
		||||
RUN rice embed-go
 | 
			
		||||
RUN go install
 | 
			
		||||
WORKDIR /app
 | 
			
		||||
VOLUME /app
 | 
			
		||||
 | 
			
		||||
EXPOSE 8080
 | 
			
		||||
 | 
			
		||||
VOLUME /app
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT statup
 | 
			
		||||
							
								
								
									
										7
									
								
								core.go
								
								
								
								
							
							
						
						
									
										7
									
								
								core.go
								
								
								
								
							| 
						 | 
				
			
			@ -17,6 +17,13 @@ type Core struct {
 | 
			
		|||
	PluginFields []PluginSelect
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Core) Update() (*Core, error) {
 | 
			
		||||
	res := dbSession.Collection("core").Find().Limit(1)
 | 
			
		||||
	res.Update(c)
 | 
			
		||||
	core = c
 | 
			
		||||
	return c, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func SelectCore() (*Core, error) {
 | 
			
		||||
	var core Core
 | 
			
		||||
	err := dbSession.Collection("core").Find().One(&core)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,13 @@ func (s *Service) SelectAllFailures() ([]*Failure, error) {
 | 
			
		|||
	return fails, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *Service) LimitedFailures() ([]*Failure, error) {
 | 
			
		||||
	var fails []*Failure
 | 
			
		||||
	col := dbSession.Collection("failures").Find("session", s.Id).Limit(10)
 | 
			
		||||
	err := col.All(&fails)
 | 
			
		||||
	return fails, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CountFailures() (uint64, error) {
 | 
			
		||||
	col := dbSession.Collection("failures").Find()
 | 
			
		||||
	amount, err := col.Count()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,6 +33,23 @@
 | 
			
		|||
            <div class="tab-content" id="v-pills-tabContent">
 | 
			
		||||
                <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">
 | 
			
		||||
                    <h3>Settings</h3>
 | 
			
		||||
 | 
			
		||||
                    <form method="POST" action="/settings">
 | 
			
		||||
 | 
			
		||||
                        <div class="form-group">
 | 
			
		||||
                            <label for="formGroupExampleInput">Project Name</label>
 | 
			
		||||
                            <input type="text" name="project" class="form-control" value="{{ .Name }}" id="formGroupExampleInput" placeholder="Great Uptime">
 | 
			
		||||
                        </div>
 | 
			
		||||
 | 
			
		||||
                        <div class="form-group">
 | 
			
		||||
                            <label for="formGroupExampleInput">Project Description</label>
 | 
			
		||||
                            <input type="text" name="description" class="form-control" value="{{ .Description }}" id="formGroupExampleInput" placeholder="Great Uptime">
 | 
			
		||||
                        </div>
 | 
			
		||||
 | 
			
		||||
                        <button type="submit" class="btn btn-primary btn-block">Save Settings</button>
 | 
			
		||||
 | 
			
		||||
                    </form>
 | 
			
		||||
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <div class="tab-pane fade" id="v-pills-browse" role="tabpanel" aria-labelledby="v-pills-browse-tab">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										18
									
								
								web.go
								
								
								
								
							
							
						
						
									
										18
									
								
								web.go
								
								
								
								
							| 
						 | 
				
			
			@ -38,7 +38,8 @@ func Router() *mux.Router {
 | 
			
		|||
	r.Handle("/service/{id}/badge.svg", http.HandlerFunc(ServicesBadgeHandler))
 | 
			
		||||
	r.Handle("/users", http.HandlerFunc(UsersHandler)).Methods("GET")
 | 
			
		||||
	r.Handle("/users", http.HandlerFunc(CreateUserHandler)).Methods("POST")
 | 
			
		||||
	r.Handle("/settings", http.HandlerFunc(PluginsHandler))
 | 
			
		||||
	r.Handle("/settings", http.HandlerFunc(PluginsHandler)).Methods("GET")
 | 
			
		||||
	r.Handle("/settings", http.HandlerFunc(SaveSettingsHandler)).Methods("POST")
 | 
			
		||||
	r.Handle("/plugins/download/{name}", http.HandlerFunc(PluginsDownloadHandler))
 | 
			
		||||
	r.Handle("/plugins/{name}/save", http.HandlerFunc(PluginSavedHandler)).Methods("POST")
 | 
			
		||||
	r.Handle("/help", http.HandlerFunc(HelpHandler))
 | 
			
		||||
| 
						 | 
				
			
			@ -225,6 +226,21 @@ func IsAuthenticated(r *http.Request) bool {
 | 
			
		|||
	return session.Values["authenticated"].(bool)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func SaveSettingsHandler(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	auth := IsAuthenticated(r)
 | 
			
		||||
	if !auth {
 | 
			
		||||
		http.Redirect(w, r, "/", http.StatusSeeOther)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	r.ParseForm()
 | 
			
		||||
	name := r.PostForm.Get("name")
 | 
			
		||||
	description := r.PostForm.Get("description")
 | 
			
		||||
	core.Name = name
 | 
			
		||||
	core.Description = description
 | 
			
		||||
	core.Update()
 | 
			
		||||
	http.Redirect(w, r, "/settings", http.StatusSeeOther)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func PluginsHandler(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	auth := IsAuthenticated(r)
 | 
			
		||||
	if !auth {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue