github.com/uvalib/orcid-access-ws@v0.0.0-20250612130209-7d062dbabf9d/orcidaccessws/config/configuration.go (about) 1 package config 2 3 import ( 4 "flag" 5 "fmt" 6 "strings" 7 8 "github.com/uvalib/orcid-access-ws/orcidaccessws/logger" 9 ) 10 11 // Config -- our configuration structure 12 type Config struct { 13 ServicePort string 14 15 // database attributes 16 DbSecure string // do we use TLS 17 DbHost string // hostname of database server 18 DbName string // database name 19 DbUser string // database user name 20 DbPassphrase string // database user password 21 DbTimeout string // connection/read/write timeout 22 23 // ORCID attributes 24 OrcidPublicURL string 25 OrcidSecureURL string 26 OrcidOauthURL string 27 OrcidClientID string 28 OrcidClientSecret string 29 30 // token authentication 31 SharedSecret string 32 33 // Service timeout 34 ServiceTimeout int 35 36 // diagnostic only 37 Debug bool 38 } 39 40 // Configuration -- our configuration instance 41 var Configuration = loadConfig() 42 43 func loadConfig() Config { 44 45 // default value for the database timeout 46 c := Config{DbTimeout: "10s"} 47 48 // process command line flags and setup configuration 49 flag.StringVar(&c.ServicePort, "port", "8080", "The service listen port") 50 flag.StringVar(&c.DbSecure, "dbsecure", "false", "Use TLS for the database connection") 51 flag.StringVar(&c.DbHost, "dbhost", "mysqldev.lib.virginia.edu:3306", "The database server hostname:port") 52 flag.StringVar(&c.DbName, "dbname", "orcidaccess_development", "The database name") 53 flag.StringVar(&c.DbUser, "dbuser", "orcidaccess", "The database username") 54 flag.StringVar(&c.DbPassphrase, "dbpassword", "", "The database passphrase") 55 flag.StringVar(&c.OrcidPublicURL, "orcidpublicurl", "https://pub.orcid.org/v3.0", "The ORCID service public URL") 56 flag.StringVar(&c.OrcidSecureURL, "orcidsecureurl", "https://api.sandbox.orcid.org/v3.0", "The ORCID service secure URL") 57 flag.StringVar(&c.OrcidOauthURL, "orcidoauthurl", "https://sandbox.orcid.org", "The ORCID service OAuth URL") 58 flag.StringVar(&c.OrcidClientID, "orcidclientid", "client-id", "The ORCID client identifier") 59 flag.StringVar(&c.OrcidClientSecret, "orcidclientsecret", "client-secret", "The ORCID client secret") 60 flag.IntVar(&c.ServiceTimeout, "timeout", 15, "The external service timeout in seconds") 61 flag.StringVar(&c.SharedSecret, "secret", "", "The JWT shared secret") 62 flag.BoolVar(&c.Debug, "debug", false, "Enable debugging") 63 64 flag.Parse() 65 66 logger.Log(fmt.Sprintf("INFO: ServicePort: %s", c.ServicePort)) 67 logger.Log(fmt.Sprintf("INFO: DbSecure: %s", c.DbSecure)) 68 logger.Log(fmt.Sprintf("INFO: DbHost: %s", c.DbHost)) 69 logger.Log(fmt.Sprintf("INFO: DbName: %s", c.DbName)) 70 logger.Log(fmt.Sprintf("INFO: DbUser: %s", c.DbUser)) 71 logger.Log(fmt.Sprintf("INFO: DbPassphrase: %s", strings.Repeat("*", len(c.DbPassphrase)))) 72 logger.Log(fmt.Sprintf("INFO: DbTimeout: %s", c.DbTimeout)) 73 logger.Log(fmt.Sprintf("INFO: OrcidPublicURL: %s", c.OrcidPublicURL)) 74 logger.Log(fmt.Sprintf("INFO: OrcidSecureURL: %s", c.OrcidSecureURL)) 75 logger.Log(fmt.Sprintf("INFO: OrcidOauthURL: %s", c.OrcidOauthURL)) 76 logger.Log(fmt.Sprintf("INFO: OrcidClientID: %s", c.OrcidClientID)) 77 logger.Log(fmt.Sprintf("INFO: OrcidClientSecret: %s", strings.Repeat("*", len(c.OrcidClientSecret)))) 78 logger.Log(fmt.Sprintf("INFO: SharedSecret: %s", strings.Repeat("*", len(c.SharedSecret)))) 79 logger.Log(fmt.Sprintf("INFO: ServiceTimeout: %d", c.ServiceTimeout)) 80 logger.Log(fmt.Sprintf("INFO: Debug: %t", c.Debug)) 81 82 return c 83 } 84 85 // 86 // end of file 87 //