123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package main
- import (
- "log"
- "database/sql"
- "os"
- "time"
- "fmt"
- "net/http"
- "html/template"
- "github.com/gorilla/mux"
- "github.com/gorilla/sessions"
- _ "github.com/go-sql-driver/mysql"
- )
- type Page struct {
- Title string
- Body []byte
- }
- var (
- logger *log.Logger
- sessionsStore = sessions.NewCookieStore([]byte("mysecretcookie"))
- indexTemplate = template.Must(template.ParseFiles("www\\index.html"))
- logInTemplate = template.Must(template.ParseFiles("www\\login.html"))
- signInTemplate = template.Must(template.ParseFiles("www\\signin.html"))
- )
- func indexHandler(w http.ResponseWriter, r *http.Request) {
- data := struct {
- User string
- Title string
- Items []string
- }{
- User: "",
- Title: "My page",
- Items: []string{
- "My photos",
- "My blog",
- "More",
- },
- }
-
- session, _ := sessionsStore.Get(r, "session")
- var (
- password string
- ok3 bool
- )
- untyped, ok := session.Values["username"]
- if ok {
- username, ok1 := untyped.(string)
- if ok1 {
- data.User = username
- untyped, ok2 := session.Values["password"]
- if ok2 {
- password, ok3 = untyped.(string)
-
- }
- }
- }
-
- indexTemplate.Execute(w, data)
- if ok3 {
- w.Write([]byte(password))
- }
- }
- func indexPostHandler(w http.ResponseWriter, r *http.Request) {
- fmt.Print("POST")
- }
- func logInGetHandler(w http.ResponseWriter, r *http.Request) {
- logInTemplate.Execute(w, nil)
- }
- func logInPostHandler(w http.ResponseWriter, r *http.Request) {
- r.ParseForm()
- username := r.PostForm.Get("username")
- password := r.PostForm.Get("password")
- //dBConnector.
-
- db, err := sql.Open("mysql", "gosite:gositepassword@tcp(192.168.48.5)/gosite")
- if err != nil {
- fmt.Print("Error")
- panic(err)
- }
- defer db.Close()
- var counter int
- act_query := "SELECT count(*) FROM gosite.users WHERE username='" + username + "' AND password='" + password + "';"
- db.QueryRow(act_query).Scan(&counter)
- fmt.Println("we have", counter, "rows")
-
- if (counter == 0) {
- logInTemplate.Execute(w, nil)
- return
- }
- session, _ := sessionsStore.Get(r, "session")
- session.Values["username"] = username
- session.Values["password"] = password
- session.Save(r,w)
- fmt.Printf("%s\n%s\n",username,password)
- http.Redirect(w, r, "/", http.StatusFound)
- }
- func signInHandler(w http.ResponseWriter, r *http.Request) {
- signInTemplate.Execute(w, nil)
- }
- func pressHandler(w http.ResponseWriter, r *http.Request) {
- logger.Print("click")
- http.Redirect(w, r, "/", http.StatusFound)
- }
- func createLogger() {
- startTime := time.Now()
- logFileName := "logs/go-site_log_" + startTime.Format("2006-01-02_15-04-05") + ".txt"
- file, err := os.OpenFile(logFileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
- logger = log.New(file, "logger: ", log.Lshortfile)
-
- if err != nil {
- log.Fatal(err)
- }
- }
- type user struct{
- idusers int
- username string
- password string
- }
- func main() {
-
-
- createLogger()
- logger.Print("Hello, log file!")
- requestRouter := mux.NewRouter()
-
-
-
- requestRouter.HandleFunc("/", indexHandler).Methods("GET")
- requestRouter.HandleFunc("/", indexPostHandler).Methods("POST")
- requestRouter.HandleFunc("/login/", logInGetHandler).Methods("GET")
- requestRouter.HandleFunc("/login/", logInPostHandler).Methods("POST")
- requestRouter.HandleFunc("/signin/", signInHandler).Methods("GET")
- //requestRouter.HandleFunc("/", pressHandler).Methods("POST")
- http.Handle("/", requestRouter)
- logger.Fatal(http.ListenAndServe(":8080", nil))
- }
|