diff --git a/Changelog b/Changelog
index 89d064230..d228fac59 100644
--- a/Changelog
+++ b/Changelog
@@ -17,6 +17,7 @@
- FEATURE: Supports SOCKS5 proxies as well as HTTP ones
- FEATURE: Better systems integration (buttons, dialogs...)
- FEATURE: Filtered files are not allocated on the hard-drive anymore (if FS is compatible)
+ - FEATURE: IPs blocked by filter are now logged in GUI
- FEATURE: Added a way to link against static libtorrent (useful for deb packages)
- BUGFIX: Progress of paused torrents is now correct on restart
- BUGFIX: Progress column gets sorted on restart it is was during last execution
diff --git a/src/GUI.cpp b/src/GUI.cpp
index 59a82abd6..cf66e88c8 100644
--- a/src/GUI.cpp
+++ b/src/GUI.cpp
@@ -112,7 +112,8 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent){
actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png")));
actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png")));
actionCreate_torrent->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/new.png")));
- tabBottom->setTabIcon(0, QIcon(QString::fromUtf8(":/Icons/log.png")));
+// tabBottom->setTabIcon(0, QIcon(QString::fromUtf8(":/Icons/log.png")));
+// tabBottom->setTabIcon(1, QIcon(QString::fromUtf8(":/Icons/filter.png")));
tabs->setTabIcon(0, QIcon(QString::fromUtf8(":/Icons/skin/downloading.png")));
// Set default ratio
lbl_ratio_icon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/stare.png")));
@@ -143,6 +144,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent){
connect(&BTSession, SIGNAL(trackerError(const QString&, const QString&, const QString&)), this, SLOT(trackerError(const QString&, const QString&, const QString&)));
connect(&BTSession,SIGNAL(allTorrentsFinishedChecking()), this, SLOT(sortProgressColumnDelayed()));
connect(&BTSession, SIGNAL(trackerAuthenticationRequired(torrent_handle&)), this, SLOT(trackerAuthenticationRequired(torrent_handle&)));
+ connect(&BTSession, SIGNAL(peerBlocked(const QString&)), this, SLOT(addLogPeerBlocked(const QString)));
connect(&BTSession, SIGNAL(scanDirFoundTorrents(const QStringList&)), this, SLOT(processScannedFiles(const QStringList&)));
connect(&BTSession, SIGNAL(newDownloadedTorrent(const QString&, const QString&)), this, SLOT(processDownloadedFiles(const QString&, const QString&)));
connect(&BTSession, SIGNAL(aboutToDownloadFromUrl(const QString&)), this, SLOT(displayDownloadingUrlInfos(const QString&)));
@@ -242,6 +244,16 @@ void GUI::readSettings() {
settings.endGroup();
}
+void GUI::addLogPeerBlocked(const QString& ip){
+ static unsigned short nbLines = 0;
+ ++nbLines;
+ if(nbLines > 200){
+ textBlockedUsers->clear();
+ nbLines = 1;
+ }
+ infoBar->append(""+ QTime::currentTime().toString("hh:mm:ss") + " - "+tr("%1 was blocked").arg(ip));
+}
+
// Update Info Bar information
void GUI::setInfoBar(const QString& info, const QString& color){
qDebug("setInfoBar called");
@@ -1256,8 +1268,11 @@ void GUI::configureSession(bool deleteOptions){
// Apply filtering settings
if(options->isFilteringEnabled()){
BTSession.enableIPFilter(options->getFilter());
+ tabBottom->setTabEnabled(1, true);
}else{
BTSession.disableIPFilter();
+ tabBottom->setCurrentIndex(0);
+ tabBottom->setTabEnabled(1, false);
}
// Apply Proxy settings
if(options->isProxyEnabled()){
diff --git a/src/GUI.h b/src/GUI.h
index 6fa0110a0..80cef8d1c 100644
--- a/src/GUI.h
+++ b/src/GUI.h
@@ -129,6 +129,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
void readSettings();
void on_actionExit_triggered();
void createTrayIcon();
+ void addLogPeerBlocked(const QString&);
// Torrent actions
size_type torrentEffectiveSize(QString hash) const;
void showProperties(const QModelIndex &index);
diff --git a/src/bittorrent.cpp b/src/bittorrent.cpp
index b3b04cfed..6f22fd1a1 100644
--- a/src/bittorrent.cpp
+++ b/src/bittorrent.cpp
@@ -716,6 +716,9 @@ void bittorrent::readAlerts(){
emit trackerAuthenticationRequired(p->handle);
}
}
+ else if (peer_blocked_alert* p = dynamic_cast(a.get())){
+ emit peerBlocked(QString(p->ip.to_string().c_str()));
+ }
a = s->pop_alert();
}
}
diff --git a/src/bittorrent.h b/src/bittorrent.h
index 354a4cdb9..3888dfc6c 100644
--- a/src/bittorrent.h
+++ b/src/bittorrent.h
@@ -144,6 +144,7 @@ class bittorrent : public QObject{
void aboutToDownloadFromUrl(const QString& url);
void updateFileSize(QString hash);
void allTorrentsFinishedChecking();
+ void peerBlocked(const QString&);
};
diff --git a/src/options_imp.cpp b/src/options_imp.cpp
index 4d2b84e70..ba98de27c 100644
--- a/src/options_imp.cpp
+++ b/src/options_imp.cpp
@@ -516,15 +516,10 @@ void options_imp::loadOptions(){
settings.beginGroup("IPFilter");
if(settings.value("Enabled", false).toBool()){
strValue = settings.value("File", QString()).toString();
- if(strValue.isEmpty()){
- activateFilter->setChecked(false);
- filterGroup->setEnabled(false);
- }else{
- activateFilter->setChecked(true);
- filterGroup->setEnabled(true);
- filterFile->setText(strValue);
- processFilterFile(strValue);
- }
+ activateFilter->setChecked(true);
+ filterGroup->setEnabled(true);
+ filterFile->setText(strValue);
+ processFilterFile(strValue);
}else{
activateFilter->setChecked(false);
filterGroup->setEnabled(false);
diff --git a/src/src.pro b/src/src.pro
index f2f73545b..53f00b98d 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -11,7 +11,7 @@ TARGET = qbittorrent
CONFIG += qt thread x11 network
# Update this VERSION for each release
-DEFINES += VERSION=\\\"v1.0.0alpha10\\\"
+DEFINES += VERSION=\\\"v1.0.0alpha11\\\"
DEFINES += VERSION_MAJOR=1
DEFINES += VERSION_MINOR=0
DEFINES += VERSION_BUGFIX=0