properly handle case when seed host is given as short host name

This commit is contained in:
Vadim Kurland
2008-07-02 23:15:56 +00:00
parent 579704a694
commit e41f94214b
+52 -29
View File
@@ -806,29 +806,36 @@ void DiscoveryDruid::startDNSScan()
InetAddr DiscoveryDruid::getSeedHostAddress() InetAddr DiscoveryDruid::getSeedHostAddress()
{ {
if (fwbdebug)
qDebug(
QString("DiscoveryDruid::getSeedHostAddress(): Seed host name %1").
arg(m_dialog->seedhostname->text()).toLatin1().constData());
libfwbuilder::InetAddr seed_host_addr; libfwbuilder::InetAddr seed_host_addr;
if (!m_dialog->seedhostname->text().isEmpty()) if (!m_dialog->seedhostname->text().isEmpty())
{ {
try
{
QString a = getAddrByName( m_dialog->seedhostname->text() );
if (fwbdebug)
qDebug(
QString("DiscoveryDruid::getSeedHostAddress() address: %1").
arg(a).toLatin1().constData());
return InetAddr( a.toLatin1().constData() );
} catch(const FWException &ex)
{
}
try try
{ {
seed_host_addr=InetAddr(m_dialog->seedhostname->text().toLatin1().constData()); seed_host_addr = InetAddr(
m_dialog->seedhostname->text().toLatin1().constData());
return seed_host_addr; return seed_host_addr;
} catch(const FWException &ex) } catch(const FWException &ex)
{ {
} }
try
{
QString a = getAddrByName( m_dialog->seedhostname->text() );
return InetAddr( a.toLatin1().constData() );
#if 0
list<InetAddr> v=DNS::getHostByName( m_dialog->seedhostname->text().toLatin1().constData() );
seed_host_addr = v.front();
return seed_host_addr;
#endif
} catch(const FWException &ex)
{
}
} }
return seed_host_addr; return seed_host_addr;
} }
@@ -1739,19 +1746,21 @@ void DiscoveryDruid::updateLog()
void DiscoveryDruid::changedSeedHost() void DiscoveryDruid::changedSeedHost()
{ {
m_dialog->seedhosterror_message->setText(" "); m_dialog->seedhosterror_message->setText(" ");
userIsTyping=true; userIsTyping = true;
errMessage=m_dialog->seedhosterror_message; errMessage = m_dialog->seedhosterror_message;
HostName=m_dialog->seedhostname->text(); HostName = m_dialog->seedhostname->text();
if (HostName.isEmpty()) if (HostName.isEmpty())
{ {
timer->stop(); timer->stop();
m_dialog->DNSprogress->hide(); m_dialog->DNSprogress->hide();
QPalette palette = m_dialog->seedhosterror_message->palette(); QPalette palette = m_dialog->seedhosterror_message->palette();
palette.setColor(m_dialog->seedhosterror_message->foregroundRole(), Qt::darkRed); palette.setColor(
m_dialog->seedhosterror_message->foregroundRole(), Qt::darkRed);
m_dialog->seedhosterror_message->setPalette(palette); m_dialog->seedhosterror_message->setPalette(palette);
m_dialog->seedhosterror_message->setText("Enter a valid host name or address."); m_dialog->seedhosterror_message->setText(
"Enter a valid host name or address.");
isSeedHostOK=false; isSeedHostOK=false;
} }
else else
@@ -1760,26 +1769,36 @@ void DiscoveryDruid::changedSeedHost()
{ // seems to be an IP Address { // seems to be an IP Address
m_dialog->DNSprogress->hide(); m_dialog->DNSprogress->hide();
timer->stop(); timer->stop();
QRegExp r=QRegExp("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$",Qt::CaseInsensitive); //non wildcard QRegExp r = QRegExp(
"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$",
Qt::CaseInsensitive); //non wildcard
if (r.exactMatch(HostName)) if (r.exactMatch(HostName))
{ {
try try
{ {
InetAddr(HostName.toLatin1().constData()); InetAddr(HostName.toLatin1().constData());
QPalette palette = m_dialog->seedhosterror_message->palette(); QPalette palette =
palette.setColor(m_dialog->seedhosterror_message->foregroundRole(), Qt::darkGreen); m_dialog->seedhosterror_message->palette();
palette.setColor(
m_dialog->seedhosterror_message->foregroundRole(),
Qt::darkGreen);
m_dialog->seedhosterror_message->setPalette(palette); m_dialog->seedhosterror_message->setPalette(palette);
m_dialog->seedhosterror_message->setText("Address verified"); m_dialog->seedhosterror_message->setText(
"Address verified");
isSeedHostOK=true; isSeedHostOK=true;
} catch(const FWException &ex) } catch(const FWException &ex)
{ {
QPalette palette = m_dialog->seedhosterror_message->palette(); QPalette palette =
palette.setColor(m_dialog->seedhosterror_message->foregroundRole(), Qt::darkRed); m_dialog->seedhosterror_message->palette();
palette.setColor(
m_dialog->seedhosterror_message->foregroundRole(),
Qt::darkRed);
m_dialog->seedhosterror_message->setPalette(palette); m_dialog->seedhosterror_message->setPalette(palette);
m_dialog->seedhosterror_message->setText(ex.toString().c_str()); m_dialog->seedhosterror_message->setText(
ex.toString().c_str());
// need to return focus to the input field in case of error // need to return focus to the input field in case of error
//m_dialog->seedhostname->setFocus(); //m_dialog->seedhostname->setFocus();
isSeedHostOK=false; isSeedHostOK=false;
@@ -1788,7 +1807,9 @@ void DiscoveryDruid::changedSeedHost()
else else
{ {
QPalette palette = m_dialog->seedhosterror_message->palette(); QPalette palette = m_dialog->seedhosterror_message->palette();
palette.setColor(m_dialog->seedhosterror_message->foregroundRole(), Qt::darkRed); palette.setColor(
m_dialog->seedhosterror_message->foregroundRole(),
Qt::darkRed);
m_dialog->seedhosterror_message->setPalette(palette); m_dialog->seedhosterror_message->setPalette(palette);
m_dialog->seedhosterror_message->setText("Wrong IPv4 format"); m_dialog->seedhosterror_message->setText("Wrong IPv4 format");
@@ -1798,13 +1819,15 @@ void DiscoveryDruid::changedSeedHost()
} }
else else
{// it looks like a DNS name {// it looks like a DNS name
isSeedHostOK=false; isSeedHostOK = false;
QPalette palette = m_dialog->seedhosterror_message->palette(); QPalette palette = m_dialog->seedhosterror_message->palette();
palette.setColor(m_dialog->seedhosterror_message->foregroundRole(), Qt::black); palette.setColor(
m_dialog->seedhosterror_message->foregroundRole(), Qt::black);
m_dialog->seedhosterror_message->setPalette(palette); m_dialog->seedhosterror_message->setPalette(palette);
m_dialog->seedhosterror_message->setText("DNS resolution in progress..."); m_dialog->seedhosterror_message->setText(
"DNS resolution in progress...");
unProg = 0; unProg = 0;
unBar=m_dialog->DNSprogress; unBar=m_dialog->DNSprogress;