[IRCServices] what do they think ?

root of all evil climber at rionet.com.br
Thu Oct 7 13:46:37 PDT 1999


i had wrote this function on my services, it is working well, but i wold like
to hear coments and sugestions on it

it send password information to the nick email (ni->email) and i changed the
do_register, so users must give a mail

the function is it : 

static void do_sendpass(User *u)
{
#ifndef USE_ENCRYPTION
    char *nick = strtok(NULL, " ");
    NickInfo *ni;
    FILE *tosend;
    FILE *lock;
#endif

#ifdef USE_ENCRYPTION
    notice(s_NickServ, u->nick, "SENDPASS not avaliable");
#else
      lock = fopen(".senpass.nick", "r");
      if (lock) {
        notice(s_NickServ, u->nick, "Sendpass is busy, try again later");
        fclose(lock);
        return ;                  
    }else if (!nick) {
            notice(s_NickServ, u->nick, "Sintax: /msg NickServ SENDPASS nick");
	return ;
    } else if (!(ni = findnick(nick))) {
        notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick);
        return ;
    } else if (nick_is_services_admin(ni) && !is_services_root(u)) {  
        notice_lang(s_NickServ, u, PERMISSION_DENIED); 
        return ;
    } else if (!ni->email) {
        notice(s_NickServ, u->nick, "No email set");
        return ;
    } else if (!strchr(ni->email, '@')) {
        notice(s_NickServ, u->nick, "bad email");
        return ;
    } else if(strlen(ni->email)>50) {
        notice(s_NickServ, u->nick, "bad email");
        return ;
    } else {
            
       char illsend[256];
       strcpy(illsend,"/usr/sbin/sendmail ");
       strcat(illsend, ni->email);
       strcat(illsend," < .sendpass.nick");

        tosend = fopen(".sendpass.nick", "w");
          if (tosend) {
          fprintf(tosend, "From: brasirc at brasirc.com.br\n");
          fprintf(tosend, "Subject: [%s] Password\n", ni->nick);
          fprintf(tosend, "\n");
          fprintf(tosend, "Dear user\n");
          fprintf(tosend, "yor nick %s password is:%s\n", ni->nick, ni->pass);
          fprintf(tosend, "if u need help  write to ajuda at brasirc.com.br\n");  
          fprintf(tosend, "or join #BrasIRCOP\n");       
          fprintf(tosend, "\n"); 
          fprintf(tosend, "BrasIRC.com.br network");
          fprintf(tosend,".\n");   /* this get us out on sendmail */ 
          fclose(tosend);

          system(illsend);
          system("rm -f .sendpass.nick"); 

        log("%s: %s!%s@%s used SENDPASS on %s email: %s", s_NickServ, u->nick,
u ->username, u->host, nick, ni->email);
         if (WallGetpass)             
         wallops(s_NickServ, "\2%s\2 used SENDPASS on \2%s\2, mail: %s",
u->nick, nick, ni->email);         
       } else {           notice(s_NickServ, u->nick, "Ooops, Something gone
wrong on SendPass");
          }     } 
} 
#endif

Fighter ircadmin irc.rionet.com.br
Brasirc.com.br Network 
---------------------------------------------------------------
To unsubscribe, send email to majordomo at ender.shadowfire.org
with "unsubscribe ircservices" in the body, without the quotes.