Go to the source code of this file.
Data Structures | |
struct | partymember |
Functions | |
partymember_t * | partymember_lookup (const char *name, struct botnet_bot *bot, int id) |
partymember_t * | partymember_new (int id, user_t *user, struct botnet_bot *bot, const char *nick, const char *ident, const char *host, partyline_event_t *handler, void *client_data, event_owner_t *owner) |
partymember_t * | partymember_get_head (void) |
partymember_t * | partymember_get_local_head (void) |
int | partymember_delete (partymember_t *p, const struct botnet_bot *lost_bot, const char *text) |
int | partymember_delete_by_owner (struct egg_module *module, void *script) |
Deletes all partymembers with a given owner. | |
int | partymember_update_info (partymember_t *p, const char *ident, const char *host) |
int | partymember_who (int **ids, int *len) |
int | partymember_write_id (int id, const char *text, int len) |
int | partymember_write (partymember_t *p, const char *text, int len) |
int | partymember_msg (partymember_t *p, botnet_entity_t *src, const char *text, int len) |
int | partymember_msgf (partymember_t *p, botnet_entity_t *src, const char *fmt,...) |
int | partymember_printf_id (int id, const char *fmt,...) |
int | partymember_printf (partymember_t *p, const char *fmt,...) |
int | partymember_set_nick (partymember_t *p, const char *nick) |
int | partymember_local_broadcast (botnet_entity_t *src, const char *text, int len) |
int | partymember_count_by_bot (const struct botnet_bot *bot) |
Counts the number of users on a bot. | |
int | partymember_delete_by_bot (const struct botnet_bot *bot, const struct botnet_bot *lost_bot, const char *reason) |
int partymember_count_by_bot | ( | const struct botnet_bot * | bot | ) |
Counts the number of users on a bot.
Counts the number of users on any channels on a bot.
bot | The bot the users are on or NULL for the number of users on this bot. |
Definition at line 438 of file partymember.c.
References partymember::flags, partymember::next_on_bot, PARTY_DELETED, and botnet_bot::partys.
Referenced by botnet_count_subtree().
00439 { 00440 int ret = 0; 00441 partymember_t *p; 00442 00443 for (p = bot ? bot->partys : local_party_head; p; p = p->next_on_bot) { 00444 if (p->flags & PARTY_DELETED) continue; 00445 ++ret; 00446 } 00447 return ret; 00448 }
int partymember_delete | ( | partymember_t * | p, | |
const struct botnet_bot * | lost_bot, | |||
const char * | text | |||
) |
int partymember_delete_by_bot | ( | const struct botnet_bot * | bot, | |
const struct botnet_bot * | lost_bot, | |||
const char * | reason | |||
) |
int partymember_delete_by_owner | ( | struct egg_module * | module, | |
void * | script | |||
) |
Deletes all partymembers with a given owner.
Calls partymember_delete() for every partymember with a given owner.
module | The module whose partymembers should be deleted. | |
script | The script whose partymembers should be deleted. NULL matches everything. |
Definition at line 175 of file partymember.c.
References event_owner_b::client_data, partymember::flags, event_owner_b::module, partymember::next, NULL, partymember::owner, PARTY_DELETED, and partymember_delete().
Referenced by script_remove_events_by_owner().
00176 { 00177 int ret = 0; 00178 partymember_t *p; 00179 00180 for (p = party_head; p; p = p->next) { 00181 if (p->flags & PARTY_DELETED) continue; 00182 if (p->owner && p->owner->module == module && (!script || p->owner->client_data == script)) { 00183 partymember_delete(p, NULL, "Module unloaded"); 00184 ++ret; 00185 } 00186 } 00187 00188 return ret; 00189 }
partymember_t* partymember_get_head | ( | void | ) |
Definition at line 102 of file partymember.c.
Referenced by botnet_set_name().
00103 { 00104 return party_head; 00105 }
partymember_t* partymember_get_local_head | ( | void | ) |
Definition at line 107 of file partymember.c.
Referenced by botnet_recursive_replay_net().
00108 { 00109 return local_party_head; 00110 }
int partymember_local_broadcast | ( | botnet_entity_t * | src, | |
const char * | text, | |||
int | len | |||
) |
Definition at line 358 of file partymember.c.
References partymember::flags, partymember::next_on_bot, PARTY_DELETED, and partymember_msg().
Referenced by botnet_broadcast().
00359 { 00360 partymember_t *p; 00361 00362 if (len < 0) len = strlen(text); 00363 for (p = local_party_head; p; p = p->next_on_bot) { 00364 if (p->flags & PARTY_DELETED) continue; 00365 partymember_msg(p, src, text, len); 00366 } 00367 return 0; 00368 }
partymember_t* partymember_lookup | ( | const char * | name, | |
struct botnet_bot * | bot, | |||
int | id | |||
) |
Definition at line 287 of file partymember.c.
References botnet_get_name(), botnet_lookup(), partymember::flags, partymember::id, botnet_bot::name, partymember::next_on_bot, partymember::nick, NULL, PARTY_DELETED, and botnet_bot::partys.
Referenced by get_entity(), got_actchan(), got_away(), got_chat(), got_join(), got_nickchange(), got_part(), got_privmsg(), got_versions(), on_putlog(), party_whisper(), party_who(), partymember_get_id(), perl_to_c_var(), tcl_to_c_var(), and user_change_handle().
00288 { 00289 int i = id; 00290 char *name = NULL; 00291 const char *ptr, *nick = full_name; 00292 botnet_bot_t *b = bot; 00293 partymember_t *p; 00294 00295 if (!full_name && id == -1) return NULL; 00296 00297 if (full_name) { 00298 ptr = strchr(full_name, '@'); 00299 if (ptr) { 00300 bot = botnet_lookup(ptr + 1); 00301 if (!bot && strcmp(ptr + 1, botnet_get_name())) return NULL; 00302 if (b && bot != b) return NULL; 00303 name = strdup(full_name); 00304 name[ptr - full_name] = 0; 00305 nick = name; 00306 } 00307 00308 ptr = strchr(nick, ':'); 00309 if (ptr) { 00310 id = atoi(nick); 00311 if (i != -1 && i != id) { 00312 if (name) free(name); 00313 return NULL; 00314 } 00315 nick = ptr + 1; 00316 } 00317 } 00318 00319 for (p = bot ? bot->partys : local_party_head; p; p = p->next_on_bot) { 00320 if (p->flags & PARTY_DELETED) continue; 00321 if (id != -1) { 00322 if (p->id == id) break; 00323 } else { 00324 if (!strcmp(p->nick, nick)) break; 00325 } 00326 } 00327 00328 if (p && id != -1 && nick && strcmp(p->nick, nick)) p = NULL; 00329 if (name) free(name); 00330 return p; 00331 }
int partymember_msg | ( | partymember_t * | p, | |
botnet_entity_t * | src, | |||
const char * | text, | |||
int | len | |||
) |
Definition at line 346 of file partymember.c.
References partymember::bot, botnet_bot::client_data, partymember::client_data, botnet_bot::direction, partymember::flags, botnet_bot::handler, partymember::handler, botnet_handler_t::on_privmsg, partyline_event::on_privmsg, and PARTY_DELETED.
Referenced by botnet_link(), got_privmsg(), party_whisper(), partymember_local_broadcast(), partymember_msgf(), and partymember_write().
00347 { 00348 if (!p || p->flags & PARTY_DELETED) return(-1); 00349 00350 if (len < 0) len = strlen(text); 00351 if (p->handler && p->handler->on_privmsg) 00352 p->handler->on_privmsg(p->client_data, p, src, text, len); 00353 else if (p->bot && p->bot->direction->handler && p->bot->direction->handler->on_privmsg) 00354 p->bot->direction->handler->on_privmsg(p->bot->direction->client_data, src, p, text, len); 00355 return 0; 00356 }
int partymember_msgf | ( | partymember_t * | p, | |
botnet_entity_t * | src, | |||
const char * | fmt, | |||
... | ||||
) |
Definition at line 402 of file partymember.c.
References egg_mvsprintf(), and partymember_msg().
Referenced by botnet_unlink().
00403 { 00404 va_list args; 00405 char *ptr, buf[1024]; 00406 int len; 00407 00408 va_start(args, fmt); 00409 ptr = egg_mvsprintf(buf, sizeof(buf), &len, fmt, args); 00410 va_end(args); 00411 00412 partymember_msg(p, src, ptr, len); 00413 00414 if (ptr != buf) free(ptr); 00415 return(0); 00416 }
partymember_t* partymember_new | ( | int | id, | |
user_t * | user, | |||
struct botnet_bot * | bot, | |||
const char * | nick, | |||
const char * | ident, | |||
const char * | host, | |||
partyline_event_t * | handler, | |||
void * | client_data, | |||
event_owner_t * | owner | |||
) |
Definition at line 122 of file partymember.c.
References b64enc_int(), bind_check(), partymember::bot, botnet_announce_login(), botnet_get_name(), BT_new, partymember::client_data, partymember::common_name, egg_mprintf(), user::flags, partymember::full_id_name, partymember::full_name, partymember::handler, partymember::host, partymember::id, partymember::ident, botnet_bot::name, partymember::net_name, partymember::next, partymember::next_on_bot, partymember::nick, npartymembers, NULL, partymember::owner, partymember_get_id(), botnet_bot::partys, partymember::prev, partymember::prev_on_bot, partymember::user, and USER_BOT.
Referenced by dcc_on_read(), get_entity(), got_join(), got_login(), got_versions(), irc_on_read(), telnet_on_read(), and terminal_init().
00123 { 00124 partymember_t *mem; 00125 00126 if (user && user->flags & USER_BOT) return NULL; 00127 mem = calloc(1, sizeof(*mem)); 00128 if (id == -1) id = partymember_get_id(bot); 00129 mem->id = id; 00130 mem->user = user; 00131 mem->bot = bot; 00132 mem->nick = strdup(nick); 00133 mem->ident = strdup(ident); 00134 mem->host = strdup(host); 00135 mem->net_name = egg_mprintf("%s@%s", b64enc_int(id), bot ? bot->name : botnet_get_name()); 00136 mem->full_id_name = egg_mprintf("%d:%s@%s", id, nick, bot ? bot->name : botnet_get_name()); 00137 mem->full_name = strchr(mem->full_id_name, ':') + 1; 00138 mem->common_name = bot ? mem->full_name : mem->nick; 00139 mem->handler = handler; 00140 mem->client_data = client_data; 00141 mem->owner = owner; 00142 00143 mem->next = party_head; 00144 if (party_head) party_head->prev = mem; 00145 party_head = mem; 00146 00147 mem->prev_on_bot = NULL; 00148 if (bot) { 00149 mem->next_on_bot = bot->partys; 00150 if (bot->partys) bot->partys->prev_on_bot = mem; 00151 bot->partys = mem; 00152 } else { 00153 mem->next_on_bot = local_party_head; 00154 if (local_party_head) local_party_head->prev_on_bot = mem; 00155 local_party_head = mem; 00156 } 00157 00158 npartymembers++; 00159 botnet_announce_login(mem); 00160 bind_check(BT_new, NULL, nick, mem); 00161 return(mem); 00162 }
int partymember_printf | ( | partymember_t * | p, | |
const char * | fmt, | |||
... | ||||
) |
Definition at line 386 of file partymember.c.
References egg_mvsprintf(), and partymember_write().
Referenced by callback_match_attr(), callback_match_ircmask(), Log(), lookup_setting(), party_act(), party_binds(), party_bots(), party_chaninfo(), party_chanmembermode(), party_channels(), party_chanset(), party_chattr(), party_chhandle(), party_chpass(), party_dump(), party_get(), party_help(), party_join(), party_jump(), party_link(), party_loadmod(), party_match(), party_matchattr(), party_matchwild(), party_minus_bot(), party_minus_chan(), party_minus_host(), party_minus_obot(), party_minus_server(), party_minus_user(), party_modules(), party_msg(), party_newpass(), party_pls_chan(), party_plus_bot(), party_plus_host(), party_plus_obot(), party_plus_server(), party_plus_user(), party_quit(), party_servers(), party_set(), party_status(), party_tcl(), party_timers(), party_unlink(), party_unloadmod(), party_unset(), party_whisper(), party_who(), party_whois(), partyline_on_command(), print_net(), and server_status().
00387 { 00388 va_list args; 00389 char *ptr, buf[1024]; 00390 int len; 00391 00392 va_start(args, fmt); 00393 ptr = egg_mvsprintf(buf, sizeof(buf), &len, fmt, args); 00394 va_end(args); 00395 00396 partymember_write(p, ptr, len); 00397 00398 if (ptr != buf) free(ptr); 00399 return(0); 00400 }
int partymember_printf_id | ( | int | id, | |
const char * | fmt, | |||
... | ||||
) |
int partymember_set_nick | ( | partymember_t * | p, | |
const char * | nick | |||
) |
Definition at line 234 of file partymember.c.
References bind_check(), botnet_set_nick(), partymember::client_data, partymember::flags, partymember::handler, partymember_common::len, partymember_common::members, partymember::nick, NULL, partyline_event::on_nick, PARTY_DELETED, PARTY_SELECTED, partychan_free_common(), and partychan_get_common().
Referenced by got_nick(), got_nickchange(), and user_change_handle().
00235 { 00236 partymember_common_t *common; 00237 partymember_t *mem; 00238 char *oldnick; 00239 int i; 00240 00241 oldnick = p->nick; 00242 p->nick = strdup(nick); 00243 if (p->handler && p->handler->on_nick) 00244 (p->handler->on_nick)(p->client_data, p, oldnick, nick); 00245 botnet_set_nick(p, oldnick); 00246 p->flags |= PARTY_SELECTED; 00247 common = partychan_get_common(p); 00248 if (common) { 00249 for (i = 0; i < common->len; i++) { 00250 mem = common->members[i]; 00251 if (mem->flags & PARTY_DELETED) continue; 00252 if (mem->handler->on_nick) (mem->handler->on_nick)(mem->client_data, p, oldnick, nick); 00253 } 00254 partychan_free_common(common); 00255 } 00256 bind_check(BT_nick, NULL, NULL, p, oldnick, p->nick); 00257 if (oldnick) free(oldnick); 00258 p->flags &= ~PARTY_SELECTED; 00259 return(0); 00260 }
int partymember_update_info | ( | partymember_t * | p, | |
const char * | ident, | |||
const char * | host | |||
) |
Definition at line 262 of file partymember.c.
References partymember::host, partymember::ident, and str_redup().
00263 { 00264 if (!p) return(-1); 00265 if (ident) str_redup(&p->ident, ident); 00266 if (host) str_redup(&p->host, host); 00267 return(0); 00268 }
int partymember_who | ( | int ** | ids, | |
int * | len | |||
) |
Definition at line 270 of file partymember.c.
References partymember::flags, partymember::id, partymember::next_on_bot, npartymembers, and PARTY_DELETED.
Referenced by party_who().
00271 { 00272 int i; 00273 partymember_t *p; 00274 00275 *ids = malloc(sizeof(int) * (npartymembers+1)); 00276 i = 0; 00277 for (p = local_party_head; p; p = p->next_on_bot) { 00278 if (p->flags & PARTY_DELETED) continue; 00279 (*ids)[i] = p->id; 00280 i++; 00281 } 00282 (*ids)[i] = 0; 00283 *len = i; 00284 return(0); 00285 }
int partymember_write | ( | partymember_t * | p, | |
const char * | text, | |||
int | len | |||
) |
Definition at line 341 of file partymember.c.
References NULL, and partymember_msg().
Referenced by party_perl(), party_python(), party_tcl(), and partymember_printf().
00342 { 00343 return partymember_msg(p, NULL, text, len); 00344 }
int partymember_write_id | ( | int | id, | |
const char * | text, | |||
int | len | |||
) |