123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package main
- import (
- "fmt"
- "html/template"
- "log"
- "net/http"
- "os"
- "time"
- "github.com/gorilla/mux"
- "github.com/gorilla/sessions"
- )
- const (
- NOMYSQL = false
- //TODO в var структуру с парсом из файла JSON
- NewIndexTemplate = "ui\\templates\\newindex.html"
- TorrentList = "ui\\templates\\torrentlist.html"
- TorrentEntry = "ui\\templates\\torrententry.html"
- NewsList = "ui\\templates\\newslist.html"
- NewsEntry = "ui\\templates\\newsentry.html"
- )
- var (
- logger *log.Logger
- dBConnector connection
- sessionsStore = sessions.NewCookieStore([]byte("mysecretcookie"))
- logInTemplate = template.Must(template.ParseFiles("ui\\templates\\login.html"))
- signInTemplate = template.Must(template.ParseFiles("ui\\templates\\signin.html"))
- gameTemplate = template.Must(template.ParseFiles("ui\\templates\\game.html"))
- requestRouter *mux.Router
- )
- 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, "", log.Ldate|log.Ltime)
- if err != nil {
- log.Fatal(err)
- }
- }
- type justFilesFilesystem struct {
- fs http.FileSystem
- }
- func (fs justFilesFilesystem) Open(name string) (http.File, error) {
- f, err := fs.fs.Open(name)
- if err != nil {
- return nil, err
- }
- return neuteredReaddirFile{f}, nil
- }
- type neuteredReaddirFile struct {
- http.File
- }
- func (f neuteredReaddirFile) Readdir(count int) ([]os.FileInfo, error) {
- return nil, nil
- }
- func main() {
- createLogger()
- logger.Print("Hello, log file!")
- requestRouter = mux.NewRouter()
- dBConnector.Init("config.json")
- requestRouter.HandleFunc("/", indexHandler).Methods("GET")
- requestRouter.HandleFunc("/", indexPostHandler).Methods("POST") //Есть ли нужда в обработке POST для /
- requestRouter.HandleFunc("/login/", logInGetHandler).Methods("GET")
- requestRouter.HandleFunc("/login/", logInPostHandler).Methods("POST")
- requestRouter.HandleFunc("/logout/", logOutGetHandler).Methods("GET")
- requestRouter.HandleFunc("/signin/", signInGetHandler).Methods("GET")
- requestRouter.HandleFunc("/signin/", signInPostHandler).Methods("POST")
- requestRouter.HandleFunc("/game/", gameGetHandler).Methods("GET")
- requestRouter.HandleFunc("/game/", gamePostHandler).Methods("POST")
- requestRouter.HandleFunc("/files/torrents/{hash}.torrent", DownloadTorrentHandler).Methods("GET")
- requestRouter.HandleFunc("/forum", ForumHandler).Methods("GET")
- requestRouter.HandleFunc(`/forum/{rest:[a-zA-Zа-яА-Я0-9=\-\/\_\.]+}`, ForumHandler).Methods("GET")
- fs := justFilesFilesystem{http.Dir("resources/")}
- http.Handle("/resources/", http.StripPrefix("/resources/", http.FileServer(fs)))
- http.Handle("/", requestRouter)
- fmt.Println("Starting web-listener")
- logger.Fatal(http.ListenAndServe(":8080", nil))
- }
|