-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmain.go
More file actions
67 lines (50 loc) · 2.39 KB
/
Copy pathmain.go
File metadata and controls
67 lines (50 loc) · 2.39 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
package main
import (
"flag"
_ "net/http/pprof"
"runtime"
"github.com/mijia/sweb/log"
"github.com/laincloud/sso/ssoldap"
"github.com/laincloud/sso/ssoldap/user"
"github.com/laincloud/sso/ssolib"
)
func init() {
runtime.GOMAXPROCS(runtime.NumCPU())
}
func main() {
var webAddr, mysqlDSN, siteURL, smtpAddr, emailFrom, emailSuffix string
var prikeyfile, pubkeyfile string
var legalNets string
var isDebug bool
var sentryDSN string
var ldapUrl, ldapUser, ldapPassword, ldapBase string
flag.StringVar(&webAddr, "web", ":14000", "The address which SSO service is listening on")
flag.StringVar(&mysqlDSN, "mysql", "user:password@tcp(127.0.0.1:3306)/dbname",
"Data source name of mysql connection")
flag.StringVar(&siteURL, "site", "http://sso.example.com", "Base URL of SSO site")
// TODO fix the ssolib independent on smtp
flag.StringVar(&smtpAddr, "smtp", "mail.example.com:25", "SMTP address for sending mail")
flag.StringVar(&emailFrom, "from", "sso@example.com", "Email address to send register mail from")
flag.StringVar(&emailSuffix, "domain", "@example.com", "Valid email suffix")
flag.BoolVar(&isDebug, "debug", false, "Debug mode switch")
flag.StringVar(&prikeyfile, "private", "certs/server.key", "private key file for jwt")
flag.StringVar(&pubkeyfile, "public", "certs/server.pem", "public key file for jwt")
flag.StringVar(&legalNets, "legalnet", "", "legal net segment for registry")
flag.StringVar(&sentryDSN, "sentry", "http://7:6@sentry.lain.cloud/3", "sentry Data Source Name")
flag.StringVar(&ldapUrl, "ldapurl", "http://ldap.lain.cloud/", "ldap address")
// give a ldap user for search some info for ssolib treat all users as public
// also let the user be the init Admin of sso-ldap
flag.StringVar(&ldapUser, "ldapuser", "test", "some ldap user")
flag.StringVar(&ldapPassword, "ldappasswd", "test", "the password of the ldap user")
flag.StringVar(&ldapBase, "ldapbase", "", "the ldap search base")
flag.Parse()
user.InitAdmin = ldapUser
if isDebug {
log.EnableDebug()
}
log.Debug(ldapUrl, ldapUser, ldapPassword, mysqlDSN, emailSuffix, ldapBase)
userback := user.New(ldapUrl, ldapUser, ldapPassword, mysqlDSN, emailSuffix, ldapBase)
server := ssolib.NewServer(mysqlDSN, siteURL, smtpAddr, emailFrom, "", emailSuffix, false, isDebug, prikeyfile, pubkeyfile, sentryDSN, false)
server.SetUserBackend(userback)
log.Error(server.ListenAndServe(webAddr, ssoldap.AddHandlers))
}