]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/proto-p10.c
LOC fix for non-ldap LOC where ldap is available
[irc/evilnet/x3.git] / src / proto-p10.c
index 7e85830fc59b30eccd6bc40efec5bd64e01f622e..10bec6e9b95ae66906e75cf247f9af49ce1e6efd 100644 (file)
@@ -91,6 +91,7 @@
 #define CMD_SETTIME             "SETTIME"
 #define CMD_SHUN               "SHUN"
 #define CMD_SILENCE             "SILENCE"
+#define CMD_SNO                 "SNO"
 #define CMD_SQUERY              "SQUERY"
 #define CMD_SQUIT               "SQUIT"
 #define CMD_STATS               "STATS"
 #define TOK_SETTIME             "SE"
 #define TOK_SHUN               "SU"
 #define TOK_SILENCE             "U"
+#define TOK_SNO                 "SNO"
 #define TOK_SQUERY              "SQUERY"
 #define TOK_SQUIT               "SQ"
 #define TOK_STATS               "R"
 #define P10_SETTIME             TYPE(SETTIME)
 #define P10_SHUN               TYPE(SHUN)
 #define P10_SILENCE             TYPE(SILENCE)
+#define P10_SNO                 TYPE(SNO)
 #define P10_SQUERY              TYPE(SQUERY)
 #define P10_SQUIT               TYPE(SQUIT)
 #define P10_STATS               TYPE(STATS)
@@ -477,7 +480,7 @@ irc_server(struct server *srv)
     }
 }
 
-static void
+void
 irc_p10_pton(irc_in_addr_t *ip, const char *input)
 {
     if (strlen(input) == 6) {
@@ -504,7 +507,7 @@ irc_p10_pton(irc_in_addr_t *ip, const char *input)
     }
 }
 
-static void
+void
 irc_p10_ntop(char *output, const irc_in_addr_t *ip)
 {
     if (!irc_in_addr_is_valid(*ip)) {
@@ -586,6 +589,15 @@ irc_user(struct userNode *user)
             modes[modelen++] = 'f';
         if (IsHiddenHost(user))
             modes[modelen++] = 'x';
+        if (IsBotM(user))
+            modes[modelen++] = 'B';
+        if (IsHideChans(user))
+            modes[modelen++] = 'n';
+        if (IsHideIdle(user))
+            modes[modelen++] = 'I';
+        if (IsXtraOp(user))
+            modes[modelen++] = 'X';
+
         modes[modelen] = 0;
 
         /* we don't need to put the + in modes because it's in the format string. */
@@ -1482,7 +1494,22 @@ static CMD_FUNC(cmd_account)
     
     if(!strcmp(argv[2],"C"))
     {
-        if((hi = loc_auth(argv[4], argv[5])))
+        if((hi = loc_auth(argv[4], argv[5], NULL)))
+        {
+            /* Return a AC A */
+            putsock("%s " P10_ACCOUNT " %s A %s %lu", self->numeric, server->numeric , argv[3], hi->registered);
+
+        }
+        else
+        {
+            /* Return a AC D */
+            putsock("%s " P10_ACCOUNT " %s D %s", self->numeric, server->numeric , argv[3]);
+        }
+        return 1;
+    }
+    else if(!strcmp(argv[2],"H")) /* New enhanced (host) version of C */
+    {
+        if((hi = loc_auth(argv[5], argv[6], argv[4] )))
         {
             /* Return a AC A */
             putsock("%s " P10_ACCOUNT " %s A %s %lu", self->numeric, server->numeric , argv[3], hi->registered);
@@ -2448,6 +2475,8 @@ init_parse(void)
     dict_insert(irc_func_dict, TOK_VERSION, cmd_version);
     dict_insert(irc_func_dict, CMD_ADMIN, cmd_admin);
     dict_insert(irc_func_dict, TOK_ADMIN, cmd_admin);
+    dict_insert(irc_func_dict, CMD_SNO, cmd_dummy);
+    dict_insert(irc_func_dict, TOK_SNO, cmd_dummy);
 
     dict_insert(irc_func_dict, CMD_RPING, cmd_rping);
     dict_insert(irc_func_dict, TOK_RPING, cmd_rping);
@@ -3012,10 +3041,10 @@ void mod_usermode(struct userNode *user, const char *mode_change) {
        case 'd': do_user_mode(FLAGS_DEAF); break;
        case 'k': do_user_mode(FLAGS_SERVICE); break;
        case 'g': do_user_mode(FLAGS_GLOBAL); break;
-       // sethost - reed/apples
-       // case 'h': do_user_mode(FLAGS_HELPER); break;
-       // I check if there's an 'h' in the first part, and if there, 
-       // then everything after the space becomes their new host.
+       case 'B': do_user_mode(FLAGS_BOT); break;
+       case 'n': do_user_mode(FLAGS_HIDECHANS); break;
+       case 'I': do_user_mode(FLAGS_HIDEIDLE); break;
+       case 'X': do_user_mode(FLAGS_XTRAOP); break;
        case 'C': do_user_mode(FLAGS_CLOAKHOST);
            if (*word) {
                char cloakhost[MAXLEN];
@@ -3040,6 +3069,10 @@ void mod_usermode(struct userNode *user, const char *mode_change) {
                safestrncpy(user->cryptip, cloakip, sizeof(user->cryptip));
            }
            break;
+       // sethost - reed/apples
+       // case 'h': do_user_mode(FLAGS_HELPER); break;
+       // I check if there's an 'h' in the first part, and if there, 
+       // then everything after the space becomes their new host.
        case 'h': do_user_mode(FLAGS_SETHOST);
            if (*word) {
                char sethost[MAXLEN];