X-Git-Url: http://ftp.carnet.hr/pub/carnet-debian/scm?a=blobdiff_plain;f=src%2Fos_auth%2Fmain-client.c;h=6397ea3f13c066aca24171f59cc89e869a39c84b;hb=789cbc8e52da68eba3517b920ef22e000cf3c9fd;hp=4312521d8a8a2d32c72d4af9e7de45e8067e7036;hpb=ef70704f0b31b59bb719b884d6a99cb9e3e2044a;p=ossec-hids.git diff --git a/src/os_auth/main-client.c b/src/os_auth/main-client.c index 4312521..6397ea3 100755 --- a/src/os_auth/main-client.c +++ b/src/os_auth/main-client.c @@ -59,16 +59,20 @@ void report_help() int main(int argc, char **argv) { - int c, test_config = 0; + int c; + // TODO: implement or delete + int test_config __attribute__((unused)) = 0; #ifndef WIN32 int gid = 0; #endif int sock = 0, port = 1515, ret = 0; - char *dir = DEFAULTDIR; + // TODO: implement or delete + char *dir __attribute__((unused)) = DEFAULTDIR; char *user = USER; char *group = GROUPGLOBAL; - char *cfg = DEFAULTCPATH; + // TODO: implement or delete + char *cfg __attribute__((unused)) = DEFAULTCPATH; char *manager = NULL; char *agentname = NULL; char lhostname[512 + 1]; @@ -157,7 +161,7 @@ int main(int argc, char **argv) - /* Privilege separation */ + /* Privilege separation */ if(Privsep_SetGroup(gid) < 0) ErrorExit(SETGID_ERROR,ARGV0,group); @@ -191,7 +195,7 @@ int main(int argc, char **argv) - /* Starting SSL */ + /* Starting SSL */ ctx = os_ssl_keys(1, NULL); if(!ctx) { @@ -206,6 +210,41 @@ int main(int argc, char **argv) } + /* Check to see if manager is an IP */ + int is_ip = 1; + struct sockaddr_in iptest; + memset(&iptest, 0, sizeof(iptest)); + + if(inet_pton(AF_INET, manager, &iptest.sin_addr) != 1) + is_ip = 0; /* This is not an IPv4 address */ + + /* Not IPv4, IPv6 maybe? */ + if(is_ip == 0) + { + struct sockaddr_in6 iptest6; + memset(&iptest6, 0, sizeof(iptest6)); + if(inet_pton(AF_INET6, manager, &iptest6.sin6_addr) != 1) + is_ip = 0; + else + is_ip = 1; /* This is an IPv6 address */ + } + + + /* If it isn't an ip, try to resolve the IP */ + if(is_ip == 0) + { + char *ipaddress; + ipaddress = OS_GetHost(manager, 3); + if(ipaddress != NULL) + strncpy(manager, ipaddress, 16); + else + { + printf("Could not resolve hostname: %s\n", manager); + return(1); + } + } + + /* Connecting via TCP */ sock = OS_ConnectTCP(port, manager, 0); if(sock <= 0)