Jason Volk
4fa9985399
modules: Add Events prototype.
2016-11-25 19:23:50 -08:00
Jason Volk
53f355e41d
modules: Add preliminary console to support js-style console.log() et al.
2016-11-25 19:23:49 -08:00
Jason Volk
4127367a46
modules: Add preliminary "require" to load additional modules into js.
2016-11-25 19:23:49 -08:00
Jason Volk
67af461540
modules: Update future object to support async contracts.
2016-11-25 19:23:49 -08:00
Jason Volk
a4f55b4627
ircd::mods: Reorganize and distill interface.
2016-11-25 19:23:49 -08:00
Jason Volk
b8f5366f52
ircd::js: Improve trap callback arguments; add this
value.
2016-11-13 16:34:00 -08:00
Jason Volk
edd77d2265
ircd::js: Add asynchronous state and completion target mechanism.
2016-11-13 16:33:22 -08:00
Jason Volk
2f645941a8
ircd::ctx: Move ctx headers into directory.
2016-11-13 16:29:45 -08:00
Jason Volk
998724937c
[temp] Checkpoint test.
2016-10-13 21:55:53 -07:00
Jason Volk
757d7e10a8
[temp] checkpoint some crap which isn't going to stick.
2016-09-27 17:29:06 -07:00
Jason Volk
d8d2fe1564
ircd: Add scope 'life_guard' util for references in reentrant contexts.
2016-09-22 16:18:31 -07:00
Jason Volk
fcd410d656
ircd::client: Add timer logic to client socket/io.
...
Note: Not sure if I like two reference counters for each client,
ideally, but we'll see where it goes after abstractions.
2016-09-21 16:29:30 -07:00
Jason Volk
26a3cd8441
Preliminary new client. Reorg/renames for ircd::client struct symbol.
2016-09-21 16:29:29 -07:00
Jason Volk
4ac4244876
Add m_host "HOST" command for DNS resolution.
2016-09-21 16:29:28 -07:00
Jason Volk
556ceba8a0
ircd: new client; start over.
2016-09-21 16:29:28 -07:00
Jason Volk
5b55e60015
Add P-Line listener module.
2016-09-21 16:29:28 -07:00
Jason Volk
2742547826
Introduce modular configuration system.
2016-09-21 16:28:51 -07:00
Jason Volk
9275429ee1
Replace command system.
2016-09-09 16:17:36 -07:00
Jason Volk
12c836dc6e
Rip out libltdl.
2016-09-09 16:17:02 -07:00
Jason Volk
9d0a959bb5
MAPI IV. This iteration leverages the C++11 standardized RTTI.
...
* Simplifies the export declarations for module developers. While
MAPI III utilized a flexible key-value vector to eliminate positional
arguments in a header initializer, now the developer simply makes
a list of pointers to what they want to export for injection into
IRCd. Example:
mapi::header IRCD_MODULE
{
"mymod",
"My module adds a command, a hook, and a CLICAP",
&my_cmdtab,
&some_hook,
&clicaptab
};
* Distributes the handlers for items passed to the above vector.
Anyone can add a type-handler to the module system from anywhere in IRCd
(and other modules?) When your type is encountered a handler is called
providing the symbol name to read out of the module. Example in parser.cc:
mods::add_loader<Message>([]
(mod &loading, const std::string &symbol)
{
auto &msg(get<Message>(loading, symbol));
add_command(msg.name, msg);
});
2016-09-09 16:17:01 -07:00
Jason Volk
3ebde4ab50
Convert umodes to mode_lease mechanism.
2016-09-09 16:17:01 -07:00
Jason Volk
127378b57c
Refactor logger.
2016-09-09 16:17:00 -07:00
Jason Volk
052a6c8d22
Refactor snomask.
2016-08-28 01:48:25 -07:00
Jason Volk
21cfd2eefd
ircd: Rename newconf name conflict.
2016-08-26 08:50:11 -07:00
Jason Volk
d9e90e8937
ircd::cache: Convert send function arguments client* -> client&
2016-08-25 04:57:23 -07:00
Jason Volk
5f79420c29
Refactor isupport.
2016-08-25 03:01:45 -07:00
Jason Volk
9c16de2d41
Refactor whowas.
2016-08-25 02:34:28 -07:00
Jason Volk
5f218cdbb2
Refactor scache.
2016-08-25 02:07:11 -07:00
Jason Volk
3e26e7ab44
ircd: Move tgchange related into namespace.
2016-08-25 02:07:11 -07:00
Jason Volk
f33b369609
Refactor umodes.
2016-08-23 15:25:09 -07:00
Jason Volk
06b84579e3
modules/extensions: LDFLAGS += --no-allow-shlib-undefined
2016-08-23 05:22:38 -07:00
Jason Volk
b65c5430f2
Refactor client flags.
2016-08-23 05:22:38 -07:00
Jason Volk
ab9a8e5c04
Convert all client handler arguments to reference type.
2016-08-23 05:22:38 -07:00
Jason Volk
dd9124b687
Preliminary Client refactor.
...
Add client to ircd::client:: namespace.
Also move former struct User and struct Server into client.cc as
opaque structure demo.
2016-08-22 15:56:12 -07:00
Jason Volk
90093b82e6
Upgrade user struct.
2016-08-21 15:30:22 -07:00
Jason Volk
68b8a83419
ircd: Reduce is_chanop_voiced().
2016-08-21 15:30:22 -07:00
Jason Volk
9835d43977
Upgrade channels structure.
2016-08-20 20:39:29 -07:00
Jason Volk
5752be41b8
Upgrade channel membership lists.
2016-08-20 19:30:35 -07:00
Jason Volk
276cad4275
Upgrade the channel invite list.
2016-08-20 19:30:35 -07:00
Jason Volk
a84fe8a09b
Upgrade bqeI channel lists.
2016-08-20 19:30:35 -07:00
Jason Volk
125e3b21f2
ircd: Improve/rename channel name check related.
2016-08-20 19:30:34 -07:00
Jason Volk
7d44e271f7
Better names for some channel mode convenience former-macros.
2016-08-20 19:30:34 -07:00
Jason Volk
1e07182f3e
Remove CheckEmpty() from macro scope.
2016-08-20 19:30:34 -07:00
Jason Volk
f5143fbf73
Add channel structure into namespace + remove related rb_banheaps.
2016-08-20 19:30:34 -07:00
Jason Volk
03660fc4b0
Refactor chmode into namespace.
...
She's still a bit of a mess.
2016-08-20 19:30:34 -07:00
Jason Volk
f112111e51
Add rfc1459:: case compliance namespace.
2016-08-20 19:30:34 -07:00
Jason Volk
3f6d567285
ircd: Improve/refactor version.cc -> info.cc related.
2016-08-20 19:30:34 -07:00
Jason Volk
60c044d78a
Fix redundant/conflicting namespace labels.
2016-08-20 19:30:33 -07:00
Jason Volk
fc4af83fdf
Remove __unused macro.
2016-08-20 19:30:33 -07:00
Jason Volk
61b517ca3c
Precompile and remove most include directives. Notes:
...
* To benefit from the precompiled-header (PCH) it MUST provide "the first C token."
Advantages:
Never worry about the include stack again. Remember, this means one less thing
for random module developers, community people learning C++, and new developers
to deal with. It should reduce the learning curve and barrier for participation.
Disadvantages:
Makes overall compilation a bit slower, especially without any additional
work to improve it again. There are several opportunities, places where the
PCH is probably being ignored, etc that can be addressed.
2016-08-20 19:30:33 -07:00
Jason Volk
90c9fe686e
ircd: Namespace and partially modernize ircd::cache.
2016-08-19 22:39:34 -07:00
Jason Volk
a71a4551ae
ircd: Insert into ircd:: namespace.
2016-08-13 02:43:42 -07:00
Jason Volk
fb8792da3d
ircd: Towards a comprehensive capability C -> C++ refactor.
2016-08-13 02:43:41 -07:00
William Pitcock
09d19cbbd3
capability: clean up CAP_REQUIRED and CAP_ORPHANED flags, use bool variables instead
2016-07-31 18:39:19 -05:00
William Pitcock
e7a768ca22
capability: fix capability stats dumping
2016-07-31 18:10:31 -05:00
William Pitcock
92415a5371
alias: cleanups
2016-07-31 03:24:12 -05:00
William Pitcock
d0a59d58a0
capability: major rewrite for C++ support.
...
- no rb_dictionary use anymore
- CapabilityIndex converted into a proper class
- proper RAII lifecycle management
2016-07-31 03:18:22 -05:00
William Pitcock
10ff2d192c
alias: convert to RAII/std::string/etc, no more rb_dictionary use (ref #202 )
2016-07-31 01:57:04 -05:00
William Pitcock
1c77b054a8
parse: move cmd_dict to a std::set
2016-07-31 01:36:14 -05:00
William Pitcock
c7135bdf9a
cache: adopt proper RAII pattern
2016-07-31 01:03:05 -05:00
William Pitcock
1c813cee95
cache: rough conversion of help system to std::map (ref #202 )
2016-07-30 22:13:29 -05:00
Jason Volk
73297c988b
Preliminary defaults/paths namespacing.
...
The namespace is inline to mimic the C namespace for now.
2016-07-25 16:49:00 -07:00
Jason Volk
4796bec441
Activate PCH for position independent code.
...
Cuts compilation time by 30%+
2016-07-25 00:54:38 -07:00
Jason Volk
404239eb60
Build system cleanup.
2016-07-22 19:46:28 -07:00
Jason Volk
ac577c1322
Regress brace init relaxation for clang.
2016-07-22 19:46:28 -07:00
Jason Volk
834964c659
Convert IRCd to C++
...
Happy 28th birthday. You're all grown up.
2016-07-22 19:46:27 -07:00
Jason Volk
7cea4c784d
ircd: Merge the defaults/ircd_defs stuff for now.
...
ircd/rb: Move some lowish level macros down to rb.
2016-07-21 20:51:02 -07:00
Jason Volk
ac4dda1e67
Towards a leak-free repository.
...
Adds a Makefile target 'mrproper' though this only works on new versions of AC.
2016-07-21 20:51:02 -07:00
Jason Volk
ea53aab823
Refactor repository layout.
...
* librb is no longer a separately configured subproject.
* charybdis is now a standalone directory with a binary.
* Include path layout now requires a directory ircd/ rb/ etc.
2016-07-21 20:51:02 -07:00
William Pitcock
79235fec68
modules: missed a spot
2016-06-26 01:43:17 -05:00
William Pitcock
f200d90869
modules: allow non-opers to see what extensions are loaded
2016-06-26 01:40:43 -05:00
Jason Volk
6357ad5fd9
Add a reason pointer to hook_data_privmsg_channel. When set, the reason is appended to the text of ERR_CANNOTSENDTOCHAN. The pointer will not be free()'ed.
2016-06-25 22:57:04 -05:00
William Pitcock
7e1bb8ad0d
Proper channel mode classification. Fixes existing ad hoc
...
channel mode classification which is required by RPL_MYINFO indicating arity,
and RPL_ISUPPORT indicating an enumerated class. The content of these replies
had previously been generated by hardcoded strings of some letters.
Channel modes require classification which corresponds to the
CHANMODES= data in RPL_ISUPPORT. Classes A,B,C can then be
listed in the unary column of RPL_MYINFO. cflag_add() is updated
for this. Additional cleanup of chmode.h and channel.h
circularity is also proffered within.
Submitted-by: Jason Volk <jason@zemos.net>
2016-06-25 22:54:37 -05:00
Jason Volk
b5cfad0319
Core modules cannot be unloaded, otherwise bad things happen.
...
Additionally some information is logged and passed to the operator
conducting a MODRESTART.
2016-06-21 17:42:36 -07:00
William Pitcock
2185c50aad
m_modules: use new module api
2016-06-18 00:59:15 -05:00
William Pitcock
397ec4d171
invite: do not send duplicate invite messages ( closes #194 )
2016-06-16 20:21:18 -05:00
Aaron Jones
0982871a99
strcpy: mass-migrate to strlcpy where appropriate
2016-05-15 03:58:44 +00:00
Aaron Jones
7de13f7e5e
starttls: Allow command usage with backends other than OpenSSL
2016-05-14 00:26:03 +00:00
Simon Arlott
4ad9738d7a
m_alias: correctly construct string to be sent
2016-05-12 19:45:27 +01:00
Simon Arlott
da20854e83
random_ping: stop producing negative values that become 16 chars
2016-05-02 21:14:16 +01:00
Elizabeth Myers
f4d828ef96
m_alias: restore old behaviour of joining all parameters.
...
There are two important caveats here, however:
1) Aliased commands have more than 8 parameters will be truncated;
there's nothing I can do about this.
2) Parameters with colons will not be handled as you expect. Again,
nothing I can do about this.
2016-05-01 03:48:00 -05:00
Simon Arlott
896370cc3e
m_stats: don't try to access bl_stats if it doesn't exist
2016-04-30 13:18:48 +01:00
Simon Arlott
4fbb736202
ssld: add a callback when the connection is opened
...
This allows us to wait until we have the fingerprint information before
continuing with a server connect process.
2016-04-24 11:48:35 +01:00
Simon Arlott
3085734104
m_stats: display certificate fingerprint in STATS C
2016-04-24 01:06:51 +01:00
Simon Arlott
00039dcddd
m_alias: store a copy of alias->name as it will be freed on a rehash
2016-04-24 00:09:12 +01:00
Simon Arlott
84e3e445aa
mr_server: Report certificate fingerprint mismatches
...
Log the received certificate fingerprint when it causes a server to be
rejected.
2016-04-23 17:37:05 +01:00
Simon Arlott
b49efe577c
mr_server: Handle unknown error codes
...
As mr_server is a module, it could potentially receive an unknown
error code from check_server().
2016-04-23 17:37:04 +01:00
Elizabeth Myers
7445ece1d1
Revert "Implement the netsplit batch type."
...
This needs more work, see
https://github.com/ircv3/ircv3-specifications/issues/253
This reverts commit 2373891299
.
2016-04-16 11:05:00 -05:00
Elizabeth Myers
2373891299
Implement the netsplit batch type.
...
This also lays the groundwork for the netjoin batch type, but that isn't
implemented yet. I don't like how some of this is implemented but it'll
have to do for now...
Compile tested, needs more testing.
2016-04-15 16:50:43 -05:00
Elizabeth Myers
5e9a3f8674
Change the way authd configures opm
...
It's a bit of a hack, but better than before. Rather than rehashing
(which could get us into an endless loop), we now segregate the
configuration phase (creating entries ircd-side in case we restart authd
later) and sending phases (when configure_authd() is called). Since we
have to call configure_authd() no matter what (to send timeouts etc.)
and we have to send this data to configure authd anyway, and sending
duplicate data is bad, this is the only way I can think of for now.
2016-04-12 09:36:09 -05:00
Mantas Mikulėnas
9d07a42d7a
m_sasl: rate-limit SASL REAUTH usage
2016-04-11 21:45:10 +03:00
Mantas Mikulėnas
834579cecd
m_sasl: fix coding style
2016-04-11 20:12:31 +03:00
Mantas Mikulėnas
37289346cd
m_sasl: temporarily reject clients after many failed attempts
2016-04-11 20:02:09 +03:00
Elizabeth Myers
e34368b1bc
modules/m_set: booleanify.
2016-04-10 10:11:03 -05:00
Elizabeth Myers
4eafa9e62f
ipv4_from_ipv6: move to librb
2016-04-08 03:49:23 -05:00
Elizabeth Myers
66f7fe673b
Get rid of flags2.
...
It seems to come from an era where long long didn't exist and 64-bit
machines weren't common. 32-bit machines are still common but I can't
imagine this will have much performance impact there.
This "fixes" #179 in title only, but see comments within.
2016-04-07 07:40:55 -05:00
Elizabeth Myers
78946542bb
modules: move module loading/unloading commands to dedicated module.
...
There's no reason to really have these in the main ircd anymore, static
modules are dead and aren't coming back.
To ensure people don't do something hopelessly retarded, this is a core
module.
2016-04-07 04:00:25 -05:00
Elizabeth Myers
95b0324658
m_stats: use macros to clean up generating the stats table
2016-04-07 03:27:50 -05:00
Elizabeth Myers
999c42bad8
Remove useless alias_entry hits member
2016-04-06 11:47:13 -05:00
Elizabeth Myers
0d7e4d311a
m_stats: don't list alias entries twice.
2016-04-06 11:45:55 -05:00
Elizabeth Myers
9620c6d61c
m_alias: fix an assert
2016-04-06 11:43:19 -05:00
Elizabeth Myers
cef7dfc56c
m_alias: fix build with --enable-assert
2016-04-06 07:57:20 -05:00
Elizabeth Myers
dd598516c8
m_alias: minor cleanup
2016-04-06 07:33:36 -05:00
Elizabeth Myers
b663a8070f
Move alias handling into a dedicated module.
...
Not yet tested, caveat emptor!
Closes #166
2016-04-06 07:27:50 -05:00
Elizabeth Myers
900683650a
Static modules are dead, remove this.
2016-04-06 06:30:58 -05:00
Elizabeth Myers
f956cb0f1f
Use rb_* versions of nonportable string functions
2016-04-05 05:39:59 -05:00
Elizabeth Myers
fc9013d6b0
Don't send original error message if we're already on the channel we're forwarding to
...
Closes #55
2016-04-04 03:08:52 -05:00
Elizabeth Myers
c0483ac17b
boolify calls to rehash
2016-04-03 01:53:34 -05:00
Elizabeth Myers
0ed0a9fe0a
Move m_locops module to extensions.
...
Many networks do not use local ops and therefore should not be required
to have this around all the time.
2016-04-02 05:20:30 -05:00
Elizabeth Myers
7b4d1de38d
Merge branch 'master' into authd-framework
2016-03-28 14:44:47 -05:00
Elizabeth Myers
d3f6b80867
Replace s_auth/blacklist stuff with authd calls
...
This also does a lot of surgery on the conf system to reconfigure authd.
/!\ WARNING! ACHTUNG! ADVERTENCIA! ATTENTION! AVVERTIMENTO! /!\
This code has not been run-time tested yet (though it compiles)!
2016-03-28 02:11:16 -05:00
Matt Ullman
aa7eff28f2
hash.c: Save some more bytes
2016-03-27 06:29:10 -04:00
William Pitcock
de7cf7e009
ircd: client: substantially rework the connid registry system
...
now connid's are allocated on demand and clients may have as many connid's as necessary.
this allows us to build chains of helpers while ensuring the ircd properly tracks and GCs the resources.
2016-03-25 19:50:29 -05:00
William Pitcock
704279e429
starttls: use the client connid instead of the FD for opening the channel with ssld
2016-03-24 20:33:54 -05:00
William Pitcock
4d8cfacd95
ircd: start staging for relocatable paths
2016-03-24 18:45:28 -05:00
Elizabeth Myers
fea4e2d2a8
modules: libircd depends on librb, so no need to include it.
...
This triggers multiple inclusion warnings on Solaris also.
2016-03-23 13:59:45 -05:00
Elizabeth Myers
79435744c7
common.h: raison d'être is gone, so out it goes.
...
Fold whatever was left into ircd_defs.h
2016-03-23 09:33:56 -05:00
Elizabeth Myers
82236a2a65
IRCD_BUFSIZE is redundant with BUFSIZE, so kill it.
2016-03-23 09:22:55 -05:00
Elizabeth Myers
ab31d2b07e
Send YES/NO to Davy Jones's Locker.
2016-03-23 08:52:32 -05:00
Elizabeth Myers
2fc6772ee1
typedef-ify rb_radixtree for consistency.
2016-03-23 08:32:22 -05:00
Elizabeth Myers
4177311e6e
Change struct Dictionary(*) to rb_dictionary(_\1).
...
This cleans things up a slightly and puts the dictionary stuff in its
own namespace.
2016-03-23 08:09:58 -05:00
Elizabeth Myers
56f84dedf7
DICTIONARY_FOREACH → RB_DICTIONARY_FOREACH
...
This is in librb and therefore should be prefixed.
2016-03-23 07:45:44 -05:00
Matt Ullman
66769bc1f8
More cleanup
2016-03-23 00:11:26 -04:00
Matt Ullman
e23126c83b
Cleanup warnings
2016-03-21 22:28:41 -04:00
Matt Ullman
ceabbbbf3c
m_cap: Remove CLEAR subcommand as per v3 specs
2016-03-21 00:29:07 -04:00
William Pitcock
032ef5ef9e
modules: more GET_SS_FAMILY() checking
2016-03-20 04:46:50 -05:00
William Pitcock
2d77d121a3
m_stats: win32 fixes
2016-03-20 02:19:36 -05:00
William Pitcock
1859e9d7d7
ircd: remove basically entirely pointless ServerInfo.hub ( closes #167 )
2016-03-19 23:05:07 -05:00
Elizabeth Myers
9b8e9eb321
config.h delenda est
2016-03-19 19:14:26 -05:00
Elizabeth Myers
fe4224394e
Can IGNORE_BOGUS_TS at the behest of @kaniini and @jilest
2016-03-19 18:55:13 -05:00
William Pitcock
bfc44622c8
ircd: do not shadow internal openssl symbol "ssl_ok" (yeah, i know)
2016-03-19 00:57:32 -05:00
William Pitcock
f2d5cea00a
modules: remove explicit CPRIVMSG/CNOTICE, this has been obsolete for a long time
2016-03-10 02:13:43 -06:00
Elizabeth Myers
3ec1db3785
m_error: use strncasecmp, not strcmp
2016-03-09 18:53:08 -06:00
Elizabeth Myers
788e2d592c
m_stats: eliminate special casing of calling the stats L handler.
2016-03-09 17:19:16 -06:00
Mantas Mikulėnas
6f39a80ec6
authd, m_stats: fix command table sizes
...
There are 256 possible byte values.
2016-03-09 18:15:42 +02:00
Elizabeth Myers
6445c1cf0b
rehash: don't restart authd for DNS reloads
...
This could lead to pretty nasty things, like losing DNS (and in the
future, ident) queries. That's a Bad Thing™.
2016-03-09 03:46:04 -06:00
Elizabeth Myers
5c1dbc3cc3
Fix m_xline [ci skip]
2016-03-09 02:10:23 -06:00
Elizabeth Myers
f66f0baa67
More bool conversions
2016-03-09 02:00:40 -06:00
Elizabeth Myers
05b77c613f
m_close: remove dangling return [ci skip]
2016-03-09 01:45:01 -06:00
Elizabeth Myers
b8b72cbdf1
m_chghost: convert more stuff to bool [ci skip]
2016-03-09 01:44:20 -06:00
Elizabeth Myers
550e851c5e
Merge branch 'master' of github.com:charybdis-ircd/charybdis into elizafox-cleanups
2016-03-09 01:41:10 -06:00
Elizabeth Myers
3c7d6fcce7
Message handlers should return void.
...
Also fix up some return values and stuff to use bool (or void if
nothing). I just did it whilst I was here.
According to jilles, the return value used to signify whether or not the
client had exited. This was error-prone and was fixed a long, long time
ago, but the return value was left int for historical reasons.
Since the return type is not used (and has no clear use case anyway),
it's safe to just get rid of it.
2016-03-09 01:37:03 -06:00
Elizabeth Myers
eeabf33a7c
Move module description headers to the top
...
This is cleaner.
Note this was broken out of a much larger piece of work I did, so if
there's any problems, I apologise!
2016-03-09 01:29:41 -06:00
Andrew Wilcox
959f5f368b
core/m_error: Be consistent in strncmp usage
2016-03-09 01:08:23 -06:00
Elizabeth Myers
6287d57fa9
s_user: clean up return types and can YES/NO.
2016-03-08 05:06:29 -06:00
Elizabeth Myers
07554369bd
Detect stdbool.h and add conformant shims if it isn't available
...
Charybdis requires C99 already, so it's high time we start using
stdbool. I've converted a few pieces of code already.
A lot of the old code that uses YES/NO should probably be updated too
because that's fucking hideous.
2016-03-08 04:54:04 -06:00
Elizabeth Myers
b3b7401f13
Remove another silly outdated comment [ci skip]
2016-03-08 04:40:46 -06:00
Elizabeth Myers
1235d6848f
m_svinfo: remove outdated comment
2016-03-08 04:40:19 -06:00
Elizabeth Myers
963c3faa43
m_stats: kill O(n) lookup on stats.
2016-03-08 04:38:42 -06:00
Elizabeth Myers
55799c6b4d
dns: prune worthless function.
2016-03-08 03:25:21 -06:00