forked from docktor/docktor
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserve.go
More file actions
86 lines (80 loc) · 5.53 KB
/
Copy pathserve.go
File metadata and controls
86 lines (80 loc) · 5.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package cmd
import (
"github.com/soprasteria/docktor/server"
"github.com/soprasteria/docktor/server/email"
"github.com/soprasteria/docktor/server/storage"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
// serveCmd represents the serve command
var serveCmd = &cobra.Command{
Use: "serve",
Short: "Launch Docktor server",
Long: `Docktor server will listen on 0.0.0.0:8080`,
Run: func(cmd *cobra.Command, args []string) {
email.InitSMTPConfiguration()
storage.Connect()
server.New()
},
}
func init() {
// Get configuration from command line flags
serveCmd.Flags().StringP("mongo-addr", "m", "localhost:27017", "URL to access MongoDB")
serveCmd.Flags().StringP("mongo-username", "", "", "A user which has access to MongoDB")
serveCmd.Flags().StringP("mongo-password", "", "", "Password of the mongo user")
serveCmd.Flags().StringP("redis-addr", "", "localhost:6379", "URL to access Redis")
serveCmd.Flags().StringP("redis-password", "", "", "Redis password. Optional")
serveCmd.Flags().StringP("jwt-secret", "j", "dev-docktor-secret", "Secret key used for JWT token authentication. Change it in your instance")
serveCmd.Flags().StringP("reset-pwd-secret", "", "dev-docktor-reset-pwd-to-change", "Secret key used when resetting the password. Change it in your instance")
serveCmd.Flags().StringP("bcrypt-pepper", "p", "dev-docktor-bcrypt", "Pepper used in password generation. Change it in your instance")
serveCmd.Flags().StringP("env", "e", "dev", "dev or prod")
serveCmd.Flags().String("encrypt-secret", "encrypt-secret-to-change", "Secret for sensible data encryption. Change it in your instance")
serveCmd.Flags().String("ldap-address", "", "LDAP full address like : ldap.server:389. Optional")
serveCmd.Flags().String("ldap-baseDN", "", "BaseDN. Optional")
serveCmd.Flags().String("ldap-domain", "", "Domain of the user. Optional")
serveCmd.Flags().String("ldap-bindDN", "", "DN of system account. Optional")
serveCmd.Flags().String("ldap-bindPassword", "", "Password of system account. Optional")
serveCmd.Flags().String("ldap-searchFilter", "", "LDAP request to find users. Optional")
serveCmd.Flags().String("ldap-attr-username", "cn", "LDAP attribute for username of users.")
serveCmd.Flags().String("ldap-attr-firstname", "givenName", "LDAP attribute for firstname of users.")
serveCmd.Flags().String("ldap-attr-lastname", "sn", "LDAP attribute for lastname of users.")
serveCmd.Flags().String("ldap-attr-realname", "cn", "LDAP attribute for firstname of users.")
serveCmd.Flags().String("ldap-attr-email", "mail", "LDAP attribute for lastname of users.")
serveCmd.Flags().String("smtp-server", "", "SMTP server with its port.")
serveCmd.Flags().String("smtp-user", "", "SMTP user for authentication.")
serveCmd.Flags().String("smtp-password", "", "SMTP password for authentication.")
serveCmd.Flags().String("smtp-sender", "", "Email used as sender of emails")
serveCmd.Flags().String("smtp-identity", "", "Identity of the sender")
serveCmd.Flags().String("smtp-logo", "", "Link or data URI to a logo image that will be used in header of emails sent by Docktor. Default is Docktor logo.")
serveCmd.Flags().String("engine-transitiontimeout", "2h", "Timeout in duration that will cancel an engine transition when reached")
// Bind env variables.
_ = viper.BindPFlag("server.mongo.addr", serveCmd.Flags().Lookup("mongo-addr"))
_ = viper.BindPFlag("server.mongo.username", serveCmd.Flags().Lookup("mongo-username"))
_ = viper.BindPFlag("server.mongo.password", serveCmd.Flags().Lookup("mongo-password"))
_ = viper.BindPFlag("server.redis.addr", serveCmd.Flags().Lookup("redis-addr"))
_ = viper.BindPFlag("server.redis.password", serveCmd.Flags().Lookup("redis-password"))
_ = viper.BindPFlag("auth.jwt-secret", serveCmd.Flags().Lookup("jwt-secret"))
_ = viper.BindPFlag("auth.reset-pwd-secret", serveCmd.Flags().Lookup("reset-pwd-secret"))
_ = viper.BindPFlag("auth.bcrypt-pepper", serveCmd.Flags().Lookup("bcrypt-pepper"))
_ = viper.BindPFlag("auth.encrypt-secret", serveCmd.Flags().Lookup("encrypt-secret"))
_ = viper.BindPFlag("ldap.address", serveCmd.Flags().Lookup("ldap-address"))
_ = viper.BindPFlag("ldap.baseDN", serveCmd.Flags().Lookup("ldap-baseDN"))
_ = viper.BindPFlag("ldap.domain", serveCmd.Flags().Lookup("ldap-domain"))
_ = viper.BindPFlag("ldap.bindDN", serveCmd.Flags().Lookup("ldap-bindDN"))
_ = viper.BindPFlag("ldap.bindPassword", serveCmd.Flags().Lookup("ldap-bindPassword"))
_ = viper.BindPFlag("ldap.searchFilter", serveCmd.Flags().Lookup("ldap-searchFilter"))
_ = viper.BindPFlag("ldap.attr.username", serveCmd.Flags().Lookup("ldap-attr-username"))
_ = viper.BindPFlag("ldap.attr.firstname", serveCmd.Flags().Lookup("ldap-attr-firstname"))
_ = viper.BindPFlag("ldap.attr.lastname", serveCmd.Flags().Lookup("ldap-attr-lastname"))
_ = viper.BindPFlag("ldap.attr.realname", serveCmd.Flags().Lookup("ldap-attr-realname"))
_ = viper.BindPFlag("ldap.attr.email", serveCmd.Flags().Lookup("ldap-attr-email"))
_ = viper.BindPFlag("smtp.server", serveCmd.Flags().Lookup("smtp-server"))
_ = viper.BindPFlag("smtp.user", serveCmd.Flags().Lookup("smtp-user"))
_ = viper.BindPFlag("smtp.password", serveCmd.Flags().Lookup("smtp-password"))
_ = viper.BindPFlag("smtp.sender", serveCmd.Flags().Lookup("smtp-sender"))
_ = viper.BindPFlag("smtp.identity", serveCmd.Flags().Lookup("smtp-identity"))
_ = viper.BindPFlag("smtp.logo", serveCmd.Flags().Lookup("smtp-logo"))
_ = viper.BindPFlag("engine.transitiontimeout", serveCmd.Flags().Lookup("engine-transitiontimeout"))
_ = viper.BindPFlag("env", serveCmd.Flags().Lookup("env"))
RootCmd.AddCommand(serveCmd)
}