#include "ircd_defs.h"
#include "tools.h"
Vai al codice sorgente di questo file.
Strutture dati | |
struct | Mode |
Mode structure for channels. Continua... | |
struct | Channel |
Channel structure. Continua... | |
struct | Membership |
Membership structure. Continua... | |
struct | Ban |
Ban structure. Used for b/e/I n!u@h masks. Continua... | |
Definizioni | |
#define | ShowChannel(v, c) (PubChannel(c) || IsMember((v),(c))) |
#define | IsMember(who, chan) ((find_channel_link(who, chan)) ? 1 : 0) |
#define | AddMemberFlag(x, y) ((x)->flags |= (y)) |
#define | DelMemberFlag(x, y) ((x)->flags &= ~(y)) |
#define | FLOOD_NOTICED 1 |
#define | JOIN_FLOOD_NOTICED 2 |
#define | SetFloodNoticed(x) ((x)->flags |= FLOOD_NOTICED) |
#define | IsSetFloodNoticed(x) ((x)->flags & FLOOD_NOTICED) |
#define | ClearFloodNoticed(x) ((x)->flags &= ~FLOOD_NOTICED) |
#define | SetJoinFloodNoticed(x) ((x)->flags |= JOIN_FLOOD_NOTICED) |
#define | IsSetJoinFloodNoticed(x) ((x)->flags & JOIN_FLOOD_NOTICED) |
#define | ClearJoinFloodNoticed(x) ((x)->flags &= ~JOIN_FLOOD_NOTICED) |
Funzioni | |
int | check_channel_name (const char *, int) |
check channel name for invalid characters | |
int | can_send (struct Channel *, struct Client *, struct Membership *) |
int | is_banned (struct Channel *, struct Client *) |
int | can_join (struct Client *, struct Channel *, const char *) |
int | has_member_flags (struct Membership *, unsigned int) |
void | remove_ban (struct Ban *, dlink_list *) |
void | init_channels (void) |
Initializes the channel blockheap, adds known channel CAPAB. | |
void | add_user_to_channel (struct Channel *, struct Client *, unsigned int, int) |
adds a user to a channel by adding another link to the channels member chain. | |
void | remove_user_from_channel (struct Membership *) |
deletes an user from a channel by removing a link in the channels member chain. | |
void | channel_member_names (struct Client *, struct Channel *, int) |
lists all names on given channel | |
void | add_invite (struct Channel *, struct Client *) |
adds client to invite list | |
void | del_invite (struct Channel *, struct Client *) |
Delete Invite block from channel invite list and client invite list. | |
void | send_channel_modes (struct Client *, struct Channel *) |
send "client_p" a full list of the modes for channel chptr | |
void | channel_modes (struct Channel *, struct Client *, char *, char *) |
void | check_spambot_warning (struct Client *, const char *) |
Updates the client's oper_warn_count_down, warns the IRC operators if necessary, and updates join_leave_countdown as needed. | |
void | check_splitmode (void *) |
compares usercount and servercount against their split values and adjusts splitmode accordingly | |
void | free_channel_list (dlink_list *) |
void | free_topic (struct Channel *) |
void | destroy_channel (struct Channel *) |
walk through this channel, and destroy it. | |
void | set_channel_topic (struct Channel *, const char *, const char *, time_t) |
Sets the channel topic for chptr. | |
const char * | get_member_status (const struct Membership *, int) |
struct Channel * | make_channel (const char *) |
Get Channel block for chname (and allocate a new channel block, if it didn't exist before). | |
struct Membership * | find_channel_link (struct Client *, struct Channel *) |
Variabili | |
dlink_list | global_channel_list |
Definizione nel file channel.h.
#define AddMemberFlag | ( | x, | |||
y | ) | ((x)->flags |= (y)) |
#define ClearFloodNoticed | ( | x | ) | ((x)->flags &= ~FLOOD_NOTICED) |
#define ClearJoinFloodNoticed | ( | x | ) | ((x)->flags &= ~JOIN_FLOOD_NOTICED) |
#define DelMemberFlag | ( | x, | |||
y | ) | ((x)->flags &= ~(y)) |
#define IsMember | ( | who, | |||
chan | ) | ((find_channel_link(who, chan)) ? 1 : 0) |
Definizione alla linea 131 del file channel.h.
Referenziato da accept_message(), channel_member_names(), channel_modes(), list_one_channel(), m_invite(), m_join(), m_topic(), m_who(), mo_clearchan(), mo_forcejoin(), mo_ojoin(), ms_join(), ms_lljoin(), ms_sjoin(), names_non_public_non_secret(), operspy_names(), parse_knock_local(), parse_knock_remote(), e single_whois().
#define IsSetFloodNoticed | ( | x | ) | ((x)->flags & FLOOD_NOTICED) |
#define IsSetJoinFloodNoticed | ( | x | ) | ((x)->flags & JOIN_FLOOD_NOTICED) |
#define SetFloodNoticed | ( | x | ) | ((x)->flags |= FLOOD_NOTICED) |
#define SetJoinFloodNoticed | ( | x | ) | ((x)->flags |= JOIN_FLOOD_NOTICED) |
#define ShowChannel | ( | v, | |||
c | ) | (PubChannel(c) || IsMember((v),(c))) |
adds client to invite list
chptr | pointer to channel block | |
who | pointer to client to add invite to |
Definizione alla linea 519 del file channel.c.
Riferimenti ConfigChannel, _dlink_node::data, del_invite(), dlink_list_length, dlinkAdd(), LocalUser::invited, Channel::invites, Client::localClient, make_dlink_node(), config_channel_entry::max_chans_per_user, e _dlink_list::tail.
Referenziato da m_invite().
void add_user_to_channel | ( | struct Channel * | chptr, | |
struct Client * | who, | |||
unsigned int | flags, | |||
int | flood_ctrl | |||
) |
adds a user to a channel by adding another link to the channels member chain.
chptr | pointer to channel to add client to | |
who | pointer to client (who) to add | |
flags | flags for chanops etc | |
flood_ctrl | whether to count this join in flood calculations |
Definizione alla linea 85 del file channel.c.
Riferimenti BlockHeapAlloc(), Client::channel, Membership::channode, Channel::chname, Membership::chptr, ClearJoinFloodNoticed, Membership::client_p, CurrentTime, dlinkAdd(), Membership::flags, get_client_name(), GlobalSetOptions, HIDE_IP, IsSetJoinFloodNoticed, SetOptions::joinfloodcount, SetOptions::joinfloodtime, L_ALL, Channel::last_join_time, Channel::members, Client::name, Channel::number_joined, sendto_realops_flags(), Client::servptr, SetJoinFloodNoticed, UMODE_BOTS, e Membership::usernode.
Referenziato da kick_list(), m_join(), mo_forcejoin(), mo_ojoin(), ms_join(), ms_lljoin(), ms_sjoin(), e operspy_names().
source_p | pointer to client attempting to join | |
chptr | pointer to channel | |
key | key sent by client attempting to join if present |
Definizione alla linea 665 del file channel.c.
Riferimenti ConfigChannel, dlink_list_length, dlinkFind(), ERR_BADCHANNELKEY, ERR_BANNEDFROMCHAN, ERR_CHANNELISFULL, ERR_INVITEONLYCHAN, find_bmask(), Channel::invexlist, LocalUser::invited, irccmp(), is_banned(), Mode::key, Mode::limit, Client::localClient, Channel::members, Mode::mode, Channel::mode, MODE_INVITEONLY, e config_channel_entry::use_invex.
Referenziato da m_join(), e ms_lljoin().
int can_send | ( | struct Channel * | chptr, | |
struct Client * | source_p, | |||
struct Membership * | ms | |||
) |
chptr | pointer to Channel struct | |
source_p | pointer to Client struct | |
ms | pointer to Membership struct (can be NULL) |
Definizione alla linea 717 del file channel.c.
Riferimenti CAN_SEND_NO, CAN_SEND_NONOP, CAN_SEND_OPV, CHFL_BAN_CHECKED, CHFL_BAN_SILENCED, CHFL_CHANOP, CHFL_HALFOP, CHFL_VOICE, Channel::chname, ConfigChannel, ConfigFileEntry, find_channel_link(), Membership::flags, hash_find_resv(), is_banned(), IsExemptResv, IsOper, IsServer, Mode::mode, Channel::mode, MODE_MODERATED, MODE_NOPRIVMSGS, MyClient, config_file_entry::oper_pass_resv, config_channel_entry::quiet_on_ban, e config_channel_entry::restrict_channels.
Referenziato da msg_channel(), e part_one_client().
lists all names on given channel
source_p | pointer to client struct requesting names | |
chptr | pointer to channel block | |
show_eon | show ENDOFNAMES numeric or not (don't want it with /names with no params) |
Definizione alla linea 446 del file channel.c.
Riferimenti LocalUser::cap_active, CAP_MULTI_PREFIX, channel_pub_or_secret(), CHFL_CHANOP, CHFL_HALFOP, CHFL_VOICE, Channel::chname, Membership::client_p, _dlink_node::data, DLINK_FOREACH, Membership::flags, form_str(), get_member_status(), _dlink_list::head, IRCD_BUFSIZE, ircsprintf(), IsInvisible, IsMember, Client::localClient, me, Channel::members, Client::name, PubChannel, RPL_ENDOFNAMES, RPL_NAMREPLY, e sendto_one().
Referenziato da kick_list(), m_join(), m_names(), mo_forcejoin(), mo_ojoin(), ms_lljoin(), names_all_visible_channels(), e operspy_names().
Definizione alla linea 356 del file channel_mode.c.
Riferimenti flags, ircsprintf(), IsMember, IsServer, Mode::key, mode_letter::letter, Mode::limit, Mode::mode, Channel::mode, e mode_letter::mode.
Referenziato da m_mode(), ms_sjoin(), operspy_mode(), e send_channel_modes().
int check_channel_name | ( | const char * | name, | |
int | local | |||
) |
check channel name for invalid characters
name | pointer to channel name string | |
local | indicates whether it's a local or remote creation |
Definizione alla linea 315 del file channel.c.
Riferimenti CHANNELLEN, ConfigChannel, config_channel_entry::disable_fake_channels, IsChanChar, IsChanPrefix, IsVisibleChanChar, e LOCAL_CHANNELLEN.
Referenziato da m_join(), m_mode(), mo_forcejoin(), ms_cburst(), ms_join(), ms_lljoin(), e ms_sjoin().
void check_spambot_warning | ( | struct Client * | source_p, | |
const char * | name | |||
) |
Updates the client's oper_warn_count_down, warns the IRC operators if necessary, and updates join_leave_countdown as needed.
source_p | pointer to struct Client to check | |
name | channel name or NULL if this is a part. |
Definizione alla linea 766 del file channel.c.
Riferimenti CurrentTime, GlobalSetOptions, Client::host, LocalUser::join_leave_count, JOIN_LEAVE_COUNT_EXPIRE_TIME, L_ALL, LocalUser::last_join_time, LocalUser::last_leave_time, Client::localClient, Client::name, OPER_SPAM_COUNTDOWN, LocalUser::oper_warn_count_down, sendto_realops_flags(), SetOptions::spam_num, SetOptions::spam_time, UMODE_BOTS, e Client::username.
Referenziato da do_join_0(), m_join(), e part_one_client().
void check_splitmode | ( | void * | unused | ) |
compares usercount and servercount against their split values and adjusts splitmode accordingly
unused | Unused address pointer |
Definizione alla linea 829 del file channel.c.
Riferimenti check_splitmode(), ConfigChannel, Count, dlink_list_length, eventAddIsh(), eventDelete(), global_serv_list, L_ALL, config_channel_entry::no_create_on_split, config_channel_entry::no_join_on_split, sendto_realops_flags(), split_servers, split_users, splitchecking, splitmode, Counter::total, e UMODE_ALL.
Referenziato da check_splitmode(), main(), quote_splitmode(), quote_splitnum(), quote_splitusers(), e update_client_exit_stats().
Delete Invite block from channel invite list and client invite list.
chptr | pointer to Channel struct | |
who | pointer to client to remove invites from |
Definizione alla linea 543 del file channel.c.
Riferimenti dlinkFindDelete(), free_dlink_node(), LocalUser::invited, Channel::invites, e Client::localClient.
Referenziato da add_invite(), destroy_channel(), exit_one_client(), e m_join().
void destroy_channel | ( | struct Channel * | chptr | ) |
walk through this channel, and destroy it.
chptr | channel pointer |
Definizione alla linea 400 del file channel.c.
Riferimenti Channel::banlist, BlockHeapFree(), _dlink_node::data, del_invite(), DLINK_FOREACH_SAFE, dlinkDelete(), dlinkFindDelete(), Channel::exceptlist, free_channel_list(), free_dlink_node(), free_topic(), hash_del_channel(), _dlink_list::head, server_info::hub, Channel::invexlist, Channel::invites, Channel::node, e ServerInfo.
Referenziato da ms_sjoin(), e remove_user_from_channel().
struct Membership* find_channel_link | ( | struct Client * | , | |
struct Channel * | ||||
) | [read] |
Definizione alla linea 694 del file channel.c.
Riferimenti Client::channel, _dlink_node::data, DLINK_FOREACH, _dlink_list::head, e IsClient.
Referenziato da build_target_list(), can_send(), chm_op(), chm_voice(), m_invite(), m_kick(), m_mode(), m_topic(), mo_forcepart(), mo_opme(), ms_tmode(), operspy_names(), e part_one_client().
void free_channel_list | ( | dlink_list * | ) |
Definizione alla linea 360 del file channel.c.
Riferimenti _dlink_node::data, DLINK_FOREACH_SAFE, _dlink_list::head, remove_ban(), e _dlink_list::tail.
Referenziato da destroy_channel(), e remove_our_modes().
void free_topic | ( | struct Channel * | ) |
Definizione alla linea 879 del file channel.c.
Riferimenti BlockHeapFree(), Channel::topic, e Channel::topic_info.
Referenziato da destroy_channel(), mo_clearchan(), e set_channel_topic().
const char* get_member_status | ( | const struct Membership * | , | |
int | ||||
) |
Definizione alla linea 566 del file channel.c.
Riferimenti buffer, CHFL_CHANOP, CHFL_HALFOP, CHFL_VOICE, e Membership::flags.
Referenziato da channel_member_names(), do_who_on_channel(), m_who(), operspy_who(), operspy_whois(), who_global(), e whois_person().
int has_member_flags | ( | struct Membership * | , | |
unsigned | int | |||
) |
Definizione alla linea 686 del file channel.c.
Riferimenti Membership::flags.
Referenziato da build_target_list(), chm_op(), chm_voice(), get_channel_access(), m_invite(), m_kick(), m_mode(), m_topic(), e ms_tmode().
void init_channels | ( | void | ) |
Initializes the channel blockheap, adds known channel CAPAB.
Definizione alla linea 65 del file channel.c.
Riferimenti add_capability(), BAN_HEAP_SIZE, BlockHeapCreate(), CAP_CHW, CAP_EX, CAP_IE, CHANNEL_HEAP_SIZE, TOPIC_HEAP_SIZE, TOPICLEN, e USERHOST_REPLYLEN.
Referenziato da main().
chptr | pointer to channel block | |
who | pointer to client to check access fo |
Definizione alla linea 648 del file channel.c.
Riferimenti Channel::banlist, ConfigChannel, Channel::exceptlist, find_bmask(), e config_channel_entry::use_except.
Referenziato da can_join(), can_send(), e parse_knock_local().
struct Channel* make_channel | ( | const char * | chname | ) | [read] |
Get Channel block for chname (and allocate a new channel block, if it didn't exist before).
chname | channel name |
Definizione alla linea 376 del file channel.c.
Riferimenti BlockHeapAlloc(), Channel::channelts, Channel::chname, CurrentTime, dlinkAdd(), EmptyString, hash_add_channel(), Channel::last_join_time, Channel::node, e strlcpy().
Referenziato da m_join(), mo_forcejoin(), ms_cburst(), ms_join(), ms_lljoin(), e ms_sjoin().
void remove_ban | ( | struct Ban * | , | |
dlink_list * | ||||
) |
Definizione alla linea 341 del file channel.c.
Riferimenti BlockHeapFree(), dlinkDelete(), Ban::host, MyFree(), Ban::name, Ban::node, Ban::username, e Ban::who.
Referenziato da del_id(), free_channel_list(), e remove_ban_list().
void remove_user_from_channel | ( | struct Membership * | member | ) |
deletes an user from a channel by removing a link in the channels member chain.
member | pointer to Membership struct |
Definizione alla linea 135 del file channel.c.
Riferimenti BlockHeapFree(), Client::channel, Membership::channode, Membership::chptr, Membership::client_p, destroy_channel(), dlink_list_length, dlinkDelete(), Channel::members, e Membership::usernode.
Referenziato da do_join_0(), exit_one_client(), kick_list(), m_kick(), mo_forcepart(), operspy_names(), e part_one_client().
send "client_p" a full list of the modes for channel chptr
client_p | pointer to client client_p | |
chptr | pointer to channel pointer |
Definizione alla linea 292 del file channel.c.
Riferimenti Channel::banlist, CAP_EX, CAP_IE, channel_modes(), Channel::chname, Channel::exceptlist, Channel::invexlist, IsCapable, modebuf, parabuf, send_members(), e send_mode_list().
Referenziato da burst_all(), e burst_channel().
void set_channel_topic | ( | struct Channel * | chptr, | |
const char * | topic, | |||
const char * | topic_info, | |||
time_t | topicts | |||
) |
Sets the channel topic for chptr.
chptr | Pointer to struct Channel | |
topic | The topic string | |
topic_info | n!u@h formatted string of the topic setter | |
topicts | timestamp on the topic |
Definizione alla linea 902 del file channel.c.
Riferimenti allocate_topic(), EmptyString, free_topic(), strlcpy(), Channel::topic, Channel::topic_info, Channel::topic_time, TOPICLEN, e USERHOST_REPLYLEN.
Referenziato da m_topic(), ms_tburst(), ms_topic(), e set_topic().
Definizione alla linea 49 del file channel.c.
Referenziato da burst_all(), cjoin_all(), count_memory(), names_all_visible_channels(), operspy_list(), e show_lusers().