Jeremy Latt
37e15d7f62
v1.4.1
2014-03-28 14:41:24 -07:00
Jeremy Latt
2e212e3692
Merge pull request #35 from jlatt/fix-goroutine-leak
...
fix two bugs
2014-03-28 14:41:00 -07:00
Jeremy Latt
2d2e63a1b7
Merge pull request #33 from jlatt/async-write-flush
...
async all write buffer flushes
2014-03-28 14:34:37 -07:00
Jeremy Latt
b0bb0faadc
remove unnecessary String()s; rename parse functions
2014-03-28 14:33:31 -07:00
Jeremy Latt
21a86c3216
fix gcstats debugging command
2014-03-28 13:03:06 -07:00
Jeremy Latt
f32df20a83
get rid of useless assignment
2014-03-28 12:11:01 -07:00
Jeremy Latt
63a46498ce
reuse replies where possible
2014-03-27 19:04:34 -07:00
Jeremy Latt
3b12dec207
cleanup
2014-03-27 18:58:12 -07:00
Jeremy Latt
2dc69c7e3d
use a Scanner instead of ReadString
2014-03-27 18:53:01 -07:00
Jeremy Latt
5f268e4847
async all write buffer flushes
2014-03-27 18:34:31 -07:00
Jeremy Latt
d696f2313e
stop leaking client goroutines; closes #34
2014-03-27 16:49:22 -07:00
Jeremy Latt
c2e3bbe494
fix whois; closes #32
2014-03-27 16:48:13 -07:00
Edmund Huber
2272aae213
spelling and gofmt
2014-03-23 06:50:07 +01:00
Edmund Huber
34b01b115e
add a type for CTCP-encoded strings, and NOTICEs for error cases
2014-03-23 06:47:21 +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
Jeremy Latt
bffad06a26
v1.4
2014-03-21 23:25:19 -07: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
abf00e22ec
LIKE quoting should convert to string for SQL
2014-03-17 12:56:12 -07:00
Jeremy Latt
874f3628c9
fix another Name => string conversion
2014-03-15 19:18:57 -07:00
Jeremy Latt
7a9f1d750b
explain why CheckPassword happens in client thread
2014-03-15 15:12:29 -07:00
Jeremy Latt
7db4347419
bind to listening sockets before asyncing
2014-03-13 17:19:39 -07:00
Jeremy Latt
d85e6681d9
move modes code to its own file; fix SQL (un)marshalling
2014-03-13 13:22:38 -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
0126edc7af
move capability handling code to a single file
2014-03-12 17:38:11 -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
d1a299792e
don't buffer channels (except signal channel)
2014-03-12 16:58:11 -07:00
Jeremy Latt
4268c4a936
don't set CapNegotiating for blind CAP REQ
2014-03-12 16:57:15 -07:00
Jeremy Latt
96a108f8da
mark unicode normalization with type
2014-03-12 16:45:22 -07:00
Jeremy Latt
97886dd00f
relax regex restrictions for nicknames
2014-03-08 20:03:36 -08:00
Jeremy Latt
f1b610e1c1
v1.3
2014-03-08 19:24:55 -08:00
Jeremy Latt
465313c9ac
Merge remote-tracking branch 'origin/master' into user-mask
...
Conflicts:
irc/types.go
2014-03-08 19:23:10 -08:00
Jeremy Latt
81df7b4a5c
comments and improvements for client set
2014-03-08 19:22:04 -08:00
Jeremy Latt
33df043961
fix CAP messages
2014-03-08 14:00:13 -08:00
Jeremy Latt
cf76d2bd77
persist and load channel mask lists
2014-03-07 18:14:39 -08:00
Jeremy Latt
04c30c8c9b
channel invite mode/list
2014-03-07 17:36:20 -08:00
Jeremy Latt
cd2042dfea
Merge remote-tracking branch 'origin/master' into user-mask
2014-03-07 17:10:14 -08:00
Jeremy Latt
d4093e7f8b
mask lists (ban, except, invite)
2014-03-07 17:09:49 -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
4bcd42ff34
Merge pull request #8 from jlatt/cap-protocol
...
basic capability negotiation
2014-03-06 17:39:12 -08:00
Jeremy Latt
12ae89ca14
minor cleanup/refactoring
2014-03-06 17:07:23 -08:00
Jeremy Latt
adde42a1bf
update ClientLookupSet when username changes
2014-03-06 16:53:15 -08:00
Jeremy Latt
76852b0370
implement WHOWAS with a shared ringbuffer
2014-03-06 13:55:40 -08:00
Jeremy Latt
41a6027d4e
move ClientLookupSet to its own file
2014-03-06 13:10:54 -08:00
Jeremy Latt
b2055595e1
WHOWAS command
2014-03-06 12:14:21 -08:00
Jeremy Latt
69cdad45ac
partially-working sqlite-based usermasks
2014-03-06 11:56:32 -08:00
Jeremy Latt
832a5e1e19
allow empty server password
2014-03-06 11:00:48 -08:00
Jeremy Latt
d54f530d13
Merge remote-tracking branch 'origin/master' into cap-protocol
...
Conflicts:
irc/server.go
2014-03-06 10:34:50 -08:00
Jeremy Latt
5c6f8ff92a
improve logging
2014-03-05 23:07:55 -08:00
Jeremy Latt
fa5b1e6cf7
Merge pull request #9 from jlatt/gcfg
...
switch from JSON to gcfg config files
2014-03-05 23:02:22 -08:00
Jeremy Latt
04bb79a610
fix invite message to clients
2014-03-05 22:55:22 -08:00
Jeremy Latt
d6688a3047
allow | in nicks
2014-03-02 13:10:47 -08:00
Jeremy Latt
0874692aa8
send proper replies for cap protocol
2014-03-02 12:54:48 -08:00
Jeremy Latt
92e7a7961f
notify on more signals
2014-03-02 11:51:29 -08:00
Jeremy Latt
fa165a9d74
Merge remote-tracking branch 'origin/master' into gcfg
...
Conflicts:
ergonomadic.go
irc/config.go
irc/server.go
2014-03-02 11:42:43 -08:00
Jeremy Latt
2340464265
Merge pull request #10 from jlatt/cleanup
...
cleanup
2014-03-02 11:37:06 -08:00
Jeremy Latt
6aa6f0aeaa
notify clients when the server shuts down
2014-03-02 11:36:00 -08:00
Jeremy Latt
8f0d2b89ee
v.1.2.12
2014-03-02 11:06:02 -08:00
Edmund Huber
857907320d
allow underscores in nicks
2014-03-02 19:56:21 +01:00
Jeremy Latt
22c1cfdc3e
chdir instead of relativizing paths in config
2014-03-01 21:51:52 -08:00
Jeremy Latt
9aa7debbfe
move password handling into a single file
2014-03-01 15:18:49 -08:00
Jeremy Latt
b421971b61
move db init/open functions into a single file
2014-03-01 15:09:58 -08:00
Jeremy Latt
83d021fcb7
switch to gcfg for conf file
...
- add some validation for config file
- add comments explaining config
- remove TLS listener since most clients can't use it anyway
- remove unused nick generation function
2014-03-01 14:38:01 -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
542744d52a
fix line parsing function
2014-02-27 21:21:47 -08:00
Jeremy Latt
8c8d371ae2
don't give operator to the first person to enter an empty persistent channel
2014-02-27 20:42:12 -08:00
Jeremy Latt
f17855fce9
check channel emptiness when anyone leaves
2014-02-27 18:33:44 -08:00
Jeremy Latt
e33a65ec72
fix channel persistence
2014-02-26 21:52:17 -08:00
Jeremy Latt
04f0b2c48d
trim trailing space from commands
2014-02-26 16:18:52 -08:00
Jeremy Latt
9aeb813cf5
restrict nicknames to proper character set
2014-02-26 13:42:29 -08:00
Jeremy Latt
6f00f89efa
relax unicode parsing rules
...
NFKC was previously used for all text. Now, we use NFKC for all args but
the last, which may be free text. This arg is normalized with NFC to
allow for formatting characters.
2014-02-26 13:11:29 -08:00
Jeremy Latt
4df8ec12f6
allow nick changing
2014-02-26 12:24:52 -08:00
Jeremy Latt
39911a812d
handle mode command with trailing empty arguments
2014-02-26 12:08:01 -08:00
Jeremy Latt
66f9b42125
avoid duplicate mode changes
2014-02-25 22:19:21 -08:00
Jeremy Latt
0d277025c1
fix channel insert statement
2014-02-25 21:59:49 -08:00
Jeremy Latt
9dc229b98f
skip nick change if there is no difference
2014-02-25 20:47:59 -08:00
Jeremy Latt
e9c5e4794e
version 1.2.0
2014-02-25 20:24:30 -08:00
Jeremy Latt
45bb0d05e7
normalize all unicode input from the client
2014-02-25 20:22:07 -08:00
Jeremy Latt
c35d5d1b8a
code review
...
- SEM_VER instead of SEMVER
- persist user limit along with other params
2014-02-25 16:13:47 -08:00
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