Skip to content

Commit

Permalink
Option to test entry name against regular expression
Browse files Browse the repository at this point in the history
  • Loading branch information
dsamarin committed May 27, 2018
1 parent 2373e8c commit 7eb3d43
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
14 changes: 11 additions & 3 deletions admin.go
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -401,6 +401,14 @@ func (a *AdminHandler) ServeNew(w http.ResponseWriter, r *http.Request) {
entry.Name = id.String() entry.Name = id.String()
} }


if a.App.Config.disallowRegexp != nil {
// Check entry name against Disallow configuration
if a.App.Config.disallowRegexp.MatchString(entry.Name) {
http.Error(w, "Entry name has been disallowed", 500)
return
}
}

// Source information // Source information
switch form.Source { switch form.Source {
case EntrySourceURL: case EntrySourceURL:
Expand Down Expand Up @@ -466,7 +474,7 @@ func (a *AdminHandler) ServeNew(w http.ResponseWriter, r *http.Request) {
if err := a.App.DB.Update(entry, claims); err != nil { if err := a.App.DB.Update(entry, claims); err != nil {
log.Printf("Error creating entry %s: %s", entry.Name, err) log.Printf("Error creating entry %s: %s", entry.Name, err)
} else { } else {
log.Printf("Created entry %s", entry) log.Printf("Created entry %s with %s", entry, RealRemoteIP(r))
} }


redirectPage := a.App.Config.Base + "admin/my" redirectPage := a.App.Config.Base + "admin/my"
Expand Down Expand Up @@ -533,7 +541,7 @@ func (a *AdminHandler) ServeList(w http.ResponseWriter, r *http.Request) {
if err != nil { if err != nil {
log.Println(err) log.Println(err)
} else { } else {
log.Printf("Removed entry: %s", form.Name) log.Printf("Removed entry %q with IP %s", form.Name, RealRemoteIP(r))
} }
} }


Expand All @@ -542,7 +550,7 @@ func (a *AdminHandler) ServeList(w http.ResponseWriter, r *http.Request) {
if err != nil { if err != nil {
log.Println(err) log.Println(err)
} else { } else {
log.Printf("Cleared all entries with token %q", form.Token) log.Printf("Cleared all entries with token %q from %s", form.Token, RealRemoteIP(r))
} }


} }
Expand Down
2 changes: 2 additions & 0 deletions config.yml
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ uploadmaxsize: 1000000


# Boolean value inidicating whether everyone has can manage their own entries # Boolean value inidicating whether everyone has can manage their own entries
public: false public: false
# Regular expression to match entry name against to disallow
disallow: ^(admin|.well-known|sitemap.xml)


selfdestruct: selfdestruct:
# Whether to allow self-destruct # Whether to allow self-destruct
Expand Down
14 changes: 13 additions & 1 deletion zerodrop.go
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package main


import ( import (
"context" "context"
"fmt"
"log" "log"
"net/http" "net/http"
"os" "os"
"regexp"


"github.com/oftn-oswg/socket" "github.com/oftn-oswg/socket"
) )
Expand All @@ -25,7 +27,9 @@ type ZerodropConfig struct {
UploadPermissions uint32 `default:"0600"` UploadPermissions uint32 `default:"0600"`
UploadMaxSize uint64 `default:"1000000"` UploadMaxSize uint64 `default:"1000000"`


Public bool `default:"false"` Public bool `default:"false"`
Disallow string `default:""`
disallowRegexp *regexp.Regexp


SelfDestruct struct { SelfDestruct struct {
Enable bool `default:"false"` Enable bool `default:"false"`
Expand Down Expand Up @@ -63,6 +67,14 @@ func NewZerodropApp(config *ZerodropConfig) (app *ZerodropApp, err error) {
DB: &ZerodropDB{}, DB: &ZerodropDB{},
} }


if config.Disallow != "" {
disallowRegexp, err := regexp.Compile(config.Disallow)
if err != nil {
return nil, fmt.Errorf("parsing Disallow field: %s", err)
}
config.disallowRegexp = disallowRegexp
}

app.AdminHandler, err = NewAdminHandler(app) app.AdminHandler, err = NewAdminHandler(app)
if err != nil { if err != nil {
return nil, err return nil, err
Expand Down

0 comments on commit 7eb3d43

Please sign in to comment.