123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package Terminal
- import (
- "net"
- "git.swzry.com/NSMCServerLauncher/Logger"
- "fmt"
- "github.com/swzry/go.TSmap"
- "git.swzry.com/NSMCServerLauncher/Utils"
- )
- func HandlerTerminal(clientList TSmap.TSmap,conn net.Conn, chnum int){
- clobj,ok := clientList.Get(conn)
- if(!ok){
- fmt.Fprintf(&Logger.Log.SSH,"Client '%v', Channels %v, Failed Handling Terminal : Client Not Found.\n",conn.RemoteAddr(),chnum)
- return
- }
- clientConn, ok := clobj.(*Utils.ClientConnection)
- if(!ok){
- fmt.Fprintf(&Logger.Log.SSH,"Client '%v', Channels %v, Failed Handling Terminal : Internal Error: Can't Convert '%T' into 'Utils.ClientConnection'.\n",conn.RemoteAddr(),chnum,clobj)
- return
- }
- chlist, ok := clientConn.Channels.(TSmap.TSmap)
- if(!ok){
- fmt.Fprintf(&Logger.Log.SSH,"Client '%v', Channels %v, Failed Handling Terminal : Internal Error: Can't Convert '%T' into 'TSMap.TSMap'.\n",conn.RemoteAddr(),chnum,clientConn.Channels)
- return
- }
- chobj,ok := chlist.Get(chnum)
- if(!ok){
- fmt.Fprintf(&Logger.Log.SSH,"Client '%v', Channels %v, Failed Handling Terminal : Channel Not Found.\n",conn.RemoteAddr(),chnum)
- return
- }
- channel,ok := chobj.(Utils.AvaliableChannel)
- if(!ok){
- fmt.Fprintf(&Logger.Log.SSH,"Client '%v', Channels %v, Failed Handling Terminal : Internal Error: Can't Convert '%T' into 'Utils.AvaliableChannel'.\n",conn.RemoteAddr(),chnum,chobj)
- return
- }
- channel.Term.Write([]byte("NSMC Server Launcher V1.0 - Shell\n"))
- channel.Term.SetPrompt("NSMC / >")
- for {
- line,err := channel.Term.ReadLine()
- if( err != nil){
- fmt.Fprintf(&Logger.Log.SSH,"Client '%v', Channels %v, Discard. Detail: %v.\n",conn.RemoteAddr(),chnum,err)
- break
- }
- switch line {
- case "exit":
- clientList.Delete(conn)
- conn.Close()
- break
- case "about":
- channel.Term.Write([]byte("NSMC Server Launcher V1.0\n"))
- channel.Term.Write([]byte("(https://git.swzry.com/zry/NSMCServerLauncher/)\n"))
- channel.Term.Write([]byte("By ZRY (https://www.swzry.com/)\n\n"))
- break
- default:
- ExecuteCommandLine(line,channel.Term,&channel.UserContext)
- break;
- }
- }
- }
|