3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-15 08:29:31 +01:00
Commit Graph

2115 Commits

Author SHA1 Message Date
Jeremy Latt
b30e247e77 properly persist channels 2014-02-25 15:57:35 -08:00
Jeremy Latt
a30bb540e9 rewrite parseLine to be much saner about utf8 2014-02-25 13:24:32 -08:00
Jeremy Latt
e409bcec99 simplify new channel insert 2014-02-25 13:12:11 -08:00
Jeremy Latt
02abeeb164 persistent channels persisted to a sqlite db 2014-02-25 11:11:34 -08:00
Jeremy Latt
de5538f5d5 add persistent flag for channels 2014-02-25 10:04:59 -08:00
Jeremy Latt
0531c40481 simplify semantic version constant 2014-02-25 09:42:50 -08:00
Jeremy Latt
6882edeff7 version 1.1.0 2014-02-25 09:14:50 -08:00
Jeremy Latt
1fe73aaa9e kill command 2014-02-25 09:10:16 -08:00
Jeremy Latt
4d2d18caf1 time command 2014-02-25 07:45:40 -08:00
Jeremy Latt
f0305cf01a invite command 2014-02-25 07:35:52 -08:00
Jeremy Latt
d6ec1e719b add a version command for sumeet 2014-02-24 22:04:11 -08:00
Jeremy Latt
f0773c4e9e increase buffer for a server channel 2014-02-24 19:00:09 -08:00
Jeremy Latt
cc6f764c85 minor cleanup 2014-02-24 17:45:04 -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
2229645a39 refactor server command loop 2014-02-23 19:13:45 -08:00
Jeremy Latt
41e6baf9d4 get rid of a race; use pointers where possible 2014-02-23 18:05:06 -08:00
Jeremy Latt
0856a9fa81 flag socket as closed when writes fail 2014-02-23 17:16:35 -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
3b56b5bf42 expose various go internals as a DEBUG command 2014-02-23 10:04:31 -08:00
Jeremy Latt
f482b6b82f add all channel mask list replies 2014-02-22 15:01:11 -08:00
Jeremy Latt
c5c7469cf0 good ol' fashioned refactoring 2014-02-22 13:15:31 -08:00
Jeremy Latt
c7298c55b9 flesh out channel modes
- deprecate 's' mode
- add user limit
- don't leak key in mode messages to non-members
- begin refactoring Mode()
2014-02-22 13:08:25 -08:00
Jeremy Latt
21337cda7f add error responses for mode command 2014-02-22 12:15:34 -08:00
Jeremy Latt
1283bd35c7 encapsulate client replies in method 2014-02-22 11:40:32 -08:00
Jeremy Latt
39fb4bfb53 restrict new channels to channel regex 2014-02-21 17:19:02 -08:00
Jeremy Latt
c8701febd0 loosen restrictions on WHO replies 2014-02-21 11:09:46 -08:00
Jeremy Latt
f9bf422ba7 be more lax about whitespace when parsing commands from clients 2014-02-20 21:09:56 -08:00
Jeremy Latt
c1edddb9a1 fix whois reply 2014-02-20 20:47:05 -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
0ad05abf5f omit prefix for non-numeric replies from the server 2014-02-20 19:55:17 -08:00
Jeremy Latt
23f01ff9ee handle CAP command silently in registration too 2014-02-20 19:55:03 -08:00
Jeremy Latt
b6d8f62674 adjust ping message 2014-02-20 19:22:08 -08:00
Jeremy Latt
52ffc77d8d don't allow double-joining 2014-02-20 18:56:13 -08:00
Jeremy Latt
1486411db1 render a single part string for all channel members 2014-02-20 18:20:07 -08:00
Jeremy Latt
7dffa530c2 send part message from correct source 2014-02-20 16:56:05 -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
f090c616b3 reduce writes 2014-02-18 20:28:35 -08:00
Jeremy Latt
dcb4ac90e2 use a buffered channel for socket writing 2014-02-18 17:46:11 -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
b17e62d0b0 names command 2014-02-17 21:02:03 -08:00
Jeremy Latt
046723a709 make whois channels possibly multiline 2014-02-17 20:47:41 -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
2ecc66b9d9 add more modes to arg-having modes 2014-02-17 11:46:40 -08:00
Jeremy Latt
f0fc3b492c list command 2014-02-16 23:51:27 -08:00
Jeremy Latt
a9d7f64693 kick command 2014-02-16 23:29:11 -08:00
Jeremy Latt
af5a05f390 use a select in the server commands loop 2014-02-16 22:38:43 -08:00
Jeremy Latt
d5c9681a10 instantiate clients in the server command goroutine 2014-02-16 22:30:01 -08:00
Jeremy Latt
dc5e258f88 don't use a goroutine when initializing clients 2014-02-16 22:26:33 -08:00
Jeremy Latt
cd4503be31 allow blank lines from the client 2014-02-16 22:24:49 -08:00
Jeremy Latt
a894e3f37f parse lines more robustly 2014-02-16 22:22:46 -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
74b8221db7 use mutexes more 2014-02-16 10:42:25 -08:00
Jeremy Latt
81a0f19390 fix bad ref in part command 2014-02-16 09:41:16 -08:00
Jeremy Latt
a17490e801 disable no-topic reply 2014-02-16 09:39:11 -08:00
Jeremy Latt
0f6ee63e6e fix a race 2014-02-15 20:20:37 -08:00
Jeremy Latt
213afc0481 fix another race 2014-02-15 20:01:28 -08:00
Jeremy Latt
ae02596214 get rid of extra topic messages 2014-02-15 19:56:38 -08:00
Jeremy Latt
488b2ccf8f implement channel modes and messages properly 2014-02-15 19:49:20 -08:00
Jeremy Latt
0bfa2fb98f channel mode flags and member modes 2014-02-14 21:57:08 -08:00
Jeremy Latt
6983d1930c RPL_ENDOFNAMES should come from server 2014-02-14 19:38:31 -08:00
Jeremy Latt
33b1e6c582 simplify Replier 2014-02-14 19:35:25 -08:00
Jeremy Latt
ac186a0669 don't close socket send channel 2014-02-14 19:30:58 -08:00
Jeremy Latt
50f1012c92 don't close socket sending channel 2014-02-14 19:30:07 -08:00
Jeremy Latt
87cc184ec0 type numeric codes 2014-02-14 19:25:14 -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
29df88fb7a more race conditions 2014-02-14 09:00:49 -08:00
Jeremy Latt
72a90d5544 don't close channels unless necessary 2014-02-14 08:57:17 -08:00
Jeremy Latt
9600be82a3 fix more data races 2014-02-14 08:42:56 -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
3ba928cee6 remove server command mutex 2014-02-13 20:58:13 -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
a9eae872c9 mutex server commands 2014-02-13 20:08:16 -08:00
Jeremy Latt
42ff4410ad more logging 2014-02-13 19:49:31 -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
6e0ab99d38 look up PROXY hostnames async 2014-02-13 11:27:04 -08:00
Jeremy Latt
4b98d2a45b clear out old clients; fix NameReply 2014-02-13 11:06:07 -08:00
Jeremy Latt
c805006ab8 save reply source id at init time for nick changes 2014-02-13 10:57:58 -08:00
Jeremy Latt
261aaa128f try to fix nick message sending 2014-02-13 10:19:53 -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
2aa61b0dbe clean up and fix targets for quit message 2014-02-12 18:27:36 -08:00
Jeremy Latt
52dd2521c2 remove prefix from local replies; fix topic message 2014-02-12 18:14:19 -08:00
Jeremy Latt
db2a21fee0 ignore target in whois 2014-02-12 09:42:47 -08:00
Jeremy Latt
6daf81ea91 notice command 2014-02-11 17:11:59 -08:00
Jeremy Latt
09887b2db3 motd command 2014-02-11 16:35:32 -08:00
Jeremy Latt
a203a3ca16 ison command 2014-02-11 15:58:54 -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
0e07b29010 avoid nil reference in who reply 2014-02-11 09:09:16 -08:00
Jeremy Latt
a34443f155 fix reverse dns 2014-02-10 19:39:53 -08:00
Jeremy Latt
4379cb8e1c add PROXY protocol support 2014-02-10 18:40:06 -08:00
Jeremy Latt
a8141a0e1c async new connections 2014-02-10 17:54:35 -08:00
Jeremy Latt
8d0adf253d configure ipv4/6 in config file 2014-02-10 13:52:28 -08:00
Jeremy Latt
fb65203805 stub cap command 2014-02-10 11:14:34 -08:00
Jeremy Latt
28bd5a40ba trim . from reverse address lookup 2014-02-09 21:10:36 -08:00
Jeremy Latt
959167cbe7 reverse dns lookup 2014-02-09 21:04:37 -08:00
Jeremy Latt
9b89f1a0fb check permissions before doing channel modes 2014-02-09 20:04:17 -08:00
Jeremy Latt
56cb8512dc relax SSL restrictions 2014-02-09 19:59:45 -08:00
Jeremy Latt
3fd73e3252 don't close socket channels to avoid panics 2014-02-09 19:59:25 -08:00
Jeremy Latt
db0f494604 TLS support 2014-02-09 19:41:00 -08:00
Jeremy Latt
e625f62baa cancel timers when a client quits 2014-02-09 19:06:30 -08:00
Jeremy Latt
035a8f6cde do a type conversion better 2014-02-09 19:03:56 -08:00
Jeremy Latt
f3da4e0286 remove double nick-change message 2014-02-09 15:18:18 -08:00
Jeremy Latt
6653b55416 interpret local ips as localhost 2014-02-09 15:14:53 -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
281558072a configure server with json 2014-02-09 07:53:42 -08:00
Jeremy Latt
55d3d6e946 don't overwrite base command 2014-02-08 23:51:51 -08:00
Jeremy Latt
04f881a617 channel 'no outside messages' flag 2014-02-08 23:33:56 -08:00
Jeremy Latt
a3b7441939 type cleanup 2014-02-08 23:15:05 -08:00
Jeremy Latt
20257ec624 use ModeOp everywhere 2014-02-08 22:42:14 -08:00
Jeremy Latt
93f4b6859a more channel mode parsing and bad listing 2014-02-08 22:06:10 -08:00
Jeremy Latt
d370abcd4c minimal who command 2014-02-08 18:49:52 -08:00
Jeremy Latt
d8951e1b48 minimal channel mode command 2014-02-08 18:14:39 -08:00
Jeremy Latt
a0eed1d687 properly implement join/part 2014-02-08 17:53:06 -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
Jeremy Latt
3f9495cda0 add data structures for decoding mode messages 2014-02-08 14:20:23 -08:00
Jeremy Latt
b9cb539219 organize like a proper go package 2014-02-08 13:19:35 -08:00