kcmpureftpd

  Main Page   Compound List   File List   Compound Members
Main Page   Compound List   File List   Compound Members  

kcmpureftpdscriptui.cpp

00001 #include <klocale.h>
00002 /****************************************************************************
00003 ** Form implementation generated from reading ui file './kcmpureftpdscriptui.ui'
00004 **
00005 ** Created: Sun Jul 20 20:05:07 2003
00006 **      by: The User Interface Compiler ()
00007 **
00008 ** WARNING! All changes made in this file will be lost!
00009 ****************************************************************************/
00010 
00011 #include "kcmpureftpdscriptui.h"
00012 
00013 #include <qvariant.h>
00014 #include <kdialog.h>
00015 #include <qpushbutton.h>
00016 #include <qtabwidget.h>
00017 #include <qbuttongroup.h>
00018 #include <qlabel.h>
00019 #include <klineedit.h>
00020 #include <kpushbutton.h>
00021 #include <qheader.h>
00022 #include <klistview.h>
00023 #include <qgroupbox.h>
00024 #include <kurlrequester.h>
00025 #include <ktextedit.h>
00026 #include <knuminput.h>
00027 #include <qradiobutton.h>
00028 #include <kcombobox.h>
00029 #include <qcheckbox.h>
00030 #include <qlayout.h>
00031 #include <qtooltip.h>
00032 #include <qwhatsthis.h>
00033 #include <qimage.h>
00034 #include <qpixmap.h>
00035 
00036 #include "./kcmpureftpdscriptui.ui.h"
00037 /* 
00038  *  Constructs a KPureftpdScriptUI as a child of 'parent', with the 
00039  *  name 'name' and widget flags set to 'f'.
00040  */
00041 KPureftpdScriptUI::KPureftpdScriptUI( QWidget* parent, const char* name, WFlags fl )
00042     : QWidget( parent, name, fl )
00043 {
00044     if ( !name )
00045         setName( "KPureftpdScriptUI" );
00046     KPureftpdScriptUILayout = new QVBoxLayout( this, 0, KDialog::spacingHint(), "KPureftpdScriptUILayout"); 
00047 
00048     tab = new QTabWidget( this, "tab" );
00049 
00050     tabScripts = new QWidget( tab, "tabScripts" );
00051     tabScriptsLayout = new QVBoxLayout( tabScripts, KDialog::marginHint(), KDialog::spacingHint(), "tabScriptsLayout"); 
00052 
00053     grpScript = new QButtonGroup( tabScripts, "grpScript" );
00054     grpScript->setColumnLayout(0, Qt::Vertical );
00055     grpScript->layout()->setSpacing( 3 );
00056     grpScript->layout()->setMargin( 6 );
00057     grpScriptLayout = new QVBoxLayout( grpScript->layout() );
00058     grpScriptLayout->setAlignment( Qt::AlignTop );
00059 
00060     layout27 = new QGridLayout( 0, 1, 1, 0, KDialog::spacingHint(), "layout27"); 
00061 
00062     txtScriptDescription = new QLabel( grpScript, "txtScriptDescription" );
00063 
00064     layout27->addWidget( txtScriptDescription, 1, 0 );
00065 
00066     txtScriptName = new QLabel( grpScript, "txtScriptName" );
00067 
00068     layout27->addWidget( txtScriptName, 0, 0 );
00069 
00070     scriptName = new KLineEdit( grpScript, "scriptName" );
00071 
00072     layout27->addWidget( scriptName, 0, 1 );
00073 
00074     scriptDescription = new KLineEdit( grpScript, "scriptDescription" );
00075 
00076     layout27->addWidget( scriptDescription, 1, 1 );
00077     grpScriptLayout->addLayout( layout27 );
00078     QSpacerItem* spacer = new QSpacerItem( 20, 6, QSizePolicy::Minimum, QSizePolicy::Fixed );
00079     grpScriptLayout->addItem( spacer );
00080 
00081     layout26 = new QHBoxLayout( 0, 0, 6, "layout26"); 
00082     QSpacerItem* spacer_2 = new QSpacerItem( 80, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
00083     layout26->addItem( spacer_2 );
00084 
00085     scriptAdd = new KPushButton( grpScript, "scriptAdd" );
00086     layout26->addWidget( scriptAdd );
00087 
00088     scriptSave = new KPushButton( grpScript, "scriptSave" );
00089     layout26->addWidget( scriptSave );
00090 
00091     scriptRevert = new KPushButton( grpScript, "scriptRevert" );
00092     layout26->addWidget( scriptRevert );
00093 
00094     scriptDelete = new KPushButton( grpScript, "scriptDelete" );
00095     layout26->addWidget( scriptDelete );
00096     grpScriptLayout->addLayout( layout26 );
00097     QSpacerItem* spacer_3 = new QSpacerItem( 20, 6, QSizePolicy::Minimum, QSizePolicy::Fixed );
00098     grpScriptLayout->addItem( spacer_3 );
00099 
00100     scriptList = new KListView( grpScript, "scriptList" );
00101     scriptList->addColumn( tr2i18n( "Name" ) );
00102     scriptList->addColumn( tr2i18n( "Description" ) );
00103     scriptList->setResizeMode( KListView::LastColumn );
00104     grpScriptLayout->addWidget( scriptList );
00105     tabScriptsLayout->addWidget( grpScript );
00106 
00107     grpOutput = new QGroupBox( tabScripts, "grpOutput" );
00108     grpOutput->setColumnLayout(0, Qt::Vertical );
00109     grpOutput->layout()->setSpacing( KDialog::spacingHint() );
00110     grpOutput->layout()->setMargin( KDialog::marginHint() );
00111     grpOutputLayout = new QVBoxLayout( grpOutput->layout() );
00112     grpOutputLayout->setAlignment( Qt::AlignTop );
00113 
00114     layout26_2 = new QHBoxLayout( 0, 0, KDialog::spacingHint(), "layout26_2"); 
00115 
00116     txtOutputFileName = new QLabel( grpOutput, "txtOutputFileName" );
00117     layout26_2->addWidget( txtOutputFileName );
00118 
00119     outputFileName = new KURLRequester( grpOutput, "outputFileName" );
00120     layout26_2->addWidget( outputFileName );
00121     QSpacerItem* spacer_4 = new QSpacerItem( 6, 10, QSizePolicy::Fixed, QSizePolicy::Minimum );
00122     layout26_2->addItem( spacer_4 );
00123 
00124     outputSave = new KPushButton( grpOutput, "outputSave" );
00125     layout26_2->addWidget( outputSave );
00126     grpOutputLayout->addLayout( layout26_2 );
00127 
00128     outputView = new KTextEdit( grpOutput, "outputView" );
00129     outputView->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)2, 0, 0, outputView->sizePolicy().hasHeightForWidth() ) );
00130     outputView->setVScrollBarMode( KTextEdit::AlwaysOn );
00131     grpOutputLayout->addWidget( outputView );
00132     tabScriptsLayout->addWidget( grpOutput );
00133     tab->insertTab( tabScripts, QString("") );
00134 
00135     tabNonAnonymous = new QWidget( tab, "tabNonAnonymous" );
00136     tabNonAnonymousLayout = new QVBoxLayout( tabNonAnonymous, KDialog::marginHint(), KDialog::spacingHint(), "tabNonAnonymousLayout"); 
00137 
00138     grpStandalone = new QGroupBox( tabNonAnonymous, "grpStandalone" );
00139     grpStandalone->setColumnLayout(0, Qt::Vertical );
00140     grpStandalone->layout()->setSpacing( 3 );
00141     grpStandalone->layout()->setMargin( 6 );
00142     grpStandaloneLayout = new QVBoxLayout( grpStandalone->layout() );
00143     grpStandaloneLayout->setAlignment( Qt::AlignTop );
00144 
00145     layout23 = new QHBoxLayout( 0, 0, KDialog::spacingHint(), "layout23"); 
00146 
00147     txtAddress = new QLabel( grpStandalone, "txtAddress" );
00148     layout23->addWidget( txtAddress );
00149 
00150     address = new KLineEdit( grpStandalone, "address" );
00151     layout23->addWidget( address );
00152 
00153     txtPort = new QLabel( grpStandalone, "txtPort" );
00154     layout23->addWidget( txtPort );
00155 
00156     port = new KLineEdit( grpStandalone, "port" );
00157     layout23->addWidget( port );
00158     grpStandaloneLayout->addLayout( layout23 );
00159 
00160     layout25 = new QGridLayout( 0, 1, 1, 0, KDialog::spacingHint(), "layout25"); 
00161 
00162     maxClients = new KIntNumInput( grpStandalone, "maxClients" );
00163     maxClients->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, maxClients->sizePolicy().hasHeightForWidth() ) );
00164 
00165     layout25->addWidget( maxClients, 0, 1 );
00166 
00167     txtMaxClients = new QLabel( grpStandalone, "txtMaxClients" );
00168     txtMaxClients->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)5, 0, 0, txtMaxClients->sizePolicy().hasHeightForWidth() ) );
00169 
00170     layout25->addWidget( txtMaxClients, 0, 0 );
00171 
00172     txtClientsPerIp = new QLabel( grpStandalone, "txtClientsPerIp" );
00173     txtClientsPerIp->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)5, 0, 0, txtClientsPerIp->sizePolicy().hasHeightForWidth() ) );
00174 
00175     layout25->addWidget( txtClientsPerIp, 1, 0 );
00176 
00177     clientsPerIp = new KIntNumInput( grpStandalone, "clientsPerIp" );
00178     clientsPerIp->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, clientsPerIp->sizePolicy().hasHeightForWidth() ) );
00179 
00180     layout25->addWidget( clientsPerIp, 1, 1 );
00181     grpStandaloneLayout->addLayout( layout25 );
00182 
00183     layout26_3 = new QHBoxLayout( 0, 0, KDialog::spacingHint(), "layout26_3"); 
00184 
00185     txtPidFile = new QLabel( grpStandalone, "txtPidFile" );
00186     layout26_3->addWidget( txtPidFile );
00187 
00188     pidFile = new KURLRequester( grpStandalone, "pidFile" );
00189     layout26_3->addWidget( pidFile );
00190     grpStandaloneLayout->addLayout( layout26_3 );
00191     tabNonAnonymousLayout->addWidget( grpStandalone );
00192 
00193     grpPaths = new QGroupBox( tabNonAnonymous, "grpPaths" );
00194     grpPaths->setColumnLayout(0, Qt::Vertical );
00195     grpPaths->layout()->setSpacing( 3 );
00196     grpPaths->layout()->setMargin( 6 );
00197     grpPathsLayout = new QGridLayout( grpPaths->layout() );
00198     grpPathsLayout->setAlignment( Qt::AlignTop );
00199 
00200     txtPureftpd = new QLabel( grpPaths, "txtPureftpd" );
00201 
00202     grpPathsLayout->addWidget( txtPureftpd, 0, 0 );
00203 
00204     pureftpd = new KURLRequester( grpPaths, "pureftpd" );
00205 
00206     grpPathsLayout->addWidget( pureftpd, 0, 1 );
00207 
00208     txtPureftpwho = new QLabel( grpPaths, "txtPureftpwho" );
00209 
00210     grpPathsLayout->addWidget( txtPureftpwho, 1, 0 );
00211 
00212     pureftpwho = new KURLRequester( grpPaths, "pureftpwho" );
00213 
00214     grpPathsLayout->addWidget( pureftpwho, 1, 1 );
00215 
00216     txtPuremrtginfo = new QLabel( grpPaths, "txtPuremrtginfo" );
00217 
00218     grpPathsLayout->addWidget( txtPuremrtginfo, 2, 0 );
00219 
00220     puremrtginfo = new KURLRequester( grpPaths, "puremrtginfo" );
00221 
00222     grpPathsLayout->addWidget( puremrtginfo, 2, 1 );
00223 
00224     txtPureauthd = new QLabel( grpPaths, "txtPureauthd" );
00225 
00226     grpPathsLayout->addWidget( txtPureauthd, 3, 0 );
00227 
00228     pureauthd = new KURLRequester( grpPaths, "pureauthd" );
00229 
00230     grpPathsLayout->addWidget( pureauthd, 3, 1 );
00231 
00232     txtPurequotacheck = new QLabel( grpPaths, "txtPurequotacheck" );
00233 
00234     grpPathsLayout->addWidget( txtPurequotacheck, 4, 0 );
00235 
00236     purequotacheck = new KURLRequester( grpPaths, "purequotacheck" );
00237 
00238     grpPathsLayout->addWidget( purequotacheck, 4, 1 );
00239 
00240     txtPureuploadscript = new QLabel( grpPaths, "txtPureuploadscript" );
00241 
00242     grpPathsLayout->addWidget( txtPureuploadscript, 5, 0 );
00243 
00244     pureuploadscript = new KURLRequester( grpPaths, "pureuploadscript" );
00245 
00246     grpPathsLayout->addWidget( pureuploadscript, 5, 1 );
00247 
00248     txtPurepw = new QLabel( grpPaths, "txtPurepw" );
00249 
00250     grpPathsLayout->addWidget( txtPurepw, 6, 0 );
00251 
00252     purepw = new KURLRequester( grpPaths, "purepw" );
00253 
00254     grpPathsLayout->addWidget( purepw, 6, 1 );
00255 
00256     txtPurepwconvert = new QLabel( grpPaths, "txtPurepwconvert" );
00257 
00258     grpPathsLayout->addWidget( txtPurepwconvert, 7, 0 );
00259 
00260     purepwconvert = new KURLRequester( grpPaths, "purepwconvert" );
00261 
00262     grpPathsLayout->addWidget( purepwconvert, 7, 1 );
00263 
00264     txtPurestatsdecode = new QLabel( grpPaths, "txtPurestatsdecode" );
00265 
00266     grpPathsLayout->addWidget( txtPurestatsdecode, 8, 0 );
00267 
00268     purestatsdecode = new KURLRequester( grpPaths, "purestatsdecode" );
00269 
00270     grpPathsLayout->addWidget( purestatsdecode, 8, 1 );
00271     tabNonAnonymousLayout->addWidget( grpPaths );
00272     QSpacerItem* spacer_5 = new QSpacerItem( 20, 30, QSizePolicy::Minimum, QSizePolicy::Expanding );
00273     tabNonAnonymousLayout->addItem( spacer_5 );
00274     tab->insertTab( tabNonAnonymous, QString("") );
00275 
00276     tabAuthentification = new QWidget( tab, "tabAuthentification" );
00277     tabAuthentificationLayout = new QVBoxLayout( tabAuthentification, KDialog::marginHint(), KDialog::spacingHint(), "tabAuthentificationLayout"); 
00278 
00279     grpAuth = new QButtonGroup( tabAuthentification, "grpAuth" );
00280     grpAuth->setColumnLayout(0, Qt::Vertical );
00281     grpAuth->layout()->setSpacing( 3 );
00282     grpAuth->layout()->setMargin( 6 );
00283     grpAuthLayout = new QVBoxLayout( grpAuth->layout() );
00284     grpAuthLayout->setAlignment( Qt::AlignTop );
00285 
00286     useAuthDefault = new QRadioButton( grpAuth, "useAuthDefault" );
00287     useAuthDefault->setChecked( TRUE );
00288     grpAuthLayout->addWidget( useAuthDefault );
00289 
00290     useAuthCustom = new QRadioButton( grpAuth, "useAuthCustom" );
00291     grpAuthLayout->addWidget( useAuthCustom );
00292     QSpacerItem* spacer_6 = new QSpacerItem( 20, 10, QSizePolicy::Minimum, QSizePolicy::Fixed );
00293     grpAuthLayout->addItem( spacer_6 );
00294 
00295     layout26_4 = new QHBoxLayout( 0, 0, KDialog::spacingHint(), "layout26_4"); 
00296 
00297     txtAuthMethod = new QLabel( grpAuth, "txtAuthMethod" );
00298     txtAuthMethod->setEnabled( FALSE );
00299     layout26_4->addWidget( txtAuthMethod );
00300 
00301     authMethod = new KComboBox( FALSE, grpAuth, "authMethod" );
00302     authMethod->setEnabled( FALSE );
00303     layout26_4->addWidget( authMethod );
00304 
00305     txtAuthFile = new QLabel( grpAuth, "txtAuthFile" );
00306     txtAuthFile->setEnabled( FALSE );
00307     layout26_4->addWidget( txtAuthFile );
00308 
00309     authFile = new KURLRequester( grpAuth, "authFile" );
00310     authFile->setEnabled( FALSE );
00311     layout26_4->addWidget( authFile );
00312     grpAuthLayout->addLayout( layout26_4 );
00313     QSpacerItem* spacer_7 = new QSpacerItem( 20, 10, QSizePolicy::Minimum, QSizePolicy::Fixed );
00314     grpAuthLayout->addItem( spacer_7 );
00315 
00316     layout28 = new QHBoxLayout( 0, 0, 6, "layout28"); 
00317 
00318     authList = new KListView( grpAuth, "authList" );
00319     authList->addColumn( tr2i18n( "Method" ) );
00320     authList->addColumn( tr2i18n( "Configuration file" ) );
00321     authList->setEnabled( FALSE );
00322     authList->setAllColumnsShowFocus( TRUE );
00323     authList->setFullWidth( TRUE );
00324     layout28->addWidget( authList );
00325 
00326     layout27_2 = new QVBoxLayout( 0, 0, KDialog::spacingHint(), "layout27_2"); 
00327 
00328     authAdd = new KPushButton( grpAuth, "authAdd" );
00329     authAdd->setEnabled( FALSE );
00330     layout27_2->addWidget( authAdd );
00331 
00332     authModify = new KPushButton( grpAuth, "authModify" );
00333     authModify->setEnabled( FALSE );
00334     layout27_2->addWidget( authModify );
00335 
00336     authDelete = new KPushButton( grpAuth, "authDelete" );
00337     authDelete->setEnabled( FALSE );
00338     layout27_2->addWidget( authDelete );
00339 
00340     authMoveUp = new KPushButton( grpAuth, "authMoveUp" );
00341     authMoveUp->setEnabled( FALSE );
00342     layout27_2->addWidget( authMoveUp );
00343 
00344     authMoveDown = new KPushButton( grpAuth, "authMoveDown" );
00345     authMoveDown->setEnabled( FALSE );
00346     layout27_2->addWidget( authMoveDown );
00347     QSpacerItem* spacer_8 = new QSpacerItem( 20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding );
00348     layout27_2->addItem( spacer_8 );
00349     layout28->addLayout( layout27_2 );
00350     grpAuthLayout->addLayout( layout28 );
00351     tabAuthentificationLayout->addWidget( grpAuth );
00352     QSpacerItem* spacer_9 = new QSpacerItem( 20, 120, QSizePolicy::Minimum, QSizePolicy::Expanding );
00353     tabAuthentificationLayout->addItem( spacer_9 );
00354     tab->insertTab( tabAuthentification, QString("") );
00355 
00356     tabAnonymous = new QWidget( tab, "tabAnonymous" );
00357     tabAnonymousLayout = new QVBoxLayout( tabAnonymous, KDialog::marginHint(), KDialog::spacingHint(), "tabAnonymousLayout"); 
00358 
00359     grpAnonymous = new QGroupBox( tabAnonymous, "grpAnonymous" );
00360     grpAnonymous->setColumnLayout(0, Qt::Vertical );
00361     grpAnonymous->layout()->setSpacing( 3 );
00362     grpAnonymous->layout()->setMargin( 6 );
00363     grpAnonymousLayout = new QVBoxLayout( grpAnonymous->layout() );
00364     grpAnonymousLayout->setAlignment( Qt::AlignTop );
00365 
00366     anonLogin = new QCheckBox( grpAnonymous, "anonLogin" );
00367     grpAnonymousLayout->addWidget( anonLogin );
00368 
00369     allowMkdir = new QCheckBox( grpAnonymous, "allowMkdir" );
00370     grpAnonymousLayout->addWidget( allowMkdir );
00371 
00372     ftpUserDeny = new QCheckBox( grpAnonymous, "ftpUserDeny" );
00373     grpAnonymousLayout->addWidget( ftpUserDeny );
00374 
00375     denyUpload = new QCheckBox( grpAnonymous, "denyUpload" );
00376     grpAnonymousLayout->addWidget( denyUpload );
00377 
00378     anonReadDotFiles = new QCheckBox( grpAnonymous, "anonReadDotFiles" );
00379     grpAnonymousLayout->addWidget( anonReadDotFiles );
00380     tabAnonymousLayout->addWidget( grpAnonymous );
00381 
00382     grpNonAnonymous = new QGroupBox( tabAnonymous, "grpNonAnonymous" );
00383     grpNonAnonymous->setColumnLayout(0, Qt::Vertical );
00384     grpNonAnonymous->layout()->setSpacing( 3 );
00385     grpNonAnonymous->layout()->setMargin( 6 );
00386     grpNonAnonymousLayout = new QVBoxLayout( grpNonAnonymous->layout() );
00387     grpNonAnonymousLayout->setAlignment( Qt::AlignTop );
00388 
00389     nonAnonLogin = new QCheckBox( grpNonAnonymous, "nonAnonLogin" );
00390     grpNonAnonymousLayout->addWidget( nonAnonLogin );
00391 
00392     readDotFiles = new QCheckBox( grpNonAnonymous, "readDotFiles" );
00393     grpNonAnonymousLayout->addWidget( readDotFiles );
00394 
00395     writeDotFiles = new QCheckBox( grpNonAnonymous, "writeDotFiles" );
00396     grpNonAnonymousLayout->addWidget( writeDotFiles );
00397 
00398     restrictedIp = new QCheckBox( grpNonAnonymous, "restrictedIp" );
00399     grpNonAnonymousLayout->addWidget( restrictedIp );
00400 
00401     layout23_3 = new QHBoxLayout( 0, 0, KDialog::spacingHint(), "layout23_3"); 
00402     QSpacerItem* spacer_10 = new QSpacerItem( 20, 10, QSizePolicy::Fixed, QSizePolicy::Minimum );
00403     layout23_3->addItem( spacer_10 );
00404 
00405     txtLoginIp = new QLabel( grpNonAnonymous, "txtLoginIp" );
00406     txtLoginIp->setEnabled( FALSE );
00407     layout23_3->addWidget( txtLoginIp );
00408 
00409     loginIp = new KLineEdit( grpNonAnonymous, "loginIp" );
00410     loginIp->setEnabled( FALSE );
00411     loginIp->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)0, 0, 0, loginIp->sizePolicy().hasHeightForWidth() ) );
00412     layout23_3->addWidget( loginIp );
00413     QSpacerItem* spacer_11 = new QSpacerItem( 160, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
00414     layout23_3->addItem( spacer_11 );
00415     grpNonAnonymousLayout->addLayout( layout23_3 );
00416     tabAnonymousLayout->addWidget( grpNonAnonymous );
00417     QSpacerItem* spacer_12 = new QSpacerItem( 20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding );
00418     tabAnonymousLayout->addItem( spacer_12 );
00419     tab->insertTab( tabAnonymous, QString("") );
00420 
00421     tabSecurity = new QWidget( tab, "tabSecurity" );
00422     tabSecurityLayout = new QVBoxLayout( tabSecurity, KDialog::marginHint(), KDialog::spacingHint(), "tabSecurityLayout"); 
00423 
00424     grpChroot = new QGroupBox( tabSecurity, "grpChroot" );
00425     grpChroot->setColumnLayout(0, Qt::Vertical );
00426     grpChroot->layout()->setSpacing( 0 );
00427     grpChroot->layout()->setMargin( 6 );
00428     grpChrootLayout = new QVBoxLayout( grpChroot->layout() );
00429     grpChrootLayout->setAlignment( Qt::AlignTop );
00430 
00431     layout35 = new QGridLayout( 0, 1, 1, 3, 3, "layout35"); 
00432 
00433     chrootGid = new KIntSpinBox( grpChroot, "chrootGid" );
00434     chrootGid->setEnabled( FALSE );
00435     chrootGid->setMaxValue( 65535 );
00436     chrootGid->setMinValue( 0 );
00437 
00438     layout35->addWidget( chrootGid, 3, 1 );
00439 
00440     disableChmod = new QCheckBox( grpChroot, "disableChmod" );
00441 
00442     layout35->addMultiCellWidget( disableChmod, 1, 1, 0, 1 );
00443 
00444     useUidLogin = new QCheckBox( grpChroot, "useUidLogin" );
00445 
00446     layout35->addWidget( useUidLogin, 4, 0 );
00447 
00448     useChroot = new QCheckBox( grpChroot, "useChroot" );
00449 
00450     layout35->addWidget( useChroot, 3, 0 );
00451 
00452     useChrootAll = new QCheckBox( grpChroot, "useChrootAll" );
00453 
00454     layout35->addMultiCellWidget( useChrootAll, 2, 2, 0, 1 );
00455 
00456     uidLogin = new KIntSpinBox( grpChroot, "uidLogin" );
00457     uidLogin->setEnabled( FALSE );
00458     uidLogin->setMaxValue( 65535 );
00459     uidLogin->setMinValue( 0 );
00460 
00461     layout35->addWidget( uidLogin, 4, 1 );
00462     grpChrootLayout->addLayout( layout35 );
00463 
00464     layout22 = new QGridLayout( 0, 1, 1, 0, 3, "layout22"); 
00465 
00466     txtIdleTime = new QLabel( grpChroot, "txtIdleTime" );
00467 
00468     layout22->addWidget( txtIdleTime, 0, 0 );
00469 
00470     maxFiles = new KIntSpinBox( grpChroot, "maxFiles" );
00471     maxFiles->setMaxValue( 65535 );
00472     maxFiles->setMinValue( 1 );
00473 
00474     layout22->addWidget( maxFiles, 2, 1 );
00475 
00476     txtMaxDepth = new QLabel( grpChroot, "txtMaxDepth" );
00477 
00478     layout22->addWidget( txtMaxDepth, 3, 0 );
00479     QSpacerItem* spacer_13 = new QSpacerItem( 160, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
00480     layout22->addItem( spacer_13, 3, 2 );
00481     QSpacerItem* spacer_14 = new QSpacerItem( 160, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
00482     layout22->addMultiCell( spacer_14, 1, 2, 2, 2 );
00483     QSpacerItem* spacer_15 = new QSpacerItem( 160, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
00484     layout22->addItem( spacer_15, 0, 2 );
00485 
00486     idleTime = new KIntSpinBox( grpChroot, "idleTime" );
00487     idleTime->setMaxValue( 65535 );
00488     idleTime->setMinValue( 1 );
00489 
00490     layout22->addMultiCellWidget( idleTime, 0, 1, 1, 1 );
00491 
00492     maxDepth = new KIntSpinBox( grpChroot, "maxDepth" );
00493     maxDepth->setMaxValue( 65535 );
00494     maxDepth->setMinValue( 1 );
00495 
00496     layout22->addWidget( maxDepth, 3, 1 );
00497 
00498     txtMaxFiles = new QLabel( grpChroot, "txtMaxFiles" );
00499 
00500     layout22->addMultiCellWidget( txtMaxFiles, 1, 2, 0, 0 );
00501     grpChrootLayout->addLayout( layout22 );
00502 
00503     layout43 = new QHBoxLayout( 0, 3, 3, "layout43"); 
00504 
00505     txtFilesUmask = new QLabel( grpChroot, "txtFilesUmask" );
00506     layout43->addWidget( txtFilesUmask );
00507 
00508     filesUmask = new KIntSpinBox( grpChroot, "filesUmask" );
00509     filesUmask->setMaxValue( 511 );
00510     filesUmask->setMinValue( 0 );
00511     filesUmask->setBase( 8 );
00512     layout43->addWidget( filesUmask );
00513 
00514     txtDirsUmask = new QLabel( grpChroot, "txtDirsUmask" );
00515     txtDirsUmask->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
00516     layout43->addWidget( txtDirsUmask );
00517 
00518     dirsUmask = new KIntSpinBox( grpChroot, "dirsUmask" );
00519     dirsUmask->setMaxValue( 511 );
00520     dirsUmask->setMinValue( 0 );
00521     dirsUmask->setBase( 8 );
00522     layout43->addWidget( dirsUmask );
00523     grpChrootLayout->addLayout( layout43 );
00524     tabSecurityLayout->addWidget( grpChroot );
00525 
00526     grpSyslog = new QGroupBox( tabSecurity, "grpSyslog" );
00527     grpSyslog->setColumnLayout(0, Qt::Vertical );
00528     grpSyslog->layout()->setSpacing( 3 );
00529     grpSyslog->layout()->setMargin( 6 );
00530     grpSyslogLayout = new QVBoxLayout( grpSyslog->layout() );
00531     grpSyslogLayout->setAlignment( Qt::AlignTop );
00532 
00533     layout59 = new QHBoxLayout( 0, 0, 3, "layout59"); 
00534 
00535     txtDebug = new QLabel( grpSyslog, "txtDebug" );
00536     layout59->addWidget( txtDebug );
00537 
00538     debug = new KComboBox( FALSE, grpSyslog, "debug" );
00539     layout59->addWidget( debug );
00540     QSpacerItem* spacer_16 = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
00541     layout59->addItem( spacer_16 );
00542     grpSyslogLayout->addLayout( layout59 );
00543 
00544     useSyslog = new QCheckBox( grpSyslog, "useSyslog" );
00545     grpSyslogLayout->addWidget( useSyslog );
00546 
00547     layout24 = new QGridLayout( 0, 1, 1, 0, 3, "layout24"); 
00548     QSpacerItem* spacer_17 = new QSpacerItem( 280, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
00549     layout24->addItem( spacer_17, 0, 3 );
00550 
00551     facility = new KComboBox( FALSE, grpSyslog, "facility" );
00552     facility->setEnabled( FALSE );
00553 
00554     layout24->addWidget( facility, 0, 2 );
00555     QSpacerItem* spacer_18 = new QSpacerItem( 20, 10, QSizePolicy::Fixed, QSizePolicy::Minimum );
00556     layout24->addItem( spacer_18, 0, 0 );
00557 
00558     txtFacility = new QLabel( grpSyslog, "txtFacility" );
00559     txtFacility->setEnabled( FALSE );
00560 
00561     layout24->addWidget( txtFacility, 0, 1 );
00562 
00563     logPid = new QCheckBox( grpSyslog, "logPid" );
00564     logPid->setEnabled( FALSE );
00565 
00566     layout24->addMultiCellWidget( logPid, 1, 2, 1, 3 );
00567     QSpacerItem* spacer_19 = new QSpacerItem( 20, 10, QSizePolicy::Fixed, QSizePolicy::Minimum );
00568     layout24->addItem( spacer_19, 2, 0 );
00569     grpSyslogLayout->addLayout( layout24 );
00570 
00571     useFilelog = new QCheckBox( grpSyslog, "useFilelog" );
00572     grpSyslogLayout->addWidget( useFilelog );
00573 
00574     layout58 = new QGridLayout( 0, 1, 1, 0, 3, "layout58"); 
00575     QSpacerItem* spacer_20 = new QSpacerItem( 20, 10, QSizePolicy::Fixed, QSizePolicy::Minimum );
00576     layout58->addItem( spacer_20, 0, 0 );
00577 
00578     logFormat = new KComboBox( FALSE, grpSyslog, "logFormat" );
00579     logFormat->setEnabled( FALSE );
00580 
00581     layout58->addWidget( logFormat, 0, 3 );
00582 
00583     pathLog = new KURLRequester( grpSyslog, "pathLog" );
00584     pathLog->setEnabled( FALSE );
00585 
00586     layout58->addMultiCellWidget( pathLog, 1, 1, 2, 4 );
00587     QSpacerItem* spacer_21 = new QSpacerItem( 20, 10, QSizePolicy::Fixed, QSizePolicy::Minimum );
00588     layout58->addItem( spacer_21, 1, 0 );
00589     QSpacerItem* spacer_22 = new QSpacerItem( 140, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
00590     layout58->addItem( spacer_22, 0, 4 );
00591 
00592     txtPathLog = new QLabel( grpSyslog, "txtPathLog" );
00593     txtPathLog->setEnabled( FALSE );
00594 
00595     layout58->addWidget( txtPathLog, 1, 1 );
00596 
00597     txtLogFormat = new QLabel( grpSyslog, "txtLogFormat" );
00598     txtLogFormat->setEnabled( FALSE );
00599 
00600     layout58->addMultiCellWidget( txtLogFormat, 0, 0, 1, 2 );
00601     grpSyslogLayout->addLayout( layout58 );
00602 
00603     resolve = new QCheckBox( grpSyslog, "resolve" );
00604     grpSyslogLayout->addWidget( resolve );
00605     tabSecurityLayout->addWidget( grpSyslog );
00606     QSpacerItem* spacer_23 = new QSpacerItem( 20, 80, QSizePolicy::Minimum, QSizePolicy::Expanding );
00607     tabSecurityLayout->addItem( spacer_23 );
00608     tab->insertTab( tabSecurity, QString("") );
00609 
00610     tabLog = new QWidget( tab, "tabLog" );
00611     tabLogLayout = new QVBoxLayout( tabLog, KDialog::marginHint(), KDialog::spacingHint(), "tabLogLayout"); 
00612 
00613     grpPortRange = new QGroupBox( tabLog, "grpPortRange" );
00614     grpPortRange->setColumnLayout(0, Qt::Vertical );
00615     grpPortRange->layout()->setSpacing( 0 );
00616     grpPortRange->layout()->setMargin( 6 );
00617     grpPortRangeLayout = new QVBoxLayout( grpPortRange->layout() );
00618     grpPortRangeLayout->setAlignment( Qt::AlignTop );
00619 
00620     layout33 = new QGridLayout( 0, 1, 1, 3, 3, "layout33"); 
00621 
00622     txtQuotaMaxSize = new QLabel( grpPortRange, "txtQuotaMaxSize" );
00623     txtQuotaMaxSize->setEnabled( FALSE );
00624     txtQuotaMaxSize->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
00625 
00626     layout33->addWidget( txtQuotaMaxSize, 3, 3 );
00627 
00628     portLow = new KIntSpinBox( grpPortRange, "portLow" );
00629     portLow->setEnabled( FALSE );
00630     portLow->setMaxValue( 65535 );
00631     portLow->setMinValue( 1024 );
00632 
00633     layout33->addWidget( portLow, 1, 2 );
00634 
00635     txtPortLow = new QLabel( grpPortRange, "txtPortLow" );
00636     txtPortLow->setEnabled( FALSE );
00637 
00638     layout33->addWidget( txtPortLow, 1, 1 );
00639 
00640     quotaMaxSize = new KIntSpinBox( grpPortRange, "quotaMaxSize" );
00641     quotaMaxSize->setEnabled( FALSE );
00642     quotaMaxSize->setMaxValue( 65535 );
00643     quotaMaxSize->setMinValue( 1 );
00644 
00645     layout33->addWidget( quotaMaxSize, 3, 4 );
00646     QSpacerItem* spacer_24 = new QSpacerItem( 20, 16, QSizePolicy::Fixed, QSizePolicy::Minimum );
00647     layout33->addItem( spacer_24, 1, 0 );
00648 
00649     useQuota = new QCheckBox( grpPortRange, "useQuota" );
00650 
00651     layout33->addMultiCellWidget( useQuota, 2, 2, 0, 4 );
00652 
00653     txtPortHigh = new QLabel( grpPortRange, "txtPortHigh" );
00654     txtPortHigh->setEnabled( FALSE );
00655     txtPortHigh->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
00656 
00657     layout33->addWidget( txtPortHigh, 1, 3 );
00658 
00659     usePortRange = new QCheckBox( grpPortRange, "usePortRange" );
00660 
00661     layout33->addMultiCellWidget( usePortRange, 0, 0, 0, 4 );
00662 
00663     quotaMaxFiles = new KIntSpinBox( grpPortRange, "quotaMaxFiles" );
00664     quotaMaxFiles->setEnabled( FALSE );
00665     quotaMaxFiles->setMaxValue( 65535 );
00666     quotaMaxFiles->setMinValue( 1 );
00667 
00668     layout33->addWidget( quotaMaxFiles, 3, 2 );
00669 
00670     portHigh = new KIntSpinBox( grpPortRange, "portHigh" );
00671     portHigh->setEnabled( FALSE );
00672     portHigh->setMaxValue( 65535 );
00673     portHigh->setMinValue( 1024 );
00674     portHigh->setValue( 65535 );
00675 
00676     layout33->addWidget( portHigh, 1, 4 );
00677 
00678     txtQuotaMaxFiles = new QLabel( grpPortRange, "txtQuotaMaxFiles" );
00679     txtQuotaMaxFiles->setEnabled( FALSE );
00680 
00681     layout33->addWidget( txtQuotaMaxFiles, 3, 1 );
00682     QSpacerItem* spacer_25 = new QSpacerItem( 20, 16, QSizePolicy::Fixed, QSizePolicy::Minimum );
00683     layout33->addItem( spacer_25, 3, 0 );
00684     grpPortRangeLayout->addLayout( layout33 );
00685 
00686     layout32 = new QGridLayout( 0, 1, 1, 3, 3, "layout32"); 
00687 
00688     useLoadLimit = new QCheckBox( grpPortRange, "useLoadLimit" );
00689     useLoadLimit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, useLoadLimit->sizePolicy().hasHeightForWidth() ) );
00690 
00691     layout32->addWidget( useLoadLimit, 1, 0 );
00692 
00693     diskPercent = new KIntSpinBox( grpPortRange, "diskPercent" );
00694     diskPercent->setEnabled( FALSE );
00695     diskPercent->setMaxValue( 100 );
00696     diskPercent->setValue( 100 );
00697 
00698     layout32->addWidget( diskPercent, 0, 1 );
00699 
00700     systemLoad = new KDoubleNumInput( grpPortRange, "systemLoad" );
00701     systemLoad->setEnabled( FALSE );
00702     systemLoad->setValue( 1 );
00703     systemLoad->setMaxValue( 100 );
00704 
00705     layout32->addWidget( systemLoad, 1, 1 );
00706 
00707     useDiskLimit = new QCheckBox( grpPortRange, "useDiskLimit" );
00708     useDiskLimit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, useDiskLimit->sizePolicy().hasHeightForWidth() ) );
00709 
00710     layout32->addWidget( useDiskLimit, 0, 0 );
00711     grpPortRangeLayout->addLayout( layout32 );
00712     tabLogLayout->addWidget( grpPortRange );
00713 
00714     grpBandwidth = new QButtonGroup( tabLog, "grpBandwidth" );
00715     grpBandwidth->setColumnLayout(0, Qt::Vertical );
00716     grpBandwidth->layout()->setSpacing( KDialog::spacingHint() );
00717     grpBandwidth->layout()->setMargin( KDialog::marginHint() );
00718     grpBandwidthLayout = new QVBoxLayout( grpBandwidth->layout() );
00719     grpBandwidthLayout->setAlignment( Qt::AlignTop );
00720 
00721     bandNoRestriction = new QRadioButton( grpBandwidth, "bandNoRestriction" );
00722     bandNoRestriction->setChecked( TRUE );
00723     grpBandwidthLayout->addWidget( bandNoRestriction );
00724 
00725     bandAnon = new QRadioButton( grpBandwidth, "bandAnon" );
00726     grpBandwidthLayout->addWidget( bandAnon );
00727 
00728     bandAll = new QRadioButton( grpBandwidth, "bandAll" );
00729     grpBandwidthLayout->addWidget( bandAll );
00730 
00731     layout26_2_2 = new QHBoxLayout( 0, 0, KDialog::spacingHint(), "layout26_2_2"); 
00732 
00733     txtBandUp = new QLabel( grpBandwidth, "txtBandUp" );
00734     txtBandUp->setEnabled( FALSE );
00735     txtBandUp->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
00736     layout26_2_2->addWidget( txtBandUp );
00737 
00738     bandUpload = new KIntSpinBox( grpBandwidth, "bandUpload" );
00739     bandUpload->setEnabled( FALSE );
00740     bandUpload->setMaxValue( 65535 );
00741     bandUpload->setMinValue( 0 );
00742     bandUpload->setValue( 0 );
00743     layout26_2_2->addWidget( bandUpload );
00744 
00745     txtBandDn = new QLabel( grpBandwidth, "txtBandDn" );
00746     txtBandDn->setEnabled( FALSE );
00747     txtBandDn->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
00748     layout26_2_2->addWidget( txtBandDn );
00749 
00750     bandDownload = new KIntSpinBox( grpBandwidth, "bandDownload" );
00751     bandDownload->setEnabled( FALSE );
00752     bandDownload->setMaxValue( 65535 );
00753     bandDownload->setMinValue( 0 );
00754     bandDownload->setValue( 0 );
00755     layout26_2_2->addWidget( bandDownload );
00756     grpBandwidthLayout->addLayout( layout26_2_2 );
00757     tabLogLayout->addWidget( grpBandwidth );
00758 
00759     grpRatio = new QButtonGroup( tabLog, "grpRatio" );
00760     grpRatio->setColumnLayout(0, Qt::Vertical );
00761     grpRatio->layout()->setSpacing( 3 );
00762     grpRatio->layout()->setMargin( 6 );
00763     grpRatioLayout = new QVBoxLayout( grpRatio->layout() );
00764     grpRatioLayout->setAlignment( Qt::AlignTop );
00765 
00766     ratioNoRestriction = new QRadioButton( grpRatio, "ratioNoRestriction" );
00767     ratioNoRestriction->setChecked( TRUE );
00768     grpRatioLayout->addWidget( ratioNoRestriction );
00769 
00770     ratioAnon = new QRadioButton( grpRatio, "ratioAnon" );
00771     grpRatioLayout->addWidget( ratioAnon );
00772 
00773     ratioAll = new QRadioButton( grpRatio, "ratioAll" );
00774     grpRatioLayout->addWidget( ratioAll );
00775 
00776     layout24_2 = new QHBoxLayout( 0, 0, KDialog::spacingHint(), "layout24_2"); 
00777 
00778     txtRatio = new QLabel( grpRatio, "txtRatio" );
00779     txtRatio->setEnabled( FALSE );
00780     layout24_2->addWidget( txtRatio );
00781 
00782     ratioUpload = new KIntSpinBox( grpRatio, "ratioUpload" );
00783     ratioUpload->setEnabled( FALSE );
00784     ratioUpload->setMaxValue( 10000 );
00785     ratioUpload->setMinValue( 1 );
00786     layout24_2->addWidget( ratioUpload );
00787 
00788     txtSep = new QLabel( grpRatio, "txtSep" );
00789     txtSep->setEnabled( FALSE );
00790     layout24_2->addWidget( txtSep );
00791 
00792     ratioDownload = new KIntSpinBox( grpRatio, "ratioDownload" );
00793     ratioDownload->setEnabled( FALSE );
00794     ratioDownload->setMaxValue( 10000 );
00795     ratioDownload->setMinValue( 1 );
00796     layout24_2->addWidget( ratioDownload );
00797     QSpacerItem* spacer_26 = new QSpacerItem( 160, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
00798     layout24_2->addItem( spacer_26 );
00799     grpRatioLayout->addLayout( layout24_2 );
00800     tabLogLayout->addWidget( grpRatio );
00801     QSpacerItem* spacer_27 = new QSpacerItem( 20, 50, QSizePolicy::Minimum, QSizePolicy::Expanding );
00802     tabLogLayout->addItem( spacer_27 );
00803     tab->insertTab( tabLog, QString("") );
00804 
00805     tabMisc = new QWidget( tab, "tabMisc" );
00806     tabMiscLayout = new QVBoxLayout( tabMisc, KDialog::marginHint(), KDialog::spacingHint(), "tabMiscLayout"); 
00807 
00808     grpFacilities = new QGroupBox( tabMisc, "grpFacilities" );
00809     grpFacilities->setColumnLayout(0, Qt::Vertical );
00810     grpFacilities->layout()->setSpacing( 3 );
00811     grpFacilities->layout()->setMargin( 6 );
00812     grpFacilitiesLayout = new QGridLayout( grpFacilities->layout() );
00813     grpFacilitiesLayout->setAlignment( Qt::AlignTop );
00814 
00815     onlyIpv4 = new QCheckBox( grpFacilities, "onlyIpv4" );
00816 
00817     grpFacilitiesLayout->addMultiCellWidget( onlyIpv4, 0, 0, 0, 2 );
00818 
00819     activeFtp = new QCheckBox( grpFacilities, "activeFtp" );
00820 
00821     grpFacilitiesLayout->addMultiCellWidget( activeFtp, 1, 1, 0, 2 );
00822 
00823     usePassiveIp = new QCheckBox( grpFacilities, "usePassiveIp" );
00824 
00825     grpFacilitiesLayout->addWidget( usePassiveIp, 2, 0 );
00826 
00827     useUploadScript = new QCheckBox( grpFacilities, "useUploadScript" );
00828 
00829     grpFacilitiesLayout->addMultiCellWidget( useUploadScript, 3, 3, 0, 2 );
00830 
00831     allowResume = new QCheckBox( grpFacilities, "allowResume" );
00832 
00833     grpFacilitiesLayout->addMultiCellWidget( allowResume, 4, 4, 0, 2 );
00834 
00835     createHomeDir = new QCheckBox( grpFacilities, "createHomeDir" );
00836 
00837     grpFacilitiesLayout->addMultiCellWidget( createHomeDir, 5, 5, 0, 2 );
00838 
00839     useFortunes = new QCheckBox( grpFacilities, "useFortunes" );
00840 
00841     grpFacilitiesLayout->addMultiCellWidget( useFortunes, 6, 6, 0, 2 );
00842 
00843     layout56 = new QHBoxLayout( 0, 0, KDialog::spacingHint(), "layout56"); 
00844     QSpacerItem* spacer_28 = new QSpacerItem( 20, 10, QSizePolicy::Fixed, QSizePolicy::Minimum );
00845     layout56->addItem( spacer_28 );
00846 
00847     txtFortunesFile = new QLabel( grpFacilities, "txtFortunesFile" );
00848     txtFortunesFile->setEnabled( FALSE );
00849     layout56->addWidget( txtFortunesFile );
00850 
00851     fortunesFile = new KURLRequester( grpFacilities, "fortunesFile" );
00852     fortunesFile->setEnabled( FALSE );
00853     layout56->addWidget( fortunesFile );
00854 
00855     grpFacilitiesLayout->addMultiCellLayout( layout56, 7, 7, 0, 2 );
00856 
00857     passiveIp = new KLineEdit( grpFacilities, "passiveIp" );
00858     passiveIp->setEnabled( FALSE );
00859 
00860     grpFacilitiesLayout->addWidget( passiveIp, 2, 1 );
00861     tabMiscLayout->addWidget( grpFacilities );
00862 
00863     grpWorkarounds = new QGroupBox( tabMisc, "grpWorkarounds" );
00864     grpWorkarounds->setColumnLayout(0, Qt::Vertical );
00865     grpWorkarounds->layout()->setSpacing( 3 );
00866     grpWorkarounds->layout()->setMargin( 6 );
00867     grpWorkaroundsLayout = new QVBoxLayout( grpWorkarounds->layout() );
00868     grpWorkaroundsLayout->setAlignment( Qt::AlignTop );
00869 
00870     neverOverwrite = new QCheckBox( grpWorkarounds, "neverOverwrite" );
00871     grpWorkaroundsLayout->addWidget( neverOverwrite );
00872 
00873     noRename = new QCheckBox( grpWorkarounds, "noRename" );
00874     grpWorkaroundsLayout->addWidget( noRename );
00875 
00876     customerProof = new QCheckBox( grpWorkarounds, "customerProof" );
00877     grpWorkaroundsLayout->addWidget( customerProof );
00878 
00879     enableWorkarounds = new QCheckBox( grpWorkarounds, "enableWorkarounds" );
00880     grpWorkaroundsLayout->addWidget( enableWorkarounds );
00881     tabMiscLayout->addWidget( grpWorkarounds );
00882 
00883     grpFxp = new QGroupBox( tabMisc, "grpFxp" );
00884     grpFxp->setColumnLayout(0, Qt::Vertical );
00885     grpFxp->layout()->setSpacing( 3 );
00886     grpFxp->layout()->setMargin( 6 );
00887     grpFxpLayout = new QVBoxLayout( grpFxp->layout() );
00888     grpFxpLayout->setAlignment( Qt::AlignTop );
00889 
00890     fxpEveryone = new QCheckBox( grpFxp, "fxpEveryone" );
00891     grpFxpLayout->addWidget( fxpEveryone );
00892 
00893     fxpNonAnonym = new QCheckBox( grpFxp, "fxpNonAnonym" );
00894     grpFxpLayout->addWidget( fxpNonAnonym );
00895 
00896     fxpWarning = new QLabel( grpFxp, "fxpWarning" );
00897     fxpWarning->setTextFormat( QLabel::RichText );
00898     fxpWarning->setAlignment( int( QLabel::WordBreak | QLabel::AlignTop | QLabel::AlignLeft ) );
00899     grpFxpLayout->addWidget( fxpWarning );
00900     tabMiscLayout->addWidget( grpFxp );
00901     QSpacerItem* spacer_29 = new QSpacerItem( 20, 30, QSizePolicy::Minimum, QSizePolicy::Expanding );
00902     tabMiscLayout->addItem( spacer_29 );
00903     tab->insertTab( tabMisc, QString("") );
00904     KPureftpdScriptUILayout->addWidget( tab );
00905     languageChange();
00906     resize( QSize(566, 617).expandedTo(minimumSizeHint()) );
00907     clearWState( WState_Polished );
00908 
00909     // signals and slots connections
00910     connect( useChroot, SIGNAL( toggled(bool) ), this, SLOT( slotChroot(bool) ) );
00911     connect( anonLogin, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00912     connect( allowMkdir, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00913     connect( ftpUserDeny, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00914     connect( denyUpload, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00915     connect( anonReadDotFiles, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00916     connect( useChrootAll, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00917     connect( chrootGid, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00918     connect( useUploadScript, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00919     connect( allowResume, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00920     connect( createHomeDir, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00921     connect( nonAnonLogin, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00922     connect( readDotFiles, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00923     connect( writeDotFiles, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00924     connect( loginIp, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00925     connect( restrictedIp, SIGNAL( toggled(bool) ), this, SLOT( slotLoginIp(bool) ) );
00926     connect( disableChmod, SIGNAL( stateChanged(int) ), this, SLOT( slotConfigChanged() ) );
00927     connect( uidLogin, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00928     connect( idleTime, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00929     connect( maxFiles, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00930     connect( maxDepth, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00931     connect( filesUmask, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00932     connect( dirsUmask, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00933     connect( useUidLogin, SIGNAL( toggled(bool) ), this, SLOT( slotUidLogin(bool) ) );
00934     connect( usePassiveIp, SIGNAL( toggled(bool) ), this, SLOT( slotPassiveIp(bool) ) );
00935     connect( useFortunes, SIGNAL( toggled(bool) ), this, SLOT( slotFortunes(bool) ) );
00936     connect( pureftpd, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00937     connect( pureftpwho, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00938     connect( puremrtginfo, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00939     connect( pureauthd, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00940     connect( purequotacheck, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00941     connect( pureuploadscript, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00942     connect( purepw, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00943     connect( purepwconvert, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00944     connect( purestatsdecode, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00945     connect( pidFile, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00946     connect( clientsPerIp, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00947     connect( maxClients, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00948     connect( port, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00949     connect( address, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00950     connect( authAdd, SIGNAL( clicked() ), this, SLOT( slotConfigChanged() ) );
00951     connect( authModify, SIGNAL( clicked() ), this, SLOT( slotConfigChanged() ) );
00952     connect( authDelete, SIGNAL( clicked() ), this, SLOT( slotConfigChanged() ) );
00953     connect( authMoveUp, SIGNAL( clicked() ), this, SLOT( slotConfigChanged() ) );
00954     connect( authMoveDown, SIGNAL( clicked() ), this, SLOT( slotConfigChanged() ) );
00955     connect( pathLog, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00956     connect( resolve, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00957     connect( debug, SIGNAL( activated(const QString&) ), this, SLOT( slotConfigChanged() ) );
00958     connect( facility, SIGNAL( activated(const QString&) ), this, SLOT( slotConfigChanged() ) );
00959     connect( useSyslog, SIGNAL( toggled(bool) ), this, SLOT( slotSyslog(bool) ) );
00960     connect( logPid, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00961     connect( useFilelog, SIGNAL( toggled(bool) ), this, SLOT( slotFilelog(bool) ) );
00962     connect( logFormat, SIGNAL( activated(const QString&) ), this, SLOT( slotConfigChanged() ) );
00963     connect( portLow, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00964     connect( portHigh, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00965     connect( quotaMaxFiles, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00966     connect( quotaMaxSize, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00967     connect( diskPercent, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00968     connect( systemLoad, SIGNAL( valueChanged(double) ), this, SLOT( slotConfigChanged() ) );
00969     connect( bandUpload, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00970     connect( bandDownload, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00971     connect( ratioUpload, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00972     connect( ratioDownload, SIGNAL( valueChanged(int) ), this, SLOT( slotConfigChanged() ) );
00973     connect( usePortRange, SIGNAL( toggled(bool) ), this, SLOT( slotPortRange(bool) ) );
00974     connect( useQuota, SIGNAL( toggled(bool) ), this, SLOT( slotQuota(bool) ) );
00975     connect( useDiskLimit, SIGNAL( toggled(bool) ), this, SLOT( slotDiskLimit(bool) ) );
00976     connect( useLoadLimit, SIGNAL( toggled(bool) ), this, SLOT( slotLoadLimit(bool) ) );
00977     connect( onlyIpv4, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00978     connect( activeFtp, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00979     connect( fortunesFile, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00980     connect( neverOverwrite, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00981     connect( noRename, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00982     connect( customerProof, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00983     connect( enableWorkarounds, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00984     connect( fxpEveryone, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00985     connect( fxpNonAnonym, SIGNAL( toggled(bool) ), this, SLOT( slotConfigChanged() ) );
00986     connect( passiveIp, SIGNAL( textChanged(const QString&) ), this, SLOT( slotConfigChanged() ) );
00987     connect( grpBandwidth, SIGNAL( clicked(int) ), this, SLOT( slotBand(int) ) );
00988     connect( grpRatio, SIGNAL( clicked(int) ), this, SLOT( slotRatio(int) ) );
00989     connect( grpAuth, SIGNAL( clicked(int) ), this, SLOT( slotConfigChanged() ) );
00990 
00991     // tab order
00992     setTabOrder( tab, scriptName );
00993     setTabOrder( scriptName, scriptDescription );
00994     setTabOrder( scriptDescription, scriptAdd );
00995     setTabOrder( scriptAdd, scriptSave );
00996     setTabOrder( scriptSave, scriptRevert );
00997     setTabOrder( scriptRevert, scriptDelete );
00998     setTabOrder( scriptDelete, scriptList );
00999     setTabOrder( scriptList, outputFileName );
01000     setTabOrder( outputFileName, outputSave );
01001     setTabOrder( outputSave, outputView );
01002     setTabOrder( outputView, address );
01003     setTabOrder( address, port );
01004     setTabOrder( port, maxClients );
01005     setTabOrder( maxClients, clientsPerIp );
01006     setTabOrder( clientsPerIp, pidFile );
01007     setTabOrder( pidFile, pureftpd );
01008     setTabOrder( pureftpd, pureftpwho );
01009     setTabOrder( pureftpwho, puremrtginfo );
01010     setTabOrder( puremrtginfo, pureauthd );
01011     setTabOrder( pureauthd, purequotacheck );
01012     setTabOrder( purequotacheck, pureuploadscript );
01013     setTabOrder( pureuploadscript, purepw );
01014     setTabOrder( purepw, purepwconvert );
01015     setTabOrder( purepwconvert, purestatsdecode );
01016     setTabOrder( purestatsdecode, authMethod );
01017     setTabOrder( authMethod, authFile );
01018     setTabOrder( authFile, authList );
01019     setTabOrder( authList, authAdd );
01020     setTabOrder( authAdd, authModify );
01021     setTabOrder( authModify, authDelete );
01022     setTabOrder( authDelete, authMoveUp );
01023     setTabOrder( authMoveUp, authMoveDown );
01024     setTabOrder( authMoveDown, anonLogin );
01025     setTabOrder( anonLogin, allowMkdir );
01026     setTabOrder( allowMkdir, ftpUserDeny );
01027     setTabOrder( ftpUserDeny, denyUpload );
01028     setTabOrder( denyUpload, anonReadDotFiles );
01029     setTabOrder( anonReadDotFiles, nonAnonLogin );
01030     setTabOrder( nonAnonLogin, readDotFiles );
01031     setTabOrder( readDotFiles, writeDotFiles );
01032     setTabOrder( writeDotFiles, restrictedIp );
01033     setTabOrder( restrictedIp, loginIp );
01034     setTabOrder( loginIp, disableChmod );
01035     setTabOrder( disableChmod, useChrootAll );
01036     setTabOrder( useChrootAll, useChroot );
01037     setTabOrder( useChroot, chrootGid );
01038     setTabOrder( chrootGid, useUidLogin );
01039     setTabOrder( useUidLogin, uidLogin );
01040     setTabOrder( uidLogin, idleTime );
01041     setTabOrder( idleTime, maxFiles );
01042     setTabOrder( maxFiles, maxDepth );
01043     setTabOrder( maxDepth, filesUmask );
01044     setTabOrder( filesUmask, dirsUmask );
01045     setTabOrder( dirsUmask, debug );
01046     setTabOrder( debug, useSyslog );
01047     setTabOrder( useSyslog, facility );
01048     setTabOrder( facility, logPid );
01049     setTabOrder( logPid, useFilelog );
01050     setTabOrder( useFilelog, logFormat );
01051     setTabOrder( logFormat, pathLog );
01052     setTabOrder( pathLog, resolve );
01053     setTabOrder( resolve, usePortRange );
01054     setTabOrder( usePortRange, portLow );
01055     setTabOrder( portLow, portHigh );
01056     setTabOrder( portHigh, useQuota );
01057     setTabOrder( useQuota, quotaMaxFiles );
01058     setTabOrder( quotaMaxFiles, quotaMaxSize );
01059     setTabOrder( quotaMaxSize, useDiskLimit );
01060     setTabOrder( useDiskLimit, diskPercent );
01061     setTabOrder( diskPercent, useLoadLimit );
01062     setTabOrder( useLoadLimit, systemLoad );
01063     setTabOrder( systemLoad, bandNoRestriction );
01064     setTabOrder( bandNoRestriction, bandUpload );
01065     setTabOrder( bandUpload, bandDownload );
01066     setTabOrder( bandDownload, ratioNoRestriction );
01067     setTabOrder( ratioNoRestriction, ratioUpload );
01068     setTabOrder( ratioUpload, ratioDownload );
01069     setTabOrder( ratioDownload, onlyIpv4 );
01070     setTabOrder( onlyIpv4, activeFtp );
01071     setTabOrder( activeFtp, usePassiveIp );
01072     setTabOrder( usePassiveIp, passiveIp );
01073     setTabOrder( passiveIp, useUploadScript );
01074     setTabOrder( useUploadScript, allowResume );
01075     setTabOrder( allowResume, createHomeDir );
01076     setTabOrder( createHomeDir, useFortunes );
01077     setTabOrder( useFortunes, fortunesFile );
01078     setTabOrder( fortunesFile, neverOverwrite );
01079     setTabOrder( neverOverwrite, noRename );
01080     setTabOrder( noRename, customerProof );
01081     setTabOrder( customerProof, enableWorkarounds );
01082     setTabOrder( enableWorkarounds, fxpEveryone );
01083     setTabOrder( fxpEveryone, fxpNonAnonym );
01084 
01085     // buddies
01086     txtScriptDescription->setBuddy( scriptDescription );
01087     txtScriptName->setBuddy( scriptName );
01088     txtOutputFileName->setBuddy( outputFileName );
01089     txtAddress->setBuddy( address );
01090     txtPort->setBuddy( port );
01091     txtMaxClients->setBuddy( maxClients );
01092     txtClientsPerIp->setBuddy( clientsPerIp );
01093     txtPidFile->setBuddy( pidFile );
01094     txtAuthMethod->setBuddy( authMethod );
01095     txtAuthFile->setBuddy( authFile );
01096     txtLoginIp->setBuddy( loginIp );
01097     txtIdleTime->setBuddy( idleTime );
01098     txtMaxDepth->setBuddy( maxDepth );
01099     txtMaxFiles->setBuddy( maxFiles );
01100     txtFilesUmask->setBuddy( filesUmask );
01101     txtDirsUmask->setBuddy( dirsUmask );
01102     txtFacility->setBuddy( facility );
01103     txtPathLog->setBuddy( pathLog );
01104     txtLogFormat->setBuddy( logFormat );
01105     txtQuotaMaxSize->setBuddy( quotaMaxSize );
01106     txtPortLow->setBuddy( portLow );
01107     txtPortHigh->setBuddy( portHigh );
01108     txtQuotaMaxFiles->setBuddy( quotaMaxFiles );
01109     txtBandUp->setBuddy( bandUpload );
01110     txtBandDn->setBuddy( bandDownload );
01111     txtRatio->setBuddy( ratioUpload );
01112     txtFortunesFile->setBuddy( fortunesFile );
01113 }
01114 
01115 /*
01116  *  Destroys the object and frees any allocated resources
01117  */
01118 KPureftpdScriptUI::~KPureftpdScriptUI()
01119 {
01120     // no need to delete child widgets, Qt does it all for us
01121 }
01122 
01123 /*
01124  *  Sets the strings of the subwidgets using the current
01125  *  language.
01126  */
01127 void KPureftpdScriptUI::languageChange()
01128 {
01129     setCaption( tr2i18n( "KPureftpdScriptUI" ) );
01130     grpScript->setTitle( tr2i18n( "Script Templates" ) );
01131     txtScriptDescription->setText( tr2i18n( "Description" ) );
01132     txtScriptName->setText( tr2i18n( "Name:" ) );
01133     scriptAdd->setText( tr2i18n( "&Add" ) );
01134     scriptSave->setText( tr2i18n( "&Save" ) );
01135     scriptRevert->setText( tr2i18n( "&Revert" ) );
01136     scriptDelete->setText( tr2i18n( "&Delete" ) );
01137     scriptList->header()->setLabel( 0, tr2i18n( "Name" ) );
01138     scriptList->header()->setLabel( 1, tr2i18n( "Description" ) );
01139     scriptList->clear();
01140     QListViewItem * item = new QListViewItem( scriptList, 0 );
01141     item->setText( 0, tr2i18n( "Standalone" ) );
01142     item->setText( 1, tr2i18n( "PureFTPd run as a standalone server" ) );
01143 
01144     item = new QListViewItem( scriptList, item );
01145     item->setText( 0, tr2i18n( "Superserver" ) );
01146     item->setText( 1, tr2i18n( "PureFTPd run from xinetd or inetd-like superserver" ) );
01147 
01148     grpOutput->setTitle( tr2i18n( "Script Output" ) );
01149     txtOutputFileName->setText( tr2i18n( "&Filename:" ) );
01150     QWhatsThis::add( outputFileName, tr2i18n( "This is path where generated <b>pure-ftpd</b> configuration \n"
01151 "will be saved. Press the <b>folder</b> button on left side of \n"
01152 "edit line to choose where to save the output file." ) );
01153     outputSave->setText( tr2i18n( "Save" ) );
01154     QWhatsThis::add( outputSave, tr2i18n( "Click this button to save generated output to file specified \n"
01155 "in edit line. It will be disabled if you don't have rights to write \n"
01156 "or the file is part of inexistent directory." ) );
01157     QWhatsThis::add( outputView, tr2i18n( "This is output generated using selected script template \n"
01158 "and options selected in other configuration panels. If you \n"
01159 "want last minutes adjustment, not included in template, \n"
01160 "here you can add anything desired." ) );
01161     tab->changeTab( tabScripts, tr2i18n( "Scripts" ) );
01162     grpStandalone->setTitle( tr2i18n( "Standalone Server Options" ) );
01163     txtAddress->setText( tr2i18n( "&Address:" ) );
01164     QWhatsThis::add( address, tr2i18n( "The IP address where server will bind \n"
01165 "to listen for connections." ) );
01166     txtPort->setText( tr2i18n( "&Port:" ) );
01167     QWhatsThis::add( port, tr2i18n( "Enter here port where server \n"
01168 "will listen for connections when running in \n"
01169 "standalone mode. Usually it is 21 and should \n"
01170 "not need to be changed." ) );
01171     QWhatsThis::add( maxClients, tr2i18n( "Allow a maximum of clients  to  be  connected. \n"
01172 "If you use <i>Port Range</i> limit it will be forced \n"
01173 "down to half the number of ports specified. If more \n"
01174 "than this number are connected, new clients are rejected \n"
01175 "at once, even clients wishing to upload, or to log in as \n"
01176 "normal users." ) );
01177     txtMaxClients->setText( tr2i18n( "Maximum &clients:" ) );
01178     txtClientsPerIp->setText( tr2i18n( "Maximum clients per &IP:" ) );
01179     QWhatsThis::add( clientsPerIp, tr2i18n( "Limit  the number of simultaneous connections coming \n"
01180 "from the same IP address. This is yet another very \n"
01181 "effective  way to prevent denial of services \n"
01182 "and bandwidth starvation by a single user." ) );
01183     txtPidFile->setText( tr2i18n( "Pure-ftpd PI&D file:" ) );
01184     grpPaths->setTitle( tr2i18n( "Paths" ) );
01185     txtPureftpd->setText( tr2i18n( "pure-ftpd:" ) );
01186     QWhatsThis::add( pureftpd, tr2i18n( "This is path to <b>pure-ftpd</b> FTP server." ) );
01187     txtPureftpwho->setText( tr2i18n( "pure-ftpwho:" ) );
01188     QWhatsThis::add( pureftpwho, tr2i18n( "This is path to <b>pure-ftpwho</b> binary. \n"
01189 "This utility show current status of FTP connections." ) );
01190     txtPuremrtginfo->setText( tr2i18n( "pure-mrtginfo:" ) );
01191     txtPureauthd->setText( tr2i18n( "pure-authd" ) );
01192     txtPurequotacheck->setText( tr2i18n( "pure-quotacheck:" ) );
01193     txtPureuploadscript->setText( tr2i18n( "pure-uploadscript:" ) );
01194     QWhatsThis::add( pureuploadscript, tr2i18n( "This is path to <b>pure-uploadscript</b> binary. \n"
01195 "This utility is executed after a file is uploaded." ) );
01196     txtPurepw->setText( tr2i18n( "pure-pw:" ) );
01197     txtPurepwconvert->setText( tr2i18n( "pure-pwconvert:" ) );
01198     txtPurestatsdecode->setText( tr2i18n( "pure-statsdecode:" ) );
01199     tab->changeTab( tabNonAnonymous, tr2i18n( "Run" ) );
01200     grpAuth->setTitle( tr2i18n( "Authentication" ) );
01201     useAuthDefault->setText( tr2i18n( "Use default system authentication" ) );
01202     useAuthCustom->setText( tr2i18n( "Use customized authentication" ) );
01203     txtAuthMethod->setText( tr2i18n( "&Method:" ) );
01204     QWhatsThis::add( authMethod, tr2i18n( "<qt>Select  authentication to be used when \n"
01205 "FTP users are authenticated.</qt>" ) );
01206     txtAuthFile->setText( tr2i18n( "&Configuration file:" ) );
01207     QWhatsThis::add( authFile, tr2i18n( "<qt>Enter here the absolute path to the password database or \n"
01208 "the configuration file for the selected authentication method.</qt>" ) );
01209     authList->header()->setLabel( 0, tr2i18n( "Method" ) );
01210     authList->header()->setLabel( 1, tr2i18n( "Configuration file" ) );
01211     QWhatsThis::add( authList, tr2i18n( "<qt>Here is list with authentication methods which will be \n"
01212 "tried in order specified here when an user try to login in.\n"
01213 "<p>Please note that positions specify the order authentication methods are\n"
01214 "used when FTP user try to login in.</qt>" ) );
01215     authAdd->setText( tr2i18n( "&Add" ) );
01216     authModify->setText( tr2i18n( "&Modify" ) );
01217     authDelete->setText( tr2i18n( "Dele&te" ) );
01218     authMoveUp->setText( tr2i18n( "Move &Up" ) );
01219     authMoveDown->setText( tr2i18n( "Move &Down" ) );
01220     tab->changeTab( tabAuthentification, tr2i18n( "Authentication" ) );
01221     grpAnonymous->setTitle( tr2i18n( "Anonymous User Options" ) );
01222     QWhatsThis::add( grpAnonymous, tr2i18n( "<qml>Settings specific to anonymous users regarding\n"
01223 "upload-download ratio, bandwidth and rights on files \n"
01224 "and directories.</qml>" ) );
01225     anonLogin->setText( tr2i18n( "Only anonymous users can &log in" ) );
01226     QWhatsThis::add( anonLogin, tr2i18n( "<qt>Check this to allow only unauthenticated login. You have \n"
01227 "no option to authenticate as normal user.</qt>" ) );
01228     allowMkdir->setText( tr2i18n( "Allow direc&tories creation" ) );
01229     QWhatsThis::add( allowMkdir, tr2i18n( "<qt>Check this option if you have <b>strong</b> reasons to allow \n"
01230 "anonymous users to create new directories. Beware that this \n"
01231 "facility can be abused.</qt>" ) );
01232     ftpUserDeny->setText( tr2i18n( "D&eny downloading files owned by \"ftp\" user" ) );
01233     QWhatsThis::add( ftpUserDeny, tr2i18n( "<qt>Don't allow anonymous users to retrieve files owned \n"
01234 "by <b>ftp</b> user, generally  files uploaded by other anonymous \n"
01235 "users.</qt>" ) );
01236     denyUpload->setText( tr2i18n( "Deny u&pload under any conditions" ) );
01237     QWhatsThis::add( denyUpload, tr2i18n( "<qt>Disallow  upload  for  anonymous  users,  whatever \n"
01238 "directory permissions are.</qt>" ) );
01239     anonReadDotFiles->setText( tr2i18n( "Allow reading &files starting with a dot" ) );
01240     QWhatsThis::add( anonReadDotFiles, tr2i18n( "<qt>Allow anonymous users to read files and directories \n"
01241 "starting with a dot ('.').</qt>" ) );
01242     grpNonAnonymous->setTitle( tr2i18n( "Authenticated User Options" ) );
01243     nonAnonLogin->setText( tr2i18n( "Only authenticated users can &log in" ) );
01244     QWhatsThis::add( nonAnonLogin, tr2i18n( "<qt>Allow only authenticated login. Anonymous users are \n"
01245 " prohibited.</qt>" ) );
01246     readDotFiles->setText( tr2i18n( "Reading dot &files is prohibited" ) );
01247     QWhatsThis::add( readDotFiles, tr2i18n( "<qt>When this option is enabled, authenticated users \n"
01248 "can't read dot files, even if they own them.</qt>" ) );
01249     writeDotFiles->setText( tr2i18n( "Wri&ting dot files is prohibited" ) );
01250     QWhatsThis::add( writeDotFiles, tr2i18n( "<qt>When this option is checked, authenticated users \n"
01251 "can download dot-files, but not overwrite/create them, \n"
01252 "even if they own them. That way, you can prevent hosted \n"
01253 "users from messing.</qt>" ) );
01254     restrictedIp->setText( tr2i18n( "Allow auth&enticated login only at specified IP" ) );
01255     QWhatsThis::add( restrictedIp, tr2i18n( "<qt>Allow non-anonymous FTP access only on this specific \n"
01256 "local IP address. All other IP addresses are for anonymous access.</qt>" ) );
01257     txtLoginIp->setText( tr2i18n( "&IP address:" ) );
01258     QWhatsThis::add( loginIp, tr2i18n( "<qt>Enter here the IP address where is permited to login \n"
01259 "as authenticated user.</qt>" ) );
01260     tab->changeTab( tabAnonymous, tr2i18n( "Users" ) );
01261     grpChroot->setTitle( tr2i18n( "Security" ) );
01262     QWhatsThis::add( chrootGid, tr2i18n( "<qt>Enter here the GID number for which <i>chroot</i>-ing \n"
01263 "will <b>not</b> occur.</qt>" ) );
01264     disableChmod->setText( tr2i18n( "&Disable CHMOD command" ) );
01265     QWhatsThis::add( disableChmod, tr2i18n( "<qt>Disallow all users usage of the CHMOD command. \n"
01266 "Only <b>root</b> user can use CHMOD when this option is enabled.</qt>" ) );
01267     useUidLogin->setText( tr2i18n( "Don't allow &login for accounts bellow specified UID:" ) );
01268     useChroot->setText( tr2i18n( "Chroot everyone, but u&sers with GID:" ) );
01269     QWhatsThis::add( useChroot, tr2i18n( "<qt>Regular users will be <i>chroot</i>-ed to their home directories, \n"
01270 "unless they belong to the specified GID. Note that <b>root</b> user is \n"
01271 "always trusted, and that without this option <i>chroot</i>-ing occurs  \n"
01272 "only for anonymous FTP.</qt>" ) );
01273     useChrootAll->setText( tr2i18n( "Chroot everyone, but not &root" ) );
01274     QWhatsThis::add( useChrootAll, tr2i18n( "<qt><i>Chroot</i> everyone, but not <b>root</b> user. That way \n"
01275 "you can be sure users will not have access to entire file system, \n"
01276 "but only to their home directories.</qt>" ) );
01277     txtIdleTime->setText( tr2i18n( "Maximum &idle time:" ) );
01278     QWhatsThis::add( maxFiles, tr2i18n( "<qt>Avoid denial-of-service attacks by limiting the \n"
01279 "number of displayed files in a <b>ls</b> command. \n"
01280 "Default is 2000 files.</qt>" ) );
01281     txtMaxDepth->setText( tr2i18n( "Maximum recursive listing d&epth:" ) );
01282     idleTime->setSuffix( tr2i18n( "min" ) );
01283     QWhatsThis::add( maxDepth, tr2i18n( "<qt>Avoid denial-of-service attacks by limiting the \n"
01284 "maximum depth in a recursive <b>ls</b> command. \n"
01285 "Default is 5 subdirectories.</qt>" ) );
01286     txtMaxFiles->setText( tr2i18n( "Maximum listed &files:" ) );
01287     txtFilesUmask->setText( tr2i18n( "File creation umas&k:" ) );
01288     QWhatsThis::add( filesUmask, tr2i18n( "<qt>Change the mask for creation of new files. The default is 133 \n"
01289 "(files are readable, <i>but not writable</i> by other users). \n"
01290 "Be very carefull when setting <i>umask</i>. Read <b>sh(1)</b> \n"
01291 "manual page for more information.</qt>" ) );
01292     txtDirsUmask->setText( tr2i18n( "Directory creation u&mask:" ) );
01293     QWhatsThis::add( dirsUmask, tr2i18n( "<qt>Change the mask for creation of new directories. The default \n"
01294 "is 022 (directories can be listed, <i>but no file can be created</i> \n"
01295 "by other users). Be very carefull when setting <i>umask</i>. \n"
01296 "Read <b>sh(1)</b> manual page for more information.</qt>" ) );
01297     grpSyslog->setTitle( tr2i18n( "Logging" ) );
01298     txtDebug->setText( tr2i18n( "Debug messages:" ) );
01299     debug->clear();
01300     debug->insertItem( tr2i18n( "none" ) );
01301     debug->insertItem( tr2i18n( "normal" ) );
01302     debug->insertItem( tr2i18n( "high" ) );
01303     useSyslog->setText( tr2i18n( "Use s&yslog logging" ) );
01304     QWhatsThis::add( useSyslog, tr2i18n( "<qt>Check this option to have <b>pure-ftpd</b> messages \n"
01305 "logged to system syslog.</qt>" ) );
01306     QWhatsThis::add( facility, tr2i18n( "<qt>Make FTP server to use specified facility for all \n"
01307 "syslog messages. Default is <i>ftp</i>. See \n"
01308 "man page <b>syslog(3)</b> for more info.</qt>" ) );
01309     txtFacility->setText( tr2i18n( "Syslog &facility:" ) );
01310     logPid->setText( tr2i18n( "Add the &PID to s&yslog output" ) );
01311     QWhatsThis::add( logPid, tr2i18n( "<qt>Check this option to add PID (pure-ftpd process ID) \n"
01312 "to the syslog output.</qt>" ) );
01313     useFilelog->setText( tr2i18n( "&Record file transfers to a log file" ) );
01314     QWhatsThis::add( useFilelog, tr2i18n( "<qt>Check this option to record all files transfers \n"
01315 "into a specific log file.</qt>" ) );
01316     QWhatsThis::add( logFormat, tr2i18n( "<qt>Select here format for generated output when \n"
01317 "recording file transfers.</qt>" ) );
01318     QWhatsThis::add( pathLog, tr2i18n( "<qt>Enter here path where log file reside on file \n"
01319 "system. Usually a file in <tt>/var/log</tt> directory.</qt>" ) );
01320     txtPathLog->setText( tr2i18n( "Log f&ile:" ) );
01321     txtLogFormat->setText( tr2i18n( "&Log format:" ) );
01322     resolve->setText( tr2i18n( "Don't resolve hos&t names" ) );
01323     QWhatsThis::add( resolve, tr2i18n( "<qt>Check this option to disable IP addresses to host names \n"
01324 "resolving. This will speed up connections and is especially \n"
01325 "usefull on public FTP sites.</qt>" ) );
01326     tab->changeTab( tabSecurity, tr2i18n( "Security && Logging" ) );
01327     grpPortRange->setTitle( tr2i18n( "Limits" ) );
01328     txtQuotaMaxSize->setText( tr2i18n( "Maximum si&ze:" ) );
01329     QWhatsThis::add( portLow, tr2i18n( "<qt>Enter here the lowest port used in passive mode downloads.</qt>" ) );
01330     txtPortLow->setText( tr2i18n( "&Lowest port:" ) );
01331     quotaMaxSize->setSuffix( tr2i18n( "MB" ) );
01332     QWhatsThis::add( quotaMaxSize, tr2i18n( "<qt>Enter here the maximum number of megabytes an user can have in \n"
01333 "his directory.</qt>" ) );
01334     useQuota->setText( tr2i18n( "Use &virtual quotas" ) );
01335     QWhatsThis::add( useQuota, tr2i18n( "<qt>Check this option to enable <b>virtual quotas</b>. \n"
01336 "Members of trusted group aren't subject to quotas.</qt>" ) );
01337     txtPortHigh->setText( tr2i18n( "H&ighest port:" ) );
01338     usePortRange->setText( tr2i18n( "Limit used &port range" ) );
01339     QWhatsThis::add( usePortRange, tr2i18n( "<qt>Use only ports in the specified range (inclusive) \n"
01340 "for passive mode downloads. Note that the maximum number \n"
01341 "of clients is forced down to (higher port + 1 - lower port)/2 \n"
01342 "if it is greater, as the default is.</qt>" ) );
01343     QWhatsThis::add( quotaMaxFiles, tr2i18n( "<qt>Enter here the maximum number of files an user can have.</qt>" ) );
01344     QWhatsThis::add( portHigh, tr2i18n( "<qt>Enter here the highest port used in passive mode downloads.</qt>" ) );
01345     txtQuotaMaxFiles->setText( tr2i18n( "&Maximum files:" ) );
01346     useLoadLimit->setText( tr2i18n( "Deny anonymous do&wnload if system load is over the limit:" ) );
01347     QWhatsThis::add( useLoadLimit, tr2i18n( "<qt>Do not allow anonymous users to download files if the \n"
01348 "system load is above specified value when the user connects. \n"
01349 "Uploads and file listings are still allowed, as are downloads \n"
01350 "by authenticated users.</qt>" ) );
01351     diskPercent->setSuffix( tr2i18n( "%" ) );
01352     QWhatsThis::add( diskPercent, tr2i18n( "<qt>Enter here the maximum percentage a disk will be filled \n"
01353 "before uploads will be denied. Example: 95 will ensure that your \n"
01354 "disk will never get filled more than 95% by FTP users.</qt>" ) );
01355     QWhatsThis::add( systemLoad, tr2i18n( "<qt>Enter here the minimum system load for which anonymous \n"
01356 "downloads will be denied.</qt>" ) );
01357     useDiskLimit->setText( tr2i18n( "Disallow &uploads if disk is full than bellow percent:" ) );
01358     QWhatsThis::add( useDiskLimit, tr2i18n( "<qt>Disallow uploads if the disk partition is occupied\n"
01359 "more than the specified percentage.</qt>" ) );
01360     grpBandwidth->setTitle( tr2i18n( "Bandwidth Restriction" ) );
01361     bandNoRestriction->setText( tr2i18n( "No restriction" ) );
01362     bandAnon->setText( tr2i18n( "Only for anonymous users" ) );
01363     bandAll->setText( tr2i18n( "For all users" ) );
01364     txtBandUp->setText( tr2i18n( "&Upload bandwidth:" ) );
01365     bandUpload->setSuffix( tr2i18n( "kB/s" ) );
01366     bandUpload->setSpecialValueText( tr2i18n( "unlimited" ) );
01367     QWhatsThis::add( bandUpload, tr2i18n( "<qt>Enter here bandwidth for upload in kbytes per second.</qt>" ) );
01368     txtBandDn->setText( tr2i18n( "Do&wnload bandwidth:" ) );
01369     bandDownload->setSuffix( tr2i18n( "kB/s" ) );
01370     bandDownload->setSpecialValueText( tr2i18n( "unlimited" ) );
01371     QWhatsThis::add( bandDownload, tr2i18n( "<qt>Enter here bandwidth for download in kbytes per second.</qt>" ) );
01372     grpRatio->setTitle( tr2i18n( "Upload/Download Ratio" ) );
01373     ratioNoRestriction->setText( tr2i18n( "Don't use ratio" ) );
01374     ratioAnon->setText( tr2i18n( "Only for anonymous users" ) );
01375     ratioAll->setText( tr2i18n( "For all users" ) );
01376     txtRatio->setText( tr2i18n( "Upload/dow&nload ratio:" ) );
01377     QWhatsThis::add( ratioUpload, tr2i18n( "<qt>Enter here number which represent \"weight\" for download.</qt>" ) );
01378     txtSep->setText( tr2i18n( " / " ) );
01379     QWhatsThis::add( ratioDownload, tr2i18n( "<qt>Enter here number which represent \\\"weight\\\" for upload.</qt>" ) );
01380     tab->changeTab( tabLog, tr2i18n( "Limits" ) );
01381     grpFacilities->setTitle( tr2i18n( "Facilities" ) );
01382     onlyIpv4->setText( tr2i18n( "Listen only for IPv&4 connections" ) );
01383     QWhatsThis::add( onlyIpv4, tr2i18n( "<qt>Check this options to force <b>pure-ftpd</b> to listen only for \n"
01384 "IPv4 connections. That will disable IPv6 conectivity if you don't \n"
01385 "need it.</qt>" ) );
01386     activeFtp->setText( tr2i18n( "F&orce active FTP mode" ) );
01387     QWhatsThis::add( activeFtp, tr2i18n( "<qt>Force active mode. If your FTP server is \n"
01388 "behind a NAT server that doesn't support applicative FTP \n"
01389 "proxying, or if you use port redirection without a \n"
01390 "transparent FTP proxy, check this option.</qt>" ) );
01391     usePassiveIp->setText( tr2i18n( "Force specified IP address for p&assive mode:" ) );
01392     QWhatsThis::add( usePassiveIp, tr2i18n( "<qt>Force the specified IP address in reply to a \n"
01393 "PASV/EPSV/SPSV command. If the server is behind a \n"
01394 "masquerading (NAT) server that doesn't properly handle \n"
01395 "stateful FTP masquerading, put the IP address of \n"
01396 "that host here.</qt>" ) );
01397     useUploadScript->setText( tr2i18n( "Use &pure-uploadscript" ) );
01398     QWhatsThis::add( useUploadScript, tr2i18n( "<qt>Check this options to have <b>pure-uploadscript</b> \n"
01399 "executed after a file is uploaded.</qt>" ) );
01400     allowResume->setText( tr2i18n( "Allow &upload resuming" ) );
01401     QWhatsThis::add( allowResume, tr2i18n( "<qt>Allow users to resume and upload files, but <b>not</b> to \n"
01402 "delete  them. Directories can be removed, but only \n"
01403 "if they are empty.</qt>" ) );
01404     createHomeDir->setText( tr2i18n( "Create user's &home directory if it doesn't exist" ) );
01405     QWhatsThis::add( createHomeDir, tr2i18n( "<qt>If the home directory of an user doesn't exist, \n"
01406 "automatically create it. The newly created home directory \n"
01407 "belongs to the user, and permissions are set according \n"
01408 "to the current directory mask.</qt>" ) );
01409     useFortunes->setText( tr2i18n( "U&se fortunes in the login banner" ) );
01410     QWhatsThis::add( useFortunes, tr2i18n( "<qt>Display a funny random message in the initial login \n"
01411 "banner. The random cookies are extracted from a text file, \n"
01412 "in the standard <i>fortune</i> format.</qt>" ) );
01413     txtFortunesFile->setText( tr2i18n( "&Fortunes file:" ) );
01414     QWhatsThis::add( fortunesFile, tr2i18n( "<qt>Enter here the path to <i>fortune</i> file. If you \n"
01415 "installed the <b>fortune</b> package, you should have a \n"
01416 "directory (usually <tt>/usr/share/fortune</tt>) with binary files \n"
01417 "(<tt>xxxx.dat</tt>) and text files (without the <tt>.dat</tt> extension).</qt>" ) );
01418     QWhatsThis::add( passiveIp, tr2i18n( "<qt>Enter here the IP address in dot notation form, \n"
01419 "used in reply to PASV/EPSV/SPSV commands.</qt>" ) );
01420     grpWorkarounds->setTitle( tr2i18n( "Operating Workarounds" ) );
01421     neverOverwrite->setText( tr2i18n( "&Never overwrite existing files" ) );
01422     QWhatsThis::add( neverOverwrite, tr2i18n( "<qt>Never overwrite existing files. Uploading a file \n"
01423 "whoose name already exists cause an automatic \n"
01424 "rename. Files are called xyz.1, xyz.2, xyz.3, etc.</qt>" ) );
01425     noRename->setText( tr2i18n( "Disable &renaming files and directories" ) );
01426     customerProof->setText( tr2i18n( "Safeguards against customer mistakes" ) );
01427     enableWorkarounds->setText( tr2i18n( "Enable &workarounds for broken FTP clients" ) );
01428     QWhatsThis::add( enableWorkarounds, tr2i18n( "<qt>Check this option to force <b>pure-ftpd</b> to be broken. \n"
01429 "Turns on some compatibility hacks for shoddy clients, and for \n"
01430 "broken Netfilter gateways.</qt>" ) );
01431     grpFxp->setTitle( tr2i18n( "FXP Protocol" ) );
01432     fxpEveryone->setText( tr2i18n( "E&veryone can use FXP" ) );
01433     QWhatsThis::add( fxpEveryone, tr2i18n( "<qt>Enable the FXP protocol for everyone. <i>Beware \n"
01434 "that this protocol is unsecure by default. Do not use \n"
01435 "it on untrusted newtorks. It can be suitable only for your \n"
01436 "internal network</i>.</qt>" ) );
01437     fxpNonAnonym->setText( tr2i18n( "Allow FXP only for auth&enticated users" ) );
01438     QWhatsThis::add( fxpNonAnonym, tr2i18n( "<qt>Enable support for FXP protocol only for non-anoymous \n"
01439 "users only.</qt>" ) );
01440     fxpWarning->setText( tr2i18n( "<qt><b>Warning!</b><br>\n"
01441 "FXP protocol is an unsecure protocol. <i>Never</i> \n"
01442 "enable it on untrusted networks or Internet.</qt>" ) );
01443     tab->changeTab( tabMisc, tr2i18n( "Miscellaneous" ) );
01444 }
01445 
01446 #include "kcmpureftpdscriptui.moc"
Generated on Thu Jul 24 01:57:11 2003 by doxygen 1.2.15.