Added calllist option to nlookup, fixed bunch of PVS-Studio lint warnings
This commit is contained in:
@@ -150,14 +150,14 @@ static int nodelist_makeindex(s_nodelist *nlp, s_faddr addr)
|
||||
modepoint = false;
|
||||
break;
|
||||
case KEYWORD_REGION:
|
||||
case KEYWORD_HOST:
|
||||
case KEYWORD_HOST: //-V1037
|
||||
bni.net = value;
|
||||
bni.node = 0;
|
||||
bni.point = 0;
|
||||
bni.hub = 0;
|
||||
modepoint = false;
|
||||
break;
|
||||
case KEYWORD_HUB:
|
||||
case KEYWORD_HUB: //-V1037
|
||||
bni.node = value;
|
||||
bni.point = 0;
|
||||
bni.hub = value;
|
||||
|
||||
+145
-7
@@ -34,6 +34,7 @@ static void usage(void)
|
||||
" -r show nodelist string\n"
|
||||
" -m show email address\n"
|
||||
" -o show overrides\n"
|
||||
" -t show calltable\n"
|
||||
" -h show this help message\n"
|
||||
" -C config use config file\n"
|
||||
"\n"
|
||||
@@ -44,7 +45,7 @@ void print_nodemail(const s_node *node)
|
||||
{
|
||||
char abuf[BF_MAXADDRSTR+1];
|
||||
|
||||
if( node->sysop && *node->sysop && strcmp(node->sysop, "<none>") )
|
||||
if( *node->sysop && strcmp(node->sysop, "<none>") )
|
||||
{
|
||||
char username[BNI_MAXSYSOP+1];
|
||||
|
||||
@@ -84,7 +85,7 @@ void print_nodeinfo(const s_node *node)
|
||||
timevec_check(&node->worktime, now) ? "false" : "true");
|
||||
}
|
||||
|
||||
if( (node->keyword != KEYWORD_POINT) && node->sysop && *node->sysop && strcmp(node->sysop, "<none>") )
|
||||
if( (node->keyword != KEYWORD_POINT) && *node->sysop && strcmp(node->sysop, "<none>") )
|
||||
{
|
||||
char username[BNI_MAXSYSOP+1];
|
||||
|
||||
@@ -138,16 +139,141 @@ void print_overrides(const s_override *override_info)
|
||||
p = override_info->hidden;
|
||||
if (p) {
|
||||
printf("Hidden lines:\n");
|
||||
|
||||
while( p )
|
||||
{
|
||||
printf(" Hidden IpAddr : %s\n", p->sIpaddr);
|
||||
printf(" Hidden Phone : %s\n", p->sPhone);
|
||||
printf(" Hidden Flags : %s\n", p->sFlags);
|
||||
printf(" %5d: ",++lin);
|
||||
if (p->sIpaddr) printf("IpAddr: %s, ", p->sIpaddr);
|
||||
if (p->sPhone) printf("Phone: %s", p->sPhone);
|
||||
if (p->sFlags) printf("Flags: %s", p->sFlags);
|
||||
printf("\n");
|
||||
p = p->hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool check_phone(const char *str)
|
||||
{
|
||||
if( !str || !str[0] )
|
||||
return FALSE;
|
||||
|
||||
if( str[0] == '-' && str[1] == '\0' )
|
||||
return FALSE;
|
||||
|
||||
if( string_casestr(str, "unpublished") )
|
||||
return FALSE;
|
||||
|
||||
if( string_casestr(str, "unknown") )
|
||||
return FALSE;
|
||||
|
||||
if( string_casestr(str, "none") )
|
||||
return FALSE;
|
||||
|
||||
if( string_casestr(str, "00-00-000000") )
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void print_calltable(s_faddr addr){
|
||||
s_node nnode;
|
||||
s_override *ovr, *tmpovr;
|
||||
char *tmphost, *tmpphone;
|
||||
int rc,ln = 0;
|
||||
|
||||
|
||||
if( nodelist_lookup(&nnode, addr) == 0 )
|
||||
{
|
||||
// we got nodelist string
|
||||
ovr = conf_override(cf_override, addr);
|
||||
// be aware - ovr may not be, but second INA may
|
||||
if (ovr) {
|
||||
ovr->addr = addr;
|
||||
if (ovr->sIpaddr) strcpy (nnode.host, ovr->sIpaddr);
|
||||
if (ovr->sPhone) strcpy (nnode.phone, ovr->sPhone);
|
||||
if (ovr->sFlags) strcpy (nnode.flags, ovr->sFlags);
|
||||
} else {
|
||||
ovr = xmalloc(sizeof(s_override));
|
||||
memset(ovr,'\0',sizeof(s_override));
|
||||
ovr->addr=addr;
|
||||
ovr->hidden=NULL;
|
||||
ovr->sIpaddr=NULL;
|
||||
}
|
||||
rc = nodelist_parsehiddenina(&nnode, ovr);
|
||||
|
||||
} else {
|
||||
// we have no nodelist string - only overrides
|
||||
ovr = conf_override(cf_override, addr);
|
||||
if (ovr) {
|
||||
ovr->addr = addr;
|
||||
if (ovr->sIpaddr) strcpy (nnode.host, ovr->sIpaddr);
|
||||
if (ovr->sPhone) strcpy (nnode.phone, ovr->sPhone);
|
||||
if (ovr->sFlags) strcpy (nnode.flags, ovr->sFlags);
|
||||
}
|
||||
}
|
||||
// Let's print this table
|
||||
// begin with HOST itself
|
||||
ln = 0;
|
||||
if (nnode.host) {
|
||||
tmphost = nnode.host;
|
||||
}
|
||||
if (!nodelist_checkflag(nnode.flags, "IBN")) {
|
||||
ln +=1;
|
||||
printf ("%5d. %s:binkp\n", ln, tmphost);
|
||||
}
|
||||
if (!nodelist_checkflag(nnode.flags, "IFC")) {
|
||||
ln +=1;
|
||||
printf ("%5d. %s:ifcico\n", ln, tmphost);
|
||||
}
|
||||
if (!nodelist_checkflag(nnode.flags, "ITN")) {
|
||||
ln +=1;
|
||||
printf ("%5d. %s:telnet\n", ln, tmphost);
|
||||
}
|
||||
if (ovr->hidden) {
|
||||
tmpovr = ovr;
|
||||
while (ovr->hidden != NULL) {
|
||||
ovr = ovr->hidden;
|
||||
if (ovr->sIpaddr) {
|
||||
tmphost = ovr->sIpaddr;
|
||||
if (!nodelist_checkflag(nnode.flags, "IBN")) {
|
||||
ln +=1;
|
||||
printf ("%5d. %s:binkp\n", ln, tmphost);
|
||||
}
|
||||
if (!nodelist_checkflag(nnode.flags, "IFC")) {
|
||||
ln +=1;
|
||||
printf ("%5d. %s:ifcico\n", ln, tmphost);
|
||||
}
|
||||
if (!nodelist_checkflag(nnode.flags, "ITN")) {
|
||||
ln +=1;
|
||||
printf ("%5d. %s:telnet\n", ln, tmphost);
|
||||
}
|
||||
}
|
||||
}
|
||||
ovr = tmpovr;
|
||||
}
|
||||
|
||||
// Calltable for pstn
|
||||
if (nnode.phone && check_phone(nnode.phone) ) {
|
||||
tmpphone = nnode.phone;
|
||||
ln +=1;
|
||||
printf ("%5d. PSTN %s\n", ln, tmpphone);
|
||||
if (ovr->hidden) {
|
||||
tmpovr = ovr;
|
||||
while (ovr->hidden != NULL) {
|
||||
ovr = ovr->hidden;
|
||||
if (ovr->sPhone && check_phone(ovr->sPhone)) {
|
||||
tmpphone = ovr->sPhone;
|
||||
ln +=1;
|
||||
printf ("%5d. PSTN %s\n", ln, tmpphone);
|
||||
}
|
||||
}
|
||||
ovr = tmpovr;
|
||||
}
|
||||
}
|
||||
// free ovr elements
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
s_node node;
|
||||
@@ -159,13 +285,14 @@ int main(int argc, char *argv[])
|
||||
bool rawstring = FALSE;
|
||||
bool emailaddr = FALSE;
|
||||
bool overrides = FALSE;
|
||||
bool calltable = FALSE;
|
||||
|
||||
/* Initialise random number generation */
|
||||
(void)srand((unsigned)time(0));
|
||||
/* Initialise current locale */
|
||||
(void)setlocale(LC_ALL, "");
|
||||
|
||||
while( (ch=getopt(argc, argv, "hdrmoC:")) != (char)-1 )
|
||||
while( (ch=getopt(argc, argv, "hdrtmoC:")) != (char)-1 )
|
||||
{
|
||||
switch( ch ) {
|
||||
case 'h':
|
||||
@@ -177,6 +304,9 @@ int main(int argc, char *argv[])
|
||||
case 'm':
|
||||
emailaddr = TRUE;
|
||||
break;
|
||||
case 't':
|
||||
calltable = TRUE;
|
||||
break;
|
||||
case 'o':
|
||||
overrides = TRUE;
|
||||
break;
|
||||
@@ -234,12 +364,20 @@ int main(int argc, char *argv[])
|
||||
if (overrides && ovr) {
|
||||
print_overrides(ovr);
|
||||
}
|
||||
if (calltable) {
|
||||
printf ("----------- Calltable ------------\n");
|
||||
print_calltable(addr);
|
||||
}
|
||||
} else {
|
||||
if (overrides) {
|
||||
ovr = conf_override(cf_override, addr);
|
||||
if (ovr) {
|
||||
printf ("-- No nodelist info, only overrides --");
|
||||
printf ("-------- No nodelist info --------");
|
||||
print_overrides(ovr);
|
||||
if (calltable) {
|
||||
printf ("----- Calltable-on-overrides -----\n");
|
||||
print_calltable(addr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user