From 460cde921d9c05d9f6430c2af1119e63cbad25eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 25 Feb 2020 14:56:37 +0100 Subject: [PATCH 1/9] actually start glauth server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 2 + go.sum | 25 ++++++++++++ pkg/command/server.go | 32 ++++++++++++++-- pkg/config/config.go | 47 ++++++++++------------- pkg/flagset/flagset.go | 87 ++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 160 insertions(+), 33 deletions(-) diff --git a/go.mod b/go.mod index 904d0ef14b..47f1b8d123 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,10 @@ require ( contrib.go.opencensus.io/exporter/ocagent v0.6.0 contrib.go.opencensus.io/exporter/zipkin v0.1.1 github.com/UnnoTed/fileb0x v1.1.4 + github.com/glauth/glauth v1.1.2 github.com/micro/cli/v2 v2.1.1 github.com/oklog/run v1.0.0 + github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 github.com/openzipkin/zipkin-go v0.2.2 github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/restic/calens v0.2.0 diff --git a/go.sum b/go.sum index 53d686277c..ca134b5ed9 100644 --- a/go.sum +++ b/go.sum @@ -35,6 +35,8 @@ github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvd github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/GeertJohan/yubigo v0.0.0-20190917122436-175bc097e60e h1:Bqtt5C+uVk+vH/t5dmB47uDCTwxw16EYHqvJnmY2aQc= +github.com/GeertJohan/yubigo v0.0.0-20190917122436-175bc097e60e/go.mod h1:njRCDrl+1RQ/A/+KVU8Ho2EWAxUSkohOWczdW3dzDG0= github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= @@ -78,6 +80,8 @@ github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/bmatcuk/doublestar v1.1.1 h1:YroD6BJCZBYx06yYFEWvUuKVWQn3vLLQAVmDmvTSaiQ= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= @@ -141,6 +145,7 @@ github.com/docker/docker v1.4.2-0.20190710153559-aa8249ae1b8b/go.mod h1:eEKB0N0r github.com/docker/docker v1.4.2-0.20191101170500-ac7306503d23/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= @@ -160,6 +165,8 @@ github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= +github.com/glauth/glauth v1.1.2 h1:BCbXV8f0zELcEOK9+YdPlYcEkI4iAz18ac7jDbcLoOE= +github.com/glauth/glauth v1.1.2/go.mod h1:QfLlWZurvnFao/aEFuZ4NGj34ncrVGBBK7bRXmyOeag= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= @@ -264,6 +271,7 @@ github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -276,6 +284,7 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jteeuwen/go-bindata v3.0.7+incompatible/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= @@ -293,6 +302,8 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= @@ -400,6 +411,10 @@ github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OS github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nlopes/slack v0.6.1-0.20191106133607-d06c2a2b3249/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= +github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484 h1:D9EvfGQvlkKaDr2CRKN++7HbSXbefUNDrPq60T+g24s= +github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484/go.mod h1:O1EljZ+oHprtxDDPHiMWVo/5dBT6PlvWX5PSwj80aBA= +github.com/nmcclain/ldap v0.0.0-20191021200707-3b3b69a7e9e3 h1:NNis9uuNpG5h97Dvxxo53Scg02qBg+3Nfabg6zjFGu8= +github.com/nmcclain/ldap v0.0.0-20191021200707-3b3b69a7e9e3/go.mod h1:YtrVB1/v9Td9SyjXpjYVmbdKgj9B0nPTBsdGUxy0i8U= github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= @@ -413,6 +428,8 @@ github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXW github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= @@ -445,6 +462,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/pquerna/otp v1.2.0 h1:/A3+Jn+cagqayeR3iHs/L62m5ue7710D35zl1zJ1kok= +github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= @@ -551,6 +570,8 @@ github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4m github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yaegashi/msgraph.go v0.1.1-0.20200221123608-2d438cf2a7cc h1:ejaC8rvIvCWmsaFrvmGOxhBuMxxhBB1xRshuM98XQ7M= +github.com/yaegashi/msgraph.go v0.1.1-0.20200221123608-2d438cf2a7cc/go.mod h1:tso14hwzqX4VbnWTNsxiL0DvMb2OwbGISFA7jDibdWc= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= @@ -696,6 +717,8 @@ golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4 h1:Hynbrlo6LbYI3H1IqXpkVDOcX/3HiPdhVEuyj5a59RM= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c h1:jceGD5YNJGgGMkJz79agzOln1K9TaZUjv5ird16qniQ= +golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= @@ -776,9 +799,11 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/amz.v1 v1.0.0-20150111123259-ad23e96a31d2/go.mod h1:F0YaN4yi2XekmElKkPYfybh7pReQE9Ph48lSgeCkzyc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= diff --git a/pkg/command/server.go b/pkg/command/server.go index 9367084028..66777fdef6 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -2,7 +2,6 @@ package command import ( "context" - "errors" "os" "os/signal" "strings" @@ -11,8 +10,11 @@ import ( "contrib.go.opencensus.io/exporter/jaeger" "contrib.go.opencensus.io/exporter/ocagent" "contrib.go.opencensus.io/exporter/zipkin" + glauthcfg "github.com/glauth/glauth/pkg/config" + glauth "github.com/glauth/glauth/pkg/server" "github.com/micro/cli/v2" "github.com/oklog/run" + glauthlog "github.com/op/go-logging" openzipkin "github.com/openzipkin/zipkin-go" zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http" "github.com/owncloud/ocis-glauth/pkg/config" @@ -33,6 +35,8 @@ func Server(cfg *config.Config) *cli.Command { cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/") } + cfg.Backend.Servers = c.StringSlice("backend-server") + return nil }, Action: func(c *cli.Context) error { @@ -131,8 +135,30 @@ func Server(cfg *config.Config) *cli.Command { defer cancel() { + log := glauthlog.MustGetLogger("ocis-glauth") + cfg := glauthcfg.Config{ + LDAP: glauthcfg.LDAP{ + Enabled: cfg.Ldap.Enabled, + Listen: cfg.Ldap.Address, + }, + LDAPS: glauthcfg.LDAPS{ + Enabled: cfg.Ldaps.Enabled, + Listen: cfg.Ldaps.Address, + }, + Backend: glauthcfg.Backend{ + Datastore: cfg.Backend.Datastore, + BaseDN: cfg.Backend.BaseDN, + Insecure: cfg.Backend.Insecure, + NameFormat: cfg.Backend.NameFormat, + GroupFormat: cfg.Backend.GroupFormat, + Servers: cfg.Backend.Servers, + SSHKeyAttr: cfg.Backend.SSHKeyAttr, + UseGraphAPI: cfg.Backend.UseGraphAPI, + }, + } + server, err := glauth.NewServer(log, &cfg) //XXX(deepdiver) start ldap server - err := errors.New("not implemented yet") + //err := errors.New("not implemented yet") if err != nil { logger.Info(). @@ -144,7 +170,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(func() error { - //return server.Run() + server.ListenAndServe() return nil }, func(_ error) { logger.Info(). diff --git a/pkg/config/config.go b/pkg/config/config.go index abfc509150..666a773301 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -33,37 +33,32 @@ type Tracing struct { // Ldap defined the available LDAP configuration. type Ldap struct { - Network string - Address string - UserName string - Password string - BaseDNUsers string - BaseDNGroups string -} - -// OpenIDConnect defined the available OpenID Connect configuration. -type OpenIDConnect struct { - Endpoint string - Realm string - SigningAlgs []string - Insecure bool -} - -// Reva defines all available REVA configuration. -type Reva struct { Address string + Enabled bool +} + +// Backend defined the available backend configuration. +type Backend struct { + Datastore string + BaseDN string + Insecure bool + NameFormat string + GroupFormat string + Servers []string + SSHKeyAttr string + UseGraphAPI bool } // Config combines all available configuration parts. type Config struct { - File string - Log Log - Debug Debug - HTTP HTTP - Tracing Tracing - Ldap Ldap - OpenIDConnect OpenIDConnect - Reva Reva + File string + Log Log + Debug Debug + HTTP HTTP + Tracing Tracing + Ldap Ldap + Ldaps Ldap + Backend Backend } // New initializes a new configuration with or without defaults. diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index bfaebd1f03..1dda6d8e7e 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -115,12 +115,91 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { EnvVars: []string{"GLAUTH_DEBUG_ZPAGES"}, Destination: &cfg.Debug.Zpages, }, + &cli.StringFlag{ - Name: "http-addr", + Name: "ldap-addr", Value: "0.0.0.0:9125", - Usage: "Address to bind http server", - EnvVars: []string{"GLAUTH_HTTP_ADDR"}, - Destination: &cfg.HTTP.Addr, + Usage: "Address to bind ldap server", + EnvVars: []string{"GLAUTH_LDAP_ADDR"}, + Destination: &cfg.Ldap.Address, + }, + &cli.BoolFlag{ + Name: "ldap-enabled", + Value: true, + Usage: "Enable ldap server", + EnvVars: []string{"GLAUTH_LDAP_ENABLED"}, + Destination: &cfg.Ldap.Enabled, + }, + + &cli.StringFlag{ + Name: "ldaps-addr", + Value: "0.0.0.0:9126", + Usage: "Address to bind ldap server", + EnvVars: []string{"GLAUTH_LDAPS_ADDR"}, + Destination: &cfg.Ldaps.Address, + }, + &cli.BoolFlag{ + Name: "ldaps-enabled", + Value: false, + Usage: "Enable ldap server", + EnvVars: []string{"GLAUTH_LDAPS_ENABLED"}, + Destination: &cfg.Ldaps.Enabled, + }, + + &cli.StringFlag{ + Name: "backend-datastore", + Value: "owncloud", + Usage: "datastore to use as the backend. one of config, ldap or owncloud", + EnvVars: []string{"GLAUTH_BACKEND_DATASTORE"}, + Destination: &cfg.Backend.Datastore, + }, + &cli.StringFlag{ + Name: "backend-basedn", + Value: "dc=owncloud,dc=com", + Usage: "base distinguished name to expose", + EnvVars: []string{"GLAUTH_BACKEND_BASEDN"}, + Destination: &cfg.Backend.BaseDN, + }, + &cli.BoolFlag{ + Name: "backend-insecure", + Value: false, + Usage: "Allow insecure requests to the datastore", + EnvVars: []string{"GLAUTH_BACKEND_INSECURE"}, + Destination: &cfg.Backend.Insecure, + }, + &cli.StringFlag{ + Name: "backend-name-format", + Value: "cn", + Usage: "name attribute for entries to expose. typically cn or uid", + EnvVars: []string{"GLAUTH_BACKEND_NAME_FORMAT"}, + Destination: &cfg.Backend.NameFormat, + }, + &cli.StringFlag{ + Name: "backend-group-format", + Value: "ou", + Usage: "name attribute for entries to expose. typically ou, cn or dc", + EnvVars: []string{"GLAUTH_BACKEND_GROUP_FORMAT"}, + Destination: &cfg.Backend.GroupFormat, + }, + &cli.StringSliceFlag{ + Name: "backend-server", + Value: cli.NewStringSlice("https://demo.owncloud.com"), + Usage: `--backend-servers http://internal1.example.com [--backend-servers http://internal2.example.com]`, + EnvVars: []string{"GLAUTH_BACKEND_SERVERS"}, + }, + &cli.StringFlag{ + Name: "backend-ssh-key-attr", + Value: "sshPublicKey", + Usage: "ssh key attribute for entries to expose", + EnvVars: []string{"GLAUTH_BACKEND_SSH_KEY_ATTR"}, + Destination: &cfg.Backend.GroupFormat, + }, + &cli.BoolFlag{ + Name: "backend-use-graphapi", + Value: true, + Usage: "use Graph API, only for owncloud datastore", + EnvVars: []string{"GLAUTH_BACKEND_USE_GRAPHAPI"}, + Destination: &cfg.Backend.UseGraphAPI, }, } } From 047380eac6e8393f65faf688d5a5501fed855b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 26 Feb 2020 16:30:04 +0100 Subject: [PATCH 2/9] use new options, wrap logger MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 4 +- go.sum | 7 +++ pkg/command/server.go | 11 ++-- pkg/mlogr/mlogr.go | 134 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 150 insertions(+), 6 deletions(-) create mode 100644 pkg/mlogr/mlogr.go diff --git a/go.mod b/go.mod index 47f1b8d123..598d790fbf 100644 --- a/go.mod +++ b/go.mod @@ -7,13 +7,15 @@ require ( contrib.go.opencensus.io/exporter/ocagent v0.6.0 contrib.go.opencensus.io/exporter/zipkin v0.1.1 github.com/UnnoTed/fileb0x v1.1.4 - github.com/glauth/glauth v1.1.2 + github.com/glauth/glauth v1.1.3-0.20200226140131-592fdf4e7938 + github.com/go-logr/logr v0.1.0 github.com/micro/cli/v2 v2.1.1 github.com/oklog/run v1.0.0 github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 github.com/openzipkin/zipkin-go v0.2.2 github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/restic/calens v0.2.0 + github.com/rs/zerolog v1.17.2 github.com/spf13/afero v1.2.2 // indirect github.com/spf13/viper v1.5.0 go.opencensus.io v0.22.2 diff --git a/go.sum b/go.sum index ca134b5ed9..ea76dc4e87 100644 --- a/go.sum +++ b/go.sum @@ -82,6 +82,7 @@ github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvF github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/butonic/zerologr v0.0.0-20191210074216-d798ee237d84/go.mod h1:Jw3eYm4TLfPMNKzimBDxXceOJhFF7Oix/zd2PTK3UrM= github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= @@ -145,6 +146,7 @@ github.com/docker/docker v1.4.2-0.20190710153559-aa8249ae1b8b/go.mod h1:eEKB0N0r github.com/docker/docker v1.4.2-0.20191101170500-ac7306503d23/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= @@ -167,6 +169,8 @@ github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/glauth/glauth v1.1.2 h1:BCbXV8f0zELcEOK9+YdPlYcEkI4iAz18ac7jDbcLoOE= github.com/glauth/glauth v1.1.2/go.mod h1:QfLlWZurvnFao/aEFuZ4NGj34ncrVGBBK7bRXmyOeag= +github.com/glauth/glauth v1.1.3-0.20200226140131-592fdf4e7938 h1:vlFGzeg1qlFIKwznLIVOTTwo1eM9I4dxBUVxiC7R92k= +github.com/glauth/glauth v1.1.3-0.20200226140131-592fdf4e7938/go.mod h1:ygO1z1pcp79iBrjbA6vqrsUxIonStjBncosl2a9/Dx8= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= @@ -182,6 +186,7 @@ github.com/go-log/log v0.1.0 h1:wudGTNsiGzrD5ZjgIkVZ517ugi2XRe9Q/xRCzwEO4/U= github.com/go-log/log v0.1.0/go.mod h1:4mBwpdRMFLiuXZDCwU2lKQFsoSCo72j3HqBK9d81N2M= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= @@ -271,6 +276,7 @@ github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a h1:zPPuIq2jAWWPTrGt70eK/BSch+gFAGrNzecsoENgu2o= github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= @@ -799,6 +805,7 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/amz.v1 v1.0.0-20150111123259-ad23e96a31d2 h1:FMrsB0OTjHsPDA1NM7AhRmmZzkBPu3iGdxK/5MFfBmk= gopkg.in/amz.v1 v1.0.0-20150111123259-ad23e96a31d2/go.mod h1:F0YaN4yi2XekmElKkPYfybh7pReQE9Ph48lSgeCkzyc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= diff --git a/pkg/command/server.go b/pkg/command/server.go index 66777fdef6..79d80d60fd 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -14,11 +14,11 @@ import ( glauth "github.com/glauth/glauth/pkg/server" "github.com/micro/cli/v2" "github.com/oklog/run" - glauthlog "github.com/op/go-logging" openzipkin "github.com/openzipkin/zipkin-go" zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http" "github.com/owncloud/ocis-glauth/pkg/config" "github.com/owncloud/ocis-glauth/pkg/flagset" + "github.com/owncloud/ocis-glauth/pkg/mlogr" "github.com/owncloud/ocis-glauth/pkg/server/debug" "go.opencensus.io/stats/view" "go.opencensus.io/trace" @@ -135,7 +135,7 @@ func Server(cfg *config.Config) *cli.Command { defer cancel() { - log := glauthlog.MustGetLogger("ocis-glauth") + log := mlogr.New(&logger) cfg := glauthcfg.Config{ LDAP: glauthcfg.LDAP{ Enabled: cfg.Ldap.Enabled, @@ -156,9 +156,10 @@ func Server(cfg *config.Config) *cli.Command { UseGraphAPI: cfg.Backend.UseGraphAPI, }, } - server, err := glauth.NewServer(log, &cfg) - //XXX(deepdiver) start ldap server - //err := errors.New("not implemented yet") + server, err := glauth.NewServer( + glauth.Logger(log), + glauth.Config(&cfg), + ) if err != nil { logger.Info(). diff --git a/pkg/mlogr/mlogr.go b/pkg/mlogr/mlogr.go new file mode 100644 index 0000000000..eb3509b361 --- /dev/null +++ b/pkg/mlogr/mlogr.go @@ -0,0 +1,134 @@ +package mlogr + +import ( + "errors" + + "github.com/go-logr/logr" + plog "github.com/owncloud/ocis-pkg/v2/log" + + "github.com/rs/zerolog" +) + +const debugVerbosity = 6 +const traceVerbosity = 8 + +// New returns a logr.Logger which is implemented by the log. +func New(l *plog.Logger) logr.Logger { + return logger{ + l: l, + verbosity: 0, + prefix: "glauth", + values: nil, + } +} + +// logger is a logr.Logger that uses the ocis-pkg log. +type logger struct { + l *plog.Logger + verbosity int + prefix string + values []interface{} +} + +func (l logger) clone() logger { + out := l + out.values = copySlice(l.values) + return out +} + +func copySlice(in []interface{}) []interface{} { + out := make([]interface{}, len(in)) + copy(out, in) + return out +} + +// add converts a bunch of arbitrary key-value pairs into zerolog fields. +func add(e *zerolog.Event, keysAndVals []interface{}) { + + // make sure we got an even number of arguments + if len(keysAndVals)%2 != 0 { + e.Interface("args", keysAndVals). + AnErr("zerologr-err", errors.New("odd number of arguments passed as key-value pairs for logging")). + Stack() + return + } + + for i := 0; i < len(keysAndVals); { + // process a key-value pair, + // ensuring that the key is a string + key, val := keysAndVals[i], keysAndVals[i+1] + keyStr, isString := key.(string) + if !isString { + // if the key isn't a string, log additional error + e.Interface("invalid key", key). + AnErr("zerologr-err", errors.New("non-string key argument passed to logging, ignoring all later arguments")). + Stack() + return + } + e.Interface(keyStr, val) + + i += 2 + } +} + +func (l logger) Info(msg string, keysAndVals ...interface{}) { + if l.Enabled() { + var e *zerolog.Event + if l.verbosity < debugVerbosity { + e = l.l.Info() + } else if l.verbosity < traceVerbosity { + e = l.l.Debug() + } else { + e = l.l.Trace() + } + e.Int("verbosity", l.verbosity) + if l.prefix != "" { + e.Str("name", l.prefix) + } + add(e, l.values) + add(e, keysAndVals) + e.Msg(msg) + } +} + +func (l logger) Enabled() bool { + return true +} + +func (l logger) Error(err error, msg string, keysAndVals ...interface{}) { + e := l.l.Error().Err(err) + if l.prefix != "" { + e.Str("name", l.prefix) + } + add(e, l.values) + add(e, keysAndVals) + e.Msg(msg) +} + +func (l logger) V(verbosity int) logr.InfoLogger { + //new := l.clone() + //new.level = level + //return new + l.verbosity = verbosity + return l +} + +// WithName returns a new logr.Logger with the specified name appended. zerologr +// uses '/' characters to separate name elements. Callers should not pass '/' +// in the provided name string, but this library does not actually enforce that. +func (l logger) WithName(name string) logr.Logger { + new := l.clone() + if len(l.prefix) > 0 { + new.prefix = l.prefix + "/" + } + new.prefix += name + return new +} +func (l logger) WithValues(kvList ...interface{}) logr.Logger { + new := l.clone() + new.values = append(new.values, kvList...) + return new +} + +var _ logr.Logger = logger{} +var _ logr.InfoLogger = logger{} From e357c3a9316c3ec404f91b38f7cac56eaac56588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 26 Feb 2020 22:14:45 +0100 Subject: [PATCH 3/9] proper server shutdown MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 5 ++++- pkg/command/server.go | 15 +++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 598d790fbf..822e1d5aad 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,8 @@ require ( contrib.go.opencensus.io/exporter/ocagent v0.6.0 contrib.go.opencensus.io/exporter/zipkin v0.1.1 github.com/UnnoTed/fileb0x v1.1.4 - github.com/glauth/glauth v1.1.3-0.20200226140131-592fdf4e7938 + github.com/coreos/etcd v3.3.18+incompatible + github.com/glauth/glauth v1.1.3-0.20200226203055-887c62684200 github.com/go-logr/logr v0.1.0 github.com/micro/cli/v2 v2.1.1 github.com/oklog/run v1.0.0 @@ -20,3 +21,5 @@ require ( github.com/spf13/viper v1.5.0 go.opencensus.io v0.22.2 ) + +replace github.com/glauth/glauth => ../glauth diff --git a/pkg/command/server.go b/pkg/command/server.go index 79d80d60fd..c9d11a12a2 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -164,22 +164,29 @@ func Server(cfg *config.Config) *cli.Command { if err != nil { logger.Info(). Err(err). - Str("transport", "http"). + Str("transport", "ldap"). Msg("Failed to initialize server") return err } gr.Add(func() error { - server.ListenAndServe() - return nil + err := make(chan error) + select { + case <-ctx.Done(): + return nil + case err <- server.ListenAndServe(): + return <-err + } }, func(_ error) { logger.Info(). - Str("transport", "http"). + Str("transport", "ldap"). Msg("Shutting down server") + server.Shutdown() cancel() }) + } { From d06a0de75ff79d4c88b4e50e148582aa0ebbffe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 26 Feb 2020 22:23:07 +0100 Subject: [PATCH 4/9] add cert and key config options MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/command/server.go | 2 ++ pkg/config/config.go | 9 ++++++++- pkg/flagset/flagset.go | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index c9d11a12a2..def13364b3 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -144,6 +144,8 @@ func Server(cfg *config.Config) *cli.Command { LDAPS: glauthcfg.LDAPS{ Enabled: cfg.Ldaps.Enabled, Listen: cfg.Ldaps.Address, + Cert: cfg.Ldaps.Cert, + Key: cfg.Ldaps.Key, }, Backend: glauthcfg.Backend{ Datastore: cfg.Backend.Datastore, diff --git a/pkg/config/config.go b/pkg/config/config.go index 666a773301..bf99a62a5a 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -37,6 +37,13 @@ type Ldap struct { Enabled bool } +// Ldaps defined the available LDAPS configuration. +type Ldaps struct { + Ldap + Cert string + Key string +} + // Backend defined the available backend configuration. type Backend struct { Datastore string @@ -57,7 +64,7 @@ type Config struct { HTTP HTTP Tracing Tracing Ldap Ldap - Ldaps Ldap + Ldaps Ldaps Backend Backend } diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index 1dda6d8e7e..d5f8133b7d 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -145,6 +145,20 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { EnvVars: []string{"GLAUTH_LDAPS_ENABLED"}, Destination: &cfg.Ldaps.Enabled, }, + &cli.StringFlag{ + Name: "ldaps-cert", + Value: "certs/server.crt", + Usage: "path to ldaps certificate in PEM format", + EnvVars: []string{"GLAUTH_LDAPS_CERT"}, + Destination: &cfg.Ldaps.Cert, + }, + &cli.StringFlag{ + Name: "ldaps-key", + Value: "certs/server.key", + Usage: "path to ldaps key in PEM format", + EnvVars: []string{"GLAUTH_LDAPS_KEY"}, + Destination: &cfg.Ldaps.Key, + }, &cli.StringFlag{ Name: "backend-datastore", From 5152815992b1c5593564eb39ca808b5dbf4eecc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 28 Feb 2020 09:56:06 +0100 Subject: [PATCH 5/9] fix flagset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/flagset/flagset.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index d5f8133b7d..bdfabdb27a 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -206,7 +206,7 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { Value: "sshPublicKey", Usage: "ssh key attribute for entries to expose", EnvVars: []string{"GLAUTH_BACKEND_SSH_KEY_ATTR"}, - Destination: &cfg.Backend.GroupFormat, + Destination: &cfg.Backend.SSHKeyAttr, }, &cli.BoolFlag{ Name: "backend-use-graphapi", From ba81e16361e36f89e0302bc82afbe1b0da1bacfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 28 Feb 2020 09:58:53 +0100 Subject: [PATCH 6/9] tidy deps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 4 +--- go.sum | 7 +------ 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 822e1d5aad..259fef3905 100644 --- a/go.mod +++ b/go.mod @@ -7,12 +7,10 @@ require ( contrib.go.opencensus.io/exporter/ocagent v0.6.0 contrib.go.opencensus.io/exporter/zipkin v0.1.1 github.com/UnnoTed/fileb0x v1.1.4 - github.com/coreos/etcd v3.3.18+incompatible - github.com/glauth/glauth v1.1.3-0.20200226203055-887c62684200 + github.com/glauth/glauth v1.1.3-0.20200227092648-29cf0216946b github.com/go-logr/logr v0.1.0 github.com/micro/cli/v2 v2.1.1 github.com/oklog/run v1.0.0 - github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 github.com/openzipkin/zipkin-go v0.2.2 github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/restic/calens v0.2.0 diff --git a/go.sum b/go.sum index ea76dc4e87..c6d288e299 100644 --- a/go.sum +++ b/go.sum @@ -82,7 +82,6 @@ github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvF github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/butonic/zerologr v0.0.0-20191210074216-d798ee237d84/go.mod h1:Jw3eYm4TLfPMNKzimBDxXceOJhFF7Oix/zd2PTK3UrM= github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= @@ -167,10 +166,6 @@ github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= -github.com/glauth/glauth v1.1.2 h1:BCbXV8f0zELcEOK9+YdPlYcEkI4iAz18ac7jDbcLoOE= -github.com/glauth/glauth v1.1.2/go.mod h1:QfLlWZurvnFao/aEFuZ4NGj34ncrVGBBK7bRXmyOeag= -github.com/glauth/glauth v1.1.3-0.20200226140131-592fdf4e7938 h1:vlFGzeg1qlFIKwznLIVOTTwo1eM9I4dxBUVxiC7R92k= -github.com/glauth/glauth v1.1.3-0.20200226140131-592fdf4e7938/go.mod h1:ygO1z1pcp79iBrjbA6vqrsUxIonStjBncosl2a9/Dx8= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= @@ -290,7 +285,6 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jteeuwen/go-bindata v3.0.7+incompatible/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= @@ -810,6 +804,7 @@ gopkg.in/amz.v1 v1.0.0-20150111123259-ad23e96a31d2/go.mod h1:F0YaN4yi2XekmElKkPY gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= From 35922739b5208260320c35b010b4185dc06dfe51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 28 Feb 2020 10:01:41 +0100 Subject: [PATCH 7/9] update changelog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/initial-release.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/changelog/unreleased/initial-release.md b/changelog/unreleased/initial-release.md index fe74513426..1405ca38ca 100644 --- a/changelog/unreleased/initial-release.md +++ b/changelog/unreleased/initial-release.md @@ -1,6 +1,5 @@ -Change: Initial release of basic version +Enhancement: Initial release of basic version -Just prepare an initial basic version to serve a glauth world API that can be -used by Phoenix or other extensions. +Just prepare an initial basic version to provide a glauth service. -https://github.com/owncloud/ocis-glauth/issues/7 +https://github.com/owncloud/ocis-glauth/pull/1 From 3640563c9b3b76dd6adcdc5b0ab649c0bc250cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 28 Feb 2020 10:16:43 +0100 Subject: [PATCH 8/9] fix deps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 2 -- go.sum | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 259fef3905..503e84ae66 100644 --- a/go.mod +++ b/go.mod @@ -19,5 +19,3 @@ require ( github.com/spf13/viper v1.5.0 go.opencensus.io v0.22.2 ) - -replace github.com/glauth/glauth => ../glauth diff --git a/go.sum b/go.sum index c6d288e299..e576887633 100644 --- a/go.sum +++ b/go.sum @@ -166,6 +166,8 @@ github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= +github.com/glauth/glauth v1.1.3-0.20200227092648-29cf0216946b h1:JINISFCv1eN8uZvYzxExh0zKfFt+tg4MmVOk1VXMGA0= +github.com/glauth/glauth v1.1.3-0.20200227092648-29cf0216946b/go.mod h1:ygO1z1pcp79iBrjbA6vqrsUxIonStjBncosl2a9/Dx8= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= From 30d6ec24ba36b88df12d3671a5afb1c8d3f82b8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 28 Feb 2020 17:05:25 +0100 Subject: [PATCH 9/9] update glauth to fix logs and provisioning api MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 503e84ae66..df1c3f54d1 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( contrib.go.opencensus.io/exporter/ocagent v0.6.0 contrib.go.opencensus.io/exporter/zipkin v0.1.1 github.com/UnnoTed/fileb0x v1.1.4 - github.com/glauth/glauth v1.1.3-0.20200227092648-29cf0216946b + github.com/glauth/glauth v1.1.3-0.20200228160118-2d4f5d547682 github.com/go-logr/logr v0.1.0 github.com/micro/cli/v2 v2.1.1 github.com/oklog/run v1.0.0 diff --git a/go.sum b/go.sum index e576887633..803c317a23 100644 --- a/go.sum +++ b/go.sum @@ -166,8 +166,8 @@ github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= -github.com/glauth/glauth v1.1.3-0.20200227092648-29cf0216946b h1:JINISFCv1eN8uZvYzxExh0zKfFt+tg4MmVOk1VXMGA0= -github.com/glauth/glauth v1.1.3-0.20200227092648-29cf0216946b/go.mod h1:ygO1z1pcp79iBrjbA6vqrsUxIonStjBncosl2a9/Dx8= +github.com/glauth/glauth v1.1.3-0.20200228160118-2d4f5d547682 h1:8qan0vNLF7i9Wq07mhTn/60hXEPdGTYJnR82P4X818s= +github.com/glauth/glauth v1.1.3-0.20200228160118-2d4f5d547682/go.mod h1:ygO1z1pcp79iBrjbA6vqrsUxIonStjBncosl2a9/Dx8= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0=