aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/a_server-packr.go15
-rw-r--r--server/static/generate.go3
-rw-r--r--server/static/static.go432
-rw-r--r--server/web.go6
4 files changed, 22 insertions, 434 deletions
diff --git a/server/a_server-packr.go b/server/a_server-packr.go
new file mode 100644
index 0000000..09934f8
--- /dev/null
+++ b/server/a_server-packr.go
@@ -0,0 +1,15 @@
+// Code generated by github.com/gobuffalo/packr. DO NOT EDIT
+
+package server
+
+import "github.com/gobuffalo/packr"
+
+// You can use the "packr clean" command to clean up this,
+// and any other packr generated files.
+func init() {
+ packr.PackJSONBytes("static", "css/normalize.css", "\"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\"")
+ packr.PackJSONBytes("static", "css/skeleton.css", "\"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\"")
+ packr.PackJSONBytes("static", "generate.go", "\"H4sIAAAAAAAA/ypITM5OTE9VKC5JLMlM5uLS10/Pt0pPzUstSixJVUjPVygqzVPQ09PX09OHiepD1Oql5yuoBIS7cAECAAD//7fo0FxDAAAA\"")
+ packr.PackJSONBytes("static", "js/list.min.js", "\"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\"")
+ packr.PackJSONBytes("static", "js/table.js", "\"H4sIAAAAAAAA/3xUXW8aOxB951dMnIc1CjHk5ublcjdXVxEqrUgjBaRWiiJk1gO4GHtje/lQxX+v7AV2E2hfEGufM3PmeGamhc68NBosvg2k86jR0ib8bACsuAWLmYMUvgyfvrKcW4fUz6VjFl1utMMRbnyzu8d6PlEIKQiTFUvUnr0VaLdDVJh5Y2lymaH11xGVVKSJEVtIS/IHBrlU0nkSseu5VAg0wpk1a8cU6pmfwz10SrlQxmICFXp8NmvaicxdA0A6V6AI9bFMIbc03oTi2NTYHs/m9GjEki9wFNRQVC2QLeDWHjJES8w66I25pHZofch1fRNDQrjeHz+gUrTTZFJrtP3R4wBSQMUWuB1LcRZ8cwLOLHKPYsz9WcJfJwTc5NKiO4u+PUHnVupM5lydJ/x9QrC4Mgvcq2+34bMWuIEFbqUArgVUAdkxYIZKuZfOK8sUdy48AqTwQiKJvHY/4G4/4qqQdXBN5V0znsop0ItK4uHJ6rHvXt/Vk/wrdV54cH6rMCVLbmdS/9PpEvDbHFOSzTFbTMyGwIqrAlOSXFUPCFeQENB8GYBo/VgKAlLUPtr3Sal3V+tOnueoxcNcKkGtWZcdGn9rPWox+hq6dNdoHDtTGS4e0HpHuVK1GYUUNK7h++Og733+jG8FOk+PI4Za5Ebq4GbS5mIpdTtodOyHMzpKDNYdQ0JFuEoh+Y8rlXpbYHIYJstMjpomn3qjpHUElxPFuBC9FWp/3CVJUJ206vtlD3WoBW2GCoPKYf/p2/j/QXiXKVcOu7XCvZnNFPZia4vadpoU3hv9+5VDLkvmday3XCS1PBeH/+G8Mvdw2jxYU1H22g5Glfnf9RQZzs0a9lJJtAxQOfwDoy8Fvmc0do1fAQAA//8XtlT2mAUAAA==\"")
+}
diff --git a/server/static/generate.go b/server/static/generate.go
new file mode 100644
index 0000000..ee015c5
--- /dev/null
+++ b/server/static/generate.go
@@ -0,0 +1,3 @@
+package static
+
+//go:generate go run ../../generate/static.go $PWD
diff --git a/server/static/static.go b/server/static/static.go
deleted file mode 100644
index c0e4c64..0000000
--- a/server/static/static.go
+++ /dev/null
@@ -1,432 +0,0 @@
-// Code generated by "esc -ignore \.go -prefix server -o server/static/static.go -pkg static server/static"; DO NOT EDIT.
-
-package static
-
-import (
- "bytes"
- "compress/gzip"
- "encoding/base64"
- "io/ioutil"
- "net/http"
- "os"
- "path"
- "sync"
- "time"
-)
-
-type _escLocalFS struct{}
-
-var _escLocal _escLocalFS
-
-type _escStaticFS struct{}
-
-var _escStatic _escStaticFS
-
-type _escDirectory struct {
- fs http.FileSystem
- name string
-}
-
-type _escFile struct {
- compressed string
- size int64
- modtime int64
- local string
- isDir bool
-
- once sync.Once
- data []byte
- name string
-}
-
-func (_escLocalFS) Open(name string) (http.File, error) {
- f, present := _escData[path.Clean(name)]
- if !present {
- return nil, os.ErrNotExist
- }
- return os.Open(f.local)
-}
-
-func (_escStaticFS) prepare(name string) (*_escFile, error) {
- f, present := _escData[path.Clean(name)]
- if !present {
- return nil, os.ErrNotExist
- }
- var err error
- f.once.Do(func() {
- f.name = path.Base(name)
- if f.size == 0 {
- return
- }
- var gr *gzip.Reader
- b64 := base64.NewDecoder(base64.StdEncoding, bytes.NewBufferString(f.compressed))
- gr, err = gzip.NewReader(b64)
- if err != nil {
- return
- }
- f.data, err = ioutil.ReadAll(gr)
- })
- if err != nil {
- return nil, err
- }
- return f, nil
-}
-
-func (fs _escStaticFS) Open(name string) (http.File, error) {
- f, err := fs.prepare(name)
- if err != nil {
- return nil, err
- }
- return f.File()
-}
-
-func (dir _escDirectory) Open(name string) (http.File, error) {
- return dir.fs.Open(dir.name + name)
-}
-
-func (f *_escFile) File() (http.File, error) {
- type httpFile struct {
- *bytes.Reader
- *_escFile
- }
- return &httpFile{
- Reader: bytes.NewReader(f.data),
- _escFile: f,
- }, nil
-}
-
-func (f *_escFile) Close() error {
- return nil
-}
-
-func (f *_escFile) Readdir(count int) ([]os.FileInfo, error) {
- return nil, nil
-}
-
-func (f *_escFile) Stat() (os.FileInfo, error) {
- return f, nil
-}
-
-func (f *_escFile) Name() string {
- return f.name
-}
-
-func (f *_escFile) Size() int64 {
- return f.size
-}
-
-func (f *_escFile) Mode() os.FileMode {
- return 0
-}
-
-func (f *_escFile) ModTime() time.Time {
- return time.Unix(f.modtime, 0)
-}
-
-func (f *_escFile) IsDir() bool {
- return f.isDir
-}
-
-func (f *_escFile) Sys() interface{} {
- return f
-}
-
-// FS returns a http.Filesystem for the embedded assets. If useLocal is true,
-// the filesystem's contents are instead used.
-func FS(useLocal bool) http.FileSystem {
- if useLocal {
- return _escLocal
- }
- return _escStatic
-}
-
-// Dir returns a http.Filesystem for the embedded assets on a given prefix dir.
-// If useLocal is true, the filesystem's contents are instead used.
-func Dir(useLocal bool, name string) http.FileSystem {
- if useLocal {
- return _escDirectory{fs: _escLocal, name: name}
- }
- return _escDirectory{fs: _escStatic, name: name}
-}
-
-// FSByte returns the named file from the embedded assets. If useLocal is
-// true, the filesystem's contents are instead used.
-func FSByte(useLocal bool, name string) ([]byte, error) {
- if useLocal {
- f, err := _escLocal.Open(name)
- if err != nil {
- return nil, err
- }
- b, err := ioutil.ReadAll(f)
- _ = f.Close()
- return b, err
- }
- f, err := _escStatic.prepare(name)
- if err != nil {
- return nil, err
- }
- return f.data, nil
-}
-
-// FSMustByte is the same as FSByte, but panics if name is not present.
-func FSMustByte(useLocal bool, name string) []byte {
- b, err := FSByte(useLocal, name)
- if err != nil {
- panic(err)
- }
- return b
-}
-
-// FSString is the string version of FSByte.
-func FSString(useLocal bool, name string) (string, error) {
- b, err := FSByte(useLocal, name)
- return string(b), err
-}
-
-// FSMustString is the string version of FSMustByte.
-func FSMustString(useLocal bool, name string) string {
- return string(FSMustByte(useLocal, name))
-}
-
-var _escData = map[string]*_escFile{
-
- "/static/css/normalize.css": {
- local: "server/static/css/normalize.css",
- size: 7797,
- modtime: 1508096488,
- compressed: `
-H4sIAAAAAAAC/7RZaY/cNtL+rl9RcRDYnlfd0z2Ok7yazQcjxybI4UXsxS5gDCBKLHVzhyIFkurp9mb/
-+6J46OjRTBxgnXyYtkRWFet46inq8uITUNq0TIr3uK6thcOL9WZ9Bb/DLz++hZ9Fjcoi/A474dZCXw5r
-4eIyyy4vLjK4gO0a3qADjg3rpYNGKwcNa4U8gdNgmbIri0Y0a1p8tYa/GTygciBevwGHRweWBDL+r946
-YI1DA9oIVI45oRXUe6Z2mMOdcHvdO+DCskoKtSNxANBbNPBe65bkX2bZ3rUS/p2BN2QVDCkmZlzD5QVs
-aSnAqrUrMmFFJqyCCQVsN5vP/KqruOoOq1vh/nDlfwaX/IatPuDgkpaZnVDRvkrzk7cvPC1gcx12wg9v
-f/n5JZ2vk+xEm4US5AKbAcDX/7P/prH7RhuDtYOykrq+LQflSrtgAHJotAGmTtE8lNj66Cn48Tv46vL/
-139GTsnRMSFtCfQP27ctM6cyCttuLrdbksYUh++FwUYf/5z0lgk1SNtGhzPjRC0xz5gVHPMsmpBnjdjV
-rCMP+9+9wTxrtHZo8myPjPu/O6P7Ls9Icp61qPo8U+yQZxbrsDMewoc0GlaAN/R6khHb9XgKoaRQuHrk
-MHPnXq3h16HwDkjHYRKYFDvlQ6EbKDujdwat9af/Zm90i3nyYe4d+rpDw5JLei50ntVMHZjNs7Q5zw6C
-o54fZWrttHaSIStvSAEVs0grl+ohlXyrORoFldF3Fo2Fxug2aRJqB6U3rBxqvdbKGS3telJUeKzRWtij
-2O19GhKOvASOB1GjnR6wUNo9e5dk3Dyfn0tphdcZREFjGXqDX3FODoHy3V5wjuqmBOtOhDo+Tp1BOyuC
-y+3G2/iD4Ahuj1A6bDvJHJb3K+Zyu83hDWuYEfk01+EvcHUVD5D05lkStGR9wI2fhbr9iBgR/U6n2hl2
-gorVt1QVikOtpTYhiqx24oAgyZahnlM0vO3jvpXfV4AzTNmOGVRu6vwf286QRoOMs0pI4U5wt0cFja57
-i9z7jEmrodW9RdjrA5pQNUzKIbuS8iKYlmes8Cu9Mbp3lKwT9H1L6C7xgBIstkw5UX9Ep6YE+6Osupcr
-obbT2arKvHPCSbwJLtaGo1lV2jndFrDtjsC1c8iXcptUI1h01KbLSkuOxsNHSsfP/+8R1VWeWWe02o29
-9i5WEol6SOHCWYOK+xp4o0bZ3tgChGNS1EvCD8wIVkmEcr8t4x7PKxSPndajilBQRugu/bsytoeShBFW
-4NHZD/bCfjsxUbzHAq6wvZ429/UXX2K7DC6Pxj4qaJm5PaueAj5tmg0piWX06WazKF+oWisrrCPBZPrg
-I8/RvHuWa8a29PDsZF9tPrtewPTS9lV0pe27EljTkH8JzX3jCPhaPqSpp0Tqu3NlX778jE44keBLFaDT
-1pOiAgxKRoV9/VgzIoOTeKe7Alab9UsKkX9exaoJ5bLarK/Su8sL+K6tkHPkISuU++gIG6o3QJ1QRFag
-ZIv9IwGraHeTuj/rYYlvEOY1Ut/5PAttJcqKAJNCcdj5jlkYrV1olmlrEfcl1/yVSBGF+KO7JuVyLOHF
-UvHJF0o0HiWwuRnL3mILn2+641KhcNE0aFDVaKFCd4c4lj/J1m6P5jxz96GRrFr9flXpI+WtULsiuYSe
-XfvQPPhqkXl8o5VjQo1RW66bLh5vjBDrnV46nOYcSmzLVa+Em1S+QcXRUBCXNdSayPJtxYkfYp5Z1nb3
-56pWK207VmM+/ryel/J2LKnvtWk/YlP9Sek7BVK0IsyOBVSnNITlEbgnyQJawes38E86vb4jDDmFzchJ
-WoJnotcWJdauzKFXkpzKqGEa3zA7ozs07gTCUjON3rtP+wNXogSuMHh9j4Z0reMgG6wX1vZYRBS1cZdu
-4tiLPMGBTaNBku8jG40RaB/U9GJ9VlTe7KEGnDx9OAfonaMRSKiud3mmOxenpeAu4q5HxwwG/he7VbRm
-OkqQ6fMXcfIeR2R6+GI+VAwcPdVAOZCZgFblOZOamX1WPgdhRSXxD/to6W8BPHNttGnLZDZTNYYhNIhP
-LTEkjvf8KykjlNDONNwMAQWufdCiwPuaDkz2YcKZTMRRWSBzU1vGIOZndHI2DY6ioqmPijoLfNgSmuvM
-2NmAkirh1UEL7ueIf2D1k3BQ9R58Xilu6M3n6836gtqfQXh29Rw4EsM8WVC+z6fpMJaLd6+fV8v5nDip
-CaHS/OB0PFctRX0biKJP2xLcqUMbB8lUIWkE6W0SwPy4E9OgPlFJ1r2x2kS5qW+Ilu1wRTKjnUnN0Ejs
-mRP9hZVf9I62ff0kvHhykw8lMn1L3c89uclnD21ftcI9CVNAuq9iXYfMUAQLCDKntRWsL6DTQjk0SxX2
-G67s5GYvnpeSfBGNhjO9S69vZqcbngY4iPqj9Ov712dCKTTQMc4Jxch/kSHN8GmmuSh8P/aD4srvj366
-/+KcOEHS9MBVwKiRYGaB4Go1xLq3/vUnou20cUx5+kvCKPn//iqkjN3j0C78Pm/RjPGG+9bZbOyeWjBY
-67al/k3lxBycdA9cq6cOmHPYdm7Md7dHi/OmEU/y1IJou/AiXLVyjZaEGLQdlc/IXfLknBy0gTvB3Z5E
-pcKOLqr0EcL6AYknlKe8f11ytT671UnBXuK6k3Sv91jfVvp4XgaGcaGfpFl4JF7DXHyctp1JvBfurL4X
-Rx+uWZVT7ocW+NT3BeO9d8kx/op1ZtdEdaBGQ1yOpJUDIUo4Tgjib4pCzuQgHNSst2jvqw1LSc65JnJy
-uCEP1zBlLKfSe59AuVzwn+rbCs2Tm6JIWOFLYmU7oVazrv7gBt27+Qbv9JS452R0kiTlCEtjw7bITL1v
-BEpePngnQOkySBnDW07uMFKYl4VERH4mVC17mq4IE7ynmt71Bled0bp5vuCwYN8j+Eqe9ubPPy88Phsk
-QQ8tmaD1g1I+ADWD8VCTpTLlzZJ/EiH2zo5vn1W987QkLHlODbSLKToT6MdWehzVBUjbM0vCkjnPfNce
-nFXC6MPH3D6mXXiyCqoXU/XBPRxrbQLQPRTFc9Lyrb+Phwn9CymWR2YauFQ83DB7ouSUkdP+su2OYLUU
-HD6tN/T/7I4IrrrjvAGtX7zEFjbrL67C3y/He4l7nxM8ry6X+P4S/51gbgqK1dCh7iQCM0j4X7N+t3eg
-ewfCI88J3qPR/kE6Xur4Eneo+Fkz/WCQPftQNnzcsLXRUlbMPEDhZ4PFwzPwt74nJkLt0XZyU1nCM9Z1
-UiCnOZGB6ckFlT6EXIRfX7/9rvC7BgbEFLnZsgblCSqM0MvHjy4L42U0OU1Hj96XwltiSB//Mr/V1gEN
-6xT/RF2dp8U1SpmCG55MbpZrLSXrLBIIhV/X48soL/Enx/PM7f3uGbP6bwAAAP//rsjNo3UeAAA=
-`,
- },
-
- "/static/css/skeleton.css": {
- local: "server/static/css/skeleton.css",
- size: 11458,
- modtime: 1508096488,
- compressed: `
-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
-T++HaGcN7f8DAAD//7viGWrCLAAA
-`,
- },
-
- "/static/js/list.min.js": {
- local: "server/static/js/list.min.js",
- size: 15785,
- modtime: 1508096488,
- compressed: `
-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
-/zgbhRSpPQAA
-`,
- },
-
- "/static/js/table.js": {
- local: "server/static/js/table.js",
- size: 1432,
- modtime: 1508096488,
- compressed: `
-H4sIAAAAAAAC/3xUXW8aOxB951dMnIc1CjHk5ublcjdXVxEqrUgjBaRWiiJk1gO4GHtje/lQxX+v7AV2
-E2hfEGufM3PmeGamhc68NBosvg2k86jR0ib8bACsuAWLmYMUvgyfvrKcW4fUz6VjFl1utMMRbnyzu8d6
-PlEIKQiTFUvUnr0VaLdDVJh5Y2lymaH11xGVVKSJEVtIS/IHBrlU0nkSseu5VAg0wpk1a8cU6pmfwz10
-SrlQxmICFXp8NmvaicxdA0A6V6AI9bFMIbc03oTi2NTYHs/m9GjEki9wFNRQVC2QLeDWHjJES8w66I25
-pHZofch1fRNDQrjeHz+gUrTTZFJrtP3R4wBSQMUWuB1LcRZ8cwLOLHKPYsz9WcJfJwTc5NKiO4u+PUHn
-VupM5lydJ/x9QrC4Mgvcq2+34bMWuIEFbqUArgVUAdkxYIZKuZfOK8sUdy48AqTwQiKJvHY/4G4/4qqQ
-dXBN5V0znsop0ItK4uHJ6rHvXt/Vk/wrdV54cH6rMCVLbmdS/9PpEvDbHFOSzTFbTMyGwIqrAlOSXFUP
-CFeQENB8GYBo/VgKAlLUPtr3Sal3V+tOnueoxcNcKkGtWZcdGn9rPWox+hq6dNdoHDtTGS4e0HpHuVK1
-GYUUNK7h++Og733+jG8FOk+PI4Za5Ebq4GbS5mIpdTtodOyHMzpKDNYdQ0JFuEoh+Y8rlXpbYHIYJstM
-jpomn3qjpHUElxPFuBC9FWp/3CVJUJ206vtlD3WoBW2GCoPKYf/p2/j/QXiXKVcOu7XCvZnNFPZia4va
-dpoU3hv9+5VDLkvmday3XCS1PBeH/+G8Mvdw2jxYU1H22g5Glfnf9RQZzs0a9lJJtAxQOfwDoy8Fvmc0
-do1fAQAA//8XtlT2mAUAAA==
-`,
- },
-
- "/": {
- isDir: true,
- local: "server",
- },
-
- "/static": {
- isDir: true,
- local: "server/static",
- },
-
- "/static/css": {
- isDir: true,
- local: "server/static/css",
- },
-
- "/static/js": {
- isDir: true,
- local: "server/static/js",
- },
-}
diff --git a/server/web.go b/server/web.go
index 08162d5..a32dd40 100644
--- a/server/web.go
+++ b/server/web.go
@@ -14,6 +14,8 @@ import (
"strconv"
"strings"
+ "github.com/gobuffalo/packr"
+
"github.com/pkg/errors"
"github.com/prometheus/client_golang/prometheus/promhttp"
@@ -26,7 +28,6 @@ import (
"github.com/nsheridan/cashier/lib"
"github.com/nsheridan/cashier/server/auth"
"github.com/nsheridan/cashier/server/config"
- "github.com/nsheridan/cashier/server/static"
"github.com/nsheridan/cashier/server/templates"
)
@@ -309,7 +310,8 @@ func runHTTPServer(conf *config.Server, l net.Listener) {
r.Methods("GET").Path("/admin/certs.json").Handler(appHandler{ctx, listCertsJSONHandler})
r.Methods("GET").Path("/metrics").Handler(promhttp.Handler())
r.Methods("GET").Path("/healthcheck").HandlerFunc(healthcheck)
- r.PathPrefix("/").Handler(http.FileServer(static.FS(false)))
+ box := packr.NewBox("static")
+ r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(box)))
h := handlers.LoggingHandler(logfile, r)
s := &http.Server{
Handler: h,