Added support for clamd scanning.

This option has to be enabled in the new 'Backend' section of the
Options dialog.

Most configuration options are unavailable for use with 'clamdscan'.
For more information on the inherited limitations see the man page
for clamdscan(1).

This resolves issue #17.

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
pull/24/head
Mavridis Philippe 4 years ago
parent 3f7deb3593
commit 18923e4037
No known key found for this signature in database
GPG Key ID: F8D2D7E2F989A494

@ -40,7 +40,7 @@ tde_add_executable( ${PROJECT_NAME} AUTOMOC
activityviewer.cpp collectiondb.cpp activityviewer.cpp collectiondb.cpp
configdialog.cpp klamavconfig.kcfgc configdialog.cpp klamavconfig.kcfgc
archivelimits.ui archivetypes.ui specialfiletypes.ui archivelimits.ui archivetypes.ui specialfiletypes.ui
firstrunwizard.ui logoptions.ui firstrunwizard.ui logoptions.ui backend.ui
k3bjobprogressosd_mod.cpp k3bjobprogressosd_mod.cpp
LINK LINK

@ -0,0 +1,93 @@
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
<class>KlamBackend</class>
<widget class="TQWidget">
<property name="name">
<cstring>KlamBackend</cstring>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>480</height>
</rect>
</property>
<property name="caption">
<string>Scanning Backend</string>
</property>
<vbox>
<property name="name">
<cstring>unnamed</cstring>
</property>
<widget class="TQButtonGroup">
<property name="name">
<cstring>backendConfig</cstring>
</property>
<property name="title">
<string>Scanning Backend</string>
</property>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
<widget class="TQRadioButton" row="0" column="0" rowspan="1" colspan="2">
<property name="name">
<cstring>kcfg_ScannerClamscan</cstring>
</property>
<property name="text">
<string>Standalone scanner</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
<widget class="TQCheckBox" row="1" column="1">
<property name="name">
<cstring>kcfg_ClamdMultiscan</cstring>
</property>
<property name="text">
<string>Force Multiscan mode</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
<widget class="TQRadioButton" row="1" column="0">
<property name="name">
<cstring>kcfg_ScannerClamdscan</cstring>
</property>
<property name="text">
<string>ClamAV daemon</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</grid>
</widget>
<widget class="KTextBrowser">
<property name="name">
<cstring>backendHelpMessage</cstring>
</property>
<property name="textFormat">
<enum>RichText</enum>
</property>
<property name="text">
<string>Here you can choose the backend you'd like to use with KlamAV.
&lt;p&gt;&lt;b&gt;Standalone scanner&lt;/b&gt; uses the 'clamscan' command to perform a scan. This backend is configurable via KlamAV, but takes longer to start. This backend is also the easiest to set up, as it does not require running a system-wide daemon.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;ClamAV daemon&lt;/b&gt; uses the 'clamdscan' command to perform a scan. This backend depends on a running instance of the &lt;i&gt;clamd&lt;/i&gt; daemon and depends on the options of the daemon. This backend starts up faster and also makes use of the Multiscan feature.&lt;/p</string>
</property>
</widget>
</vbox>
</widget>
<slots>
<slot>slotToggleClamdcan(bool)</slot>
</slots>
<functions>
<function access="private" specifier="non virtual">init()</function>
</functions>
<layoutdefaults spacing="6" margin="11"/>
<includehints>
<includehint>ktextbrowser.h</includehint>
</includehints>
</UI>

@ -14,6 +14,7 @@ email : markey@web.de
***************************************************************************/ ***************************************************************************/
#include "configdialog.h" #include "configdialog.h"
#include "backend.h"
#include "archivelimits.h" #include "archivelimits.h"
#include "archivetypes.h" #include "archivetypes.h"
#include "specialfiletypes.h" #include "specialfiletypes.h"
@ -30,6 +31,7 @@ email : markey@web.de
#include <tqobjectlist.h> #include <tqobjectlist.h>
#include <tqpushbutton.h> #include <tqpushbutton.h>
#include <tqradiobutton.h> #include <tqradiobutton.h>
#include <tqcheckbox.h>
#include <tqspinbox.h> #include <tqspinbox.h>
#include <tqtextcodec.h> #include <tqtextcodec.h>
#include <tqtooltip.h> #include <tqtooltip.h>
@ -52,6 +54,7 @@ KlamavConfigDialog::KlamavConfigDialog( TQWidget *parent, const char* name, TDEC
setWFlags( WDestructiveClose ); setWFlags( WDestructiveClose );
// IMPORTANT Don't simply change the page names, they are used as identifiers in other parts of the app. // IMPORTANT Don't simply change the page names, they are used as identifiers in other parts of the app.
m_klambackend = new KlamBackend( 0, "Scanning Backend" );
m_archivelimits = new ArchiveLimits( 0, "Archive Limits" ); m_archivelimits = new ArchiveLimits( 0, "Archive Limits" );
m_archivetypes = new ArchiveTypes( 0, "Archive Types" ); m_archivetypes = new ArchiveTypes( 0, "Archive Types" );
m_emailprotection = new Sigtool ( 0, "E-mail protection" ); m_emailprotection = new Sigtool ( 0, "E-mail protection" );
@ -60,6 +63,10 @@ KlamavConfigDialog::KlamavConfigDialog( TQWidget *parent, const char* name, TDEC
m_logoptions = new LogOptions( 0, "Event Logging" ); m_logoptions = new LogOptions( 0, "Event Logging" );
// add pages // add pages
addPage( m_klambackend, i18n( "Backend" ), "system-run", i18n( "Configure Scanning Backend" ) );
connect( m_klambackend->kcfg_ScannerClamdscan, SIGNAL(toggled(bool)), this, SLOT(slotToggleClamdscan(bool)) );
slotToggleClamdscan( m_klambackend->kcfg_ScannerClamdscan->isOn() ); // initial state
addPage( m_archivelimits, i18n( "Archive Limits" ), "ark", i18n( "Configure Archive Limits" ) ); addPage( m_archivelimits, i18n( "Archive Limits" ), "ark", i18n( "Configure Archive Limits" ) );
addPage( m_archivetypes, i18n( "Archive Types" ), "application-x-tarz", i18n( "Configure Archive Types" ) ); addPage( m_archivetypes, i18n( "Archive Types" ), "application-x-tarz", i18n( "Configure Archive Types" ) );
addPage( m_emailprotection, i18n( "E-mail protection" ), "email", i18n( "Set up your e-mail client to use Klammail" ) ); addPage( m_emailprotection, i18n( "E-mail protection" ), "email", i18n( "Set up your e-mail client to use Klammail" ) );
@ -85,7 +92,13 @@ KlamavConfigDialog::~KlamavConfigDialog()
{ {
} }
void KlamavConfigDialog::slotToggleClamdscan(bool on)
{
m_klambackend->kcfg_ClamdMultiscan->setEnabled(on);
m_archivelimits->setEnabled(!on);
m_archivetypes->setEnabled(!on);
m_specialfiletypes->setEnabled(!on);
}
/** Show page by object name */ /** Show page by object name */
void KlamavConfigDialog::showPage( const TQCString& page ) void KlamavConfigDialog::showPage( const TQCString& page )

@ -40,10 +40,13 @@ class KlamavConfigDialog : public TDEConfigDialog
void showPage( const TQCString& page ); void showPage( const TQCString& page );
public slots:
void slotToggleClamdscan( bool on );
private: private:
bool clamdscan;
class KlamBackend *m_klambackend;
class ArchiveLimits *m_archivelimits; class ArchiveLimits *m_archivelimits;
class ArchiveTypes *m_archivetypes; class ArchiveTypes *m_archivetypes;
class SpecialFileTypes *m_specialfiletypes; class SpecialFileTypes *m_specialfiletypes;

@ -284,7 +284,7 @@ void Klamav::slotScheduleScan() {
klamscan->slotSchedule(); klamscan->slotSchedule();
} }
void Klamav::slotOptions() { void Klamav::slotOptions() {
slotConfigKlamav("Archive Limits"); slotConfigKlamav("Scanning Backend");
} }
void Klamav::slotToggleWelcome() { void Klamav::slotToggleWelcome() {

@ -3,6 +3,24 @@
<kcfg> <kcfg>
<kcfgfile name="klamavrc"/> <kcfgfile name="klamavrc"/>
<group name="KlamavBackend">
<entry name="ScannerClamscan" type="Bool">
<label>Standalone scanner</label>
<whatsthis>Use KlamAV without the ClamAV daemon.</whatsthis>
<default>true</default>
</entry>
<entry name="ScannerClamdscan" type="Bool">
<label>ClamAV daemon</label>
<whatsthis>Use KlamAV with the ClamAV daemon.</whatsthis>
<default>false</default>
</entry>
<entry name="ClamdMultiscan" type="Bool">
<label>Force Multiscan mode</label>
<whatsthis>Force clamdscan to use multiscan mode (scan multiple directories at once in separate threads). May lower scanning time.</whatsthis>
<default>true</default>
</entry>
</group>
<group name="ArchiveLimits"> <group name="ArchiveLimits">
<entry name="RecursionLevel" type="Int"> <entry name="RecursionLevel" type="Int">
<label>Maximum Recursion Level</label> <label>Maximum Recursion Level</label>

@ -295,7 +295,7 @@ void Klamscan::slotAdvOptions(){
dialog->raise(); dialog->raise();
dialog->setActiveWindow();*/ dialog->setActiveWindow();*/
tdemain->slotConfigKlamav( "Archive Limits" ); tdemain->slotConfigKlamav( "Scanning Backend" );
} }

@ -39,9 +39,9 @@ ScanViewer::ScanViewer(TQWidget *parent, const char *name)
: TQWidget(parent, name) : TQWidget(parent, name)
{ {
scanInProgress = TRUE; scanInProgress = TRUE;
multiScan = FALSE; multiScan = FALSE;
//TQGridLayout *layout = new TQGridLayout(this, 6, 3, 10, 4); //TQGridLayout *layout = new TQGridLayout(this, 6, 3, 10, 4);
layout = new TQGridLayout(this, 6, 3, 10, 4); layout = new TQGridLayout(this, 6, 3, 10, 4);
layout->setColStretch(0, 10); layout->setColStretch(0, 10);
@ -53,9 +53,9 @@ ScanViewer::ScanViewer(TQWidget *parent, const char *name)
layout->setRowStretch(2, 10); layout->setRowStretch(2, 10);
layout->addRowSpacing(4, 10); layout->addRowSpacing(4, 10);
layout->setRowStretch(4, 0); layout->setRowStretch(4, 0);
resultview = new TQListView(this); resultview = new TQListView(this);
resultview->setShowSortIndicator(true); resultview->setShowSortIndicator(true);
@ -77,24 +77,24 @@ ScanViewer::ScanViewer(TQWidget *parent, const char *name)
menu = new TQPopupMenu( resultview ); menu = new TQPopupMenu( resultview );
connect(resultview, SIGNAL( contextMenuRequested( TQListViewItem *, const TQPoint& , int ) ), connect(resultview, SIGNAL( contextMenuRequested( TQListViewItem *, const TQPoint& , int ) ),
this, SLOT( slotRMB( TQListViewItem *, const TQPoint &, int ) ) ); this, SLOT( slotRMB( TQListViewItem *, const TQPoint &, int ) ) );
status_frame = new TQFrame(this); status_frame = new TQFrame(this);
status_frame->setFrameStyle(TQFrame::Panel | TQFrame::Sunken); status_frame->setFrameStyle(TQFrame::Panel | TQFrame::Sunken);
TQBoxLayout *status_layout = new TQHBoxLayout(status_frame, 2); TQBoxLayout *status_layout = new TQHBoxLayout(status_frame, 2);
status_label = new TQLabel("", status_frame); status_label = new TQLabel("", status_frame);
status_layout->addWidget(status_label, 10); status_layout->addWidget(status_label, 10);
//matches_label = new TQLabel(status_frame); //matches_label = new TQLabel(status_frame);
//TQFontMetrics ml_fm(matches_label->fontMetrics()); //TQFontMetrics ml_fm(matches_label->fontMetrics());
//matches_label->setFixedWidth(ml_fm.width(i18n("9999 viruses/errors found"))); //matches_label->setFixedWidth(ml_fm.width(i18n("9999 viruses/errors found")));
//matches_label->setFixedHeight(ml_fm.lineSpacing()); //matches_label->setFixedHeight(ml_fm.lineSpacing());
//status_layout->addWidget(matches_label, 0); //status_layout->addWidget(matches_label, 0);
status_layout->activate(); status_layout->activate();
status_frame->adjustSize(); status_frame->adjustSize();
status_frame->setMinimumSize(status_frame->size()); status_frame->setMinimumSize(status_frame->size());
@ -103,7 +103,7 @@ ScanViewer::ScanViewer(TQWidget *parent, const char *name)
status2_frame = new TQFrame(this); status2_frame = new TQFrame(this);
status2_frame->setFrameStyle(TQFrame::Panel | TQFrame::Sunken); status2_frame->setFrameStyle(TQFrame::Panel | TQFrame::Sunken);
status2_layout = new TQHBoxLayout(status2_frame, 2); status2_layout = new TQHBoxLayout(status2_frame, 2);
status2_label = new TQLabel(i18n("Files scanned: 0"), status2_frame); status2_label = new TQLabel(i18n("Files scanned: 0"), status2_frame);
status2_layout->addWidget(status2_label, 10); status2_layout->addWidget(status2_label, 10);
status2_label->hide(); status2_label->hide();
@ -135,7 +135,7 @@ ScanViewer::ScanViewer(TQWidget *parent, const char *name)
matches2_label->setFixedWidth(ml_fm2.width(i18n("9999 viruses/problems found"))); matches2_label->setFixedWidth(ml_fm2.width(i18n("9999 viruses/problems found")));
matches2_label->setFixedHeight(ml_fm2.lineSpacing()); matches2_label->setFixedHeight(ml_fm2.lineSpacing());
status2_layout->addWidget(matches2_label, 0); status2_layout->addWidget(matches2_label, 0);
TQToolTip::add(matches2_label, i18n("cf. 'Flanderseses' - Homer Simpson. This childish joke will be removed when KlamAV is more mature.")); TQToolTip::add(matches2_label, i18n("cf. 'Flanderseses' - Homer Simpson. This childish joke will be removed when KlamAV is more mature."));
status2_layout->activate(); status2_layout->activate();
@ -144,7 +144,7 @@ ScanViewer::ScanViewer(TQWidget *parent, const char *name)
layout->addMultiCellWidget(status2_frame, 4, 4, 0, 2); layout->addMultiCellWidget(status2_frame, 4, 4, 0, 2);
layout->activate(); layout->activate();
@ -209,7 +209,7 @@ void ScanViewer::processOutput()
filesscanned++; filesscanned++;
if (!(showProgress)) if (!(showProgress))
status2_label->setText(i18n("Files scanned: %1").arg(filesscanned)); status2_label->setText(i18n("Files scanned: %1").arg(filesscanned));
//}else if ((pos = buf.section('\n',j,j).find("ERROR:")) != -1){ //}else if ((pos = buf.section('\n',j,j).find("ERROR:")) != -1){
}else if ((pos = (item2.find("ERROR:"))) != -1){ }else if ((pos = (item2.find("ERROR:"))) != -1){
TQString tmpVirusName = item2.mid((fnameEndPoint+1),(item2.length() - (fnameEndPoint+1))); TQString tmpVirusName = item2.mid((fnameEndPoint+1),(item2.length() - (fnameEndPoint+1)));
@ -241,7 +241,7 @@ void ScanViewer::processOutput()
"- Access Denied!").arg(tmpFName)); "- Access Denied!").arg(tmpFName));
CollectionDB::instance()->insertEvent("Error Found","Access Denied",tmpFName); CollectionDB::instance()->insertEvent("Error Found","Access Denied",tmpFName);
//}else if ((pos = buf.section('\n',j,j).find(": Can't open")) != -1){ //}else if ((pos = buf.section('\n',j,j).find(": Can't open")) != -1){
}else if ((pos = (item2.find(": Can't open"))) != -1){ }else if ((pos = (item2.find(": Can't open"))) != -1){
//status2_label->setText(i18n("Files scanned: %1").arg(++filesscanned)); //status2_label->setText(i18n("Files scanned: %1").arg(++filesscanned));
filesscanned++; filesscanned++;
@ -280,9 +280,9 @@ void ScanViewer::processOutput()
void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recursive, bool dcopscan) void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recursive, bool dcopscan)
{ {
//KMessageBox::information (this, filepattern); //KMessageBox::information (this, filepattern);
TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs(); TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
if(( args->isSet( "scanthis" ) ) || (dcopscan)) { if(( args->isSet( "scanthis" ) ) || (dcopscan)) {
calculateTime = FALSE; calculateTime = FALSE;
showProgress = FALSE; showProgress = FALSE;
@ -341,13 +341,16 @@ void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recur
//kdDebug() << filepattern << endl; //kdDebug() << filepattern << endl;
prog->setTotalSteps(cnt); prog->setTotalSteps(cnt);
kdDebug() << "COUNT" << cnt << endl; kdDebug() << "COUNT" << cnt << endl;
config = TDEGlobal::config(); config = TDEGlobal::config();
config->setGroup("KlamavBackend");
clamdscan = config->readBoolEntry("ScannerClamdscan", false);
slotClear(); slotClear();
QuarantineList.clear(); QuarantineList.clear();
errorsEncountered = FALSE; errorsEncountered = FALSE;
filesscanned = 0; filesscanned = 0;
//status2_label->setText(i18n("Scan in Progress...")); //status2_label->setText(i18n("Scan in Progress..."));
@ -363,17 +366,17 @@ void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recur
db = *ita; db = *ita;
} }
} }
////kdDebug() << "here 2" << endl; ////kdDebug() << "here 2" << endl;
TQString dbpath; TQString dbpath;
TQString excludes; TQString excludes;
TQString options; TQString options; // can not be used for clamdscan
if (!(db.isEmpty())) if (!(db.isEmpty()))
dbpath = TQString(" -d %1 ").arg(db); dbpath = TQString(" -d %1 ").arg(db);
config->setGroup("Klamscan"); config->setGroup("Klamscan");
if (config->readEntry("ExcludeQuarantine") == "Yes"){ if (config->readEntry("ExcludeQuarantine") == "Yes"){
config->setGroup("Kuarantine"); config->setGroup("Kuarantine");
TQStringList lastQuarLocations = config->readListEntry("KuarantineLocations"); TQStringList lastQuarLocations = config->readListEntry("KuarantineLocations");
@ -384,7 +387,7 @@ void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recur
excludes += TQString(" --exclude=%1 ").arg(quarloc); excludes += TQString(" --exclude=%1 ").arg(quarloc);
} }
//if ((recursive_box->isChecked() && !(multiScan)) || (multi_recursive && multiScan)) //if ((recursive_box->isChecked() && !(multiScan)) || (multi_recursive && multiScan))
if (recursive) if (recursive)
options += " -r "; options += " -r ";
@ -397,7 +400,7 @@ void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recur
// if (KlamavConfig::mBsToExtract() > 0) // if (KlamavConfig::mBsToExtract() > 0)
// options += "--max-space=" + TQString("%1").arg(KlamavConfig::mBsToExtract()) + " "; // options += "--max-space=" + TQString("%1").arg(KlamavConfig::mBsToExtract()) + " ";
// //
// if (KlamavConfig::compressionRatio() > 0) // if (KlamavConfig::compressionRatio() > 0)
// options += "--max-ratio=" + TQString("%1").arg(KlamavConfig::compressionRatio()) + " "; // options += "--max-ratio=" + TQString("%1").arg(KlamavConfig::compressionRatio()) + " ";
@ -410,7 +413,7 @@ void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recur
if (KlamavConfig::maxScanSize() > 0) if (KlamavConfig::maxScanSize() > 0)
options += "--max-scansize=" + TQString("%1").arg(KlamavConfig::maxScanSize()) + "M "; options += "--max-scansize=" + TQString("%1").arg(KlamavConfig::maxScanSize()) + "M ";
//config->setGroup("Klamscan"); //config->setGroup("Klamscan");
// if (KlamavConfig::virusLimitsExceeded()) // if (KlamavConfig::virusLimitsExceeded())
// options += "--block-max "; // options += "--block-max ";
@ -423,7 +426,7 @@ void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recur
if (!(KlamavConfig::scanHTML())) if (!(KlamavConfig::scanHTML()))
options += "--no-html "; options += "--no-html ";
if (!(KlamavConfig::scanPE())) if (!(KlamavConfig::scanPE()))
options += "--no-pe "; options += "--no-pe ";
@ -449,7 +452,7 @@ void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recur
else else
options+=" "; options+=" ";
} }
if (KlamavConfig::scanArj()){ if (KlamavConfig::scanArj()){
options += "--arj"; options += "--arj";
if ((KlamavConfig::arjUsing()) != "") if ((KlamavConfig::arjUsing()) != "")
@ -465,7 +468,7 @@ void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recur
else else
options+=" "; options+=" ";
} }
if (KlamavConfig::scanLzh()){ if (KlamavConfig::scanLzh()){
options += "--lha"; options += "--lha";
if ((KlamavConfig::lzhUsing()) != "") if ((KlamavConfig::lzhUsing()) != "")
@ -506,21 +509,59 @@ void ScanViewer::slotScan(const TQStringList & filepattern, int mode, bool recur
options+=" "; options+=" ";
} }
kdDebug() << "clamscan -v " if(clamdscan) {
<< excludes << " " // make sure that clamd is running
<< dbpath << " " FILE* clamdpid;
<< options << " " if( clamdpid = fopen("/run/clamav/clamd.pid","r") )
<< "'" + m_filepattern.join("' '") + "'" << endl; fclose(clamdpid); // it's ok
else {
int choice = KMessageBox::warningYesNoCancel(
this,
i18n("The ClamAV daemon does not seem to be running on this system. Do you really want to continue with this scan or would you like to launch a standalone scan instead?'"),
i18n("Clamd not running"),
i18n("Continue this scan"),
i18n("Launch standalone scan"),
i18n("Do not ask me again")
);
switch(choice) {
case 2: // cancel
return;
break;
case 4: // launch standalone scan
clamdscan = false;
break;
}
}
}
childproc = new KProcIO(); childproc = new KProcIO();
childproc->setUseShell(TRUE); childproc->setUseShell(TRUE);
childproc->setUsePty (KProcIO::Stdout,TRUE); childproc->setUsePty (KProcIO::Stdout,TRUE);
*childproc << "clamscan -v "; if(clamdscan) {
*childproc << excludes << " "; config->setGroup("KlamavBackend");
*childproc << dbpath << " "; TQString multiscanOption = config->readBoolEntry("ClamdMultiscan", true) ? " -m " : "";
*childproc << options << " ";
kdDebug() << "clamdscan -v "
<< multiscanOption
<< "'" + m_filepattern.join("' '") + "'" << endl;
*childproc << "clamdscan -v ";
*childproc << multiscanOption;
} else {
kdDebug() << "clamscan -v "
<< excludes << " "
<< dbpath << " "
<< options << " "
<< "'" + m_filepattern.join("' '") + "'" << endl;
*childproc << "clamscan -v ";
*childproc << excludes << " ";
*childproc << dbpath << " ";
*childproc << options << " ";
}
*childproc << "'" + m_filepattern.join("' '") + "'"; *childproc << "'" + m_filepattern.join("' '") + "'";
@ -601,7 +642,7 @@ void ScanViewer::childExited()
int status = childproc->exitStatus(); int status = childproc->exitStatus();
int result; int result;
status2_label->setText( i18n("Scan Complete") ); status2_label->setText( i18n("Scan Complete") );
CollectionDB::instance()->insertEvent("Manual Scan",TQString("Scan Complete"),m_filepattern.join(" ")); CollectionDB::instance()->insertEvent("Manual Scan",TQString("Scan Complete"),m_filepattern.join(" "));
@ -743,7 +784,7 @@ void ScanViewer::Quarantine(){
KMessageBox::information (this,i18n("<p>There was a problem quarantining <b>%1</b>. Check your diskspace, the permissions on your quarantine location and whether a file with the same name already exists in the quarantine. </p>").arg(fname)); KMessageBox::information (this,i18n("<p>There was a problem quarantining <b>%1</b>. Check your diskspace, the permissions on your quarantine location and whether a file with the same name already exists in the quarantine. </p>").arg(fname));
} }
} }
} }
if (allQuarantined) if (allQuarantined)
@ -752,7 +793,7 @@ void ScanViewer::Quarantine(){
tdemain->_tray->setPixmap(KSystemTray::loadIcon("klamav_scan_found")); tdemain->_tray->setPixmap(KSystemTray::loadIcon("klamav_scan_found"));
config->writeEntry(TQString("Items %1").arg(quarloc), lastQuarItems); config->writeEntry(TQString("Items %1").arg(quarloc), lastQuarItems);
config->sync(); config->sync();
//tdemain->kuarantine->refresh(); //tdemain->kuarantine->refresh();
@ -807,7 +848,7 @@ void ScanViewer::slotQuarantineSelected()
TQPtrList<TQListViewItem> list; TQPtrList<TQListViewItem> list;
TQListViewItemIterator it( resultview, TQListViewItemIterator::Selected ); TQListViewItemIterator it( resultview, TQListViewItemIterator::Selected );
QuarantineList = ""; QuarantineList = "";
while ( it.current() ) { while ( it.current() ) {
TQListViewItem* tItem = it.current(); TQListViewItem* tItem = it.current();
@ -844,7 +885,7 @@ void ScanViewer::slotStartAgain()
calculateTime = TRUE; calculateTime = TRUE;
emit scanStartingAgain(this); emit scanStartingAgain(this);
slotScan(m_filepattern, m_mode, m_recursive,false); slotScan(m_filepattern, m_mode, m_recursive,false);
} }
@ -865,22 +906,22 @@ void ScanViewer::slotCancelScanTime()
// void ScanViewer::startProgress() // void ScanViewer::startProgress()
// { // {
// //
// cnt = 0; // cnt = 0;
// //kdDebug() << "m_filepattern" << m_filepattern << endl; // //kdDebug() << "m_filepattern" << m_filepattern << endl;
// TQDir d( m_filepattern ); // TQDir d( m_filepattern );
// // int num = countFiles(d); // // int num = countFiles(d);
// // if (countFiles(d) > 0) // // if (countFiles(d) > 0)
// // //kdDebug() << "count" << num << endl; // // //kdDebug() << "count" << num << endl;
// //
// progress = new KProgressDialog (this, "progress", i18n( "Loading .." ), i18n( "Loading..." ), true); // progress = new KProgressDialog (this, "progress", i18n( "Loading .." ), i18n( "Loading..." ), true);
// progress->setAllowCancel(false); // progress->setAllowCancel(false);
// prog = progress->progressBar(); // prog = progress->progressBar();
// progress->setLabel(i18n( "Loading lots and lots and lots of virus information" )); // progress->setLabel(i18n( "Loading lots and lots and lots of virus information" ));
// //int cnt = countFiles(d); // //int cnt = countFiles(d);
// prog->setTotalSteps(countFiles(d)); // prog->setTotalSteps(countFiles(d));
// //kdDebug() << "COUNT" << countFiles(d) << endl; // //kdDebug() << "COUNT" << countFiles(d) << endl;
// //
// } // }
int ScanViewer::countFiles( TQDir & root) int ScanViewer::countFiles( TQDir & root)
@ -894,15 +935,15 @@ int ScanViewer::countFiles( TQDir & root)
} }
TQStringList entries = root.entryList( TQDir::Dirs | TQDir::Files | TQDir::Hidden); TQStringList entries = root.entryList( TQDir::Dirs | TQDir::Files | TQDir::Hidden);
////kdDebug() << "count" << counter << endl; ////kdDebug() << "count" << counter << endl;
for (TQStringList::size_type j = 0; j < entries.size(); j++ ) for (TQStringList::size_type j = 0; j < entries.size(); j++ )
{ {
TQString entry = entries[j]; TQString entry = entries[j];
if( entry == "." || entry == "..") if( entry == "." || entry == "..")
continue; continue;
TQFileInfo fi(root, entry ); TQFileInfo fi(root, entry );
entry = fi.absFilePath(); entry = fi.absFilePath();
@ -980,7 +1021,7 @@ void ScanViewer::slotOnItem( TQListViewItem * lineitem)
status_label->setText( message); status_label->setText( message);
} }
void ScanViewer::slotOffItem( ) void ScanViewer::slotOffItem( )

@ -59,7 +59,7 @@ public:
/** /**
* Use this method to load whatever file/URL you have * Use this method to load whatever file/URL you have
*/ */
//void setDirName(TQString); //void setDirName(TQString);
void slotScan(const TQStringList & filepattern, int mode, bool recursive, bool dcopscan); void slotScan(const TQStringList & filepattern, int mode, bool recursive, bool dcopscan);
void slotCancel(); void slotCancel();
@ -128,6 +128,7 @@ private:
void Quarantine(); void Quarantine();
void askUser(); void askUser();
int countFiles( TQDir & root); int countFiles( TQDir & root);
TQString scanner;
//void ScanViewer::startProgress(); //void ScanViewer::startProgress();
TQLineEdit *template_edit; TQLineEdit *template_edit;
TQComboBox *files_combo, *pattern_combo, *check_combo; TQComboBox *files_combo, *pattern_combo, *check_combo;
@ -173,6 +174,7 @@ private:
bool calculateTime; bool calculateTime;
bool showProgress; bool showProgress;
TQFrame *status_frame; TQFrame *status_frame;
bool clamdscan;
}; };
#endif // _SCANVIEWER_H_ #endif // _SCANVIEWER_H_

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2021-01-30 18:34+0200\n" "POT-Creation-Date: 2021-02-05 22:20+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -49,46 +49,54 @@ msgstr ""
msgid "Multiple Directories Selected" msgid "Multiple Directories Selected"
msgstr "" msgstr ""
#: configdialog.cpp:66
msgid "Backend"
msgstr ""
#: configdialog.cpp:66
msgid "Configure Scanning Backend"
msgstr ""
#: archivelimits.ui:16 archivelimits.ui:38 #: archivelimits.ui:16 archivelimits.ui:38
#: archivetypes.ui:16 configdialog.cpp:63 #: archivetypes.ui:16 configdialog.cpp:70
#, no-c-format #, no-c-format
msgid "Archive Limits" msgid "Archive Limits"
msgstr "" msgstr ""
#: configdialog.cpp:63 #: configdialog.cpp:70
msgid "Configure Archive Limits" msgid "Configure Archive Limits"
msgstr "" msgstr ""
#: archivetypes.ui:27 configdialog.cpp:64 klamscanoptions.cpp:201 #: archivetypes.ui:27 configdialog.cpp:71 klamscanoptions.cpp:201
#, no-c-format #, no-c-format
msgid "Archive Types" msgid "Archive Types"
msgstr "" msgstr ""
#: configdialog.cpp:64 #: configdialog.cpp:71
msgid "Configure Archive Types" msgid "Configure Archive Types"
msgstr "" msgstr ""
#: configdialog.cpp:65 #: configdialog.cpp:72
msgid "E-mail protection" msgid "E-mail protection"
msgstr "" msgstr ""
#: configdialog.cpp:65 #: configdialog.cpp:72
msgid "Set up your e-mail client to use Klammail" msgid "Set up your e-mail client to use Klammail"
msgstr "" msgstr ""
#: configdialog.cpp:66 #: configdialog.cpp:73
msgid "File Types" msgid "File Types"
msgstr "" msgstr ""
#: configdialog.cpp:66 #: configdialog.cpp:73
msgid "Configure File Types" msgid "Configure File Types"
msgstr "" msgstr ""
#: configdialog.cpp:68 #: configdialog.cpp:75
msgid "Event Logging" msgid "Event Logging"
msgstr "" msgstr ""
#: configdialog.cpp:68 #: configdialog.cpp:75
msgid "Configure Events to Log" msgid "Configure Events to Log"
msgstr "" msgstr ""
@ -539,7 +547,7 @@ msgstr ""
msgid "Update Process Died Unexpectedly!" msgid "Update Process Died Unexpectedly!"
msgstr "" msgstr ""
#: freshklam.cpp:491 scanviewer.cpp:633 #: freshklam.cpp:491 scanviewer.cpp:674
msgid "Unknown option passed." msgid "Unknown option passed."
msgstr "" msgstr ""
@ -720,7 +728,7 @@ msgstr ""
msgid "Welcome" msgid "Welcome"
msgstr "" msgstr ""
#: klamav.cpp:214 scanviewer.cpp:621 #: klamav.cpp:214 scanviewer.cpp:662
msgid "Quarantine" msgid "Quarantine"
msgstr "" msgstr ""
@ -958,11 +966,11 @@ msgid ""
"your self." "your self."
msgstr "" msgstr ""
#: kuarantine.cpp:640 kuarantine.cpp:646 scanviewer.cpp:798 #: kuarantine.cpp:640 kuarantine.cpp:646 scanviewer.cpp:839
msgid "Search for %1 with Trend Micro" msgid "Search for %1 with Trend Micro"
msgstr "" msgstr ""
#: kuarantine.cpp:641 kuarantine.cpp:647 scanviewer.cpp:800 #: kuarantine.cpp:641 kuarantine.cpp:647 scanviewer.cpp:841
msgid "Search for %1 with Google" msgid "Search for %1 with Google"
msgstr "" msgstr ""
@ -1025,7 +1033,7 @@ msgid ""
msgstr "" msgstr ""
#: scanviewer.cpp:211 scanviewer.cpp:224 scanviewer.cpp:233 scanviewer.cpp:239 #: scanviewer.cpp:211 scanviewer.cpp:224 scanviewer.cpp:233 scanviewer.cpp:239
#: scanviewer.cpp:249 scanviewer.cpp:257 scanviewer.cpp:668 #: scanviewer.cpp:249 scanviewer.cpp:257 scanviewer.cpp:709
#, c-format #, c-format
msgid "Files scanned: %1" msgid "Files scanned: %1"
msgstr "" msgstr ""
@ -1042,154 +1050,177 @@ msgstr ""
msgid "Files scanned:" msgid "Files scanned:"
msgstr "" msgstr ""
#: scanviewer.cpp:563 #: scanviewer.cpp:520
msgid ""
"The ClamAV daemon does not seem to be running on this system. Do you really "
"want to continue with this scan or would you like to launch a standalone "
"scan instead?'"
msgstr ""
#: scanviewer.cpp:521
msgid "Clamd not running"
msgstr ""
#: scanviewer.cpp:522
msgid "Continue this scan"
msgstr ""
#: scanviewer.cpp:523
msgid "Launch standalone scan"
msgstr ""
#: scanviewer.cpp:524
msgid "Do not ask me again"
msgstr ""
#: scanviewer.cpp:604
msgid "" msgid ""
"If viruses were found, you can right-click to quarantine selected files." "If viruses were found, you can right-click to quarantine selected files."
msgstr "" msgstr ""
#: scanviewer.cpp:588 #: scanviewer.cpp:629
msgid "Cancelled" msgid "Cancelled"
msgstr "" msgstr ""
#: scanviewer.cpp:605 #: scanviewer.cpp:646
msgid "Scan Complete" msgid "Scan Complete"
msgstr "" msgstr ""
#: scanviewer.cpp:612 #: scanviewer.cpp:653
msgid "Scan Complete - No Viruses Found!" msgid "Scan Complete - No Viruses Found!"
msgstr "" msgstr ""
#: scanviewer.cpp:614 #: scanviewer.cpp:655
msgid "Scan Complete - No Viruses Found But Some Errors Encountered!" msgid "Scan Complete - No Viruses Found But Some Errors Encountered!"
msgstr "" msgstr ""
#: scanviewer.cpp:621 #: scanviewer.cpp:662
msgid "" msgid ""
"I'm going to quarantine this lot, you can restore them later if you want. If " "I'm going to quarantine this lot, you can restore them later if you want. If "
"you don't want to quarantine, just press cancel." "you don't want to quarantine, just press cancel."
msgstr "" msgstr ""
#: scanviewer.cpp:621 #: scanviewer.cpp:662
msgid "Quarantine Infected Files" msgid "Quarantine Infected Files"
msgstr "" msgstr ""
#: scanviewer.cpp:631 #: scanviewer.cpp:672
msgid "Scan Complete - Viruses Found!" msgid "Scan Complete - Viruses Found!"
msgstr "" msgstr ""
#: scanviewer.cpp:635 #: scanviewer.cpp:676
msgid "Database initialization error." msgid "Database initialization error."
msgstr "" msgstr ""
#: scanviewer.cpp:637 #: scanviewer.cpp:678
msgid "Not supported file type." msgid "Not supported file type."
msgstr "" msgstr ""
#: scanviewer.cpp:639 #: scanviewer.cpp:680
msgid "Can't open directory." msgid "Can't open directory."
msgstr "" msgstr ""
#: scanviewer.cpp:641 #: scanviewer.cpp:682
msgid "Can't open file. (ofm)" msgid "Can't open file. (ofm)"
msgstr "" msgstr ""
#: scanviewer.cpp:643 #: scanviewer.cpp:684
msgid "Error reading file. (ofm)" msgid "Error reading file. (ofm)"
msgstr "" msgstr ""
#: scanviewer.cpp:645 #: scanviewer.cpp:686
msgid "Can't stat input file / directory." msgid "Can't stat input file / directory."
msgstr "" msgstr ""
#: scanviewer.cpp:647 #: scanviewer.cpp:688
msgid "Can't get absolute path name of current working directory." msgid "Can't get absolute path name of current working directory."
msgstr "" msgstr ""
#: scanviewer.cpp:649 #: scanviewer.cpp:690
msgid "I/O error, please check your filesystem." msgid "I/O error, please check your filesystem."
msgstr "" msgstr ""
#: scanviewer.cpp:651 #: scanviewer.cpp:692
msgid "Can't get information about current user from /etc/passwd." msgid "Can't get information about current user from /etc/passwd."
msgstr "" msgstr ""
#: scanviewer.cpp:653 #: scanviewer.cpp:694
msgid "" msgid ""
"Can't get information about user 'clamav' (default name) from /etc/passwd." "Can't get information about user 'clamav' (default name) from /etc/passwd."
msgstr "" msgstr ""
#: scanviewer.cpp:655 #: scanviewer.cpp:696
msgid "Can't fork." msgid "Can't fork."
msgstr "" msgstr ""
#: scanviewer.cpp:657 #: scanviewer.cpp:698
msgid "Can't create temporary files/directories (check permissions)." msgid "Can't create temporary files/directories (check permissions)."
msgstr "" msgstr ""
#: scanviewer.cpp:659 #: scanviewer.cpp:700
msgid "Can't write to temporary directory (please specify another one)." msgid "Can't write to temporary directory (please specify another one)."
msgstr "" msgstr ""
#: scanviewer.cpp:661 #: scanviewer.cpp:702
msgid "Can't allocate and clear memory (calloc)." msgid "Can't allocate and clear memory (calloc)."
msgstr "" msgstr ""
#: scanviewer.cpp:663 #: scanviewer.cpp:704
msgid "Can't allocate memory (malloc)." msgid "Can't allocate memory (malloc)."
msgstr "" msgstr ""
#: scanviewer.cpp:665 #: scanviewer.cpp:706
msgid "Unspecified Error!" msgid "Unspecified Error!"
msgstr "" msgstr ""
#: scanviewer.cpp:693 #: scanviewer.cpp:734
msgid "0 viruses/problems found" msgid "0 viruses/problems found"
msgstr "" msgstr ""
#: scanviewer.cpp:743 #: scanviewer.cpp:784
msgid "" msgid ""
"<p>There was a problem quarantining <b>%1</b>. Check your diskspace, the " "<p>There was a problem quarantining <b>%1</b>. Check your diskspace, the "
"permissions on your quarantine location and whether a file with the same " "permissions on your quarantine location and whether a file with the same "
"name already exists in the quarantine. </p>" "name already exists in the quarantine. </p>"
msgstr "" msgstr ""
#: scanviewer.cpp:930 #: scanviewer.cpp:971
msgid "Please Wait" msgid "Please Wait"
msgstr "" msgstr ""
#: scanviewer.cpp:967 #: scanviewer.cpp:1008
msgid "Attempts to scan " msgid "Attempts to scan "
msgstr "" msgstr ""
#: scanviewer.cpp:967 #: scanviewer.cpp:1008
msgid " resulted in exceeding a limit you set in 'Archive Limits'." msgid " resulted in exceeding a limit you set in 'Archive Limits'."
msgstr "" msgstr ""
#: scanviewer.cpp:969 #: scanviewer.cpp:1010
msgid " contains the ClamAV test signature. It's not a virus." msgid " contains the ClamAV test signature. It's not a virus."
msgstr "" msgstr ""
#: scanviewer.cpp:971 #: scanviewer.cpp:1012
msgid " is a damaged exectuable. Some viruses use this to conceal themselves." msgid " is a damaged exectuable. Some viruses use this to conceal themselves."
msgstr "" msgstr ""
#: scanviewer.cpp:973 #: scanviewer.cpp:1014
msgid " has a form of zip compression sometimes used by viruses." msgid " has a form of zip compression sometimes used by viruses."
msgstr "" msgstr ""
#: scanviewer.cpp:975 #: scanviewer.cpp:1016
msgid " is an encrypted zip file." msgid " is an encrypted zip file."
msgstr "" msgstr ""
#: scanviewer.cpp:977 #: scanviewer.cpp:1018
msgid " is an encrypted RAR file." msgid " is an encrypted RAR file."
msgstr "" msgstr ""
#: scanviewer.cpp:979 #: scanviewer.cpp:1020
msgid " is mis-formatted in a way sometimes used by viruses." msgid " is mis-formatted in a way sometimes used by viruses."
msgstr "" msgstr ""
#: scanviewer.cpp:990 #: scanviewer.cpp:1031
msgid "" msgid ""
"Hover over each entry for more info. Right-click on entries for more options." "Hover over each entry for more info. Right-click on entries for more options."
msgstr "" msgstr ""
@ -1280,23 +1311,23 @@ msgstr ""
msgid "Once only" msgid "Once only"
msgstr "" msgstr ""
#: sigtool.cpp:33 #: sigtool.cpp:34
msgid "Email Client" msgid "Email Client"
msgstr "" msgstr ""
#: sigtool.cpp:49 #: sigtool.cpp:50
msgid "Choose your email client:" msgid "Choose your email client:"
msgstr "" msgstr ""
#: sigtool.cpp:65 #: sigtool.cpp:66
msgid "Configure Automatically" msgid "Configure Automatically"
msgstr "" msgstr ""
#: sigtool.cpp:69 #: sigtool.cpp:70
msgid "Tell me how to do it" msgid "Tell me how to do it"
msgstr "" msgstr ""
#: sigtool.cpp:84 #: sigtool.cpp:85
msgid "" msgid ""
"This will help you configure your email client to scan incoming and outgoing " "This will help you configure your email client to scan incoming and outgoing "
"mail with KlamAV. Not all mail clients are fully supported yet. Infected " "mail with KlamAV. Not all mail clients are fully supported yet. Infected "
@ -1304,27 +1335,27 @@ msgid ""
"telling you the name of the virus and other relevant details." "telling you the name of the virus and other relevant details."
msgstr "" msgstr ""
#: sigtool.cpp:86 #: sigtool.cpp:87
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
#: sigtool.cpp:130 #: sigtool.cpp:131
msgid "Please ensure KMail is not open before we proceed." msgid "Please ensure KMail is not open before we proceed."
msgstr "" msgstr ""
#: sigtool.cpp:152 #: sigtool.cpp:153
msgid "" msgid ""
"You're already set up! Sure you haven't already configured KMail for KlamAV " "You're already set up! Sure you haven't already configured KMail for KlamAV "
"scanning?" "scanning?"
msgstr "" msgstr ""
#: sigtool.cpp:200 #: sigtool.cpp:201
msgid "" msgid ""
"I've set up the filters as the last two in your KMail filter list. You might " "I've set up the filters as the last two in your KMail filter list. You might "
"want to open Kmail up and take a look." "want to open Kmail up and take a look."
msgstr "" msgstr ""
#: sigtool.cpp:206 #: sigtool.cpp:207
msgid "" msgid ""
"Mail scanning support is provided by a program called 'klammail'. This was " "Mail scanning support is provided by a program called 'klammail'. This was "
"installed automatically as part of the KlamAV installation. To use this " "installed automatically as part of the KlamAV installation. To use this "
@ -1336,7 +1367,7 @@ msgid ""
"the virus and who the mail is from." "the virus and who the mail is from."
msgstr "" msgstr ""
#: sigtool.cpp:215 #: sigtool.cpp:216
msgid "" msgid ""
"Mail scanning support is provided by a program called 'klammail'. This was " "Mail scanning support is provided by a program called 'klammail'. This was "
"installed automatically as part of the KlamAV installation. To use this " "installed automatically as part of the KlamAV installation. To use this "
@ -1409,13 +1440,13 @@ msgstr ""
msgid "Maximum MBs of Files to Scan" msgid "Maximum MBs of Files to Scan"
msgstr "" msgstr ""
#: archivelimits.ui:84 klamavconfig.kcfg:23 #: archivelimits.ui:84 klamavconfig.kcfg:41
#, no-c-format #, no-c-format
msgid "Maximum Number of Files to Extract" msgid "Maximum Number of Files to Extract"
msgstr "" msgstr ""
#: archivelimits.ui:114 klamavconfig.kcfg:13 #: archivelimits.ui:114 klamavconfig.kcfg:31
#: klamavconfig.kcfg:18 #: klamavconfig.kcfg:36
#, no-c-format #, no-c-format
msgid "Maximum MBs to Extract" msgid "Maximum MBs to Extract"
msgstr "" msgstr ""
@ -1520,6 +1551,40 @@ msgstr ""
msgid "Alt+W" msgid "Alt+W"
msgstr "" msgstr ""
#: backend.ui:16 backend.ui:27
#, no-c-format
msgid "Scanning Backend"
msgstr ""
#: backend.ui:38 klamavconfig.kcfg:8
#, no-c-format
msgid "Standalone scanner"
msgstr ""
#: backend.ui:49 klamavconfig.kcfg:18
#, no-c-format
msgid "Force Multiscan mode"
msgstr ""
#: backend.ui:60 klamavconfig.kcfg:13
#, no-c-format
msgid "ClamAV daemon"
msgstr ""
#: backend.ui:76
#, no-c-format
msgid ""
"Here you can choose the backend you'd like to use with KlamAV.\n"
"<p><b>Standalone scanner</b> uses the 'clamscan' command to perform a scan. "
"This backend is configurable via KlamAV, but takes longer to start. This "
"backend is also the easiest to set up, as it does not require running a "
"system-wide daemon.</p>\n"
"<p><b>ClamAV daemon</b> uses the 'clamdscan' command to perform a scan. This "
"backend depends on a running instance of the <i>clamd</i> daemon and depends "
"on the options of the daemon. This backend starts up faster and also makes "
"use of the Multiscan feature.</p"
msgstr ""
#: firstrunwizard.ui:58 #: firstrunwizard.ui:58
#, no-c-format #, no-c-format
msgid "" msgid ""
@ -1554,256 +1619,273 @@ msgstr ""
msgid "Signature Database Location:" msgid "Signature Database Location:"
msgstr "" msgstr ""
#: klamavconfig.kcfg:8 #: klamavconfig.kcfg:9
#, no-c-format
msgid "Use KlamAV without the ClamAV daemon."
msgstr ""
#: klamavconfig.kcfg:14
#, no-c-format
msgid "Use KlamAV with the ClamAV daemon."
msgstr ""
#: klamavconfig.kcfg:19
#, no-c-format
msgid ""
"Force clamdscan to use multiscan mode (scan multiple directories at once in "
"separate threads). May lower scanning time."
msgstr ""
#: klamavconfig.kcfg:26
#, no-c-format #, no-c-format
msgid "Maximum Recursion Level" msgid "Maximum Recursion Level"
msgstr "" msgstr ""
#: klamavconfig.kcfg:9 #: klamavconfig.kcfg:27
#, no-c-format #, no-c-format
msgid "The maximum number of subdirectories in a zip file to open before ." msgid "The maximum number of subdirectories in a zip file to open before ."
msgstr "" msgstr ""
#: klamavconfig.kcfg:14 klamavconfig.kcfg:19 #: klamavconfig.kcfg:32 klamavconfig.kcfg:37
#, no-c-format #, no-c-format
msgid "" msgid ""
"The maximum number of megabytes to extract from a zip file before marking it " "The maximum number of megabytes to extract from a zip file before marking it "
"as suspicious." "as suspicious."
msgstr "" msgstr ""
#: klamavconfig.kcfg:24 #: klamavconfig.kcfg:42
#, no-c-format #, no-c-format
msgid "" msgid ""
"The maximum number of file to extract from a zip file before marking it as " "The maximum number of file to extract from a zip file before marking it as "
"suspicious." "suspicious."
msgstr "" msgstr ""
#: klamavconfig.kcfg:31 #: klamavconfig.kcfg:49
#, no-c-format #, no-c-format
msgid "Scan DEB files" msgid "Scan DEB files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:32 klamavconfig.kcfg:37 #: klamavconfig.kcfg:50 klamavconfig.kcfg:55
#, no-c-format #, no-c-format
msgid "Scan DEB files using the named program." msgid "Scan DEB files using the named program."
msgstr "" msgstr ""
#: klamavconfig.kcfg:36 #: klamavconfig.kcfg:54
#, no-c-format #, no-c-format
msgid "Program to scan DEB files." msgid "Program to scan DEB files."
msgstr "" msgstr ""
#: klamavconfig.kcfg:41 #: klamavconfig.kcfg:59
#, no-c-format #, no-c-format
msgid "Scan TAR files" msgid "Scan TAR files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:42 klamavconfig.kcfg:47 #: klamavconfig.kcfg:60 klamavconfig.kcfg:65
#, no-c-format #, no-c-format
msgid "Scan TAR files using the named program." msgid "Scan TAR files using the named program."
msgstr "" msgstr ""
#: klamavconfig.kcfg:46 #: klamavconfig.kcfg:64
#, no-c-format #, no-c-format
msgid "Program to scan TAR files." msgid "Program to scan TAR files."
msgstr "" msgstr ""
#: klamavconfig.kcfg:51 #: klamavconfig.kcfg:69
#, no-c-format #, no-c-format
msgid "Scan JAR files" msgid "Scan JAR files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:52 klamavconfig.kcfg:57 #: klamavconfig.kcfg:70 klamavconfig.kcfg:75
#, no-c-format #, no-c-format
msgid "Scan JAR files using the named program." msgid "Scan JAR files using the named program."
msgstr "" msgstr ""
#: klamavconfig.kcfg:56 #: klamavconfig.kcfg:74
#, no-c-format #, no-c-format
msgid "Program to scan JAR files." msgid "Program to scan JAR files."
msgstr "" msgstr ""
#: klamavconfig.kcfg:61 #: klamavconfig.kcfg:79
#, no-c-format #, no-c-format
msgid "Scan LZH files" msgid "Scan LZH files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:62 klamavconfig.kcfg:67 #: klamavconfig.kcfg:80 klamavconfig.kcfg:85
#, no-c-format #, no-c-format
msgid "Scan LZH files using the named program." msgid "Scan LZH files using the named program."
msgstr "" msgstr ""
#: klamavconfig.kcfg:66 #: klamavconfig.kcfg:84
#, no-c-format #, no-c-format
msgid "Program to scan LZH files." msgid "Program to scan LZH files."
msgstr "" msgstr ""
#: klamavconfig.kcfg:71 #: klamavconfig.kcfg:89
#, no-c-format #, no-c-format
msgid "Scan Zoo files" msgid "Scan Zoo files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:72 klamavconfig.kcfg:77 #: klamavconfig.kcfg:90 klamavconfig.kcfg:95
#, no-c-format #, no-c-format
msgid "Scan Zoo files using the named program." msgid "Scan Zoo files using the named program."
msgstr "" msgstr ""
#: klamavconfig.kcfg:76 #: klamavconfig.kcfg:94
#, no-c-format #, no-c-format
msgid "Program to scan Zoo files." msgid "Program to scan Zoo files."
msgstr "" msgstr ""
#: klamavconfig.kcfg:81 #: klamavconfig.kcfg:99
#, no-c-format #, no-c-format
msgid "Scan RAR files" msgid "Scan RAR files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:82 klamavconfig.kcfg:87 #: klamavconfig.kcfg:100 klamavconfig.kcfg:105
#, no-c-format #, no-c-format
msgid "Scan RAR files using the named program." msgid "Scan RAR files using the named program."
msgstr "" msgstr ""
#: klamavconfig.kcfg:86 #: klamavconfig.kcfg:104
#, no-c-format #, no-c-format
msgid "Program to scan RAR files." msgid "Program to scan RAR files."
msgstr "" msgstr ""
#: klamavconfig.kcfg:91 #: klamavconfig.kcfg:109
#, no-c-format #, no-c-format
msgid "Scan Zip files" msgid "Scan Zip files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:92 klamavconfig.kcfg:97 #: klamavconfig.kcfg:110 klamavconfig.kcfg:115
#, no-c-format #, no-c-format
msgid "Scan Zip files using the named program." msgid "Scan Zip files using the named program."
msgstr "" msgstr ""
#: klamavconfig.kcfg:96 #: klamavconfig.kcfg:114
#, no-c-format #, no-c-format
msgid "Program to scan Zip files." msgid "Program to scan Zip files."
msgstr "" msgstr ""
#: klamavconfig.kcfg:101 #: klamavconfig.kcfg:119
#, no-c-format #, no-c-format
msgid "Scan TGZ files" msgid "Scan TGZ files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:102 klamavconfig.kcfg:107 #: klamavconfig.kcfg:120 klamavconfig.kcfg:125
#, no-c-format #, no-c-format
msgid "Scan TGZ files using the named program." msgid "Scan TGZ files using the named program."
msgstr "" msgstr ""
#: klamavconfig.kcfg:106 #: klamavconfig.kcfg:124
#, no-c-format #, no-c-format
msgid "Program to scan TGZ files." msgid "Program to scan TGZ files."
msgstr "" msgstr ""
#: klamavconfig.kcfg:111 #: klamavconfig.kcfg:129
#, no-c-format #, no-c-format
msgid "Scan ARJ files" msgid "Scan ARJ files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:112 klamavconfig.kcfg:117 #: klamavconfig.kcfg:130 klamavconfig.kcfg:135
#, no-c-format #, no-c-format
msgid "Scan ARJ files using the named program." msgid "Scan ARJ files using the named program."
msgstr "" msgstr ""
#: klamavconfig.kcfg:116 #: klamavconfig.kcfg:134
#, no-c-format #, no-c-format
msgid "Program to scan ARJ files." msgid "Program to scan ARJ files."
msgstr "" msgstr ""
#: klamavconfig.kcfg:124 #: klamavconfig.kcfg:142
#, no-c-format #, no-c-format
msgid "Mark Encrypted Files as Suspicious" msgid "Mark Encrypted Files as Suspicious"
msgstr "" msgstr ""
#: klamavconfig.kcfg:128 #: klamavconfig.kcfg:146
#, no-c-format #, no-c-format
msgid "Mark Broken Files as Suspicious" msgid "Mark Broken Files as Suspicious"
msgstr "" msgstr ""
#: klamavconfig.kcfg:132 #: klamavconfig.kcfg:150
#, no-c-format #, no-c-format
msgid "Exclude Quarantine Directories from scanning" msgid "Exclude Quarantine Directories from scanning"
msgstr "" msgstr ""
#: klamavconfig.kcfg:136 #: klamavconfig.kcfg:154
#, no-c-format #, no-c-format
msgid "Scan Microsoft Office Macros" msgid "Scan Microsoft Office Macros"
msgstr "" msgstr ""
#: klamavconfig.kcfg:140 #: klamavconfig.kcfg:158
#, no-c-format #, no-c-format
msgid "Scan Portable Executable Files" msgid "Scan Portable Executable Files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:144 #: klamavconfig.kcfg:162
#, no-c-format #, no-c-format
msgid "Scan Emails" msgid "Scan Emails"
msgstr "" msgstr ""
#: klamavconfig.kcfg:148 #: klamavconfig.kcfg:166
#, no-c-format #, no-c-format
msgid "Scan HTML Files" msgid "Scan HTML Files"
msgstr "" msgstr ""
#: klamavconfig.kcfg:157 #: klamavconfig.kcfg:175
#, no-c-format #, no-c-format
msgid "Scan Files When They Are Executed" msgid "Scan Files When They Are Executed"
msgstr "" msgstr ""
#: klamavconfig.kcfg:161 #: klamavconfig.kcfg:179
#, no-c-format #, no-c-format
msgid "Scan Files When They Are Opened" msgid "Scan Files When They Are Opened"
msgstr "" msgstr ""
#: klamavconfig.kcfg:165 #: klamavconfig.kcfg:183
#, no-c-format #, no-c-format
msgid "Scan Files When They Are Closed" msgid "Scan Files When They Are Closed"
msgstr "" msgstr ""
#: klamavconfig.kcfg:169 #: klamavconfig.kcfg:187
#, no-c-format #, no-c-format
msgid "Scan Files When They Are Created or Modified" msgid "Scan Files When They Are Created or Modified"
msgstr "" msgstr ""
#: klamavconfig.kcfg:177 klamavconfig.kcfg:214 #: klamavconfig.kcfg:195 klamavconfig.kcfg:232
#, no-c-format #, no-c-format
msgid "Expire Events After the Specified Number of Days" msgid "Expire Events After the Specified Number of Days"
msgstr "" msgstr ""
#: klamavconfig.kcfg:181 #: klamavconfig.kcfg:199
#, no-c-format #, no-c-format
msgid "Log Software Update Events" msgid "Log Software Update Events"
msgstr "" msgstr ""
#: klamavconfig.kcfg:185 #: klamavconfig.kcfg:203
#, no-c-format #, no-c-format
msgid "Log Quarantine Events" msgid "Log Quarantine Events"
msgstr "" msgstr ""
#: klamavconfig.kcfg:189 #: klamavconfig.kcfg:207
#, no-c-format #, no-c-format
msgid "Log KlamAV launching and shutting-down Events" msgid "Log KlamAV launching and shutting-down Events"
msgstr "" msgstr ""
#: klamavconfig.kcfg:193 #: klamavconfig.kcfg:211
#, no-c-format #, no-c-format
msgid "Log Database Events" msgid "Log Database Events"
msgstr "" msgstr ""
#: klamavconfig.kcfg:197 #: klamavconfig.kcfg:215
#, no-c-format #, no-c-format
msgid "Log StartedStoppedCancelled Events" msgid "Log StartedStoppedCancelled Events"
msgstr "" msgstr ""
#: klamavconfig.kcfg:201 #: klamavconfig.kcfg:219
#, no-c-format #, no-c-format
msgid "Log VirusFound Events" msgid "Log VirusFound Events"
msgstr "" msgstr ""
#: klamavconfig.kcfg:205 #: klamavconfig.kcfg:223
#, no-c-format #, no-c-format
msgid "Log Error Events" msgid "Log Error Events"
msgstr "" msgstr ""

Loading…
Cancel
Save