Commit graph

195 commits

Author SHA1 Message Date
Simon Ser 519cdd9e38
Close connection from writer goroutine
Connections were being closed from the reader goroutine, causing issues
when sending messages and immediately closing the connection.
2020-02-07 12:42:24 +01:00
Simon Ser e17c0b3aca
Add upstreamConn.register 2020-02-07 12:37:44 +01:00
Simon Ser 96653499dc
Add parseMessageParams helper 2020-02-07 12:36:02 +01:00
Simon Ser 6d03af8243
Allow changing nickname 2020-02-07 12:19:42 +01:00
Simon Ser 50fc19c92f
Skip unregistered and closed upstream connections 2020-02-07 12:02:19 +01:00
Simon Ser 636ede13da
Add user.forEachDownstream 2020-02-07 11:56:36 +01:00
Simon Ser 059a799d16
Add user.forEachUpstream 2020-02-07 11:46:44 +01:00
Simon Ser 3586ca3d26
Add Server.getUser 2020-02-07 11:39:56 +01:00
Simon Ser 3b2bb58c60
Per-user connections 2020-02-07 11:36:42 +01:00
Simon Ser 7abf426447
Forward PRIVMSG messages 2020-02-07 11:07:01 +01:00
Simon Ser 0706d45aba
Handle channel mode changes 2020-02-07 11:01:53 +01:00
Simon Ser bd54c57d71
Handle third-party JOIN and PART messages 2020-02-07 10:54:03 +01:00
Simon Ser 8493f5b255
Use a dedicated goroutine to write upstream messages 2020-02-06 22:46:46 +01:00
Simon Ser 774872d655
Add missing bridge.go, oops 2020-02-06 22:45:54 +01:00
Simon Ser 86f66cf6c4
Remove downstreamConn.WriteMessage
It wasn't clear what this function was doing
2020-02-06 22:35:24 +01:00
Simon Ser ec658e3d39
Send channel info to downstream on registration 2020-02-06 22:29:24 +01:00
Simon Ser 3b0639bacc
Keep track of upstream connections in a list 2020-02-06 22:25:32 +01:00
Simon Ser 89f1944d30
De-duplicate downstream QUIT handling 2020-02-06 22:22:14 +01:00
Simon Ser cd7556264e
Forward channel information 2020-02-06 22:19:31 +01:00
Simon Ser 4a816e1593
Write to downstream conn in dedicated goroutine 2020-02-06 21:52:04 +01:00
Simon Ser 3f2e08b949
Mark channel info as complete on RPL_ENDOFNAMES 2020-02-06 21:43:22 +01:00
Simon Ser 5988d10a0b
Remove downstream conn from list on disconnect 2020-02-06 21:30:44 +01:00
Simon Ser 36c404c50c
Allow Server to have access to upstreamConn 2020-02-06 21:20:22 +01:00
Simon Ser 8bbba42aef
Maintain a list of downstream connections 2020-02-06 21:11:35 +01:00
Simon Ser 726d7cb54b
Add per-upstream logger 2020-02-06 20:26:03 +01:00
Simon Ser 7876ddb9c8
Split IRC helpers to separate file 2020-02-06 19:24:32 +01:00
Simon Ser ae7f162883
Join channels on upstream servers 2020-02-06 19:22:04 +01:00
Simon Ser 836a9c6986
Handle NOTICE from upstream servers 2020-02-06 18:10:13 +01:00
Simon Ser 343d4cfded
Handle MODE messages from upstream servers 2020-02-06 18:07:35 +01:00
Simon Ser f2b471259a
Handle upstream RPL_MYINFO messages 2020-02-06 17:04:49 +01:00
Simon Ser cad64e1a6c
Send standard user/channel modes to downstream connections 2020-02-06 16:50:47 +01:00
Simon Ser 9a331b9d38
Ignore some upstream messages 2020-02-06 16:39:09 +01:00
Simon Ser b5f3bad588
Split downstram and upstream code into separate files 2020-02-06 16:18:19 +01:00
Simon Ser a2d9a64bed
Log upstream server errors 2020-02-06 16:13:29 +01:00
Simon Ser c14e26769f
Add basic upstream message handler 2020-02-06 16:11:28 +01:00
Simon Ser 56d793543e
Connect to upstream servers 2020-02-06 16:03:07 +01:00
Simon Ser 06cd1ce44f
Add Server.Logger 2020-02-06 15:50:46 +01:00
Simon Ser 003ce38bf8
Rename conn to downstreamConn 2020-02-06 15:22:26 +01:00
Simon Ser 3ccc1bb4e8
Handle PING 2020-02-06 12:18:37 +01:00
Simon Ser f8a03a25df
Send ERR_NOMOTD on registration 2020-02-06 12:08:54 +01:00
Simon Ser 5547eb7290
Add connection registration 2020-02-04 18:56:07 +01:00
Simon Ser 23ca41b435
Handle NICK and USER 2020-02-04 12:19:18 +01:00
Simon Ser 6d4581a6d0
Send "unknown command" replies 2020-02-04 11:25:53 +01:00
Simon Ser fb0825a100
Add LICENSE and README.md 2020-02-04 10:50:28 +01:00
Simon Ser 8e31fde0ab
Add basic IRC listener 2020-02-04 10:46:22 +01:00