]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/main.c
Finally i figured out how to deal with the last issue, This is a tracking module...
[irc/evilnet/x3.git] / src / main.c
index 155d20b83a85635df98266d97eb5e2eddc05214d..e272957dd33519b083892a4d82ec3072a7e10a86 100644 (file)
@@ -26,6 +26,7 @@
 #include "modcmd.h"
 #include "saxdb.h"
 #include "sendmail.h"
+#include "shun.h"
 #include "timeq.h"
 
 #include "chanserv.h"
@@ -77,6 +78,7 @@ static const struct message_entry msgtab[] = {
     { "MSG_ON", "On" },
     { "MSG_OFF", "Off" },
     { "MSG_NEVER", "Never" },
+    { "MSG_BAR", "----------------------------------------" },
     { "MSG_SERVICE_IMMUNE", "$b%s$b may not be kicked, killed, banned, or deopped." },
     { "MSG_SERVICE_PRIVILEGED", "$b%s$b is a privileged service." },
     { "MSG_NOT_A_SERVICE", "$b%s$b is not a service bot." },
@@ -94,6 +96,7 @@ static const struct message_entry msgtab[] = {
     { "MSG_MODULE_UNKNOWN", "No module has been registered with name $b%s$b." },
     { "MSG_INVALID_MODES", "$b%s$b is an invalid set of channel modes." },
     { "MSG_INVALID_GLINE", "Invalid G-line '%s'." },
+    { "MSG_INVALID_SHUN", "Invalid Shun '%s'." },
     { "MSG_INVALID_DURATION", "Invalid time span '%s'." },
     { "MSG_NOT_TARGET_NAME", "You must provide the name of a channel or user." },
     { "MSG_NOT_CHANNEL_NAME", "The channel name you specified is not a valid channel name." },
@@ -107,7 +110,7 @@ static const struct message_entry msgtab[] = {
     { "MSG_STUPID_ACCESS_CHANGE", "Please ask someone $belse$b to demote you." },
     { "MSG_NO_SEARCH_ACCESS", "You do not have enough access to search based on $b%s$b." },
     { "MSG_INVALID_CRITERIA", "$b%s$b is an invalid search criteria." },
-    { "MSG_MATCH_COUNT", "Found $b%u$b matches." },
+    { "MSG_MATCH_COUNT", "-----------Found $b%3u$b Matches------------" },
     { "MSG_NO_MATCHES", "Nothing matched the criteria of your search." },
     { "MSG_TOPIC_UNKNOWN", "No help on that topic." },
     { "MSG_INVALID_BINARY", "$b%s$b is an invalid binary value." },
@@ -117,20 +120,20 @@ static const struct message_entry msgtab[] = {
     { "MSG_DB_WRITE_ERROR", "Error while writing database %s." },
     { "MSG_DB_WROTE_DB", "Wrote database %s (in "FMT_TIME_T".%06lu seconds)." },
     { "MSG_DB_WROTE_ALL", "Wrote all databases (in "FMT_TIME_T".%06lu seconds)." },
-    { "MSG_AND", "and" },
+    { "MSG_AND", "," },
     { "MSG_0_SECONDS", "0 seconds" },
-    { "MSG_YEAR", "year" },
-    { "MSG_YEARS", "years" },
-    { "MSG_WEEK", "week" },
-    { "MSG_WEEKS", "weeks" },
-    { "MSG_DAY", "day" },
-    { "MSG_DAYS", "days" },
-    { "MSG_HOUR", "hour" },
-    { "MSG_HOURS", "hours" },
-    { "MSG_MINUTE", "minute" },
-    { "MSG_MINUTES", "minutes" },
-    { "MSG_SECOND", "second" },
-    { "MSG_SECONDS", "seconds" },
+    { "MSG_YEAR", "y" },
+    { "MSG_YEARS", "y" },
+    { "MSG_WEEK", "w" },
+    { "MSG_WEEKS", "w" },
+    { "MSG_DAY", "d" },
+    { "MSG_DAYS", "d" },
+    { "MSG_HOUR", "h" },
+    { "MSG_HOURS", "h" },
+    { "MSG_MINUTE", "m" },
+    { "MSG_MINUTES", "m" },
+    { "MSG_SECOND", "s" },
+    { "MSG_SECONDS", "s" },
     { NULL, NULL }
 };
 
@@ -141,10 +144,9 @@ uplink_insert(const char *key, void *data, UNUSED_ARG(void *extra))
 {
     struct uplinkNode *uplink = malloc(sizeof(struct uplinkNode));
     struct record_data *rd = data;
+    struct addrinfo hints, *ai;
     int enabled = 1;
     char *str;
-    struct sockaddr_in *sin;
-    unsigned long addr;
 
     if(!uplink)
     {
@@ -174,15 +176,17 @@ uplink_insert(const char *key, void *data, UNUSED_ARG(void *extra))
     uplink->tries = 0;
 
     str = database_get_data(rd->d.object, "bind_address", RECDB_QSTRING);
-    uplink->bind_addr_len = sizeof(*sin);
-    if (str && getipbyname(str, &addr)) 
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_flags = AI_PASSIVE;
+    hints.ai_socktype = SOCK_STREAM;
+    if (!getaddrinfo(str, NULL, &hints, &ai))
     {
-       sin = calloc(1, uplink->bind_addr_len);
-       sin->sin_family = AF_INET;
-       sin->sin_addr.s_addr = addr;
-       uplink->bind_addr = sin;
-    } 
-    else 
+        uplink->bind_addr_len = ai->ai_addrlen;
+        uplink->bind_addr = calloc(1, ai->ai_addrlen);
+        memcpy(uplink->bind_addr, ai->ai_addr, ai->ai_addrlen);
+        freeaddrinfo(ai);
+    }
+    else
     {
        uplink->bind_addr = NULL;
        uplink->bind_addr_len = 0;
@@ -565,12 +569,13 @@ conf_globals(void)
 static int
 set_item_rlimit(const char *name, void *data, void *extra)
 {
-    int rsrc, found;
+    long rsrc;
+    int found;
     struct record_data *rd = data;
     struct rlimit rlim;
     const char *str;
 
-    rsrc = (int)dict_find(extra, name, &found);
+    rsrc = (long)dict_find(extra, name, &found);
     if (!found) {
         log_module(MAIN_LOG, LOG_ERROR, "Invalid rlimit \"%s\" in rlimits section.", name);
         return 0;
@@ -829,6 +834,7 @@ int main(int argc, char *argv[])
     modcmd_init();
     saxdb_init();
     gline_init();
+    shun_init();
     sendmail_init();
     helpfile_init();
     conf_globals(); /* initializes the core services */