From: pk910 Date: Thu, 25 Aug 2011 10:24:59 +0000 (+0200) Subject: fixed last commit X-Git-Tag: v5.3~477 X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=commitdiff_plain;h=2cb8943c3b3baa9c7f221799279307bf5cec73ac fixed last commit --- diff --git a/DATABASE.txt b/DATABASE.txt index e07d1cc..09ca9c4 100644 --- a/DATABASE.txt +++ b/DATABASE.txt @@ -26,7 +26,6 @@ INDEX ( `owner_history_cid` ) ALTER TABLE `chanusers` ADD INDEX ( `chanuser_cid` ) ; ALTER TABLE `chanusers` ADD INDEX ( `chanuser_uid` ) ; -ALTER TABLE `bot_binds` ADD `chan_access` VARCHAR( 256 ) NOT NULL AFTER `parameters` +ALTER TABLE `bot_binds` ADD `chan_access` VARCHAR( 256 ) NULL DEFAULT NULL AFTER `parameters` -ALTER TABLE `bot_binds` CHANGE `chan_access` `chan_access` VARCHAR( 256 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL , -CHANGE `global_access` `global_access` INT( 3 ) NULL +ALTER TABLE `bot_binds` CHANGE `global_access` `global_access` INT( 3 ) NULL diff --git a/bot_NeonServ.c b/bot_NeonServ.c index e843bf5..53d8bbe 100644 --- a/bot_NeonServ.c +++ b/bot_NeonServ.c @@ -226,7 +226,7 @@ static void start_bots() { client->botid = BOTID; client->clientid = atoi(row[7]); connect_socket(client); - printf_mysql_query("SELECT `command`, `function`, `parameters`, `global_access`, `channel_access` FROM `bot_binds` WHERE `botid` = '%d'", client->clientid); + printf_mysql_query("SELECT `command`, `function`, `parameters`, `global_access`, `chan_access` FROM `bot_binds` WHERE `botid` = '%d'", client->clientid); res2 = mysql_use(); while ((row = mysql_fetch_row(res2)) != NULL) { if(bind_cmd_to_command(BOTID, row[0], row[1])) { @@ -237,7 +237,7 @@ static void start_bots() { bind_set_global_access(BOTID, row[0], atoi(row[3])); } if(row[4]) { - bind_set_global_access(BOTID, row[0], row[4]); + bind_set_channel_access(BOTID, row[0], row[4]); } } } @@ -247,7 +247,7 @@ static void start_bots() { void init_NeonServ() { check_mysql(); - register_command(BOTID, "modes", neonserv_cmd_modes, 1, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH); + register_command(BOTID, "modes", neonserv_cmd_modes, 1, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH, NULL, 0); register_command(BOTID, "adduser", neonserv_cmd_adduser, 2, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH, "#channel_canadd", 0); register_command(BOTID, "deluser", neonserv_cmd_deluser, 1, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH, "#channel_candel", 0); @@ -273,6 +273,7 @@ void init_NeonServ() { register_command(BOTID, "deopall", neonserv_cmd_deopall, 0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH, "#channel_canop", 0); register_command(BOTID, "voiceall", neonserv_cmd_voiceall, 0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH, "#channel_canvoice", 0); register_command(BOTID, "devoiceall", neonserv_cmd_devoiceall, 0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH, "#channel_canvoice", 0); + register_command(BOTID, "set", neonserv_cmd_set, 0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH, "#channel_setters", 0); start_bots(); bind_bot_ready(neonserv_bot_ready); diff --git a/cmd_neonserv_set.c b/cmd_neonserv_set.c index 5ed7bba..69e9c06 100644 --- a/cmd_neonserv_set.c +++ b/cmd_neonserv_set.c @@ -18,7 +18,7 @@ static const struct { const char *chanfield; unsigned int valid; void *parameter; -} channel_settings[] { +} channel_settings[] = { {"trigger", "channel_trigger", NS_VALID_FUNCTION, neonserv_cmd_set_trigger}, {"defaulttopic", "channel_defaulttopic", NS_VALID_STRING, NULL}, {"topicmask", "channel_topicmask", NS_VALID_STRING, NULL}, @@ -47,16 +47,33 @@ static const struct { {"resync", "channel_canresync", NS_VALID_ACCESS, NULL}, {"suspend", "channel_cansuspend", NS_VALID_ACCESS, NULL}, {"noticeusers", "channel_notice", NS_VALID_ACCESS, NULL}, - {"noticereaction", "channel_noticereaction", NS_VALID_OPTIONS, 4}, + {"noticereaction", "channel_noticereaction", NS_VALID_OPTIONS, "4"}, {"ctcpusers", "channel_ctcp", NS_VALID_ACCESS, NULL}, - {"ctcpreaction", "channel_ctcpreaction", NS_VALID_OPTIONS, 4}, - {"protect", "channel_protect", NS_VALID_OPTIONS, 4}, - {"toys", "channel_toys", NS_VALID_OPTIONS, 3}, + {"ctcpreaction", "channel_ctcpreaction", NS_VALID_OPTIONS, "4"}, + {"protect", "channel_protect", NS_VALID_OPTIONS, "4"}, + {"toys", "channel_toys", NS_VALID_OPTIONS, "3"}, {"dynlimit", "channel_dynlimit", NS_VALID_NUMERIC | NS_VALID_FUNCTION, neonserv_cmd_set_dynlimit}, {"nodelete", "channel_nodelete", NS_VALID_BOOLEAN | NS_VALID_FUNCTION, neonserv_cmd_set_nodelete}, {NULL, NULL, 0, NULL} }; static CMD_BIND(neonserv_cmd_set) { - + return; } + +static int neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *argument) { + return 1; +} + +static int neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *argument) { + return 1; +} + +static int neonserv_cmd_set_dynlimit(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *argument) { + return 1; +} + +static int neonserv_cmd_set_nodelete(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *argument) { + return 1; +} + diff --git a/modcmd.c b/modcmd.c index 33e6284..7c1b0c5 100644 --- a/modcmd.c +++ b/modcmd.c @@ -87,12 +87,12 @@ static char* get_channel_trigger(int botid, struct ChanNode *chan) { return trigger->trigger; } -static void handle_command_async(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct ChanNode *sent_chan struct cmd_binding *cbind, char **argv, int argc); +static void handle_command_async(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct ChanNode *sent_chan, struct cmd_binding *cbind, char **argv, int argc); static USERAUTH_CALLBACK(command_checked_auth) { struct command_check_user_cache *cache = data; tmp_text_client = cache->textclient; - handle_command_async(cache->client, user, cache->chan, cache->sent_chan, cache->cbind, cache->argv, cache->argc) + handle_command_async(cache->client, user, cache->chan, cache->sent_chan, cache->cbind, cache->argv, cache->argc); free(cache->message); free(cache); } @@ -269,7 +269,8 @@ static void handle_command_async(struct ClientSocket *client, struct UserNode *u if(str_b) { while((str_a = strstr(str_b, ","))) { *str_a = '\0'; - if(*str_b[0] == '#') { + if(*str_b == '#') { + str_b++; access_pos += sprintf(access_list+access_pos, ", `%s`", str_b); access_count++; } else { @@ -279,8 +280,13 @@ static void handle_command_async(struct ClientSocket *client, struct UserNode *u *str_a = ','; str_b = str_a+1; } - access_pos += sprintf(access_list+access_pos, ", `%s`", str_b); - access_count++; + if(*str_b == '#') { + str_b++; + access_pos += sprintf(access_list+access_pos, ", `%s`", str_b); + access_count++; + } else if(atoi(str_b) > minaccess) + minaccess = atoi(str_b); + } else access_list[0] = '\0'; if(!(chan->flags & CHANFLAG_REQUESTED_CHANINFO) || (sent_chan && sent_chan == chan) || access_count || minaccess) {