ekg2  GIT master
Definicje | Funkcje | Zmienne
Dokumentacja pliku irc.c
#include "ekg2.h"
#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <netdb.h>
#include <sys/time.h>
#include <sys/utsname.h>
#include <pwd.h>
#include <ekg/net.h>
#include "irc.h"
#include "people.h"
#include "input.h"
#include "autoacts.h"
#include "IRCVERSION.h"
#include <ekg/vars.h>
Wykres zależności załączania dla irc.c:

Definicje

#define DEFPORT   6667
 
#define DEFPARTMSG   "EKG2 bejbi! http://ekg2.org/"
 
#define DEFQUITMSG   "EKG2 - It's better than sex!"
 
#define DEFKICKMSG   "EKG2 - Y0U 57iNK2 50 MUCH!"
 
#define SGPARTMSG(x)   session_get(x, "PART_MSG")
 
#define SGQUITMSG(x)   session_get(x, "QUIT_MSG")
 
#define SGKICKMSG(x)   session_get(x, "KICK_MSG")
 
#define PARTMSG(x, r)   (r?r: SGPARTMSG(x)?SGPARTMSG(x):DEFPARTMSG)
 
#define QUITMSG(x)   (SGQUITMSG(x)?SGQUITMSG(x):DEFQUITMSG)
 
#define KICKMSG(x, r)   (r?r: SGKICKMSG(x)?SGKICKMSG(x):DEFKICKMSG)
 
#define getit(x)   tmp[x]?tmp[x]:"*"
 
#define plvl(x)   ekg_itoa(sum[x])
 
#define VAR_MAP_ADD(v, c, l)   { l, v, c }
 
#define VAR_MAP_END()   { NULL, 0, 0 }
 
#define params(x)   x
 
#define IRC_PLUGIN_VAR_NICKNAME   21
 
#define IRC_PLUGIN_VAR_REALNAME   25
 
#define IRC_ONLY   SESSION_MUSTBELONG | SESSION_MUSTHASPRIVATE
 
#define IRC_FLAGS   IRC_ONLY | SESSION_MUSTBECONNECTED
 
#define IRC_FLAGS_TARGET   IRC_FLAGS | COMMAND_ENABLEREQPARAMS | COMMAND_PARAMASTARGET
 

Funkcje

static int irc_theme_init ()
 
static int irc_command_disconnect (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_really_connect (session_t *session, gboolean quiet)
 
static char * irc_getchan_int (session_t *s, const char *name, int checkchan)
 
static char * irc_getchan (session_t *s, const char **params, const char *name, char ***v, int pr, int checkchan)
 
static int irc_plugin_destroy ()
 
static int irc_session_init (void *data, va_list ap)
 
static void list_irc_awaylog_free (irc_awaylog_t *data)
 
static int irc_session_deinit (void *data, va_list ap)
 
static char * irc_make_banmask (session_t *session, const char *nick, const char *ident, const char *hostname)
 
static int irc_print_version (void *data, va_list ap)
 
static int irc_setvar_default (void *data, va_list ap)
 
static int irc_validate_uid (void *data, va_list ap)
 
out_recodes_tirc_find_out_recode (list_t rl, char *encname)
 
static char * irc_convert_out (irc_private_t *j, char *recipient, const char *line)
 
static void irc_changed_recode_list (session_t *s, const char *var)
 
static void irc_changed_recode (session_t *s, const char *var)
 
static void irc_changed_auto_guess_encoding (session_t *s, const char *var)
 
void irc_handle_disconnect (session_t *s, const char *reason, int type)
 
static void irc_handle_line (GDataInputStream *input, gpointer data)
 
static void irc_handle_failure (GDataInputStream *f, GError *err, gpointer data)
 
static void irc_handle_connect (GSocketConnection *conn, GInputStream *instream, GOutputStream *outstream, gpointer data)
 
static void irc_handle_connect_failure (GError *err, gpointer data)
 
static int irc_command_connect (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_reconnect (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_msg (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_inline_msg (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_quote (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_pipl (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_alist (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_add (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static void irc_display_awaylog (session_t *session)
 
static int irc_command_away (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static void irc_statusdescr_handler (session_t *s, const char *varname)
 
static int irc_window_kill (void *data, va_list ap)
 
static int irc_topic_header (void *data, va_list ap)
 
static int irc_command_names (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_topic (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_who (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_invite (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_kick (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_unban (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_ban (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_kickban (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_devop (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_ctcp (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_ping (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_me (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_mode (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_umode (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_whois (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_status_show_handle (void *data, va_list ap)
 
static int irc_command_query (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_jopacy (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
static int irc_command_nick (const char *name, const char **params, session_t *session, const char *target, int quiet)
 
char * nickpad_string_create (channel_t *chan)
 
char * nickpad_string_apply (channel_t *chan, const char *str)
 
char * nickpad_string_restore (channel_t *chan)
 
 __attribute__ ((visibility("default")))
 

Zmienne

static char * irc_config_default_access_groups
 
int irc_config_allow_fake_contacts = 0
 
int irc_config_clean_channel_name
 
const gchar fillchars [] = "\xC2\xA0"
 
const gint fillchars_len = 2
 
plugin_t irc_plugin = { .name = "irc", .pclass = PLUGIN_PROTOCOL , .destroy = irc_plugin_destroy, .theme_init = irc_theme_init }
 
static variable_map_t ban_type_map []
 
static plugins_params_t irc_plugin_vars []
 
static const char * irc_protocols [] = { "irc:", NULL }
 
static const status_t irc_statuses []
 
static const struct protocol_plugin_priv irc_priv
 

Dokumentacja definicji

◆ DEFKICKMSG

#define DEFKICKMSG   "EKG2 - Y0U 57iNK2 50 MUCH!"

◆ DEFPARTMSG

#define DEFPARTMSG   "EKG2 bejbi! http://ekg2.org/"

◆ DEFPORT

#define DEFPORT   6667

◆ DEFQUITMSG

#define DEFQUITMSG   "EKG2 - It's better than sex!"

◆ getit

#define getit (   x)    tmp[x]?tmp[x]:"*"

◆ IRC_FLAGS

#define IRC_FLAGS   IRC_ONLY | SESSION_MUSTBECONNECTED

◆ IRC_FLAGS_TARGET

#define IRC_FLAGS_TARGET   IRC_FLAGS | COMMAND_ENABLEREQPARAMS | COMMAND_PARAMASTARGET

◆ IRC_ONLY

#define IRC_ONLY   SESSION_MUSTBELONG | SESSION_MUSTHASPRIVATE

◆ IRC_PLUGIN_VAR_NICKNAME

#define IRC_PLUGIN_VAR_NICKNAME   21

◆ IRC_PLUGIN_VAR_REALNAME

#define IRC_PLUGIN_VAR_REALNAME   25

◆ KICKMSG

#define KICKMSG (   x,
 
)    (r?r: SGKICKMSG(x)?SGKICKMSG(x):DEFKICKMSG)

◆ params

#define params (   x)    x

◆ PARTMSG

#define PARTMSG (   x,
 
)    (r?r: SGPARTMSG(x)?SGPARTMSG(x):DEFPARTMSG)

◆ plvl

#define plvl (   x)    ekg_itoa(sum[x])

◆ QUITMSG

#define QUITMSG (   x)    (SGQUITMSG(x)?SGQUITMSG(x):DEFQUITMSG)

◆ SGKICKMSG

#define SGKICKMSG (   x)    session_get(x, "KICK_MSG")

◆ SGPARTMSG

#define SGPARTMSG (   x)    session_get(x, "PART_MSG")

◆ SGQUITMSG

#define SGQUITMSG (   x)    session_get(x, "QUIT_MSG")

◆ VAR_MAP_ADD

#define VAR_MAP_ADD (   v,
  c,
 
)    { l, v, c }

◆ VAR_MAP_END

#define VAR_MAP_END ( )    { NULL, 0, 0 }

Dokumentacja funkcji

◆ __attribute__()

__attribute__ ( (visibility("default"))  )

◆ irc_changed_auto_guess_encoding()

static void irc_changed_auto_guess_encoding ( session_t s,
const char *  var 
)
static

◆ irc_changed_recode()

static void irc_changed_recode ( session_t s,
const char *  var 
)
static

◆ irc_changed_recode_list()

static void irc_changed_recode_list ( session_t s,
const char *  var 
)
static

◆ irc_command_add()

static int irc_command_add ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_alist()

static int irc_command_alist ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_away()

static int irc_command_away ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_ban()

static int irc_command_ban ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_connect()

static int irc_command_connect ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_ctcp()

static int irc_command_ctcp ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_devop()

static int irc_command_devop ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_disconnect()

static int irc_command_disconnect ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_inline_msg()

static int irc_command_inline_msg ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_invite()

static int irc_command_invite ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_jopacy()

static int irc_command_jopacy ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_kick()

static int irc_command_kick ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_kickban()

static int irc_command_kickban ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_me()

static int irc_command_me ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_mode()

static int irc_command_mode ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_msg()

static int irc_command_msg ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_names()

static int irc_command_names ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_nick()

static int irc_command_nick ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_ping()

static int irc_command_ping ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_pipl()

static int irc_command_pipl ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_query()

static int irc_command_query ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_quote()

static int irc_command_quote ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_reconnect()

static int irc_command_reconnect ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_topic()

static int irc_command_topic ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_umode()

static int irc_command_umode ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_unban()

static int irc_command_unban ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_who()

static int irc_command_who ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_command_whois()

static int irc_command_whois ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static

◆ irc_convert_out()

static char* irc_convert_out ( irc_private_t j,
char *  recipient,
const char *  line 
)
static

◆ irc_display_awaylog()

static void irc_display_awaylog ( session_t session)
static

◆ irc_find_out_recode()

out_recodes_t* irc_find_out_recode ( list_t  rl,
char *  encname 
)

◆ irc_getchan()

static char * irc_getchan ( session_t s,
const char **  params,
const char *  name,
char ***  v,
int  pr,
int  checkchan 
)
static

◆ irc_getchan_int()

static char * irc_getchan_int ( session_t s,
const char *  name,
int  checkchan 
)
static

◆ irc_handle_connect()

static void irc_handle_connect ( GSocketConnection *  conn,
GInputStream *  instream,
GOutputStream *  outstream,
gpointer  data 
)
static

◆ irc_handle_connect_failure()

static void irc_handle_connect_failure ( GError *  err,
gpointer  data 
)
static

◆ irc_handle_disconnect()

void irc_handle_disconnect ( session_t s,
const char *  reason,
int  type 
)

◆ irc_handle_failure()

static void irc_handle_failure ( GDataInputStream *  f,
GError *  err,
gpointer  data 
)
static

◆ irc_handle_line()

static void irc_handle_line ( GDataInputStream *  input,
gpointer  data 
)
static

◆ irc_make_banmask()

static char* irc_make_banmask ( session_t session,
const char *  nick,
const char *  ident,
const char *  hostname 
)
static

◆ irc_plugin_destroy()

static int irc_plugin_destroy ( )
static

◆ irc_print_version()

static int irc_print_version ( void *  data,
va_list  ap 
)
static

irc_print_version()

handler for PLUGIN_PRINT_VERSION query requests
print info about this plugin [Copyright note+version]

Nota
what the heck this can be ? ;) (c GiM)
Zwraca
0

◆ irc_really_connect()

static int irc_really_connect ( session_t session,
gboolean  quiet 
)
static

◆ irc_session_deinit()

static int irc_session_deinit ( void *  data,
va_list  ap 
)
static

irc_session_deinit()

Handler for: SESSION_REMOVED
Free memory allocated by irc_private_t if session is irc one.
Save userlist with userlist_write()

Parametry
ap1st param: (char *) session - uid of session
dataNULL
Do zrobienia:
Check if userlist_write() here is good.
Zwraca
0 if session is irc one, and memory allocated where xfree()'d.
1 if not such session, or it wasn't irc session [most probable], or we already free memory.

◆ irc_session_init()

static int irc_session_init ( void *  data,
va_list  ap 
)
static

irc_session_init()

Handler for: SESSION_ADDED
Init private session struct irc_private_t if session is irc one.
Read saved userlist with userlist_read()

Parametry
ap1st param: (char *) session - uid of session
dataNULL
Zwraca
0 if session is irc one, and we init memory
1 if we don't found such session, or it wasn't irc session [most probable], or we already init memory.

◆ irc_setvar_default()

static int irc_setvar_default ( void *  data,
va_list  ap 
)
static

◆ irc_status_show_handle()

static int irc_status_show_handle ( void *  data,
va_list  ap 
)
static

◆ irc_statusdescr_handler()

static void irc_statusdescr_handler ( session_t s,
const char *  varname 
)
static

◆ irc_theme_init()

static int irc_theme_init ( )
static

◆ irc_topic_header()

static int irc_topic_header ( void *  data,
va_list  ap 
)
static

irc_topic_header()

handler for IRC_TOPIC query requests

Parametry
ap1st param: (char *) top - place to put:
-> topic of current irc channel (if current window is valid irc channel)
-> ident@host of current irc user (if current window is known user)
ap2nd param: (char *) setby - place to put:
-> topic owner of current irc channel
-> realname of current irc user
ap3rd param: (char *) modes - place to put:
modes of current irc channel or undefined if not channel
data0
Zwraca
1 if it's known irc channel.
2 if it's known irc user.
0 if it's neither known user, nor channel.
-3 if it's not valid irc window, or session is not connected

◆ irc_validate_uid()

static int irc_validate_uid ( void *  data,
va_list  ap 
)
static

irc_validate_uid()

handler for PROTOCOL_VALIDATE_UID
checks, if uid is proper for irc plugin.

Nota
Proper for irc plugin means if uid starts with "irc:" and uid len > 4
Parametry
ap1st param: (char *) uid - of user/session/command/whatever
ap2nd param: (int) valid - place to put 1 if uid is valid for irc plugin.
dataNULL
Zwraca
-1 if it's valid uid for irc plugin
0 if not

◆ irc_window_kill()

static int irc_window_kill ( void *  data,
va_list  ap 
)
static

irc_window_kill()

handler for UI_WINDOW_KILL query requests It checks if window which will be destroyed is valid irc channel window, and we are on it now. if yes (and of course if we are connected) it send PART message to irc server, with reason got using PARTMSG macro

Parametry
ap1st param: (window_t *) w - window which will be destroyed
dataNULL
Zwraca
0

◆ list_irc_awaylog_free()

static void list_irc_awaylog_free ( irc_awaylog_t data)
static

◆ nickpad_string_apply()

char* nickpad_string_apply ( channel_t chan,
const char *  str 
)

◆ nickpad_string_create()

char* nickpad_string_create ( channel_t chan)

◆ nickpad_string_restore()

char* nickpad_string_restore ( channel_t chan)

Dokumentacja zmiennych

◆ ban_type_map

variable_map_t ban_type_map[]
static
Wartość początkowa:
= {
{ "nick" , 1 , 0 },
{ "user" , 2 , 0 },
{ "host" , 3 , 0 },
{ "domain" , 4 , 0 },
{ NULL, 0, 0 }
}
#define NULL
Definition: oralog.c:49

◆ fillchars

const gchar fillchars[] = "\xC2\xA0"

◆ fillchars_len

const gint fillchars_len = 2

◆ irc_config_allow_fake_contacts

int irc_config_allow_fake_contacts = 0

◆ irc_config_clean_channel_name

int irc_config_clean_channel_name

◆ irc_config_default_access_groups

char* irc_config_default_access_groups
static

◆ irc_plugin

plugin_t irc_plugin = { .name = "irc", .pclass = PLUGIN_PROTOCOL , .destroy = irc_plugin_destroy, .theme_init = irc_theme_init }

◆ irc_plugin_vars

plugins_params_t irc_plugin_vars[]
static

◆ irc_priv

const struct protocol_plugin_priv irc_priv
static
Wartość początkowa:
= {
.protocols = irc_protocols,
.statuses = irc_statuses
}
static const char * irc_protocols[]
Definition: irc.c:1967
static const status_t irc_statuses[]
Definition: irc.c:1968

◆ irc_protocols

const char* irc_protocols[] = { "irc:", NULL }
static

◆ irc_statuses

const status_t irc_statuses[]
static
Wartość początkowa:
= {
}
Definition: sessions.h:40
Definition: sessions.h:55
Definition: sessions.h:58
Definition: sessions.h:48