diff --git a/README.md b/README.md index 8199e28..449a055 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,6 @@ TODO:: * ~~Manuell (einzeln)~~ * CSV-Import * ~~Kofis löschen~~ -* Konfis auf der Frontseite mit Websockets updaten * ~~Logout~~ +* Konfis auf der Frontseite mit Websockets updaten * Mode hinzufügen: in der Config soll man zwischen Gemeinden und Konfis umschalten können, so dass entweder die Gemeinden oder Konfis gegeneinander spielen \ No newline at end of file diff --git a/TemplateRender.go b/TemplateRender.go index 0af6661..20a5a18 100644 --- a/TemplateRender.go +++ b/TemplateRender.go @@ -13,4 +13,3 @@ type Template struct { func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error { return t.templates.ExecuteTemplate(w, name, data) } - diff --git a/add.go b/add.go index b877523..2624ff3 100644 --- a/add.go +++ b/add.go @@ -16,8 +16,8 @@ func addKonfi(c echo.Context) error { sess := GlobalSessions.SessionStart(rw, r) logged := sess.Get("login") - //Wenn das password stimmt - if logged != nil{ + //Wenn eingeloggt + if logged != nil { kofi := new(Kofi) kofi.Name = c.FormValue("name") kofi.Gemeinde = c.FormValue("gemeinde") diff --git a/admin.go b/admin.go index df2ecb9..7e4d58f 100644 --- a/admin.go +++ b/admin.go @@ -9,7 +9,7 @@ type Loggedin struct { Loggedin bool } -func adminHandler (c echo.Context) error { +func adminHandler(c echo.Context) error { rw := c.Response() r := c.Request() diff --git a/assets/js/load.js b/assets/js/load.js index 1564399..b660eb1 100644 --- a/assets/js/load.js +++ b/assets/js/load.js @@ -6,4 +6,24 @@ setInterval(function() { $( "#konfis" ).append(' ' + item.Name + ' ' + item.Gemeinde + ' ' + item.KCoins + ''); }); }); -}, 1000); \ No newline at end of file +}, 1000); +/* +var loc = window.location; +var uri = 'ws:'; + +if (loc.protocol === 'https:') { + uri = 'wss:'; +} +uri += '//' + loc.host; +uri += loc.pathname + 'ws'; + +ws = new WebSocket(uri) + +ws.onopen = function() { + console.log('Connected'); + ws.send('get'); +}; + +ws.onmessage = function(evt) { + console.log(evt.data); +};*/ \ No newline at end of file diff --git a/config.go b/config.go index 42e05ad..e1d25de 100644 --- a/config.go +++ b/config.go @@ -8,8 +8,8 @@ import ( //Configuration Struct type Configuration struct { AdminPassword string - Interface string - DBFile string + Interface string + DBFile string } var SiteConf Configuration = Configuration{} diff --git a/db.go b/db.go index 5b2afd0..03ae53d 100644 --- a/db.go +++ b/db.go @@ -1,15 +1,15 @@ package main import ( - _ "github.com/mattn/go-sqlite3" - "github.com/go-xorm/xorm" - "github.com/go-xorm/core" "fmt" + "github.com/go-xorm/core" + "github.com/go-xorm/xorm" + _ "github.com/mattn/go-sqlite3" ) var db *xorm.Engine -func DBinit() *xorm.Engine{ +func DBinit() *xorm.Engine { SiteConf := initConfig() db, err := xorm.NewEngine("sqlite3", SiteConf.DBFile) if err != nil { @@ -17,7 +17,7 @@ func DBinit() *xorm.Engine{ } db.SetMapper(core.SameMapper{}) - db.ShowSQL(true) + db.ShowSQL(false) db.Logger().SetLevel(core.LOG_DEBUG) return db -} \ No newline at end of file +} diff --git a/delete.go b/delete.go index 490001b..81adc3d 100644 --- a/delete.go +++ b/delete.go @@ -18,7 +18,7 @@ func deleteKonfi(c echo.Context) error { logged := sess.Get("login") //Wenn das password stimmt - if logged != nil{ + if logged != nil { id, _ := strconv.Atoi(c.FormValue("id")) //Löschen diff --git a/getList.go b/getList.go index ca5bfc6..27d5e18 100644 --- a/getList.go +++ b/getList.go @@ -1,9 +1,9 @@ package main import ( + "fmt" "github.com/labstack/echo" "net/http" - "fmt" ) func getList(c echo.Context) error { diff --git a/login.go b/login.go index 4761196..a2ca64b 100644 --- a/login.go +++ b/login.go @@ -17,12 +17,11 @@ func login(c echo.Context) error { var pass string = c.FormValue("password") //Wenn das password stimmt, einloggen - if SiteConf.AdminPassword == pass{ + if SiteConf.AdminPassword == pass { sess.Set("login", true) return c.JSON(http.StatusOK, Message{"success"}) } else { return c.JSON(http.StatusOK, Message{"fail"}) } - } diff --git a/main.go b/main.go index df512f1..59a6098 100644 --- a/main.go +++ b/main.go @@ -3,12 +3,12 @@ package main import ( "github.com/labstack/echo" "github.com/labstack/echo/middleware" - "html/template" "github.com/labstack/gommon/log" + "html/template" + "fmt" "github.com/astaxie/session" _ "github.com/astaxie/session/providers/memory" - "fmt" ) //Initialize Session @@ -64,6 +64,7 @@ func main() { e.GET("/list", getList) e.GET("/admin", adminHandler) e.GET("/logout", logout) + e.GET("/ws", ws) e.POST("/login", login) e.POST("/update", update) diff --git a/showList.go b/showList.go index 800f1ce..52a8ede 100644 --- a/showList.go +++ b/showList.go @@ -5,7 +5,7 @@ import ( "net/http" ) -func showList (c echo.Context) error { +func showList(c echo.Context) error { //Template return c.Render(http.StatusOK, "index", Message{"schinken"}) } diff --git a/update.go b/update.go index e57262a..c5b22a6 100644 --- a/update.go +++ b/update.go @@ -18,7 +18,7 @@ func update(c echo.Context) error { logged := sess.Get("login") //Wenn das password stimmt - if logged != nil{ + if logged != nil { id, _ := strconv.Atoi(c.FormValue("id")) addcoins, _ := strconv.Atoi(c.FormValue("addcoins")) diff --git a/utils.go b/utils.go index 3ee20e0..0e7d602 100644 --- a/utils.go +++ b/utils.go @@ -3,10 +3,10 @@ package main import "log" type Kofi struct { - ID int `xorm:"pk autoincr"` - Name string + ID int `xorm:"pk autoincr"` + Name string Gemeinde string - KCoins int + KCoins int } type Message struct { @@ -15,7 +15,7 @@ type Message struct { type UpdatedMessage struct { Message string - Kofi Kofi + Kofi Kofi } //CheckError @@ -23,4 +23,4 @@ func checkErr(err error) { if err != nil { log.Fatal(err) } -} \ No newline at end of file +} diff --git a/ws.go b/ws.go new file mode 100644 index 0000000..6154ddf --- /dev/null +++ b/ws.go @@ -0,0 +1,41 @@ +package main + +import ( + "github.com/labstack/echo" + "golang.org/x/net/websocket" + "fmt" + "encoding/json" +) + +func ws(c echo.Context) error { + //Datenbankverbindung aufbauen + db := DBinit() + + // Websocket + websocket.Handler(func(ws *websocket.Conn) { + defer ws.Close() + for { + msg := "" + err := websocket.Message.Receive(ws, &msg) + if err != nil { + c.Logger().Error(err) + } + fmt.Println(msg) + + //Daten holen und anzeigen + var kofi []Kofi + err = db.OrderBy("KCoins DESC").Find(&kofi) + if err != nil { + fmt.Println(err) + } + kofiJson, err := json.Marshal(kofi) + // Wegschicken + err = websocket.Message.Send(ws, string(kofiJson)) + if err != nil { + c.Logger().Error(err) + } + } + + }).ServeHTTP(c.Response(), c.Request()) + return nil +} \ No newline at end of file