]> jfr.im git - irc/denora/denora.git/commitdiff
Added missing mode parameter handling for ircu channel modes +A and +U and added...
authorMatthew Beeching <redacted>
Sun, 3 Nov 2013 17:07:04 +0000 (17:07 +0000)
committerMatthew Beeching <redacted>
Sun, 3 Nov 2013 17:07:04 +0000 (17:07 +0000)
sql/ircu.sql
sql/nefarious2.sql
src/protocol/ircu.c
src/protocol/ircu.h
src/protocol/nefarious2.c

index 17a8e3d385b99a6bb857cc0beaafbba7223ada06..f095aca581a3c6f350d5c1957c95957f9780f41b 100644 (file)
@@ -14,7 +14,9 @@ ADD `mode_ls` enum('Y','N') NOT NULL default 'N',
 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 '';
 
 -- --------------------------------------------------------
 
@@ -26,4 +28,5 @@ ADD `mode_lo` enum('Y','N') NOT NULL default 'N',
 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';
index 2b25a4d28135535ea53366599b035d56ca29352a..de062c2c99a8b8a73d20f5a543b8461508069182 100644 (file)
@@ -27,8 +27,9 @@ ADD `mode_ut` 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 '';
 
 
 -- --------------------------------------------------------
index 5d26d84011b93f523b26928682c6f7d24331bed6..d5841d91b8c9a40df58f3fb8b7d5a7aa89c26e3b 100644 (file)
@@ -140,8 +140,8 @@ void IRCDModeInit(void)
        /* 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 */
@@ -160,6 +160,27 @@ void IRCDModeInit(void)
        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];
@@ -1265,7 +1286,7 @@ int DenoraInit(int argc, char **argv)
        }
 
        moduleAddAuthor("Denora");
-       moduleAddVersion("");
+       moduleAddVersion(PROTO_VERSION);
        moduleSetType(PROTOCOL);
 
        pmodule_ircd_version("IRCu 2.10.11+");
index a29b69daa9705b9bb554996667e068ee8f0daf80..d5e397f9bd5639f904765b864ba6e7c7e4c469f0 100644 (file)
@@ -12,6 +12,9 @@
  *
  */
 
+#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);
@@ -79,3 +82,9 @@ char *ircu_nickip(char *host);
 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);
index 07c7ba31481496f000be3232e7e524ab0a857348..aa69a9ff006e7e4f0fe031f7deae51cf15cc7b4e 100644 (file)
@@ -217,11 +217,13 @@ void IRCDModeInit(void)
        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);
@@ -255,16 +257,15 @@ void nef2_chan_mode_u_set(Channel * chan, char *value)
        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 */
@@ -897,7 +898,7 @@ void nefarious_cmd_capab()
 /* 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);
 }