Advertisement
Void-voiD

Untitled

Oct 15th, 2019
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 3.30 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "bufio"
  5.     "fmt"
  6.     "github.com/jlaffaye/ftp"
  7.     "io/ioutil"
  8.     "log"
  9.     "net/http"
  10.     "os"
  11. )
  12.  
  13. var (
  14.     Server   = ""
  15.     Login    = ""
  16.     Password = ""
  17.     BasePath = "/home/me/"
  18.     client *ftp.ServerConn
  19.     file *os.File
  20.     err error
  21.     homeScreenForm, _ = readFile("web/Home.html")
  22.     menuScreenFormStart, _ = readFile("web/Menu.html")
  23.     options, _ = readFile("web/Options.html")
  24.     menuScreenFormEnd, _ = readFile("web/End.html")
  25.     //185.20.227.83
  26. )
  27.  
  28. func HomeScreenHandler(w http.ResponseWriter, r *http.Request) {
  29.     fmt.Fprintf(w, homeScreenForm)
  30. }
  31.  
  32. func MenuScreenHandler(w http.ResponseWriter, r *http.Request) {
  33.     if r.URL.Query().Get("server") != "" {
  34.         Server = r.URL.Query().Get("server")
  35.     }
  36.     if r.URL.Query().Get("login") != "" {
  37.         Login = r.URL.Query().Get("login")
  38.     }
  39.     if r.URL.Query().Get("pass") != "" {
  40.         Password = r.URL.Query().Get("pass")
  41.     }
  42.     res := menuScreenFormStart
  43.     res += "<center><p><h2>" + Server + "</h2></p>" + "<p><h3> ^  ^      ^    ^           ^  ^       </h3></p>"
  44.     res += options
  45.     option := r.URL.Query().Get("options")
  46.  
  47.     switch option {
  48.     case "delete":
  49.         err = removeDirectory(r.URL.Query().Get("f1"))
  50.         if err != nil {
  51.             log.Fatal(err)
  52.         }
  53.     case "make":
  54.         err = makeDirectory(r.URL.Query().Get("f1"))
  55.         if err != nil {
  56.             log.Fatal(err)
  57.         }
  58.     case "list":
  59.         entries, err := listOfDirectories(r.URL.Query().Get("f1"))
  60.         if err != nil {
  61.             log.Fatal(err)
  62.         }
  63.         res += "<p><b>" + r.URL.Query().Get("f1") + ": </b></p>"
  64.         for _, e := range entries {
  65.             res += "<p>" + e.Name + "</p>"
  66.         }
  67.     case "upload":
  68.         err = uploadFile(r.URL.Query().Get("f1"), r.URL.Query().Get("f2"))
  69.         if err != nil {
  70.             log.Fatal(err)
  71.         }
  72.     case "read":
  73.         str, err := readFile(r.URL.Query().Get("f1"))
  74.         if err != nil {
  75.             log.Fatal(err)
  76.         }
  77.         res += "<p>" + str + "</p>"
  78.     }
  79.  
  80.     res += menuScreenFormEnd
  81.     fmt.Fprint(w, res)
  82. }
  83.  
  84. func uploadFile(from string, to string) error {
  85.     client, err = ftp.Dial(Server)
  86.     if err != nil {
  87.         return err
  88.     }
  89.  
  90.     file, err = os.Open(BasePath + from)
  91.     if err != nil {
  92.         return err
  93.     }
  94.     reader := bufio.NewReader(file)
  95.     err = client.Stor(to, reader)
  96.     if err != nil {
  97.         return err
  98.     }
  99.     return nil
  100. }
  101.  
  102. func removeDirectory(path string) error {
  103.     client, err = ftp.Dial(Server)
  104.     if err != nil {
  105.         return err
  106.     }
  107.  
  108.     err = client.Delete(path)
  109.     if err != nil {
  110.         return err
  111.     }
  112.     return nil
  113. }
  114.  
  115. func makeDirectory(dir string) error {
  116.     client, err = ftp.Dial(Server)
  117.     if err != nil {
  118.         return err
  119.     }
  120.  
  121.     err = client.MakeDir(dir)
  122.     if err != nil {
  123.         return err
  124.     }
  125.     return nil
  126. }
  127.  
  128. func listOfDirectories(path string) ([]*ftp.Entry, error) {
  129.     client, err = ftp.Dial(Server)
  130.     if err != nil {
  131.         return nil, err
  132.     }
  133.  
  134.     entries, err := client.List(path)
  135.     if err != nil {
  136.         return nil, err
  137.     }
  138.     return entries, nil
  139. }
  140.  
  141. func readFile(path string) (string, error) {
  142.     client, err = ftp.Dial(Server)
  143.     if err != nil {
  144.         return "", err
  145.     }
  146.     file, err := client.Retr(path)
  147.     if err != nil {
  148.         return "", err
  149.     }
  150.     buffer, err := ioutil.ReadAll(file)
  151.     if err != nil {
  152.         return "", err
  153.     }
  154.     return string(buffer), nil
  155. }
  156.  
  157. func main() {
  158.     fmt.Println("Starting")
  159.     http.HandleFunc("/", HomeScreenHandler)
  160.     http.HandleFunc("/menu", MenuScreenHandler)
  161.     err = http.ListenAndServe(":9077", nil)
  162.     if err != nil {
  163.         log.Fatal("ListenAndServe: ", err)
  164.     }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement