package main import ( "crypto/rand" "crypto/rsa" "log" "net/http" "os" mgo "gopkg.in/mgo.v2" "github.com/fatih/color" "github.com/gorilla/handlers" ) const keysDir = "keys" const keysize = 2048 const hashize = 1536 var userCollection *mgo.Collection var serverKey *rsa.PrivateKey func main() { color.Blue("Starting serverIDsigner") //read configuration file readConfig("config.json") //create models directory _ = os.Mkdir(keysDir, os.ModePerm) initializeToken() //initialize RSA //generate RSA keys pair reader := rand.Reader k, err := rsa.GenerateKey(reader, keysize) check(err) serverKey = k savePEMKey(keysDir+"/server_private.pem", k) savePublicPEMKey(keysDir+"/server_public.pem", k.PublicKey) //mongodb session, err := getSession() check(err) userCollection = getCollection(session, "users") //run API log.Println("api server running") log.Print("port: ") log.Println(config.Port) router := NewRouter() headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Access-Control-Allow-Origin"}) originsOk := handlers.AllowedOrigins([]string{"*"}) methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"}) log.Fatal(http.ListenAndServe(":"+config.Port, handlers.CORS(originsOk, headersOk, methodsOk)(router))) }