This repository has been archived on 2021-04-17. You can view files and clone it, but cannot push or open issues or pull requests.
uIRC/include/mappings.h

295 lines
8.3 KiB
C

/*
* This file is part of uIRC. (https://git.redxen.eu/caskd/uIRC)
* Copyright (c) 2019, 2020 Alex-David Denes
*
* uIRC is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* uIRC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with uIRC. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef UIRC_GUARD_MAPS
#define UIRC_GUARD_MAPS
#define ERR_UIRC_GENERIC -1
#define ERR_UIRC_NULL_ARGS -2
#define ERR_UIRC_INVALID_FORMAT -3
#define ERR_UIRC_BUFFER_ERR -4
#define ERR_UIRC_UNKNOWN_TOKEN -5
#define ERR_UIRC_VAL_FAILED -10
/* Mode bitmask values */
#define MBMASK_WALLOPS 1 << 1 /* 010 */
#define MBMASK_INVIS 1 << 2 /* 100 */
/* IRCv3 Supported features bits */
#ifdef UIRC_IRCV3
#define CAP_ACCOUNT_NOTIFY 1
#define CAP_ACCOUNT_TAG 2
#define CAP_AWAY_NOTIFY 3
#define CAP_BATCH 4
#define CAP_CAP_NOTIFY 5
#define CAP_CHANNEL_RENAME 6
#define CAP_CHGHOST 7
#define CAP_ECHO_MESSAGE 8
#define CAP_EXTENDED_JOIN 9
#define CAP_INVITE_NOTIFY 10
#define CAP_LABELED_RESPONSE 11
#define CAP_MESSAGE_TAGS 12
#define CAP_MONITOR 13
#define CAP_MULTI_PREFIX 14
#define CAP_MULTILINE 15
#define CAP_SASL 16
#define CAP_SERVER_TIME 17
#define CAP_SETNAME 18
#define CAP_TLS 19
#define CAP_USERHOST_IN_NAMES 20
#define CAPBIT(cap) (1 << cap)
#endif /* UIRC_IRCV3 */
#define UIRC_FCMD ADMIN
enum commands {
ADMIN = 10,
AWAY,
CONNECT,
DIE,
ERROR,
INFO,
INVITE,
ISON,
JOIN,
KICK,
KILL,
LINKS,
LIST,
LUSERS,
MODE,
MOTD,
NAMES,
NICK,
NOTICE,
OPER,
PART,
PASS,
PING,
PONG,
PRIVMSG,
QUIT,
REHASH,
RESTART,
SERVER,
SERVICE,
SERVLIST,
SQUERY,
SQUIT,
STATS,
SUMMON,
TIME,
TOPIC,
TRACE,
USER,
USERHOST,
USERS,
VERSION,
WALLOPS,
WHO,
WHOIS,
WHOWAS,
#ifdef UIRC_IRCV3
ACC, /* https://github.com/ircv3/ircv3-specifications/pull/276 */
ACCOUNT, /* https://ircv3.net/specs/extensions/account-notify-3.1 */
ACK, /* https://ircv3.net/specs/extensions/labeled-response */
AUTHENTICATE, /* https://ircv3.net/specs/extensions/sasl-3.1 */
BATCH, /* https://ircv3.net/specs/extensions/batch-3.2 */
CAP, /* https://ircv3.net/specs/core/capability-negotiation */
CHGHOST, /* https://ircv3.net/specs/extensions/chghost-3.2 */
FAIL, /* https://ircv3.net/specs/extensions/standard-replies */
MONITOR, /* https://ircv3.net/specs/core/monitor-3.2 */
NOTE, /* https://ircv3.net/specs/extensions/standard-replies */
RENAME, /* https://github.com/ircv3/ircv3-specifications/pull/420 */
RESUME, /* https://github.com/ircv3/ircv3-specifications/pull/306 */
SETNAME, /* https://ircv3.net/specs/extensions/setname */
WARN, /* https://ircv3.net/specs/extensions/standard-replies */
WEBIRC, /* https://ircv3.net/specs/extensions/webirc */
#define UIRC_LCMD WEBIRC
#else /* UIRC_IRCV3 */
#define UIRC_LCMD WHOWAS
#endif /* UIRC_IRCV3 */
};
#define RPL_WELCOME 1
#define RPL_YOURHOST 2
#define RPL_CREATED 3
#define RPL_MYINFO 4
#define RPL_BOUNCE 5
#ifdef UIRC_IRCV3
/* TO IRCv3 WG:
* please, stop complicating implementations
* get people in the WG that actually care about the protocol and understand why and how standards are written
*
* TO LIBRARY USERS:
* Read the above and go speak with them, or just don't use IRCv3 :)
*/
#define RPL_ISUPPORT 5
#endif /* UIRC_IRCV3 */
#define RPL_TRACELINK 200
#define RPL_TRACECONNECTING 201
#define RPL_TRACEHANDSHAKE 202
#define RPL_TRACEUNKNOWN 203
#define RPL_TRACEOPERATOR 204
#define RPL_TRACEUSER 205
#define RPL_TRACESERVER 206
#define RPL_TRACENEWTYPE 208
#define RPL_STATSLINKINFO 211
#define RPL_STATSCOMMANDS 212
#define RPL_STATSCLINE 213
#define RPL_STATSNLINE 214
#define RPL_STATSILINE 215
#define RPL_STATSKLINE 216
#define RPL_STATSYLINE 218
#define RPL_ENDOFSTATS 219
#define RPL_UMODEIS 221
#define RPL_STATSLLINE 241
#define RPL_STATSUPTIME 242
#define RPL_STATSOLINE 243
#define RPL_STATSHLINE 244
#define RPL_LUSERCLIENT 251
#define RPL_LUSEROP 252
#define RPL_LUSERUNKNOWN 253
#define RPL_LUSERCHANNELS 254
#define RPL_LUSERME 255
#define RPL_ADMINME 256
#define RPL_ADMINLOC1 257
#define RPL_ADMINLOC2 258
#define RPL_ADMINEMAIL 259
#define RPL_TRACELOG 261
#define RPL_NONE 300
#define RPL_AWAY 301
#define RPL_USERHOST 302
#define RPL_ISON 303
#define RPL_UNAWAY 305
#define RPL_NOWAWAY 306
#define RPL_WHOISUSER 311
#define RPL_WHOISSERVER 312
#define RPL_WHOISOPERATOR 313
#define RPL_WHOWASUSER 314
#define RPL_ENDOFWHO 315
#define RPL_WHOISIDLE 317
#define RPL_ENDOFWHOIS 318
#define RPL_WHOISCHANNELS 319
#define RPL_LISTSTART 321
#define RPL_LIST 322
#define RPL_LISTEND 323
#define RPL_CHANNELMODEIS 324
#define RPL_NOTOPIC 331
#define RPL_TOPIC 332
#define RPL_INVITING 341
#define RPL_SUMMONING 342
#define RPL_VERSION 351
#define RPL_WHOREPLY 352
#define RPL_NAMREPLY 353
#define RPL_LINKS 364
#define RPL_ENDOFLINKS 365
#define RPL_ENDOFNAMES 366
#define RPL_BANLIST 367
#define RPL_ENDOFBANLIST 368
#define RPL_ENDOFWHOWAS 369
#define RPL_INFO 371
#define RPL_MOTD 372
#define RPL_ENDOFINFO 374
#define RPL_MOTDSTART 375
#define RPL_ENDOFMOTD 376
#define RPL_YOUREOPER 381
#define RPL_REHASHING 382
#define RPL_TIME 391
#define RPL_USERSSTART 392
#define RPL_USERS 393
#define RPL_ENDOFUSERS 394
#define RPL_NOUSERS 395
#define ERR_NOSUCHNICK 401
#define ERR_NOSUCHSERVER 402
#define ERR_NOSUCHCHANNEL 403
#define ERR_CANNOTSENDTOCHAN 404
#define ERR_TOOMANYCHANNELS 405
#define ERR_WASNOSUCHNICK 406
#define ERR_TOOMANYTARGETS 407
#define ERR_NOORIGIN 409
#define ERR_NORECIPIENT 411
#define ERR_NOTEXTTOSEND 412
#define ERR_NOTOPLEVEL 413
#define ERR_WILDTOPLEVEL 414
#define ERR_UNKNOWNCOMMAND 421
#define ERR_NOMOTD 422
#define ERR_NOADMININFO 423
#define ERR_FILEERROR 424
#define ERR_NONICKNAMEGIVEN 431
#define ERR_ERRONEUSNICKNAME 432
#define ERR_NICKNAMEINUSE 433
#define ERR_NICKCOLLISION 436
#define ERR_USERNOTINCHANNEL 441
#define ERR_NOTONCHANNEL 442
#define ERR_USERONCHANNEL 443
#define ERR_NOLOGIN 444
#define ERR_SUMMONDISABLED 445
#define ERR_USERSDISABLED 446
#define ERR_NOTREGISTERED 451
#define ERR_NEEDMOREPARAMS 461
#define ERR_ALREADYREGISTRED 462
#define ERR_NOPERMFORHOST 463
#define ERR_PASSWDMISMATCH 464
#define ERR_YOUREBANNEDCREEP 465
#define ERR_KEYSET 467
#define ERR_CHANNELISFULL 471
#define ERR_UNKNOWNMODE 472
#define ERR_INVITEONLYCHAN 473
#define ERR_BANNEDFROMCHAN 474
#define ERR_BADCHANNELKEY 475
#define ERR_NOPRIVILEGES 481
#define ERR_CHANOPRIVSNEEDED 482
#define ERR_CANTKILLSERVER 483
#define ERR_NOOPERHOST 491
#define ERR_UMODEUNKNOWNFLAG 501
#define ERR_USERSDONTMATCH 502
#ifdef UIRC_IRCV3
/* https://ircv3.net/registry */
#define RPL_STARTTLS 670
#define ERR_STARTTLS 691
#define RPL_MONONLINE 730
#define RPL_MONOFFLINE 731
#define RPL_MONLIST 732
#define RPL_ENDOFMONLIST 733
#define ERR_MOLISTFULL 734
#define RPL_LOGGEDIN 900
#define RPL_LOGGEDOUT 901
#define ERR_NICKLOCKED 902
#define RPL_SASLSUCCESS 903
#define ERR_SASLFAIL 904
#define ERR_SASLTOOLONG 905
#define ERR_SASLABORTED 906
#define ERR_SASLALREADY 907
#define ERR_SASLMECHS 908
#endif /* UIRC_IRCV3 */
extern const char* const IRC_Cmds[UIRC_LCMD + UIRC_FCMD];
#ifdef UIRC_IRCV3
extern const char* const IRC_v3_Caps[CAP_USERHOST_IN_NAMES + 1];
#endif /* UIRC_IRCV3 */
#endif /* UIRC_GUARD_MAPS */