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.