arnaucube
arnaucube/blockchainIDsystemPublic Self-hosted repository
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}