UFO: Alien Invasion
Loading...
Searching...
No Matches
cl_irc.cpp File Reference

IRC client implementation for UFO:AI. More...

#include "cl_irc.h"
#include "client.h"
#include "cl_language.h"
#include "ui/ui_main.h"
#include "ui/ui_nodes.h"
#include "ui/ui_popup.h"
#include "battlescape/cl_hud.h"
#include "cgame/cl_game.h"
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <fcntl.h>
Include dependency graph for cl_irc.cpp:

Go to the source code of this file.

Data Structures

struct  irc_user_t
struct  irc_channel_t
struct  irc_command_t
struct  irc_server_msg_t
struct  irc_bucket_message_t
struct  irc_bucket_t

Macros

#define IRC_SEND_BUF_SIZE   512
#define IRC_RECV_BUF_SIZE   1024
#define IRC_CTCP_MARKER_CHR   '\001'
#define IRC_CTCP_MARKER_STR   "\001"
#define IRC_MAX_USERLIST   512

Enumerations

enum  irc_numeric_t {
  RPL_WELCOME = 1 , RPL_YOURHOST = 2 , RPL_CREATED = 3 , RPL_MYINFO = 4 ,
  RPL_ISUPPORT = 5 , RPL_HELLO = 20 , RPL_NONE = 300 , RPL_USERHOST = 302 ,
  RPL_ISON = 303 , RPL_AWAY = 301 , RPL_UNAWAY = 305 , RPL_NOWAWAY = 306 ,
  RPL_WHOISUSER = 311 , RPL_WHOISSERVER = 312 , RPL_WHOISOPERATOR = 313 , RPL_WHOISIDLE = 317 ,
  RPL_ENDOFWHOIS = 318 , RPL_WHOISCHANNELS = 319 , RPL_WHOWASUSER = 314 , RPL_ENDOFWHOWAS = 369 ,
  RPL_WHOISACCOUNT = 330 , RPL_LISTSTART = 321 , RPL_LIST = 322 , RPL_LISTEND = 323 ,
  RPL_CHANNELMODEIS = 324 , RPL_NOTOPIC = 331 , RPL_TOPIC = 332 , RPL_TOPICWHOTIME = 333 ,
  RPL_INVITING = 341 , RPL_SUMMONING = 342 , RPL_VERSION = 351 , RPL_WHOREPLY = 352 ,
  RPL_ENDOFWHO = 315 , RPL_NAMREPLY = 353 , RPL_ENDOFNAMES = 366 , RPL_LINKS = 364 ,
  RPL_ENDOFLINKS = 365 , RPL_BANLIST = 367 , RPL_ENDOFBANLIST = 368 , RPL_INFO = 371 ,
  RPL_ENDOFINFO = 374 , RPL_MOTDSTART = 375 , RPL_MOTD = 372 , RPL_ENDOFMOTD = 376 ,
  RPL_YOUREOPER = 381 , RPL_REHASHING = 382 , RPL_TIME = 391 , RPL_USERSSTART = 392 ,
  RPL_USERS = 393 , RPL_ENDOFUSERS = 394 , RPL_NOUSERS = 395 , RPL_TRACELINK = 200 ,
  RPL_TRACECONNECTING = 201 , RPL_TRACEHANDSHAKE = 202 , RPL_TRACEUNKNOWN = 203 , RPL_TRACEOPERATOR = 204 ,
  RPL_TRACEUSER = 205 , RPL_TRACESERVER = 206 , RPL_TRACENEWTYPE = 208 , RPL_TRACELOG = 261 ,
  RPL_STATSLINKINFO = 211 , RPL_STATSCOMMANDS = 212 , RPL_STATSCLINE = 213 , RPL_STATSNLINE = 214 ,
  RPL_STATSILINE = 215 , RPL_STATSKLINE = 216 , RPL_STATSYLINE = 218 , RPL_ENDOFSTATS = 219 ,
  RPL_STATSLLINE = 241 , RPL_STATSUPTIME = 242 , RPL_STATSOLINE = 243 , RPL_STATSHLINE = 244 ,
  RPL_UMODEIS = 221 , RPL_LUSERCLIENT = 251 , RPL_LUSEROP = 252 , RPL_LUSERUNKNOWN = 253 ,
  RPL_LUSERCHANNELS = 254 , RPL_LUSERME = 255 , RPL_ADMINME = 256 , RPL_ADMINLOC1 = 257 ,
  RPL_ADMINLOC2 = 258 , RPL_ADMINEMAIL = 259 , RPL_LOCALUSERS = 265 , RPL_GLOBALUSERS = 266 ,
  ERR_NOSUCHNICK = 401 , ERR_NOSUCHSERVER = 402 , ERR_NOSUCHCHANNEL = 403 , ERR_CANNOTSENDTOCHAN = 404 ,
  ERR_TOOMANYCHANNELS = 405 , ERR_WASNOSUCHNICK = 406 , ERR_TOOMANYTARGETS = 407 , ERR_NOORIGIN = 409 ,
  ERR_NORECIPIENT = 411 , ERR_NOTEXTTOSEND = 412 , ERR_NOTOPLEVEL = 413 , ERR_WILDTOPLEVEL = 414 ,
  ERR_UNKNOWNCOMMAND = 421 , ERR_NOMOTD = 422 , ERR_NOADMININFO = 423 , ERR_FILEERROR = 424 ,
  ERR_NONICKNAMEGIVEN = 431 , ERR_ERRONEUSNICKNAME = 432 , ERR_NICKNAMEINUSE = 433 , ERR_NICKCOLLISION = 436 ,
  ERR_BANNICKCHANGE = 437 , ERR_NCHANGETOOFAST = 438 , ERR_USERNOTINCHANNEL = 441 , ERR_NOTONCHANNEL = 442 ,
  ERR_USERONCHANNEL = 443 , ERR_NOLOGIN = 444 , ERR_SUMMONDISABLED = 445 , ERR_USERSDISABLED = 446 ,
  ERR_NOTREGISTERED = 451 , ERR_NEEDMOREPARAMS = 461 , ERR_ALREADYREGISTRED = 462 , ERR_NOPERMFORHOST = 463 ,
  ERR_PASSWDMISMATCH = 464 , ERR_YOUREBANNEDCREEP = 465 , ERR_BADNAME = 468 , ERR_KEYSET = 467 ,
  ERR_CHANNELISFULL = 471 , ERR_UNKNOWNMODE = 472 , ERR_INVITEONLYCHAN = 473 , ERR_BANNEDFROMCHAN = 474 ,
  ERR_BADCHANNELKEY = 475 , ERR_NOPRIVILEGES = 481 , ERR_CHANOPRIVSNEEDED = 482 , ERR_CANTKILLSERVER = 483 ,
  ERR_NOOPERHOST = 491 , ERR_UMODEUNKNOWNFLAG = 501 , ERR_USERSDONTMATCH = 502 , ERR_GHOSTEDCLIENT = 503 ,
  ERR_LAST_ERR_MSG = 504 , ERR_SILELISTFULL = 511 , ERR_NOSUCHGLINE = 512 , ERR_BADPING = 513 ,
  ERR_TOOMANYDCC = 514 , ERR_LISTSYNTAX = 521 , ERR_WHOSYNTAX = 522 , ERR_WHOLIMEXCEED = 523
}
enum  irc_command_type_t { IRC_COMMAND_NUMERIC , IRC_COMMAND_STRING }
enum  irc_nick_prefix_t { IRC_NICK_PREFIX_NONE = ' ' , IRC_NICK_PREFIX_OP = '@' , IRC_NICK_PREFIX_VOICE = '+' }

Functions

static void Irc_Logic_RemoveChannelName (irc_channel_t *channel, const char *nick)
 Removes a username from the channel username list.
static void Irc_Logic_AddChannelName (irc_channel_t *channel, irc_nick_prefix_t prefix, const char *nick)
 Adds a new username to the channel username list.
static void Irc_Client_Names_f (void)
static bool Irc_Client_Join (const char *channel, const char *password)
static void Irc_Logic_Disconnect (const char *reason)
static bool Irc_AppendToBuffer (const char *const msg,...)
 Append the irc message to the buffer.
static bool static bool Irc_Proto_ParseServerMsg (const char *txt, size_t txt_len, irc_server_msg_t *msg)
static bool Irc_Proto_Enqueue (const char *msg, size_t msg_len)
static bool Irc_Net_Connect (const char *host, const char *port)
static bool Irc_Net_Disconnect (void)
static void Irc_Net_Send (const char *msg, size_t msg_len)
static void Irc_Connect_f (void)
static void Irc_Disconnect_f (void)
static void Irc_Input_Deactivate_f (void)
static bool Irc_IsChannel (const char *target)
static void Irc_ParseName (const char *mask, char *nick, size_t size, irc_nick_prefix_t *prefix)
static bool Irc_Proto_Connect (const char *host, const char *port)
static bool Irc_Proto_Disconnect (void)
static bool Irc_Proto_Quit (const char *quitmsg)
static bool Irc_Proto_Nick (const char *nick)
static bool Irc_Proto_User (const char *user, bool invisible, const char *name)
static bool Irc_Proto_Password (const char *password)
static bool Irc_Proto_Join (const char *channel, const char *password)
static bool Irc_Proto_Part (const char *channel)
static bool Irc_Proto_Mode (const char *target, const char *modes, const char *params)
static bool Irc_Proto_Topic (const char *channel, const char *topic)
static bool Irc_Proto_Msg (const char *target, const char *text)
static bool Irc_Proto_Notice (const char *target, const char *text)
static void Irc_Proto_Pong (const char *nick, const char *server, const char *cookie)
static bool Irc_Proto_Kick (const char *channel, const char *nick, const char *reason)
static bool Irc_Proto_Who (const char *nick)
static bool Irc_Proto_Whois (const char *nick)
static bool Irc_Proto_Whowas (const char *nick)
static bool Irc_Proto_PollServerMsg (irc_server_msg_t *msg, bool *msg_complete)
static void Irc_Client_CmdRplWhowasuser (const char *params, const char *trailing)
static void Irc_Client_CmdTopic (const char *prefix, const char *trailing)
static void Irc_Client_CmdRplTopic (const char *params, const char *trailing)
static void Irc_Client_CmdRplWhoisuser (const char *params, const char *trailing)
static void Irc_Client_CmdRplWhoisserver (const char *params, const char *trailing)
static void Irc_Client_CmdRplWhoisaccount (const char *params, const char *trailing)
static void Irc_Client_CmdRplWhoisidle (const char *params, const char *trailing)
static void Irc_Client_CmdRplWhoreply (const char *params, const char *trailing)
static void Irc_Client_CmdMode (const char *prefix, const char *params, const char *trailing)
static void Irc_Client_CmdJoin (const char *prefix, const char *params, const char *trailing)
static void Irc_Client_CmdPart (const char *prefix, const char *trailing)
static void Irc_Client_CmdQuit (const char *prefix, const char *params, const char *trailing)
static void Irc_Client_CmdKill (const char *prefix, const char *params, const char *trailing)
static void Irc_Client_CmdKick (const char *prefix, const char *params, const char *trailing)
static void Irc_Client_CmdNick (const char *prefix, const char *params, const char *trailing)
 Changes the cvar 'name' with the new name you set.
static void Irc_Client_CmdPrivmsg (const char *prefix, const char *params, const char *trailing)
static void Irc_Client_CmdRplNamreply (const char *params, const char *trailing)
static void Irc_Client_CmdRplEndofnames (const char *params, const char *trailing)
static bool Irc_Proto_ProcessServerMsg (const irc_server_msg_t *msg)
static void Irc_Proto_RefillBucket (void)
static void Irc_Proto_DrainBucket (void)
 Send all enqueued packets.
static void Irc_Logic_SendMessages (void)
static void Irc_Logic_ReadMessages (void)
static void Irc_Logic_Connect (const char *server, const char *port)
void Irc_Logic_Frame (void)
static const char * Irc_Logic_GetChannelTopic (const irc_channel_t *channel)
static void Irc_Net_StreamClose (void)
static void Irc_Client_Join_f (void)
static void Irc_Client_Part_f (void)
static void Irc_Client_Msg_f (void)
 Send a message from menu or commandline.
static void Irc_Client_PrivMsg_f (void)
static void Irc_Client_Mode_f (void)
static void Irc_Client_Topic_f (void)
static void Irc_Client_Kick_f (void)
static void Irc_GetExternalIP (const char *externalIP, void *userdata)
static void Irc_Client_Invite_f (void)
static void Irc_Client_Who_f (void)
static void Irc_Client_Whois_f (void)
static void Irc_Client_Whowas_f (void)
static void Irc_UserClick_f (void)
 Adds the username you clicked to your input buffer.
static void Irc_UserRightClick_f (void)
 Performs a whois query for the username you clicked.
static void Irc_Input_Activate_f (void)
void Irc_Init (void)
void Irc_Shutdown (void)

Variables

static cvar_tirc_server
static cvar_tirc_port
static cvar_tirc_channel
static cvar_tirc_nick
static cvar_tirc_user
static cvar_tirc_password
static cvar_tirc_topic
static cvar_tirc_defaultChannel
static cvar_tirc_logConsole
static cvar_tirc_showIfNotInMenu
static cvar_tirc_send_buffer
static memPool_tcl_ircSysPool
static bool irc_connected
static struct net_streamirc_stream
static const char IRC_INVITE_FOR_A_GAME [] = "UFOAIINVITE;"
static irc_channel_t ircChan
static irc_channel_tchan
static char irc_buffer [4096]
static cvar_tirc_messageBucketSize
static cvar_tirc_messageBucketBurst
static cvar_tirc_characterBucketSize
static cvar_tirc_characterBucketBurst
static cvar_tirc_characterBucketRate
static irc_bucket_t irc_bucket
static char irc_userListOrdered [IRC_MAX_USERLIST][MAX_VAR]

Detailed Description

IRC client implementation for UFO:AI.

Definition in file cl_irc.cpp.

Macro Definition Documentation

◆ IRC_CTCP_MARKER_CHR

#define IRC_CTCP_MARKER_CHR   '\001'

Definition at line 903 of file cl_irc.cpp.

Referenced by Irc_Client_CmdPrivmsg().

◆ IRC_CTCP_MARKER_STR

#define IRC_CTCP_MARKER_STR   "\001"

Definition at line 904 of file cl_irc.cpp.

Referenced by Irc_Client_CmdPrivmsg().

◆ IRC_MAX_USERLIST

#define IRC_MAX_USERLIST   512

Definition at line 1763 of file cl_irc.cpp.

Referenced by Irc_Client_Names_f(), Irc_UserClick_f(), and Irc_UserRightClick_f().

◆ IRC_RECV_BUF_SIZE

#define IRC_RECV_BUF_SIZE   1024

Definition at line 63 of file cl_irc.cpp.

Referenced by Irc_Proto_PollServerMsg().

◆ IRC_SEND_BUF_SIZE

Enumeration Type Documentation

◆ irc_command_type_t

Enumerator
IRC_COMMAND_NUMERIC 
IRC_COMMAND_STRING 

Definition at line 226 of file cl_irc.cpp.

◆ irc_nick_prefix_t

Enumerator
IRC_NICK_PREFIX_NONE 
IRC_NICK_PREFIX_OP 
IRC_NICK_PREFIX_VOICE 

Definition at line 231 of file cl_irc.cpp.

◆ irc_numeric_t

Enumerator
RPL_WELCOME 
RPL_YOURHOST 
RPL_CREATED 
RPL_MYINFO 
RPL_ISUPPORT 
RPL_HELLO 
RPL_NONE 
RPL_USERHOST 
RPL_ISON 
RPL_AWAY 
RPL_UNAWAY 
RPL_NOWAWAY 
RPL_WHOISUSER 
RPL_WHOISSERVER 
RPL_WHOISOPERATOR 
RPL_WHOISIDLE 
RPL_ENDOFWHOIS 
RPL_WHOISCHANNELS 
RPL_WHOWASUSER 
RPL_ENDOFWHOWAS 
RPL_WHOISACCOUNT 
RPL_LISTSTART 
RPL_LIST 
RPL_LISTEND 
RPL_CHANNELMODEIS 
RPL_NOTOPIC 
RPL_TOPIC 
RPL_TOPICWHOTIME 
RPL_INVITING 
RPL_SUMMONING 
RPL_VERSION 
RPL_WHOREPLY 
RPL_ENDOFWHO 
RPL_NAMREPLY 
RPL_ENDOFNAMES 
RPL_LINKS 
RPL_ENDOFLINKS 
RPL_BANLIST 
RPL_ENDOFBANLIST 
RPL_INFO 
RPL_ENDOFINFO 
RPL_MOTDSTART 
RPL_MOTD 
RPL_ENDOFMOTD 
RPL_YOUREOPER 
RPL_REHASHING 
RPL_TIME 
RPL_USERSSTART 
RPL_USERS 
RPL_ENDOFUSERS 
RPL_NOUSERS 
RPL_TRACELINK 
RPL_TRACECONNECTING 
RPL_TRACEHANDSHAKE 
RPL_TRACEUNKNOWN 
RPL_TRACEOPERATOR 
RPL_TRACEUSER 
RPL_TRACESERVER 
RPL_TRACENEWTYPE 
RPL_TRACELOG 
RPL_STATSLINKINFO 
RPL_STATSCOMMANDS 
RPL_STATSCLINE 
RPL_STATSNLINE 
RPL_STATSILINE 
RPL_STATSKLINE 
RPL_STATSYLINE 
RPL_ENDOFSTATS 
RPL_STATSLLINE 
RPL_STATSUPTIME 
RPL_STATSOLINE 
RPL_STATSHLINE 
RPL_UMODEIS 
RPL_LUSERCLIENT 
RPL_LUSEROP 
RPL_LUSERUNKNOWN 
RPL_LUSERCHANNELS 
RPL_LUSERME 
RPL_ADMINME 
RPL_ADMINLOC1 
RPL_ADMINLOC2 
RPL_ADMINEMAIL 
RPL_LOCALUSERS 
RPL_GLOBALUSERS 
ERR_NOSUCHNICK 
ERR_NOSUCHSERVER 
ERR_NOSUCHCHANNEL 
ERR_CANNOTSENDTOCHAN 
ERR_TOOMANYCHANNELS 
ERR_WASNOSUCHNICK 
ERR_TOOMANYTARGETS 
ERR_NOORIGIN 
ERR_NORECIPIENT 
ERR_NOTEXTTOSEND 
ERR_NOTOPLEVEL 
ERR_WILDTOPLEVEL 
ERR_UNKNOWNCOMMAND 
ERR_NOMOTD 
ERR_NOADMININFO 
ERR_FILEERROR 
ERR_NONICKNAMEGIVEN 
ERR_ERRONEUSNICKNAME 
ERR_NICKNAMEINUSE 
ERR_NICKCOLLISION 
ERR_BANNICKCHANGE 
ERR_NCHANGETOOFAST 
ERR_USERNOTINCHANNEL 
ERR_NOTONCHANNEL 
ERR_USERONCHANNEL 
ERR_NOLOGIN 
ERR_SUMMONDISABLED 
ERR_USERSDISABLED 
ERR_NOTREGISTERED 
ERR_NEEDMOREPARAMS 
ERR_ALREADYREGISTRED 
ERR_NOPERMFORHOST 
ERR_PASSWDMISMATCH 
ERR_YOUREBANNEDCREEP 
ERR_BADNAME 
ERR_KEYSET 
ERR_CHANNELISFULL 
ERR_UNKNOWNMODE 
ERR_INVITEONLYCHAN 
ERR_BANNEDFROMCHAN 
ERR_BADCHANNELKEY 
ERR_NOPRIVILEGES 
ERR_CHANOPRIVSNEEDED 
ERR_CANTKILLSERVER 
ERR_NOOPERHOST 
ERR_UMODEUNKNOWNFLAG 
ERR_USERSDONTMATCH 
ERR_GHOSTEDCLIENT 
ERR_LAST_ERR_MSG 
ERR_SILELISTFULL 
ERR_NOSUCHGLINE 
ERR_BADPING 
ERR_TOOMANYDCC 
ERR_LISTSYNTAX 
ERR_WHOSYNTAX 
ERR_WHOLIMEXCEED 

Definition at line 78 of file cl_irc.cpp.

Function Documentation

◆ Irc_AppendToBuffer()

◆ Irc_Client_CmdJoin()

void Irc_Client_CmdJoin ( const char * prefix,
const char * params,
const char * trailing )
static

◆ Irc_Client_CmdKick()

void Irc_Client_CmdKick ( const char * prefix,
const char * params,
const char * trailing )
static

◆ Irc_Client_CmdKill()

void Irc_Client_CmdKill ( const char * prefix,
const char * params,
const char * trailing )
static

◆ Irc_Client_CmdMode()

void Irc_Client_CmdMode ( const char * prefix,
const char * params,
const char * trailing )
static

Definition at line 820 of file cl_irc.cpp.

References Irc_AppendToBuffer(), Irc_ParseName(), and MAX_VAR.

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdNick()

void Irc_Client_CmdNick ( const char * prefix,
const char * params,
const char * trailing )
static

Changes the cvar 'name' with the new name you set.

Definition at line 886 of file cl_irc.cpp.

References chan, Cvar_ForceSet(), Irc_AppendToBuffer(), Irc_Logic_AddChannelName(), Irc_Logic_RemoveChannelName(), irc_nick, Irc_ParseName(), MAX_VAR, and Q_streq.

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdPart()

void Irc_Client_CmdPart ( const char * prefix,
const char * trailing )
static

◆ Irc_Client_CmdPrivmsg()

◆ Irc_Client_CmdQuit()

void Irc_Client_CmdQuit ( const char * prefix,
const char * params,
const char * trailing )
static

◆ Irc_Client_CmdRplEndofnames()

void Irc_Client_CmdRplEndofnames ( const char * params,
const char * trailing )
static
Todo
Implement me

Definition at line 1022 of file cl_irc.cpp.

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdRplNamreply()

void Irc_Client_CmdRplNamreply ( const char * params,
const char * trailing )
static

◆ Irc_Client_CmdRplTopic()

void Irc_Client_CmdRplTopic ( const char * params,
const char * trailing )
static

Definition at line 691 of file cl_irc.cpp.

References Irc_Client_CmdTopic().

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdRplWhoisaccount()

void Irc_Client_CmdRplWhoisaccount ( const char * params,
const char * trailing )
static

Definition at line 745 of file cl_irc.cpp.

References i, Irc_AppendToBuffer(), IRC_SEND_BUF_SIZE, and Q_strncpyz().

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdRplWhoisidle()

void Irc_Client_CmdRplWhoisidle ( const char * params,
const char * trailing )
static

Definition at line 766 of file cl_irc.cpp.

References i, Irc_AppendToBuffer(), IRC_SEND_BUF_SIZE, and Q_strncpyz().

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdRplWhoisserver()

void Irc_Client_CmdRplWhoisserver ( const char * params,
const char * trailing )
static

Definition at line 724 of file cl_irc.cpp.

References i, Irc_AppendToBuffer(), IRC_SEND_BUF_SIZE, and Q_strncpyz().

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdRplWhoisuser()

void Irc_Client_CmdRplWhoisuser ( const char * params,
const char * trailing )
static

Definition at line 700 of file cl_irc.cpp.

References i, Irc_AppendToBuffer(), IRC_SEND_BUF_SIZE, Q_strncpyz(), and user.

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdRplWhoreply()

void Irc_Client_CmdRplWhoreply ( const char * params,
const char * trailing )
static

Definition at line 787 of file cl_irc.cpp.

References i, Irc_AppendToBuffer(), IRC_SEND_BUF_SIZE, Q_strncpyz(), and user.

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdRplWhowasuser()

void Irc_Client_CmdRplWhowasuser ( const char * params,
const char * trailing )
static

Definition at line 662 of file cl_irc.cpp.

References i, Irc_AppendToBuffer(), IRC_SEND_BUF_SIZE, Q_strncpyz(), and user.

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Client_CmdTopic()

void Irc_Client_CmdTopic ( const char * prefix,
const char * trailing )
inlinestatic

Definition at line 686 of file cl_irc.cpp.

References Cvar_ForceSet().

Referenced by Irc_Client_CmdRplTopic(), and Irc_Proto_ProcessServerMsg().

◆ Irc_Client_Invite_f()

void Irc_Client_Invite_f ( void )
static

◆ Irc_Client_Join()

bool Irc_Client_Join ( const char * channel,
const char * password )
static

◆ Irc_Client_Join_f()

void Irc_Client_Join_f ( void )
static

Definition at line 1640 of file cl_irc.cpp.

References Cmd_Argc(), Cmd_Argv(), Com_Printf(), and Irc_Client_Join().

Referenced by Irc_Init().

◆ Irc_Client_Kick_f()

void Irc_Client_Kick_f ( void )
static

Definition at line 1789 of file cl_irc.cpp.

References chan, Cmd_Argc(), Cmd_Args(), Cmd_Argv(), Com_Printf(), and Irc_Proto_Kick().

Referenced by Irc_Init().

◆ Irc_Client_Mode_f()

void Irc_Client_Mode_f ( void )
static

Definition at line 1717 of file cl_irc.cpp.

References Cmd_Argc(), Cmd_Args(), Cmd_Argv(), Com_Printf(), and Irc_Proto_Mode().

Referenced by Irc_Init().

◆ Irc_Client_Msg_f()

void Irc_Client_Msg_f ( void )
static

Send a message from menu or commandline.

Note
This function uses the irc_send_buffer cvar to handle the menu input for irc messages See menu_irc.ufo for more information

Definition at line 1669 of file cl_irc.cpp.

References Cmd_Argc(), Cmd_Args(), Com_Printf(), Cvar_ForceSet(), Irc_AppendToBuffer(), irc_defaultChannel, irc_nick, Irc_Proto_Msg(), IRC_SEND_BUF_SIZE, and irc_send_buffer.

Referenced by Irc_Init().

◆ Irc_Client_Names_f()

◆ Irc_Client_Part_f()

void Irc_Client_Part_f ( void )
static

Definition at line 1653 of file cl_irc.cpp.

References Cmd_Argc(), Cmd_Argv(), Com_Printf(), and Irc_Proto_Part().

Referenced by Irc_Init().

◆ Irc_Client_PrivMsg_f()

void Irc_Client_PrivMsg_f ( void )
static

Definition at line 1699 of file cl_irc.cpp.

References Cmd_Argc(), Cmd_Args(), Cmd_Argv(), Com_Printf(), Irc_Proto_Msg(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Init().

◆ Irc_Client_Topic_f()

void Irc_Client_Topic_f ( void )
static

◆ Irc_Client_Who_f()

void Irc_Client_Who_f ( void )
static

Definition at line 1851 of file cl_irc.cpp.

References Cmd_Argc(), Cmd_Argv(), Com_Printf(), and Irc_Proto_Who().

Referenced by Irc_Init().

◆ Irc_Client_Whois_f()

void Irc_Client_Whois_f ( void )
static

Definition at line 1860 of file cl_irc.cpp.

References Cmd_Argc(), Cmd_Argv(), Com_Printf(), and Irc_Proto_Whois().

Referenced by Irc_Init().

◆ Irc_Client_Whowas_f()

void Irc_Client_Whowas_f ( void )
static

Definition at line 1869 of file cl_irc.cpp.

References Cmd_Argc(), Cmd_Argv(), Com_Printf(), and Irc_Proto_Whowas().

Referenced by Irc_Init().

◆ Irc_Connect_f()

◆ Irc_Disconnect_f()

void Irc_Disconnect_f ( void )
static

Definition at line 1618 of file cl_irc.cpp.

References Irc_Logic_Disconnect().

Referenced by Irc_Init().

◆ Irc_GetExternalIP()

void Irc_GetExternalIP ( const char * externalIP,
void * userdata )
static
Todo
Maybe somehow check the version of the client with ctcp VERSION and only send to those, that are connected with ufoai and have a correct version

Definition at line 1810 of file cl_irc.cpp.

References chan, Com_Printf(), Com_sprintf(), IRC_INVITE_FOR_A_GAME, irc_nick, Irc_Proto_Msg(), name, port, Q_streq, UFO_VERSION, and user.

Referenced by Irc_Client_Invite_f().

◆ Irc_Init()

◆ Irc_Input_Activate_f()

void Irc_Input_Activate_f ( void )
static
See also
Irc_Input_Deactivate

Definition at line 1931 of file cl_irc.cpp.

References Com_DPrintf(), DEBUG_CLIENT, irc_buffer, irc_connected, irc_defaultChannel, TEXT_IRCCONTENT, UI_PopWindow(), UI_PushWindow(), and UI_RegisterText().

Referenced by Irc_Init().

◆ Irc_Input_Deactivate_f()

void Irc_Input_Deactivate_f ( void )
static
See also
Irc_Input_Activate

Definition at line 1946 of file cl_irc.cpp.

References irc_send_buffer, TEXT_IRCCONTENT, and UI_ResetData().

Referenced by Irc_Init(), and Irc_Logic_Disconnect().

◆ Irc_IsChannel()

bool Irc_IsChannel ( const char * target)
inlinestatic

Definition at line 292 of file cl_irc.cpp.

References inline, and Irc_IsChannel().

Referenced by Irc_Client_Join(), and Irc_IsChannel().

◆ Irc_Logic_AddChannelName()

void Irc_Logic_AddChannelName ( irc_channel_t * channel,
irc_nick_prefix_t prefix,
const char * nick )
static

◆ Irc_Logic_Connect()

void Irc_Logic_Connect ( const char * server,
const char * port )
static

◆ Irc_Logic_Disconnect()

◆ Irc_Logic_Frame()

◆ Irc_Logic_GetChannelTopic()

const char * Irc_Logic_GetChannelTopic ( const irc_channel_t * channel)
static

Definition at line 1487 of file cl_irc.cpp.

References irc_channel_t::topic.

Referenced by Irc_Client_Topic_f().

◆ Irc_Logic_ReadMessages()

◆ Irc_Logic_RemoveChannelName()

void Irc_Logic_RemoveChannelName ( irc_channel_t * channel,
const char * nick )
static

◆ Irc_Logic_SendMessages()

void Irc_Logic_SendMessages ( void )
static
See also
Irc_Logic_Frame

Definition at line 1401 of file cl_irc.cpp.

References Irc_Proto_DrainBucket(), and Irc_Proto_RefillBucket().

Referenced by Irc_Logic_Frame().

◆ Irc_Net_Connect()

bool Irc_Net_Connect ( const char * host,
const char * port )
static
Returns
true if successful - false otherwise
See also
Irc_Net_Disconnect

Definition at line 1556 of file cl_irc.cpp.

References Irc_Net_StreamClose(), irc_stream, NET_Connect(), NET_StreamFree(), and port.

Referenced by Irc_Proto_Connect().

◆ Irc_Net_Disconnect()

bool Irc_Net_Disconnect ( void )
static
See also
Irc_Net_Connect

Definition at line 1567 of file cl_irc.cpp.

References irc_stream, and NET_StreamFree().

Referenced by Irc_Proto_Disconnect().

◆ Irc_Net_Send()

void Irc_Net_Send ( const char * msg,
size_t msg_len )
static

Definition at line 1573 of file cl_irc.cpp.

References irc_stream, and NET_StreamEnqueue().

Referenced by Irc_Proto_DrainBucket(), Irc_Proto_Pong(), and Irc_Proto_Quit().

◆ Irc_Net_StreamClose()

void Irc_Net_StreamClose ( void )
static

Definition at line 1547 of file cl_irc.cpp.

References irc_stream.

Referenced by Irc_Net_Connect().

◆ Irc_ParseName()

◆ Irc_Proto_Connect()

bool Irc_Proto_Connect ( const char * host,
const char * port )
static

◆ Irc_Proto_Disconnect()

bool Irc_Proto_Disconnect ( void )
static

◆ Irc_Proto_DrainBucket()

void Irc_Proto_DrainBucket ( void )
static

Send all enqueued packets.

See also
Irc_Proto_Enqueue
Irc_Proto_RefillBucket

Definition at line 1361 of file cl_irc.cpp.

References irc_bucket, irc_characterBucketBurst, Irc_Net_Send(), Mem_Free, and irc_bucket_message_t::next.

Referenced by Irc_Logic_SendMessages().

◆ Irc_Proto_Enqueue()

◆ Irc_Proto_Join()

bool Irc_Proto_Join ( const char * channel,
const char * password )
static

◆ Irc_Proto_Kick()

bool Irc_Proto_Kick ( const char * channel,
const char * nick,
const char * reason )
static
See also
Irc_Proto_Enqueue

Definition at line 536 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Client_Kick_f().

◆ Irc_Proto_Mode()

bool Irc_Proto_Mode ( const char * target,
const char * modes,
const char * params )
static
See also
Irc_Proto_Enqueue

Definition at line 467 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Client_Mode_f().

◆ Irc_Proto_Msg()

bool Irc_Proto_Msg ( const char * target,
const char * text )
static

◆ Irc_Proto_Nick()

bool Irc_Proto_Nick ( const char * nick)
static
See also
Irc_Proto_Enqueue

Definition at line 400 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Logic_Connect().

◆ Irc_Proto_Notice()

bool Irc_Proto_Notice ( const char * target,
const char * text )
static
See also
Irc_Proto_Enqueue

Definition at line 512 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Client_CmdPrivmsg().

◆ Irc_Proto_ParseServerMsg()

◆ Irc_Proto_Part()

bool Irc_Proto_Part ( const char * channel)
static
See also
Irc_Proto_Enqueue

Definition at line 456 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Client_Part_f().

◆ Irc_Proto_Password()

bool Irc_Proto_Password ( const char * password)
static
See also
Irc_Proto_Enqueue

Definition at line 422 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), IRC_SEND_BUF_SIZE, and password.

Referenced by Irc_Logic_Connect().

◆ Irc_Proto_PollServerMsg()

bool Irc_Proto_PollServerMsg ( irc_server_msg_t * msg,
bool * msg_complete )
static

◆ Irc_Proto_Pong()

void Irc_Proto_Pong ( const char * nick,
const char * server,
const char * cookie )
static
See also
Irc_Net_Send

Definition at line 523 of file cl_irc.cpp.

References Irc_Net_Send(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Proto_ProcessServerMsg().

◆ Irc_Proto_ProcessServerMsg()

bool Irc_Proto_ProcessServerMsg ( const irc_server_msg_t * msg)
static
See also
Irc_Logic_ReadMessages
Todo
Skip non printable chars here

Definition at line 1029 of file cl_irc.cpp.

References _, CL_Translate(), Com_DPrintf(), Com_Printf(), DEBUG_CLIENT, ERR_ALREADYREGISTRED, ERR_BADCHANNELKEY, ERR_BADNAME, ERR_BADPING, ERR_BANNEDFROMCHAN, ERR_BANNICKCHANGE, ERR_CANNOTSENDTOCHAN, ERR_CANTKILLSERVER, ERR_CHANNELISFULL, ERR_CHANOPRIVSNEEDED, ERR_ERRONEUSNICKNAME, ERR_FILEERROR, ERR_GHOSTEDCLIENT, ERR_INVITEONLYCHAN, ERR_KEYSET, ERR_LAST_ERR_MSG, ERR_LISTSYNTAX, ERR_NCHANGETOOFAST, ERR_NEEDMOREPARAMS, ERR_NICKCOLLISION, ERR_NICKNAMEINUSE, ERR_NOADMININFO, ERR_NOLOGIN, ERR_NOMOTD, ERR_NONICKNAMEGIVEN, ERR_NOOPERHOST, ERR_NOORIGIN, ERR_NOPERMFORHOST, ERR_NOPRIVILEGES, ERR_NORECIPIENT, ERR_NOSUCHCHANNEL, ERR_NOSUCHGLINE, ERR_NOSUCHNICK, ERR_NOSUCHSERVER, ERR_NOTEXTTOSEND, ERR_NOTONCHANNEL, ERR_NOTOPLEVEL, ERR_NOTREGISTERED, ERR_PASSWDMISMATCH, ERR_SILELISTFULL, ERR_SUMMONDISABLED, ERR_TOOMANYCHANNELS, ERR_TOOMANYDCC, ERR_TOOMANYTARGETS, ERR_UMODEUNKNOWNFLAG, ERR_UNKNOWNCOMMAND, ERR_UNKNOWNMODE, ERR_USERNOTINCHANNEL, ERR_USERONCHANNEL, ERR_USERSDISABLED, ERR_USERSDONTMATCH, ERR_WASNOSUCHNICK, ERR_WHOLIMEXCEED, ERR_WHOSYNTAX, ERR_WILDTOPLEVEL, ERR_YOUREBANNEDCREEP, irc_command_t::id, irc_server_msg_t::id, Irc_AppendToBuffer(), Irc_Client_CmdJoin(), Irc_Client_CmdKick(), Irc_Client_CmdKill(), Irc_Client_CmdMode(), Irc_Client_CmdNick(), Irc_Client_CmdPart(), Irc_Client_CmdPrivmsg(), Irc_Client_CmdQuit(), Irc_Client_CmdRplEndofnames(), Irc_Client_CmdRplNamreply(), Irc_Client_CmdRplTopic(), Irc_Client_CmdRplWhoisaccount(), Irc_Client_CmdRplWhoisidle(), Irc_Client_CmdRplWhoisserver(), Irc_Client_CmdRplWhoisuser(), Irc_Client_CmdRplWhoreply(), Irc_Client_CmdRplWhowasuser(), Irc_Client_CmdTopic(), IRC_COMMAND_NUMERIC, IRC_COMMAND_STRING, irc_logConsole, Irc_Logic_Disconnect(), irc_nick, Irc_Proto_Pong(), irc_command_t::numeric, irc_server_msg_t::numeric, irc_server_msg_t::params, popupText, irc_server_msg_t::prefix, Q_strncpyz(), RPL_CREATED, RPL_ENDOFMOTD, RPL_ENDOFNAMES, RPL_ENDOFWHO, RPL_ENDOFWHOIS, RPL_ENDOFWHOWAS, RPL_GLOBALUSERS, RPL_HELLO, RPL_ISUPPORT, RPL_LOCALUSERS, RPL_LUSERCHANNELS, RPL_LUSERCLIENT, RPL_LUSERME, RPL_LUSEROP, RPL_LUSERUNKNOWN, RPL_MOTD, RPL_MOTDSTART, RPL_MYINFO, RPL_NAMREPLY, RPL_NOTOPIC, RPL_TOPIC, RPL_WELCOME, RPL_WHOISACCOUNT, RPL_WHOISCHANNELS, RPL_WHOISIDLE, RPL_WHOISOPERATOR, RPL_WHOISSERVER, RPL_WHOISUSER, RPL_WHOREPLY, RPL_WHOWASUSER, RPL_YOURHOST, irc_command_t::string, irc_server_msg_t::string, irc_server_msg_t::trailing, irc_command_t::type, irc_server_msg_t::type, UI_Popup(), and UI_PushWindow().

Referenced by Irc_Logic_ReadMessages().

◆ Irc_Proto_Quit()

bool Irc_Proto_Quit ( const char * quitmsg)
static
See also
Irc_Net_Send

Definition at line 388 of file cl_irc.cpp.

References Irc_Net_Send(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Logic_Disconnect().

◆ Irc_Proto_RefillBucket()

void Irc_Proto_RefillBucket ( void )
static

◆ Irc_Proto_Topic()

bool Irc_Proto_Topic ( const char * channel,
const char * topic )
static
See also
Irc_Proto_Enqueue

Definition at line 480 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Client_Topic_f().

◆ Irc_Proto_User()

bool Irc_Proto_User ( const char * user,
bool invisible,
const char * name )
static
See also
Irc_Proto_Enqueue

Definition at line 411 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), IRC_SEND_BUF_SIZE, name, and user.

Referenced by Irc_Logic_Connect().

◆ Irc_Proto_Who()

bool Irc_Proto_Who ( const char * nick)
static
See also
Irc_Proto_Enqueue

Definition at line 549 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Client_Who_f().

◆ Irc_Proto_Whois()

bool Irc_Proto_Whois ( const char * nick)
static
See also
Irc_Proto_Enqueue

Definition at line 560 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Client_Whois_f(), and Irc_UserRightClick_f().

◆ Irc_Proto_Whowas()

bool Irc_Proto_Whowas ( const char * nick)
static
See also
Irc_Proto_Enqueue

Definition at line 571 of file cl_irc.cpp.

References Irc_Proto_Enqueue(), and IRC_SEND_BUF_SIZE.

Referenced by Irc_Client_Whowas_f().

◆ Irc_Shutdown()

void Irc_Shutdown ( void )

Definition at line 2006 of file cl_irc.cpp.

References cl_ircSysPool, irc_connected, Irc_Logic_Disconnect(), and Mem_DeletePool.

Referenced by CL_Shutdown().

◆ Irc_UserClick_f()

void Irc_UserClick_f ( void )
static

Adds the username you clicked to your input buffer.

See also
Irc_UserRightClick_f

Definition at line 1888 of file cl_irc.cpp.

References chan, Cmd_Argc(), Cmd_Argv(), Cvar_Set(), IRC_MAX_USERLIST, irc_send_buffer, irc_userListOrdered, and name.

Referenced by Irc_Init().

◆ Irc_UserRightClick_f()

void Irc_UserRightClick_f ( void )
static

Performs a whois query for the username you clicked.

See also
Irc_UserClick_f

Definition at line 1910 of file cl_irc.cpp.

References chan, Cmd_Argc(), Cmd_Argv(), IRC_MAX_USERLIST, Irc_Proto_Whois(), irc_userListOrdered, and name.

Referenced by Irc_Init().

Variable Documentation

◆ chan

◆ cl_ircSysPool

memPool_t* cl_ircSysPool
static

◆ irc_bucket

◆ irc_buffer

char irc_buffer[4096]
static

Definition at line 266 of file cl_irc.cpp.

Referenced by Irc_AppendToBuffer(), and Irc_Input_Activate_f().

◆ irc_channel

cvar_t* irc_channel
static

Definition at line 48 of file cl_irc.cpp.

Referenced by Irc_Connect_f(), Irc_Init(), and Irc_Logic_Frame().

◆ irc_characterBucketBurst

cvar_t* irc_characterBucketBurst
static

Definition at line 329 of file cl_irc.cpp.

Referenced by Irc_Init(), Irc_Proto_Connect(), and Irc_Proto_DrainBucket().

◆ irc_characterBucketRate

cvar_t* irc_characterBucketRate
static

Definition at line 330 of file cl_irc.cpp.

Referenced by Irc_Init(), and Irc_Proto_RefillBucket().

◆ irc_characterBucketSize

cvar_t* irc_characterBucketSize
static

Definition at line 328 of file cl_irc.cpp.

Referenced by Irc_Init(), Irc_Proto_Enqueue(), and Irc_Proto_RefillBucket().

◆ irc_connected

◆ irc_defaultChannel

cvar_t* irc_defaultChannel
static

Definition at line 53 of file cl_irc.cpp.

Referenced by Irc_Client_CmdPrivmsg(), Irc_Client_Msg_f(), Irc_Init(), and Irc_Input_Activate_f().

◆ IRC_INVITE_FOR_A_GAME

const char IRC_INVITE_FOR_A_GAME[] = "UFOAIINVITE;"
static

Definition at line 261 of file cl_irc.cpp.

Referenced by Irc_Client_CmdPrivmsg(), and Irc_GetExternalIP().

◆ irc_logConsole

cvar_t* irc_logConsole
static

Definition at line 54 of file cl_irc.cpp.

Referenced by Irc_AppendToBuffer(), Irc_Init(), and Irc_Proto_ProcessServerMsg().

◆ irc_messageBucketBurst

cvar_t* irc_messageBucketBurst
static

Definition at line 327 of file cl_irc.cpp.

Referenced by Irc_Init().

◆ irc_messageBucketSize

cvar_t* irc_messageBucketSize
static

Definition at line 326 of file cl_irc.cpp.

Referenced by Irc_Init(), and Irc_Proto_Enqueue().

◆ irc_nick

◆ irc_password

cvar_t* irc_password
static

Definition at line 51 of file cl_irc.cpp.

Referenced by Irc_Init(), and Irc_Logic_Connect().

◆ irc_port

cvar_t* irc_port
static

Definition at line 47 of file cl_irc.cpp.

Referenced by Irc_Connect_f(), Irc_Init(), and Irc_Logic_Frame().

◆ irc_send_buffer

cvar_t* irc_send_buffer
static

Definition at line 57 of file cl_irc.cpp.

Referenced by Irc_Client_Msg_f(), Irc_Init(), Irc_Input_Deactivate_f(), and Irc_UserClick_f().

◆ irc_server

cvar_t* irc_server
static

Definition at line 46 of file cl_irc.cpp.

Referenced by Irc_Connect_f(), Irc_Init(), and Irc_Logic_Frame().

◆ irc_showIfNotInMenu

cvar_t* irc_showIfNotInMenu
static

Definition at line 55 of file cl_irc.cpp.

Referenced by Irc_AppendToBuffer(), and Irc_Init().

◆ irc_stream

struct net_stream* irc_stream
static

◆ irc_topic

cvar_t* irc_topic
static

Definition at line 52 of file cl_irc.cpp.

Referenced by Irc_Init().

◆ irc_user

cvar_t* irc_user
static

Definition at line 50 of file cl_irc.cpp.

Referenced by Irc_Init(), and Irc_Logic_Connect().

◆ irc_userListOrdered

char irc_userListOrdered[IRC_MAX_USERLIST][MAX_VAR]
static

Definition at line 1764 of file cl_irc.cpp.

Referenced by Irc_Client_Names_f(), Irc_UserClick_f(), and Irc_UserRightClick_f().

◆ ircChan

irc_channel_t ircChan
static

Definition at line 263 of file cl_irc.cpp.

Referenced by Irc_Proto_Join().