Anope IRC Services

Anope.org => Anope General => Topic started by: thangkho on January 18, 2008, 06:54:06 AM

Title: /ns id nick pass change you nick
Post by: thangkho on January 18, 2008, 06:54:06 AM
i have this code fo ns_identify i try to make it complete one time with /ns id nick pass but i can't if any one have ane idea ti share with thi code you have enter  two time with /ns id nick pass

 int do_identify(User * u)
{
   char *buf = moduleGetLastBuffer();
   char *nick =strtok(NULL," ");
   char *pass = strtok(NULL, " ");
       NickAlias *na;
       NickRequest *nr;
   User *u2;
   char *argv[1];
       int res;
       char tsbuf[16];
       char modes[512];
       int len;
    if (!nick){
        syntax_error(s_NickServ, u, "IDENTIFY", NICK_IDENTIFY_SYNTAX);
    } else if (nickIsServices(nick, 1)) {

      notice_lang(s_NickServ, u, NICK_X_IS_SERVICES, nick);

   }
    else if (!(u2 = finduser(nick))) {

         anope_cmd_svsnick(u->nick, nick, time(NULL));

         argv[0] = nick;
   }else if (!pass) {
        syntax_error(s_NickServ, u, "IDENTIFY", NICK_IDENTIFY_SYNTAX);
    } else if (!(na = u->na)) {
        if ((nr = findrequestnick(u->nick))) {
            notice_lang(s_NickServ, u, NICK_IS_PREREG);
        } else {
            notice_lang(s_NickServ, u, NICK_NOT_REGISTERED);
        }
    } else if (na->status & NS_VERBOTEN) {
        notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick);
    } else if (na->nc->flags & NI_SUSPENDED) {
        notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick);
    } else if (nick_identified(u)) {
        notice_lang(s_NickServ, u, NICK_ALREADY_IDENTIFIED);
    } else if (!(res = enc_check_password(pass, na->nc->pass))) {
        alog("%s: Failed IDENTIFY for %s!%s@%s", s_NickServ, u->nick,
             u->username, u->host);
        notice_lang(s_NickServ, u, PASSWORD_INCORRECT);
        bad_password(u);
    } else if (res == -1) {
        notice_lang(s_NickServ, u, NICK_IDENTIFY_FAILED);
    } else {
        if (!(na->status & NS_IDENTIFIED) && !(na->status & NS_RECOGNIZED)) {
            if (na->last_usermask)
                free(na->last_usermask);
            na->last_usermask =
                scalloc(strlen(common_get_vident(u)) +
                        strlen(common_get_vhost(u)) + 2, 1);
            sprintf(na->last_usermask, "%s@%s", common_get_vident(u),
                    common_get_vhost(u));
            if (na->last_realname)
                free(na->last_realname);
            na->last_realname = sstrdup(u->realname);
        }

        na->status |= NS_IDENTIFIED;
        na->last_seen = time(NULL);
        snprintf(tsbuf, sizeof(tsbuf), "%lu",
                 (unsigned long int) u->timestamp);

        if (ircd->modeonreg) {
            len = strlen(ircd->modeonreg);
       strncpy(modes,ircd->modeonreg,512);
       if(ircd->rootmodeonid && is_services_root(u)) {
                strncat(modes,ircd->rootmodeonid,512-len);
       } else if(ircd->adminmodeonid && is_services_admin(u)) {
                strncat(modes,ircd->adminmodeonid,512-len);
       } else if(ircd->opermodeonid && is_services_oper(u)) {
                strncat(modes,ircd->opermodeonid,512-len);
       }
            if (ircd->tsonmode) {
                common_svsmode(u, modes, tsbuf);
            } else {
                common_svsmode(u, modes, "");
            }
        }
        send_event(EVENT_NICK_IDENTIFY, 1, u->nick);
        alog("%s: %s!%s@%s identified for nick %s", s_NickServ, u->nick,
             u->username, u->host, u->nick);
        notice_lang(s_NickServ, u, NICK_IDENTIFY_SUCCEEDED);
        if (ircd->vhost) {
            do_on_id(u);
        }
        if (NSModeOnID) {
            do_setmodes(u);
        }

        if (NSForceEmail && u->na && !u->na->nc->email) {
            notice_lang(s_NickServ, u, NICK_IDENTIFY_EMAIL_REQUIRED);
            notice_help(s_NickServ, u, NICK_IDENTIFY_EMAIL_HOWTO);
        }

        if (!(na->status & NS_RECOGNIZED))
            check_memos(u);

        /* Enable nick tracking if enabled */
        if (NSNickTracking)
            nsStartNickTracking(u);

        /* Clear any timers */
        if (na->nc->flags & NI_KILLPROTECT) {
            del_ns_timeout(na, TO_COLLIDE);
        }

    }
    return MOD_CONT;
}
Title:
Post by: Jobe on January 18, 2008, 04:16:48 PM
Let me get this straight? You're trying to modify Anope's core source code?

If so, we do NOT in any way support source modifications.

Such a feature can be achieved with a module anyway. So try posting a request for it in the modules forum.
Title:
Post by: katsklaw on January 18, 2008, 10:06:02 PM
Actually I doubt it can be fully supported even as a module since Anope doesn't support remote ID in the first place.

Sure you would get Identify to work, but Services requires users to use the identified nick to perform commands and doesn't solely check if the user is identified.
Title:
Post by: Jobe on January 19, 2008, 07:11:55 PM
Could you not override the identify command yourself and perform some of the identify procedure yourself in the module?
Title:
Post by: katsklaw on January 19, 2008, 10:50:18 PM
yes you can .. but that doesn't affect other potions of Anope other than identify that relies on you using a specific nick, like say, OS access.