e487f1bd4f8f0fbad4518417a17c5ea8bfd35222
[NeonServV5.git] / cmd_neonserv_delme.c
1
2 /*
3 * argv[0] - key
4 */
5
6 static CMD_BIND(neonserv_cmd_delme) {
7     MYSQL_RES *res;
8     MYSQL_ROW row;
9     int userid;
10     printf_mysql_query("SELECT `user_id` FROM `users` WHERE `user_user` = '%s'", escape_string(user->auth));
11     res = mysql_use();
12     if ((row = mysql_fetch_row(res)) != NULL) {
13         userid = atoi(row[0]);
14         //check if the user is added
15         printf_mysql_query("SELECT `chanuser_access`, `chanuser_id` FROM `chanusers` WHERE `chanuser_cid` = '%d' AND `chanuser_uid` = '%d'", chan->channel_id, userid);
16         res = mysql_use();
17         if ((row = mysql_fetch_row(res)) != NULL) {
18             //check key
19             int seed = 0;
20             char *tmp;
21             static char unregkey[16];
22             for(tmp = user->auth; *tmp; tmp++)
23                 seed = (seed * 0xEECE66DL ^ ((*tmp << 24) | (*tmp << 16) | (*tmp << 8) | *tmp));
24             for(tmp = chan->name; *tmp; tmp++)
25                 seed = (seed * 0xEECE66DL ^ ((*tmp << 24) | (*tmp << 16) | (*tmp << 8) | *tmp));
26             sprintf(unregkey, "%08x", seed);
27             if(argc < 1 || strcmp(argv[0], unregkey)) {
28                 reply(getTextBot(), user, "NS_DELME_KEY", unregkey);
29                 return;
30             } else {
31                 //delete
32                 printf_mysql_query("DELETE FROM `chanusers` WHERE `chanuser_id` = '%s'", row[1]);
33                 reply(getTextBot(), user, "NS_DELME_DONE", atoi(row[0]), chan->name);
34                 logEvent(event);
35                 return;
36             }
37         }
38     }
39     reply(getTextBot(), user, "NS_NOT_ON_USERLIST_YOU", chan->name);
40 }