func main() { defaultRootPassword := defs.RootUserName secureKeyFileNamePath := flag.String("secure-key", "./secureKey", "secure key file path") loginFilePath := flag.String("storage-file", "./data.txt", "First storage file that includes the root user") rootPassword := flag.String("password", defaultRootPassword, "Root password") str := fmt.Sprintf("Generate RSA private/public files ('%s', '%s')", rsaPrivateKeyFileName, rsaPublicKeyFileName) generateRSA := flag.Bool("generate-rsa", false, str) flag.Parse() if flag.NArg() > 0 { usage() } if *rootPassword == defaultRootPassword { fmt.Printf("Error: The root password must be set (and not to '%v')\n", defaultRootPassword) usage() } err := password.CheckPasswordStrength(*rootPassword) if err != nil { log.Fatalf("Error: The root password must be more complex: %v", err) } key := ss.GetSecureKey(*secureKeyFileNamePath) createBasicFile(*loginFilePath, defs.RootUserName, *rootPassword, key) fmt.Println("The generated file name is:", *loginFilePath) if *generateRSA { generateRSAKeys(rsaPrivateKeyFileName, rsaPublicKeyFileName) } }
func init() { logger.Init(ioutil.Discard, ioutil.Discard, ioutil.Discard, ioutil.Discard) privateKeyFilePath := flag.String("rsa-private", "./dist/key.private", "RSA private key file path") secureKeyFilePath := flag.String("secure-key", "./dist/secureKey", "password to encrypt the secure storage") usersDataPath := flag.String("data-file", "./dist/data.txt", "Login information file") flag.Parse() servicePath = cr.ServicePathPrefix + cr.Version + amPrefix resourcePath = listener + servicePath + usersPath usersList := en.New() signKey, verifyKey := app.SetupAToken(*privateKeyFilePath) loginKey := ss.GetSecureKey(*secureKeyFilePath) en.LoadInfo(*usersDataPath, loginKey, usersList) stRestful = libsecurityRestful.NewLibsecurityRestful() stRestful.SetData(usersList, loginKey, verifyKey, signKey, nil) rootCookieStr, _ := app.GenerateToken(defs.RootUserName, am.SuperUserPermission, false, clientIP, signKey) cr.TestSetCookie(rootCookieStr) for _, name := range usersName { stRestful.UsersList.AddUser(name) } go runServer() time.Sleep(100 * time.Millisecond) }
func registerComponents(configFile string, secureKeyFilePath string, privateKeyFilePath string, usersDataPath string) { conf, err := readConfigFile(configFile) if err != nil { fmt.Fprintf(os.Stderr, "Fatal error while reading configuration file '%v', error: %v\n", configFile, err) os.Exit(1) } wsContainer := restful.NewContainer() usersList := en.New() // amUsers := am.NewAmUsersList() signKey, verifyKey = app.SetupAToken(privateKeyFilePath) loginKey = ss.GetSecureKey(secureKeyFilePath) st := libsecurityRestful.NewLibsecurityRestful() st.SetData(usersList, loginKey, verifyKey, signKey, nil) l := accountsRestful.NewAmRestful() l.SetData(st) if conf[amToken] == fullToken { l.RegisterFull(wsContainer) } else { // login is mandatory l.RegisterBasic(wsContainer) } um := enRestful.NewEnRestful() um.SetData(st) if conf[umToken] != noneToken { um.RegisterBasic(wsContainer) } a := aclRestful.NewAclRestful() a.SetData(st) if conf[aclToken] == basicToken || conf[appAclToken] == basicToken { a.RegisterBasic(wsContainer) } p := otpRestful.NewOtpRestful() p.SetData(st) if conf[otpToken] == basicToken { p.RegisterBasic(wsContainer) } o := ocraRestful.NewOcraRestful() o.SetData(st) if conf[ocraToken] == basicToken { o.RegisterBasic(wsContainer) } pwd := passwordRestful.NewPwdRestful() pwd.SetData(st) if conf[passwordToken] == basicToken { pwd.RegisterBasic(wsContainer) } ss := storageRestful.NewSsRestful() ss.SetData(st) if conf[secureStorageToken] == basicToken { ss.RegisterBasic(wsContainer) } st.RegisterBasic(wsContainer) err = en.LoadInfo(usersDataPath, loginKey, usersList) if err != nil { fmt.Println("Load info error:", err) } runRestAPI(wsContainer) }