Expand env vars and flags (#84)
This commit is contained in:
		
							parent
							
								
									630d62f3eb
								
							
						
					
					
						commit
						59abd1506f
					
				
							
								
								
									
										36
									
								
								main.go
								
								
								
								
							
							
						
						
									
										36
									
								
								main.go
								
								
								
								
							|  | @ -4,7 +4,6 @@ import ( | ||||||
| 	"flag" | 	"flag" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"os" |  | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	rice "github.com/GeertJohan/go.rice" | 	rice "github.com/GeertJohan/go.rice" | ||||||
|  | @ -17,12 +16,19 @@ import ( | ||||||
| 	"github.com/ngoduykhanh/wireguard-ui/util" | 	"github.com/ngoduykhanh/wireguard-ui/util" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // command-line banner information
 |  | ||||||
| var ( | var ( | ||||||
|  | 	// command-line banner information
 | ||||||
| 	appVersion = "development" | 	appVersion = "development" | ||||||
| 	gitCommit  = "N/A" | 	gitCommit  = "N/A" | ||||||
| 	gitRef     = "N/A" | 	gitRef     = "N/A" | ||||||
| 	buildTime  = fmt.Sprintf(time.Now().UTC().Format("01-02-2006 15:04:05")) | 	buildTime  = fmt.Sprintf(time.Now().UTC().Format("01-02-2006 15:04:05")) | ||||||
|  | 	// configuration variables
 | ||||||
|  | 	flagDisableLogin   bool   = false | ||||||
|  | 	flagBindAddress    string = "0.0.0.0:5000" | ||||||
|  | 	flagSendgridApiKey string | ||||||
|  | 	flagEmailFrom      string | ||||||
|  | 	flagEmailFromName  string = "WireGuard UI" | ||||||
|  | 	flagSessionSecret  string | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const ( | const ( | ||||||
|  | @ -35,18 +41,22 @@ const ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func init() { | func init() { | ||||||
| 	// command-line flags
 | 
 | ||||||
| 	flagDisableLogin := flag.Bool("disable-login", false, "Disable login page. Turn off authentication.") | 	// command-line flags and env variables
 | ||||||
| 	flagBindAddress := flag.String("bind-address", "0.0.0.0:5000", "Address:Port to which the app will be bound.") | 	flag.StringVar(&flagBindAddress, "bind-address", util.LookupEnvOrString("BIND_ADDRESS", flagBindAddress), "Address:Port to which the app will be bound.") | ||||||
|  | 	flag.StringVar(&flagSendgridApiKey, "sendgrid-api-key", util.LookupEnvOrString("SENDGRID_API_KEY", flagSendgridApiKey), "Your sendgrid api key.") | ||||||
|  | 	flag.StringVar(&flagEmailFrom, "email-from", util.LookupEnvOrString("EMAIL_FROM_ADDRESS", flagEmailFrom), "'From' email address.") | ||||||
|  | 	flag.StringVar(&flagEmailFromName, "email-from-name", util.LookupEnvOrString("EMAIL_FROM_NAME", flagEmailFromName), "'From' email name.") | ||||||
|  | 	flag.StringVar(&flagSessionSecret, "session-secret", util.LookupEnvOrString("SESSION_SECRET", flagSessionSecret), "The key used to encrypt session cookies.") | ||||||
| 	flag.Parse() | 	flag.Parse() | ||||||
| 
 | 
 | ||||||
| 	// update runtime config
 | 	// update runtime config
 | ||||||
| 	util.DisableLogin = *flagDisableLogin | 	util.DisableLogin = flagDisableLogin | ||||||
| 	util.BindAddress = *flagBindAddress | 	util.BindAddress = flagBindAddress | ||||||
| 	util.SendgridApiKey = os.Getenv("SENDGRID_API_KEY") | 	util.SendgridApiKey = flagSendgridApiKey | ||||||
| 	util.EmailFrom = os.Getenv("EMAIL_FROM") | 	util.EmailFrom = flagEmailFrom | ||||||
| 	util.EmailFromName = os.Getenv("EMAIL_FROM_NAME") | 	util.EmailFromName = flagEmailFromName | ||||||
| 	util.SessionSecret = []byte(os.Getenv("SESSION_SECRET")) | 	util.SessionSecret = []byte(flagSessionSecret) | ||||||
| 
 | 
 | ||||||
| 	// print app information
 | 	// print app information
 | ||||||
| 	fmt.Println("Wireguard UI") | 	fmt.Println("Wireguard UI") | ||||||
|  | @ -57,6 +67,10 @@ func init() { | ||||||
| 	fmt.Println("Git Repo\t:", "https://github.com/ngoduykhanh/wireguard-ui") | 	fmt.Println("Git Repo\t:", "https://github.com/ngoduykhanh/wireguard-ui") | ||||||
| 	fmt.Println("Authentication\t:", !util.DisableLogin) | 	fmt.Println("Authentication\t:", !util.DisableLogin) | ||||||
| 	fmt.Println("Bind address\t:", util.BindAddress) | 	fmt.Println("Bind address\t:", util.BindAddress) | ||||||
|  | 	//fmt.Println("Sendgrid key\t:", util.SendgridApiKey)
 | ||||||
|  | 	fmt.Println("Email from\t:", util.EmailFrom) | ||||||
|  | 	fmt.Println("Email from name\t:", util.EmailFromName) | ||||||
|  | 	//fmt.Println("Session secret\t:", util.SessionSecret)
 | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										29
									
								
								util/util.go
								
								
								
								
							
							
						
						
									
										29
									
								
								util/util.go
								
								
								
								
							|  | @ -369,6 +369,35 @@ func WriteWireGuardServerConfig(tmplBox *rice.Box, serverConfig model.Server, cl | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func LookupEnvOrString(key string, defaultVal string) string { | ||||||
|  | 	if val, ok := os.LookupEnv(key); ok { | ||||||
|  | 		return val | ||||||
|  | 	} | ||||||
|  | 	return defaultVal | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func LookupEnvOrBool(key string, defaultVal bool) bool { | ||||||
|  | 	if val, ok := os.LookupEnv(key); ok { | ||||||
|  | 		v, err := strconv.ParseBool(val) | ||||||
|  | 		if err != nil { | ||||||
|  | 			fmt.Fprintf(os.Stderr, "LookupEnvOrInt[%s]: %v\n", key, err) | ||||||
|  | 		} | ||||||
|  | 		return v | ||||||
|  | 	} | ||||||
|  | 	return defaultVal | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func LookupEnvOrInt(key string, defaultVal int) int { | ||||||
|  | 	if val, ok := os.LookupEnv(key); ok { | ||||||
|  | 		v, err := strconv.Atoi(val) | ||||||
|  | 		if err != nil { | ||||||
|  | 			fmt.Fprintf(os.Stderr, "LookupEnvOrInt[%s]: %v\n", key, err) | ||||||
|  | 		} | ||||||
|  | 		return v | ||||||
|  | 	} | ||||||
|  | 	return defaultVal | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // GetCredVar reads value from environment variable or returns fallback
 | // GetCredVar reads value from environment variable or returns fallback
 | ||||||
| func GetCredVar(key, fallback string) string { | func GetCredVar(key, fallback string) string { | ||||||
| 	if value, ok := os.LookupEnv(key); ok { | 	if value, ok := os.LookupEnv(key); ok { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue