summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ninjacloud.go232
1 files changed, 110 insertions, 122 deletions
diff --git a/src/ninjacloud.go b/src/ninjacloud.go
index a600ee7..f2d31d7 100644
--- a/src/ninjacloud.go
+++ b/src/ninjacloud.go
@@ -33,7 +33,7 @@ import (
33) 33)
34 34
35const APP_NAME = "Ninja Go Local Cloud" 35const APP_NAME = "Ninja Go Local Cloud"
36const APP_VERSION = "0.1 Draft" 36const APP_VERSION = "0.1"
37 37
38var versionFlag bool 38var versionFlag bool
39var interfaceFlag string 39var interfaceFlag string
@@ -50,13 +50,10 @@ const dirPath = "/directory/"
50const webPath = "/web?url=" 50const webPath = "/web?url="
51const statusPath = "/cloudstatus/" 51const statusPath = "/cloudstatus/"
52 52
53const drivePrefixLen = len(drivePrefix) - 1
54const filePathLen = len(filePath) 53const filePathLen = len(filePath)
55const dirPathLen = len(dirPath) 54const dirPathLen = len(dirPath)
56const webPathLen = len(webPath) 55const webPathLen = len(webPath)
57 56
58//const statusPathLen = len(statusPath)
59
60func sliceContains(s []string, c string) bool { 57func sliceContains(s []string, c string) bool {
61 for _, e := range s { 58 for _, e := range s {
62 if c == e { 59 if c == e {
@@ -69,13 +66,13 @@ func sliceContains(s []string, c string) bool {
69//////// FILESYSTEM 66//////// FILESYSTEM
70 67
71func properties(path string) (infos os.FileInfo, err error) { 68func properties(path string) (infos os.FileInfo, err error) {
72 infos, err = os.Stat(path) 69 infos, err = os.Stat(*&path)
73 return 70 return
74} 71}
75 72
76func modifiedSince(path string, since string) bool { 73func modifiedSince(path string, since string) bool {
77 s, err := strconv.ParseInt(since, 10, 64) 74 s, err := strconv.ParseInt(*&since, 10, 64)
78 infos, err := properties(path) 75 infos, err := properties(*&path)
79 if err != nil { 76 if err != nil {
80 return false 77 return false
81 } 78 }
@@ -88,67 +85,67 @@ func modifiedSince(path string, since string) bool {
88} 85}
89 86
90func exist(path string) bool { 87func exist(path string) bool {
91 _, err := os.Stat(path) 88 _, err := os.Stat(*&path)
92 if !os.IsNotExist(err) { 89 if !os.IsNotExist(*&err) {
93 return true 90 return true
94 } 91 }
95 return false 92 return false
96} 93}
97 94
98func isInRoot(path string) bool { 95func isInRoot(path string) bool {
99 return filepath.HasPrefix(path, rootFlag) 96 return filepath.HasPrefix(*&path, *&rootFlag)
100} 97}
101 98
102//// Files 99//// Files
103 100
104func writeFile(path string, content []byte, overwrite bool) (err error) { 101func writeFile(path string, content []byte, overwrite bool) (err error) {
105 if !overwrite { 102 if !overwrite {
106 if exist(path) { 103 if exist(*&path) {
107 err = os.ErrExist 104 err = os.ErrExist
108 return 105 return
109 } 106 }
110 } else { 107 } else {
111 if !exist(path) { 108 if !exist(*&path) {
112 err = os.ErrNotExist 109 err = os.ErrNotExist
113 return 110 return
114 } 111 }
115 } 112 }
116 err = ioutil.WriteFile(path, content, 0777) 113 err = ioutil.WriteFile(*&path, *&content, 0777)
117 return 114 return
118} 115}
119 116
120func readFile(path string) (content []byte, err error) { 117func readFile(path string) (content []byte, err error) {
121 content, err = ioutil.ReadFile(path) 118 content, err = ioutil.ReadFile(*&path)
122 return 119 return
123} 120}
124 121
125func removeFile(path string) (err error) { 122func removeFile(path string) (err error) {
126 err = os.Remove(path) 123 err = os.Remove(*&path)
127 return 124 return
128} 125}
129 126
130func moveFile(source string, dest string) (err error) { 127func moveFile(source string, dest string) (err error) {
131 err = os.Rename(source, dest) 128 err = os.Rename(*&source, *&dest)
132 return 129 return
133} 130}
134 131
135func copyFile(source string, dest string) (err error) { 132func copyFile(source string, dest string) (err error) {
136 // from https://gist.github.com/2876519 133 // from https://gist.github.com/2876519
137 sf, err := os.Open(source) 134 sf, err := os.Open(*&source)
138 if err != nil { 135 if err != nil {
139 return err 136 return err
140 } 137 }
141 defer sf.Close() 138 defer sf.Close()
142 df, err := os.Create(dest) 139 df, err := os.Create(*&dest)
143 if err != nil { 140 if err != nil {
144 return err 141 return err
145 } 142 }
146 defer df.Close() 143 defer df.Close()
147 _, err = io.Copy(df, sf) 144 _, err = io.Copy(*&df, *&sf)
148 if err == nil { 145 if err == nil {
149 si, err := os.Stat(source) 146 si, err := os.Stat(*&source)
150 if err != nil { 147 if err != nil {
151 err = os.Chmod(dest, si.Mode()) 148 err = os.Chmod(*&dest, si.Mode())
152 } 149 }
153 150
154 } 151 }
@@ -158,53 +155,53 @@ func copyFile(source string, dest string) (err error) {
158//// Dirs 155//// Dirs
159 156
160func createDir(path string) (err error) { 157func createDir(path string) (err error) {
161 err = os.MkdirAll(path, 0777) 158 err = os.MkdirAll(*&path, 0777)
162 return 159 return
163} 160}
164 161
165func removeDir(path string) (err error) { 162func removeDir(path string) (err error) {
166 err = os.RemoveAll(path) 163 err = os.RemoveAll(*&path)
167 return 164 return
168} 165}
169 166
170/*func listDir(path string) (list []os.FileInfo, err error) { 167/*func listDir(path string) (list []os.FileInfo, err error) {
171 list, err = ioutil.ReadDir(path) 168 list, err = ioutil.ReadDir(*&path)
172 return 169 return
173}*/ 170}*/
174 171
175func moveDir(source string, dest string) (err error) { 172func moveDir(source string, dest string) (err error) {
176 err = os.Rename(source, dest) 173 err = os.Rename(*&source, *&dest)
177 return 174 return
178} 175}
179 176
180func copyDir(source string, dest string) (err error) { 177func copyDir(source string, dest string) (err error) {
181 // from https://gist.github.com/2876519 178 // from https://gist.github.com/2876519
182 fi, err := os.Stat(source) 179 fi, err := os.Stat(*&source)
183 if err != nil { 180 if err != nil {
184 return 181 return
185 } 182 }
186 if !fi.IsDir() { 183 if !fi.IsDir() {
187 return os.ErrInvalid 184 return os.ErrInvalid
188 } 185 }
189 _, err = os.Open(dest) 186 _, err = os.Open(*&dest)
190 if !os.IsNotExist(err) { 187 if !os.IsNotExist(*&err) {
191 return os.ErrExist 188 return os.ErrExist
192 } 189 }
193 err = os.MkdirAll(dest, fi.Mode()) 190 err = os.MkdirAll(*&dest, fi.Mode())
194 if err != nil { 191 if err != nil {
195 return 192 return
196 } 193 }
197 entries, err := ioutil.ReadDir(source) 194 entries, err := ioutil.ReadDir(*&source)
198 for _, entry := range entries { 195 for _, entry := range entries {
199 sfp := source + "/" + entry.Name() 196 sfp := source + "/" + entry.Name()
200 dfp := dest + "/" + entry.Name() 197 dfp := dest + "/" + entry.Name()
201 if entry.IsDir() { 198 if entry.IsDir() {
202 err = copyDir(sfp, dfp) 199 err = copyDir(*&sfp, *&dfp)
203 if err != nil { 200 if err != nil {
204 return 201 return
205 } 202 }
206 } else { 203 } else {
207 err = copyFile(sfp, dfp) 204 err = copyFile(*&sfp, *&dfp)
208 if err != nil { 205 if err != nil {
209 return 206 return
210 } 207 }
@@ -228,15 +225,15 @@ func listDir(path string, recursive bool, filter []string, returnType string) (l
228 returnAll := returnType == "all" || returnType == "" 225 returnAll := returnType == "all" || returnType == ""
229 returnFiles := returnType == "files" || returnAll 226 returnFiles := returnType == "files" || returnAll
230 returnDirs := returnType == "directories" || returnAll 227 returnDirs := returnType == "directories" || returnAll
231 currentDir, err := ioutil.ReadDir(path) 228 currentDir, err := ioutil.ReadDir(*&path)
232 for _, d := range currentDir { 229 for _, d := range currentDir {