diff --git a/exec/lbshell.js b/exec/lbshell.js
index 5caa486338d3e7dda7022f48a615eb4c1f5423a9..362351faf33b1dcda13d86c60eb5d8225b82c090 100644
--- a/exec/lbshell.js
+++ b/exec/lbshell.js
@@ -31,7 +31,7 @@ mainbar.direction=1;
 mainbar.xpos=2;
 mainbar.ypos=1;
 mainbar.hotkeys=KEY_DOWN+";";
-mainbar.add("|File","F");
+mainbar.add("|File","F",undefined,undefined,undefined,user.compare_ars("REST T"));
 	var filemenu=new Lightbar;
 	filemenu.xpos=1;
 	filemenu.ypos=2;
@@ -40,7 +40,7 @@ mainbar.add("|File","F");
 	filemenu.hotkeys=KEY_LEFT+KEY_RIGHT+"\b\x7f\x1b";
 	filemenu.add("\xda\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xbf",undefined,undefined,"","");
 	filemenu.add("|List files","L",19);
-	filemenu.add("|Download","D",19);
+	filemenu.add("|Download","D",19,,undefined,undefined,user.compare_ars("REST D"));
 	filemenu.add("File |Info       -->","I",19);
 		var fileinfo=new Lightbar;
 		fileinfo.xpos=22;
@@ -59,9 +59,9 @@ mainbar.add("|File","F");
 	filemenu.add("Search |Filenames","F",19);
 	filemenu.add("|Change Directory","C",19);
 	filemenu.add("|New File Scan","N",19);
-	filemenu.add("|Batch Transfer Menu","B",19);
+	filemenu.add("|Batch Transfer Menu","B",19,undefined,undefined,user.compare_ars("REST U AND REST D"));
 	filemenu.add("|Remove/Edit File","R",19);
-	filemenu.add("|Upload File","U",19);
+	filemenu.add("|Upload File","U",19,undefined,undefined,user.compare_ars("REST U"));
 	filemenu.add("|View File","V",19);
 	filemenu.add("\xc0\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xd9",undefined,undefined,"","");
 mainbar.add("|Settings","S");
@@ -72,7 +72,7 @@ mainbar.add("|Settings","S");
 	settingsmenu.rpadding="\xb3";
 	settingsmenu.hotkeys=KEY_LEFT+KEY_RIGHT+"\b\x7f\x1b";
 	settingsmenu.add("\xda\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xbf",undefined,undefined,"","");
-	settingsmenu.add("|User Config","U",24);
+	settingsmenu.add("|User Config","U",24,undefined,undefined,user.compare_ars("REST G"));
 	settingsmenu.add("|Message Scan Config","M",24);
 	settingsmenu.add("To |You Scan Config","Y",24);
 	settingsmenu.add("Message |Pointers","P",24);
@@ -101,11 +101,11 @@ mainbar.add("|Email","E");
 	emailmenu.rpadding="\xb3";
 	emailmenu.hotkeys=KEY_LEFT+KEY_RIGHT+"\b\x7f\x1b";
 	emailmenu.add("\xda\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xbf",undefined,undefined,"","");
-	emailmenu.add("|Send Mail","S",24);
-	emailmenu.add("Send |NetMail","N",24);
-	emailmenu.add("Send |Feedback to Sysop","F",24);
+	emailmenu.add("|Send Mail","S",24,undefined,undefined,user.compare_ars("REST E"));
+	emailmenu.add("Send |NetMail","N",24,undefined,undefined,user.compare_ars("REST M OR REST E"));
+	emailmenu.add("Send |Feedback to Sysop","F",24,undefined,undefined,user.compare_ars("REST S"));
 	emailmenu.add("|Read Mail Sent To You","R",24);
-	emailmenu.add("Read Mail |You Have Sent","Y",24);
+	emailmenu.add("Read Mail |You Have Sent","Y",24,undefined,undefined,user.compare_ars("REST K"));
 	emailmenu.add("|Upload File To a Mailbox","U",24);
 	emailmenu.add("\xc0\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xd9",undefined,undefined,"","");
 mainbar.add("|Messages","M");
@@ -121,13 +121,15 @@ mainbar.add("|Messages","M");
 	messagemenu.add("|Continuous New Scan","C",24);
 	messagemenu.add("|Browse New Scan","B",24);
 	messagemenu.add("|QWK Packet Transfer","Q",24);
-	messagemenu.add("|Post a Message","P",24);
+	messagemenu.add("|Post a Message","P",24,undefined,undefined,user.compare_ars("REST P"));
+	if(user.compare_ars("REST M") && (mgs_area.grp_list[bbs.curgrp].sub_list[bbs.crusub] & (SUB_QNET|SUB_PNET|SUB_FIDO)))
+		messagemenu.items[6].disabed=true;
 	messagemenu.add("Read/Post |Auto-Message","A",24);
 	messagemenu.add("|Find Text in Messages","F",24);
 	messagemenu.add("|Scan For Messages To You","S",24);
 	messagemenu.add("|Jump To New Sub-Board","J",24);
 	messagemenu.add("\xc0\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xd9",undefined,undefined,"","");
-mainbar.add("|Chat","C");
+mainbar.add("|Chat","C",undefined,undefined,undefined,user.compare_ars("REST C"));
 	var chatmenu=new Lightbar;
 	chatmenu.xpos=34;
 	chatmenu.ypos=2;
@@ -144,7 +146,7 @@ mainbar.add("|Chat","C");
 	chatmenu.add("|InterBBS Instant Messages","I",39);
 	chatmenu.add("|Toggle Split Screen Private Chat","S",39);
 	chatmenu.add("\xc0\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xd9",undefined,undefined,"","");
-mainbar.add("E|xternals","x");
+mainbar.add("E|xternals","x",undefined,undefined,undefined,user.compare_ars("REST X"));
 	// Generate menus of available xtrn sections.
 	var xtrnsec=new Lightbar;
 	var bars40="\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4";
@@ -795,6 +797,8 @@ while(1) {
 		case 'M':
 			done=0;
 			while(!done) {
+				if(user.compare_ars("REST M") && (mgs_area.grp_list[bbs.curgrp].sub_list[bbs.crusub] & (SUB_QNET|SUB_PNET|SUB_FIDO)))
+					messagemenu.items[6].disabed=true;
 				switch(messagemenu.getval()) {
 					case 'N':
 						clear_screen();