add seclevel to menu items
This commit is contained in:
parent
b5c1ca9184
commit
e8777eae69
330
menus.c
330
menus.c
@ -53,6 +53,7 @@ struct menu_item {
|
|||||||
char hotkey;
|
char hotkey;
|
||||||
int command;
|
int command;
|
||||||
char *data;
|
char *data;
|
||||||
|
int seclevel;
|
||||||
};
|
};
|
||||||
|
|
||||||
int menu_system(char *menufile) {
|
int menu_system(char *menufile) {
|
||||||
@ -104,6 +105,7 @@ int menu_system(char *menufile) {
|
|||||||
menu[menu_items-1] = (struct menu_item *)malloc(sizeof(struct menu_item));
|
menu[menu_items-1] = (struct menu_item *)malloc(sizeof(struct menu_item));
|
||||||
menu[menu_items-1]->hotkey = buffer[7];
|
menu[menu_items-1]->hotkey = buffer[7];
|
||||||
menu[menu_items-1]->data = NULL;
|
menu[menu_items-1]->data = NULL;
|
||||||
|
menu[menu_items-1]->seclevel = 0;
|
||||||
} else if (strncasecmp(buffer, "COMMAND", 7) == 0 && menu_items > 0) {
|
} else if (strncasecmp(buffer, "COMMAND", 7) == 0 && menu_items > 0) {
|
||||||
if (strncasecmp(&buffer[8], "SUBMENU", 7) == 0) {
|
if (strncasecmp(&buffer[8], "SUBMENU", 7) == 0) {
|
||||||
menu[menu_items-1]->command = MENU_SUBMENU;
|
menu[menu_items-1]->command = MENU_SUBMENU;
|
||||||
@ -180,6 +182,8 @@ int menu_system(char *menufile) {
|
|||||||
} else if (strncasecmp(&buffer[8], "DOSCRIPT", 8) == 0) {
|
} else if (strncasecmp(&buffer[8], "DOSCRIPT", 8) == 0) {
|
||||||
menu[menu_items-1]->command = MENU_DOSCRIPT;
|
menu[menu_items-1]->command = MENU_DOSCRIPT;
|
||||||
}
|
}
|
||||||
|
} else if (strncasecmp(buffer, "SECLEVEL", 8) == 0) {
|
||||||
|
menu[menu_items-1]->seclevel = atoi(&buffer[9]);
|
||||||
} else if (strncasecmp(buffer, "DATA", 4) == 0) {
|
} else if (strncasecmp(buffer, "DATA", 4) == 0) {
|
||||||
menu[menu_items-1]->data = strdup(&buffer[5]);
|
menu[menu_items-1]->data = strdup(&buffer[5]);
|
||||||
} else if (strncasecmp(buffer, "LUASCRIPT", 9) == 0) {
|
} else if (strncasecmp(buffer, "LUASCRIPT", 9) == 0) {
|
||||||
@ -251,14 +255,35 @@ int menu_system(char *menufile) {
|
|||||||
|
|
||||||
for (i=0;i<menu_items;i++) {
|
for (i=0;i<menu_items;i++) {
|
||||||
if (tolower(menu[i]->hotkey) == tolower(c)) {
|
if (tolower(menu[i]->hotkey) == tolower(c)) {
|
||||||
switch(menu[i]->command) {
|
if (menu[i]->seclevel <= gUser->sec_level) {
|
||||||
case MENU_SUBMENU:
|
switch(menu[i]->command) {
|
||||||
doquit = menu_system(menu[i]->data);
|
case MENU_SUBMENU:
|
||||||
if (doquit == 1) {
|
doquit = menu_system(menu[i]->data);
|
||||||
// free menus
|
if (doquit == 1) {
|
||||||
if (do_lua_menu) {
|
// free menus
|
||||||
lua_close(L);
|
if (do_lua_menu) {
|
||||||
}
|
lua_close(L);
|
||||||
|
}
|
||||||
|
if (lua_script != NULL) {
|
||||||
|
free(lua_script);
|
||||||
|
}
|
||||||
|
if (ansi_file != NULL) {
|
||||||
|
free(ansi_file);
|
||||||
|
}
|
||||||
|
for (i=0;i<menu_items;i++) {
|
||||||
|
if (menu[i]->data != NULL) {
|
||||||
|
free(menu[i]->data);
|
||||||
|
}
|
||||||
|
free(menu[i]);
|
||||||
|
}
|
||||||
|
free(menu);
|
||||||
|
return doquit;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MENU_LOGOFF:
|
||||||
|
if (do_lua_menu) {
|
||||||
|
lua_close(L);
|
||||||
|
}
|
||||||
if (lua_script != NULL) {
|
if (lua_script != NULL) {
|
||||||
free(lua_script);
|
free(lua_script);
|
||||||
}
|
}
|
||||||
@ -271,163 +296,144 @@ int menu_system(char *menufile) {
|
|||||||
}
|
}
|
||||||
free(menu[i]);
|
free(menu[i]);
|
||||||
}
|
}
|
||||||
free(menu);
|
free(menu);
|
||||||
return doquit;
|
return 1;
|
||||||
}
|
case MENU_PREVMENU:
|
||||||
break;
|
if (do_lua_menu) {
|
||||||
case MENU_LOGOFF:
|
lua_close(L);
|
||||||
if (do_lua_menu) {
|
}
|
||||||
lua_close(L);
|
if (lua_script != NULL) {
|
||||||
}
|
free(lua_script);
|
||||||
if (lua_script != NULL) {
|
|
||||||
free(lua_script);
|
|
||||||
}
|
|
||||||
if (ansi_file != NULL) {
|
|
||||||
free(ansi_file);
|
|
||||||
}
|
|
||||||
for (i=0;i<menu_items;i++) {
|
|
||||||
if (menu[i]->data != NULL) {
|
|
||||||
free(menu[i]->data);
|
|
||||||
}
|
}
|
||||||
free(menu[i]);
|
if (ansi_file != NULL) {
|
||||||
}
|
free(ansi_file);
|
||||||
free(menu);
|
|
||||||
return 1;
|
|
||||||
case MENU_PREVMENU:
|
|
||||||
if (do_lua_menu) {
|
|
||||||
lua_close(L);
|
|
||||||
}
|
|
||||||
if (lua_script != NULL) {
|
|
||||||
free(lua_script);
|
|
||||||
}
|
|
||||||
if (ansi_file != NULL) {
|
|
||||||
free(ansi_file);
|
|
||||||
}
|
|
||||||
for (i=0;i<menu_items;i++) {
|
|
||||||
if (menu[i]->data != NULL) {
|
|
||||||
free(menu[i]->data);
|
|
||||||
}
|
}
|
||||||
free(menu[i]);
|
for (i=0;i<menu_items;i++) {
|
||||||
}
|
if (menu[i]->data != NULL) {
|
||||||
free(menu);
|
free(menu[i]->data);
|
||||||
return 0;
|
}
|
||||||
case MENU_AUTOMESSAGEWRITE:
|
free(menu[i]);
|
||||||
automessage_write(gUser);
|
}
|
||||||
break;
|
free(menu);
|
||||||
case MENU_TEXTFILES:
|
return 0;
|
||||||
display_textfiles();
|
case MENU_AUTOMESSAGEWRITE:
|
||||||
break;
|
automessage_write(gUser);
|
||||||
case MENU_CHATSYSTEM:
|
break;
|
||||||
chat_system(gUser);
|
case MENU_TEXTFILES:
|
||||||
break;
|
display_textfiles();
|
||||||
case MENU_BBSLIST:
|
break;
|
||||||
bbs_list(gUser);
|
case MENU_CHATSYSTEM:
|
||||||
break;
|
chat_system(gUser);
|
||||||
case MENU_LISTUSERS:
|
break;
|
||||||
list_users(gUser);
|
case MENU_BBSLIST:
|
||||||
break;
|
bbs_list(gUser);
|
||||||
case MENU_BULLETINS:
|
break;
|
||||||
display_bulletins();
|
case MENU_LISTUSERS:
|
||||||
break;
|
list_users(gUser);
|
||||||
case MENU_LAST10:
|
break;
|
||||||
display_last10_callers(gUser);
|
case MENU_BULLETINS:
|
||||||
break;
|
display_bulletins();
|
||||||
case MENU_SETTINGS:
|
break;
|
||||||
settings_menu(gUser);
|
case MENU_LAST10:
|
||||||
break;
|
display_last10_callers(gUser);
|
||||||
case MENU_DOOR:
|
break;
|
||||||
{
|
case MENU_SETTINGS:
|
||||||
for (j=0;j<conf.door_count;j++) {
|
settings_menu(gUser);
|
||||||
if (strcasecmp(menu[i]->data, conf.doors[j]->name) == 0) {
|
break;
|
||||||
dolog("%s launched door %s, on node %d", gUser->loginname, conf.doors[j]->name, mynode);
|
case MENU_DOOR:
|
||||||
rundoor(gUser, conf.doors[j]->command, conf.doors[j]->stdio);
|
{
|
||||||
dolog("%s returned from door %s, on node %d", gUser->loginname, conf.doors[j]->name, mynode);
|
for (j=0;j<conf.door_count;j++) {
|
||||||
break;
|
if (strcasecmp(menu[i]->data, conf.doors[j]->name) == 0) {
|
||||||
}
|
dolog("%s launched door %s, on node %d", gUser->loginname, conf.doors[j]->name, mynode);
|
||||||
}
|
rundoor(gUser, conf.doors[j]->command, conf.doors[j]->stdio);
|
||||||
}
|
dolog("%s returned from door %s, on node %d", gUser->loginname, conf.doors[j]->name, mynode);
|
||||||
break;
|
break;
|
||||||
case MENU_MAILSCAN:
|
}
|
||||||
mail_scan(gUser);
|
}
|
||||||
break;
|
}
|
||||||
case MENU_READMAIL:
|
break;
|
||||||
read_mail(gUser);
|
case MENU_MAILSCAN:
|
||||||
break;
|
mail_scan(gUser);
|
||||||
case MENU_POSTMESSAGE:
|
break;
|
||||||
post_message(gUser);
|
case MENU_READMAIL:
|
||||||
break;
|
read_mail(gUser);
|
||||||
case MENU_CHOOSEMAILCONF:
|
break;
|
||||||
choose_conference(gUser);
|
case MENU_POSTMESSAGE:
|
||||||
break;
|
post_message(gUser);
|
||||||
case MENU_CHOOSEMAILAREA:
|
break;
|
||||||
choose_area(gUser);
|
case MENU_CHOOSEMAILCONF:
|
||||||
break;
|
choose_conference(gUser);
|
||||||
case MENU_SENDEMAIL:
|
break;
|
||||||
send_email(gUser);
|
case MENU_CHOOSEMAILAREA:
|
||||||
break;
|
choose_area(gUser);
|
||||||
case MENU_LISTEMAIL:
|
break;
|
||||||
list_emails(gUser);
|
case MENU_SENDEMAIL:
|
||||||
break;
|
send_email(gUser);
|
||||||
case MENU_NEXTMAILCONF:
|
break;
|
||||||
next_mail_conf(gUser);
|
case MENU_LISTEMAIL:
|
||||||
break;
|
list_emails(gUser);
|
||||||
case MENU_PREVMAILCONF:
|
break;
|
||||||
prev_mail_conf(gUser);
|
case MENU_NEXTMAILCONF:
|
||||||
break;
|
next_mail_conf(gUser);
|
||||||
case MENU_NEXTMAILAREA:
|
break;
|
||||||
next_mail_area(gUser);
|
case MENU_PREVMAILCONF:
|
||||||
break;
|
prev_mail_conf(gUser);
|
||||||
case MENU_PREVMAILAREA:
|
break;
|
||||||
prev_mail_area(gUser);
|
case MENU_NEXTMAILAREA:
|
||||||
break;
|
next_mail_area(gUser);
|
||||||
case MENU_BLUEWAVEDOWN:
|
break;
|
||||||
bwave_create_packet();
|
case MENU_PREVMAILAREA:
|
||||||
break;
|
prev_mail_area(gUser);
|
||||||
case MENU_BLUEWAVEUP:
|
break;
|
||||||
bwave_upload_reply();
|
case MENU_BLUEWAVEDOWN:
|
||||||
break;
|
bwave_create_packet();
|
||||||
case MENU_CHOOSEFILEDIR:
|
break;
|
||||||
choose_directory(gUser);
|
case MENU_BLUEWAVEUP:
|
||||||
break;
|
bwave_upload_reply();
|
||||||
case MENU_CHOOSEFILESUB:
|
break;
|
||||||
choose_subdir(gUser);
|
case MENU_CHOOSEFILEDIR:
|
||||||
break;
|
choose_directory(gUser);
|
||||||
case MENU_LISTFILES:
|
break;
|
||||||
list_files(gUser);
|
case MENU_CHOOSEFILESUB:
|
||||||
break;
|
choose_subdir(gUser);
|
||||||
case MENU_UPLOAD:
|
break;
|
||||||
if (gUser->sec_level >= conf.file_directories[gUser->cur_file_dir]->file_subs[gUser->cur_file_sub]->upload_sec_level) {
|
case MENU_LISTFILES:
|
||||||
upload(gUser);
|
list_files(gUser);
|
||||||
} else {
|
break;
|
||||||
s_printf(get_string(84));
|
case MENU_UPLOAD:
|
||||||
}
|
if (gUser->sec_level >= conf.file_directories[gUser->cur_file_dir]->file_subs[gUser->cur_file_sub]->upload_sec_level) {
|
||||||
break;
|
upload(gUser);
|
||||||
case MENU_DOWNLOAD:
|
} else {
|
||||||
download(gUser);
|
s_printf(get_string(84));
|
||||||
break;
|
}
|
||||||
case MENU_CLEARTAGGEDFILES:
|
break;
|
||||||
clear_tagged_files();
|
case MENU_DOWNLOAD:
|
||||||
break;
|
download(gUser);
|
||||||
case MENU_NEXTFILEDIR:
|
break;
|
||||||
next_file_dir(gUser);
|
case MENU_CLEARTAGGEDFILES:
|
||||||
break;
|
clear_tagged_files();
|
||||||
case MENU_PREVFILEDIR:
|
break;
|
||||||
prev_file_dir(gUser);
|
case MENU_NEXTFILEDIR:
|
||||||
break;
|
next_file_dir(gUser);
|
||||||
case MENU_NEXTFILESUB:
|
break;
|
||||||
next_file_sub(gUser);
|
case MENU_PREVFILEDIR:
|
||||||
break;
|
prev_file_dir(gUser);
|
||||||
case MENU_PREVFILESUB:
|
break;
|
||||||
prev_file_sub(gUser);
|
case MENU_NEXTFILESUB:
|
||||||
break;
|
next_file_sub(gUser);
|
||||||
case MENU_LISTMESSAGES:
|
break;
|
||||||
list_messages(gUser);
|
case MENU_PREVFILESUB:
|
||||||
break;
|
prev_file_sub(gUser);
|
||||||
case MENU_DOSCRIPT:
|
break;
|
||||||
do_lua_script(menu[i]->data);
|
case MENU_LISTMESSAGES:
|
||||||
break;
|
list_messages(gUser);
|
||||||
|
break;
|
||||||
|
case MENU_DOSCRIPT:
|
||||||
|
do_lua_script(menu[i]->data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user