#include #include #include #include #include #include #include char pop_user[32]; char salt[2]; time_t tm; char *pop_pass; char *enc_pop_pass; char queryBuf[128]; char queryBuf1[128]; MYSQL mysql; MYSQL_RES *result; my_ulonglong num_rows; my_ulonglong aff_rows; #define MYSQL_USER "db_user" #define MYSQL_PASS "db_pass" #define MYSQL_HOST "db_host" #define MYSQL_DB "db_db" #define MYSQL_TABLE "db_table_name" #define POP_GROUP "pop_group" main() { time(&tm); salt[0] = (tm & 0x0f) + 'A'; salt[1] = ((tm & 0xf0) >> 4) + 'a'; printf("Enter username: "); scanf("%s", &pop_user); mysql_init(&mysql); if(!mysql_real_connect(&mysql,MYSQL_HOST,MYSQL_USER,MYSQL_PASS,MYSQL_DB,0,NULL,0)) { printf("Error connecting to databse: %s\n", mysql_error(&mysql)); mysql_close(&mysql); exit(-1); } sprintf(queryBuf,"select username from %s where username = \'%s\'",MYSQL_TABLE,pop_user); if(mysql_query(&mysql, queryBuf) != 0) { printf("error: %s\n", mysql_error(&mysql)); mysql_free_result(result); mysql_close(&mysql); exit(-1); } result = mysql_store_result(&mysql); num_rows = mysql_num_rows(result); if(num_rows != 0) { printf("Username exists aborting...\n"); mysql_free_result(result); mysql_close(&mysql); exit(-1); } mysql_free_result(result); pop_pass = getpass("Enter password: "); enc_pop_pass = crypt(pop_pass, salt); sprintf(queryBuf1,"insert into %s values(\'%s\',\'%s\',NULL,%s,\'mailaccount\',\'/home/%s\',\'/etc/noshell\',\'/var/spool/drop/%s.pop\')",MYSQL_TABLE,pop_user,enc_pop_pass,POP_GROUP,pop_user,pop_user); mysql_query(&mysql,queryBuf1); if(mysql_affected_rows(&mysql) == 0) printf("Error adding user: %s\n", mysql_error(&mysql)); else printf("User succesfully added\n"); mysql_close(&mysql); exit(0); }