From 1e0f04dcbfe0257dc29d8f73c3ffadb6fb4735d3 Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Wed, 11 Mar 2020 19:29:37 +0100 Subject: [PATCH] Start proxy with ocis server command #136 --- .../unreleased/start-proxy-with-server.md | 7 ++++ go.mod | 12 ++++-- go.sum | 20 +++++++++ pkg/command/proxy.go | 42 +++++++++++++++++++ pkg/config/config.go | 3 ++ pkg/micro/runtime/runtime.go | 1 + 6 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 changelog/unreleased/start-proxy-with-server.md create mode 100644 pkg/command/proxy.go diff --git a/changelog/unreleased/start-proxy-with-server.md b/changelog/unreleased/start-proxy-with-server.md new file mode 100644 index 0000000000..5cfe49642b --- /dev/null +++ b/changelog/unreleased/start-proxy-with-server.md @@ -0,0 +1,7 @@ +Change: Start ocis-proxy with the ocis server command + +Starts the proxy in single binary mode (./ocis server) on port 9200. The proxy serves as a single-entry point +for all http-clients. + +https://github.com/owncloud/ocis/issues/119 +https://github.com/owncloud/ocis/issues/136 diff --git a/go.mod b/go.mod index 9b9af12fad..b29aa14484 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,14 @@ require ( contrib.go.opencensus.io/exporter/jaeger v0.2.0 contrib.go.opencensus.io/exporter/ocagent v0.6.0 contrib.go.opencensus.io/exporter/zipkin v0.1.1 + github.com/Masterminds/sprig/v3 v3.0.2 // indirect github.com/chzyer/logex v1.1.10 // indirect github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 // indirect + github.com/huandu/xstrings v1.3.0 // indirect github.com/micro/cli/v2 v2.1.2-0.20200203150404-894195727d9c - github.com/micro/go-micro/v2 v2.0.1-0.20200207205803-ef537270add3 + github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e github.com/micro/micro/v2 v2.0.1-0.20200210100719-f38a1d8d5348 + github.com/mitchellh/reflectwalk v1.0.1 // indirect github.com/openzipkin/zipkin-go v0.2.2 github.com/owncloud/ocis-devldap v0.0.0-20200210154914-6c796445c1bf github.com/owncloud/ocis-graph v0.0.0-20200217115956-172417259283 @@ -19,12 +22,13 @@ require ( github.com/owncloud/ocis-konnectd v0.0.0-20200303180152-937016f63393 github.com/owncloud/ocis-ocs v0.0.0-20200207130609-800a64d45fac github.com/owncloud/ocis-phoenix v0.1.1-0.20200213204418-06f50c42c225 - github.com/owncloud/ocis-pkg/v2 v2.0.1 + github.com/owncloud/ocis-pkg/v2 v2.0.2 + github.com/owncloud/ocis-proxy v0.0.0-20200310100127-5a38d286e52c github.com/owncloud/ocis-reva v0.0.0-20200213202552-584d47daa8bc github.com/owncloud/ocis-webdav v0.0.0-20200210113150-6c4d498c38b0 - github.com/spf13/viper v1.6.1 + github.com/spf13/viper v1.6.2 go.opencensus.io v0.22.2 - golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d // indirect + golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4 // indirect golang.org/x/net v0.0.0-20200226121028-0de0cce0169b // indirect golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae // indirect stash.kopano.io/kc/konnect v0.29.0 // indirect diff --git a/go.sum b/go.sum index 2ed6fb9e3c..8b9c09966b 100644 --- a/go.sum +++ b/go.sum @@ -61,8 +61,12 @@ github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RP 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= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.0.3 h1:znjIyLfpXEDQjOIEWh+ehwpTU14UzUPub3c3sm36u14= +github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig/v3 v3.0.1 h1:RuaOafp+8qOLUPX1lInLfUrLc1MEVbnz7a40RLoixKY= github.com/Masterminds/sprig/v3 v3.0.1/go.mod h1:Cp7HwZjmqKrC+Y7XqSJOU2yRvAJRGLiohfgz5ZJj8+4= +github.com/Masterminds/sprig/v3 v3.0.2 h1:wz22D0CiSctrliXiI9ZO3HoNApweeRGftyDN+BQa3B8= +github.com/Masterminds/sprig/v3 v3.0.2/go.mod h1:oesJ8kPONMONaZgtiHNzUShJbksypC5kWczhZAf6+aU= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= @@ -482,6 +486,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= +github.com/huandu/xstrings v1.3.0 h1:gvV6jG9dTgFEncxo+AF7PH6MZXi/vZl25owA/8Dg8Wo= +github.com/huandu/xstrings v1.3.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= @@ -616,6 +622,8 @@ github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXp github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= github.com/micro/go-micro/v2 v2.0.1-0.20200207205803-ef537270add3 h1:gqwsIF3qVBkSi30WQYPCYCnLUph7ehDFGu/YgIrRfZo= github.com/micro/go-micro/v2 v2.0.1-0.20200207205803-ef537270add3/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= +github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e h1:EXYgiOLVc7zkUCIsAc++GQiOvPRh/gaGl++fqY1807g= +github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= github.com/micro/go-plugins/wrapper/monitoring/prometheus/v2 v2.0.1 h1:07Xn/7VTN+KV8YtAfN5Q3PgCW5Rvdh3dhAEy5PIZ7VQ= @@ -660,6 +668,8 @@ github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQz github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -711,6 +721,8 @@ github.com/ogier/pflag v0.0.1 h1:RW6JSWSu/RkSatfcLtogGfFgpim5p7ARQ10ECk5O750= github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oleiade/reflections v1.0.0 h1:0ir4pc6v8/PJ0yw5AEtMddfXpWBXg9cnG7SgSoJuCgY= github.com/oleiade/reflections v1.0.0/go.mod h1:RbATFBbKYkVdqmSFtx13Bb/tVhR0lgOBXunWTZKeL4w= @@ -768,6 +780,10 @@ github.com/owncloud/ocis-phoenix v0.1.1-0.20200213204418-06f50c42c225 h1:5GK6AAx github.com/owncloud/ocis-phoenix v0.1.1-0.20200213204418-06f50c42c225/go.mod h1:8P6Rc+/NYjXIgjFauZu5xFVwto6dtECThdI8E1DDhmA= github.com/owncloud/ocis-pkg/v2 v2.0.1 h1:3ISEtfjAz4pDFczTggIJwKuft3bVsAp1C7dFY9BBPEs= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= +github.com/owncloud/ocis-pkg/v2 v2.0.2 h1:aHqvuRXMFsImO/uwL9v8Ul+PByPFLZp/Rdj4MXAhI9A= +github.com/owncloud/ocis-pkg/v2 v2.0.2/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= +github.com/owncloud/ocis-proxy v0.0.0-20200310100127-5a38d286e52c h1:VsnptHq9pA5/1DCMRN2mouw65zQR+oYmWzEqmVhjeg4= +github.com/owncloud/ocis-proxy v0.0.0-20200310100127-5a38d286e52c/go.mod h1:uSLKt500tePkW3g37hWPFBEJfIQhaJhrMdI6szUnCW8= github.com/owncloud/ocis-reva v0.0.0-20200213202552-584d47daa8bc h1:62tQ2HhTLjKe8d1tkLICAk82XYOEd2Y7NkUkWxfdtXQ= github.com/owncloud/ocis-reva v0.0.0-20200213202552-584d47daa8bc/go.mod h1:1egXhucD6PLAcUvFyXUrixpLp2GloIPSY+Ybz2xLxSI= github.com/owncloud/ocis-webdav v0.0.0-20200210113150-6c4d498c38b0 h1:/WX5lRTZJD9qjMwiveypK0s5KxEzBDnwQSnZMXyll1c= @@ -924,6 +940,8 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.5.0/go.mod h1:AkYRkVJF8TkSG/xet6PzXX+l39KhhXa2pdqVSxnTcn4= github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/spf13/viper v1.6.2 h1:7aKfF+e8/k68gda3LOjo5RxiUqddoFxVq4BKBPrxk5E= +github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1052,6 +1070,8 @@ golang.org/x/crypto v0.0.0-20200210222208-86ce3cb69678 h1:wCWoJcFExDgyYx2m2hpHgw golang.org/x/crypto v0.0.0-20200210222208-86ce3cb69678/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d h1:1ZiEyfaQIg3Qh0EoqpwAakHVhecoE5wlSg5GjnafJGw= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4 h1:QmwruyY+bKbDDL0BaglrbZABEali68eoMFhTZpCjYVA= +golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/pkg/command/proxy.go b/pkg/command/proxy.go new file mode 100644 index 0000000000..fa8b754840 --- /dev/null +++ b/pkg/command/proxy.go @@ -0,0 +1,42 @@ +package command + +import ( + "github.com/micro/cli/v2" + "github.com/owncloud/ocis-proxy/pkg/command" + svcconfig "github.com/owncloud/ocis-proxy/pkg/config" + "github.com/owncloud/ocis-proxy/pkg/flagset" + "github.com/owncloud/ocis/pkg/config" + "github.com/owncloud/ocis/pkg/register" +) + +// ProxyCommand is the entry point for the proxy command. +func ProxyCommand(cfg *config.Config) *cli.Command { + return &cli.Command{ + Name: "proxy", + Usage: "Start proxy server", + Category: "Extensions", + Flags: flagset.ServerWithConfig(cfg.Proxy), + Action: func(c *cli.Context) error { + serverConfig := configureProxy(cfg) + serverCommand := command.Server(serverConfig) + + if err := serverCommand.Before(c); err != nil { + return err + } + + return cli.HandleAction(serverCommand.Action, c) + }, + } +} + +func configureProxy(cfg *config.Config) *svcconfig.Config { + cfg.Proxy.Log.Level = cfg.Log.Level + cfg.Proxy.Log.Pretty = cfg.Log.Pretty + cfg.Proxy.Log.Color = cfg.Log.Color + + return cfg.Proxy +} + +func init() { + register.AddCommand(ProxyCommand) +} diff --git a/pkg/config/config.go b/pkg/config/config.go index c60deb71a2..2649d9fa39 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -8,6 +8,7 @@ import ( konnectd "github.com/owncloud/ocis-konnectd/pkg/config" ocs "github.com/owncloud/ocis-ocs/pkg/config" phoenix "github.com/owncloud/ocis-phoenix/pkg/config" + proxy "github.com/owncloud/ocis-proxy/pkg/config" reva "github.com/owncloud/ocis-reva/pkg/config" webdav "github.com/owncloud/ocis-webdav/pkg/config" ) @@ -65,6 +66,7 @@ type Config struct { WebDAV *webdav.Config Reva *reva.Config DevLDAP *devldap.Config + Proxy *proxy.Config } // New initializes a new configuration with or without defaults. @@ -79,5 +81,6 @@ func New() *Config { WebDAV: webdav.New(), Reva: reva.New(), DevLDAP: devldap.New(), + Proxy: proxy.New(), } } diff --git a/pkg/micro/runtime/runtime.go b/pkg/micro/runtime/runtime.go index 8129e1a642..9c5d4e91a3 100644 --- a/pkg/micro/runtime/runtime.go +++ b/pkg/micro/runtime/runtime.go @@ -49,6 +49,7 @@ var ( "reva-storage-oc-data", "devldap", "konnectd", + "proxy", } )