37 lines
776 B
Go
37 lines
776 B
Go
|
package server
|
||
|
|
||
|
import (
|
||
|
"github.com/khlieng/dispatch/irc"
|
||
|
"github.com/khlieng/dispatch/storage"
|
||
|
)
|
||
|
|
||
|
func reconnectIRC() {
|
||
|
for _, user := range storage.LoadUsers() {
|
||
|
session := NewSession()
|
||
|
session.user = user
|
||
|
sessions[user.UUID] = session
|
||
|
go session.write()
|
||
|
|
||
|
channels := user.GetChannels()
|
||
|
|
||
|
for _, server := range user.GetServers() {
|
||
|
i := irc.NewClient(server.Nick, server.Username)
|
||
|
i.TLS = server.TLS
|
||
|
i.Password = server.Password
|
||
|
i.Realname = server.Realname
|
||
|
|
||
|
i.Connect(server.Address)
|
||
|
session.setIRC(i.Host, i)
|
||
|
go newIRCHandler(i, session).run()
|
||
|
|
||
|
var joining []string
|
||
|
for _, channel := range channels {
|
||
|
if channel.Server == server.Address {
|
||
|
joining = append(joining, channel.Name)
|
||
|
}
|
||
|
}
|
||
|
i.Join(joining...)
|
||
|
}
|
||
|
}
|
||
|
}
|