Skip to content

Instantly share code, notes, and snippets.

@refs
Created August 17, 2020 20:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save refs/732af137bf5ff492b673f37fd8ee433d to your computer and use it in GitHub Desktop.
Save refs/732af137bf5ff492b673f37fd8ee433d to your computer and use it in GitHub Desktop.
diff --git a/go.mod b/go.mod
index bb61c09..d3a63d1 100644
--- a/go.mod
+++ b/go.mod
@@ -6,6 +6,7 @@ require (
contrib.go.opencensus.io/exporter/jaeger v0.2.1
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 // indirect
github.com/go-chi/chi v4.1.2+incompatible
github.com/micro/cli/v2 v2.1.2
github.com/oklog/run v1.0.0
@@ -16,4 +17,4 @@ require (
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2
)
-replace google.golang.org/grpc => google.golang.org/grpc v1.26.0
+replace google.golang.org/grpc => google.golang.org/grpc v1.26.0
\ No newline at end of file
diff --git a/go.sum b/go.sum
index d39dab0..8b42111 100644
--- a/go.sum
+++ b/go.sum
@@ -68,6 +68,8 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE
github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks=
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
+github.com/UnnoTed/fileb0x v1.1.4 h1:IUgFzgBipF/ujNx9wZgkrKOF3oltUuXMSoaejrBws+A=
+github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ9cgOiZs=
github.com/ajg/form v0.0.0-20160822230020-523a5da1a92f/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k=
github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE=
@@ -102,6 +104,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r
github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
+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 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c=
@@ -209,6 +213,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo
github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+4np9qfPbb+znGc=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
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/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=
github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
github.com/go-acme/lego/v3 v3.4.0/go.mod h1:xYbLDuxq3Hy4bMUT1t9JIuz6GWIWb3m5X+TeTHYaT7M=
@@ -589,6 +595,10 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA=
github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w=
+github.com/labstack/echo v3.2.1+incompatible h1:J2M7YArHx4gi8p/3fDw8tX19SXhBCoRpviyAZSN3I88=
+github.com/labstack/echo v3.2.1+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s=
+github.com/labstack/gommon v0.2.7 h1:2qOPq/twXDrQ6ooBGrn3mrmVOC+biLlatwgIu8lbzRM=
+github.com/labstack/gommon v0.2.7/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA=
@@ -628,6 +638,7 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx
github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
+github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
@@ -655,6 +666,9 @@ github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0=
+github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
+github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=
+github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y=
github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
@@ -698,6 +712,8 @@ github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/Hzq
github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ=
github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ=
github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw=
+github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840=
+github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ=
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/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
@@ -920,6 +936,10 @@ github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IA
github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 h1:gKMu1Bf6QINDnvyZuTaACm9ofY+PRh+5vFz4oxBZeF8=
+github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw=
github.com/vimeo/go-util v1.2.0/go.mod h1:s13SMDTSO7AjH1nbgp707mfN5JFIWUFDU5MDDuRRtKs=
github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA=
github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70=
@@ -1098,6 +1118,7 @@ golang.org/x/sys v0.0.0-20180921163948-d47a0f339242/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20180927150500-dad3d9fb7b6e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181005133103-4497e2df6f9e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181011152604-fa43e7bc11ba/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181021155630-eda9bb28ed51/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181022134430-8a28ead16f52/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181024145615-5cd93ef61a7c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go
index c25dca2..03dea6c 100644
--- a/pkg/assets/embed.go
+++ b/pkg/assets/embed.go
@@ -1,5 +1,5 @@
-// Code generated by fileb0x at "2020-08-17 18:06:40.337581 +0200 CEST m=+0.007931277" from config file "embed.yml" DO NOT EDIT.
-// modification hash(a008098be580d534e88b0910900c0b14.8058aec596c5fb73022d09bb97af796e)
+// Code generated by fileb0x at "2020-08-17 20:53:16.217605 +0200 CEST m=+0.008764704" from config file "embed.yml" DO NOT EDIT.
+// modification hash(a863fcd32f505cc5e934d6fdb40333d4.8058aec596c5fb73022d09bb97af796e)
package assets
diff --git a/pkg/command/server.go b/pkg/command/server.go
index 6523d91..66785c3 100644
--- a/pkg/command/server.go
+++ b/pkg/command/server.go
@@ -10,14 +10,13 @@ import (
"contrib.go.opencensus.io/exporter/jaeger"
"contrib.go.opencensus.io/exporter/ocagent"
"contrib.go.opencensus.io/exporter/zipkin"
- "github.com/micro/cli/v2"
+ cli "github.com/micro/cli/v2"
"github.com/oklog/run"
openzipkin "github.com/openzipkin/zipkin-go"
zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
"github.com/owncloud/ocis-markdown-editor/pkg/config"
"github.com/owncloud/ocis-markdown-editor/pkg/flagset"
"github.com/owncloud/ocis-markdown-editor/pkg/metrics"
- "github.com/owncloud/ocis-markdown-editor/pkg/server/debug"
"github.com/owncloud/ocis-markdown-editor/pkg/server/http"
"go.opencensus.io/stats/view"
"go.opencensus.io/trace"
@@ -140,8 +139,8 @@ func Server(cfg *config.Config) *cli.Command {
http.Context(ctx),
http.Config(cfg),
http.Metrics(metrics),
- http.Flags(flagset.RootWithConfig(cfg)),
- http.Flags(flagset.ServerWithConfig(cfg)),
+ http.Flags(flagset.RootWithConfig(config.New())),
+ http.Flags(flagset.ServerWithConfig(config.New())),
)
gr.Add(func() error {
@@ -154,45 +153,6 @@ func Server(cfg *config.Config) *cli.Command {
cancel()
})
}
-
- {
- server, err := debug.Server(
- debug.Logger(logger),
- debug.Name("markdown-editor"),
- debug.Context(ctx),
- debug.Config(cfg),
- )
-
- if err != nil {
- logger.Info().
- Err(err).
- Str("transport", "debug").
- Msg("Failed to initialize server")
-
- return err
- }
-
- gr.Add(func() error {
- return server.ListenAndServe()
- }, func(_ error) {
- ctx, timeout := context.WithTimeout(ctx, 5*time.Second)
-
- defer timeout()
- defer cancel()
-
- if err := server.Shutdown(ctx); err != nil {
- logger.Info().
- Err(err).
- Str("transport", "debug").
- Msg("Failed to shutdown server")
- } else {
- logger.Info().
- Str("transport", "debug").
- Msg("Shutting down server")
- }
- })
- }
-
{
stop := make(chan os.Signal, 1)
diff --git a/pkg/server/http/server.go b/pkg/server/http/server.go
index 8464b3f..c1ad39b 100644
--- a/pkg/server/http/server.go
+++ b/pkg/server/http/server.go
@@ -1,12 +1,13 @@
package http
import (
- "github.com/go-chi/chi"
"github.com/owncloud/ocis-markdown-editor/pkg/assets"
- svc "github.com/owncloud/ocis-markdown-editor/pkg/service/v0"
+ gohttp "net/http"
+ "github.com/go-chi/chi"
"github.com/owncloud/ocis-markdown-editor/pkg/version"
- "github.com/owncloud/ocis-pkg/v2/middleware"
"github.com/owncloud/ocis-pkg/v2/service/http"
+ "path"
+ "strings"
)
// Server initializes the http service and server.
@@ -23,46 +24,50 @@ func Server(opts ...Option) http.Service {
http.Flags(options.Flags...),
)
- markdownEditor := svc.NewService()
-
- {
- markdownEditor = svc.NewInstrument(markdownEditor, options.Metrics)
- markdownEditor = svc.NewLogging(markdownEditor, options.Logger)
- markdownEditor = svc.NewTracing(markdownEditor)
- }
-
mux := chi.NewMux()
+ mux.Use(Static(
+ options.Config.HTTP.Root,
+ assets.New(
+ assets.Logger(options.Logger),
+ assets.Config(options.Config),
+ ),
+ ))
+ mux.Get("/", gohttp.HandlerFunc(func(writer gohttp.ResponseWriter, request *gohttp.Request) {
+ writer.Write([]byte("noop"))
+ }))
- mux.Use(middleware.RealIP)
- mux.Use(middleware.RequestID)
- mux.Use(middleware.Cache)
- mux.Use(middleware.Cors)
- mux.Use(middleware.Secure)
+ service.Handle("/", mux)
- mux.Use(middleware.Version(
- options.Name,
- version.String,
- ))
+ if err := service.Init(); err != nil {
+ panic(err)
+ }
+ return service
+}
- mux.Use(middleware.Logger(
- options.Logger,
- ))
+// Static is a middleware that serves static assets.
+func Static(root string, fs gohttp.FileSystem) func(gohttp.Handler) gohttp.Handler {
+ if !strings.HasSuffix(root, "/") {
+ root = root + "/"
+ }
- mux.Use(middleware.Static(
- options.Config.HTTP.Root,
- assets.New(
- assets.Logger(options.Logger),
- assets.Config(options.Config),
+ static := gohttp.StripPrefix(
+ root,
+ gohttp.FileServer(
+ fs,
),
- ))
-
- service.Handle(
- "/",
- mux,
)
- if err := service.Init(); err != nil {
- panic(err)
+ return func(next gohttp.Handler) gohttp.Handler {
+ return gohttp.HandlerFunc(func(w gohttp.ResponseWriter, r *gohttp.Request) {
+ if strings.HasPrefix(r.URL.Path, path.Join(root, "api")) {
+ next.ServeHTTP(w, r)
+ } else {
+ if strings.HasSuffix(r.URL.Path, "/") {
+ gohttp.NotFound(w, r)
+ } else {
+ static.ServeHTTP(w, r)
+ }
+ }
+ })
}
- return service
-}
+}
\ No newline at end of file
diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go
index 17e23c0..d4e0ab9 100644
--- a/pkg/service/v0/service.go
+++ b/pkg/service/v0/service.go
@@ -1,6 +1,7 @@
package svc
import (
+ "fmt"
"net/http"
"github.com/go-chi/chi"
@@ -13,14 +14,11 @@ type Service interface {
}
// NewService returns a service implementation for Service.
-func NewService(opts ...Option) Service {
- options := newOptions(opts...)
-
+func NewService(cfg *config.Config) Service {
m := chi.NewMux()
- m.Use(options.Middleware...)
svc := MarkdownEditor{
- config: options.Config,
+ config: cfg,
mux: m,
}
@@ -33,7 +31,13 @@ type MarkdownEditor struct {
mux *chi.Mux
}
+// AddMiddleware adds a middleware to the service
+func (g MarkdownEditor) AddMiddleware() {
+
+}
+
// ServeHTTP implements the Service interface.
func (g MarkdownEditor) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ fmt.Printf("here")
g.mux.ServeHTTP(w, r)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment