]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/s_newconf.c
Add extensions/m_roleplay, a module that provides various roleplaying commands.
[irc/rqf/shadowircd.git] / src / s_newconf.c
index 86d20b93d16fc834e356cd0eb758abc7f8cec317..6114a51223f4ab160584d8412497021a848489c5 100644 (file)
@@ -29,7 +29,6 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $Id: s_newconf.c 3508 2007-06-04 16:04:49Z jilles $
  */
 
 #include "stdinc.h"
@@ -318,54 +317,6 @@ find_oper_conf(const char *username, const char *host, const char *locip, const
        return NULL;
 }
 
-struct oper_flags
-{
-       int flag;
-       const char *name;
-};
-static struct oper_flags oper_flagtable[] =
-{
-       { OPER_KLINE,           "kline"        },
-       { OPER_XLINE,           "xline"        },
-       { OPER_RESV,            "resv"         },
-       { OPER_GLOBKILL,        "global_kill"  },
-       { OPER_LOCKILL,         "local_kill"   },
-       { OPER_REMOTE,          "remote"       },
-       { OPER_UNKLINE,         "unkline"      },
-       { OPER_REHASH,          "rehash"       },
-       { OPER_DIE,             "die"          },
-       { OPER_ADMIN,           "admin"        },
-        { OPER_HADMIN,          "hidden_admin" },
-       { OPER_NICKS,           "nick_changes" },
-       { OPER_OPERWALL,        "operwall"     },
-       { OPER_SPY,             "spy"          },
-       { OPER_INVIS,           "hidden_oper"  },
-       { OPER_REMOTEBAN,       "remoteban"    },
-       { OPER_MASSNOTICE,      "mass_notice"  },
-       { 0,                    NULL }
-};
-
-const char *
-get_oper_privs(int flags)
-{
-       static char buf[BUFSIZE];
-       char *p;
-       int i;
-
-       p = buf;
-       *p = '\0';
-
-       for(i = 0; oper_flagtable[i].flag; i++)
-       {
-               if(i)
-                       rb_strlcat(buf, ", ", sizeof(buf));
-
-               rb_strlcat(buf, oper_flagtable[i].name, sizeof(buf));
-       }
-
-       return buf;
-}
-
 struct server_conf *
 make_server_conf(void)
 {
@@ -487,7 +438,7 @@ detach_server_conf(struct Client *client_p)
 }
 
 void
-set_server_conf_autoconn(struct Client *source_p, char *name, int newval)
+set_server_conf_autoconn(struct Client *source_p, const char *name, int newval)
 {
        struct server_conf *server_p;
 
@@ -506,6 +457,24 @@ set_server_conf_autoconn(struct Client *source_p, char *name, int newval)
                sendto_one_notice(source_p, ":Can't find %s", name);
 }
 
+void
+disable_server_conf_autoconn(const char *name)
+{
+       struct server_conf *server_p;
+
+       server_p = find_server_conf(name);
+       if(server_p != NULL && server_p->flags & SERVER_AUTOCONN)
+       {
+               server_p->flags &= ~SERVER_AUTOCONN;
+
+               sendto_realops_snomask(SNO_GENERAL, L_ALL,
+                               "Disabling AUTOCONN for %s because of error",
+                               name);
+               ilog(L_SERVER, "Disabling AUTOCONN for %s because of error",
+                               name);
+       }
+}
+
 struct ConfItem *
 find_xline(const char *gecos, int counter)
 {
@@ -516,7 +485,7 @@ find_xline(const char *gecos, int counter)
        {
                aconf = ptr->data;
 
-               if(match_esc(aconf->name, gecos))
+               if(match_esc(aconf->host, gecos))
                {
                        if(counter)
                                aconf->port++;
@@ -537,7 +506,7 @@ find_xline_mask(const char *gecos)
        {
                aconf = ptr->data;
 
-               if(!irccmp(aconf->name, gecos))
+               if(!irccmp(aconf->host, gecos))
                        return aconf;
        }
 
@@ -554,7 +523,7 @@ find_nick_resv(const char *name)
        {
                aconf = ptr->data;
 
-               if(match_esc(aconf->name, name))
+               if(match_esc(aconf->host, name))
                {
                        aconf->port++;
                        return aconf;
@@ -574,7 +543,7 @@ find_nick_resv_mask(const char *name)
        {
                aconf = ptr->data;
 
-               if(!irccmp(aconf->name, name))
+               if(!irccmp(aconf->host, name))
                        return aconf;
        }
 
@@ -681,6 +650,7 @@ valid_temp_time(const char *p)
        return(result * 60);
 }
 
+/* Propagated bans are expired elsewhere. */
 static void
 expire_temp_rxlines(void *unused)
 {
@@ -693,12 +663,14 @@ expire_temp_rxlines(void *unused)
        {
                aconf = ptr->data;
 
+               if(aconf->lifetime != 0)
+                       continue;
                if(aconf->hold && aconf->hold <= rb_current_time())
                {
                        if(ConfigFileEntry.tkline_expire_notices)
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
                                                "Temporary RESV for [%s] expired",
-                                               aconf->name);
+                                               aconf->host);
 
                        free_conf(aconf);
                        rb_dlinkDestroy(ptr, &resvTable[i]);
@@ -710,12 +682,14 @@ expire_temp_rxlines(void *unused)
        {
                aconf = ptr->data;
 
+               if(aconf->lifetime != 0)
+                       continue;
                if(aconf->hold && aconf->hold <= rb_current_time())
                {
                        if(ConfigFileEntry.tkline_expire_notices)
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
                                                "Temporary RESV for [%s] expired",
-                                               aconf->name);
+                                               aconf->host);
                        free_conf(aconf);
                        rb_dlinkDestroy(ptr, &resv_conf_list);
                }
@@ -725,12 +699,14 @@ expire_temp_rxlines(void *unused)
        {
                aconf = ptr->data;
 
+               if(aconf->lifetime != 0)
+                       continue;
                if(aconf->hold && aconf->hold <= rb_current_time())
                {
                        if(ConfigFileEntry.tkline_expire_notices)
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
                                                "Temporary X-line for [%s] expired",
-                                               aconf->name);
+                                               aconf->host);
                        free_conf(aconf);
                        rb_dlinkDestroy(ptr, &xline_conf_list);
                }