blockchainIDsystem/serverIDsigner/main.go
serverIDsigner/main.goRaw
1package main
2
3import (
4 "fmt"
5 "log"
6 "net/http"
7
8 mgo "gopkg.in/mgo.v2"
9
10 "github.com/fatih/color"
11 "github.com/gorilla/handlers"
12
13 ownrsa "./ownrsa"
14)
15
16var userCollection *mgo.Collection
17
18var serverRSA ownrsa.RSA
19
20func main() {
21 color.Blue("Starting serverIDsigner")
22
23 //read configuration file
24 readConfig("config.json")
25
26 initializeToken()
27
28 //initialize RSA
29 serverRSA = ownrsa.GenerateKeyPair()
30 color.Blue("Public Key:")
31 fmt.Println(serverRSA.PubK)
32 color.Green("Private Key:")
33 fmt.Println(serverRSA.PrivK)
34
35 //mongodb
36 session, err := getSession()
37 check(err)
38 userCollection = getCollection(session, "users")
39
40 //run thw webserver
41 go webserver()
42
43 //run API
44 log.Println("api server running")
45 log.Print("port: ")
46 log.Println(config.Port)
47 router := NewRouter()
48 headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Access-Control-Allow-Origin"})
49 originsOk := handlers.AllowedOrigins([]string{"*"})
50 methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
51 log.Fatal(http.ListenAndServe(":"+config.Port, handlers.CORS(originsOk, headersOk, methodsOk)(router)))
52}
53
54func webserver() {
55 log.Println("webserver in port " + config.WebServerPort)
56 http.Handle("/", http.FileServer(http.Dir("./webapp")))
57 http.ListenAndServe(":"+config.WebServerPort, nil)
58}