summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/server.go23
1 files changed, 22 insertions, 1 deletions
diff --git a/server/server.go b/server/server.go
index 3876bac..712f654 100644
--- a/server/server.go
+++ b/server/server.go
@@ -168,7 +168,7 @@ func (s *Server) handleMessage(conn net.Conn, user User, msg core.Message) error
return s.handleLocalMessage(channel, msg)
}
- return core.ErrNotSupported
+ return s.handleOutboundMessage(channel, host, msg)
}
func (s *Server) handleLocalMessage(channel string, msg core.Message) error {
@@ -179,3 +179,24 @@ func (s *Server) handleLocalMessage(channel string, msg core.Message) error {
return user.Send(msg)
}
+
+func (s *Server) handleOutboundMessage(channel, host string, msg core.Message) error {
+ conn, err := net.Dial("tcp", host+":9999")
+ if err != nil {
+ return err
+ }
+ defer conn.Close()
+
+ hs := core.Handshake{0, 1}
+ if err := core.Send(conn, hs); err != nil {
+ return err
+ }
+
+ // TODO, servers should not use this type of auth
+ auth := core.Auth{"server", "valid"}
+ if err := core.Send(conn, auth); err != nil {
+ return err
+ }
+
+ return core.Send(conn, msg)
+}