Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "github.com/gliderlabs/ssh"
  6. "golang.org/x/crypto/ssh/terminal"
  7. "io"
  8. "log"
  9. "os/exec"
  10. "strings"
  11. )
  12.  
  13.  
  14. func lexer(input string) []string{
  15. return strings.Split(strings.Trim(input," ")," ")
  16. }
  17.  
  18. func main() {
  19. addr := "lab.posevin.com"
  20. port := 2318
  21. server := ssh.Server{
  22. Addr: fmt.Sprintf("%s:%d",addr, port),
  23. Handler: func(session ssh.Session) {
  24. io.WriteString(session, fmt.Sprintf("Hello %s\n", session.User()))
  25. var (
  26. line string
  27. current []string
  28. term= terminal.NewTerminal(session, "")
  29.  
  30. )
  31. line, _ = term.ReadLine()
  32. current = lexer(line)
  33. cmd := exec.Command(current[0], current[1:]...)
  34. cmd.Dir="lab2"
  35. cmd.Stdout = session
  36. _ = cmd.Run()
  37. for{
  38. line, _ = term.ReadLine()
  39. current = lexer(line)
  40. }
  41. session.Close();
  42. },
  43. HostSigners: nil,
  44. Version: "",
  45. KeyboardInteractiveHandler: nil,
  46. PasswordHandler: func(ctx ssh.Context, password string) bool {
  47. return ctx.User() == "iu9_32_19" && password == "123qwe"
  48. },
  49. PublicKeyHandler: nil,
  50. PtyCallback: func(ctx ssh.Context, pty ssh.Pty) bool {
  51. return false
  52. },
  53. ConnCallback: nil,
  54. LocalPortForwardingCallback: nil,
  55. ReversePortForwardingCallback: nil,
  56. ServerConfigCallback: nil,
  57. SessionRequestCallback: nil,
  58. IdleTimeout: 0,
  59. MaxTimeout: 0,
  60. ChannelHandlers: nil,
  61. RequestHandlers: nil,
  62. }
  63. log.Println("Starting server at port:",port)
  64. _=server.ListenAndServe()
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement