diff --git a/AUTHORS b/AUTHORS index db09b119c..c4b7c822c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1 +1,5 @@ -Christophe Dumez +Author: +* Christophe Dumez + +Other developers: +* Arnaud Demaizière diff --git a/Changelog b/Changelog index 6bdf25b5e..8e015a673 100644 --- a/Changelog +++ b/Changelog @@ -1,6 +1,7 @@ * Unknown - Christophe Dumez - v1.0.0 - FEATURE: Based on new libtorrent v0.13 - FEATURE: Added UPnP / NAT-PMP port forwarding support + - FEATURE: Added encryption support (compatible with Azureus) - FEATURE: Added RSS support - FEATURE: Support files prioritizing in a torrent - FEATURE: Finished torrents are now moved to another tab for seeding diff --git a/TODO b/TODO index e7db13e32..e740c5483 100644 --- a/TODO +++ b/TODO @@ -36,7 +36,6 @@ - Use tooltips to explain options? - Improve ratio display / calculation / saving / per torrent... - Sorting in Download Status column should be smarter than just an alphabetical sort -- Encryption support! - File selection in a torrent in compact mode??? - Windows port : http://www.peerweb.nl/qbittorrent/experimentalbuild/testing.zip - Make use of QSessionManager to save application state? diff --git a/qBittorrent.kdevelop b/qBittorrent.kdevelop index c126f33ec..059b261ec 100644 --- a/qBittorrent.kdevelop +++ b/qBittorrent.kdevelop @@ -13,8 +13,8 @@ . false - - + + kdevsubversion @@ -72,11 +72,11 @@ - - - - - + + + + + true false false @@ -153,11 +153,11 @@ executable - /home/chris/qbittorrent_svn/trunk - - + /home/chris/qbittorrent_svn/trunk/src/qbittorrent + + /home/chris/qbittorrent_svn/trunk - false + true false true false @@ -169,7 +169,7 @@ false 1 false - + 0 diff --git a/src/GUI.cpp b/src/GUI.cpp index f3dec2a08..9d1fcf8e7 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -132,10 +132,6 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent){ // Hide hash column downloadList->hideColumn(HASH); -#ifndef NO_UPNP - connect(&BTSession, SIGNAL(noWanServiceDetected()), this, SLOT(displayNoUPnPWanServiceDetected())); - connect(&BTSession, SIGNAL(wanServiceDetected()), this, SLOT(displayUPnPWanServiceDetected())); -#endif connect(&BTSession, SIGNAL(addedTorrent(const QString&, torrent_handle&, bool)), this, SLOT(torrentAdded(const QString&, torrent_handle&, bool))); connect(&BTSession, SIGNAL(duplicateTorrent(const QString&)), this, SLOT(torrentDuplicate(const QString&))); connect(&BTSession, SIGNAL(invalidTorrent(const QString&)), this, SLOT(torrentCorrupted(const QString&))); @@ -278,17 +274,6 @@ void GUI::readParamsOnSocket(){ } } -#ifndef NO_UPNP -void GUI::displayNoUPnPWanServiceDetected(){ - setInfoBar(tr("UPnP: no WAN service detected..."), "red"); -} - -void GUI::displayUPnPWanServiceDetected(){ - setInfoBar(tr("UPnP: WAN service detected!"), "green"); -} - -#endif - // Toggle paused state of selected torrent void GUI::togglePausedState(const QModelIndex& index){ int row = index.row(); @@ -1151,6 +1136,7 @@ void GUI::configureSession(bool deleteOptions){ unsigned short old_listenPort, new_listenPort; proxy_settings proxySettings; session_settings sessionSettings; + pe_settings encryptionSettings; // Configure session regarding options BTSession.setDefaultSavePath(options->getSavePath()); old_listenPort = BTSession.getListenPort(); @@ -1190,18 +1176,29 @@ void GUI::configureSession(bool deleteOptions){ setInfoBar(tr("DHT support [OFF]"), "blue"); BTSession.disableDHT(); } -#ifndef NO_UPNP - // Upnp - if(options->isUPnPEnabled()){ - setInfoBar(tr("UPnP support [ON], port: %1").arg(options->getUPnPPort()), "blue"); - BTSession.enableUPnP(options->getUPnPPort()); - BTSession.setUPnPPort(options->getUPnPPort()); - }else{ - setInfoBar(tr("UPnP support [OFF]"), "blue"); - BTSession.disableUPnP(); - } -#endif + // UPnP can't be disabled setInfoBar(tr("UPnP support [ON]"), "blue"); + // Encryption settings + int encryptionState = options->getEncryptionSetting(); + encryptionSettings.allowed_enc_level = pe_settings::both; + encryptionSettings.prefer_rc4 = true; + switch(encryptionState){ + case 0: //Enabled + encryptionSettings.out_enc_policy = pe_settings::enabled; + encryptionSettings.in_enc_policy = pe_settings::enabled; + setInfoBar(tr("Encryption support [ON]"), "blue"); + break; + case 1: // Forced + encryptionSettings.out_enc_policy = pe_settings::forced; + encryptionSettings.in_enc_policy = pe_settings::forced; + setInfoBar(tr("Encryption support [FORCED]"), "blue"); + break; + default: // Disabled + encryptionSettings.out_enc_policy = pe_settings::disabled; + encryptionSettings.in_enc_policy = pe_settings::disabled; + setInfoBar(tr("Encryption support [OFF]"), "blue"); + } + BTSession.applyEncryptionSettings(encryptionSettings); // PeX if(!options->isPeXDisabled()){ qDebug("Enabling Peer eXchange (PeX)"); diff --git a/src/GUI.h b/src/GUI.h index 91be7aeaa..3f290020f 100644 --- a/src/GUI.h +++ b/src/GUI.h @@ -154,10 +154,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{ void OptionsSaved(const QString& info, bool deleteOptions); // HTTP slots void on_actionDownload_from_URL_triggered(); -#ifndef NO_UPNP - void displayNoUPnPWanServiceDetected(); - void displayUPnPWanServiceDetected(); -#endif public slots: diff --git a/src/bittorrent.cpp b/src/bittorrent.cpp index 217fcaf41..91745f2b7 100644 --- a/src/bittorrent.cpp +++ b/src/bittorrent.cpp @@ -28,10 +28,6 @@ #include "misc.h" #include "downloadThread.h" -#ifndef NO_UPNP -#include "UPnP.h" -#endif - // Main constructor bittorrent::bittorrent(){ // To avoid some exceptions @@ -45,9 +41,6 @@ bittorrent::bittorrent(){ s->set_severity_level(alert::info); // DHT (Trackerless), disabled until told otherwise DHTEnabled = false; -#ifndef NO_UPNP - UPnPEnabled = false; -#endif // Enabling metadata plugin s->add_extension(&create_metadata_plugin); timerAlerts = new QTimer(this); @@ -66,9 +59,6 @@ void bittorrent::resumeUnfinishedTorrents(){ // Main destructor bittorrent::~bittorrent(){ disableDirectoryScanning(); -#ifndef NO_UPNP - disableUPnP(); -#endif delete timerAlerts; delete downloader; delete s; @@ -79,60 +69,6 @@ torrent_handle bittorrent::getTorrentHandle(const QString& hash) const{ return s->find_torrent(misc::fromString((hash.toStdString()))); } -#ifndef NO_UPNP -void bittorrent::enableUPnP(int port){ - if(!UPnPEnabled){ - qDebug("Enabling UPnP"); - UPnPEnabled = true; - m_upnpMappings.resize(1); - m_upnpMappings[0] = CUPnPPortMapping( - getListenPort(), - "TCP", - true, - "qBittorrent"); - m_upnp = new CUPnPControlPoint(port); - connect(m_upnp, SIGNAL(noWanServiceDetected()), this, SLOT(noWanServiceEventHandler())); - connect(m_upnp, SIGNAL(yeswanServiceDetected()), this, SLOT(wanServiceEventHandler())); - m_upnp->AddPortMappings(m_upnpMappings); - } -} - -void bittorrent::noWanServiceEventHandler(){ - // Forward this signal - emit noWanServiceDetected(); -} - -void bittorrent::wanServiceEventHandler(){ - // Forward this signal - emit wanServiceDetected(); -} - -// Set UPnP port (>= 1000) -void bittorrent::setUPnPPort(int upnp_port){ - if(!UPnPEnabled){ - qDebug("Cannot set UPnP port because it is disabled"); - return; - } - if(m_upnp->getUPnPPort() != upnp_port){ - qDebug("Changing UPnP port to %d", upnp_port); - delete m_upnp; - m_upnp = new CUPnPControlPoint(upnp_port); - m_upnp->AddPortMappings(m_upnpMappings); - }else{ - qDebug("UPnP: No need to set the port, it is already listening on this port"); - } -} - -void bittorrent::disableUPnP(){ - if(UPnPEnabled){ - qDebug("Disabling UPnP"); - UPnPEnabled = false; - m_upnp->DeletePortMappings(m_upnpMappings); - delete m_upnp; - } -} -#endif - // Return true if the torrent corresponding to the // hash is paused bool bittorrent::isPaused(const QString& hash) const{ @@ -895,6 +831,10 @@ void bittorrent::saveDHTEntry(){ } } +void bittorrent::applyEncryptionSettings(pe_settings se){ + s->set_pe_settings(se); +} + // Will fast resume unfinished torrents in // backup directory void bittorrent::resumeUnfinished(){ diff --git a/src/bittorrent.h b/src/bittorrent.h index edb8f13d7..27005b084 100644 --- a/src/bittorrent.h +++ b/src/bittorrent.h @@ -44,10 +44,6 @@ class QString; using namespace libtorrent; class downloadThread; -#ifndef NO_UPNP - class CUPnPControlPoint; - class CUPnPPortMapping; -#endif class bittorrent : public QObject{ Q_OBJECT @@ -55,19 +51,12 @@ class bittorrent : public QObject{ private: session *s; bool DHTEnabled; -#ifndef NO_UPNP - bool UPnPEnabled; -#endif QString scan_dir; QTimer *timerScan; QTimer *timerAlerts; downloadThread *downloader; QStringList supported_preview_extensions; QString defaultSavePath; -#ifndef NO_UPNP - CUPnPControlPoint* m_upnp; - std::vector m_upnpMappings; -#endif protected: QString getSavePath(const QString& hash); @@ -118,11 +107,7 @@ class bittorrent : public QObject{ void setProxySettings(proxy_settings proxySettings, bool trackers=true, bool peers=true, bool web_seeds=true, bool dht=true); void setSessionSettings(session_settings sessionSettings); void setDefaultSavePath(const QString& savepath); -#ifndef NO_UPNP - void enableUPnP(int port=50000); - void disableUPnP(); - void setUPnPPort(int upnp_port); -#endif + void applyEncryptionSettings(pe_settings se); protected slots: void cleanDeleter(deleteThread* deleter); @@ -133,10 +118,6 @@ class bittorrent : public QObject{ void resumeUnfinished(); bool loadTrackerFile(const QString& hash); void saveTrackerFile(const QString& hash); -#ifndef NO_UPNP - void noWanServiceEventHandler(); - void wanServiceEventHandler(); -#endif signals: void invalidTorrent(const QString& path); @@ -152,10 +133,7 @@ class bittorrent : public QObject{ void newDownloadedTorrent(const QString& path, const QString& url); void aboutToDownloadFromUrl(const QString& url); void updateFileSize(QString hash); -#ifndef NO_UPNP - void noWanServiceDetected(); - void wanServiceDetected(); -#endif + }; #endif diff --git a/src/lang/qbittorrent_fr.ts b/src/lang/qbittorrent_fr.ts index 083004df5..d9346ae80 100644 --- a/src/lang/qbittorrent_fr.ts +++ b/src/lang/qbittorrent_fr.ts @@ -1,5 +1,6 @@ + @default @@ -2859,7 +2860,7 @@ Changements: No URL entered - Aucune URL entrée + Aucune URL entrée diff --git a/src/options.ui b/src/options.ui index 272298b45..2085aca51 100644 --- a/src/options.ui +++ b/src/options.ui @@ -5,7 +5,7 @@ 0 0 - 545 + 594 530 @@ -19,12 +19,21 @@ Options -- qBittorrent - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -78,40 +87,61 @@ Connection - - 9 - - - 6 - Main - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -160,20 +190,38 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -182,12 +230,12 @@ - - 1000000 - 1 + + 1000000 + 200 @@ -233,12 +281,21 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -247,12 +304,12 @@ - - 1000000 - 1 + + 1000000 + 10 @@ -298,23 +355,32 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + false - - 1000 - 1 + + 1000 + 600 @@ -363,20 +429,29 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + - - 65525 - 1000 + + 65525 + 6881 @@ -394,12 +469,12 @@ - - 65525 - 1000 + + 65525 + 6889 @@ -422,12 +497,21 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -446,12 +530,12 @@ 1 - - 99.900000000000006 - 1.000000000000000 + + 99.900000000000006 + 0.100000000000000 @@ -511,12 +595,21 @@ Peer eXchange (PeX) - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -529,24 +622,27 @@ - - 0 - - - 6 - DHT (trackerless) - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -560,20 +656,38 @@ DHT configuration - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -589,12 +703,12 @@ 0 - - 65525 - 1000 + + 65525 + 6881 @@ -622,96 +736,53 @@ - + - UPnP port forwarding + Encryption - - 9 - - - 6 - - - - - true - - - Disable UPnP port forwarding - - - true - - - - - - false - - - UPnP configuration - - - - 9 - - - 6 - - - - - 0 + + + + + Encryption state: + + + + + + + + Enabled - - 6 + + + + Forced - - - - UPnP port: - - - - - - - - 6 - 0 - - - - 65525 - - - 1000 - - - 50000 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - + + + + Disabled + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + @@ -725,8 +796,8 @@ - 20 - 40 + 505 + 16 @@ -738,24 +809,42 @@ Behaviour - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + Torrent addition - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -775,20 +864,38 @@ Default save path - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -801,11 +908,20 @@ - + + 6 + + + 0 + + 0 - - 6 + + 0 + + + 0 @@ -837,12 +953,21 @@ Main window - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -886,12 +1011,21 @@ Systray messages - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -939,32 +1073,59 @@ Language - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + Localization - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1047,12 +1208,21 @@ IP Filter - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -1069,12 +1239,21 @@ Filter Settings - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -1124,12 +1303,21 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1174,12 +1362,21 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1209,12 +1406,21 @@ Proxy - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -1231,20 +1437,38 @@ Proxy Settings - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1312,12 +1536,21 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1370,28 +1603,55 @@ Authentication - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1410,12 +1670,21 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1549,24 +1818,42 @@ Misc - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + Directory scan - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -1576,12 +1863,21 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1597,12 +1893,21 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1633,20 +1938,38 @@ Preview program - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + @@ -1675,12 +1998,21 @@ Style (Look 'n Feel) - - 9 - 6 + + 9 + + + 9 + + + 9 + + + 9 + @@ -1754,12 +2086,21 @@ - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + diff --git a/src/options_imp.cpp b/src/options_imp.cpp index 1beaafe5f..f5ee06d3a 100644 --- a/src/options_imp.cpp +++ b/src/options_imp.cpp @@ -68,11 +68,6 @@ options_imp::options_imp(QWidget *parent):QDialog(parent){ delFilterRange->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/remove.png"))); enableProxyAuth_checkBox->setIcon(QIcon(QString::fromUtf8(":/Icons/encrypted.png"))); to_range->setText(tr("to", " to ")); - // If UPnP is not supported then disable it -#ifdef NO_UPNP - groupMainUPnP->setEnabled(false); - disableUPnP->setChecked(false); -#endif #ifdef Q_WS_WIN radioWinXPStyle->setEnabled(true); #endif @@ -146,9 +141,6 @@ options_imp::options_imp(QWidget *parent):QDialog(parent){ connect(disableUPLimit, SIGNAL(stateChanged(int)), this, SLOT(disableUpload(int))); connect(disableDLLimit, SIGNAL(stateChanged(int)), this, SLOT(disableDownload(int))); connect(disableDHT, SIGNAL(stateChanged(int)), this, SLOT(disableDHTGroup(int))); -#ifndef NO_UPNP - connect(disableUPnP, SIGNAL(stateChanged(int)), this, SLOT(disableUPnPGroup(int))); -#endif connect(check_disableSystray, SIGNAL(stateChanged(int)), this, SLOT(systrayDisabled(int))); connect(disableRatio, SIGNAL(stateChanged(int)), this, SLOT(disableShareRatio(int))); connect(activateFilter, SIGNAL(stateChanged(int)), this, SLOT(enableFilter(int))); @@ -172,12 +164,8 @@ options_imp::options_imp(QWidget *parent):QDialog(parent){ connect(enableScan_checkBox, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton())); connect(disableMaxConnec, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton())); connect(disableDHT, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton())); -#ifndef NO_UPNP - connect(disableUPnP, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton())); -#endif connect(disablePeX, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton())); - connect(spin_dht_port, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spin_upnp_port, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(comboEncryption, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); // Language connect(combo_i18n, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); // IPFilter @@ -275,10 +263,7 @@ void options_imp::saveOptions(){ settings.setValue("PortRangeMin", getPorts().first); settings.setValue("PortRangeMax", getPorts().second); settings.setValue("ShareRatio", getRatio()); - settings.setValue("DHTPort", getDHTPort()); -#ifndef NO_UPNP - settings.setValue("UPnPPort", getUPnPPort()); -#endif + settings.setValue("EncryptionState", getEncryptionSetting()); settings.setValue("PeXState", !isPeXDisabled()); settings.setValue("ScanDir", getScanDir()); // End Main options @@ -495,20 +480,8 @@ void options_imp::loadOptions(){ } spin_dht_port->setValue(value); } -#ifndef NO_UPNP - value = settings.value("UPnPPort", -1).toInt(); - if(value < 0){ - disableUPnP->setChecked(true); - groupUPnP->setEnabled(false); - }else{ - disableUPnP->setChecked(false); - groupUPnP->setEnabled(true); - if(value < 1000){ - value = 50000; - } - spin_upnp_port->setValue(value); - } -#endif + value = settings.value("EncryptionState", 0).toInt(); + comboEncryption->setCurrentIndex(value); boolValue = settings.value("PeXState", true).toBool(); if(boolValue){ // Pex disabled @@ -661,19 +634,9 @@ int options_imp::getDHTPort() const{ } } -#ifndef NO_UPNP -int options_imp::getUPnPPort() const{ - if(isUPnPEnabled()){ - return spin_upnp_port->value(); - }else{ - return -1; - } -} - -bool options_imp::isUPnPEnabled() const{ - return !disableUPnP->isChecked(); +int options_imp::getEncryptionSetting() const{ + return comboEncryption->currentIndex(); } -#endif QString options_imp::getPreviewProgram() const{ QString preview_txt = preview_program->text(); @@ -815,18 +778,6 @@ void options_imp::disableDHTGroup(int checkBoxValue){ } } -#ifndef NO_UPNP -void options_imp::disableUPnPGroup(int checkBoxValue){ - if(checkBoxValue==2){ - //Disable - groupUPnP->setEnabled(false); - }else{ - //enable - groupUPnP->setEnabled(true); - } -} -#endif - void options_imp::enableSavePath(int checkBoxValue){ if(checkBoxValue==2){ //enable diff --git a/src/options_imp.h b/src/options_imp.h index 32d28a89f..871ab2975 100644 --- a/src/options_imp.h +++ b/src/options_imp.h @@ -59,10 +59,7 @@ class options_imp : public QDialog, private Ui::Dialog{ QString getScanDir() const; bool isDHTEnabled() const; int getDHTPort() const; -#ifndef NO_UPNP - bool isUPnPEnabled() const; - int getUPnPPort() const; -#endif + int getEncryptionSetting() const; bool isPeXDisabled() const; // Filter Settings bool isFilteringEnabled() const; @@ -105,9 +102,6 @@ class options_imp : public QDialog, private Ui::Dialog{ void on_filterBrowse_clicked(); void disableDownload(int checkBoxValue); void disableDHTGroup(int checkBoxValue); -#ifndef NO_UPNP - void disableUPnPGroup(int checkBoxValue); -#endif void disableMaxConnecLimit(int); void enableFilter(int checkBoxValue); void disableUpload(int checkBoxValue); diff --git a/src/src.pro b/src/src.pro index e80f9fc8b..7b8915a8e 100644 --- a/src/src.pro +++ b/src/src.pro @@ -11,14 +11,11 @@ TARGET = qbittorrent CONFIG += qt thread x11 network # Update this VERSION for each release -DEFINES += VERSION=\\\"v1.0.0alpha8\\\" +DEFINES += VERSION=\\\"v1.0.0alpha9\\\" DEFINES += VERSION_MAJOR=1 DEFINES += VERSION_MINOR=0 DEFINES += VERSION_BUGFIX=0 -# Temporary hack -DEFINES += NO_UPNP - contains(DEBUG_MODE, 1){ CONFIG += debug message(Debug build!)