diff options
| author | Nakidai <nakidai@disroot.org> | 2026-01-10 16:32:54 +0300 |
|---|---|---|
| committer | Nakidai <nakidai@disroot.org> | 2026-01-10 16:32:54 +0300 |
| commit | 76e2c978829bc6ff7bfe6c49bfa3739e19370990 (patch) | |
| tree | 07851d4ee5ca107ce4ec18889b20c006f56f53d3 /ircd.h | |
| parent | 346abf24c900a19a77a8ce66566a7ffd86a819bb (diff) | |
| download | libreircd-76e2c978829bc6ff7bfe6c49bfa3739e19370990.tar.gz libreircd-76e2c978829bc6ff7bfe6c49bfa3739e19370990.zip | |
Add basic user mode handling
So, now there're all modes listed in RFC 2812. The only what they do now, though, is a +r restricting user from changing their nick
Diffstat (limited to 'ircd.h')
| -rw-r--r-- | ircd.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/ircd.h b/ircd.h index 6035b79..2c4b144 100644 --- a/ircd.h +++ b/ircd.h @@ -51,9 +51,17 @@ struct Peer BIT(DELETE), BIT(ANNOUNCE), } flags; + enum PeerMode { + BIT(AWAY), + BIT(INVISIBLE), + BIT(WALLOPS), + BIT(RESTRICTED), + BIT(OPER), + BIT(LOCALOPER), + BIT(SNOTICE), + } modes; char buf[MESSAGE_MAX]; size_t recvd, channels_c; - char modes[52]; }; struct Channel @@ -75,10 +83,11 @@ extern struct Peer peers[PEERS_MAX]; extern size_t channels_c, peers_c; extern const char *hostname; extern const char *host; -extern int port; +extern unsigned long port; const char *getnick(const struct Peer *peer); -void user_reg(struct Peer *peer, const char *nick, const char *user, const char *real); +enum PeerMode user_mode(char m); +void user_reg(struct Peer *peer, const char *nick, const char *user, const char *real, const char *mode); void user_remove(size_t pid); int channel_join(struct Channel *channel, struct Peer *peer); |