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.
kmyfirewall/kmyfirewall/ruleoptionplugins/tos_target_option/kmfruleeditortos.cpp

219 lines
7.0 KiB

/***************************************************************************
begin : Wed Mar 27 2002
copyright : (C) 2002 by Christian Hubinger
email : chubinger@irrsinnig.org
***************************************************************************/
/***************************************************************************
* *
* 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 "kmfruleeditortos.h"
// TQt includes
#include <tqcombobox.h>
#include <tqcheckbox.h>
#include <tqstring.h>
#include <tqlabel.h>
#include <tqgroupbox.h>
// kde includes
#include <tdelocale.h>
#include <kdebug.h>
#include <tdeapplication.h>
// project includes
#include "../../core/xmlnames.h"
#include "../../core/iptruleoption.h"
#include "../../core/iptrule.h"
#include "../../core/iptchain.h"
#include "../../core/iptable.h"
#include "../../core/kmfdoc.h"
#include "../../core/kmfiptdoc.h"
#include "../../core/kmfnetwork.h"
#include "../../core/kmfundoengine.h"
namespace KMF {
KMFRuleEditorTos::KMFRuleEditorTos( TQWidget *parent, const char *name, WFlags fl ) : KMyFirewallRuleEditorTos( parent, name, fl ) {
m_option_type = "SETTOS";
}
KMFRuleEditorTos::~KMFRuleEditorTos() {}
void KMFRuleEditorTos::setType( const TQString& type ) {
m_option_type = type;
if ( m_option_type == "SETTOS" ) {
gb_title->setTitle( i18n( "Set Type of Service" ) );
c_use_tos->setText( i18n( "Set TOS" ) );
setItems();
} else if ( m_option_type == "CHECKTOS" ) {
gb_title->setTitle( i18n( "Match Type of Service" ) );
c_use_tos->setText( i18n( "Check TOS" ) );
setItems();
} else if ( m_option_type == "REJECTTYPE" ) {
gb_title->setTitle( i18n( "Reject with icmp-type" ) );
c_use_tos->setText( i18n( "Reject with type:" ) );
setItems();
}
}
void KMFRuleEditorTos::loadRule( IPTRule* rule ) {
kdDebug() << "void KMFRuleEditorTos::loadRule( IPTRule* rule )" << endl;
m_rule = rule;
if ( m_option_type == "SETTOS" ) {
setItems();
IPTRuleOption* opt = rule->getOptionForName("target_set_tos_opt");
if ( ! opt ->isEmpty()) {
TQStringList values = opt->getValues();
TQString val = *values.at(0);
if ( val != XML::Undefined_Value) {
c_use_tos->setChecked( true );
int index = getItemNum( val );
if ( index > 0 )
cb_tos->setCurrentItem( index );
} else {
c_use_tos->setChecked( false );
}
} else {
c_use_tos->setChecked( false );
}
} else if ( m_option_type == "CHECKTOS" ) {
setItems();
IPTRuleOption* opt = rule->getOptionForName("tos_opt");
if ( ! opt ->isEmpty() ) {
TQStringList values = opt->getValues();
TQString val = *values.at(0);
if ( val != XML::Undefined_Value) {
c_use_tos->setChecked( true );
int index = getItemNum( val );
if ( index > 0 )
cb_tos->setCurrentItem( index );
} else {
c_use_tos->setChecked( false );
}
} else {
c_use_tos->setChecked( false );
}
} else if ( m_option_type == "REJECTTYPE" ) {
setItems();
IPTRuleOption* opt = rule->getOptionForName("target_reject_type_opt");
if ( ! opt ->isEmpty() ) {
TQStringList values = opt->getValues();
TQString val = *values.at(0);
if ( val != XML::Undefined_Value) {
c_use_tos->setChecked( true );
int index = getItemNum( val );
if ( index > 0 )
cb_tos->setCurrentItem( index );
} else {
c_use_tos->setChecked( false );
}
} else {
c_use_tos->setChecked( false );
}
} else {
kdDebug() << "Misuse of this class no type set !!" << endl;
}
}
void KMFRuleEditorTos::accept() {
KMFUndoEngine::instance()->startTransaction(
m_rule,
i18n("Edit Rule: %1 TOS Target Option").arg( m_rule->name() )
);
if ( m_option_type == "SETTOS" ) {
bool use_tos = c_use_tos->isChecked();
TQPtrList<TQString>* options = new TQPtrList<TQString>;
TQString* name = new TQString( "target_set_tos_opt" );
if ( use_tos ) {
TQString val = cb_tos->currentText();
options->append( new TQString( val ) );
} else {
options->append( new TQString( XML::BoolOff_Value) );
}
// emit sigAddTargetOpt( name, options );
m_rule->addTargetOption( *name, *options );
KMFUndoEngine::instance()->endTransaction();
emit sigDocumentChanged();
} else if ( m_option_type == "CHECKTOS" ) {
bool use_tos = c_use_tos->isChecked();
TQPtrList<TQString>* options = new TQPtrList<TQString>;
TQString* name = new TQString( "tos_opt" );
if ( use_tos ) {
TQString val = cb_tos->currentText();
options->append( new TQString( val ) );
} else {
options->append( new TQString( XML::BoolOff_Value) );
}
// emit sigAddRuleOpt( name, options );
m_rule->addRuleOption( *name, *options );
KMFUndoEngine::instance()->endTransaction();
emit sigHideMe();
} else if ( m_option_type == "REJECTTYPE" ) {
bool use_tos = c_use_tos->isChecked();
TQPtrList<TQString>* options = new TQPtrList<TQString>;
TQString* name = new TQString( "target_reject_type_opt" );
if ( use_tos ) {
TQString val = cb_tos->currentText();
options->append( new TQString( val ) );
} else {
options->append( new TQString( XML::BoolOff_Value) );
}
// emit sigAddTargetOpt( name, options );
m_rule->addTargetOption( *name, *options );
KMFUndoEngine::instance()->endTransaction();
emit sigHideMe();
}
}
void KMFRuleEditorTos::setItems() {
kdDebug() << "void KMFRuleEditorTos::setItems(const TQString& type)" << endl;
cb_tos->clear();
if ( m_option_type == "SETTOS" || m_option_type == "CHECKTOS" ) {
cb_tos->insertItem( "Normal-Service" );
cb_tos->insertItem( "Minimize-Cost" );
cb_tos->insertItem( "Maximize-Reliability" );
cb_tos->insertItem( "Maximize-Throughput" );
cb_tos->insertItem( "Minimize-Delay" );
} else if ( m_option_type == "REJECTTYPE" ) {
cb_tos->insertItem( "icmp-port-unreachable" );
cb_tos->insertItem( "icmp-net-unreachable" );
cb_tos->insertItem( "icmp-host-unreachable" );
cb_tos->insertItem( "icmp-proto-unreachable" );
cb_tos->insertItem( "icmp-net-prohibited" );
cb_tos->insertItem( "icmp-host-prohibited" );
}
}
int KMFRuleEditorTos::getItemNum( const TQString& option ) {
kdDebug() << "int KMFRuleEditorTos::getItemNum(const TQString& option)" << endl;
int index = -1;
for ( int i = 0; i < cb_tos->count(); i++ ) {
TQString tmp_item = cb_tos->text( i );
if ( tmp_item == option ) {
index = i;
}
}
return index;
}
void KMFRuleEditorTos::slotHelp() {
kdDebug() << "void KMFRuleEditorTos::slotHelp()" << endl;
kapp->invokeHelp( "tos" );
}
void KMFRuleEditorTos::reject() {
kdDebug() << "void KMFRuleEditorTos::reject()" << endl;
loadRule(m_rule);
emit sigHideMe();
}
}
#include "kmfruleeditortos.moc"