Advertisement
Void-voiD

Untitled

Oct 15th, 2019
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 4.56 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/iu9_33_03/GoProjects/src/Laba1"
  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.     case "currentDir":
  83.         str, err := currentDirectory()
  84.         if err != nil {
  85.             log.Fatal(err)
  86.         }
  87.         res += "<p>" + str + "</p>"
  88.     case "change":
  89.         err := changeDirectory(r.URL.Query().Get("f1"))
  90.         if err != nil {
  91.             log.Fatal(err)
  92.         }
  93.     }
  94.     res += menuScreenFormEnd
  95.     fmt.Fprint(w, res)
  96. }
  97.  
  98. func uploadFile(from string, to string) error {
  99.     client, err = ftp.Dial(Server)
  100.     if err != nil {
  101.         return err
  102.     }
  103.  
  104.     err = client.Login(Login, Password)
  105.     if err != nil {
  106.         return err
  107.     }
  108.  
  109.     file, err = os.Open(BasePath + from)
  110.     if err != nil {
  111.         return err
  112.     }
  113.     reader := bufio.NewReader(file)
  114.     err = client.Stor(to, reader)
  115.     if err != nil {
  116.         return err
  117.     }
  118.     return nil
  119. }
  120.  
  121. func removeDirectory(path string) error {
  122.     client, err = ftp.Dial(Server)
  123.     if err != nil {
  124.         return err
  125.     }
  126.  
  127.     err = client.Login(Login, Password)
  128.     if err != nil {
  129.         return err
  130.     }
  131.  
  132.     err = client.Delete(path)
  133.     if err != nil {
  134.         return err
  135.     }
  136.     return nil
  137. }
  138.  
  139. func makeDirectory(dir string) error {
  140.     client, err = ftp.Dial(Server)
  141.     if err != nil {
  142.         return err
  143.     }
  144.  
  145.     err = client.Login(Login, Password)
  146.     if err != nil {
  147.         return err
  148.     }
  149.  
  150.     err = client.MakeDir(dir)
  151.     if err != nil {
  152.         return err
  153.     }
  154.     return nil
  155. }
  156.  
  157. func listOfDirectories(path string) ([]*ftp.Entry, error) {
  158.     client, err = ftp.Dial(Server)
  159.     if err != nil {
  160.         return nil, err
  161.     }
  162.  
  163.     err = client.Login(Login, Password)
  164.     if err != nil {
  165.         return nil, err
  166.     }
  167.  
  168.     entries, err := client.List(path)
  169.     if err != nil {
  170.         return nil, err
  171.     }
  172.     return entries, nil
  173. }
  174.  
  175. func readFile(path string) (string, error) {
  176.     client, err = ftp.Dial(Server)
  177.     if err != nil {
  178.         return "", err
  179.     }
  180.  
  181.     err = client.Login(Login, Password)
  182.     if err != nil {
  183.         return "", err
  184.     }
  185.  
  186.     file, err := client.Retr(path)
  187.     if err != nil {
  188.         return "", err
  189.     }
  190.     buffer, err := ioutil.ReadAll(file)
  191.     if err != nil {
  192.         return "", err
  193.     }
  194.     return string(buffer), nil
  195. }
  196.  
  197. func currentDirectory() (string, error) {
  198.     client, err = ftp.Dial(Server)
  199.     if err != nil {
  200.         return "", err
  201.     }
  202.  
  203.     err = client.Login(Login, Password)
  204.     if err != nil {
  205.         return "", err
  206.     }
  207.  
  208.     name, err := client.CurrentDir()
  209.     if err != nil {
  210.         return "", err
  211.     }
  212.     return name, nil
  213. }
  214.  
  215. func changeDirectory(path string) error {
  216.     client, err = ftp.Dial(Server)
  217.     if err != nil {
  218.         return err
  219.     }
  220.  
  221.     err = client.Login(Login, Password)
  222.     if err != nil {
  223.         return err
  224.     }
  225.  
  226.     err = client.ChangeDir(path)
  227.     if err != nil {
  228.         return err
  229.     }
  230.     return nil
  231. }
  232.  
  233. func main() {
  234.     http.HandleFunc("/", HomeScreenHandler)
  235.     http.HandleFunc("/menu", MenuScreenHandler)
  236.     err = http.ListenAndServe(":9210", nil)
  237.     if err != nil {
  238.         log.Fatal("ListenAndServe: ", err)
  239.     }
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement