#include <errno.h>
#include "ap-utils.h"
#include "config.h"
-#include "ap-curses.h"
#if defined (__GLIBC__)
#include <libgen.h>
#endif
-
-#define SEARCH_HEADER _(" # Type IP Name")
-
+#define SEARCH_COMMUNITY _("Community name: ")
+#define SEARCH_HEADER _(" NUM IP ADDRESS MIB TYPE NAME")
#define MAX_APS LAST_ROW-7
extern int atmel410_filter;
+extern char *community;
char q_pressed = 0;
int i, f_ifctr;
extern WINDOW *main_sub;
extern char *ap_types[];
unsigned char message[1024], *start;
-/*
+ extern int atmel410_filter; /* to check is this function called from ap-gl utility */
+
+
char Wireless[3][12] = {
{0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x01, 0x00},
{0x2B, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00},
{0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x01, 0x01, 0x00}
};
-*/
+
/*
- * operAccessPointName OIDs used to detect AP type [in order of appearance
- * according to the 'for' loop below: ATMEL410, NWN, ATMEL12350]
+ * operAccessPointName OIDs used to detect AP MIB type [in order
+ * of appearance in the 'for' loop below: ATMEL410, NWN, ATMEL12350]
*/
- char operAccessPointName[3][12] = {
+/* char operAccessPointName[3][12] = {
{0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0A, 0x00},
{0x2B, 0x06, 0x01, 0x02, 0x01, 0x01, 0x05, 0x00},
{0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0A, 0x00}
};
-
+*/
int scd_ap_type, last_searched_type=ATMEL12350;
int c, s2, errno, len, client_len = SIZE;
struct in_addr to_addr_reserv;
for (scd_ap_type = ATMEL410; scd_ap_type <= last_searched_type; scd_ap_type++) {
clear_main_new(LAST_ROW - 1, LAST_ROW);
- sprintf(message, _("Scanning for AP type: %s"), ap_types[scd_ap_type]);
+ sprintf(message, _("Scanning for AP with MIB type: %s"),
+ ap_types[scd_ap_type]);
mvwaddstr(main_sub, LAST_ROW - 1, 1, message);
wrefresh(main_sub);
- varbinds[0].oid = operAccessPointName[scd_ap_type];
- varbinds[0].len_oid =
- (scd_ap_type == ATMEL410 || scd_ap_type == ATMEL12350) ?
- sizeof(operAccessPointName[scd_ap_type]) : 8;
+/* varbinds[0].oid = operAccessPointName[scd_ap_type];*/
+ varbinds[0].oid = Wireless[scd_ap_type];
+ varbinds[0].len_oid = (scd_ap_type == NWN ?
+/* 8 : sizeof(operAccessPointName[scd_ap_type]));*/
+ 8 : sizeof(Wireless[scd_ap_type]));
varbinds[0].len_val = 0;
varbinds[0].type = NULL_VALUE;
len = ber(message, varbinds, 1, GET);
fapsa[i].ip = from->sin_addr;
fapsa[i].type = scd_ap_type;
- sprintf(message, "%2i %11s %15s", i, ap_types[fapsa[i].type],
- inet_ntoa(fapsa[i].ip));
-
+ for (len = 0; len < varbinds[0].len_val && start[len]; len++);
+ start[len + 1] = '\0';
+ if (len > 25) {
+ /* Truncate (limited screen size) and screen-width independent! */
+ start[COLS-53-atmel410_filter] = '>';
+ start[COLS-52-atmel410_filter] = '\0';
+ }
+ sprintf(message, " %3i %-15s %-10s %s", i,
+ inet_ntoa(fapsa[i].ip), ap_types[fapsa[i].type], start);
i++;
mvwaddstr(main_sub, i, 0, message);
-
- for (len = 0; len < 32 && start[len]; len++);
- start[len + 1] = '\0';
- mvwaddstr(main_sub, i, 30 + ((32 - len) / 2), start);
wrefresh(main_sub);
/* Bail out if the number of found devices exceeds sane limit. */
struct ifconf ifc;
struct ifreq *ifr;
char *ifbuf_ptr = NULL, *ifrec_ptr;
+ char *old_community;
+ char buf[16];
+
+ print_help(_("Please enter SNMP community name that will be used for AP "
+ "detection."));
+ mvwaddstr(main_sub, 0, 2, SEARCH_COMMUNITY);
+ wrefresh(main_sub);
+ get_pass(buf, 0, 2 + strlen(SEARCH_COMMUNITY), sizeof(buf));
+ old_community = community;
+ community = malloc(strlen(buf) + 1);
+ strncpy(community, buf, strlen(buf) + 1);
+ print_help("");
+ clear_main(0);
- print_title(_("Access Points Search"));
+ print_top(NULL, _("Access Points Search"));
mvwaddstr(main_sub, 0, 0, SEARCH_HEADER);
wrefresh(main_sub);
case '7':
case '8':
case '9':
- if (ac-'0' > (i - 1))
+ if (ac - '0' > (i - 1))
continue;
- print_title("");
+
+ print_top(NULL, NULL);
clear_main(0);
- connect_options(fapsa[ac-'0'].ip.s_addr,
- fapsa[ac-'0'].type + 1);
- free(fapsa);
+ free(old_community);
+ connect_options(fapsa[ac - '0'].ip.s_addr,
+ fapsa[ac - '0'].type + 1);
+ free(fapsa);
return;
}
}
if (fapsa)
free(fapsa);
+ free(community);
+ community = old_community;
+
print_help("");
- print_title("");
+ print_top(NULL, NULL);
clear_main(0);
}