/* * 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 . */ #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 */