package main import ( "database/sql" "fmt" "html/template" "log" "net/http" //"net/url" //"time" _ "github.com/mattn/go-sqlite3" ) var ( KosztBiletuSUMA int //zmiana pinu, hasła i blokada karty pinFROMsite int RFIDblockORno string hasloFROMsite string //logowanie ------------ loginFROMsite string passwordFROMsite string //users --------------- IDusers int User string Password string PIN int RFID int Login string Blokada bool //bilety --------------- IDbiletu int KtoZabral string DataCzas string KosztBiletu int CzyZaplacony string //dania --------------- IDdania int NazwaDania string KosztDania int ) //const localHost = string("192.168.8.102:9197") //*************************************************************************** //funkcje sterujące //*************************************************************************** //############################################################################# func opisStołówkaZPM(w http.ResponseWriter, r *http.Request) { //fmt.Println(localHostDB) t, _ := template.ParseFiles("StronaGlowna.gohtml") t.Execute(w, nil) } //############################################################################# func panel(w http.ResponseWriter, r *http.Request) { for _, cookie := range r.Cookies() { fmt.Fprint(w, cookie.Name) } fmt.Println("method:", r.Method) t, _ := template.ParseFiles("panel.gtpl") d := struct { UserView string }{ UserView: User} t.ExecuteTemplate(w, "panel.gtpl", d) } //############################################################################# func wylogowano(w http.ResponseWriter, r *http.Request) { //-------------------------------------------------- hasloFROMsite := r.FormValue("hasloFROMsite") if hasloFROMsite != "" { db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) akt, err := db.Prepare("UPDATE users SET Password=? WHERE IDusers=?") checkErr(err) up, err := akt.Exec(hasloFROMsite, IDusers) checkErr(err) dzialanie, err := up.RowsAffected() checkErr(err) fmt.Println(dzialanie) db.Close() } //-------------------------------------------------- t, _ := template.ParseFiles("wylogowano.gtpl") type user struct { UserView string } u := user{ UserView: User} t.ExecuteTemplate(w, "wylogowano.gtpl", u) } /* d := struct { loginFROMsiteView string passwordFROMsiteView string IDusersView int UserView string PasswordView string PINView int RFIDView int LoginView string BlokadaView bool KosztView int IDbiletuView int KtoZabralView string DataCzasView string KosztBiletuView int IDdaniaView int NazwaDaniaView string KosztDaniaView int }{ loginFROMsiteView: "", passwordFROMsiteView: "", IDusersView: 0, UserView: "", PasswordView: "", PINView: 0, RFIDView: 0, LoginView: "", BlokadaView: Blokada, KosztView: 0, IDbiletuView: 0, KtoZabralView: "", DataCzasView: "", KosztBiletuView: 0, IDdaniaView: 0, NazwaDaniaView: "", KosztDaniaView: 0} */ //############################################################################# func login(w http.ResponseWriter, r *http.Request) { //************************************************************************** loginFROMsite := r.FormValue("loginFROMsite") passwordFROMsite := r.FormValue("passwordFROMsite") db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows0, err := db.Query("SELECT * FROM users") checkErr(err) for rows0.Next() { err = rows0.Scan(&IDusers, &User, &Password, &PIN, &RFID, &Login, &Blokada) checkErr(err) if r.Method == "POST" { if Login == loginFROMsite { if Password == passwordFROMsite { http.Redirect(w, r, "http://localhost:9197/panel", http.StatusSeeOther) panel(w, r) break } } } } if r.Method == "GET" { t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) r.ParseForm() } if r.Method == "POST" { if loginFROMsite != Login { if loginFROMsite == "" { if passwordFROMsite != Password { t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) fmt.Fprint(w, "*** UWAGA! *** Błąd logowania! Login lub hasło nieprawidłowe. *** Spróbuj ponownie. ***") } } else { if passwordFROMsite != Password { t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) fmt.Fprint(w, "*** UWAGA! *** Błąd logowania! Login lub hasło nieprawidłowe. *** Spróbuj ponownie. ***") } } } } //************************************************************************** rows0.Close() db.Close() } //############################################################################# func menuDan(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("menuDanNaglowek.gtpl") d := struct { UserView string }{ UserView: User} t.ExecuteTemplate(w, "menuDanNaglowek.gtpl", d) //dania ---------------------------------- db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr2(err) rows2, err := db.Query("SELECT * FROM dania") checkErr(err) for rows2.Next() { err = rows2.Scan(&IDdania, &NazwaDania, &KosztDania) checkErr3(err) //fmt.Printf("%d. %s, %d \n", IDdania, NazwaDania, KosztDania) t, _ := template.ParseFiles("menuDan.gtpl") d := struct { IDdaniaView int NazwaDaniaView string KosztDaniaView int }{ IDdaniaView: IDdania, NazwaDaniaView: NazwaDania, KosztDaniaView: KosztDania} t.ExecuteTemplate(w, "menuDan.gtpl", d) } //---------------------------------- rows2.Close() db.Close() } //############################################################################# func historiaPosilkow(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("historiaPosilkowNaglowek.gtpl") d := struct { UserView string }{ UserView: User} t.ExecuteTemplate(w, "historiaPosilkowNaglowek.gtpl", d) //bilety ---------------------------------- db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows3, err := db.Query("SELECT * FROM bilety") checkErr(err) for rows3.Next() { err = rows3.Scan(&IDbiletu, &KtoZabral, &DataCzas, &KosztBiletu, &CzyZaplacony) checkErr(err) if KtoZabral == User { t, _ := template.ParseFiles("historiaPosilkow.gtpl") d := struct { IDbiletuView int KtoZabralView string DataCzasView string KosztBiletuView int CzyZaplaconyView string }{ IDbiletuView: IDbiletu, KtoZabralView: KtoZabral, DataCzasView: DataCzas, KosztBiletuView: KosztBiletu, CzyZaplaconyView: CzyZaplacony} t.ExecuteTemplate(w, "historiaPosilkow.gtpl", d) } //---------------------------------- } rows3.Close() db.Close() } //############################################################################# func platnosci(w http.ResponseWriter, r *http.Request) { //fmt.Fprint(w, User) //bilety ---------------------------------- db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabral=?", User) checkErr(err) KosztBiletuSUMA = 0 for rows5.Next() { err = rows5.Scan(&IDbiletu, &KtoZabral, &DataCzas, &KosztBiletu, &CzyZaplacony) checkErr3(err) //if KtoZabral == User { if CzyZaplacony == "nie" { KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA } //---------------------------------- } //fmt.Println(KosztBiletuSUMA) t, _ := template.ParseFiles("platnosci.gtpl") checkErr(err) type zaplac struct { UserView string Zaplac int } z := zaplac{ UserView: User, Zaplac: KosztBiletuSUMA} t.ExecuteTemplate(w, "platnosci.gtpl", z) rows5.Close() db.Close() } //############################################################################# func placeOnline(w http.ResponseWriter, r *http.Request) { db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabral=?", User) checkErr(err) KosztBiletuSUMA = 0 for rows5.Next() { err = rows5.Scan(&IDbiletu, &KtoZabral, &DataCzas, &KosztBiletu, &CzyZaplacony) checkErr3(err) if CzyZaplacony == "nie" { KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA } } t, _ := template.ParseFiles("placeOnline.gtpl") checkErr(err) type zaplac struct { UserView string Zaplac int } z := zaplac{ UserView: User, Zaplac: KosztBiletuSUMA} t.ExecuteTemplate(w, "placeOnline.gtpl", z) rows5.Close() db.Close() } //############################################################################# func zmianaPINU(w http.ResponseWriter, r *http.Request) { pinFROMsite := r.FormValue("pinFROMsite") RFIDblockORno := r.FormValue("RFID") t, _ := template.ParseFiles("zmianaPINU.gtpl") type pinIblokada struct { UserView string } wykonaj := pinIblokada{ UserView: User} t.ExecuteTemplate(w, "zmianaPINU.gtpl", wykonaj) if pinFROMsite != "" { fmt.Fprintln(w, "*** --- Pin został POMYŚLNIE ZMIENIONY! --- *** \n") db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) akt, err := db.Prepare("UPDATE users SET PIN=? WHERE IDusers=?") checkErr(err) up, err := akt.Exec(pinFROMsite, IDusers) checkErr(err) dzialanie, err := up.RowsAffected() checkErr(err) fmt.Println(dzialanie) rows0, err := db.Query("SELECT * FROM users") checkErr(err) for rows0.Next() { err = rows0.Scan(&IDusers, &User, &Password, &PIN, &RFID, &Login, &Blokada) checkErr(err) fmt.Printf("%d. %s, %s, %d, %d, %s, %v \n", IDusers, User, Password, PIN, RFID, Login, Blokada) } rows0.Close() db.Close() } if RFIDblockORno == "RFIDblock" { //Blokada := true fmt.Fprintln(w, "*** --- Karta RFID została ZABLOKOWANA! --- *** \n") } else { if RFIDblockORno == "RFIDunlock" { //Blokada := true fmt.Fprintln(w, "*** --- Karta RFID została ODBLOKOWANA! --- *** \n") } } } //############################################################################# func zmianaHasla(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("zmianaHasla.gtpl") type zmhaslo struct { UserView string } wykonaj := zmhaslo{ UserView: User} t.ExecuteTemplate(w, "zmianaHasla.gtpl", wykonaj) } //*************************************************************************** //Obsługa błędów //*************************************************************************** func checkErr(err error) { if err != nil { fmt.Println("Błąd") } } func checkErr2(err error) { if err != nil { fmt.Println("Błąd dwa") } } func checkErr3(err error) { if err != nil { fmt.Println("Błąd trzy") } } //*************************************************************************** //funkcja główna //*************************************************************************** func main() { http.HandleFunc("/", opisStołówkaZPM) http.HandleFunc("/login", login) http.HandleFunc("/panel", panel) http.HandleFunc("/historiaPosilkow", historiaPosilkow) http.HandleFunc("/platnosci", platnosci) http.HandleFunc("/platnosci/placeOnline", placeOnline) http.HandleFunc("/wylogowano", wylogowano) http.HandleFunc("/menuDan", menuDan) http.HandleFunc("/zmianaPINU", zmianaPINU) http.HandleFunc("/zmianaHasla", zmianaHasla) err := http.ListenAndServe(":9197", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } }