arnaucube
arnaucube/goCaptchaPublic Self-hosted repository
goCaptcha/main.go
main.goRaw
 1package main
 2
 3import (
 4	"log"
 5	"math/rand"
 6	"net/http"
 7	"strconv"
 8	"time"
 9
10	"github.com/gorilla/handlers"
11)
12
13func main() {
14	savelog()
15	log.Println("goCaptcha started")
16	rand.Seed(time.Now().UTC().UnixNano())
17
18	//connect with mongodb
19	readMongodbConfig("./mongodbConfig.json")
20	session, err := getSession()
21	check(err)
22	captchaCollection = getCollection(session, "captchas")
23	captchaSolCollection = getCollection(session, "captchassolutions")
24	imgFakePathCollection = getCollection(session, "imgfakepath")
25
26	//start the server
27	//http server start
28	readServerConfig("./serverConfig.json")
29
30	//read the filenames of the dataset
31	readDataset(serverConfig.ImgsFolder)
32	log.Println("dataset read")
33	log.Println("num of dataset categories: " + strconv.Itoa(len(dataset)))
34
35	log.Println("server running")
36	log.Print("port: ")
37	log.Println(serverConfig.ServerPort)
38	router := NewRouter()
39
40	headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Access-Control-Allow-Origin"})
41	originsOk := handlers.AllowedOrigins([]string{"*"})
42	methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
43	log.Fatal(http.ListenAndServe(":"+serverConfig.ServerPort, handlers.CORS(originsOk, headersOk, methodsOk)(router)))
44}