You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
7.0 KiB
201 lines
7.0 KiB
//
|
|
//
|
|
// C++ Implementation: $MODULE$
|
|
//
|
|
// Description:
|
|
//
|
|
//
|
|
// Author: Christian Hubinger <chubinger@irrsinnig.org>, (C) 2003
|
|
//
|
|
// Copyright: See COPYING file that comes with this distribution
|
|
//
|
|
//
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
|
|
#include "kmfgenericinterfacenat.h"
|
|
|
|
|
|
// QT includes
|
|
#include <tqstring.h>
|
|
#include <tqstringlist.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqlistview.h>
|
|
|
|
// KDE includes
|
|
#include <kdebug.h>
|
|
#include <tdelocale.h>
|
|
#include <kcombobox.h>
|
|
#include <knuminput.h>
|
|
#include <tdelistview.h>
|
|
|
|
// Project includes
|
|
#include "../core/kmfnetwork.h"
|
|
#include "../core/kmftarget.h"
|
|
#include "../core/kmftargetconfig.h"
|
|
#include "../core/kmfgenericdoc.h"
|
|
#include "../core/kmfconfig.h"
|
|
namespace KMF {
|
|
KMFGenericInterfaceNat::KMFGenericInterfaceNat( TQWidget *parent, const char *name, WFlags f )
|
|
: KMyFirewallGenericInterfaceNATWidget( parent, name, f ) {
|
|
|
|
connect( m_c_enable_nat, TQ_SIGNAL( toggled( bool ) ),
|
|
this, TQ_SLOT( slotNatEnabled( bool ) ) );
|
|
connect( m_c_use_masquerade, TQ_SIGNAL( toggled( bool ) ),
|
|
this, TQ_SLOT( slotMasqueradeEnabled( bool ) ) );
|
|
|
|
|
|
connect( m_sb_addr_1, TQ_SIGNAL( valueChanged( const TQString& ) ),
|
|
this, TQ_SLOT( slotAddressChanged( const TQString& ) ) );
|
|
connect( m_sb_addr_2, TQ_SIGNAL( valueChanged( const TQString& ) ),
|
|
this, TQ_SLOT( slotAddressChanged( const TQString& ) ) );
|
|
connect( m_sb_addr_3, TQ_SIGNAL( valueChanged( const TQString& ) ),
|
|
this, TQ_SLOT( slotAddressChanged( const TQString& ) ) );
|
|
connect( m_sb_addr_4, TQ_SIGNAL( valueChanged( const TQString& ) ),
|
|
this, TQ_SLOT( slotAddressChanged( const TQString& ) ) );
|
|
|
|
connect( m_cb_external_interface, TQ_SIGNAL( activated( const TQString& ) ),
|
|
this, TQ_SLOT( slotExternalInterfaceChanged( const TQString& ) ) );
|
|
}
|
|
|
|
|
|
KMFGenericInterfaceNat::~KMFGenericInterfaceNat() {}
|
|
|
|
void KMFGenericInterfaceNat::slotUpdateView( NetfilterObject* ) {
|
|
kdDebug() << "KMFGenericInterfaceNat::slotUpdateView( NetfilterObject* )" << endl;
|
|
if ( ! m_doc ) {
|
|
kdDebug() << "WRINING: m_doc == 0" << endl;
|
|
return;
|
|
}
|
|
slotUpdateView();
|
|
}
|
|
void KMFGenericInterfaceNat::slotUpdateView() {
|
|
kdDebug() << "void KMFGenericInterfaceNat::slotUpdateView()" << endl;
|
|
if ( ! m_doc ) {
|
|
kdDebug() << "WRINING: m_doc == 0" << endl;
|
|
return;
|
|
}
|
|
m_c_enable_nat->setChecked( m_doc->currentDocAsGenericDoc()->useNat() );
|
|
m_c_use_masquerade->setChecked( m_doc->currentDocAsGenericDoc()->useMasquerade() );
|
|
// m_c_restrict_nat->setChecked( m_doc->restrictNat() );
|
|
m_sb_addr_1->blockSignals( true );
|
|
m_sb_addr_2->blockSignals( true );
|
|
m_sb_addr_3->blockSignals( true );
|
|
m_sb_addr_4->blockSignals( true );
|
|
m_sb_addr_1->setValue( m_doc->currentDocAsGenericDoc()->natAddress()->getDigit( 0 ) );
|
|
m_sb_addr_2->setValue( m_doc->currentDocAsGenericDoc()->natAddress()->getDigit( 1 ) );
|
|
m_sb_addr_3->setValue( m_doc->currentDocAsGenericDoc()->natAddress()->getDigit( 2 ) );
|
|
m_sb_addr_4->setValue( m_doc->currentDocAsGenericDoc()->natAddress()->getDigit( 3 ) );
|
|
kdDebug() << "Setting Address Fields to: " << m_doc->currentDocAsGenericDoc()->natAddress()->getDigit( 0 ) << "." <<
|
|
m_doc->currentDocAsGenericDoc()->natAddress()->getDigit( 1 ) << "." << m_doc->currentDocAsGenericDoc()->natAddress()->getDigit( 2 ) << "." <<
|
|
m_doc->currentDocAsGenericDoc()->natAddress()->getDigit( 3 ) << endl;
|
|
m_sb_addr_1->blockSignals( false );
|
|
m_sb_addr_2->blockSignals( false );
|
|
m_sb_addr_3->blockSignals( false );
|
|
m_sb_addr_4->blockSignals( false );
|
|
|
|
TQStringList interfaces = m_doc->currentTarget()->config()->interfaces();
|
|
m_cb_external_interface->clear();
|
|
m_cb_external_interface->insertStringList( interfaces );
|
|
|
|
TQString interf = m_doc->currentDocAsGenericDoc()->outgoingInterface();
|
|
|
|
interf = m_doc->currentDocAsGenericDoc()->outgoingInterface();
|
|
bool found = false;
|
|
int i = 0;
|
|
for ( TQStringList::Iterator it = interfaces.begin(); it != interfaces.end() && ! found; ++it ) {
|
|
if ( *it == interf ) {
|
|
m_cb_external_interface->setCurrentItem( i );
|
|
}
|
|
i++;
|
|
}
|
|
|
|
}
|
|
|
|
/*!
|
|
\fn KMFGenericInterfaceNat::loadDoc( KMFGenericDoc* )
|
|
*/
|
|
void KMFGenericInterfaceNat::loadDoc( KMFNetwork* doc ) {
|
|
kdDebug() << "void KMFGenericInterfaceNat::loadDoc( KMFGenericDoc* )" << endl;
|
|
m_doc = doc;
|
|
slotUpdateView();
|
|
}
|
|
|
|
|
|
/*!
|
|
\fn KMFGenericInterfaceNat::slotNatEnabled( bool )
|
|
*/
|
|
void KMFGenericInterfaceNat::slotNatEnabled( bool onoff ) {
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_doc->currentDocAsGenericDoc(),
|
|
i18n( "%1 NAT." ).arg( onoff ? i18n( "Enable" ) : i18n( "Disable" ) )
|
|
);
|
|
|
|
m_doc->currentDocAsGenericDoc()->setUseNat( onoff );
|
|
m_doc->currentDocAsGenericDoc()->setOutgoingInterface( m_cb_external_interface->currentText () );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
}
|
|
|
|
/*!
|
|
\fn KMFGenericInterfaceNat::slotMasqueradeEnabled( bool )
|
|
*/
|
|
void KMFGenericInterfaceNat::slotMasqueradeEnabled( bool onoff ) {
|
|
if ( m_doc->currentDocAsGenericDoc()->useMasquerade() == onoff ) {
|
|
return;
|
|
}
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_doc->currentDocAsGenericDoc(),
|
|
i18n( "%1 MASQUERADE target for NAT." ).arg( onoff ? i18n( "Enable" ) : i18n( "Disable" ) )
|
|
);
|
|
m_doc->currentDocAsGenericDoc()->setUseMasquerade( onoff );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
}
|
|
|
|
|
|
/*!
|
|
\fn KMFGenericInterfaceNat::slotAddressChanged( const TQString& )
|
|
*/
|
|
void KMFGenericInterfaceNat::slotAddressChanged( const TQString& ) {
|
|
TQString address = "" + m_sb_addr_1->text() + "." + m_sb_addr_2->text() + "." + m_sb_addr_3->text() + "." + m_sb_addr_4->text();
|
|
if ( address == m_doc->currentDocAsGenericDoc()->natAddress()->toString() ) {
|
|
return;
|
|
}
|
|
|
|
kdDebug() << "Updating NAT external address to: " << address << endl;
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_doc->currentDocAsGenericDoc(),
|
|
i18n( "Set NAT adddress to %1." ).arg( address )
|
|
);
|
|
m_doc->currentDocAsGenericDoc()->natAddress()->setAddress( m_sb_addr_1->value(),
|
|
m_sb_addr_2->value(),
|
|
m_sb_addr_3->value(),
|
|
m_sb_addr_4->value() );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
}
|
|
/*!
|
|
\fn KMFGenericInterfaceNat::slotOutgoingInterfaceChanged( const TQString& )
|
|
*/
|
|
void KMFGenericInterfaceNat::slotExternalInterfaceChanged( const TQString& str ) {
|
|
if ( m_doc->currentDocAsGenericDoc()->outgoingInterface() == str ) {
|
|
return;
|
|
}
|
|
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_doc->currentDocAsGenericDoc(),
|
|
i18n( "Change NAT outgoing interface to %1." ).arg( str )
|
|
);
|
|
m_doc->currentDocAsGenericDoc()->setOutgoingInterface( str );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
slotUpdateView();
|
|
}
|
|
|
|
}
|
|
#include "kmfgenericinterfacenat.moc"
|