Shivaram Lingamneni
a211ddfcdb
work around znc's broken nickserv support
2019-02-17 21:29:04 -05:00
Daniel Oaks
09909e3b3d
Merge pull request #396 from slingamn/issue394
...
fix #394
2019-02-18 10:24:35 +10:00
Daniel Oaks
7cf8aaccf6
Merge pull request #352 from slingamn/chanreglimit.1
...
track channel registrations per account
2019-02-18 07:08:57 +10:00
Daniel Oaks
c604638b7c
Merge pull request #386 from slingamn/regenabled
...
allow SAREGISTER even when normal registration is fully disabled
2019-02-18 07:08:04 +10:00
Shivaram Lingamneni
a5b9634783
fix #394
2019-02-17 14:29:04 -05:00
Shivaram Lingamneni
344a1d7e48
fix #392
2019-02-17 06:51:48 -05:00
Shivaram Lingamneni
a5f04495a1
fix #389
2019-02-15 13:34:09 -05:00
Shivaram Lingamneni
d147708158
allow SAREGISTER even when normal registration is fully disabled
2019-02-14 20:42:02 -05:00
Shivaram Lingamneni
754934b429
unregister should boot clients if sasl is required
2019-02-14 15:42:07 -05:00
Shivaram Lingamneni
9ce1d31b90
fix HS STATUS for logged-out users
2019-02-14 15:08:45 -05:00
Shivaram Lingamneni
519d19c364
fix #364
2019-02-13 16:48:26 -05:00
Daniel Oaks
a273ef624c
Merge pull request #377 from slingamn/kickfail
...
fix another three bugs that were reported today
2019-02-14 07:23:56 +10:00
Shivaram Lingamneni
c019fa3ab2
fix #375
2019-02-13 15:48:15 -05:00
Shivaram Lingamneni
e2e07c0eee
fix #374
2019-02-13 15:09:23 -05:00
Shivaram Lingamneni
b7ec121c19
fix some KICK issues
...
reported by bogdomania
1. KICK without privileges incorrectly returned ERR_CANNOTSENDTOCHAN
2. Halfops should be able to kick voice and unprivileged, but not other halfops
2019-02-13 14:38:10 -05:00
Shivaram Lingamneni
4c7a5585db
fix #371
2019-02-13 13:22:00 -05:00
Daniel Oaks
78a0b322f7
Make it act as intended
2019-02-13 23:42:03 +10:00
Daniel Oaks
53ed368701
Draft implementation of draft/setname
2019-02-13 23:22:16 +10:00
Shivaram Lingamneni
7786043275
make the land-grab check case-insensitive
2019-02-13 03:19:47 -05:00
Shivaram Lingamneni
6d690b0e36
add loglines for account registration, login, and unregistration
2019-02-13 02:54:27 -05:00
Shivaram Lingamneni
f40c363170
compatibility mode for NS IDENTIFY
...
Standard nickserv clients like znc's expect (by default) to send just:
PRIVMSG NickServ :identify $passphrase
with the account name assumed to be the currently held nick.
Let's support this in the common case where the client doesn't have a certfp
(if it does, the first argument is the account name, not the passphrase).
2019-02-13 02:54:27 -05:00
Shivaram Lingamneni
5beb0764f2
review fix
2019-02-12 12:53:58 -05:00
Shivaram Lingamneni
e4c9351254
fix: set the existing channels unregistered
2019-02-12 02:09:31 -05:00
Shivaram Lingamneni
afe94d43c3
update resume support to draft/resume-0.3
2019-02-12 01:03:19 -05:00
Daniel Oaks
3220242fae
Merge pull request #358 from slingamn/resumefix.3
...
RESUME should end cap negotiation without requiring CAP LS
2019-02-10 20:59:23 +10:00
Daniel Oaks
6ca2cb26d7
Merge pull request #351 from slingamn/changelog.2
...
changelog and manual updates, plus some last-minute fixes
2019-02-10 20:45:45 +10:00
Shivaram Lingamneni
46083f5739
fix typo in CHATHISTORY help url
...
reported by bogdomania
2019-02-10 02:09:48 -05:00
Shivaram Lingamneni
35abe7940a
RESUME should end cap negotiation without requiring CAP LS
2019-02-09 20:26:32 -05:00
Shivaram Lingamneni
370255bec1
review fixes
2019-02-06 15:47:20 -05:00
Daniel Oaks
fef58bb935
Merge pull request #354 from slingamn/issue353
...
don't send the client its own on-join MODE line
2019-02-07 06:37:10 +10:00
Shivaram Lingamneni
2910eda737
fix a nit
2019-02-06 14:28:17 -05:00
Chris Smith
34a9a37b82
Fix usernames being used in place of hostnames.
...
Closes #355
2019-02-06 19:14:32 +00:00
Shivaram Lingamneni
20b8ba8cae
don't send the client its own on-join MODE line
...
Fixes #353 .
2019-02-06 13:50:45 -05:00
Shivaram Lingamneni
eff2571096
limit the number of channels a client can join
2019-02-06 04:55:05 -05:00
Shivaram Lingamneni
ff7bbc4a9c
track channel registrations per account
...
* limit the total number of registrations per account
* when an account is unregistered, unregister all its channels
2019-02-06 04:34:45 -05:00
Shivaram Lingamneni
73f36fba08
NS REGISTER needs a login throttle check as well
2019-02-05 20:23:32 -05:00
Shivaram Lingamneni
775ead700f
prevent nick reservation land-grabs
2019-02-05 20:18:40 -05:00
Shivaram Lingamneni
7608e0c76c
fix #121
2019-02-05 20:17:55 -05:00
Daniel Oaks
457b7eaf11
Review fixes
2019-02-06 08:45:09 +10:00
Daniel Oaks
8ecf96d447
Set uninteresting username if user's using a special nick
2019-02-06 08:33:15 +10:00
Daniel Oaks
71a33890b8
Merge pull request #344 from slingamn/history.4
...
add CHATHISTORY and HISTORY implementations
2019-02-05 22:16:45 +10:00
Shivaram Lingamneni
a9f9f725b1
review fixes
2019-02-05 04:29:32 -05:00
Shivaram Lingamneni
928caba922
Merge pull request #345 from slingamn/saslonly.3
...
add sasl-only config option
2019-02-05 04:10:35 -05:00
Shivaram Lingamneni
36612f6e2d
review fixes
2019-02-05 03:05:05 -05:00
Shivaram Lingamneni
bf1d758de9
simplify username logic
2019-02-05 02:42:13 -05:00
Shivaram Lingamneni
e094c2a9c5
add tests for masking in limiter/throttler
2019-02-05 02:25:16 -05:00
Shivaram Lingamneni
eb8f0e50df
fix masking bug
...
IP.Mask() returns a new IP value, rather than modifying its target in place
2019-02-05 02:25:16 -05:00
Shivaram Lingamneni
1c23af8767
add sasl-only config option
2019-02-05 00:51:58 -05:00
Shivaram Lingamneni
463de94610
allow history queries against PRIVMSG of other clients, if the accounts match
2019-02-04 12:46:04 -05:00
Shivaram Lingamneni
51fcedc5a1
review fix
2019-02-04 12:16:28 -05:00
Shivaram Lingamneni
f6b3008f8f
add CHATHISTORY and HISTORY implementations
2019-02-04 05:33:36 -05:00
Shivaram Lingamneni
057d00b2c8
Merge pull request #341 from oragono/restrict-usernames
...
Restrict idents as other servers do
2019-02-03 15:24:08 -05:00
Daniel Oaks
2ce203a6d8
Setup v0.13.0-unreleased devel ver (I forgot to do this~)
2019-02-04 06:18:40 +10:00
Daniel Oaks
e8309aee79
Avoiding a crash when getting a short ident is a good thing
2019-02-04 05:02:13 +10:00
Daniel Oaks
151002e232
Up identlen default to 20
2019-02-04 05:01:46 +10:00
Daniel Oaks
7eef390756
Handle translations a little better
2019-02-04 03:54:10 +10:00
Daniel Oaks
46f8ef9ed3
Be less strict with our language file loading, and handle multiple credits better
2019-02-03 20:21:07 +10:00
Daniel Oaks
cfbb4361dc
Restrict ident length similar to other servers
2019-02-03 19:24:59 +10:00
Daniel Oaks
8cd5db1194
Restrict idents as other servers do
2019-02-03 18:49:42 +10:00
Shivaram Lingamneni
c34d9e0b72
more lenient casefolding for skeletons
2019-02-03 02:45:02 -05:00
Daniel Oaks
e7399ba2b5
Merge pull request #339 from slingamn/startuplog
...
rename the "startup", "rehash", and "shutdown" log types to "server"
2019-02-03 12:37:24 +10:00
Daniel Oaks
1f33ad290c
Merge pull request #334 from slingamn/confusables.4
...
implement confusables prevention (#178 )
2019-02-03 12:33:44 +10:00
Shivaram Lingamneni
cbe0f79f73
unify "startup", "rehash", and "shutdown" log categories as "server"
2019-02-02 21:13:01 -05:00
Shivaram Lingamneni
f48af3ee44
correctly support disabling caps with CAP REQ, fixes #337
2019-02-02 20:22:07 -05:00
Shivaram Lingamneni
35948d2e5b
refactor some conditions for clarity
2019-01-31 17:34:06 -05:00
Shivaram Lingamneni
18c0c9da45
use our fork of mtibben/confusables for now
2019-01-30 22:02:14 -05:00
Shivaram Lingamneni
b9b2553a2f
use the TR39 skeleton algorithm to prevent confusables ( #178 )
2019-01-30 21:48:53 -05:00
Shivaram Lingamneni
8438afcc5c
fix: usernames from ident don't get a ~
2019-01-28 23:35:00 -05:00
Shivaram Lingamneni
4bbba5b478
fix the issue for AllNickmasks as well
2019-01-28 23:12:25 -05:00
Shivaram Lingamneni
a2a9788f39
fix spurious bidi violations when casefolding the nickmask of an RTL nick
2019-01-28 18:15:35 -05:00
Shivaram Lingamneni
96737ea6d7
fix a memory leak
...
Even after the timer fired, we were retaining a pointer to it;
clean those up too along with the other cleanup tasks.
2019-01-23 02:06:00 -05:00
Shivaram Lingamneni
854d85a474
add schema change for [dk]line refactor
2019-01-22 17:18:38 -05:00
Shivaram Lingamneni
6bdc6af186
refactor [dk]lines, implement #144
2019-01-22 17:18:38 -05:00
Shivaram Lingamneni
f154ea9583
add an error message for schema changes
2019-01-22 01:25:32 -05:00
Daniel Oaks
85276c5e6d
Merge branch 'master' of github.com:oragono/oragono
2019-01-12 22:18:08 +10:00
Daniel Oaks
63fde2d62a
Re-enable MaxLine
2019-01-12 22:17:51 +10:00
Shivaram Lingamneni
0475fe882c
fix ns register validation bug
2019-01-09 15:03:44 -05:00
Shivaram Lingamneni
d6494957a4
forbid logging in twice via nickserv
2019-01-05 20:59:42 -05:00
Shivaram Lingamneni
598d9a025b
review fix: add maxParams for service commands
2019-01-04 11:45:59 -05:00
Shivaram Lingamneni
4caa362f18
fix histserv nick reservation
2019-01-04 10:32:08 -05:00
Shivaram Lingamneni
a52d167278
additional defensive check in EnforcementStatus
2019-01-03 23:44:01 -05:00
Shivaram Lingamneni
efc0ce3b81
fix an edge case in configurable nickname reservation
2019-01-03 23:05:47 -05:00
Shivaram Lingamneni
b80df0885f
refactor services code
2019-01-03 22:34:11 -05:00
Daniel Oaks
ea970f94a0
Merge pull request #323 from slingamn/initdb.1
...
fix #322
2019-01-03 09:18:19 +10:00
Shivaram Lingamneni
501bb1e5c5
replay JOIN/PART/QUIT/KICK as PRIVMSG from HistServ
...
see https://github.com/ircv3/ircv3-specifications/issues/293
2019-01-02 17:58:04 -05:00
Shivaram Lingamneni
f20abf414f
don't log an error logline for an incorrect SASL password
2019-01-02 10:29:42 -05:00
Shivaram Lingamneni
2ee89b15b3
per-user settings for nickname enforcement
2019-01-02 10:15:59 -05:00
Shivaram Lingamneni
d0ded906d4
fix a fairly bad bug where nicks could get out of sync
...
during nick change, removeInternal(client) was being called even before checking
whether the new nick was in use or reserved. Reproduction steps:
1. Log in a client 'alice'
2. Log in a client 'bob'
3. bob issues /nick alice, which fails (correctly) with:
:oragono.test 433 bob alice :Nickname is already in use
4. alice issues /msg bob hi, which fails (incorrectly) with:
:oragono.test 401 alice bob :No such nick
2019-01-02 10:15:59 -05:00
Shivaram Lingamneni
9a2117f75d
preregNick doesn't need synchronization
...
(since it's only accessed from the client's own goroutine)
2019-01-02 10:15:59 -05:00
Shivaram Lingamneni
f94f737b31
add support for login throttling
2019-01-02 10:15:59 -05:00
Shivaram Lingamneni
3cd3601a30
refactor join/part
2019-01-02 09:55:45 -05:00
Shivaram Lingamneni
960d51159c
add ClientDetails struct for getting a snapshot of client state
2019-01-02 09:55:45 -05:00
Shivaram Lingamneni
c2b2559ab4
avoid some uses of Sprintf for loglines
2019-01-02 09:55:45 -05:00
Shivaram Lingamneni
ec4f1c189a
pointless optimizations to the logger
2019-01-01 16:43:35 -05:00
Shivaram Lingamneni
6402a69fb9
use the rehash log category consistently
2018-12-31 01:44:31 -05:00
Shivaram Lingamneni
d6d3a10817
implement #322
...
Automatically create the datastore on `oragono run` if it doesn't exist.
See also #302 .
2018-12-31 01:44:31 -05:00
Shivaram Lingamneni
7c36ec3f9d
allow auto-ops (halfop and higher) to bypass channel join restrictions
2018-12-30 18:28:56 -05:00
Shivaram Lingamneni
a4b3fb0e83
changes to client idle time counting
...
1. Remove leaveClientIdle (unused)
2. s/leaveClientActive/leaveClientIdle/
3. make ISON a leaveClientIdle command (some clients send it periodically
if a /msg window is left open)
2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
ba2aacaf5b
fix #297
...
add validation for isupport tokens
2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
b34bab16a7
ensure that identical PRIVMSG share a time tag
2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
d5eade5494
force trailing zeroes in timestamp wire format
...
According to jwheare, ISO 8601 doesn't specify the behavior one way
or the other, and the server-time spec is also ambiguous, but this
is safest.
2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
ac480d782f
add millisecond resolution to loglines
2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
f35a1c7212
use GenerateSecretToken for msgids
2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
c95ed46949
add whois support for services
2018-12-30 18:17:24 -05:00
Daniel Oaks
cd339281e4
Merge pull request #320 from slingamn/replay.1
...
history replay enhancements
2018-12-29 10:15:02 +10:00
Shivaram Lingamneni
2c7c8fbaf9
history replay enhancements
2018-12-28 13:45:55 -05:00
Shivaram Lingamneni
525b2c52b1
fix hostserv help string
2018-12-28 11:07:08 -05:00
Shivaram Lingamneni
f58c873f84
fix RPL_INVITING response to match modern ircdocs
2018-12-23 13:49:03 -05:00
Shivaram Lingamneni
b6b4d365bc
fix #313
2018-12-23 13:30:25 -05:00
Daniel Oaks
f912f64f21
Merge pull request #304 from slingamn/history.1
...
draft/resume-0.2 implementation, message history support
2018-12-15 04:37:16 +10:00
Daniel Oaks
e1aa3e0f4a
Merge pull request #305 from slingamn/passwd.1
...
implement NS PASSWD for password changes
2018-12-07 10:43:10 +10:00
Shivaram Lingamneni
92eca4d795
add more test cases
2018-12-06 06:46:11 -05:00
Shivaram Lingamneni
40e63dbbe8
fix #306
...
Fix spurious bidi rule violations in casefolding channel names
by stripping the # before starting the casefolding.
2018-12-05 22:39:01 -05:00
Shivaram Lingamneni
48f9b5e4fa
implement NS PASSWD for password changes
2018-11-28 18:25:15 -05:00
Shivaram Lingamneni
c8cf0befc6
fixes to irc/socket.go
...
* fix a race condition: a call to `Write` does not spawn a writer goroutine
if the trylock is held, so `BlockingWrite` must check for fresh data after
releasing the trylock
* streamline some close/finalize logic
2018-11-28 00:24:44 -05:00
Shivaram Lingamneni
a0bf548fc5
draft/resume-0.2 implementation, message history support
2018-11-26 05:23:27 -05:00
Sean Enck
c20afab7c2
prevents default create/open of buntdb, requires user to call initdb
2018-11-19 14:10:12 -05:00
Daniel Oaks
55503961cb
Release v0.12.0
2018-10-15 12:18:23 +10:00
Shivaram Lingamneni
10d4f77638
fix PROXY protocol support for IPv6
...
1. Handle PROXY lines with IPv6 addresses starting with ::
(similar to WEBIRC in issue #211 )
2. Strip v6 mapping from v4 addresses when handling proxied IPs.
2018-09-03 00:38:32 -04:00
Shivaram Lingamneni
0e5842b33a
fix #211
2018-08-28 19:28:49 -04:00
Shivaram Lingamneni
c3d197f4ff
make unix domain socket permissions configurable
2018-08-28 19:28:49 -04:00
Shivaram Lingamneni
831969f1f0
Merge pull request #292 from slingamn/nilreceivers
...
re-add nil receiver for ModeSet.HasMode
2018-08-27 23:56:28 -04:00
Shivaram Lingamneni
c72a84e49f
Merge pull request #284 from slingamn/passhashing.1
...
new password hashing technique
2018-08-27 23:55:54 -04:00
Shivaram Lingamneni
86836905b3
re-add nil receiver for ModeSet.HasMode
2018-08-23 10:30:28 -04:00
Daniel Oaks
1fd63672f3
Merge pull request #290 from slingamn/rpl330.1
...
Fix a bug in 330 RPL_WHOISACCOUNT
2018-08-20 16:48:38 +10:00
Shivaram Lingamneni
ac08ce0f20
move ChannelOperator check into hasPrivs helper
2018-08-17 16:22:32 -04:00
Shivaram Lingamneni
a18283e2de
fix a crash when SAMODE'ing in a channel you're not joined to
2018-08-17 12:44:49 -04:00
Shivaram Lingamneni
1fb9bd7208
Fix a bug in 330 RPL_WHOISACCOUNT
...
According to https://defs.ircdocs.horse/defs/numerics.html , 330 RPL_WHOISACCOUNT
takes 4 parameters: `<client> <nick> <authname> :<info>`. We were omitting
the second parameter (the target nick).
Also refactor locking.
2018-08-17 11:45:32 -04:00
Shivaram Lingamneni
cbc2b07d35
Merge remote-tracking branch 'origin/master' into passhashing.2
2018-08-15 13:02:05 -04:00
Shivaram Lingamneni
a2c2419084
remove stackimpact
2018-08-14 23:26:43 -04:00
Shivaram Lingamneni
6eda236eab
remove allow-multiple-per-connection
2018-08-14 22:50:20 -04:00
Shivaram Lingamneni
b45b863fc4
unregister capab was renamed to accreg, but i missed this occurrence
2018-08-14 22:48:06 -04:00
Shivaram Lingamneni
a4546c418b
fix miscounting in LUSERS
2018-08-08 17:56:12 -04:00
Shivaram Lingamneni
7cd5b8473c
fix a bug in CS UNREGISTER
2018-08-06 10:08:58 -04:00
Shivaram Lingamneni
578ca2fdf6
add support for service command aliases
2018-08-06 10:08:58 -04:00
Shivaram Lingamneni
3c12fb6254
fix #283 (remove unnecessary log.Fatal)
...
The server should never crash during rehash, even if the config is invalid.
2018-08-06 10:08:58 -04:00
Shivaram Lingamneni
eb5f2c1db9
fix webirc password handling
2018-08-06 04:55:39 -04:00
Shivaram Lingamneni
dfb0a57040
refactor the password hashing / password autoupgrade system
2018-08-06 02:26:21 -04:00
Daniel Oaks
6260869068
Upgrade password hashing.
...
Previously, we generated and prepended a long salt before generating
password hashes. This resulted in the hash verification cutting off long
before it should do. This form of salting is also not necessary with
bcrypt as it's provided by the password hashing and verification
functions themselves, so totally rip it out.
This commit also adds the functionality for the server to automagically
upgrade users to use the new hashing system, which means better
security and more assurance that people can't bruteforce passwords.
No need to apply a database upgrade to do this, whoo! \o/
2018-08-05 22:51:15 -04:00
Shivaram Lingamneni
7154f14781
move handling of RecoverFromErrors into LoadConfig
2018-07-16 04:08:24 -04:00
Shivaram Lingamneni
1383190249
refactor rehash to rely more on server.config
2018-07-16 03:46:40 -04:00
Shivaram Lingamneni
318da22448
simplify CAS logic a bit
2018-07-02 16:33:39 -04:00
Daniel Oaks
6ba741814d
Merge pull request #275 from slingamn/confirmations.1
...
some tweaks to account/channel unregistration
2018-07-02 16:00:49 +10:00
Shivaram Lingamneni
1e513a717c
expand bitset tests
2018-06-27 17:42:39 -04:00
Shivaram Lingamneni
a1bbe0c7f2
review fix
2018-06-25 22:55:50 -04:00
Shivaram Lingamneni
2a33c1483b
atomic bitset implementations of caps.Set and modes.ModeSet
2018-06-25 18:17:47 -04:00
Shivaram Lingamneni
cdbb369a9c
add benchmarks for caps.Set
2018-06-25 16:41:13 -04:00
Shivaram Lingamneni
02a4aaf583
some tweaks to account/channel unregistration
2018-06-19 04:03:40 -04:00
Shivaram Lingamneni
c3b66b5236
add a verification code to CS UNREGISTER
2018-06-05 05:23:36 -04:00
Shivaram Lingamneni
31f386f5a9
add CHANSERV UNREGISTER
2018-06-04 05:02:22 -04:00
Daniel Oaks
7bf18443a8
Merge pull request #270 from slingamn/amode.1
...
frontend for persistent account modes in channels
2018-05-30 21:27:28 +10:00
Daniel Oaks
45b8d9e6fa
Update snomask to work with HOPM
2018-05-29 03:21:48 +10:00
Shivaram Lingamneni
495705f538
implement SAJOIN, allow channel founders to join unconditionally
2018-05-25 02:47:50 -04:00
Shivaram Lingamneni
d3815fbe61
review fixes and updates
2018-05-25 00:38:20 -04:00
Shivaram Lingamneni
7122fb180c
add a test
2018-05-23 16:18:53 -04:00
Shivaram Lingamneni
1016f86f70
implement CHANSERV AMODE
2018-05-23 16:00:49 -04:00
Shivaram Lingamneni
f408d0f37b
review fix: add nil receivers to other read-only ModeSet methods
2018-05-23 15:50:04 -04:00
Shivaram Lingamneni
0751f52f37
fix #268
2018-05-22 04:23:33 -04:00
Daniel Oaks
f142bf065d
services: Explicitly show when commands have been disabled in the HELP output
2018-05-19 09:00:22 +10:00
Daniel Oaks
de7b679fc5
Merge pull request #247 from slingamn/vhosts.3
...
initial vhosts implementation, #183
2018-05-19 08:51:16 +10:00
Daniel Oaks
8227822d3e
Merge pull request #264 from slingamn/deps.1
...
reduce copying of output lines
2018-05-04 23:13:56 +10:00
Shivaram Lingamneni
510f4320d0
fix formatting issue
2018-05-04 04:28:01 -04:00
Shivaram Lingamneni
f6373f7a4d
fix #262
2018-05-04 00:29:16 -04:00
Shivaram Lingamneni
be588076e9
optimize IsLoggingRawIO
2018-05-01 06:00:39 -04:00
Shivaram Lingamneni
3150f4e23b
reduce copying of output lines
2018-05-01 05:23:40 -04:00
Shivaram Lingamneni
ebfef1e848
add Semaphore and ServerSemaphores
2018-04-26 06:03:10 -04:00
Shivaram Lingamneni
6533893863
optimized implementation of Channel.Names()
2018-04-26 03:22:52 -04:00
Shivaram Lingamneni
ef35c587fc
remove redundant friends computation
2018-04-25 00:58:54 -04:00
Shivaram Lingamneni
b97ae00fe3
refactor channel join and part
2018-04-25 00:58:54 -04:00
Shivaram Lingamneni
74fa58dda0
Merge remote-tracking branch 'origin/master' into vhosts.4
2018-04-23 21:46:12 -04:00
Daniel Oaks
22ec6139bf
Merge pull request #256 from slingamn/issue255.2
...
modes refactor, #255
2018-04-24 11:20:07 +10:00
Shivaram Lingamneni
abbbd2c899
review fix
2018-04-23 20:05:02 -04:00
Shivaram Lingamneni
cc9941cb07
review fixes, bug fixes
2018-04-23 02:38:35 -04:00
Shivaram Lingamneni
43b90f2a85
have travis enforce gofmt, #253
2018-04-22 20:41:29 -04:00
Shivaram Lingamneni
fad2475c3f
modes refactor, #255
2018-04-22 19:36:15 -04:00
Daniel Oaks
8f22d5ffd8
Merge pull request #236 from slingamn/socket_again.1
...
eliminate dedicated RunSocketWriter goroutine
2018-04-23 02:07:43 +10:00
Daniel Oaks
4a17eadbce
Merge pull request #246 from slingamn/db_autoupgrade.1
...
implement database auto-upgrades (#243 )
2018-04-22 13:39:41 +10:00
Daniel Oaks
0aab3b44e9
Merge pull request #252 from slingamn/issue249
...
fix #249
2018-04-22 13:38:26 +10:00
moocow
744ad2ce0b
Stats for LUSERS logic now seperated, fixed params in LUSERS
2018-04-20 22:48:15 +02:00
Shivaram Lingamneni
393070b7d9
fix #249
2018-04-20 14:21:07 -04:00
Shivaram Lingamneni
3db71415c9
review fixes
2018-04-20 03:59:01 -04:00
moortens
0b3abb5bde
Fixed LUSERS count not subtracting invisible users
2018-04-20 09:11:56 +02:00
Shivaram Lingamneni
5e62cc4ebc
initial vhosts implementation, #183
2018-04-19 03:00:56 -04:00
Daniel Oaks
40d6cd02da
Fix whois channel handling
2018-04-18 01:11:12 +10:00
Shivaram Lingamneni
69fd3ac324
implement database auto-upgrades ( #243 )
2018-04-16 16:35:01 -04:00
Shivaram Lingamneni
f6d2dade4e
fix fakelag double-rate issue
...
Basically, fakelag was counting the time imposed by its own sleeps as though
the user had themselves paused for that amount of time. Therefore, if a user
sent a large number of consecutive commands, every other command would pause
for the expected throttle interval, but the subsequent command would be
processed instantly (you'd get two back-to-back commands). This resulted in
throttled users being able to send at double the expected rate.
2018-04-16 04:32:57 -04:00
Daniel Oaks
c75d2c91c5
Merge pull request #224 from slingamn/channelkeys.1
...
Updates to channel persistence
2018-04-16 13:35:48 +10:00
Daniel Oaks
5811226760
Only allow valid snomasks to be set
2018-04-16 13:20:37 +10:00
Shivaram Lingamneni
f54561171e
try to reduce redundant goroutines
2018-04-15 19:05:22 -04:00
Daniel Oaks
22f9df388d
Fix trailing hack
2018-04-16 02:28:25 +10:00
Daniel Oaks
dd6aacee61
Setup v0.12.0-unreleased devel ver
2018-04-16 02:28:06 +10:00
Daniel Oaks
31e5db9c1e
Release v0.11.0
2018-04-15 19:47:20 +10:00
Shivaram Lingamneni
4778e7bcc7
fixes
...
* Placate `go vet`
* Reorder the `send` loop, clarify things a little
2018-04-15 01:21:32 -04:00
Shivaram Lingamneni
b2f798cf03
eliminate dedicated RunSocketWriter goroutine
2018-04-13 16:13:43 -04:00
Daniel Oaks
27c575e191
Um... name monitor subcommands handler properly
2018-04-12 10:11:45 +10:00
Daniel Oaks
df17b77266
Back to -unreleased
2018-04-11 10:12:11 +10:00
Daniel Oaks
26fcb2ebbc
Release v0.11.0-beta
2018-04-11 09:37:09 +10:00
Shivaram Lingamneni
363b120cc5
fix #227
2018-04-09 12:46:20 -04:00
Daniel Oaks
9e8920394f
Only display modestring on connect if it's set
2018-04-09 16:37:06 +10:00
Daniel Oaks
b1a73142b5
Expose current git commit
2018-04-09 10:08:54 +10:00
Shivaram Lingamneni
8fb5a38851
Updates to channel persistence
...
1. Implement persistent channel keys (#208 )
2. Persist changes to registered channel modes
3. Backend changes for persisting operator status (partial #198 )
2018-04-03 21:49:40 -04:00
Daniel Oaks
b6a997f68c
Unify translations
2018-04-01 23:22:21 +10:00
Daniel Oaks
a95c77bb86
Remove old command line that's no longer valid
2018-04-01 23:07:49 +10:00
Daniel Oaks
3394700def
Fix translation notes
2018-04-01 18:31:30 +10:00
Daniel Oaks
ab6cd599b2
Fix name of ISUPPORT token (REGCOMMANDS -> ACCCOMMANDS)
2018-04-01 12:04:25 +10:00
Daniel Oaks
5cbd4d1de2
Force help entries for every ChanServ command as well
2018-04-01 11:54:49 +10:00
Daniel Oaks
1c636aaec6
nickserv.go: Fix comment
2018-04-01 11:52:37 +10:00
Daniel Oaks
6fb4284e32
Refactor chanserv.go to match nickserv.go, unify the two
2018-04-01 11:51:34 +10:00
Daniel Oaks
9af74d367a
nickserv.go: Move comment to right place
2018-04-01 11:29:13 +10:00
Daniel Oaks
7b8c4e7e91
Refactor nickserv.go to better support NS HELP and translations
2018-04-01 11:22:06 +10:00
Daniel Oaks
a39c46d470
Fix registered-only modes in docs (it's +R, not +r)
2018-04-01 09:50:22 +10:00
Daniel Oaks
46c98c2cf5
Fix CHANSERV OP
2018-04-01 09:33:58 +10:00
Daniel Oaks
a67dfe37ca
Add CHANSERV OP (thanks benharri for making the request!)
2018-04-01 01:26:31 +10:00
Shivaram Lingamneni
7cfa75a59e
Merge pull request #218 from slingamn/socketwriter.1
...
refactor irc.Socket
2018-03-28 13:26:03 -04:00
Shivaram Lingamneni
65f2e95d2b
Merge pull request #222 from slingamn/fakelag.3
...
implement fakelag (#189 )
2018-03-28 13:25:49 -04:00
Shivaram Lingamneni
36018174b0
default fakelag to off, add explicit cooldown config
2018-03-28 13:18:08 -04:00
Shivaram Lingamneni
1bf5e2a7c8
implement fakelag ( #189 )
2018-03-22 11:04:21 -04:00
Shivaram Lingamneni
a8b952da77
store maxSendQBytes in a uint32 to avoid alignment problems
...
The sync.atomic documentation says:
"On both ARM and x86-32, it is the caller's responsibility to arrange
for 64-bit alignment of 64-bit words accessed atomically."
2018-03-19 00:24:20 -04:00
Shivaram Lingamneni
2885b37768
partial fix for #217
...
See discussion on issue; this might not be a complete fix but it's
definitely better than the current behavior.
2018-03-18 00:12:50 -04:00
Shivaram Lingamneni
d1f5c59eef
fix #190
2018-03-17 23:26:07 -04:00
Shivaram Lingamneni
8fd1446627
tweak: clean up Socket.Close()
2018-03-16 18:16:04 -04:00
Shivaram Lingamneni
0a432c9d99
do an actual nonblocking send instead of the len() trick
2018-03-16 12:39:11 -04:00
Shivaram Lingamneni
fa5d4be718
refactor irc.Socket
2018-03-15 19:11:29 -04:00
Shivaram Lingamneni
f5f6b95662
fix #214
2018-03-14 12:51:53 -04:00
Shivaram Lingamneni
b0f262bc0c
Merge pull request #206 from slingamn/ghost.2
...
nickserv: implement GHOST, GROUP, DROP, and INFO
2018-03-14 09:42:20 -04:00
Shivaram Lingamneni
b8f37e4e6c
fix bad interaction between nickTimer.Stop() and accounts.Logout()
...
Sequence of events:
1. client.nickTimer.Stop()
2. client.server.accounts.Logout(client)
3. accounts sees that client is no longer logged in, does client.nickTimer.Touch()
4. 30 seconds later, RandomlyRename resurrects the zombie client
2018-03-14 08:43:50 -04:00
Shivaram Lingamneni
fd34c78d6b
add sadrop command
2018-03-14 06:50:26 -04:00
Shivaram Lingamneni
211ed6af99
add an option to expose a pprof http endpoint
2018-03-13 16:55:30 -04:00
Shivaram Lingamneni
679f25491c
can't reserve a nick that's the name of an unverified account
2018-03-11 14:40:36 -04:00
Shivaram Lingamneni
47b9fe50be
can't register an account with the same name as a registered nick
2018-03-11 13:59:02 -04:00
Shivaram Lingamneni
a022befffe
nickserv: implement GHOST, GROUP, DROP, and INFO
2018-03-02 17:05:47 -05:00
Shivaram Lingamneni
ef99bc48d1
fix #204
...
Empty channels were only cleaned up on PART, not QUIT.
2018-03-01 11:10:46 -05:00
Shivaram Lingamneni
945dec9964
ensure the nick timeout mechanism is cleaned up on client quit
2018-02-28 17:29:18 -05:00
Shivaram Lingamneni
a5897baa2b
clean up redundant error handling
2018-02-28 17:29:18 -05:00
Daniel Oaks
1023f7e20e
Merge pull request #200 from slingamn/issue199.2
...
implement #199
2018-02-27 19:50:09 -08:00
Shivaram Lingamneni
784a3bbf52
Don't send error messages for bad channels in NAMES
...
"There is no error reply for bad channel names."
<https://tools.ietf.org/html/rfc2812#section-3.2.5 >
2018-02-27 15:37:58 -05:00
Shivaram Lingamneni
54123ef9a2
clear failed nick assignments to avoid confusion
2018-02-27 05:22:01 -05:00
Shivaram Lingamneni
62581962a6
fix confusing ips-per-subnet name
2018-02-26 23:52:15 -05:00
Shivaram Lingamneni
be86684e96
implement #199
2018-02-26 22:48:52 -05:00
Daniel Oaks
0ea210c28c
Merge pull request #196 from slingamn/smtp.1
...
implement mailto callbacks
2018-02-23 07:53:36 -08:00
Daniel Oaks
04d7792ed2
Merge pull request #195 from slingamn/stopevent
...
clean up stopEvent (requires go v1.10)
2018-02-23 07:49:22 -08:00
Shivaram Lingamneni
878f9ca94c
fix: store the uncasefolded account name correctly
2018-02-20 04:50:46 -05:00
Shivaram Lingamneni
df41f9b3b0
don't send ACC numerics in response to NickServ commands
2018-02-20 04:44:44 -05:00
Shivaram Lingamneni
89ae261739
implement mailto callbacks
2018-02-20 04:20:30 -05:00
Daniel Oaks
25f8b15232
Merge pull request #194 from slingamn/issue192.1
...
fix #192
2018-02-19 14:54:03 +10:00
Shivaram Lingamneni
02161184cf
clean up stopEvent (requires go v1.10)
2018-02-18 23:18:32 -05:00
Shivaram Lingamneni
5b636371a9
fix SASL enable-disable logic
2018-02-18 22:15:43 -05:00
Shivaram Lingamneni
ced3a17cd3
fix #192
2018-02-18 21:52:39 -05:00
Shivaram Lingamneni
988cb22692
changes to nick reservation
...
* Clients are now renamed, not disconnected, on reservation timeout
* Nick reservation config is now its own subsection
2018-02-18 04:46:14 -05:00
Shivaram Lingamneni
73391f11a6
replace ACC UNREGISTER with nickserv unregister
2018-02-12 01:09:30 -05:00
Shivaram Lingamneni
af256fccd3
remove redundant oper check from DEBUG
2018-02-11 23:58:54 -05:00
Shivaram Lingamneni
b139386391
fix account tags
2018-02-11 06:31:23 -05:00
Shivaram Lingamneni
ad73d68807
refactor account registration, add nick enforcement
2018-02-11 05:30:40 -05:00
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