diff --git a/.gitignore b/.gitignore index db894b9..518e6f6 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,8 @@ .LSOverride # Icon must end with two \r -Icon +Icon + # Thumbnails ._* diff --git a/README.md b/README.md index e450176..ba15d6a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# server +# noahcloud A high performance & reliable storage backend compatible with Nextcloud clients, implemented by Go. \ No newline at end of file diff --git a/cmd/noah-server/noah-server.go b/cmd/noah-server/noah-server.go new file mode 100644 index 0000000..4aa1493 --- /dev/null +++ b/cmd/noah-server/noah-server.go @@ -0,0 +1,30 @@ +package main + +import ( + "fmt" + "net/http" + "golang.org/x/net/webdav" +) + +func main() { + fs := &webdav.Handler{ + FileSystem: webdav.Dir("."), + LockSystem: webdav.NewMemLS(), + } + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + fmt.Println(r.Method, r.URL.Path) + username, password, ok := r.BasicAuth() + if !ok { + w.Header().Set("WWW-Authenticate", `Basic realm="Restricted"`) + w.WriteHeader(http.StatusUnauthorized) + return + } + if username != "username" || password != "password" { + http.Error(w, "WebDAV: need authorized!", http.StatusUnauthorized) + return + } + fs.ServeHTTP(w, r) + }) + fmt.Println("wait requests") + http.ListenAndServe(":8080", nil) +} \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..4c18507 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module noahcloud + +go 1.16 + +require golang.org/x/net v0.0.0-20210917221730-978cfadd31cf // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..4dc0836 --- /dev/null +++ b/go.sum @@ -0,0 +1,7 @@ +golang.org/x/net v0.0.0-20210917221730-978cfadd31cf h1:R150MpwJIv1MpS0N/pc+NhTM8ajzvlmxlY5OYsrevXQ= +golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=