/* * PSYC Manager Daemon, src/user.cc * Copyright (C) 2001 Mark Ralf Thomson * Concept: Mark Ralf Thomson */ #include "psycm.h" #include "net.h" #include "classes.h" #include "extern.h" #include "int_functions.h" #include "msg.h" #include "user.h" int m_ulogin (person *p,char (*key)[21],char (*value)[1024]) { char *nick,*name,*passw,*ident; char sid[9]; nickdb **rp; in_addr imp; hostent *host; nick = FindParam("_nick",key,value); name = FindParam("_name",key,value); passw = FindParam("_pasword",key,value); ident = FindParam("_identification",key,value); nick[NICKLEN+1]= '\0'; name[NAMELEN+1]= '\0'; passw[PASSLEN+1]= '\0'; ident[IDLEN+1]= '\0'; MakeCorrect(nick); MakeCorrect(name); MakeCorrect(passw); MakeCorrect(ident); if((rp = ndb.find(nick)) != NULL) { if (passw == (*rp)->password ) { p->reg = true; //p->flags += 'R'; } else { //p->send("_request_link_password","Objekt [_target] requieres password!"); } } else { p->reg = false; } sid[0] = 48+(1+(int) (9.0*rand()/(RAND_MAX+1.0))); for(int s=1; s<=8; s++) { sid[s]=48+((int) (9.0*rand()/(RAND_MAX)));} sid[9]='\0'; inet_aton(p->conn.ip,&imp); host = gethostbyaddr((char*)&imp,sizeof(imp),AF_INET); strcpy(p->pers.realname , name); strcpy(p->pers.ident ,ident); strcpy(p->conn.host , host->h_name); strcpy(p->pers.nickname ,nick); if (p->reg) { strncpy(p->pers.email , (*rp)->email,EMAILLEN); p->pers.regtime = (time_t)atoi((*rp)->stamp_reg); // p->send(); } else { cout <<"Verbunden\n"; } p->ok=true; return 0; }