Add LDAP over SSL supporttags/v1.2.0-rc1
@@ -0,0 +1,26 @@ | |||
[unix_http_server] | |||
file=/tmp/supervisor.sock ; path to your socket file | |||
[supervisord] | |||
logfile=log/supervisord.log ; supervisord log file | |||
logfile_maxbytes=50MB ; maximum size of logfile before rotation | |||
logfile_backups=10 ; number of backed up logfiles | |||
loglevel=warn ; info, debug, warn, trace | |||
pidfile=/tmp/supervisord.pid ; pidfile location | |||
nodaemon=false ; run supervisord as a daemon | |||
minfds=1024 ; number of startup file descriptors | |||
minprocs=200 ; number of process descriptors | |||
user=root ; default user | |||
childlogdir=log | |||
[rpcinterface:supervisor] | |||
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface | |||
[supervisorctl] | |||
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket | |||
[program:gogs] | |||
command = /root/Developer/gopath/src/github.com/gogits/gogs/start.sh ; here must be the real url, not ~ or $GOROOT like | |||
autostart = true | |||
stdout_logfile = log/supervisor-gogs-stderr.log | |||
stderr_logfile = log/supervisor-gogs-error.log |
@@ -0,0 +1,42 @@ | |||
#!/bin/sh | |||
echo 'plase remember to modify the command path in etc/conf/supervisord.conf(line 23)' | |||
PID="/tmp/supervisord.pid" | |||
CONF="conf/etc/supervisord.conf" | |||
LOGDIR="log" | |||
if [ ! -d $LOGDIR ]; then | |||
mkdir $LOGDIR | |||
fi | |||
stop() { | |||
if [ -f $PID ]; then | |||
kill `cat -- $PID` | |||
rm -f -- $PID | |||
echo "stopped" | |||
fi | |||
} | |||
start() { | |||
echo "starting" | |||
if [ ! -f $PID ]; then | |||
supervisord -c $CONF | |||
echo "started" | |||
fi | |||
} | |||
case "$1" in | |||
start) | |||
start | |||
;; | |||
stop) | |||
stop | |||
;; | |||
restart) | |||
stop | |||
start | |||
;; | |||
*) | |||
echo "Usage: $0 {start|stop|restart}" | |||
esac |
@@ -21,6 +21,7 @@ type AuthenticationForm struct { | |||
Domain string `form:"domain"` | |||
Host string `form:"host"` | |||
Port int `form:"port"` | |||
UseSSL bool `form:"usessl"` | |||
BaseDN string `form:"base_dn"` | |||
Attributes string `form:"attributes"` | |||
Filter string `form:"filter"` | |||
@@ -39,6 +40,7 @@ func (f *AuthenticationForm) Name(field string) string { | |||
"Domain": "Domain name", | |||
"Host": "Host address", | |||
"Port": "Port Number", | |||
"UseSSL": "Use SSL", | |||
"BaseDN": "Base DN", | |||
"Attributes": "Search attributes", | |||
"Filter": "Search filter", | |||
@@ -18,6 +18,7 @@ type Ldapsource struct { | |||
Name string // canonical name (ie. corporate.ad) | |||
Host string // LDAP host | |||
Port int // port number | |||
UseSSL bool // Use SSL | |||
BaseDN string // Base DN | |||
Attributes string // Attribut to search | |||
Filter string // Query filter to validate entry | |||
@@ -31,8 +32,8 @@ var ( | |||
) | |||
// Add a new source (LDAP directory) to the global pool | |||
func AddSource(name string, host string, port int, basedn string, attributes string, filter string, msadsaformat string) { | |||
ldaphost := Ldapsource{name, host, port, basedn, attributes, filter, msadsaformat, true} | |||
func AddSource(name string, host string, port int, usessl bool, basedn string, attributes string, filter string, msadsaformat string) { | |||
ldaphost := Ldapsource{name, host, port, usessl, basedn, attributes, filter, msadsaformat, true} | |||
Authensource = append(Authensource, ldaphost) | |||
} | |||
@@ -52,7 +53,8 @@ func LoginUser(name, passwd string) (a string, r bool) { | |||
// searchEntry : search an LDAP source if an entry (name, passwd) is valide and in the specific filter | |||
func (ls Ldapsource) SearchEntry(name, passwd string) (string, bool) { | |||
l, err := goldap.Dial("tcp", fmt.Sprintf("%s:%d", ls.Host, ls.Port)) | |||
l, err := ldapDial(ls) | |||
if err != nil { | |||
log.Debug("LDAP Connect error, disabled source %s", ls.Host) | |||
ls.Enabled = false | |||
@@ -85,3 +87,11 @@ func (ls Ldapsource) SearchEntry(name, passwd string) (string, bool) { | |||
} | |||
return "", true | |||
} | |||
func ldapDial(ls Ldapsource) (*goldap.Conn, error) { | |||
if ls.UseSSL { | |||
return goldap.DialTLS("tcp", fmt.Sprintf("%s:%d", ls.Host, ls.Port), nil) | |||
} else { | |||
return goldap.Dial("tcp", fmt.Sprintf("%s:%d", ls.Host, ls.Port)) | |||
} | |||
} |
@@ -200,11 +200,12 @@ func newLdapService() { | |||
ldapname := Cfg.MustValue(v, "name", v) | |||
ldaphost := Cfg.MustValue(v, "host") | |||
ldapport := Cfg.MustInt(v, "port", 389) | |||
ldapusessl := Cfg.MustBool(v, "usessl", false) | |||
ldapbasedn := Cfg.MustValue(v, "basedn", "dc=*,dc=*") | |||
ldapattribute := Cfg.MustValue(v, "attribute", "mail") | |||
ldapfilter := Cfg.MustValue(v, "filter", "(*)") | |||
ldapmsadsaformat := Cfg.MustValue(v, "MSADSAFORMAT", "%s") | |||
ldap.AddSource(ldapname, ldaphost, ldapport, ldapbasedn, ldapattribute, ldapfilter, ldapmsadsaformat) | |||
ldap.AddSource(ldapname, ldaphost, ldapport, ldapusessl, ldapbasedn, ldapattribute, ldapfilter, ldapmsadsaformat) | |||
nbsrc++ | |||
log.Debug("%s added as LDAP source", ldapname) | |||
} | |||
@@ -44,6 +44,7 @@ func NewAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) { | |||
Ldapsource: ldap.Ldapsource{ | |||
Host: form.Host, | |||
Port: form.Port, | |||
UseSSL: form.UseSSL, | |||
BaseDN: form.BaseDN, | |||
Attributes: form.Attributes, | |||
Filter: form.Filter, | |||
@@ -121,6 +122,7 @@ func EditAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) { | |||
Ldapsource: ldap.Ldapsource{ | |||
Host: form.Host, | |||
Port: form.Port, | |||
UseSSL: form.UseSSL, | |||
BaseDN: form.BaseDN, | |||
Attributes: form.Attributes, | |||
Filter: form.Filter, | |||
@@ -53,6 +53,14 @@ | |||
</div> | |||
</div> | |||
<div class="form-group {{if .Err_UseSSL}}has-error has-feedback{{end}}"> | |||
<label class="col-md-3 control-label">Use SSL: </label> | |||
<div class="col-md-7"> | |||
<input name="usessl" class="form-control" type="checkbox" {{if .Source.LDAP.UseSSL}}checked{{end}}> | |||
</div> | |||
</div> | |||
<div class="form-group {{if .Err_BaseDN}}has-error has-feedback{{end}}"> | |||
<label class="col-md-3 control-label">Base DN: </label> | |||
<div class="col-md-7"> | |||
@@ -150,4 +158,4 @@ | |||
</div> | |||
</div> | |||
{{template "base/footer" .}} | |||
{{template "base/footer" .}} |
@@ -51,6 +51,13 @@ | |||
</div> | |||
</div> | |||
<div class="form-group {{if .Err_UseSSL}}has-error has-feedback{{end}}"> | |||
<label class="col-md-3 control-label">Use SSL: </label> | |||
<div class="col-md-7"> | |||
<input name="usessl" class="form-control" type="checkbox" {{if .usessl}}checked{{end}}> | |||
</div> | |||
</div> | |||
<div class="form-group {{if .Err_BaseDN}}has-error has-feedback{{end}}"> | |||
<label class="col-md-3 control-label">Base DN: </label> | |||
<div class="col-md-7"> | |||
@@ -158,4 +165,4 @@ | |||
}); | |||
}); | |||
</script> | |||
{{template "base/footer" .}} | |||
{{template "base/footer" .}} |