Advertisement
Void-voiD

Untitled

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