ADD `mode_lt` enum('Y','N') NOT NULL default 'N',
ADD `mode_ur` enum('Y','N') NOT NULL default 'N',
ADD `mode_lk_data` varchar(23) NOT NULL default '',
-ADD `mode_ll_data` int(10) NOT NULL default '0';
+ADD `mode_ll_data` int(10) NOT NULL default '0',
+ADD `mode_ua_data` varchar(23) NOT NULL default '',
+ADD `mode_uu_data` varchar(23) NOT NULL default '';
-- --------------------------------------------------------
ADD `mode_lr` enum('Y','N') NOT NULL default 'N',
ADD `mode_ls` enum('Y','N') NOT NULL default 'N',
ADD `mode_lx` enum('Y','N') NOT NULL default 'N',
-ADD `mode_lw` enum('Y','N') NOT NULL default 'N';
+ADD `mode_lw` enum('Y','N') NOT NULL default 'N',
+ADD `mode_ld` enum('Y','N') NOT NULL default 'N';
ADD `mode_uz` enum('Y','N') NOT NULL default 'N',
ADD `mode_lk_data` varchar(23) NOT NULL default '',
ADD `mode_ul_data` varchar(33) NOT NULL default '',
-ADD `mode_ll_data` int(10) NOT NULL default '0';
-ADD `mode_ua_data` varchar(23) NOT NULL default '';
+ADD `mode_ll_data` int(10) NOT NULL default '0',
+ADD `mode_ua_data` varchar(23) NOT NULL default '',
+ADD `mode_uu_data` varchar(23) NOT NULL default '';
-- --------------------------------------------------------
/* Channel Modes */
CreateChanMode(CMODE_D, NULL, NULL); /* Delayed Join */
CreateChanMode(CMODE_d, NULL, NULL); /* Delayed Join */
- CreateChanMode(CMODE_A, NULL, NULL); /* Channel Admin Pass */
- CreateChanMode(CMODE_U, NULL, NULL); /* Channel User Pass */
+ CreateChanMode(CMODE_A, ircu_chan_mode_ua_set, ircu_chan_mode_ua_get); /* Channel Admin Pass */
+ CreateChanMode(CMODE_U, ircu_chan_mode_uu_set, ircu_chan_mode_uu_get); /* Channel User Pass */
CreateChanMode(CMODE_i, NULL, NULL); /* Invite Only */
CreateChanMode(CMODE_k, set_key, get_key); /* Keyed */
CreateChanMode(CMODE_l, set_limit, get_limit); /* Invite Only */
ModuleUpdateSQLChanMode();
}
+
+char *ircu_chan_mode_ua_get(Channel * chan)
+{
+ return moduleGetData(PROTO_NAME, &chan->moduleData, "mode_ua");
+}
+
+void ircu_chan_mode_ua_set(Channel * chan, char *value)
+{
+ moduleAddData(PROTO_NAME, &chan->moduleData, "mode_ua", value);
+}
+
+char *ircu_chan_mode_uu_get(Channel * chan)
+{
+ return moduleGetData(PROTO_NAME, &chan->moduleData, "mode_uu");
+}
+
+void ircu_chan_mode_uu_set(Channel * chan, char *value)
+{
+ moduleAddData(PROTO_NAME, &chan->moduleData, "mode_uu", value);
+}
+
char *ircu_nickip(char *host)
{
char ipaddr[INET6_ADDRSTRLEN];
}
moduleAddAuthor("Denora");
- moduleAddVersion("");
+ moduleAddVersion(PROTO_VERSION);
moduleSetType(PROTOCOL);
pmodule_ircd_version("IRCu 2.10.11+");
*
*/
+#define PROTO_VERSION "1.0"
+#define PROTO_NAME "ircu"
+
void ircu_cmd_nick(char *nick, char *name, const char *modes);
void ircu_cmd_mode(char *source, char *dest, char *buf);
void ircu_cmd_bot_nick(char *nick, char *user, char *host, char *real, char *modes);
int ircu_parse_lkill(char *message);
char *ircu_lkill_killer(char *message);
char *ircu_lkill_msg(char *message);
+
+char *ircu_chan_mode_ua_get(Channel * chan);
+void ircu_chan_mode_ua_set(Channel * chan, char *value);
+
+char *ircu_chan_mode_uu_get(Channel * chan);
+void ircu_chan_mode_uu_set(Channel * chan, char *value);
CreateChanMode(CMODE_t, NULL, NULL);
CreateChanMode(CMODE_z, NULL, NULL);
CreateChanMode(CMODE_C, NULL, NULL);
+ CreateChanMode(CMODE_D, NULL, NULL);
CreateChanMode(CMODE_L, set_redirect, get_redirect);
CreateChanMode(CMODE_M, NULL, NULL);
CreateChanMode(CMODE_N, NULL, NULL);
CreateChanMode(CMODE_O, NULL, NULL);
CreateChanMode(CMODE_Q, NULL, NULL);
+ CreateChanMode(CMODE_R, NULL, NULL);
CreateChanMode(CMODE_S, NULL, NULL);
CreateChanMode(CMODE_T, NULL, NULL);
CreateChanMode(CMODE_Z, NULL, NULL);
moduleAddData(PROTO_NAME, &chan->moduleData, "mode_u", value);
}
-
-
char *nefarious_nickip(char *host)
{
- struct in_addr addr;
- int decoded;
+ char ipaddr[INET6_ADDRSTRLEN];
+
+ base64toip(host, (char *)&ipaddr);
+
+ alog(LOG_DEBUG, "debug: Decoded base64 %s to %s", host, ipaddr);
- decoded = base64toint(host);
- addr.s_addr = ntohl(decoded);
- return sstrdup(inet_ntoa(addr));
+ return sstrdup((char *)&ipaddr);
}
/* On Services connect the modes are given */
/* SERVER irc.undernet.org 1 933022556 947908144 J10 AA]]] :[127.0.0.1] A Undernet Server */
void nefarious_cmd_server(char *servname, int hop, char *descript)
{
- send_cmd(NULL, "SERVER %s %d %ld %lu J10 %s]]] +s :%s", servname, hop,
+ send_cmd(NULL, "SERVER %s %d %ld %lu J10 %s]]] +s6 :%s", servname, hop,
(long int) denora->start_time, (long int) time(NULL), p10id,
descript);
}