diff --git a/logdoctor/mainwindow.cpp b/logdoctor/mainwindow.cpp index 915461dc..9e169751 100644 --- a/logdoctor/mainwindow.cpp +++ b/logdoctor/mainwindow.cpp @@ -547,7 +547,7 @@ void MainWindow::readConfigs() } else if ( var == "ApacheWarnlistMethod" ) { try { - this->craplog.setWarnlist( WS_APACHE, 11, this->string2list( val ) ); + this->warnlists.setList( WS_APACHE, WarnlistField::Method, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -557,15 +557,11 @@ void MainWindow::readConfigs() } } else if ( var == "ApacheWarnlistMethodUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_APACHE, 11, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_APACHE, WarnlistField::Method, this->s2b.at( val ) ); } else if ( var == "ApacheWarnlistURI" ) { try { - this->craplog.setWarnlist( WS_APACHE, 12, this->string2list( val ) ); + this->warnlists.setList( WS_APACHE, WarnlistField::Uri, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -575,15 +571,11 @@ void MainWindow::readConfigs() } } else if ( var == "ApacheWarnlistURIUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_APACHE, 12, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_APACHE, WarnlistField::Uri, this->s2b.at( val ) ); } else if ( var == "ApacheWarnlistClient" ) { try { - this->craplog.setWarnlist( WS_APACHE, 20, this->string2list( val ) ); + this->warnlists.setList( WS_APACHE, WarnlistField::Client, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -593,15 +585,11 @@ void MainWindow::readConfigs() } } else if ( var == "ApacheWarnlistClientUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_APACHE, 20, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_APACHE, WarnlistField::Client, this->s2b.at( val ) ); } else if ( var == "ApacheWarnlistUserAgent" ) { try { - this->craplog.setWarnlist( WS_APACHE, 21, this->string2list( val, true ) ); + this->warnlists.setList( WS_APACHE, WarnlistField::UserAgent, this->string2list( val, true ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -611,15 +599,11 @@ void MainWindow::readConfigs() } } else if ( var == "ApacheWarnlistUserAgentUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_APACHE, 21, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_APACHE, WarnlistField::UserAgent, this->s2b.at( val ) ); } else if ( var == "ApacheBlacklistClient" ) { try { - this->craplog.setBlacklist( WS_APACHE, 20, this->string2list( val ) ); + this->blacklists.setList( WS_APACHE, BlacklistField::Client, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -629,11 +613,7 @@ void MainWindow::readConfigs() } } else if ( var == "ApacheBlacklistClientUsed" ) { - try { - this->craplog.setBlacklistUsed( WS_APACHE, 20, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->blacklists.setUsed( WS_APACHE, BlacklistField::Client, this->s2b.at( val ) ); } else if ( var == "NginxLogsPath" ) { this->craplog.setLogsPath( WS_NGINX, this->resolvePath( val ) ); @@ -648,7 +628,7 @@ void MainWindow::readConfigs() } else if ( var == "NginxWarnlistMethod" ) { try { - this->craplog.setWarnlist( WS_NGINX, 11, this->string2list( val ) ); + this->warnlists.setList( WS_NGINX, WarnlistField::Method, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -658,15 +638,11 @@ void MainWindow::readConfigs() } } else if ( var == "NginxWarnlistMethodUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_NGINX, 11, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_NGINX, WarnlistField::Method, this->s2b.at( val ) ); } else if ( var == "NginxWarnlistURI" ) { try { - this->craplog.setWarnlist( WS_NGINX, 12, this->string2list( val ) ); + this->warnlists.setList( WS_NGINX, WarnlistField::Uri, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -676,15 +652,11 @@ void MainWindow::readConfigs() } } else if ( var == "NginxWarnlistURIUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_NGINX, 12, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_NGINX, WarnlistField::Uri, this->s2b.at( val ) ); } else if ( var == "NginxWarnlistClient" ) { try { - this->craplog.setWarnlist( WS_NGINX, 20, this->string2list( val ) ); + this->warnlists.setList( WS_NGINX, WarnlistField::Client, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -694,15 +666,11 @@ void MainWindow::readConfigs() } } else if ( var == "NginxWarnlistClientUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_NGINX, 20, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_NGINX, WarnlistField::Client, this->s2b.at( val ) ); } else if ( var == "NginxWarnlistUserAgent" ) { try { - this->craplog.setWarnlist( WS_NGINX, 21, this->string2list( val, true ) ); + this->warnlists.setList( WS_NGINX, WarnlistField::UserAgent, this->string2list( val, true ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -712,15 +680,11 @@ void MainWindow::readConfigs() } } else if ( var == "NginxWarnlistUserAgentUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_NGINX, 21, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_NGINX, WarnlistField::UserAgent, this->s2b.at( val ) ); } else if ( var == "NginxBlacklistClient" ) { try { - this->craplog.setBlacklist( WS_NGINX, 20, this->string2list( val ) ); + this->blacklists.setList( WS_NGINX, BlacklistField::Client, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -730,11 +694,7 @@ void MainWindow::readConfigs() } } else if ( var == "NginxBlacklistClientUsed" ) { - try { - this->craplog.setBlacklistUsed( WS_NGINX, 20, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->blacklists.setUsed( WS_NGINX, BlacklistField::Client, this->s2b.at( val ) ); } else if ( var == "IisLogsPath" ) { this->craplog.setLogsPath( WS_IIS, this->resolvePath( val ) ); @@ -762,7 +722,7 @@ void MainWindow::readConfigs() } else if ( var == "IisWarnlistMethod" ) { try { - this->craplog.setWarnlist( WS_IIS, 11, this->string2list( val ) ); + this->warnlists.setList( WS_IIS, WarnlistField::Method, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -772,15 +732,11 @@ void MainWindow::readConfigs() } } else if ( var == "IisWarnlistMethodUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_IIS, 11, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_IIS, WarnlistField::Method, this->s2b.at( val ) ); } else if ( var == "IisWarnlistURI" ) { try { - this->craplog.setWarnlist( WS_IIS, 12, this->string2list( val ) ); + this->warnlists.setList( WS_IIS, WarnlistField::Uri, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -790,15 +746,11 @@ void MainWindow::readConfigs() } } else if ( var == "IisWarnlistURIUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_IIS, 12, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_IIS, WarnlistField::Uri, this->s2b.at( val ) ); } else if ( var == "IisWarnlistClient" ) { try { - this->craplog.setWarnlist( WS_IIS, 20, this->string2list( val ) ); + this->warnlists.setList( WS_IIS, WarnlistField::Client, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -808,15 +760,11 @@ void MainWindow::readConfigs() } } else if ( var == "IisWarnlistClientUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_IIS, 20, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_IIS, WarnlistField::Client, this->s2b.at( val ) ); } else if ( var == "IisWarnlistUserAgent" ) { try { - this->craplog.setWarnlist( WS_IIS, 21, this->string2list( val, true ) ); + this->warnlists.setList( WS_IIS, WarnlistField::UserAgent, this->string2list( val, true ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -826,15 +774,11 @@ void MainWindow::readConfigs() } } else if ( var == "IisWarnlistUserAgentUsed" ) { - try { - this->craplog.setWarnlistUsed( WS_IIS, 21, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->warnlists.setUsed( WS_IIS, WarnlistField::UserAgent, this->s2b.at( val ) ); } else if ( var == "IisBlacklistClient" ) { try { - this->craplog.setBlacklist( WS_IIS, 20, this->string2list( val ) ); + this->blacklists.setList( WS_IIS, BlacklistField::Client, this->string2list( val ) ); } catch ( const BWlistException& ) { invalid_lines.emplaceBack( QString::fromStdString( line ) ); DialogSec::errFailedApplyingConfigsItem( QString("%1:\n%2").arg( @@ -844,11 +788,7 @@ void MainWindow::readConfigs() } } else if ( var == "IisBlacklistClientUsed" ) { - try { - this->craplog.setBlacklistUsed( WS_IIS, 20, this->s2b.at( val ) ); - } catch ( const std::exception& ) { - invalid_lines.emplaceBack( QString::fromStdString( line ) ); - } + this->blacklists.setUsed( WS_IIS, BlacklistField::Client, this->s2b.at( val ) ); } else if ( var == "CrapviewDialogsLevel" ) { try { @@ -1025,30 +965,30 @@ void MainWindow::writeConfigs() configs += "\n\n[Apache2]"; configs += "\nApacheLogsPath=" + this->craplog.getLogsPath( WS_APACHE ); configs += "\nApacheLogsFormat=" + this->craplog.getLogsFormatString( WS_APACHE ); - configs += "\nApacheWarnlistMethod=" + this->list2string( this->craplog.getWarnlist( WS_APACHE, 11 ) ); - configs += "\nApacheWarnlistMethodUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_APACHE, 11 ) ); - configs += "\nApacheWarnlistURI=" + this->list2string( this->craplog.getWarnlist( WS_APACHE, 12 ) ); - configs += "\nApacheWarnlistURIUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_APACHE, 12 ) ); - configs += "\nApacheWarnlistClient=" + this->list2string( this->craplog.getWarnlist( WS_APACHE, 20 ) ); - configs += "\nApacheWarnlistClientUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_APACHE, 20 ) ); - configs += "\nApacheWarnlistUserAgent=" + this->list2string( this->craplog.getWarnlist( WS_APACHE, 21 ), true ); - configs += "\nApacheWarnlistUserAgentUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_APACHE, 21 ) ); - configs += "\nApacheBlacklistClient=" + this->list2string( this->craplog.getBlacklist( WS_APACHE, 20 ) ); - configs += "\nApacheBlacklistClientUsed=" + this->b2s.at( this->craplog.isBlacklistUsed( WS_APACHE, 20 ) ); + configs += "\nApacheWarnlistMethod=" + this->list2string( this->warnlists.getListConst( WS_APACHE, WarnlistField::Method ) ); + configs += "\nApacheWarnlistMethodUsed=" + this->b2s.at( this->warnlists.isUsed( WS_APACHE, WarnlistField::Method ) ); + configs += "\nApacheWarnlistURI=" + this->list2string( this->warnlists.getListConst( WS_APACHE, WarnlistField::Uri ) ); + configs += "\nApacheWarnlistURIUsed=" + this->b2s.at( this->warnlists.isUsed( WS_APACHE, WarnlistField::Uri ) ); + configs += "\nApacheWarnlistClient=" + this->list2string( this->warnlists.getListConst( WS_APACHE, WarnlistField::Client ) ); + configs += "\nApacheWarnlistClientUsed=" + this->b2s.at( this->warnlists.isUsed( WS_APACHE, WarnlistField::Client ) ); + configs += "\nApacheWarnlistUserAgent=" + this->list2string( this->warnlists.getListConst( WS_APACHE, WarnlistField::UserAgent ), true ); + configs += "\nApacheWarnlistUserAgentUsed=" + this->b2s.at( this->warnlists.isUsed( WS_APACHE, WarnlistField::UserAgent ) ); + configs += "\nApacheBlacklistClient=" + this->list2string( this->blacklists.getListConst( WS_APACHE, BlacklistField::Client ) ); + configs += "\nApacheBlacklistClientUsed=" + this->b2s.at( this->blacklists.isUsed( WS_APACHE, BlacklistField::Client ) ); //// NGINX //// configs += "\n\n[Nginx]"; configs += "\nNginxLogsPath=" + this->craplog.getLogsPath( WS_NGINX ); configs += "\nNginxLogsFormat=" + this->craplog.getLogsFormatString( WS_NGINX ); - configs += "\nNginxWarnlistMethod=" + this->list2string( this->craplog.getWarnlist( WS_NGINX, 11 ) ); - configs += "\nNginxWarnlistMethodUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_NGINX, 11 ) ); - configs += "\nNginxWarnlistURI=" + this->list2string( this->craplog.getWarnlist( WS_NGINX, 12 ) ); - configs += "\nNginxWarnlistURIUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_NGINX, 12 ) ); - configs += "\nNginxWarnlistClient=" + this->list2string( this->craplog.getWarnlist( WS_NGINX, 20 ) ); - configs += "\nNginxWarnlistClientUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_NGINX, 20 ) ); - configs += "\nNginxWarnlistUserAgent=" + this->list2string( this->craplog.getWarnlist( WS_NGINX, 21 ), true ); - configs += "\nNginxWarnlistUserAgentUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_NGINX, 21 ) ); - configs += "\nNginxBlacklistClient=" + this->list2string( this->craplog.getBlacklist( WS_NGINX, 20 ) ); - configs += "\nNginxBlacklistClientUsed=" + this->b2s.at( this->craplog.isBlacklistUsed( WS_NGINX, 20 ) ); + configs += "\nNginxWarnlistMethod=" + this->list2string( this->warnlists.getListConst( WS_NGINX, WarnlistField::Method ) ); + configs += "\nNginxWarnlistMethodUsed=" + this->b2s.at( this->warnlists.isUsed( WS_NGINX, WarnlistField::Method ) ); + configs += "\nNginxWarnlistURI=" + this->list2string( this->warnlists.getListConst( WS_NGINX, WarnlistField::Uri ) ); + configs += "\nNginxWarnlistURIUsed=" + this->b2s.at( this->warnlists.isUsed( WS_NGINX, WarnlistField::Uri ) ); + configs += "\nNginxWarnlistClient=" + this->list2string( this->warnlists.getListConst( WS_NGINX, WarnlistField::Client ) ); + configs += "\nNginxWarnlistClientUsed=" + this->b2s.at( this->warnlists.isUsed( WS_NGINX, WarnlistField::Client ) ); + configs += "\nNginxWarnlistUserAgent=" + this->list2string( this->warnlists.getListConst( WS_NGINX, WarnlistField::UserAgent ), true ); + configs += "\nNginxWarnlistUserAgentUsed=" + this->b2s.at( this->warnlists.isUsed( WS_NGINX, WarnlistField::UserAgent ) ); + configs += "\nNginxBlacklistClient=" + this->list2string( this->blacklists.getListConst( WS_NGINX, BlacklistField::Client ) ); + configs += "\nNginxBlacklistClientUsed=" + this->b2s.at( this->blacklists.isUsed( WS_NGINX, BlacklistField::Client ) ); //// IIS //// configs += "\n\n[IIS]"; configs += "\nIisLogsPath=" + this->craplog.getLogsPath( WS_IIS ); @@ -1060,16 +1000,16 @@ void MainWindow::writeConfigs() } configs += "\nIisLogsModule=" + module; configs += "\nIisLogsFormat=" + this->craplog.getLogsFormatString( WS_IIS ); - configs += "\nIisWarnlistMethod=" + this->list2string( this->craplog.getWarnlist( WS_IIS, 11 ) ); - configs += "\nIisWarnlistMethodUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_IIS, 11 ) ); - configs += "\nIisWarnlistURI=" + this->list2string( this->craplog.getWarnlist( WS_IIS, 12 ) ); - configs += "\nIisWarnlistURIUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_IIS, 12 ) ); - configs += "\nIisWarnlistClient=" + this->list2string( this->craplog.getWarnlist( WS_IIS, 20 ) ); - configs += "\nIisWarnlistClientUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_IIS, 20 ) ); - configs += "\nIisWarnlistUserAgent=" + this->list2string( this->craplog.getWarnlist( WS_IIS, 21 ), true ); - configs += "\nIisWarnlistUserAgentUsed=" + this->b2s.at( this->craplog.isWarnlistUsed( WS_IIS, 21 ) ); - configs += "\nIisBlacklistClient=" + this->list2string( this->craplog.getBlacklist( WS_IIS, 20 ) ); - configs += "\nIisBlacklistClientUsed=" + this->b2s.at( this->craplog.isBlacklistUsed( WS_IIS, 20 ) ); + configs += "\nIisWarnlistMethod=" + this->list2string( this->warnlists.getListConst( WS_IIS, WarnlistField::Method ) ); + configs += "\nIisWarnlistMethodUsed=" + this->b2s.at( this->warnlists.isUsed( WS_IIS, WarnlistField::Method ) ); + configs += "\nIisWarnlistURI=" + this->list2string( this->warnlists.getListConst( WS_IIS, WarnlistField::Uri ) ); + configs += "\nIisWarnlistURIUsed=" + this->b2s.at( this->warnlists.isUsed( WS_IIS, WarnlistField::Uri ) ); + configs += "\nIisWarnlistClient=" + this->list2string( this->warnlists.getListConst( WS_IIS, WarnlistField::Client ) ); + configs += "\nIisWarnlistClientUsed=" + this->b2s.at( this->warnlists.isUsed( WS_IIS, WarnlistField::Client ) ); + configs += "\nIisWarnlistUserAgent=" + this->list2string( this->warnlists.getListConst( WS_IIS, WarnlistField::UserAgent ), true ); + configs += "\nIisWarnlistUserAgentUsed=" + this->b2s.at( this->warnlists.isUsed( WS_IIS, WarnlistField::UserAgent ) ); + configs += "\nIisBlacklistClient=" + this->list2string( this->blacklists.getListConst( WS_IIS, BlacklistField::Client ) ); + configs += "\nIisBlacklistClientUsed=" + this->b2s.at( this->blacklists.isUsed( WS_IIS, BlacklistField::Client ) ); //// CRAPVIEW //// configs += "\n\n[Crapview]"; configs += "\nCrapviewDialogsLevel=" + toString( this->crapview.getDialogsLevel() ); @@ -2222,6 +2162,28 @@ void MainWindow::showHelp( const std::string& file_name ) } } +BlacklistField MainWindow::blacklistFieldFromString( const QString& str ) +{ + if ( TR::tr(FIELDS__CLIENT.c_str()) == str ) { + return BlacklistField::Client; + } + throw DoNotCatchException( "Unexpected BlacklistField string: "+str.toStdString() ); +} + +WarnlistField MainWindow::warnlistFieldFromString( const QString& str ) +{ + if ( TR::tr(FIELDS__METHOD.c_str()) == str ) { + return WarnlistField::Method; + } else if ( TR::tr(FIELDS__URI.c_str()) == str ) { + return WarnlistField::Uri; + } else if ( TR::tr(FIELDS__CLIENT.c_str()) == str ) { + return WarnlistField::Client; + } else if ( TR::tr(FIELDS__USER_AGENT.c_str()) == str ) { + return WarnlistField::UserAgent; + } + throw DoNotCatchException( "Unexpected WarnlistField string: "+str.toStdString() ); +} + /*************************************************************** @@ -2989,7 +2951,7 @@ void MainWindow::on_button_MakeStats_Start_clicked() // start processing this->waiter_timer_start = std::chrono::system_clock::now(); this->waiter_timer->start(); - emit runCraplog(); + emit runCraplog( this->blacklists ); } else { this->craplogFinished(); } @@ -3234,7 +3196,7 @@ void MainWindow::drawStatsWarn() this->ui->box_StatsWarn_Month->currentText(), this->ui->box_StatsWarn_Day->currentText(), this->ui->checkBox_StatsWarn_Hour->isChecked() ? this->ui->box_StatsWarn_Hour->currentText() : "", - this->craplog.getWarnlists( this->wsEnumFromIndex( wsIndex ) ) ); + this->warnlists.get( this->wsEnumFromIndex( wsIndex ) ) ); ColorSec::applyChartTheme( this->fonts, this->ui->chart_StatsWarn ); @@ -4926,24 +4888,24 @@ void MainWindow::on_box_ConfApache_Warnlist_Field_currentTextChanged(const QStri this->ui->inLine_ConfApache_Warnlist_String->clear(); this->ui->list_ConfApache_Warnlist_List->clear(); // update the list - const std::vector& list{ this->craplog.getWarnlist( - WS_APACHE, this->crapview.getLogFieldID( arg1 ) ) }; + const WarnlistField field{ this->warnlistFieldFromString( arg1 ) }; + const std::vector& list{ this->warnlists.getListConst( + WS_APACHE, field ) }; for ( const std::string& item : list ) { this->ui->list_ConfApache_Warnlist_List->addItem( QString::fromStdString( item ) ); } // check/uncheck the usage option - const bool used{ this->craplog.isWarnlistUsed( - WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Warnlist_Field->currentText() ) ) }; + const bool used{ this->warnlists.isUsed( + WS_APACHE, field ) }; this->ui->checkBox_ConfApache_Warnlist_Used->setChecked( used ); this->on_checkBox_ConfApache_Warnlist_Used_clicked( used ); } } void MainWindow::on_checkBox_ConfApache_Warnlist_Used_clicked(bool checked) { - this->craplog.setWarnlistUsed( + this->warnlists.setUsed( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfApache_Warnlist_Field->currentText() ), checked ); if ( checked ) { this->ui->inLine_ConfApache_Warnlist_String->setEnabled( true ); @@ -4983,9 +4945,9 @@ void MainWindow::on_button_ConfApache_Warnlist_Add_clicked() if ( this->ui->list_ConfApache_Warnlist_List->findItems( item, Qt::MatchFlag::MatchCaseSensitive ).isEmpty() ) { // not in the list yet, append try { - this->craplog.warnlistAdd( + this->warnlists.addItem( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfApache_Warnlist_Field->currentText() ), item.toStdString() ); this->ui->list_ConfApache_Warnlist_List->addItem( item ); } catch ( const BWlistException& ) { @@ -5031,9 +4993,9 @@ void MainWindow::on_list_ConfApache_Warnlist_List_itemSelectionChanged() void MainWindow::on_button_ConfApache_Warnlist_Remove_clicked() { const auto item{ this->ui->list_ConfApache_Warnlist_List->selectedItems().at(0) }; - this->craplog.warnlistRemove( + this->warnlists.removeItem( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfApache_Warnlist_Field->currentText() ), item->text().toStdString() ); // refresh the list this->on_box_ConfApache_Warnlist_Field_currentTextChanged( this->ui->box_ConfApache_Warnlist_Field->currentText() ); @@ -5041,9 +5003,9 @@ void MainWindow::on_button_ConfApache_Warnlist_Remove_clicked() void MainWindow::on_button_ConfApache_Warnlist_Up_clicked() { const auto item{ this->ui->list_ConfApache_Warnlist_List->selectedItems().at(0) }; - const int i{ this->craplog.warnlistMoveUp( + const int i{ this->warnlists.moveUpItem( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfApache_Warnlist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfApache_Warnlist_Field_currentTextChanged( this->ui->box_ConfApache_Warnlist_Field->currentText() ); @@ -5054,9 +5016,9 @@ void MainWindow::on_button_ConfApache_Warnlist_Up_clicked() void MainWindow::on_button_ConfApache_Warnlist_Down_clicked() { const auto item{ this->ui->list_ConfApache_Warnlist_List->selectedItems().at(0) }; - const int i{ this->craplog.warnlistMoveDown( + const int i{ this->warnlists.moveDownItem( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfApache_Warnlist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfApache_Warnlist_Field_currentTextChanged( this->ui->box_ConfApache_Warnlist_Field->currentText() ); @@ -5073,24 +5035,24 @@ void MainWindow::on_box_ConfApache_Blacklist_Field_currentTextChanged(const QStr this->ui->inLine_ConfApache_Blacklist_String->clear(); this->ui->list_ConfApache_Blacklist_List->clear(); // update the list - const std::vector& list{ this->craplog.getBlacklist( - WS_APACHE, this->crapview.getLogFieldID( arg1 ) ) }; + const BlacklistField field{ this->blacklistFieldFromString( arg1 ) }; + const std::vector& list{ this->blacklists.getListConst( + WS_APACHE, field ) }; for ( const std::string& item : list ) { this->ui->list_ConfApache_Blacklist_List->addItem( QString::fromStdString( item ) ); } // check/uncheck the usage option - const bool used{ this->craplog.isBlacklistUsed( - WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Blacklist_Field->currentText() ) ) }; + const bool used{ this->blacklists.isUsed( + WS_APACHE, field ) }; this->ui->checkBox_ConfApache_Blacklist_Used->setChecked( used ); this->on_checkBox_ConfApache_Blacklist_Used_clicked( used ); } } void MainWindow::on_checkBox_ConfApache_Blacklist_Used_clicked(bool checked) { - this->craplog.setBlacklistUsed( + this->blacklists.setUsed( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfApache_Blacklist_Field->currentText() ), checked ); if ( checked ) { this->ui->inLine_ConfApache_Blacklist_String->setEnabled( true ); @@ -5130,9 +5092,9 @@ void MainWindow::on_button_ConfApache_Blacklist_Add_clicked() if ( this->ui->list_ConfApache_Blacklist_List->findItems( item, Qt::MatchFlag::MatchCaseSensitive ).isEmpty() ) { // not in the list yet, append try { - this->craplog.blacklistAdd( + this->blacklists.addItem( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfApache_Blacklist_Field->currentText() ), item.toStdString() ); this->ui->list_ConfApache_Blacklist_List->addItem( item ); } catch ( const BWlistException& ) { @@ -5178,9 +5140,9 @@ void MainWindow::on_list_ConfApache_Blacklist_List_itemSelectionChanged() void MainWindow::on_button_ConfApache_Blacklist_Remove_clicked() { const auto item{ this->ui->list_ConfApache_Blacklist_List->selectedItems().at(0) }; - this->craplog.blacklistRemove( + this->blacklists.removeItem( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfApache_Blacklist_Field->currentText() ), item->text().toStdString() ); // refresh the list this->on_box_ConfApache_Blacklist_Field_currentTextChanged( this->ui->box_ConfApache_Blacklist_Field->currentText() ); @@ -5188,9 +5150,9 @@ void MainWindow::on_button_ConfApache_Blacklist_Remove_clicked() void MainWindow::on_button_ConfApache_Blacklist_Up_clicked() { const auto item{ this->ui->list_ConfApache_Blacklist_List->selectedItems().at(0) }; - const int i{ this->craplog.blacklistMoveUp( + const int i{ this->blacklists.moveUpItem( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfApache_Blacklist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfApache_Blacklist_Field_currentTextChanged( this->ui->box_ConfApache_Blacklist_Field->currentText() ); @@ -5201,9 +5163,9 @@ void MainWindow::on_button_ConfApache_Blacklist_Up_clicked() void MainWindow::on_button_ConfApache_Blacklist_Down_clicked() { const auto item{ this->ui->list_ConfApache_Blacklist_List->selectedItems().at(0) }; - const int i{ this->craplog.blacklistMoveDown( + const int i{ this->blacklists.moveDownItem( WS_APACHE, - this->crapview.getLogFieldID( this->ui->box_ConfApache_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfApache_Blacklist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfApache_Blacklist_Field_currentTextChanged( this->ui->box_ConfApache_Blacklist_Field->currentText() ); @@ -5297,24 +5259,24 @@ void MainWindow::on_box_ConfNginx_Warnlist_Field_currentTextChanged(const QStrin this->ui->inLine_ConfNginx_Warnlist_String->clear(); this->ui->list_ConfNginx_Warnlist_List->clear(); // update the list - const std::vector& list{ this->craplog.getWarnlist( - WS_NGINX, this->crapview.getLogFieldID( arg1 ) ) }; + const WarnlistField field{ this->warnlistFieldFromString( arg1 ) }; + const std::vector& list{ this->warnlists.getListConst( + WS_NGINX, field ) }; for ( const std::string& item : list ) { this->ui->list_ConfNginx_Warnlist_List->addItem( QString::fromStdString( item ) ); } // check/uncheck the usage option - const bool used{ this->craplog.isWarnlistUsed( - WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Warnlist_Field->currentText() ) ) }; + const bool used{ this->warnlists.isUsed( + WS_NGINX, field ) }; this->ui->checkBox_ConfNginx_Warnlist_Used->setChecked( used ); this->on_checkBox_ConfNginx_Warnlist_Used_clicked( used ); } } void MainWindow::on_checkBox_ConfNginx_Warnlist_Used_clicked(bool checked) { - this->craplog.setWarnlistUsed( + this->warnlists.setUsed( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), checked ); if ( checked ) { this->ui->inLine_ConfNginx_Warnlist_String->setEnabled( true ); @@ -5354,9 +5316,9 @@ void MainWindow::on_button_ConfNginx_Warnlist_Add_clicked() if ( this->ui->list_ConfNginx_Warnlist_List->findItems( item, Qt::MatchFlag::MatchCaseSensitive ).isEmpty() ) { // not in the list yet, append try { - this->craplog.warnlistAdd( + this->warnlists.addItem( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), item.toStdString() ); this->ui->list_ConfNginx_Warnlist_List->addItem( item ); } catch ( const BWlistException& ) { @@ -5402,9 +5364,9 @@ void MainWindow::on_list_ConfNginx_Warnlist_List_itemSelectionChanged() void MainWindow::on_button_ConfNginx_Warnlist_Remove_clicked() { const auto item{ this->ui->list_ConfNginx_Warnlist_List->selectedItems().at(0) }; - this->craplog.warnlistRemove( + this->warnlists.removeItem( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), item->text().toStdString() ); // refresh the list this->on_box_ConfNginx_Warnlist_Field_currentTextChanged( this->ui->box_ConfNginx_Warnlist_Field->currentText() ); @@ -5412,9 +5374,9 @@ void MainWindow::on_button_ConfNginx_Warnlist_Remove_clicked() void MainWindow::on_button_ConfNginx_Warnlist_Up_clicked() { const auto item{ this->ui->list_ConfNginx_Warnlist_List->selectedItems().at(0) }; - const int i{ this->craplog.warnlistMoveUp( + const int i{ this->warnlists.moveUpItem( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfNginx_Warnlist_Field_currentTextChanged( this->ui->box_ConfNginx_Warnlist_Field->currentText() ); @@ -5425,9 +5387,9 @@ void MainWindow::on_button_ConfNginx_Warnlist_Up_clicked() void MainWindow::on_button_ConfNginx_Warnlist_Down_clicked() { const auto item{ this->ui->list_ConfNginx_Warnlist_List->selectedItems().at(0) }; - const int i{ this->craplog.warnlistMoveDown( + const int i{ this->warnlists.moveDownItem( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfNginx_Warnlist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfNginx_Warnlist_Field_currentTextChanged( this->ui->box_ConfNginx_Warnlist_Field->currentText() ); @@ -5444,24 +5406,24 @@ void MainWindow::on_box_ConfNginx_Blacklist_Field_currentTextChanged(const QStri this->ui->inLine_ConfNginx_Blacklist_String->clear(); this->ui->list_ConfNginx_Blacklist_List->clear(); // update the list - const std::vector& list{ this->craplog.getBlacklist( - WS_NGINX, this->crapview.getLogFieldID( arg1 ) ) }; + const BlacklistField field{ this->blacklistFieldFromString( arg1 ) }; + const std::vector& list{ this->blacklists.getListConst( + WS_NGINX, field ) }; for ( const std::string& item : list ) { this->ui->list_ConfNginx_Blacklist_List->addItem( QString::fromStdString( item ) ); } // check/uncheck the usage option - const bool used{ this->craplog.isBlacklistUsed( - WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Blacklist_Field->currentText() ) ) }; + const bool used{ this->blacklists.isUsed( + WS_NGINX, field ) }; this->ui->checkBox_ConfNginx_Blacklist_Used->setChecked( used ); this->on_checkBox_ConfNginx_Blacklist_Used_clicked( used ); } } void MainWindow::on_checkBox_ConfNginx_Blacklist_Used_clicked(bool checked) { - this->craplog.setBlacklistUsed( + this->blacklists.setUsed( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), checked ); if ( checked ) { this->ui->inLine_ConfNginx_Blacklist_String->setEnabled( true ); @@ -5501,9 +5463,9 @@ void MainWindow::on_button_ConfNginx_Blacklist_Add_clicked() if ( this->ui->list_ConfNginx_Blacklist_List->findItems( item, Qt::MatchFlag::MatchCaseSensitive ).isEmpty() ) { // not in the list yet, append try { - this->craplog.blacklistAdd( + this->blacklists.addItem( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), item.toStdString() ); this->ui->list_ConfNginx_Blacklist_List->addItem( item ); } catch ( const BWlistException& ) { @@ -5549,9 +5511,9 @@ void MainWindow::on_list_ConfNginx_Blacklist_List_itemSelectionChanged() void MainWindow::on_button_ConfNginx_Blacklist_Remove_clicked() { const auto item{ this->ui->list_ConfNginx_Blacklist_List->selectedItems().at(0) }; - this->craplog.blacklistRemove( + this->blacklists.removeItem( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), item->text().toStdString() ); // refresh the list this->on_box_ConfNginx_Blacklist_Field_currentTextChanged( this->ui->box_ConfNginx_Blacklist_Field->currentText() ); @@ -5559,9 +5521,9 @@ void MainWindow::on_button_ConfNginx_Blacklist_Remove_clicked() void MainWindow::on_button_ConfNginx_Blacklist_Up_clicked() { const auto item{ this->ui->list_ConfNginx_Blacklist_List->selectedItems().at(0) }; - const int i{ this->craplog.blacklistMoveUp( + const int i{ this->blacklists.moveUpItem( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfNginx_Blacklist_Field_currentTextChanged( this->ui->box_ConfNginx_Blacklist_Field->currentText() ); @@ -5572,9 +5534,9 @@ void MainWindow::on_button_ConfNginx_Blacklist_Up_clicked() void MainWindow::on_button_ConfNginx_Blacklist_Down_clicked() { const auto item{ this->ui->list_ConfNginx_Blacklist_List->selectedItems().at(0) }; - const int i{ this->craplog.blacklistMoveDown( + const int i{ this->blacklists.moveDownItem( WS_NGINX, - this->crapview.getLogFieldID( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfNginx_Blacklist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfNginx_Blacklist_Field_currentTextChanged( this->ui->box_ConfNginx_Blacklist_Field->currentText() ); @@ -5731,24 +5693,24 @@ void MainWindow::on_box_ConfIis_Warnlist_Field_currentTextChanged(const QString& this->ui->inLine_ConfIis_Warnlist_String->clear(); this->ui->list_ConfIis_Warnlist_List->clear(); // update the list - const std::vector& list{ this->craplog.getWarnlist( - WS_IIS, this->crapview.getLogFieldID( arg1 ) ) }; + const WarnlistField field{ this->warnlistFieldFromString( arg1 ) }; + const std::vector& list{ this->warnlists.getListConst( + WS_IIS, field ) }; for ( const std::string& item : list ) { this->ui->list_ConfIis_Warnlist_List->addItem( QString::fromStdString( item ) ); } // check/uncheck the usage option - const bool used{ this->craplog.isWarnlistUsed( - WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Warnlist_Field->currentText() ) ) }; + const bool used{ this->warnlists.isUsed( + WS_IIS, field ) }; this->ui->checkBox_ConfIis_Warnlist_Used->setChecked( used ); this->on_checkBox_ConfIis_Warnlist_Used_clicked( used ); } } void MainWindow::on_checkBox_ConfIis_Warnlist_Used_clicked(bool checked) { - this->craplog.setWarnlistUsed( + this->warnlists.setUsed( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfIis_Warnlist_Field->currentText() ), checked ); if ( checked ) { this->ui->inLine_ConfIis_Warnlist_String->setEnabled( true ); @@ -5788,9 +5750,9 @@ void MainWindow::on_button_ConfIis_Warnlist_Add_clicked() if ( this->ui->list_ConfIis_Warnlist_List->findItems( item, Qt::MatchFlag::MatchCaseSensitive ).isEmpty() ) { // not in the list yet, append try { - this->craplog.warnlistAdd( + this->warnlists.addItem( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfIis_Warnlist_Field->currentText() ), item.toStdString() ); this->ui->list_ConfIis_Warnlist_List->addItem( item ); } catch ( const BWlistException& ) { @@ -5836,9 +5798,9 @@ void MainWindow::on_list_ConfIis_Warnlist_List_itemSelectionChanged() void MainWindow::on_button_ConfIis_Warnlist_Remove_clicked() { const auto item{ this->ui->list_ConfIis_Warnlist_List->selectedItems().at(0) }; - this->craplog.warnlistRemove( + this->warnlists.removeItem( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfIis_Warnlist_Field->currentText() ), item->text().toStdString() ); // refresh the list this->on_box_ConfIis_Warnlist_Field_currentTextChanged( this->ui->box_ConfIis_Warnlist_Field->currentText() ); @@ -5846,9 +5808,9 @@ void MainWindow::on_button_ConfIis_Warnlist_Remove_clicked() void MainWindow::on_button_ConfIis_Warnlist_Up_clicked() { const auto item{ this->ui->list_ConfIis_Warnlist_List->selectedItems().at(0) }; - const int i{ this->craplog.warnlistMoveUp( + const int i{ this->warnlists.moveUpItem( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfIis_Warnlist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfIis_Warnlist_Field_currentTextChanged( this->ui->box_ConfIis_Warnlist_Field->currentText() ); @@ -5859,9 +5821,9 @@ void MainWindow::on_button_ConfIis_Warnlist_Up_clicked() void MainWindow::on_button_ConfIis_Warnlist_Down_clicked() { const auto item{ this->ui->list_ConfIis_Warnlist_List->selectedItems().at(0) }; - const int i{ this->craplog.warnlistMoveDown( + const int i{ this->warnlists.moveDownItem( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Warnlist_Field->currentText() ), + this->warnlistFieldFromString( this->ui->box_ConfIis_Warnlist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfIis_Warnlist_Field_currentTextChanged( this->ui->box_ConfIis_Warnlist_Field->currentText() ); @@ -5878,24 +5840,24 @@ void MainWindow::on_box_ConfIis_Blacklist_Field_currentTextChanged(const QString this->ui->inLine_ConfIis_Blacklist_String->clear(); this->ui->list_ConfIis_Blacklist_List->clear(); // update the list - const std::vector& list{ this->craplog.getBlacklist( - WS_IIS, this->crapview.getLogFieldID( arg1 ) ) }; + const BlacklistField field{ this->blacklistFieldFromString( arg1 ) }; + const std::vector& list{ this->blacklists.getListConst( + WS_IIS, field ) }; for ( const std::string& item : list ) { this->ui->list_ConfIis_Blacklist_List->addItem( QString::fromStdString( item ) ); } // check/uncheck the usage option - const bool used{ this->craplog.isBlacklistUsed( - WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Blacklist_Field->currentText() ) ) }; + const bool used{ this->blacklists.isUsed( + WS_IIS, field ) }; this->ui->checkBox_ConfIis_Blacklist_Used->setChecked( used ); this->on_checkBox_ConfIis_Blacklist_Used_clicked( used ); } } void MainWindow::on_checkBox_ConfIis_Blacklist_Used_clicked(bool checked) { - this->craplog.setBlacklistUsed( + this->blacklists.setUsed( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfIis_Blacklist_Field->currentText() ), checked ); if ( checked ) { this->ui->inLine_ConfIis_Blacklist_String->setEnabled( true ); @@ -5935,9 +5897,9 @@ void MainWindow::on_button_ConfIis_Blacklist_Add_clicked() if ( this->ui->list_ConfIis_Blacklist_List->findItems( item, Qt::MatchFlag::MatchCaseSensitive ).isEmpty() ) { // not in the list yet, append try { - this->craplog.blacklistAdd( + this->blacklists.addItem( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfIis_Blacklist_Field->currentText() ), item.toStdString() ); this->ui->list_ConfIis_Blacklist_List->addItem( item ); } catch ( const BWlistException& ) { @@ -5983,9 +5945,9 @@ void MainWindow::on_list_ConfIis_Blacklist_List_itemSelectionChanged() void MainWindow::on_button_ConfIis_Blacklist_Remove_clicked() { const auto item{ this->ui->list_ConfIis_Blacklist_List->selectedItems().at(0) }; - this->craplog.blacklistRemove( + this->blacklists.removeItem( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfIis_Blacklist_Field->currentText() ), item->text().toStdString() ); // refresh the list this->on_box_ConfIis_Blacklist_Field_currentTextChanged( this->ui->box_ConfIis_Blacklist_Field->currentText() ); @@ -5993,9 +5955,9 @@ void MainWindow::on_button_ConfIis_Blacklist_Remove_clicked() void MainWindow::on_button_ConfIis_Blacklist_Up_clicked() { const auto item{ this->ui->list_ConfIis_Blacklist_List->selectedItems().at(0) }; - const int i{ this->craplog.blacklistMoveUp( + const int i{ this->blacklists.moveUpItem( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfIis_Blacklist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfIis_Blacklist_Field_currentTextChanged( this->ui->box_ConfIis_Blacklist_Field->currentText() ); @@ -6006,9 +5968,9 @@ void MainWindow::on_button_ConfIis_Blacklist_Up_clicked() void MainWindow::on_button_ConfIis_Blacklist_Down_clicked() { const auto item{ this->ui->list_ConfIis_Blacklist_List->selectedItems().at(0) }; - const int i{ this->craplog.blacklistMoveDown( + const int i{ this->blacklists.moveDownItem( WS_IIS, - this->crapview.getLogFieldID( this->ui->box_ConfIis_Blacklist_Field->currentText() ), + this->blacklistFieldFromString( this->ui->box_ConfIis_Blacklist_Field->currentText() ), item->text().toStdString() ) }; // refresh the list this->on_box_ConfIis_Blacklist_Field_currentTextChanged( this->ui->box_ConfIis_Blacklist_Field->currentText() ); diff --git a/logdoctor/mainwindow.h b/logdoctor/mainwindow.h index 692bf470..4ec90089 100644 --- a/logdoctor/mainwindow.h +++ b/logdoctor/mainwindow.h @@ -10,6 +10,9 @@ #include "modules/database/database.h" +#include "modules/blacklists/blacklists.h" +#include "modules/warnlists/warnlists.h" + #include "modules/craplog/craplog.h" #include "modules/crapview/crapview.h" @@ -49,7 +52,7 @@ signals: void refreshLogs(); - void runCraplog(); + void runCraplog( const Blacklists& blacklists ); private slots: @@ -777,6 +780,17 @@ private: bool checkDataDB(); + ////////////////////////////// + //// BLACKLIST / WARNLIST //// + ////////////////////////////// + + Blacklists blacklists; + Warnlists warnlists; + + BlacklistField blacklistFieldFromString( const QString& str ); + WarnlistField warnlistFieldFromString( const QString& str ); + + ////////////////// //// CRAPTABS //// ////////////////// diff --git a/logdoctor/modules/craplog/craplog.cpp b/logdoctor/modules/craplog/craplog.cpp index 80c773d3..45b26a8a 100644 --- a/logdoctor/modules/craplog/craplog.cpp +++ b/logdoctor/modules/craplog/craplog.cpp @@ -13,12 +13,13 @@ #include "modules/exceptions.h" #include "modules/shared.h" +#include "modules/blacklists/blacklists.h" + #include "modules/craplog/modules/donuts.h" #include "modules/craplog/modules/logs.h" #include "modules/craplog/modules/workers/lister.h" #include "modules/craplog/modules/workers/parser.h" -#include #include #include @@ -32,17 +33,6 @@ Craplog::Craplog() //////////////////////// //// INITIALIZATION //// //////////////////////// - // blacklists / whitelists - for ( const WebServer& w : {WS_APACHE,WS_NGINX,WS_IIS} ) { - this->warnlists.emplace( w, std::unordered_map(4) ); - this->blacklists.emplace( w, std::unordered_map(1) ); - // default data - this->warnlists.at( w ).emplace( 11, BWlist{ .used=false, .list={} } ); - this->warnlists.at( w ).emplace( 12, BWlist{ .used=false, .list={} } ); - this->warnlists.at( w ).emplace( 20, BWlist{ .used=false, .list={} } ); - this->warnlists.at( w ).emplace( 21, BWlist{ .used=false, .list={} } ); - this->blacklists.at( w ).emplace( 20, BWlist{ .used=false, .list={} } ); - } // default format strings this->logs_format_strings.emplace( @@ -125,162 +115,6 @@ void Craplog::setWarningSize(const size_t new_size ) noexcept } -//////////////////// -//// WARN/BLACK //// -bool Craplog::isBlacklistUsed( const WebServer& web_server, const int& log_field_id ) const noexcept -{ - return this->blacklists.at( web_server ).at( log_field_id ).used; -} -bool Craplog::isWarnlistUsed( const WebServer& web_server, const int& log_field_id ) const noexcept -{ - return this->warnlists.at( web_server ).at( log_field_id ).used; -} - -void Craplog::setBlacklistUsed( const WebServer& web_server, const int& log_field_id, const bool used ) noexcept -{ - this->blacklists.at( web_server ).at( log_field_id ).used = used; -} -void Craplog::setWarnlistUsed( const WebServer& web_server, const int& log_field_id, const bool used ) noexcept -{ - this->warnlists.at( web_server ).at( log_field_id ).used = used; -} - -const std::vector& Craplog::getBlacklist( const WebServer& web_server, const int& log_field_id ) const noexcept -{ - return this->blacklists.at( web_server ).at( log_field_id ).list; -} -const std::vector& Craplog::getWarnlist( const WebServer& web_server, const int& log_field_id ) const noexcept -{ - return this->warnlists.at( web_server ).at( log_field_id ).list; -} -const std::unordered_map& Craplog::getWarnlists( const WebServer& web_server ) const noexcept -{ - return this->warnlists.at( web_server ); -} - -void Craplog::setBlacklist( const WebServer& web_server, const int& log_field_id, const std::vector& new_list ) -{ - this->blacklists.at( web_server ).at( log_field_id ).list.clear(); - for ( const std::string& item : new_list ) { - this->blacklistAdd( web_server, log_field_id, item ); - } -} -void Craplog::setWarnlist( const WebServer& web_server, const int& log_field_id, const std::vector& new_list ) -{ - this->warnlists.at( web_server ).at( log_field_id ).list.clear(); - for ( const std::string& item : new_list ) { - this->warnlistAdd( web_server, log_field_id, item ); - } -} - -void Craplog::blacklistAdd( const WebServer& web_server, const int& log_field_id, const std::string& new_item ) -{ - this->blacklists.at( web_server ).at( log_field_id ).list.push_back( - this->sanitizeBWitem( log_field_id, new_item ) ); -} -void Craplog::warnlistAdd( const WebServer& web_server, const int& log_field_id, const std::string& new_item ) -{ - this->warnlists.at( web_server ).at( log_field_id ).list.push_back( - this->sanitizeBWitem( log_field_id, new_item ) ); -} - -void Craplog::blacklistRemove( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept -{ - auto& list{ this->blacklists.at( web_server ).at( log_field_id ).list }; - if ( const auto it{ std::find( list.cbegin(), list.cend(), item ) }; it != list.cend() ) { - list.erase( it ); - } -} -void Craplog::warnlistRemove( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept -{ - auto& list{ this->warnlists.at( web_server ).at( log_field_id ).list }; - if ( const auto it{ std::find( list.cbegin(), list.cend(), item ) }; it != list.cend() ) { - list.erase( it ); - } -} - -int Craplog::blacklistMoveUp( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept -{ - auto& list{ this->blacklists.at( web_server ).at( log_field_id ).list }; - if ( auto it{ std::find( std::next(list.begin()), list.end(), item ) }; it != list.cend() ) { - const int pos{ static_cast( std::distance(list.begin(), it) ) - 1 }; - std::swap( *it, *std::prev(it) ); - return pos; - } - return -1; -} -int Craplog::warnlistMoveUp( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept -{ - auto& list{ this->warnlists.at( web_server ).at( log_field_id ).list }; - if ( auto it{ std::find( std::next(list.begin()), list.end(), item ) }; it != list.cend() ) { - const int pos{ static_cast( std::distance(list.begin(), it) ) - 1 }; - std::swap( *it, *std::prev(it) ); - return pos; - } - return -1; -} - -int Craplog::blacklistMoveDown( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept -{ - auto& list{ this->blacklists.at( web_server ).at( log_field_id ).list }; - if ( auto it{ std::find( list.begin(), std::prev(list.end()), item ) }; it != list.cend() ) { - const int pos{ static_cast( std::distance(list.begin(), it) ) + 1 }; - std::swap( *it, *std::next(it) ); - return pos; - } - return -1; -} -int Craplog::warnlistMoveDown( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept -{ - auto& list{ this->warnlists.at( web_server ).at( log_field_id ).list }; - if ( auto it{ std::find( list.begin(), std::prev(list.end()), item ) }; it != list.cend() ) { - const int pos{ static_cast( std::distance(list.begin(), it) ) + 1 }; - std::swap( *it, *std::next(it) ); - return pos; - } - return -1; -} - -std::string Craplog::sanitizeBWitem( const int& log_field_id, const std::string& new_item ) const -{ - switch ( log_field_id ) { - case 11: - { - const std::string sanitized_item{ StringOps::strip( new_item ) }; - if ( ! StringOps::isAlphabetic( sanitized_item ) ) { - // only letters allowed - throw BWlistException("Invalid Method"); - } - return StringOps::toUpper( sanitized_item ); - } - case 12: - { - const std::string sanitized_item{ StringOps::lstrip( new_item ) }; - if ( sanitized_item.empty() ) { - throw BWlistException("Invalid URI"); - } - return QUrl::toPercentEncoding( - QString::fromStdString( sanitized_item ), - "/#&?=+").toStdString(); - } - case 20: - { - const std::string sanitized_item{ StringOps::strip( new_item ) }; - if ( ! StringOps::isIP( sanitized_item ) ) { - // only IPv4/IPv6 allowed - throw BWlistException("Invalid Client"); - } - return sanitized_item; - } - case 21: - return StringOps::replace( new_item, "\"", "\\\"" ); - default: - // shouldn't be here - throw GenericException("Unexpected LogField ID: "+std::to_string(log_field_id)); - } -} - - ///////////////// //// FORMATS //// // get the logs format string @@ -821,7 +655,7 @@ void Craplog::showWorkerDialog( const WorkerDialog dialog_type, const QStringLis } } -void Craplog::startWorking() +void Craplog::startWorking( const Blacklists& blacklists ) { std::unique_lock lock( this->mutex ); this->proceed |= true; @@ -831,9 +665,9 @@ void Craplog::startWorking() this->parsed_size = 0ul; this->blacklisted_size = 0ul; // hire a worker - this->hireWorker(); + this->hireWorker( blacklists ); } -void Craplog::hireWorker() const +void Craplog::hireWorker( const Blacklists& blacklists ) const { CraplogParser* worker{ new CraplogParser( this->current_web_server, @@ -841,7 +675,7 @@ void Craplog::hireWorker() const this->db_stats_path, this->db_hashes_path, this->logs_formats.at( this->current_web_server ), - this->blacklists.at( this->current_web_server ), + blacklists.getConst( this->current_web_server ), this->log_files_to_use ) }; QThread* worker_thread{ new QThread() }; diff --git a/logdoctor/modules/craplog/craplog.h b/logdoctor/modules/craplog/craplog.h index e754d1e9..7290be0c 100644 --- a/logdoctor/modules/craplog/craplog.h +++ b/logdoctor/modules/craplog/craplog.h @@ -4,8 +4,6 @@ #include -#include "main_lib.h" - #include "modules/craplog/modules/lib.h" #include "modules/craplog/modules/hash.h" #include "modules/craplog/modules/formats.h" @@ -13,6 +11,9 @@ #include "modules/craplog/modules/workers/lib.h" +struct Blacklists; + + //! Craplog /*! Performs operations related to the logs @@ -233,161 +234,6 @@ public: // logs usage control HashOps hashOps; - ////////////////////////////// - //// BLACKLIST / WARNLIST //// - - //! Returns whether the relative blacklist is set to be used or not - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \return Whether the list is used or not - \see BWlist - */ - bool isBlacklistUsed( const WebServer& web_server, const int& log_field_id ) const noexcept; - - //! Returns whether the relative warnlist is set to be used or not - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \return Whether the list is used or not - \see BWlist - */ - bool isWarnlistUsed( const WebServer& web_server, const int& log_field_id ) const noexcept; - - //! Sets the relative blacklist to be used or not - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param used Whether the list is to be used or not - \see BWlist - */ - void setBlacklistUsed( const WebServer& web_server, const int& log_field_id, const bool used ) noexcept; - - //! Sets the relative warnlist to be used or not - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param used Whether the list is to be used or not - \see BWlist - */ - void setWarnlistUsed( const WebServer& web_server, const int& log_field_id, const bool used ) noexcept; - - //! Returns the relative items list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \return The list of items in the given blacklist - \see BWlist - */ - const std::vector& getBlacklist( const WebServer& web_server, const int& log_field_id ) const noexcept; - - //! Returns the relative items list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \return The list of items in the givenwarnlist - \see BWlist - */ - const std::vector& getWarnlist( const WebServer& web_server, const int& log_field_id ) const noexcept; - - //! Returns the relative list - /*! - \param web_server The Web Server - \return The list of items in the givenwarnlist - \see BWlist - */ - const std::unordered_map& getWarnlists( const WebServer& web_server ) const noexcept; - - //! Sets the relative items list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param new_list The new items list - \see BWlist - */ - void setBlacklist( const WebServer& web_server, const int& log_field_id, const std::vector& new_list ); - - //! Sets the relative items list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param new_list The new items list - \see BWlist - */ - void setWarnlist( const WebServer& web_server, const int& log_field_id, const std::vector& new_list ); - - //! Adds an item to the relative list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param new_list The new items list - \see BWlist - */ - void blacklistAdd( const WebServer& web_server, const int& log_field_id, const std::string& new_item ); - - //! Adds an item to the relative list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param new_item The new item to add to the list - \see BWlist - */ - void warnlistAdd( const WebServer& web_server, const int& log_field_id, const std::string& new_item ); - - //! Removes an item from the relative list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param item The item to remove from the list - \see BWlist - */ - void blacklistRemove( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept; - - //! Removes an item from the relative list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param item The item to remove from the list - \see BWlist - */ - void warnlistRemove( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept; - - //! Moves an item one position up in the relative list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param item The item to move - \see BWlist - */ - int blacklistMoveUp( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept; - - //! Moves an item one position up in the relative list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param item The item to move - \see BWlist - */ - int warnlistMoveUp( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept; - - //! Moves an item one position down in the relative list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param item The item to move - \see BWlist - */ - int blacklistMoveDown( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept; - - //! Moves an item one position down in the relative list - /*! - \param web_server The Web Server - \param log_field_id The ID of the log field - \param item The item to move - \see BWlist - */ - int warnlistMoveDown( const WebServer& web_server, const int& log_field_id, const std::string& item ) noexcept; - ////////////// //// WORK //// @@ -446,7 +292,7 @@ public slots: void logsDirScanned() noexcept; - void startWorking(); + void startWorking( const Blacklists& blacklists ); void workerStartedParsing() noexcept; @@ -491,7 +337,7 @@ private: std::mutex mutex; //! Hires a worker to parse the selected logs - void hireWorker() const; + void hireWorker( const Blacklists& blacklists ) const; ////////////////////// @@ -523,25 +369,6 @@ private: size_t warning_size{ (1'048'576u * 50u) +1u }; // => 1 MiB * x - ////////////////////////////// - //// BLACKLIST / WARNLIST //// - - // { web_server : { log_field_id : BWlist } } - std::unordered_map> blacklists; - std::unordered_map> warnlists; - - //! Sanitizes an item removing the unwanted elements - /*! - Called when adding a new item to a list - \param log_field_id The ID of the log field - \param new_item The item to be sanitized - \return The sanitized item - \throw BWlistException, GenericException - \see BWlist - */ - std::string sanitizeBWitem( const int& log_field_id, const std::string& new_item ) const; - - //////////////////// //// WEB SERVER ////