|
@@ -38,7 +38,7 @@ func Wildcard(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func API(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
|
+func API(w http.ResponseWriter, r *http.Request, s *Server) {
|
|
|
action := strings.TrimPrefix(r.URL.Path, "/api/")
|
|
action := strings.TrimPrefix(r.URL.Path, "/api/")
|
|
|
if r.Method == "POST" {
|
|
if r.Method == "POST" {
|
|
|
//w.WriteHeader(http.StatusNotImplemented)
|
|
//w.WriteHeader(http.StatusNotImplemented)
|
|
@@ -53,18 +53,22 @@ func API(w http.ResponseWriter, r *http.Request) {
|
|
|
if n.Folder == "" {
|
|
if n.Folder == "" {
|
|
|
n.Folder = "default"
|
|
n.Folder = "default"
|
|
|
}
|
|
}
|
|
|
- err := safeDirectory(n.Folder)
|
|
|
|
|
|
|
+ err := inout.SafeDir(n.Folder)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- w.WriteHeader(http.StatusBadRequest)
|
|
|
|
|
- fmt.Fprintf(w, "Error : %+v, %s", err, n.Folder)
|
|
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/error.tmpl", err)
|
|
|
|
|
+ w.Header().Set("Content-Type", "text/html")
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- path := filepath.Join("notes_folder", n.Folder)
|
|
|
|
|
|
|
+ path := filepath.Join(s.NotesDir, n.Folder)
|
|
|
err = os.MkdirAll(path, 0755)
|
|
err = os.MkdirAll(path, 0755)
|
|
|
fmt.Println(n.Folder)
|
|
fmt.Println(n.Folder)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- w.WriteHeader(http.StatusBadRequest)
|
|
|
|
|
- fmt.Fprintf(w, "ParseForm error: %+v , %s", err, n.Folder)
|
|
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/error.tmpl", err)
|
|
|
|
|
+ w.Header().Set("Content-Type", "text/html")
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -73,10 +77,12 @@ func API(w http.ResponseWriter, r *http.Request) {
|
|
|
//fmt.Println(fisier, r.Form)
|
|
//fmt.Println(fisier, r.Form)
|
|
|
//return
|
|
//return
|
|
|
|
|
|
|
|
- err = inout.ObjToFile(filepath.Join("notes_folder", n.Folder, fisier), n, true)
|
|
|
|
|
|
|
+ err = inout.ObjToFile(filepath.Join(s.NotesDir, n.Folder, fisier), n, true)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- w.WriteHeader(http.StatusInternalServerError)
|
|
|
|
|
- fmt.Fprintf(w, "%+v", err)
|
|
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/error.tmpl", err)
|
|
|
|
|
+ w.Header().Set("Content-Type", "text/html")
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
referinta := r.Referer()
|
|
referinta := r.Referer()
|
|
@@ -109,8 +115,10 @@ func API(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- w.WriteHeader(http.StatusMethodNotAllowed)
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, "metoda nepermisa")
|
|
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/error.tmpl", fmt.Errorf("method %s not allowed", r.Method))
|
|
|
|
|
+ w.Header().Set("Content-Type", "text/html")
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func Notes(w http.ResponseWriter, r *http.Request, fisier string) {
|
|
func Notes(w http.ResponseWriter, r *http.Request, fisier string) {
|
|
@@ -130,121 +138,49 @@ func Notes(w http.ResponseWriter, r *http.Request, fisier string) {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
notita.HTML = buf.String()
|
|
notita.HTML = buf.String()
|
|
|
- tmpl := template.New("notita")
|
|
|
|
|
- _, err = tmpl.ParseFiles("./templates/notita.tmpl")
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- w.WriteHeader(http.StatusInternalServerError)
|
|
|
|
|
- w.Write([]byte(WEB_ERR))
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- err = tmpl.ExecuteTemplate(w, "notita.tmpl", notita)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- w.WriteHeader(http.StatusInternalServerError)
|
|
|
|
|
- w.Write([]byte(WEB_ERR))
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/notita.tmpl", notita)
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func safeDirectory(path string) error {
|
|
|
|
|
- path = filepath.Clean(path)
|
|
|
|
|
- if strings.HasPrefix(path, "..") || filepath.IsAbs(path) {
|
|
|
|
|
- return fmt.Errorf("Invalid Path")
|
|
|
|
|
- }
|
|
|
|
|
- return nil
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func ListNotes(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
|
+func ListNotes(w http.ResponseWriter, r *http.Request, s *Server) {
|
|
|
|
|
|
|
|
if r.Method == "GET" {
|
|
if r.Method == "GET" {
|
|
|
- f := types.Folder{}
|
|
|
|
|
- err := buildFolderStructure("./notes_folder", &f)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- fmt.Println("EROARE la buildFolderStructure:", err)
|
|
|
|
|
- w.WriteHeader(http.StatusBadRequest)
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- tmpl := template.New("list_notes_test")
|
|
|
|
|
- _, err = tmpl.ParseFiles("./templates/list_notes.tmpl")
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- fmt.Println("EROARE la buildFolderStructure:", err)
|
|
|
|
|
- w.WriteHeader(http.StatusBadRequest)
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- err = tmpl.ExecuteTemplate(w, "list_notes.tmpl", f)
|
|
|
|
|
|
|
+ f := inout.Folder{}
|
|
|
|
|
+ err := inout.GetFolderStructure(s.NotesDir, &f)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println("EROARE la buildFolderStructure:", err)
|
|
|
|
|
- w.WriteHeader(http.StatusBadRequest)
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, err)
|
|
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/error.tmpl", err)
|
|
|
|
|
+ w.Header().Set("Content-Type", "text/html")
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/list_notes.tmpl", f)
|
|
|
|
|
+ w.Header().Set("Content-Type", "text/html")
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
w.WriteHeader(http.StatusMethodNotAllowed)
|
|
w.WriteHeader(http.StatusMethodNotAllowed)
|
|
|
w.Write([]byte("methoda nepermisa"))
|
|
w.Write([]byte("methoda nepermisa"))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func buildFolderStructure(path string, f *types.Folder) error {
|
|
|
|
|
- entries, err := os.ReadDir(path)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return err
|
|
|
|
|
- }
|
|
|
|
|
- if filepath.Clean(path) != "notes_folder" {
|
|
|
|
|
- f.Nume = filepath.Base(path)
|
|
|
|
|
- } else {
|
|
|
|
|
- f.Nume = "notes_folder"
|
|
|
|
|
- }
|
|
|
|
|
- for _, entry := range entries {
|
|
|
|
|
-
|
|
|
|
|
- if entry.IsDir() {
|
|
|
|
|
- sub := types.Folder{}
|
|
|
|
|
- err = buildFolderStructure(filepath.Join(path, entry.Name()), &sub)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return err
|
|
|
|
|
- }
|
|
|
|
|
- f.Subfoldere = append(f.Subfoldere, sub)
|
|
|
|
|
- } else {
|
|
|
|
|
- fisier := types.Fisier{
|
|
|
|
|
- Nume: entry.Name(),
|
|
|
|
|
- Path: filepath.Join(path, entry.Name()),
|
|
|
|
|
- }
|
|
|
|
|
- f.Fisiere = append(f.Fisiere, fisier)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return nil
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
func EditNotes(w http.ResponseWriter, r *http.Request, filename string) {
|
|
func EditNotes(w http.ResponseWriter, r *http.Request, filename string) {
|
|
|
|
|
|
|
|
if r.Method == "GET" {
|
|
if r.Method == "GET" {
|
|
|
f := types.Notita{}
|
|
f := types.Notita{}
|
|
|
err := inout.FileToObj(filename, &f)
|
|
err := inout.FileToObj(filename, &f)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- w.WriteHeader(http.StatusBadRequest)
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- tmpl := template.New("editare")
|
|
|
|
|
- _, err = tmpl.ParseFiles("./templates/edit_notes.tmpl")
|
|
|
|
|
-
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- fmt.Println("EROARE la buildFolderStructure:", err)
|
|
|
|
|
- w.WriteHeader(http.StatusBadRequest)
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- err = tmpl.ExecuteTemplate(w, "edit_notes.tmpl", f)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- fmt.Println("EROARE la buildFolderStructure:", err)
|
|
|
|
|
- w.WriteHeader(http.StatusBadRequest)
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, err)
|
|
|
|
|
- return
|
|
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/error.tmpl", err)
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
}
|
|
}
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/edit_notes.tmpl", f)
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- w.WriteHeader(http.StatusMethodNotAllowed)
|
|
|
|
|
- template.Must(template.ParseFiles("templates/error.tmpl")).Execute(w, "metoda nepermisa")
|
|
|
|
|
|
|
+ resp, code := inout.ParseTemplate("templates/error.tmpl", fmt.Errorf("method %s not allowed", r.Method))
|
|
|
|
|
+ w.WriteHeader(code)
|
|
|
|
|
+ w.Write(resp)
|
|
|
}
|
|
}
|