56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/BRNSystems/go-telnet"
|
||
|
"strconv"
|
||
|
)
|
||
|
|
||
|
type Client struct {
|
||
|
Client telnet.Client
|
||
|
Username string
|
||
|
ID int
|
||
|
History []string
|
||
|
HistoryIndex int
|
||
|
context telnet.Context
|
||
|
writer telnet.Writer
|
||
|
reader telnet.Reader
|
||
|
// Add more fields as needed
|
||
|
}
|
||
|
|
||
|
func NewClient(context telnet.Context, writer telnet.Writer, reader telnet.Reader) int {
|
||
|
client := Client{}
|
||
|
|
||
|
clientsMutex.Lock()
|
||
|
clients = append(clients, &client)
|
||
|
clientID := len(clients) - 1
|
||
|
defer clientsMutex.Unlock()
|
||
|
|
||
|
clients[clientID].ID = clientID
|
||
|
clients[clientID].Username = "Client #" + strconv.Itoa(clientID)
|
||
|
clients[clientID].context = context
|
||
|
clients[clientID].writer = writer
|
||
|
clients[clientID].reader = reader
|
||
|
return clientID
|
||
|
}
|
||
|
|
||
|
func RemoveClient(clientID int) {
|
||
|
clientsMutex.Lock()
|
||
|
defer clientsMutex.Unlock()
|
||
|
clients = append(clients[:clientID], clients[clientID+1:]...)
|
||
|
}
|
||
|
|
||
|
func (client Client) send(message string) {
|
||
|
client.writer.Write([]byte(message))
|
||
|
}
|
||
|
|
||
|
func getIDByName(name string) int {
|
||
|
clientsMutex.Lock()
|
||
|
defer clientsMutex.Unlock()
|
||
|
for _, client := range clients {
|
||
|
if client.Username == name {
|
||
|
return client.ID
|
||
|
}
|
||
|
}
|
||
|
return -1
|
||
|
}
|