1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-29 03:36:37 +02:00
Commit Graph

1940 Commits

Author SHA1 Message Date
Bram Matthys 5b8f393a8f * EventAdd() changed the order of parameters and expects every_msec now
which specifies the time in milliseconds rather than seconds. This
  allows for additional precision, or at least multiple calls per second.
  The minimum allowed every_msec value is 100 at this time.
  The prototype is now: EventAdd(Module *module, char *name,
  vFP event, void *data, long every_msec, int count);
2019-09-22 15:05:00 +02:00
Bram Matthys 4d277ccef8 Clean up and comment SocketLoop. Also preparations for later. 2019-09-22 14:20:22 +02:00
Bram Matthys 117a87dd8e I/O engine performance improvements (and fixes)
This is work in progress. The work was already done but the patch was
postponed until after alpha3 since it's not sufficiently stable yet.
2019-09-22 08:43:27 +02:00
Bram Matthys e846596b37 UnrealIRCd 5.0.0-alpha3 2019-09-21 18:19:33 +02:00
Bram Matthys dd536b4a92 Fix memory leak with conditional config.
And remove the comment which predicted this memory leak (:D)
2019-09-21 16:05:15 +02:00
Bram Matthys 95f9c56a16 Add warning if an unknown $VAR is encountered (without @define).
Also, you can escape a $VAR to $$VAR if you really just mean $VAR literally.
Such usage would be very rare though.
Note that the parser is smart enough to know that $var is never a
global variable, it only warns for valid variable names like $VAR and
even then only if it's at the end or has whitespace/dot/comma/etc.
So... false positives should be extremely low...
2019-09-18 09:43:45 +02:00
Bram Matthys c7c3fbdfa8 struct stats *ircstp; -> IRCStatistics ircstats; (for statistics, /STATS) 2019-09-15 14:48:45 +02:00
Bram Matthys bea2564e5d IRCStatistics ircstats; -> IRCCounts irccounts; (this is used for LUSERS) 2019-09-15 14:39:51 +02:00
Bram Matthys f81f221b13 Use memory pool for Client and LocalClient. Also reorder struct a bit. 2019-09-15 12:28:50 +02:00
Bram Matthys 1a24a634e5 Make Link functions (make_link, free_link) use memory pool code.
Also clean up a bit.
2019-09-15 11:33:17 +02:00
Bram Matthys edb199841a Move all the (remaining) LIST stuff to modules/list and use ModData. 2019-09-15 11:07:15 +02:00
Bram Matthys ffe5abe30b ModData: moddata_localvar -> moddata_local_variable,
moddata_globalvar -> moddata_global_variable,
and the just-added moddata_localclient -> moddata_local_client
..all this so it's more consistent
2019-09-15 09:47:54 +02:00
Bram Matthys b2f32c1746 Add moddata_localclient(), which is for locally connected clients only.
Make the silence module use this.
2019-09-15 09:26:54 +02:00
Bram Matthys 654919f2c4 Make modules/silence use ModData and remove more out of the core.
It uses a Silence struct now, rather than Link.
Also, SILENCE is handled only for local clients now (different
cost/benefit tradeoff nowadays).
2019-09-15 09:03:30 +02:00
Bram Matthys 6cc94b4b11 Move add_silence and del_silence out of the core to modules/silence 2019-09-15 07:52:04 +02:00
Bram Matthys de87b439b7 Update memory allocation routines. Step 1 of X. 2019-09-14 16:52:53 +02:00
Bram Matthys 7c6358024c Add 'natural order' string comparison to core: strnatcmp and strnatcasecmp
extern int strnatcmp(char const *a, char const *b);
extern int strnatcasecmp(char const *a, char const *b);
This will be handy for version comparisons. For example they will
return -1 (=lower) for things like ("1.4.9", "1.4.10"), unlike strcmp.

Also, some loosely related spelling fixes elsewhere.
2019-09-14 08:12:47 +02:00
Bram Matthys 9b14970c2a Move ident lookups to module 'ident_lookup' and rewrite the code
to be a bit less ugly. The module is loaded by default so you can
still use set::options::identd-check like before, even though I
hate ident... it's old shit... still, other's seem to like it.

More changes will follow later. There is still some ident stuff
in the core at the moment and the module is currently PERM, which
largely (but not entirely) defeats the purpose of being a module.
That will be fixed at a later time as well.
2019-09-13 19:21:29 +02:00
Bram Matthys baf02e8980 Rename all m_* functions to cmd_* functions. 2019-09-13 15:45:19 +02:00
Bram Matthys bb1bb35f50 MOD_LOAD(xyz) is now just MOD_LOAD(), same for MOD_TEST, MOD_INIT,
MOD_UNLOAD. And MOD_HEADER(xyz) is now MOD_HEADER even without ()
since this isn't a function, really.
To make things understandable I added the following to the
developer section of the release notes:

* The module header is now as follows:
  ModuleHeader MOD_HEADER
    = {
          "nameofmodule",
          "5.0",
          "Some description",
          "Name of Author",
          "unrealircd-5",
      };
  There's a new author field, the version must start with a digit,
  and also the name of the module must match the loadmodule name.
  So for example third/funmod must also be named third/funmod.
* The MOD_TEST, MOD_INIT, MOD_LOAD and MOD_UNLOAD functions no longer
  take a name argument. So: MOD_INIT(mymod) is now MOD_INIT()
2019-09-13 15:27:40 +02:00
GottemHams 358a31eaee First draft of require-modules module (require modules globally or deny them) 2019-09-11 22:18:03 +02:00
Bram Matthys c833ac2082 And some final cleanups of today, nothing important. 2019-09-11 20:07:47 +02:00
Bram Matthys 482c85de44 Get rid of this sptr->serv->user, as we already have sptr->serv->by
to track who initiated the connect. It also didn't seem to be displayed
anywhere but in /TRACE.
2019-09-11 19:46:52 +02:00
Bram Matthys 5659a2b177 Document more core structs.
[skip ci]
2019-09-11 19:44:10 +02:00
Bram Matthys 9b113c27e4 Document some more structs and group them in a logical place. 2019-09-11 19:07:11 +02:00
Bram Matthys c72d848b61 Get rid of MembershipL since there's no difference anymore between
local membership structs (MembershipL) and remote ones (Membership),
so they are now all called... Membership.
2019-09-11 17:53:29 +02:00
Bram Matthys bf2c5110db IsPerson() -> IsUser(), MyClient() -> MyUser(), etc.
This so we have a few simple concepts:
Client: this can be a user, server, or something unknown yet
Then the type of clients:
User: this is a user, someone with a nick name.
Server: this is a server
Etc.
2019-09-11 17:43:17 +02:00
Bram Matthys fcf0ff4e3c Document client statuses (cptr->status) and some more renames. 2019-09-11 16:52:11 +02:00
Bram Matthys 2df5326615 Overhaul of all client flag macros (mass renaming, always use getters/setters/checkers) 2019-09-11 16:00:47 +02:00
Bram Matthys e372e9118d Move cptr->count to cptr->local->identbufcnt since this only used by
the ident reading code nowadays, which obviously only happens for
locally connected users.
2019-09-11 14:36:12 +02:00
Bram Matthys d80e601760 Rename sptr->username to sptr->ident, since that is what it is.
[skip ci]
2019-09-11 14:31:14 +02:00
Bram Matthys c69bdbe175 ->status is now an enum of ClientStatus and STAT_xx -> CLIENT_STATUS_xx 2019-09-11 14:27:32 +02:00
Bram Matthys 792709bf4f Move cptr->fd to cptr->local->fd. This may cause some crashes while
the rest of the code is audited / checked ;)
2019-09-11 14:21:07 +02:00
Bram Matthys 68b7368305 Document Client struct
[skip ci]
2019-09-11 14:14:09 +02:00
Bram Matthys cb236eea88 Rename cptr->from to cptr->direction, since the 'from' is rather misleading
as cptr->from is NOT (necessarily) the server where cptr is connected to.
So we now call it cptr->direction since it indicates the directly connected
server (or &me)... in other words: the direction of the client path.
2019-09-11 14:03:27 +02:00
Bram Matthys 1e6a3bdd55 Bump PASSWDLEN to something "large enough for everyone" (256) rather than current (48). 2019-09-11 13:27:45 +02:00
Bram Matthys 786054e6b7 Remove 'md5', 'sha1' and 'ripemd160' from auth code. These are insecure and
old authentication types that are already deprecated in UnrealIRCd 4.x.
They don't contain any rounds which means they can be cracked at a rate of
millions per second. Use the secure hashing type 'argon2' instead
(or, if you must, use the less secure 'bcrypt' type).
2019-09-11 13:17:28 +02:00
Bram Matthys 04607f5b1a Various auth cleanups: Auth_Check() now returns 1 on allow and 0 on deny (!)
to keep things simple, rather than having 4 different return values
(yes.. FOUR!).
[skip ci]
2019-09-11 13:10:15 +02:00
Bram Matthys 05e776fb71 More cleanups: now mostly auth-related: use better names and use enums
for authentication types. Rename Auth_Make to Auth_Hash. Add docs. etc.
2019-09-11 12:37:34 +02:00
Bram Matthys e8d53ffe8e And more type changes to make things consistent and more readable. 2019-09-11 11:04:31 +02:00
Bram Matthys 2a5ea10453 Lots of changes again. Most notable: Cmdoverride -> CommandOverride,
including things like CallCmdoverride() to CallCommandOverride().
Type changes like aTKline -> TKL and many more (in particular
aSomething to Something etc. such as aWatch to Watch) but these are
less used by 3rd party module coders.
2019-09-11 10:20:00 +02:00
Bram Matthys f55682cbaa More (typedef) struct name changes. Mostly configuration but also
aCommand to RealCommand. Although not sure if this latter makes
things a lot more descriptive :D. Can revisit later.
(more to follow)
2019-09-11 10:04:47 +02:00
Bram Matthys 23116d344a Give structs the same name as the typedefs. Rename aClient to Client,
aChannel to Channel, and some more. Third party module coders will
love this. But.. it makes things more logical and the doxygen output
will look more clean and logical as well.
(More changes will follow)
2019-09-11 09:48:00 +02:00
GottemHams fbd7ff1f5a Implemented set::min-nick-length (default 0 aka no minimum required) and added a line for it to /stats S, as a bonus my editor strips trailing whitespace :D 2019-09-09 20:33:38 +02:00
Bram Matthys 5b361e69bb Get rid of configure check for strtoul and the src/strtoul.c file. 2019-09-09 17:49:10 +02:00
Bram Matthys ec2fdb82e0 Get rid of configure check for strerror() 2019-09-09 17:45:24 +02:00
Bram Matthys 80bc15c6d3 Apparently our strtoken() is special, don't bother then. Still, get rid of
the configure check.
2019-09-09 17:32:59 +02:00
Bram Matthys 1cdbbe043f Make strtoken() use strtok_r / strtok_s.
And get rid of the config check, as strtoken() never existed anyway.
2019-09-09 17:19:25 +02:00
Bram Matthys 078cfa88ea Get rid of configure check for strtok()
[skip ci]
2019-09-09 16:58:44 +02:00
Bram Matthys 36cb2226cc Get rid of checking inet_pton/net_ntop. Should be available on IPv6-capable
operating systems. And we require IPv6-capable since UnrealIRCd 4 already,
so.. ;)
2019-09-09 16:51:31 +02:00