Daniel Oaks
a70cc6713c
(hopefully) fix labeled-response behaviour
2018-02-11 08:57:15 +10:00
Daniel Oaks
e0fa97d344
Get labeled-reply working just fine
2018-02-06 00:21:08 +10:00
Daniel Oaks
470109461b
responsebuffer: Handle sending early properly
2018-02-04 21:34:44 +10:00
Daniel Oaks
3680a3fe9a
Merge
2018-02-04 21:32:48 +10:00
Daniel Oaks
3561046bec
Make ERR_CANNOT_RESUME use RPL_NONE numeric
2018-02-04 21:25:08 +10:00
Daniel Oaks
ca6a162696
handlers: Make sure all functions have appropriate comments
2018-02-04 05:48:44 +10:00
Daniel Oaks
52e3dde77a
Move mkcerts package under lib/
2018-02-04 05:34:26 +10:00
Daniel Oaks
2419f69879
Move all errors into errors.go
2018-02-03 22:03:36 +10:00
Daniel Oaks
3ef4c5f799
Split NS/CS commands into separate functions
2018-02-03 21:38:28 +10:00
Daniel Oaks
2ecec25d28
Misc refactoring
2018-02-03 21:15:07 +10:00
Daniel Oaks
d854bac78e
Fix broken modes tests
2018-02-03 20:28:02 +10:00
Daniel Oaks
3634d0601e
Split modes into a subpackage (this is painful, but will force us to simplify and improve the API for interacting with modes)
2018-02-03 20:21:32 +10:00
Daniel Oaks
9f71d9ce12
Add right copyright to handlers.go
2018-02-03 19:48:30 +10:00
Daniel Oaks
afd6ca610c
Split language into a subpackage
2018-02-03 19:46:14 +10:00
Daniel Oaks
1b14230758
...fix info string, how did that get messed up?
2018-02-03 19:30:23 +10:00
Daniel Oaks
47d2ce351c
Centralise all command handlers in handlers.go
2018-02-03 19:28:02 +10:00
Daniel Oaks
29266ce80f
nickserv: Fix help display
2018-02-03 19:00:27 +10:00
Daniel Oaks
6784cf82bf
nickserv: Add NS REGISTER and NS IDENTIFY
2018-02-02 23:44:52 +10:00
Daniel Oaks
872f88eb94
Merge pull request #187 from slingamn/unixdomain.1
...
support unix domain sockets (#184 )
2018-02-02 21:36:13 +10:00
Daniel Oaks
ed1fa7704c
nickserv: Point users to an actual help entry (not a great one, but very slightly better)
2018-02-02 16:37:06 +10:00
Shivaram Lingamneni
2a7f055ef3
support unix domain sockets
2018-02-01 16:19:07 -05:00
Shivaram Lingamneni
bec39ee8cb
log new listener creation
2018-02-01 15:53:44 -05:00
Shivaram Lingamneni
2d6ddf7eb9
kiwi's gateway uses the flag secure
instead of tls
2018-01-31 22:01:13 -05:00
Shivaram Lingamneni
b7f66fb1de
allow WEBIRC to set the TLS flag over local plaintext connections
2018-01-31 21:08:49 -05:00
Shivaram Lingamneni
09a17b32be
disallow WEBIRC after PROXY
2018-01-31 20:04:05 -05:00
Daniel Oaks
7b88d21e58
Possible IdleTimer lock fix
2018-01-30 14:26:29 +10:00
Daniel Oaks
8bc2c0ee67
temp *badbadbad*
2018-01-30 14:20:12 +10:00
Daniel Oaks
cabb3b219d
Fix some config loading issues
2018-01-28 10:52:07 +10:00
Daniel Oaks
16a55cbba8
Add labeled-responses for MODE
2018-01-28 10:51:46 +10:00
Daniel Oaks
00099eb4ba
Make batch IDs smaller
2018-01-28 00:45:16 +10:00
Daniel Oaks
07fc902b21
Labeled-Response
2018-01-28 00:40:34 +10:00
Daniel Oaks
fc9b501a77
Show translator names in INFO
2018-01-25 19:51:02 +10:00
Daniel Oaks
ddd7f0dc99
Add 'are supported by this server' to translatable strings
2018-01-23 23:31:29 +10:00
Daniel Oaks
c5a6d22192
Hopefully apply new languages better, esp. during rehash
2018-01-23 21:27:15 +10:00
Daniel Oaks
638b0c03fc
Better translate HELP entries and indexes
2018-01-23 21:17:14 +10:00
Daniel Oaks
099fd7c08f
Update translation backend stuff a little more
2018-01-23 17:22:39 +10:00
Daniel Oaks
1a5ff05493
Update translation framework
2018-01-23 16:50:19 +10:00
Daniel Oaks
ddec79f8d0
Update translation framework a touch more
2018-01-23 15:09:47 +10:00
Daniel Oaks
75dcff7183
Update translation framework, add badge to readme
2018-01-23 15:06:55 +10:00
Shivaram Lingamneni
4b1aa2b952
remove unused member ChannelRegistry.channels
2018-01-22 13:51:25 -05:00
Shivaram Lingamneni
7edd9032d3
remove newConns channel
2018-01-22 13:51:25 -05:00
Shivaram Lingamneni
728863a17c
move Commands initialization to an init()
2018-01-22 13:51:25 -05:00
Shivaram Lingamneni
62fc2c0cc3
remove Server.commands
2018-01-22 13:47:57 -05:00
Daniel Oaks
b2afd55285
Don't load example translation file, make example actually list all translatable strings
2018-01-22 22:16:07 +10:00
Daniel Oaks
090095b2b9
Set default client language when creating them
2018-01-22 21:30:28 +10:00
Daniel Oaks
275227a461
Make like every client-facing string translatable
2018-01-22 21:26:01 +10:00
Daniel Oaks
0569b5cfaa
RESUME: Fix a few bugs, play modestrings 'n' all
2018-01-22 20:55:20 +10:00
Daniel Oaks
f8b39cfe61
Send fake channel joins on RESUME
2018-01-22 17:58:10 +10:00
Daniel Oaks
7760634efe
Actually let the takeover work somewhat more properly
2018-01-22 17:57:38 +10:00
Daniel Oaks
0d5327de8a
Fix some issues, add RPL_WHOISACCOUNT
2018-01-22 17:57:38 +10:00
Daniel Oaks
ac99e82192
Fix build issues
2018-01-22 17:57:38 +10:00
Daniel Oaks
d09f085b1a
Add very initial RESUME cap and command
2018-01-22 17:57:38 +10:00
Daniel Oaks
e99f22488f
Make LANGUAGE support work
2018-01-22 17:30:31 +10:00
Daniel Oaks
a7fdade41d
Extend to include example translation stuff
2018-01-21 16:49:17 +10:00
Daniel Oaks
ba77a95c81
Very initial beginning of languages implementation
2018-01-21 16:11:16 +10:00
Daniel Oaks
3b3c1c733a
Support bot mode +B
2018-01-07 12:56:51 +10:00
Daniel Oaks
3ba8af714e
Use base 36 when generating message IDs, gives us full 0-9a-z to use while preserving uniqueness nicely
2018-01-04 00:21:35 +10:00
Daniel Oaks
63bd52d471
Make message IDs much shorter (thanks @prawnsalad!)
2018-01-04 00:13:32 +10:00
Daniel Oaks
713fc59691
CAP: Correctly suspend registration for CAP REQ as per the spec
2017-12-28 13:50:42 +10:00
Daniel Oaks
7c624f9a38
Setup v0.10.4-unreleased devel ver
2017-12-28 13:41:36 +10:00
Daniel Oaks
5e9f0fd411
Release v0.10.3
2017-12-26 12:43:37 +10:00
Daniel Oaks
197ab520bf
Change casemapping name and advertisement to match new spec
2017-12-26 12:30:04 +10:00
Daniel Oaks
36b26f99be
Merge pull request #173 from slingamn/timeouts.3
...
refactor idle timeouts again
2017-12-11 14:53:05 +10:00
Shivaram Lingamneni
d8d1705035
refactor idle timeouts again
2017-12-06 23:23:25 -05:00
Daniel Oaks
e0519a6387
caps: Rename maxline cap
2017-12-06 13:11:38 +10:00
Shivaram Lingamneni
ad1e00629b
fix a race condition in idle timeouts
...
squigz on freenode reported an issue where bots were responding to PING
on time, but were occasionally being timed out regardless. This was a race
condition: timeout was detected as idleTime >= it.quitTimeout, but if
the client responded promptly to its PING message and sent no further messages,
but the main loop subsequently slept for longer than expected (i.e., significantly
longer than quitTimeout), this condition would be met through no fault of the
client's.
The fix here is to explicitly track the last time the ping was sent, then test
!lastSeen.After(lastPinged) instead (making use of time.Time's monotonicity).
It is sufficient that the measurement of lastPinged happens-before the PING is sent.
2017-12-02 20:30:26 -05:00
Shivaram Lingamneni
f5e7ec525d
synchronize accesses to client.atime
2017-12-02 20:05:06 -05:00
Shivaram Lingamneni
b4907dadb9
fix a bug where the uncasefolded nickname wasn't being recorded
...
Also, rename the nickname vars to hopefully make things clearer
2017-11-22 16:56:14 -05:00
Shivaram Lingamneni
d5a5f939dd
review fixes
2017-11-22 16:35:57 -05:00
Shivaram Lingamneni
52b0fb71e7
refactor ClientManager
2017-11-22 05:09:38 -05:00
Daniel Oaks
bfcada11dc
KLINE: Save name of the banning oper
2017-11-19 10:32:32 +10:00
Daniel Oaks
dedb029272
DLINE: Save name of the banning oper
2017-11-19 10:27:40 +10:00
Daniel Oaks
8036df92fc
WHO: Require first param, matching other servers
2017-11-19 10:10:10 +10:00
Shivaram Lingamneni
b83d454554
fix ban regexp not being recompiled on removal
2017-11-13 18:25:51 -05:00
Shivaram Lingamneni
b1e12ca1eb
allow unprivileged users to list bans
2017-11-13 18:25:51 -05:00
Daniel Oaks
fc8007e6e4
Setup v0.10.3-unreleased devel ver
2017-11-13 22:52:48 +10:00
Daniel Oaks
11ea52b0f0
Release v0.10.2
2017-11-13 22:46:50 +10:00
Shivaram Lingamneni
ca8a0b7091
fix a wide-ranging assortment of crash bugs
2017-11-13 02:42:20 -05:00
Daniel Oaks
ff50a25b65
Merge pull request #161 from slingamn/chanreg.3
...
remove registeredChannelsMutex
2017-11-13 12:46:23 +10:00
Daniel Oaks
efb54163a5
Setup v0.10.2-unreleased devel ver
2017-11-13 12:45:10 +10:00
Daniel Oaks
f2d4698baf
Release v0.10.1
2017-11-09 15:07:40 +10:00
Shivaram Lingamneni
6d619bf411
fix channel mode change privilege enforcement
2017-11-08 23:37:38 -05:00
Shivaram Lingamneni
d4cb15354f
remove registeredChannelsMutex
...
This moves channel registration to an eventual consistency model,
where the in-memory datastructures (Channel and ChannelManager)
are the exclusive source of truth, and updates to them get persisted
asynchronously to the DB.
2017-11-08 22:24:33 -05:00
Shivaram Lingamneni
60b861e07e
fix a race in regenerateMembersCache
...
The rationale for why regenerateMembersCache didn't need to hold the Lock()
throughout was subtly wrong. It is true that at least some attempt to
regenerate the cache would see *all* the updates. However, it was possible for
the value of `result` generated by that attempt to lose the race for the final
assignment `channel.membersCache = result`.
The fix is to serialize the attempts to regenerate the cache, without adding
any additional locking on the underlying `Channel` fields via
`Channel.stateMutex`. This ensures that the final read from `Channel.members`
is paired with the final write to `Channel.membersCache`.
2017-11-07 14:38:18 -05:00
Shivaram Lingamneni
9b74c47b74
rename some getters
...
Rename getters in conformance with the "Effective Go" styleguide recommendation:
https://golang.org/doc/effective_go.html#Getters
2017-11-03 02:36:55 -04:00
Shivaram Lingamneni
94cf438f51
remove channelJoinPartMutex
2017-10-30 05:21:47 -04:00
Daniel Oaks
d715abf0f0
Add the INFO command
2017-10-29 07:59:56 +00:00
Daniel Oaks
384e6e1720
client: Fix crash from not having right line lengths computed
2017-10-29 05:04:32 +00:00
Daniel Oaks
c6b6a25906
Merge remote-tracking branch 'slingmann/recovery'
2017-10-29 04:37:57 +00:00
Daniel Oaks
c09ca729c4
Merge remote-tracking branch 'slingmann/membersmutex.2'
2017-10-29 04:36:42 +00:00
Daniel Oaks
03978c6b85
Setup 0.10.1-unreleased devel ver
2017-10-29 04:35:15 +00:00
Shivaram Lingamneni
6130e48a67
always log the panic trace
2017-10-26 05:15:55 -04:00
Shivaram Lingamneni
7b58bf76ef
make error recovery configurable
2017-10-26 04:19:01 -04:00
Shivaram Lingamneni
80968d000f
log panic traces via the usual logging mechanism
2017-10-25 13:22:02 -04:00
Shivaram Lingamneni
054f57e215
recover from client-caused panics
2017-10-23 19:08:32 -04:00
Shivaram Lingamneni
71e82a9ccf
move a check, avoiding a crash
2017-10-23 18:01:28 -04:00
Shivaram Lingamneni
240f121e5e
bug fix: SAMODE should list other users' modes
2017-10-22 23:07:21 -04:00
Daniel Oaks
fbaf2d8e3a
Release v0.10.0
2017-10-23 12:51:42 +10:00
Shivaram Lingamneni
fa83ccd82b
refactor synchronization for Channel
2017-10-22 19:50:16 -04:00
Shivaram Lingamneni
c026cc5ab6
review fixes
...
* move constant definitions
* always give the client at least quitTimeout to respond to ping,
even if registerTimeout or quitTimeout are longer than idleTimeout
2017-10-15 22:37:36 -04:00
Daniel Oaks
8910dc59ee
Fix KLINE quit/error message and corrects comment on Client.Quit
2017-10-16 10:48:05 +10:00
Shivaram Lingamneni
7ccb485b50
add two getters
2017-10-15 19:46:25 -04:00
Shivaram Lingamneni
e540fde816
refactor idle timeouts
2017-10-15 19:46:25 -04:00
Shivaram Lingamneni
b86fc105cd
eliminate destroyMutex
2017-10-15 19:46:25 -04:00
Shivaram Lingamneni
545e8d71db
eliminate quitMutex
2017-10-15 19:46:25 -04:00
Daniel Oaks
b0649cb5d3
WEBIRC: Allow protecting with fingerprint and parse tls
flag
2017-10-16 08:47:49 +10:00
Daniel Oaks
e1868f8a47
WEBIRC: Export fields so the config loads properly
2017-10-15 18:15:18 +10:00
Daniel Oaks
34987ba53a
Allow WEBIRC from specified hosts
2017-10-15 16:18:14 +10:00
Daniel Oaks
16c4b4166a
Change debug files from ergonomadic -> oragono
2017-10-15 12:48:10 +10:00
Daniel Oaks
ef25b5b5c7
draft/sts -> sts
2017-10-15 07:58:18 +10:00
Daniel Oaks
1324c5ff83
Allow simple way of listing DLINEs and KLINEs
2017-10-15 07:53:24 +10:00
Daniel Oaks
90bb3f79d3
Merge remote-tracking branch 'slingamn/default_tweaks'
2017-10-11 07:44:36 +10:00
Daniel Oaks
2791476f16
INVITE: Fix dumb crash (thanks for pointing this out, @josephbisch!)
2017-10-10 11:17:41 +10:00
Shivaram Lingamneni
d66470f1c4
review fix: rename various packages and objects
2017-10-09 17:38:06 -04:00
Shivaram Lingamneni
58faad90dd
add loglines for IP limits
2017-10-09 13:24:12 -04:00
Shivaram Lingamneni
ac9ac5ef19
create separate irc/connection_limiting package
2017-10-09 13:24:12 -04:00
Shivaram Lingamneni
a2ac4eeef9
refactor limits and throttling
2017-10-09 13:24:12 -04:00
Daniel Oaks
695faefd93
Allow formatting codes in the MOTD
2017-10-08 20:17:49 +10:00
Daniel Oaks
d4a8984e63
Initial implementation of labeled-responses for WHOIS
2017-10-08 11:05:05 +10:00
Daniel Oaks
a90ee16a20
caps: Test Add, Remove and String
2017-10-08 09:26:01 +10:00
Daniel Oaks
378d55af65
Add tests to subpackages
2017-10-07 22:19:37 +10:00
Daniel Oaks
10949a434a
kline: Gofmt -s
2017-10-06 12:45:32 +10:00
Daniel Oaks
9f7e395c96
logger: Fix comments
2017-10-06 12:44:11 +10:00
Daniel Oaks
68b1dc9e72
Split passwd into its' own subpackage
2017-10-06 00:03:53 +10:00
Daniel Oaks
207c1074df
Split utils out to a separate subpackage
2017-10-05 23:47:43 +10:00
Daniel Oaks
4aa52956e5
Split isupport to its' own subpackage
2017-10-05 23:39:57 +10:00
Daniel Oaks
eac6a69782
Fix some notes and add some comments.
2017-10-05 23:29:34 +10:00
Daniel Oaks
797b9f0996
help: Link to https oragono.io
2017-10-05 23:09:13 +10:00
Shivaram Lingamneni
456174ed53
review fixes for raw i/o notification
2017-10-05 21:06:22 +10:00
Shivaram Lingamneni
aff1752d67
refactor logging to implement #142
2017-10-05 21:05:57 +10:00
Daniel Oaks
f7f049973f
Rip out REST API and web interface.
...
It's not really used and I'd rather not have it here unless I'm able to actively maintain it properly and build out the web interface.
I might re-add it later but for now I'd rather not have it unless anyone's actively using it.
2017-10-05 17:14:16 +10:00
Daniel Oaks
04d5d2fcc2
monitor: Fix target output when adding targets
2017-10-04 18:54:02 +10:00
Shivaram Lingamneni
d39ee2fafa
fix: RPL_MONONLINE must be server-prefixed
...
also, remove the self-notification check; clients are probably not
monitoring themselves, and it doesn't much matter if they are
2017-10-04 03:52:45 -04:00
Shivaram Lingamneni
84c1533b53
review fix: report unfolded nicks in /monitor l
when possible
2017-10-04 03:16:22 -04:00
Shivaram Lingamneni
3877db2391
review fixes: rename MonitorManager methods
2017-10-04 02:59:59 -04:00
Shivaram Lingamneni
26686d7e86
refactor monitor and /oper implementations
2017-10-04 01:19:27 -04:00
Shivaram Lingamneni
23a66fa502
fix various data races, including 2 introduced by #139
2017-10-02 04:42:50 -04:00
Shivaram Lingamneni
e66735619e
tweak some defaults
...
* Lower ident timeout to 1.5 seconds, as discussed in #oragono
* Enforce connection limits at the granularity of ipv4 /32's and ipv6 /64's
* Raise the limit on number of new connections to 64 every 10 minutes
(for the benefit of people behind large IPv4 NATs)
2017-10-02 00:01:29 -04:00
Daniel Oaks
b8d47c3e4f
channel: Server opers shouldn't override nooutside, reggedonly and moderated modes. if they want to do that sort of thing, they have SAMODE and all to be explicit about it
2017-10-01 15:18:52 +10:00
Daniel Oaks
e3a0387cf5
channel: Fix +m (moderated) and +R (registeredonly) channel modes, add note about opers overriding +m/+R
2017-10-01 15:14:32 +10:00
Daniel Oaks
b850a6c1d9
caps: Actually remove MessageIDs (accidentally left it here with the merge)
2017-09-29 17:54:17 +10:00
Daniel Oaks
b4fcb45af0
Add license stuff to the top of caps/ and sno/ files I guess
2017-09-29 17:33:29 +10:00
Daniel Oaks
275449e6cc
caps: Move most capability-handling types into the caps package
2017-09-29 17:25:58 +10:00
Shivaram Lingamneni
ae441d22d3
refactor [dk]linemanagers
...
* Synchronize map accesses
* Be more aggressive about cleaning up expired lines
* CIDR dlines did not work (nil dereference)
2017-09-29 02:07:09 -04:00
Daniel Oaks
cea6565b80
client: HasCapabs -> HasRoleCapabs to make it more clear exactly what this means
2017-09-29 12:11:06 +10:00
Daniel Oaks
810908db7f
Add comments
2017-09-29 12:09:48 +10:00
Daniel Oaks
9bfdc4fdfb
Move caps to their own package to prevent conflicts
2017-09-29 12:07:52 +10:00
Daniel Oaks
830484feb6
AWAY: Send correct mode string (thanks for pointing out this silly bug @jwheare!)
2017-09-29 11:56:18 +10:00
Daniel Oaks
c39206ad13
Don't create new caps out of nowhere, dummy
2017-09-29 11:55:54 +10:00
Daniel Oaks
ffe7375a68
Fix proxied DLINE/throttle/etc error messages
2017-09-29 07:18:08 +10:00
Shivaram Lingamneni
a9e4ed237e
deduplicate d-line and throttle code
2017-09-29 07:05:59 +10:00
Daniel Oaks
8b1f722655
server: Fix the PROXY command
2017-09-29 07:05:22 +10:00
Daniel Oaks
3f4bf38bee
Merge branch 'rehash_refactor.4' of https://github.com/slingamn/oragono
2017-09-29 06:50:54 +10:00
Daniel Oaks
8ea5632269
Setup v0.9.2-unreleased devel ver
2017-09-29 06:50:09 +10:00
Shivaram Lingamneni
b7b24c34b4
rehash cannot modify the server name
2017-09-28 02:58:09 -04:00
Shivaram Lingamneni
3b0f1ff1cc
delete websocket support as per discussion on #139
2017-09-28 02:53:08 -04:00
Shivaram Lingamneni
e8b1870067
refactor the rehash implementation
2017-09-28 02:13:24 -04:00
Daniel Oaks
eae04e8c51
Release v0.9.1
2017-09-28 15:49:10 +10:00
Daniel Oaks
cd8b4877b6
accounts: Check for account logins correctly, fixes registration. Also fix a typo, thanks squigz!
2017-09-28 15:49:01 +10:00
Shivaram Lingamneni
1612c141d5
send the actual quit message to friends
2017-09-25 22:47:03 -04:00
Daniel Oaks
a78a8f1130
client: Only add friends if they actually have the caps we request. Friends() is entirely broken because of this
2017-09-26 08:36:34 +10:00
Daniel Oaks
79de443496
channel: Don't send TOPIC on entirely new channel
2017-09-26 08:01:10 +10:00
Daniel Oaks
2759d8f5d3
modes: Allow 'MODE b' (used by irssi for channel sync) (thanks @dx!)
2017-09-26 07:58:17 +10:00
Daniel Oaks
3b0d9c4db9
Send nick parameter correctly on ERR_NOSUCHNICK numerics
2017-09-26 07:52:43 +10:00
Daniel Oaks
1ccdd67a45
Setup v0.9.1-unreleased devel ver
2017-09-26 00:45:42 +10:00
Daniel Oaks
02cd620bd4
Release v0.9.0
2017-09-25 11:29:43 +10:00
Daniel Oaks
e95c75f87d
monitor: Fix a crash around the MONITOR command
2017-09-25 11:29:27 +10:00
Daniel Oaks
acec0e1690
PROXY: Check DLINEs and connection limits/throttle on new proxied connections
2017-09-25 10:52:02 +10:00
Daniel Oaks
38498b752b
PROXY: Make sure given IPs are valid and pass them through appropriately
2017-09-25 10:52:01 +10:00
Daniel Oaks
7d140c9e43
PROXY: Update some comments, disallow from registered clients
2017-09-25 10:52:01 +10:00
Shivaram Lingamneni
99f02ede20
restore PROXY protocol support
...
support for PROXY was removed in 43e28e2fef
. After discussion,
it's worth keeping around in case of client compatibility issues,
and until /rehash support is more mature.
2017-09-25 10:52:01 +10:00
Daniel Oaks
8cd016e4c0
server: Fix comments
2017-09-25 10:52:01 +10:00
Shivaram Lingamneni
0f0f2d1314
refactor listener update/destroy code
...
Don't close and reopen listeners
2017-09-11 18:40:15 -04:00
Shivaram Lingamneni
d5528f6e56
execute rehash() in its own goroutine
...
This prevents a deadlock:
1. rehash() is executing on the main goroutine
2. it's trying to stop a listener goroutine
3. the listener goroutine needs to hand off a new connection to newConns
4. but the main goroutine is blocked by rehash() so it can't receive it
2017-09-11 14:03:53 -04:00
Shivaram Lingamneni
b1376d5f71
Fix a concurrency error with Server.listeners
...
See #134 ; there was a `fatal error: concurrent map read and map write`
due to unsynchronized accesses to `Server.listeners`. Now, `listeners`
is only accessed by `NewServer` and `rehash`, so it doesn't need
synchronization.
2017-09-11 11:29:14 -04:00
Daniel Oaks
c48d869f4d
Allow multiple account registrations for testing
2017-09-11 09:16:13 +10:00
Shivaram Lingamneni
6063d30bc5
add a test for default channel mode parsing
2017-09-06 19:51:50 -04:00
Shivaram Lingamneni
333afe1062
make default channel modes configurable
2017-09-06 17:37:29 -04:00
Daniel Oaks
d052ca8a8d
accounts: Disable reg if client's already registered an account
2017-09-06 14:38:55 +10:00
Daniel Oaks
ac91a3e484
strings: Follow latest advice on PRECIS regarding string stabilizing
2017-09-06 14:38:55 +10:00
Daniel Oaks
f9ef97b204
modes: Add experimental, untested +R user mode to block messages from unregistered users
2017-09-06 14:38:54 +10:00
Shivaram Lingamneni
9a9a85cd55
fix hostmask issue
...
PTR records ending in . (e.g., `google-public-dns-b.google.com.`)
were considered invalid
2017-09-05 11:43:50 -04:00
Daniel Oaks
ffabd26653
Make sure ISUPPORT outputs are sorted and tested
2017-07-30 22:42:37 +10:00
Daniel Oaks
97cfc0b629
Print warnings to heavily encourage exposing port 6697 as a TLS port
2017-07-27 23:29:08 +10:00
Daniel Oaks
0b75351e56
Merge pull request #128 from euank/return-bad-ip-err
...
server: close connection on parse-ip failure
2017-07-26 17:19:08 +10:00
Euan Kemp
3b47f3d470
config: don't casefold tls names
...
I don't think casefolding things like `:6697` ever made sense.
Since these are configured by the ircd operator, it makes sense to
assume they'll already be in a canonical form regardless.
2017-07-25 23:28:29 -07:00
Euan Kemp
449ef4cea1
strings: disallow ':' in nicks
...
This matches the behavior of inspircd at the very least.
Previously, the comment above that section claimed ':' should be
disallowed, but the code didn't do so.
I also simplified the code a little bit and added tests.
2017-07-25 23:28:29 -07:00
Euan Kemp
2b155f9b1e
server: close connection on parse-ip failure
...
Close the client's connection if we're unable to parse their IP.
This also simplifies the check to reduce indentation by a level.
Finally, this replaces the two-var construction of the pseudo-const
messages with an inline dereference via a slice to allow constructing
them less noisily.
2017-07-25 22:19:40 -07:00
Daniel Oaks
b807f492ed
OPER: If client's already opered-up, ignore new OPER attempts
2017-07-23 22:50:50 +10:00
Euan Kemp
2e8a98a925
irc: fix timer memleak
...
This is a gotcha called out in the `time.After` docs. `time.After` will
leak the underlying channel if nothing ever receives on it.
2017-07-14 17:21:53 +10:00
Daniel Oaks
c0fbc7908d
sasl: Always send a 906 in response to AUTHENTICATE *
2017-06-30 11:06:10 +10:00
Daniel Oaks
7735ddfa03
Setup v0.8.3-unreleased devel ver
2017-06-30 11:04:24 +10:00
Daniel Oaks
376fa70244
Release v0.8.2
2017-06-30 01:14:50 +10:00
Daniel Oaks
b633db3c9d
modes: Also allow Voice
2017-06-30 01:14:38 +10:00
Daniel Oaks
6ffc96d495
modes: Let users give other users privs in channels. Silly bug.
2017-06-30 00:59:51 +10:00
Daniel Oaks
279ac928ae
Setup 0.8.2-unreleased for next release
2017-06-28 14:59:01 +10:00
Daniel Oaks
325ed3e112
Release v0.8.1
2017-06-26 15:57:38 +10:00
Daniel Oaks
23a26f83fe
client: Show real IP and whether the target's using TLS in WHOIS
2017-06-23 05:15:10 +10:00
Daniel Oaks
1c0c4841a1
General comments, fix misspellings and lints
2017-06-19 14:53:16 -06:00
Daniel Oaks
e5980beb7d
SANICK: Fix check for new user
2017-06-18 08:23:51 -06:00
Daniel Oaks
c9ed749538
Rename deps
2017-06-15 10:14:19 -06:00
Daniel Oaks
a8fa131244
Move to new repo
2017-06-14 12:00:53 -06:00
Daniel Oaks
5b3cea8b98
xline: Add snomasks for setting/removing xlines
2017-06-11 10:17:55 -06:00
Daniel Oaks
309ec8191e
Add 'k' snomask for kills (including those coming from dlines and klines)
2017-06-11 10:01:39 -06:00
Daniel Oaks
3ee26041ff
Send snomask on client quits
2017-06-11 09:42:37 -06:00
Daniel Oaks
8a6ba6f9cc
LIST: Start implementing ELIST conditions
2017-06-11 07:45:58 -06:00
Daniel Oaks
55d8eb5dce
Make 'nick' snomask look nicer
2017-06-10 17:07:44 -06:00
Daniel Oaks
34863a6320
JOIN: Disable JOIN 0 support, in line with Insp
2017-06-10 17:03:23 -06:00
Daniel Oaks
4128ff6137
server: Check for channel permissions when renaming channels
2017-06-04 20:06:11 -06:00
Daniel Oaks
0f8ab4eaec
server: Add proposed RENAME command
2017-06-04 20:01:37 -06:00
Daniel Oaks
53190ef131
Send a whole lot more snomasks
2017-05-28 12:43:09 -06:00
Daniel Oaks
ebb9d629d7
xline: Add ANDKILL param to kill all matching clients
2017-05-24 00:58:36 -06:00
Daniel Oaks
a271481c41
Setup 0.8.1-unreleased for next release
2017-05-16 21:08:15 -06:00
Daniel Oaks
f051b43f27
Release v0.8.0
2017-05-09 22:01:14 +10:00
Daniel Oaks
ab2ae70f13
help: Add help text for snomasks
2017-05-09 21:33:03 +10:00
Daniel Oaks
d847d55c06
Fix wordWrap function so it doesn't drop chars, and fix client.Notice() to automagically split very long lines.
2017-05-09 21:09:44 +10:00
Daniel Oaks
9fe7c143c8
server: Remove useless comments, make idle/quit function layouts nicer
2017-05-09 20:37:48 +10:00
Daniel Oaks
fb63691c8b
commands: Timeout unregistered clients
2017-05-09 20:36:45 +10:00
Daniel Oaks
ff82872934
reg: Rename commands to match
2017-05-08 09:28:30 +10:00
Daniel Oaks
fd793d6adb
Add very initial snomasks
2017-05-08 09:15:16 +10:00
Daniel Oaks
1afd3b8f78
server: Change localconnect msg to include username/realname
2017-05-01 19:03:04 +10:00
Daniel Oaks
f5ecf70ecf
logger: Flush file writes to ensure they get written out
2017-05-01 19:02:49 +10:00
Daniel Oaks
7ac96114c3
log: Allow logging to stdout
2017-05-01 18:51:37 +10:00
Daniel Oaks
51425b7764
help: Generate index of help topics
2017-04-30 13:53:49 +10:00
Daniel Oaks
5c518531be
Integrate StackImpact profiling
2017-04-30 12:35:07 +10:00
Daniel Oaks
2bd4d03ecc
Prevent copying locks because that's silly
2017-04-30 11:12:25 +10:00
Daniel Oaks
4254672133
socket: Fix bad mutex unlock
2017-04-19 08:50:57 +10:00
Daniel Oaks
c911ff2bcd
Squash a bunch of possible races
2017-04-18 22:26:01 +10:00
Daniel Oaks
f7a4f5d956
socket: Move to a timing-out send method that reduces goroutines and ensures QUIT/ERROR are sent
2017-04-18 20:29:00 +10:00
Daniel Oaks
067f982da4
socket: Remove old comment
2017-04-18 17:19:55 +10:00
Daniel Oaks
f665ebac16
channels: Help prevent issues when join/parting
2017-04-18 17:19:44 +10:00
Daniel Oaks
4a66771c39
socket: Attempt to close sockets better
2017-04-18 16:43:24 +10:00
Daniel Oaks
1c917a19a7
client: Ensure ERROR message is parsed when quitting
2017-04-17 23:05:47 +10:00
Daniel Oaks
9cfa92ede8
modes: Avoid unnecessarily sending unknown mode numerics
2017-04-17 23:05:24 +10:00
Daniel Oaks
86957d4392
socket: Fix quitting
2017-04-17 22:35:25 +10:00
Daniel Oaks
7aaa30d399
Setup 0.7.3-unreleased for next release
2017-04-17 21:59:53 +10:00
Daniel Oaks
9264ffc857
Release v0.7.2
2017-04-17 21:16:22 +10:00
Daniel Oaks
121269661b
socket: Make closing work a little better
2017-04-17 21:03:07 +10:00
Daniel Oaks
e0035dfa04
types: Make ChannelNameMap use mutexes to fix crash
2017-04-17 21:03:02 +10:00
Daniel Oaks
ff3a864aa3
accountreg: Fix crash
2017-04-17 21:00:49 +10:00
Daniel Oaks
9a94121281
JOIN: Fix a dumb bug. Really dumb bug.
2017-04-17 20:28:01 +10:00
Daniel Oaks
88b5dd5621
Fix misspelling
2017-04-16 11:36:33 +10:00
Daniel Oaks
166cddecb1
Fix nits
2017-04-16 11:35:44 +10:00
Daniel Oaks
22216d4d60
Fix lots of nits
2017-04-16 11:31:33 +10:00
Daniel Oaks
8ba0bf347d
Setup 0.7.2-unreleased for next release
2017-04-16 10:59:31 +10:00
Daniel Oaks
511da5b434
Release v0.7.1
2017-03-28 17:34:52 +10:00
Daniel Oaks
0046025d60
Enable chanmode +r, fix bug with registering channels
2017-03-28 17:32:03 +10:00
Daniel Oaks
317a804644
Fix dates at top of source files
2017-03-27 22:15:02 +10:00
Daniel Oaks
99fd9af432
Setup 0.8.0-unreleased for next release
2017-03-27 22:07:11 +10:00
Daniel Oaks
1741a0fad1
Release v0.7.0
2017-03-27 14:53:50 +10:00
Daniel Oaks
013635a827
channel: Give founder mode if channel already exists and founder joins
2017-03-27 14:52:34 +10:00
Daniel Oaks
451c40f170
WHO: Fix a small hang
2017-03-27 14:30:00 +10:00
Daniel Oaks
6aebd4aad9
channel: Add comments, fix a small bug with moderated mode
2017-03-27 14:29:51 +10:00
Daniel Oaks
300d02bd9c
channel: Kill a race condition that locked up the server.
...
Specifically, if you joined a channel while someone else was trying to part. the Join method would grab the lock, the Quit method would queue to grab the lock, the Join method would unlock and then try to regrab the lock, and it would get into a situation where nobody would have the lock and everyone would be waiting for it.
This caused weird oddities with clients.
2017-03-26 22:11:09 +10:00
Daniel Oaks
cec3416eae
modes: Kill a crash
2017-03-26 22:09:46 +10:00
Daniel Oaks
a8e13b062b
logger: Make safer to avoid file write races
2017-03-26 21:41:52 +10:00
Daniel Oaks
861b65eb39
channels: Automagically save channel bans/excepts/invites
2017-03-26 20:37:13 +10:00
Daniel Oaks
1798572015
Add comments
2017-03-25 09:19:13 +10:00
Daniel Oaks
b4b120a83e
nickserv: Point towards /HELP REG since not implemented yet
2017-03-24 21:59:13 +10:00
Daniel Oaks
91fab3ba55
socket: Better deal with chanfloods
2017-03-24 21:54:22 +10:00
Daniel Oaks
aad1070633
client: Unlock channel mutex earlier
2017-03-24 21:54:06 +10:00
Daniel Oaks
e34475d536
Merge branch 'master' into devel+chanserv
2017-03-24 21:25:37 +10:00
Daniel Oaks
f5eeca5339
channel: Fix not being able to Part
2017-03-24 21:24:51 +10:00
Daniel Oaks
194411716d
channel: Automagically save topic updates on registered channels
2017-03-24 13:49:29 +10:00
Daniel Oaks
70b7606996
config: Allow enabling/disabling channel reg
2017-03-24 12:52:38 +10:00
Daniel Oaks
580385392a
channel: Alert of given modes (+o/+q) on join
2017-03-24 12:38:07 +10:00
Daniel Oaks
6842d2ead6
Merge master
2017-03-24 12:29:13 +10:00
Daniel Oaks
05074e966d
modes: Continue overhauling
2017-03-24 12:23:21 +10:00
Daniel Oaks
f5536d7945
socket: Add a simple println when SendQ exceeded, config comment update
2017-03-23 12:12:39 +10:00
Daniel Oaks
c3be2d0d46
socket: Fixup sending code so we can support more connections
2017-03-23 12:07:23 +10:00
Daniel Oaks
f29a5f0e70
socket: Very initial SendQ limit
2017-03-14 08:12:39 +10:00
Daniel Oaks
de4db1c6ef
socket: Start overhaul of sockets and writing
2017-03-13 23:53:21 +10:00
Daniel Oaks
73d406ccd6
logger: Don't output control chars on log files
2017-03-13 23:52:28 +10:00
Daniel Oaks
657ed644cb
modes: Start overhauling modes
2017-03-13 08:08:18 +10:00
Daniel Oaks
b33b217fab
Add very initial ChanServ and NickServ virtual clients
...
As well, add channel registration and re-applying founder privs on the first client joining the channel. I'm going to re-architect our modes system to better acocunt for this sort of change.
2017-03-11 22:01:40 +10:00
Daniel Oaks
439331cfb8
logger: Move to separate package, make *much* nicer
2017-03-10 22:02:08 +10:00
Daniel Oaks
7bb53af44e
logger: Enable Windows support, properly lock writing to stderr
2017-03-10 12:27:05 +10:00
Daniel Oaks
531cf675c8
rehash: Add note about cap del/new order
2017-03-09 19:09:58 +10:00
Daniel Oaks
5c38800a02
config: Advertise STS draft, fix subsequent REHASHing
2017-03-09 19:07:35 +10:00
Daniel Oaks
25a373b7eb
logger: Add notice on connection when server is logging all I/O
2017-03-08 21:57:31 +10:00
Daniel Oaks
3d597a4fb3
accounts: Login to accounts properly
...
Avoids letting clients login to two accounts at once
2017-03-08 21:50:12 +10:00
Daniel Oaks
0c86c454c2
dline/kline: Allow year/month/day durations
2017-03-07 19:56:21 +10:00
Daniel Oaks
8834de5b32
rest: Expose DLINEs and KLINEs as xlines
2017-03-07 19:55:14 +10:00
Daniel Oaks
5de03f2169
logging: Reverse arrows for in and out, in ~= left, out ~= right
2017-03-06 22:12:27 +10:00
Daniel Oaks
b328a4fcd3
logging: Add userinput and output, fix up lots
2017-03-06 22:11:10 +10:00
Daniel Oaks
415a8117ee
logger: Better colours and output
2017-03-06 20:15:28 +10:00
Daniel Oaks
3d443339e5
logger: Initial colours
2017-03-06 16:28:38 +10:00
Daniel Oaks
29e89b16a0
logger: Very initial working new logs
2017-03-06 15:50:23 +10:00
Daniel Oaks
45dd882ec4
logger: Make new logger
2017-03-06 15:16:00 +10:00
Daniel Oaks
1ddeec9225
config: Parse logger config
2017-03-06 13:31:10 +10:00
Daniel Oaks
ba0f291e20
logger: Initial new logger
2017-03-06 13:05:33 +10:00
Daniel Oaks
3058161f62
config: Fix accounts registration/authentication
2017-03-06 09:43:52 +10:00
Daniel Oaks
d1cb4b9b37
server: Bunch of nits
2017-03-06 09:27:08 +10:00
Daniel Oaks
542503f63e
ws: Up the read/write buffer size
2017-03-06 09:26:54 +10:00
Daniel Oaks
9f6c4363b7
USERHOST: Clean up a bit, support multiple nicks
2017-03-06 09:14:15 +10:00
vegax87
b3a54cbb2c
Merge branch 'master' of https://github.com/DanielOaks/oragono
2017-02-09 12:23:10 +01:00
Martin Lindhe
730d283201
server-time: convert local time to UTC before using it, fixes #94
2017-02-07 01:37:32 +01:00
vegax87
ef7c94e109
removed blank lines
2017-01-23 23:49:41 +01:00
vegax87
a623d8ef1e
Solved! RPL_USERHOST must use trailing
2017-01-23 21:20:42 +01:00
vegax87
2ff48a7088
I forgot a little typo
2017-01-23 18:51:09 +01:00
vegax87
1bb9502206
I don't understand why USERHOST is working with spaces...
2017-01-23 18:49:42 +01:00
vegax87
f3c9c2b4b5
USERHOST command
2017-01-23 17:44:35 +01:00
Daniel Oaks
9e65d9b87e
Add SAMODE command, restricted by oper capab
2017-01-23 09:36:13 +10:00
Daniel Oaks
c8b5fb65e0
WHOIS: Use inbuilt functionality to force trailing, as suggested by @vegax87
2017-01-23 09:03:49 +10:00
Daniel Oaks
ccae0cf7cd
LIST: Fix list to display right member counts
2017-01-22 13:01:44 +10:00
Daniel Oaks
ea0121aeff
strings: Prevent crash
2017-01-22 12:44:05 +10:00
Daniel Oaks
c2fedfb177
client: Forego the ForceTrailing func, just automagically work it out based on the command name
2017-01-22 10:43:02 +10:00
Daniel Oaks
b257c5955e
client: Add SendForceTrailing function, to force the last param to be a trailing
2017-01-20 23:51:36 +10:00
Daniel Oaks
db919722cb
cull some old, unnecessary files
2017-01-19 16:12:10 +10:00
Daniel Oaks
4ca23f3554
Setup 0.7.0-unreleased for next release
2017-01-19 15:39:19 +10:00
Daniel Oaks
a9dfff4f30
Release v0.6.0
2017-01-19 08:12:59 +10:00
Daniel Oaks
67d65b0e3d
client: Ignore empty lines, send ERROR with no prefix
2017-01-19 07:56:33 +10:00
Daniel Oaks
52127edde3
config: Better explain linelen
2017-01-18 09:46:30 +10:00
Daniel Oaks
cbe49ff3d8
Use a better line-splitting algorithm
2017-01-18 08:05:31 +10:00
Daniel Oaks
522001d4f6
Cleanup message sending
2017-01-18 07:27:06 +10:00
Daniel Oaks
e741c1476b
Implement message-ids draft
2017-01-18 07:26:41 +10:00
Daniel Oaks
62dc3c8f66
server: Implement TAGMSG draft command
2017-01-18 07:26:05 +10:00
Daniel Oaks
f6185fa336
Get it working, using not-great and very initial splitting code
2017-01-18 07:26:05 +10:00
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
a0c97542ee
LUSERS: minor chan cleanup to avoid counting
2017-01-17 22:52:19 +10:00
Daniel Oaks
298f4907ac
LUSERS: Minor cleanups, we don't need to worry about changelog lines for now
2017-01-17 22:49:14 +10:00
vegax87
750f0ffcb6
removed Unknown connections
2017-01-17 12:09:51 +01:00
vegax87
b4427fa782
some comments
2017-01-15 15:29:16 +01:00
vegax87
4797331962
Basic implementation of LUSERS command
2017-01-15 01:48:47 +01:00
Daniel Oaks
2de273462b
WHOIS: Hack to make silly clients work
2017-01-14 13:54:57 +10:00
Daniel Oaks
5e6ac67010
casemapping: Update name
2017-01-14 08:02:24 +10:00
Daniel Oaks
2b240faa90
strings: Fix nick bugs, use UsernameCaseMapped
2017-01-14 02:32:15 +10:00
Daniel Oaks
0a3de9a912
whois: Send channels without prefix (handled by Send())
2017-01-13 13:12:36 +10:00
vegax87
a54dcb9057
Fixed WHOIS Command
2017-01-13 02:05:58 +01:00
Daniel Oaks
91d59575ce
Add initial automated connection throttling
2017-01-12 21:17:50 +10:00
Daniel Oaks
4168eaafbb
Basic implementation of KLINEs
2017-01-11 22:38:16 +10:00
Daniel Oaks
1bc08f18b7
dline: Display correct message on bad dline
2017-01-11 22:37:58 +10:00
Daniel Oaks
4b5f4b6755
dline: Fix a bug where UNDLINE didn't remove them from datastore
2017-01-11 22:22:26 +10:00
Daniel Oaks
e9324c3250
modes: Fix some more mutexes
2017-01-11 12:26:58 +10:00
Daniel Oaks
c39bebc696
Fix various locks around joining, kicking and quitting
2017-01-11 12:16:51 +10:00
Daniel Oaks
6f7c683247
channel: RWMutex for members access
2017-01-11 02:09:08 +10:00
Daniel Oaks
efb3000717
client_lookup_set: Use RWMutex
2017-01-11 01:06:02 +10:00
Daniel Oaks
658d1656fa
accounts: Only allow verified accounts to SASL auth
2017-01-11 01:02:26 +10:00
Daniel Oaks
b612b1be60
Setup 0.6.0-unreleased for next release
2016-12-11 19:46:39 +10:00
Daniel Oaks
20fe4c7704
Release v0.5.0
2016-12-10 22:24:49 +10:00
Daniel Oaks
1cc217a9ae
sasl: Follow PLAIN spec more closely
2016-12-01 18:48:11 +10:00
Daniel Oaks
8eb8193b18
JOIN: Only give chanop, not chan founder (will save that for regged chans)
2016-12-01 18:12:51 +10:00
Daniel Oaks
f57a43f3da
KICK: Allow multiple kicks to the same channel
2016-12-01 18:10:38 +10:00
Daniel Oaks
a8eabe8e9c
client: Fix a lot of bugs around setting NICK
2016-11-29 22:33:10 +10:00
Daniel Oaks
5eafd2656e
channel: Send channel NOTICEs properly
2016-11-29 21:41:26 +10:00
Daniel Oaks
7068072292
monitor: Send with account-tag where appropriate
2016-11-29 21:40:56 +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
9314edd405
modes: Convey cmode changes to other channel members...
2016-11-29 19:16:01 +10:00