Implemented static MOTD message
This commit is contained in:
parent
85cbc020a3
commit
44775cabdd
13
client.go
13
client.go
@ -176,10 +176,15 @@ func (c *Client) reply(code replyCode, args ...string) {
|
|||||||
case rplVersion:
|
case rplVersion:
|
||||||
c.outputChan <- fmt.Sprintf(":%s 351 %s %s", c.server.name, c.nick, args[0])
|
c.outputChan <- fmt.Sprintf(":%s 351 %s %s", c.server.name, c.nick, args[0])
|
||||||
case rplMOTD:
|
case rplMOTD:
|
||||||
|
motd := args[0]
|
||||||
c.outputChan <- fmt.Sprintf(":%s 375 %s", c.server.name, c.nick)
|
c.outputChan <- fmt.Sprintf(":%s 375 %s", c.server.name, c.nick)
|
||||||
for i := 0; i < len(args[0]); i += 80 {
|
for size := len(motd); size > 0; size = len(motd) {
|
||||||
line := args[0][i : i+80]
|
if size <= 80 {
|
||||||
c.outputChan <- fmt.Sprintf(":%s 372 %s %s", c.server.name, c.nick, line)
|
c.outputChan <- fmt.Sprintf(":%s 372 %s :- %s", c.server.name, c.nick, motd)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
c.outputChan <- fmt.Sprintf(":%s 372 %s :- %s", c.server.name, c.nick, motd[:80])
|
||||||
|
motd = motd[80:]
|
||||||
}
|
}
|
||||||
c.outputChan <- fmt.Sprintf(":%s 376 %s", c.server.name, c.nick)
|
c.outputChan <- fmt.Sprintf(":%s 376 %s", c.server.name, c.nick)
|
||||||
case errMoreArgs:
|
case errMoreArgs:
|
||||||
@ -212,6 +217,8 @@ func (c *Client) clientThread() {
|
|||||||
writeSignalChan := make(chan signalCode, 3)
|
writeSignalChan := make(chan signalCode, 3)
|
||||||
writeChan := make(chan string, 100)
|
writeChan := make(chan string, 100)
|
||||||
|
|
||||||
|
c.server.eventChan <- Event{client: c, event: connected}
|
||||||
|
|
||||||
go c.readThread(readSignalChan)
|
go c.readThread(readSignalChan)
|
||||||
go c.writeThread(writeSignalChan, writeChan)
|
go c.writeThread(writeSignalChan, writeChan)
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ type Server struct {
|
|||||||
clientMap map[string]*Client //Map of nicks → clients
|
clientMap map[string]*Client //Map of nicks → clients
|
||||||
channelMap map[string]*Channel //Map of channel names → channels
|
channelMap map[string]*Channel //Map of channel names → channels
|
||||||
operatorMap map[string]string //Map of usernames → SHA1 hashed passwords
|
operatorMap map[string]string //Map of usernames → SHA1 hashed passwords
|
||||||
|
motd string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Client struct {
|
type Client struct {
|
||||||
|
@ -20,7 +20,8 @@ func NewServer() *Server {
|
|||||||
name: "rosella",
|
name: "rosella",
|
||||||
clientMap: make(map[string]*Client),
|
clientMap: make(map[string]*Client),
|
||||||
channelMap: make(map[string]*Channel),
|
channelMap: make(map[string]*Channel),
|
||||||
operatorMap: make(map[string]string)}
|
operatorMap: make(map[string]string),
|
||||||
|
motd: "Welcome to IRC. Powered by Rosella."}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Run() {
|
func (s *Server) Run() {
|
||||||
@ -52,6 +53,7 @@ func (s *Server) handleEvent(e Event) {
|
|||||||
switch e.event {
|
switch e.event {
|
||||||
case connected:
|
case connected:
|
||||||
//Client connected
|
//Client connected
|
||||||
|
e.client.reply(rplMOTD, s.motd)
|
||||||
case disconnected:
|
case disconnected:
|
||||||
//Client disconnected
|
//Client disconnected
|
||||||
case command:
|
case command:
|
||||||
|
Loading…
Reference in New Issue
Block a user