Add the backend for making new directories
authorRobert Sesek <rsesek@bluestatic.org>
Tue, 20 Sep 2011 12:50:01 +0000 (08:50 -0400)
committerRobert Sesek <rsesek@bluestatic.org>
Tue, 20 Sep 2011 12:50:01 +0000 (08:50 -0400)
src/paths.go
src/server.go

index 522b3f644626576be9cca3e14111c9e7c65d02d9..42fbb0c5b0423dea165038cc70b73b85f79e7a53 100644 (file)
@@ -95,3 +95,18 @@ func Move(source string, target string) os.Error {
        }
        return os.Rename(source, target)
 }
+
+func MakeDir(target string) os.Error {
+       target = canonicalizePath(target)
+       if !checkInJail(target) {
+               return os.NewError("Path outside of jail")
+       }
+
+       dir, _ := path.Split(target)
+       isValid, _ := IsValid(dir)
+       if !isValid {
+               return os.NewError("Containing directory not valid")
+       }
+
+       return os.Mkdir(target, 0644)
+}
index cde9c33d32d70c36d876c34ff2360d376424b6a0..d050b42b0e8eb2735aa40acbe03d8dcfb27e7eaf 100644 (file)
@@ -1,7 +1,7 @@
 //
 // Armadillo File Manager
-// Copyright (c) 2010, Robert Sesek <http://www.bluestatic.org>
-// 
+// Copyright (c) 2010-2011, Robert Sesek <http://www.bluestatic.org>
+//
 // This program is free software: you can redistribute it and/or modify it under
 // the terms of the GNU General Public License as published by the Free Software
 // Foundation, either version 3 of the License, or any later version.
@@ -73,6 +73,18 @@ func serviceHandler(response http.ResponseWriter, request *http.Request) {
                        }
                        okResponse(response, data)
                }
+       case "mkdir":
+               path := request.FormValue("path")
+               err := paths.MakeDir(path)
+               if err != nil {
+                       errorResponse(response, err.String())
+               } else {
+                       data := map[string]interface{}{
+                               "path": path,
+                               "error": 0,
+                       }
+                       okResponse(response, data)
+               }
        case "tv_rename":
                newPath, err := tv_rename.RenameEpisode(request.FormValue("path"))
                if err != nil {