You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.3 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. package main
  2. import (
  3. "crypto/rand"
  4. "crypto/rsa"
  5. "log"
  6. "net/http"
  7. "os"
  8. mgo "gopkg.in/mgo.v2"
  9. "github.com/fatih/color"
  10. "github.com/gorilla/handlers"
  11. )
  12. const keysDir = "keys"
  13. const keysize = 2048
  14. const hashize = 1536
  15. var userCollection *mgo.Collection
  16. var serverKey *rsa.PrivateKey
  17. func main() {
  18. color.Blue("Starting serverIDsigner")
  19. //read configuration file
  20. readConfig("config.json")
  21. //create models directory
  22. _ = os.Mkdir(keysDir, os.ModePerm)
  23. initializeToken()
  24. //initialize RSA
  25. //generate RSA keys pair
  26. reader := rand.Reader
  27. k, err := rsa.GenerateKey(reader, keysize)
  28. check(err)
  29. serverKey = k
  30. savePEMKey(keysDir+"/server_private.pem", k)
  31. savePublicPEMKey(keysDir+"/server_public.pem", k.PublicKey)
  32. //mongodb
  33. session, err := getSession()
  34. check(err)
  35. userCollection = getCollection(session, "users")
  36. //run API
  37. log.Println("api server running")
  38. log.Print("port: ")
  39. log.Println(config.Port)
  40. router := NewRouter()
  41. headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Access-Control-Allow-Origin"})
  42. originsOk := handlers.AllowedOrigins([]string{"*"})
  43. methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
  44. log.Fatal(http.ListenAndServe(":"+config.Port, handlers.CORS(originsOk, headersOk, methodsOk)(router)))
  45. }