aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclsr <clsr@clsr.net>2016-11-15 16:57:51 +0100
committerclsr <clsr@clsr.net>2016-11-15 19:28:55 +0100
commitd3536e6741351fb13a9f6a327637bc2a4619fea4 (patch)
treef9cf707ed2b3daf6bea2d7a07f0c1ce9efbe5c23
parent1e55e61786eaedd59c067f4306fb8427dc92ef52 (diff)
downloadgomf-d3536e6741351fb13a9f6a327637bc2a4619fea4.tar.gz
gomf-d3536e6741351fb13a9f6a327637bc2a4619fea4.zip
Move storage to its own packagev0.5.0
-rw-r--r--api.go11
-rw-r--r--main.go25
-rw-r--r--storage/magic.go (renamed from magic.go)2
-rw-r--r--storage/storage.go (renamed from storage.go)2
-rw-r--r--website.go4
5 files changed, 23 insertions, 21 deletions
diff --git a/api.go b/api.go
index 464d110..46563dd 100644
--- a/api.go
+++ b/api.go
@@ -6,6 +6,7 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
+ "git.clsr.net/gomf/storage"
"io"
"mime"
"net/http"
@@ -17,9 +18,9 @@ import (
)
func handleFile(w http.ResponseWriter, r *http.Request) {
- f, hash, size, modtime, err := storage.Get(strings.TrimLeft(r.URL.Path, "/"))
+ f, hash, size, modtime, err := uploads.Get(strings.TrimLeft(r.URL.Path, "/"))
if err != nil {
- if _, ok := err.(ErrNotFound); ok {
+ if _, ok := err.(storage.ErrNotFound); ok {
http.Error(w, err.Error(), http.StatusNotFound)
} else {
http.Error(w, err.Error(), http.StatusInternalServerError)
@@ -94,13 +95,13 @@ func handleUpload(w http.ResponseWriter, r *http.Request) {
continue
}
- id, hash, size, err := storage.New(part, part.FileName())
+ id, hash, size, err := uploads.New(part, part.FileName())
if err != nil {
resp.ErrorCode = http.StatusInternalServerError
resp.Description = err.Error()
- if _, ok := err.(ErrTooLarge); ok {
+ if _, ok := err.(storage.ErrTooLarge); ok {
resp.ErrorCode = http.StatusRequestEntityTooLarge
- } else if _, ok := err.(ErrForbidden); ok {
+ } else if _, ok := err.(storage.ErrForbidden); ok {
resp.ErrorCode = http.StatusForbidden
}
break
diff --git a/main.go b/main.go
index d66416f..e8ff33b 100644
--- a/main.go
+++ b/main.go
@@ -3,13 +3,14 @@ package main
import (
"flag"
"fmt"
+ "git.clsr.net/gomf/storage"
"math/rand"
"net/http"
"strings"
"time"
)
-var storage *Storage
+var uploads *storage.Storage
var (
uploadUrl string
@@ -69,12 +70,12 @@ func main() {
listenHttps := flag.String("https", "", "address to listen on for HTTPS")
cert := flag.String("cert", "", "path to TLS certificate (for HTTPS)")
key := flag.String("key", "", "path to TLS key (for HTTPS)")
- maxSize := flag.Int64("max-size", DefaultMaxSize, "max filesize in bytes")
+ maxSize := flag.Int64("max-size", storage.DefaultMaxSize, "max filesize in bytes")
filterMime := flag.String("filter-mime", "application/x-dosexec,application/x-msdos-program", "comma-separated list of filtered MIME types")
filterExt := flag.String("filter-ext", "exe,dll,msi,scr,com,pif", "comma-separated list of filtered file extensions")
whitelist := flag.Bool("whitelist", false, "use filter as a whitelist instead of blacklist")
grill := flag.Bool("grill", false, "enable grills")
- idLength := flag.Int("id-length", DefaultIdLength, "length of uploaded file IDs")
+ idLength := flag.Int("id-length", storage.DefaultIdLength, "length of uploaded file IDs")
idCharset := flag.String("id-charset", "", "charset for uploaded file IDs (default lowercase letters a-z)")
enableLog := flag.Bool("log", false, "enable logging")
logIP := flag.Bool("log-ip", false, "log IP addresses")
@@ -91,17 +92,17 @@ func main() {
initWebsite()
- storage = NewStorage("upload")
- storage.FilterExt = strings.Split(*filterExt, ",")
- for i := range storage.FilterExt {
- storage.FilterExt[i] = "." + storage.FilterExt[i]
+ uploads = storage.NewStorage("upload")
+ uploads.FilterExt = strings.Split(*filterExt, ",")
+ for i := range uploads.FilterExt {
+ uploads.FilterExt[i] = "." + uploads.FilterExt[i]
}
- storage.FilterMime = strings.Split(*filterMime, ",")
- storage.Whitelist = *whitelist
- storage.IdLength = *idLength
- storage.MaxSize = *maxSize
+ uploads.FilterMime = strings.Split(*filterMime, ",")
+ uploads.Whitelist = *whitelist
+ uploads.IdLength = *idLength
+ uploads.MaxSize = *maxSize
if *idCharset != "" {
- storage.IdCharset = *idCharset
+ uploads.IdCharset = *idCharset
}
if !*enableLog {
diff --git a/magic.go b/storage/magic.go
index c93e15d..16f655d 100644
--- a/magic.go
+++ b/storage/magic.go
@@ -1,4 +1,4 @@
-package main
+package storage
// #cgo LDFLAGS: -lmagic
// #include <stdlib.h>
diff --git a/storage.go b/storage/storage.go
index c0e8130..3e2b816 100644
--- a/storage.go
+++ b/storage/storage.go
@@ -1,4 +1,4 @@
-package main
+package storage
import (
"crypto/sha1"
diff --git a/website.go b/website.go
index 7cc32c1..cf10586 100644
--- a/website.go
+++ b/website.go
@@ -80,8 +80,8 @@ func newContext() pageContext {
SiteName: siteName,
Abuse: abuseMail,
Contact: contactMail,
- MaxSizeBytes: storage.MaxSize,
- MaxSize: humanize(storage.MaxSize),
+ MaxSizeBytes: uploads.MaxSize,
+ MaxSize: humanize(uploads.MaxSize),
Pages: pages,
}
}