|
|
@ -6,6 +6,8 @@ |
|
|
|
#include <QStringList> |
|
|
|
#include <QHash> |
|
|
|
|
|
|
|
#define COLOR_DARK_GRAY 9 |
|
|
|
|
|
|
|
void red(WINDOW *window) { |
|
|
|
wattron(window, COLOR_PAIR(1)); |
|
|
|
} |
|
|
@ -22,6 +24,39 @@ void magenta(WINDOW *window) { |
|
|
|
wattron(window, COLOR_PAIR(6)); |
|
|
|
} |
|
|
|
|
|
|
|
void quit(WINDOW *window) { |
|
|
|
delwin(window); |
|
|
|
|
|
|
|
endwin(); |
|
|
|
} |
|
|
|
|
|
|
|
void msgbox(const char *text) { |
|
|
|
//WINDOW *msgbox = newwin(LINES / 2, COLS / 2, LINES / 4, COLS / 4);
|
|
|
|
WINDOW *msgbox = newwin(8, COLS / 2, LINES / 4, COLS / 4); |
|
|
|
wbkgd(msgbox, COLOR_PAIR(8)); |
|
|
|
box(msgbox, 0, 0); |
|
|
|
mvwaddstr(msgbox, 1, 2, text); |
|
|
|
move(3, 5); |
|
|
|
wrefresh(msgbox); |
|
|
|
|
|
|
|
WINDOW *ok = derwin(msgbox, 3, 6, msgbox->_maxy / 2 + 1, msgbox->_maxx / 2); |
|
|
|
box(ok, 0, 0); |
|
|
|
wattron(ok, COLOR_PAIR(5)); |
|
|
|
mvwaddstr(ok, 1, 2, "OK"); |
|
|
|
touchwin(msgbox); |
|
|
|
wrefresh(ok); |
|
|
|
|
|
|
|
check_return: |
|
|
|
char c = getch(); |
|
|
|
|
|
|
|
if(c != '\r') { |
|
|
|
goto check_return; |
|
|
|
} |
|
|
|
|
|
|
|
delwin(ok); |
|
|
|
delwin(msgbox); |
|
|
|
} |
|
|
|
|
|
|
|
void interfaceMenu(WINDOW *window); |
|
|
|
void interfaceSelect(WINDOW *window, QString interface); |
|
|
|
|
|
|
@ -29,16 +64,14 @@ void mainmenu(WINDOW *window) { |
|
|
|
wclear(window); |
|
|
|
|
|
|
|
cyan(window); |
|
|
|
box(window, 0 , 0); |
|
|
|
box(window, 0, 0); |
|
|
|
|
|
|
|
red(window); |
|
|
|
mvwaddstr(window, 1, 2, "System Configuration:"); |
|
|
|
|
|
|
|
green(window); |
|
|
|
mvwaddstr(window, 3, 2, "1. Interfaces"); |
|
|
|
|
|
|
|
mvwaddstr(window, 4, 2, "2. ARP"); |
|
|
|
|
|
|
|
mvwaddstr(window, 5, 2, "3. Wireless"); |
|
|
|
|
|
|
|
cyan(window); |
|
|
@ -64,7 +97,7 @@ void interfaceMenu(WINDOW *window) { |
|
|
|
wclear(window); |
|
|
|
|
|
|
|
cyan(window); |
|
|
|
box(window, 0 , 0); |
|
|
|
box(window, 0, 0); |
|
|
|
|
|
|
|
red(window); |
|
|
|
mvwaddstr(window, 1, 2, "Interfaces:"); |
|
|
@ -120,7 +153,7 @@ void interfaceSelect(WINDOW *window, QString interface) { |
|
|
|
wclear(window); |
|
|
|
|
|
|
|
cyan(window); |
|
|
|
box(window, 0 , 0); |
|
|
|
box(window, 0, 0); |
|
|
|
|
|
|
|
red(window); |
|
|
|
QString title = QString("IP Addresses on: ") + interface; |
|
|
@ -148,17 +181,72 @@ void interfaceSelect(WINDOW *window, QString interface) { |
|
|
|
++count; |
|
|
|
} |
|
|
|
|
|
|
|
if(count == 1) { |
|
|
|
mvwaddstr(window, y, 2, "No IP addresses found."); |
|
|
|
++y; |
|
|
|
} |
|
|
|
|
|
|
|
cyan(window); |
|
|
|
mvwaddstr(window, y + 1, 2, "0. Back to interfaces"); |
|
|
|
|
|
|
|
magenta(window); |
|
|
|
mvwaddstr(window, y + 3, 2, "Enter selection: "); |
|
|
|
mvwaddstr(window, y + 3, 2, "a. Add IP address"); |
|
|
|
mvwaddstr(window, y + 4, 2, "d. Delete IP address"); |
|
|
|
mvwaddstr(window, y + 5, 2, "q. Quit"); |
|
|
|
|
|
|
|
mvwaddstr(window, y + 7, 2, "Enter selection: "); |
|
|
|
wrefresh(window); |
|
|
|
|
|
|
|
char c = getch(); |
|
|
|
|
|
|
|
if(c < '0' || c > '3') { |
|
|
|
interfaceMenu(window); |
|
|
|
if(c < '0' || c > (count + '0' - 1)) { |
|
|
|
if(c == 'q') { |
|
|
|
quit(window); |
|
|
|
exit(0); |
|
|
|
}else if(c == 'd') { |
|
|
|
wdeleteln(window); |
|
|
|
mvwaddstr(window, y + 7, 2, "Enter number of IP address to delete: "); |
|
|
|
wrefresh(window); |
|
|
|
char ipToDelete = getch(); |
|
|
|
|
|
|
|
if(ipToDelete < '1' || ipToDelete > '9') { |
|
|
|
interfaceSelect(window, interface); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if(!(ipList.count() >= ipToDelete - '0')) { |
|
|
|
interfaceSelect(window, interface); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
wdeleteln(window); |
|
|
|
QString confirm = "Are you sure you want to delete "; |
|
|
|
|
|
|
|
confirm += ipList[ipToDelete - '0' - 1]; |
|
|
|
confirm += " [y/n]? "; |
|
|
|
|
|
|
|
QByteArray arr = confirm.toLatin1(); |
|
|
|
const char *confirmStr = arr.constData(); |
|
|
|
|
|
|
|
mvwaddstr(window, y + 7, 2, confirmStr); |
|
|
|
wrefresh(window); |
|
|
|
|
|
|
|
c = getch(); |
|
|
|
|
|
|
|
if(c == 'y') { |
|
|
|
if(obj.deleteAddress(ipList[ipToDelete - '0' - 1])) { |
|
|
|
msgbox("Could not delete IP address. Not enough permissions?"); |
|
|
|
}else{ |
|
|
|
msgbox("IP address deleted successfully."); |
|
|
|
} |
|
|
|
|
|
|
|
interfaceSelect(window, interface); |
|
|
|
}else{ |
|
|
|
interfaceSelect(window, interface); |
|
|
|
} |
|
|
|
}else{ |
|
|
|
interfaceSelect(window, interface); |
|
|
|
} |
|
|
|
}else{ |
|
|
|
if(c == '0') { |
|
|
|
interfaceMenu(window); |
|
|
@ -185,6 +273,8 @@ int main(int argc, char *argv[]) { |
|
|
|
* pair as for the foreground color, though of course that is not |
|
|
|
* necessary: |
|
|
|
*/ |
|
|
|
//init_color(COLOR_DARK_GRAY, 256, 256, 256);
|
|
|
|
|
|
|
|
init_pair(1, COLOR_RED, COLOR_BLACK); |
|
|
|
init_pair(2, COLOR_GREEN, COLOR_BLACK); |
|
|
|
init_pair(3, COLOR_YELLOW, COLOR_BLACK); |
|
|
@ -192,6 +282,8 @@ int main(int argc, char *argv[]) { |
|
|
|
init_pair(5, COLOR_CYAN, COLOR_BLACK); |
|
|
|
init_pair(6, COLOR_MAGENTA, COLOR_BLACK); |
|
|
|
init_pair(7, COLOR_WHITE, COLOR_BLACK); |
|
|
|
init_pair(8, COLOR_WHITE, COLOR_BLUE); |
|
|
|
//init_pair(9, COLOR_WHITE, COLOR_GREEN);
|
|
|
|
}else{ |
|
|
|
printf("Your terminal does not support colors\n"); |
|
|
|
return 1; |
|
|
@ -203,10 +295,7 @@ int main(int argc, char *argv[]) { |
|
|
|
|
|
|
|
mainmenu(window); |
|
|
|
|
|
|
|
delwin(window); |
|
|
|
|
|
|
|
endwin(); |
|
|
|
|
|
|
|
quit(window); |
|
|
|
/*int ret = app.exec();
|
|
|
|
|
|
|
|
return ret;*/ |
|
|
|