53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
|
|
"omctf.ru/block-game-backend/auth"
|
|
"omctf.ru/block-game-backend/auth/session"
|
|
"omctf.ru/block-game-backend/db"
|
|
"omctf.ru/block-game-backend/route"
|
|
"omctf.ru/block-game-backend/utils"
|
|
|
|
"github.com/gorilla/mux"
|
|
_ "github.com/lib/pq"
|
|
)
|
|
|
|
func main() {
|
|
// to log line numbers
|
|
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
|
|
|
db.Initialize()
|
|
defer db.Close()
|
|
|
|
err := session.Initialize()
|
|
if err != nil {
|
|
log.Fatalf("failed to initialize session: %v", err)
|
|
}
|
|
|
|
go utils.OccasionallyCleanUp()
|
|
|
|
// Setup HTTP routes
|
|
r := mux.NewRouter()
|
|
|
|
authRouter := r.PathPrefix("/auth").Subrouter()
|
|
authRouter.HandleFunc("/login", route.Login).Methods("POST")
|
|
authRouter.HandleFunc("/register", route.Register).Methods("POST")
|
|
authRouter.HandleFunc("/logout", route.Logout).Methods("POST")
|
|
|
|
userRouter := r.PathPrefix("/user").Subrouter()
|
|
userRouter.Use(auth.Middleware)
|
|
userRouter.HandleFunc("", route.Whoami).Methods("GET")
|
|
userRouter.HandleFunc("", route.GetUser).Methods("POST")
|
|
userRouter.HandleFunc("/level", route.FindLevel).Methods("GET")
|
|
userRouter.HandleFunc("/level", route.CreateLevel).Methods("POST")
|
|
userRouter.HandleFunc("/levels", route.ListLevels).Methods("GET")
|
|
userRouter.HandleFunc("/level/{levelId:[0-9]+}", route.GetLevel).Methods("GET")
|
|
userRouter.HandleFunc("/level/{levelId:[0-9]+}/play", route.PlayLevel).Methods("GET")
|
|
userRouter.HandleFunc("/level/invite", route.InviteToLevel).Methods("POST")
|
|
|
|
log.Println("Server starting on :8080")
|
|
log.Fatal(http.ListenAndServe(":8080", r))
|
|
}
|