Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "github.com/gliderlabs/ssh"
- "golang.org/x/crypto/ssh/terminal"
- "io"
- "log"
- "os/exec"
- "strings"
- )
- func lexer(input string) []string{
- return strings.Split(strings.Trim(input," ")," ")
- }
- func main() {
- addr := "lab.posevin.com"
- port := 2318
- server := ssh.Server{
- Addr: fmt.Sprintf("%s:%d",addr, port),
- Handler: func(session ssh.Session) {
- io.WriteString(session, fmt.Sprintf("Hello %s\n", session.User()))
- var (
- line string
- current []string
- term= terminal.NewTerminal(session, "")
- )
- line, _ = term.ReadLine()
- current = lexer(line)
- cmd := exec.Command(current[0], current[1:]...)
- cmd.Dir="lab2"
- cmd.Stdout = session
- _ = cmd.Run()
- for{
- line, _ = term.ReadLine()
- current = lexer(line)
- }
- session.Close();
- },
- HostSigners: nil,
- Version: "",
- KeyboardInteractiveHandler: nil,
- PasswordHandler: func(ctx ssh.Context, password string) bool {
- return ctx.User() == "iu9_32_19" && password == "123qwe"
- },
- PublicKeyHandler: nil,
- PtyCallback: func(ctx ssh.Context, pty ssh.Pty) bool {
- return false
- },
- ConnCallback: nil,
- LocalPortForwardingCallback: nil,
- ReversePortForwardingCallback: nil,
- ServerConfigCallback: nil,
- SessionRequestCallback: nil,
- IdleTimeout: 0,
- MaxTimeout: 0,
- ChannelHandlers: nil,
- RequestHandlers: nil,
- }
- log.Println("Starting server at port:",port)
- _=server.ListenAndServe()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement