zaliczeniePP/main.go

442 lines
12 KiB
Go
Raw Normal View History

2018-11-21 23:47:31 +01:00
package main
2018-11-20 22:17:07 +01:00
2018-12-10 15:52:29 +01:00
import (
2018-12-28 22:10:55 +01:00
"database/sql"
2018-12-10 15:52:29 +01:00
"fmt"
"html/template"
"log"
"net/http"
2018-12-28 22:10:55 +01:00
2018-12-29 16:02:40 +01:00
//"net/url"
2018-12-29 04:54:47 +01:00
//"time"
2018-12-28 22:10:55 +01:00
_ "github.com/mattn/go-sqlite3"
2018-12-10 15:52:29 +01:00
)
2018-11-21 23:47:31 +01:00
2019-01-03 23:57:38 +01:00
var (
2019-01-04 17:58:41 +01:00
KosztBiletuSUMA int
2019-01-03 23:57:38 +01:00
2019-01-05 13:15:14 +01:00
//zmiana pinu, hasła i blokada karty
pinFROMsite int
RFIDblockORno string
hasloFROMsite string
2019-01-03 23:57:38 +01:00
//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
2019-01-05 13:15:14 +01:00
CzyZaplacony string
2019-01-03 23:57:38 +01:00
//dania ---------------
IDdania int
NazwaDania string
KosztDania int
)
//const localHost = string("192.168.8.102:9197")
2018-12-29 16:02:40 +01:00
2018-12-29 00:08:27 +01:00
//***************************************************************************
//funkcje sterujące
//***************************************************************************
2019-01-03 23:57:38 +01:00
2018-12-29 16:02:40 +01:00
//#############################################################################
2018-12-27 21:58:43 +01:00
func opisStołówkaZPM(w http.ResponseWriter, r *http.Request) {
2019-01-03 23:57:38 +01:00
//fmt.Println(localHostDB)
2019-01-04 17:58:41 +01:00
t, _ := template.ParseFiles("StronaGlowna.gohtml")
t.Execute(w, nil)
2018-12-29 01:36:46 +01:00
}
2018-12-29 00:08:27 +01:00
2018-12-29 16:02:40 +01:00
//#############################################################################
2018-12-29 01:36:46 +01:00
func panel(w http.ResponseWriter, r *http.Request) {
2019-01-02 16:32:13 +01:00
for _, cookie := range r.Cookies() {
fmt.Fprint(w, cookie.Name)
}
2019-01-02 01:13:39 +01:00
2018-12-29 16:02:40 +01:00
fmt.Println("method:", r.Method)
2019-01-02 01:13:39 +01:00
t, _ := template.ParseFiles("panel.gtpl")
d := struct {
2019-01-04 17:58:41 +01:00
UserView string
2019-01-02 01:13:39 +01:00
}{
2019-01-04 17:58:41 +01:00
UserView: User}
2019-01-02 01:13:39 +01:00
t.ExecuteTemplate(w, "panel.gtpl", d)
2018-12-29 16:02:40 +01:00
}
2019-01-02 16:32:13 +01:00
//#############################################################################
func wylogowano(w http.ResponseWriter, r *http.Request) {
2019-01-05 13:15:14 +01:00
//--------------------------------------------------
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()
}
2019-01-02 16:32:13 +01:00
//--------------------------------------------------
t, _ := template.ParseFiles("wylogowano.gtpl")
2019-01-05 13:15:14 +01:00
type user struct {
UserView string
}
u := user{
UserView: User}
t.ExecuteTemplate(w, "wylogowano.gtpl", u)
}
/*
2019-01-02 16:32:13 +01:00
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}
2019-01-05 13:15:14 +01:00
*/
2019-01-02 16:32:13 +01:00
2019-01-02 01:13:39 +01:00
//#############################################################################
func login(w http.ResponseWriter, r *http.Request) {
2019-01-03 23:57:38 +01:00
//**************************************************************************
2019-01-02 01:13:39 +01:00
loginFROMsite := r.FormValue("loginFROMsite")
passwordFROMsite := r.FormValue("passwordFROMsite")
2018-12-29 00:08:27 +01:00
db, err := sql.Open("sqlite3", "stolowkaZPM.db")
checkErr(err)
2019-01-02 01:13:39 +01:00
rows0, err := db.Query("SELECT * FROM users")
2018-12-29 00:08:27 +01:00
checkErr(err)
2018-12-29 16:02:40 +01:00
2019-01-02 01:13:39 +01:00
for rows0.Next() {
2019-01-05 13:15:14 +01:00
err = rows0.Scan(&IDusers, &User, &Password, &PIN, &RFID, &Login, &Blokada)
2019-01-02 01:13:39 +01:00
checkErr(err)
2019-01-04 17:58:41 +01:00
if r.Method == "POST" {
if Login == loginFROMsite {
if Password == passwordFROMsite {
http.Redirect(w, r, "http://localhost:9197/panel", http.StatusSeeOther)
panel(w, r)
break
}
2018-12-29 16:02:40 +01:00
}
}
2018-12-29 00:08:27 +01:00
}
2018-12-10 16:09:22 +01:00
2018-12-10 18:00:33 +01:00
if r.Method == "GET" {
2018-12-28 14:22:11 +01:00
t, _ := template.ParseFiles("login.gtpl")
2019-01-04 17:58:41 +01:00
t.Execute(w, nil)
2018-12-10 18:00:33 +01:00
r.ParseForm()
2018-12-27 21:58:43 +01:00
}
2018-12-29 04:11:48 +01:00
2019-01-02 01:13:39 +01:00
if r.Method == "POST" {
if loginFROMsite != Login {
if loginFROMsite == "" {
if passwordFROMsite != Password {
t, _ := template.ParseFiles("login.gtpl")
2019-01-04 17:58:41 +01:00
t.Execute(w, nil)
2019-01-02 01:13:39 +01:00
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")
2019-01-04 17:58:41 +01:00
t.Execute(w, nil)
2019-01-02 01:13:39 +01:00
fmt.Fprint(w, "*** UWAGA! *** Błąd logowania! Login lub hasło nieprawidłowe. *** Spróbuj ponownie. ***")
}
}
}
}
2019-01-03 23:57:38 +01:00
//**************************************************************************
2019-01-02 01:13:39 +01:00
rows0.Close()
db.Close()
2019-01-03 23:57:38 +01:00
}
//#############################################################################
func menuDan(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("menuDanNaglowek.gtpl")
d := struct {
2019-01-04 17:58:41 +01:00
UserView string
2019-01-03 23:57:38 +01:00
}{
2019-01-04 17:58:41 +01:00
UserView: User}
2019-01-03 23:57:38 +01:00
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()
2019-01-02 01:13:39 +01:00
}
//#############################################################################
func historiaPosilkow(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("historiaPosilkowNaglowek.gtpl")
d := struct {
2019-01-04 17:58:41 +01:00
UserView string
2019-01-02 01:13:39 +01:00
}{
2019-01-04 17:58:41 +01:00
UserView: User}
2019-01-02 01:13:39 +01:00
t.ExecuteTemplate(w, "historiaPosilkowNaglowek.gtpl", d)
//bilety ----------------------------------
2018-12-29 04:11:48 +01:00
db, err := sql.Open("sqlite3", "stolowkaZPM.db")
checkErr(err)
2019-01-02 01:13:39 +01:00
rows3, err := db.Query("SELECT * FROM bilety")
2018-12-29 04:11:48 +01:00
checkErr(err)
2019-01-02 01:13:39 +01:00
for rows3.Next() {
2019-01-02 16:32:13 +01:00
err = rows3.Scan(&IDbiletu, &KtoZabral, &DataCzas, &KosztBiletu, &CzyZaplacony)
2018-12-29 04:11:48 +01:00
checkErr(err)
2019-01-02 01:13:39 +01:00
if KtoZabral == User {
t, _ := template.ParseFiles("historiaPosilkow.gtpl")
d := struct {
2019-01-02 16:32:13 +01:00
IDbiletuView int
KtoZabralView string
DataCzasView string
KosztBiletuView int
2019-01-05 13:15:14 +01:00
CzyZaplaconyView string
2019-01-02 01:13:39 +01:00
}{
2019-01-02 16:32:13 +01:00
IDbiletuView: IDbiletu,
KtoZabralView: KtoZabral,
DataCzasView: DataCzas,
KosztBiletuView: KosztBiletu,
CzyZaplaconyView: CzyZaplacony}
2019-01-02 01:13:39 +01:00
t.ExecuteTemplate(w, "historiaPosilkow.gtpl", d)
2018-12-29 04:11:48 +01:00
}
2019-01-02 01:13:39 +01:00
//----------------------------------
2018-12-29 04:11:48 +01:00
}
2019-01-02 01:13:39 +01:00
rows3.Close()
db.Close()
}
//#############################################################################
func platnosci(w http.ResponseWriter, r *http.Request) {
2019-01-02 16:32:13 +01:00
//fmt.Fprint(w, User)
2019-01-02 01:13:39 +01:00
//bilety ----------------------------------
db, err := sql.Open("sqlite3", "stolowkaZPM.db")
checkErr(err)
2019-01-04 17:58:41 +01:00
rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabral=?", User)
checkErr(err)
KosztBiletuSUMA = 0
2019-01-02 16:32:13 +01:00
for rows5.Next() {
2019-01-04 17:58:41 +01:00
err = rows5.Scan(&IDbiletu, &KtoZabral, &DataCzas, &KosztBiletu, &CzyZaplacony)
checkErr3(err)
//if KtoZabral == User {
2019-01-05 13:15:14 +01:00
if CzyZaplacony == "nie" {
KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA
}
2019-01-04 17:58:41 +01:00
//----------------------------------
}
2019-01-05 13:15:14 +01:00
//fmt.Println(KosztBiletuSUMA)
2019-01-04 17:58:41 +01:00
t, _ := template.ParseFiles("platnosci.gtpl")
checkErr(err)
type zaplac struct {
UserView string
Zaplac int
2018-12-17 22:35:22 +01:00
}
2019-01-04 17:58:41 +01:00
z := zaplac{
UserView: User,
Zaplac: KosztBiletuSUMA}
t.ExecuteTemplate(w, "platnosci.gtpl", z)
2019-01-02 16:32:13 +01:00
rows5.Close()
2018-12-29 04:11:48 +01:00
db.Close()
2018-12-17 22:35:22 +01:00
}
2019-01-05 13:15:14 +01:00
//#############################################################################
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)
}
2018-12-29 00:08:27 +01:00
//***************************************************************************
2019-01-02 16:32:13 +01:00
//Obsługa błędów
2018-12-29 00:08:27 +01:00
//***************************************************************************
func checkErr(err error) {
if err != nil {
fmt.Println("Błąd")
}
2018-12-28 22:10:55 +01:00
}
2019-01-02 16:32:13 +01:00
func checkErr2(err error) {
if err != nil {
fmt.Println("Błąd dwa")
}
}
func checkErr3(err error) {
if err != nil {
fmt.Println("Błąd trzy")
}
}
2018-12-28 22:10:55 +01:00
2018-12-29 00:08:27 +01:00
//***************************************************************************
//funkcja główna
//***************************************************************************
2018-11-21 23:47:31 +01:00
func main() {
2018-12-27 21:58:43 +01:00
http.HandleFunc("/", opisStołówkaZPM)
2018-12-10 18:00:33 +01:00
http.HandleFunc("/login", login)
2018-12-17 22:35:22 +01:00
http.HandleFunc("/panel", panel)
2019-01-02 01:13:39 +01:00
http.HandleFunc("/historiaPosilkow", historiaPosilkow)
http.HandleFunc("/platnosci", platnosci)
2019-01-05 13:15:14 +01:00
http.HandleFunc("/platnosci/placeOnline", placeOnline)
2019-01-02 16:32:13 +01:00
http.HandleFunc("/wylogowano", wylogowano)
2019-01-03 23:57:38 +01:00
http.HandleFunc("/menuDan", menuDan)
2019-01-05 13:15:14 +01:00
http.HandleFunc("/zmianaPINU", zmianaPINU)
http.HandleFunc("/zmianaHasla", zmianaHasla)
2018-12-29 16:02:40 +01:00
2019-01-04 17:58:41 +01:00
err := http.ListenAndServe(":9197", nil)
2018-12-10 15:52:29 +01:00
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
2018-11-21 23:47:31 +01:00
}