Daniel Oaks
92626a178d
server: Start roughly hacking in new message-tags support
2017-01-18 07:26:05 +10:00
Daniel Oaks
d2e18962e3
Very initial maxline work
2017-01-18 07:26:05 +10:00
Daniel Oaks
2b240faa90
strings: Fix nick bugs, use UsernameCaseMapped
2017-01-14 02:32:15 +10:00
Daniel Oaks
4168eaafbb
Basic implementation of KLINEs
2017-01-11 22:38:16 +10:00
Daniel Oaks
6f7c683247
channel: RWMutex for members access
2017-01-11 02:09:08 +10:00
Daniel Oaks
a8eabe8e9c
client: Fix a lot of bugs around setting NICK
2016-11-29 22:33:10 +10:00
Daniel Oaks
dc605ebb01
client: Send quit messages more correctly
2016-11-29 21:06:01 +10:00
Daniel Oaks
2e2e91689a
client: Send quit message to friends correctly
2016-11-29 19:28:22 +10:00
Daniel Oaks
9a9820fa88
NICK: Prevent races, remove a DoS
2016-11-16 12:02:22 +10:00
Daniel Oaks
95e36b99a2
Nick locking (entirely broken, needs to be completely redesigned)
2016-11-16 03:05:33 +10:00
Daniel Oaks
c3174bb648
Various crash fixes, and little cleanups for safety
2016-11-04 21:38:47 +10:00
Daniel Oaks
07e4728c15
roleplay: Initial commit
2016-11-01 23:56:25 +10:00
Daniel Oaks
c7fdb4656e
strings: Use inbuilt precis.Nickname encoding now
2016-10-27 00:44:36 +10:00
Daniel Oaks
a404bf83d1
Add automated client connection limiting
2016-10-23 23:05:00 +10:00
Daniel Oaks
a7949b6cb4
irc: Assorted golint cleanups
2016-10-23 11:48:57 +10:00
Daniel Oaks
29e811a531
oper: Support custom vhosts, and chghost
2016-10-23 11:28:31 +10:00
Daniel Oaks
8e2a8cb1b3
opers: Enforce oper class permissions
2016-10-23 11:13:08 +10:00
Daniel Oaks
f3459830e7
opers: Allow setting custom whois lines
2016-10-23 11:01:05 +10:00
Daniel Oaks
64bdedaee2
Add oper classes, for more finely-grained control
2016-10-23 10:47:11 +10:00
Daniel Oaks
425a521d27
channel: Fix MODE and WHO
2016-10-16 21:28:59 +10:00
Daniel Oaks
1e956355bf
NICK: Fix small bug when casefolding
2016-10-16 20:35:50 +10:00
Daniel Oaks
1bab81091f
Add MONITOR command
2016-10-16 20:14:56 +10:00
Daniel Oaks
e643c2101f
capability: Add 3.2 CAP values
2016-10-16 13:54:09 +10:00
Daniel Oaks
43e28e2fef
PROXY: Remove command, I don't think it's that useful
2016-10-15 16:29:34 +10:00
Daniel Oaks
0eebd6273c
AWAY: Only dispatch AWAY when cap-notify is used
2016-10-13 18:08:08 +10:00
Daniel Oaks
985f87d9d1
client: Remove silly testing Println
2016-10-13 16:21:19 +10:00
Daniel Oaks
5e72409695
Move from ascii(ish) unicode encoding to prelim rfc7700 using functions instead
2016-10-11 23:51:46 +10:00
Daniel Oaks
2bfcc553ce
client: Don't fail silently on error sending messages
2016-09-19 23:00:19 +10:00
Daniel Oaks
5d7d510348
client: Fix minor bug when doing SASL before NICK/USER
2016-09-19 22:30:29 +10:00
Daniel Oaks
754b74c21c
accounts: Add account-tag capability
2016-09-12 11:25:31 +10:00
Daniel Oaks
c2aa31001a
client: Fix initial RPL_UMODEIS
2016-09-07 21:50:42 +10:00
Daniel Oaks
220bc2c609
server-time: Fix time format
2016-09-07 21:48:03 +10:00
Daniel Oaks
b5e7d8968f
accounts: Add SASL EXTERNAL handler
2016-09-07 21:32:58 +10:00
Daniel Oaks
1679bc9ac2
accounts: Add initial SASL handler, still need to write mechanism handlers
2016-09-06 16:31:59 +10:00
Daniel Oaks
5269dc8776
accounts: Very roughly introduce account type
2016-09-05 22:35:13 +10:00
Daniel Oaks
49034cb20e
certfp: Add certfp retrieval from client
2016-09-05 13:53:39 +10:00
Daniel Oaks
e33a810522
capability: Add extended-join and userhost-in-names
2016-08-14 11:59:33 +10:00
Daniel Oaks
ef592d160c
capability: Add server-time
2016-08-13 22:04:21 +10:00
Daniel Oaks
d810033a02
client: Timeout ident more nicely
2016-07-02 19:12:00 +10:00
Daniel Oaks
199f8bd8ae
USER: disallow usernames that break the protocol
2016-06-30 23:55:44 +10:00
Daniel Oaks
19c2bb69fc
Allow looking up usernames with ident on connection
2016-06-30 19:28:34 +10:00
Daniel Oaks
5d3b185881
client: Use more accurate QUIT message for ping timeouts
2016-06-30 15:35:34 +10:00
Daniel Oaks
b820559050
modes: Add TLS umode (+Z)
2016-06-29 01:09:07 +10:00
Daniel Oaks
34a099b61a
Fix PING and PONG
2016-06-22 22:04:13 +10:00
Daniel Oaks
04442ddef1
Stuff is no longer completely broken. Just mostly.
2016-06-20 22:53:45 +10:00
Daniel Oaks
9e7a590f23
server: Fix
2016-06-19 21:59:18 +10:00
Daniel Oaks
2a519c8061
use server.name and server.nameString, name for checking and getting nice comparison, nameString for reply outputs
2016-06-19 15:43:16 +10:00
Daniel Oaks
7b13858f8c
client: Fix
2016-06-19 15:37:29 +10:00
Daniel Oaks
7fcc6bdbc4
channels: Fix
2016-06-19 14:55:24 +10:00
Daniel Oaks
08225c201d
continue work reorganising and redoing EVERYTHING
2016-06-19 10:01:30 +10:00
Daniel Oaks
e83283e7fd
urgh this should not even be commited yet, this will all be squashed out
2016-06-17 22:17:42 +10:00
Daniel Oaks
2f08401a0f
Attempt to add mostly-correct license info at the top of each file... track this stuff a bit better
2016-06-15 21:50:56 +10:00
Daniel Oaks
9860094020
socket: Use updated socket code
2016-06-15 21:21:45 +10:00
Daniel Oaks
8885f14f19
PROXY: Restrict to specified addresses/hostnames
2016-04-21 16:53:55 +10:00
Daniel Oaks
ed95f09725
Fix clients no longer being able to send commands after a single command errors out
2016-04-15 19:08:52 +10:00
Jeremy Latt
4ce4ba31c5
keep track of whether sockets are closed
2014-04-15 12:10:02 -07:00
Jeremy Latt
6c10add399
improve performance by using less goroutines
...
- get rid of command channel in Client
- get rid of loginTimer; use other timers instead
- move debugging code to debug.go
2014-04-15 12:10:02 -07:00
Jeremy Latt
b0bb0faadc
remove unnecessary String()s; rename parse functions
2014-03-28 14:33:31 -07:00
Jeremy Latt
3b12dec207
cleanup
2014-03-27 18:58:12 -07:00
Jeremy Latt
d696f2313e
stop leaking client goroutines; closes #34
2014-03-27 16:49:22 -07:00
Edmund Huber
2272aae213
spelling and gofmt
2014-03-23 06:50:07 +01:00
Edmund Huber
6267b6a40c
clean up /theater so that it doesn't need a bunch of pointers and that it reuses channel-scoped-user-modes machinery
2014-03-22 22:25:24 +01:00
Edmund Huber
d5bdc78d55
adding theater-mode, fixes #15
2014-03-20 05:05:18 +01:00
Jeremy Latt
8c44bb9ff3
ONICK command to allow operators to change users' nicks
2014-03-17 12:56:35 -07:00
Jeremy Latt
7a9f1d750b
explain why CheckPassword happens in client thread
2014-03-15 15:12:29 -07:00
Jeremy Latt
39b7c2a915
Merge remote-tracking branch 'origin/master' into cleanup
...
Conflicts:
irc/client.go
irc/commands.go
irc/constants.go
irc/reply.go
irc/server.go
irc/types.go
2014-03-13 12:38:44 -07:00
Jeremy Latt
2006aff9f7
break up types.go
...
- remove old interfaces, move to relevant files
- remove Phase in favor of a boolean flag
2014-03-12 17:52:25 -07:00
Jeremy Latt
e15f47c766
move to channel-based logging
2014-03-12 17:17:26 -07:00
Jeremy Latt
77d053ccac
get rid of editableCommand
2014-03-12 17:10:48 -07:00
Jeremy Latt
96a108f8da
mark unicode normalization with type
2014-03-12 16:45:22 -07:00
Jeremy Latt
cd2042dfea
Merge remote-tracking branch 'origin/master' into user-mask
2014-03-07 17:10:14 -08:00
Jeremy Latt
f56db354ee
fix client auth for no password
...
All clients are authorized if the server lacks a password.
2014-03-06 20:10:02 -08:00
Jeremy Latt
5d46e7d7fa
Merge remote-tracking branch 'origin/master' into user-mask
...
Conflicts:
irc/reply.go
irc/server.go
irc/types.go
2014-03-06 17:44:37 -08:00
Jeremy Latt
76852b0370
implement WHOWAS with a shared ringbuffer
2014-03-06 13:55:40 -08:00
Jeremy Latt
0874692aa8
send proper replies for cap protocol
2014-03-02 12:54:48 -08:00
Jeremy Latt
36602c9a3c
basic capability negotiation
...
- multi-prefix is supported as an example
2014-02-28 19:24:38 -08:00
Jeremy Latt
72726a39b8
many changes
...
- load config sub files relative to config file dir
- load config file by name
- expect bcrypt for passwords
- -genpasswd for generating config-file-safe passwords
- block client thread while checking passwords (PASS and OPER)
2014-02-24 09:48:46 -08:00
Jeremy Latt
be089e7f5f
do bcrypt in the client main routine
2014-02-23 22:21:39 -08:00
Jeremy Latt
0bf968e19e
move command parsing and hostname lookups into the socket routine
2014-02-23 17:04:24 -08:00
Jeremy Latt
ff5656fdb4
aggressively clean up client
2014-02-23 11:08:01 -08:00
Jeremy Latt
1283bd35c7
encapsulate client replies in method
2014-02-22 11:40:32 -08:00
Jeremy Latt
e1c4c8e8cc
don't send prefix on server-originated string coded replies
2014-02-20 20:08:32 -08:00
Jeremy Latt
ad513da486
do hostname lookups in the client read thread
2014-02-20 13:03:33 -08:00
Jeremy Latt
97881b555d
async hostname lookups
2014-02-20 11:51:45 -08:00
Jeremy Latt
c0dc733351
don't wait for writing to complete
2014-02-20 11:16:10 -08:00
Jeremy Latt
9960089226
format replies to strings instead of using a Reply struct
2014-02-19 22:20:34 -08:00
Jeremy Latt
25ebab37d3
replies shouldn't contain references to client
2014-02-19 19:30:49 -08:00
Jeremy Latt
9c385ededd
synchronize on last writes to client sockets
2014-02-19 18:46:46 -08:00
Jeremy Latt
af6a8ee6f0
remove channel buffering
2014-02-19 18:22:57 -08:00
Jeremy Latt
6265b70622
get rid of goroutines on client socket
2014-02-19 18:13:35 -08:00
Jeremy Latt
95f267ea4f
buffer all channels
2014-02-19 17:48:03 -08:00
Jeremy Latt
0cd6be8008
clean up nickname setting logic
2014-02-18 15:36:58 -08:00
Jeremy Latt
86d4cae141
swap refcounting friends for iteration
2014-02-18 15:28:20 -08:00
Jeremy Latt
9e471b5b5d
solve quit/connection close race
2014-02-18 13:25:21 -08:00
Jeremy Latt
2bc1b952a0
do idle in the server goroutine instead of the timeout goroutine
2014-02-18 11:22:56 -08:00
Jeremy Latt
4f106e7d3e
make server logging consistent with other logs
2014-02-18 10:22:40 -08:00
Jeremy Latt
58517ad4e8
fix closed channel on socket close
2014-02-18 10:13:57 -08:00
Jeremy Latt
9c1ab4f610
fix socket close race
2014-02-17 23:58:02 -08:00
Jeremy Latt
baf83e73d2
support USER from both RFCs 1459 and 2812
2014-02-17 22:10:48 -08:00
Jeremy Latt
bb64d38684
implement who reply like ngircd
2014-02-17 21:30:14 -08:00
Jeremy Latt
528588acfc
augment whois idle with signon time
2014-02-17 19:56:06 -08:00
Jeremy Latt
9a5f21e78c
beef up whois
2014-02-17 19:08:57 -08:00
Jeremy Latt
bd3ca4ae47
fix race in idle timeout; fix some string trimming; fix some replies
2014-02-17 18:10:52 -08:00
Jeremy Latt
1a7f56a903
clean up general command and name handling
2014-02-17 17:58:22 -08:00
Jeremy Latt
a55b912941
enforce nicks via lowercase strings
2014-02-17 15:25:32 -08:00
Jeremy Latt
6d8b381927
convert client bools to a flags map
2014-02-17 13:22:35 -08:00
Jeremy Latt
a9d7f64693
kick command
2014-02-16 23:29:11 -08:00
Jeremy Latt
4e56ea1bdc
get rid of unnecessary concurrency for channels and clients
2014-02-16 22:20:42 -08:00
Jeremy Latt
54ca916c85
stop login timer on destroy
2014-02-16 18:16:13 -08:00
Jeremy Latt
e411dafda7
get rid of mutexes in favor of channel-base syncing
2014-02-16 17:23:47 -08:00
Jeremy Latt
33b1e6c582
simplify Replier
2014-02-14 19:35:25 -08:00
Jeremy Latt
3a9027e3dc
don't double-close socket
2014-02-14 19:05:30 -08:00
Jeremy Latt
4d9742d033
organize server command into phases
2014-02-14 18:28:36 -08:00
Jeremy Latt
72a90d5544
don't close channels unless necessary
2014-02-14 08:57:17 -08:00
Jeremy Latt
6ea3c8f4d1
fix race conditions
2014-02-13 23:16:07 -08:00
Jeremy Latt
7051627fb2
avoid race double-close on replies
2014-02-13 21:10:31 -08:00
Jeremy Latt
7cef494d28
don't close replies twice
2014-02-13 20:56:15 -08:00
Jeremy Latt
be01a412d9
only quit registered clients
2014-02-13 20:52:42 -08:00
Jeremy Latt
dcc40bbac1
more logging
2014-02-13 20:42:06 -08:00
Jeremy Latt
541a40b056
touch should respect destroyed
2014-02-13 20:38:22 -08:00
Jeremy Latt
e0e61907ce
don't trigger connection closed on read and write goroutines
2014-02-13 20:30:51 -08:00
Jeremy Latt
03b6caa597
don't close replies too many times
2014-02-13 20:27:20 -08:00
Jeremy Latt
d35fe6088c
attempt to fix hang condition in quit sequence
2014-02-13 20:23:22 -08:00
Jeremy Latt
6301d2b47f
more logging
2014-02-13 19:44:42 -08:00
Jeremy Latt
8902ee040d
more logging; check client for each reply
2014-02-13 19:41:51 -08:00
Jeremy Latt
11537ad975
abstract net operations as Socket
2014-02-13 19:37:37 -08:00
Jeremy Latt
b8bbc7eeb5
add more logging
2014-02-13 18:59:45 -08:00
Jeremy Latt
b6a7d98b64
adjust authorization and add more hang logging
2014-02-13 18:39:33 -08:00
Jeremy Latt
ce931b23a2
simplify net logging
2014-02-13 18:17:20 -08:00
Jeremy Latt
965d8efdf8
add a login timout to close dropped connections
2014-02-13 13:19:26 -08:00
Jeremy Latt
c327042c94
destroy clients on socket close with quit
2014-02-13 09:47:10 -08:00
Jeremy Latt
7a2c9db503
don't allow send on closed channels
2014-02-13 09:35:59 -08:00
Jeremy Latt
ca25828804
sanify debug net logging
2014-02-12 21:18:02 -08:00
Jeremy Latt
415ccc7607
maybe fix networking hangs
2014-02-12 21:07:40 -08:00
Jeremy Latt
01fa48c73e
clear client channel list on destroy
2014-02-12 18:33:30 -08:00
Jeremy Latt
52dd2521c2
remove prefix from local replies; fix topic message
2014-02-12 18:14:19 -08:00
Jeremy Latt
08d9d5ab79
away modes
2014-02-11 15:44:58 -08:00
Jeremy Latt
cdae59ecf5
stub motd
2014-02-11 15:33:02 -08:00
Jeremy Latt
887f12cb31
get rid of channel abstraction for buffered socket io
2014-02-11 15:00:19 -08:00
Jeremy Latt
aac0efebee
send initial nick message to source client
2014-02-11 14:32:17 -08:00
Jeremy Latt
a34443f155
fix reverse dns
2014-02-10 19:39:53 -08:00
Jeremy Latt
e625f62baa
cancel timers when a client quits
2014-02-09 19:06:30 -08:00
Jeremy Latt
133b91b9f0
idle/quit timeout
2014-02-09 12:13:09 -08:00
Jeremy Latt
8a90634c0a
irc operators
2014-02-09 10:07:40 -08:00
Jeremy Latt
6367e4b654
fix ModeString
2014-02-09 08:53:06 -08:00
Jeremy Latt
1787ac8ebf
use Reply() to wrap channel
2014-02-09 08:48:11 -08:00
Jeremy Latt
55d3d6e946
don't overwrite base command
2014-02-08 23:51:51 -08:00
Jeremy Latt
a3b7441939
type cleanup
2014-02-08 23:15:05 -08:00
Jeremy Latt
c4f457705a
minimal whois implementation
2014-02-08 17:43:59 -08:00
Jeremy Latt
06648393a1
implement join/quit and channel messages properly
2014-02-08 17:10:04 -08:00