summaryrefslogtreecommitdiff
path: root/server.go
diff options
context:
space:
mode:
authorache <ache@ache.one>2021-02-28 21:59:58 +0100
committerache <ache@ache.one>2021-02-28 21:59:58 +0100
commit94fb8f24282be3aa41f275cb21d1eca76c1899a1 (patch)
tree7e810152655d73243711d519a01cc13801cb53b7 /server.go
parentMultiple upload (diff)
Config + 1.16 + MultiSelection
Diffstat (limited to 'server.go')
-rw-r--r--server.go71
1 files changed, 46 insertions, 25 deletions
diff --git a/server.go b/server.go
index 1bc72d2..aed70d8 100644
--- a/server.go
+++ b/server.go
@@ -9,10 +9,10 @@ import (
"html/template"
"flag"
"path"
- "syscall"
"net/url"
"errors"
- "./config"
+ "strconv"
+ "davy/config"
)
var tmpl *template.Template;
@@ -127,11 +127,16 @@ func handleGet( w http.ResponseWriter, r *http.Request, headOnly bool) {
cols = append(cols, Entry{"..", path.Dir(initPath), 0, ""})
initPath += "/"
}
+
for _, file := range fileInfo {
if file.IsDir() {
- cols = append(cols, Entry{file.Name(), initPath + file.Name(), 0, ""})
+ if config.Config.AllowHidden || file.Name()[0] != '.' {
+ cols = append(cols, Entry{file.Name(), initPath + file.Name(), 0, ""})
+ }
} else {
- files = append(files, Entry{file.Name(), initPath + file.Name(), file.Size(), normaliseSize(file.Size())})
+ if config.Config.AllowHidden || file.Name()[0] != '.' {
+ files = append(files, Entry{file.Name(), initPath + file.Name(), file.Size(), normaliseSize(file.Size())})
+ }
}
}
type Collection struct {
@@ -154,7 +159,7 @@ func handleGet( w http.ResponseWriter, r *http.Request, headOnly bool) {
func handleDelete( w http.ResponseWriter, r *http.Request) {
filename := getPath(r)
- fmt.Printf("Trying to get [%s]\n", filename)
+ fmt.Printf("Trying to delete [%s]\n", filename)
if verifyEmptyBody(w, r) != nil { return }
@@ -179,24 +184,33 @@ func handleDelete( w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNoContent) // Default success code ¯\_(ツ)_/¯ cf : 9.6.1.8
}
func handlePut( w http.ResponseWriter, r *http.Request) {
+
+
filename := r.URL.Path[1:]
if filename == "" {
filename = "."
}
+ fmt.Printf("Trying to create [%s]\n", filename)
+
stat, err := os.Stat(path.Dir(filename))
- if err == syscall.ENOENT {
+ if os.IsNotExist(err) {
w.WriteHeader(http.StatusConflict)
fmt.Fprintf(w, "Can't find [%s]\n)", path.Dir(filename))
- return
+ fmt.Fprintf(w, "Trying to create it")
+ err := os.MkdirAll(path.Dir(filename), os.ModePerm)
+ if err != nil && os.IsNotExist(err) {
+ return
+ }
} else if err != nil{
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintln(w, err.Error())
+ fmt.Printf("Error Abording on [%s] about %s\n", filename, err)
return
- } else if ! stat.IsDir(){
+ } else if !stat.IsDir(){
w.WriteHeader(http.StatusConflict)
- fmt.Fprintln(w, "¯\\_(ツ)_/¯")
+ fmt.Fprintf(w, "¯\\_(ツ)_/¯ [Error: %s]\n", err)
return
}
@@ -380,22 +394,20 @@ func handleMethod( w http.ResponseWriter, r *http.Request) {
}
}
func main() {
- var dir string
+ var dirRoot string
var help, version bool
helpString := `This is the help`
versionString := "0.0.0"
- config.ReadConfig()
-
const (
- defaultDir = "."
+ defaultRoot = "."
usageDir = "the directory to serve"
usageHelp = "show some help"
usageVersion = "show the version"
)
- flag.StringVar(&dir, "directory", defaultDir, usageDir)
- flag.StringVar(&dir, "d", defaultDir, usageDir+" (shorthand)")
+ flag.StringVar(&dirRoot, "directory", "", usageDir)
+ flag.StringVar(&dirRoot, "d", "", usageDir + " (shorthand)")
flag.BoolVar(&help, "help", false, usageHelp)
flag.BoolVar(&help, "h", false, usageHelp+" (shorthand)")
flag.BoolVar(&version, "version", false, usageVersion)
@@ -403,12 +415,6 @@ func main() {
flag.Parse()
- fmt.Println(config.Config.Port)
-
- if dir == "" {
- dir = defaultDir
- }
-
if help {
fmt.Println(helpString)
return
@@ -418,6 +424,21 @@ func main() {
return
}
+ if config.ReadConfig("") != nil {
+ if config.ReadConfig("config/config.json") != nil {
+ fmt.Println("Config file error.")
+ fmt.Println("Charging default value")
+ config.SetDefaultValue()
+ }
+ }
+
+ if dirRoot == "" {
+ dirRoot = config.Config.RootPath
+ if dirRoot == "" {
+ dirRoot = defaultRoot
+ }
+ }
+
fmap := template.FuncMap{
"formatURL": encodeURL,
"formatSize": normaliseSize,
@@ -435,14 +456,14 @@ func main() {
http.ServeFile(w, r, baseWd + "/static/ban.svg")
})
- if err := os.Chdir(dir) ; err != nil {
- fmt.Println("Error with directory [" + dir + "]")
+ if err := os.Chdir(dirRoot) ; err != nil {
+ fmt.Println("Error with directory [" + dirRoot + "]")
return
}
- fmt.Println("Launch server")
+ fmt.Println("Launch server on port:", config.Config.Port)
http.HandleFunc("/", handleMethod)
- log.Fatal(http.ListenAndServe(":8080", nil))
+ log.Fatal(http.ListenAndServe(":" + strconv.Itoa(config.Config.Port), nil))
fmt.Println("Bye bye")
}