From: Manuel Nickschas Date: Mon, 22 Sep 2014 18:39:39 +0000 (+0200) Subject: Merge pull request #92 from mamarley/nodbnoemit X-Git-Tag: 0.11.0~7 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=0d0a9199ac670b0427704d53e431d29f5beaf2d5;hp=a4bcc707aed42a8be43848068d82cb0ef2b43d0e Merge pull request #92 from mamarley/nodbnoemit Do not emit messages if storing them in the DB failed --- diff --git a/.travis.yml b/.travis.yml index b99c62bb..defbb623 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,29 @@ +before_install: + - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + - sudo add-apt-repository -y ppa:kalakris/cmake + - sudo apt-add-repository -y ppa:beineri/opt-qt521 + - sudo apt-get -qq update + +install: + - sudo apt-get install -q gcc-4.7 g++-4.7 + - if [ "$CXX" = "clang" ]; then sudo apt-get install -q clang-3.4; fi + - sudo apt-get install -q cmake + - sudo apt-get install -q qt52base qt52webkit qt52tools qt52script + - if [ "$CXX" = "g++" ]; then export CXX="g++-4.7" CC="gcc-4.7"; fi + language: cpp + compiler: - - gcc + - gcc - clang -before_install: - - sudo add-apt-repository ppa:kalakris/cmake/test -y - - sudo apt-get update -qq - - sudo apt-get install cmake - - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - - sudo apt-get update -qq - - if [ "$CXX" = "g++" ]; then sudo apt-get install -qq g++-4.7; fi - - if [ "$CXX" = "g++" ]; then export CXX="g++-4.7" CC="gcc-4.7"; fi - -script: mkdir build && cd build && cmake ../ && make +env: + - QT_VERSION=qt4 + - QT_VERSION=qt5 + +script: + - mkdir build + - cd build + - if [ "$QT_VERSION" = "qt4" ]; then cmake ..; fi + - if [ "$QT_VERSION" = "qt5" ]; then source /opt/qt52/bin/qt52-env.sh && cmake -DUSE_QT5=ON ..; fi + - make \ No newline at end of file diff --git a/README b/README index 49b53c0c..1877b621 100644 --- a/README +++ b/README @@ -5,11 +5,11 @@ Please find the current release notes at . On first run of the Quassel core, it will wait for a client to connect and present a first-run wizard that will allow you to create the database -and one admin user for the core-side storage. Note that Quassel does not -support the administration of user accounts yet, this includes adding -more users, changing passwords and so on. -However, you can add more users, or change passwords of existing ones, -using manageusers.py to be found in the scripts/ directory. +and one admin user for the core-side storage. + +To add more users, run: `quasselcore --add-user` +To change the password of an existing user: `quasselcore --change-userpass=username` +The manageusers.py script is deprecated. IRC is the preferred means of getting in touch with the developers. The Quassel IRC Team can be contacted on Freenode/#quassel (or diff --git a/src/client/clientuserinputhandler.cpp b/src/client/clientuserinputhandler.cpp index 2a323edd..2f890810 100644 --- a/src/client/clientuserinputhandler.cpp +++ b/src/client/clientuserinputhandler.cpp @@ -129,7 +129,7 @@ void ClientUserInputHandler::switchBuffer(const NetworkId &networkId, const QStr QList bufferViewConfigList = clientBufferViewManager->clientBufferViewConfigs(); foreach(ClientBufferViewConfig *bufferViewConfig, bufferViewConfigList) { if (bufferViewConfig->temporarilyRemovedBuffers().contains(newBufId)) { - bufferViewConfig->addBuffer(newBufId, bufferViewConfig->bufferList().length()); + bufferViewConfig->requestAddBuffer(newBufId, bufferViewConfig->bufferList().length()); //if (bufferViewConfig->sortAlphabetically()) { // TODO we need to trigger a sort here, but can't reach the model required // to get a bufferviewfilter, as the bufferviewmanager only managers configs diff --git a/src/common/protocol.h b/src/common/protocol.h index 053ab29b..b219e018 100644 --- a/src/common/protocol.h +++ b/src/common/protocol.h @@ -80,12 +80,12 @@ struct ClientDenied : public HandshakeMessage struct ClientRegistered : public HandshakeMessage { - inline ClientRegistered(quint32 coreFeatures, bool coreConfigured, const QVariantList &backendInfo, bool sslSupported, const QDateTime &coreStartTime) + inline ClientRegistered(quint32 coreFeatures, bool coreConfigured, const QVariantList &backendInfo, bool sslSupported, const QString &coreInfo) : coreFeatures(coreFeatures) , coreConfigured(coreConfigured) , backendInfo(backendInfo) , sslSupported(sslSupported) - , coreStartTime(coreStartTime) + , coreInfo(coreInfo) {} quint32 coreFeatures; @@ -94,7 +94,7 @@ struct ClientRegistered : public HandshakeMessage // this is only used by the LegacyProtocol in compat mode bool sslSupported; - QDateTime coreStartTime; + QString coreInfo; }; diff --git a/src/common/protocols/datastream/datastreampeer.cpp b/src/common/protocols/datastream/datastreampeer.cpp index 7c45b461..393d0e2c 100644 --- a/src/common/protocols/datastream/datastreampeer.cpp +++ b/src/common/protocols/datastream/datastreampeer.cpp @@ -124,7 +124,7 @@ void DataStreamPeer::handleHandshakeMessage(const QVariantList &mapData) } else if (msgType == "ClientInitAck") { - handle(ClientRegistered(m["CoreFeatures"].toUInt(), m["Configured"].toBool(), m["StorageBackends"].toList(), false, QDateTime())); // SupportsSsl and coreStartTime obsolete + handle(ClientRegistered(m["CoreFeatures"].toUInt(), m["Configured"].toBool(), m["StorageBackends"].toList(), false, QString())); // SupportsSsl and coreInfo obsolete } else if (msgType == "CoreSetupData") { diff --git a/src/common/protocols/legacy/legacypeer.cpp b/src/common/protocols/legacy/legacypeer.cpp index 982ffd7c..98a7afa9 100644 --- a/src/common/protocols/legacy/legacypeer.cpp +++ b/src/common/protocols/legacy/legacypeer.cpp @@ -19,10 +19,10 @@ ***************************************************************************/ #include +#include #include #include "legacypeer.h" -#include "quassel.h" /* version.inc is no longer used for this */ const uint protocolVersion = 10; @@ -170,7 +170,7 @@ void LegacyPeer::handleHandshakeMessage(const QVariant &msg) socket()->setProperty("UseCompression", true); #endif - handle(ClientRegistered(m["CoreFeatures"].toUInt(), m["Configured"].toBool(), m["StorageBackends"].toList(), m["SupportSsl"].toBool(), QDateTime())); + handle(ClientRegistered(m["CoreFeatures"].toUInt(), m["Configured"].toBool(), m["StorageBackends"].toList(), m["SupportSsl"].toBool(), QString())); } else if (msgType == "CoreSetupData") { @@ -249,15 +249,7 @@ void LegacyPeer::dispatch(const ClientRegistered &msg) { m["SupportsCompression"] = socket()->property("UseCompression").toBool(); // this property gets already set in the ClientInit handler // This is only used for old v10 clients (pre-0.5) - int uptime = msg.coreStartTime.secsTo(QDateTime::currentDateTime().toUTC()); - int updays = uptime / 86400; uptime %= 86400; - int uphours = uptime / 3600; uptime %= 3600; - int upmins = uptime / 60; - m["CoreInfo"] = tr("Quassel Core Version %1
" - "Built: %2
" - "Up %3d%4h%5m (since %6)").arg(Quassel::buildInfo().fancyVersionString) - .arg(Quassel::buildInfo().buildDate) - .arg(updays).arg(uphours, 2, 10, QChar('0')).arg(upmins, 2, 10, QChar('0')).arg(msg.coreStartTime.toString(Qt::TextDate)); + m["CoreInfo"] = msg.coreInfo; m["LoginEnabled"] = m["Configured"] = msg.coreConfigured; diff --git a/src/core/coreauthhandler.cpp b/src/core/coreauthhandler.cpp index 9ef67fa2..d52a50b8 100644 --- a/src/core/coreauthhandler.cpp +++ b/src/core/coreauthhandler.cpp @@ -169,8 +169,18 @@ void CoreAuthHandler::handle(const RegisterClient &msg) if (!configured) backends = Core::backendInfo(); - // useSsl and startTime are only used for the legacy protocol - _peer->dispatch(ClientRegistered(Quassel::features(), configured, backends, useSsl, Core::instance()->startTime())); + int uptime = Core::instance()->startTime().secsTo(QDateTime::currentDateTime().toUTC()); + int updays = uptime / 86400; uptime %= 86400; + int uphours = uptime / 3600; uptime %= 3600; + int upmins = uptime / 60; + QString coreInfo = tr("Quassel Core Version %1
" + "Built: %2
" + "Up %3d%4h%5m (since %6)").arg(Quassel::buildInfo().fancyVersionString) + .arg(Quassel::buildInfo().buildDate) + .arg(updays).arg(uphours, 2, 10, QChar('0')).arg(upmins, 2, 10, QChar('0')).arg(Core::instance()->startTime().toString(Qt::TextDate)); + + // useSsl and coreInfo are only used for the legacy protocol + _peer->dispatch(ClientRegistered(Quassel::features(), configured, backends, useSsl, coreInfo)); if (_legacy && useSsl) startSsl(); diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp index 80986f06..4223c5f8 100644 --- a/src/core/corenetwork.cpp +++ b/src/core/corenetwork.cpp @@ -82,7 +82,7 @@ CoreNetwork::CoreNetwork(const NetworkId &networkid, CoreSession *session) connect(this, SIGNAL(newEvent(Event *)), coreSession()->eventManager(), SLOT(postEvent(Event *))); if (Quassel::isOptionSet("oidentd")) { - connect(this, SIGNAL(socketInitialized(const CoreIdentity*, QHostAddress, quint16, QHostAddress, quint16)), Core::instance()->oidentdConfigGenerator(), SLOT(addSocket(const CoreIdentity*, QHostAddress, quint16, QHostAddress, quint16)), Qt::BlockingQueuedConnection); + connect(this, SIGNAL(socketOpen(const CoreIdentity*, QHostAddress, quint16, QHostAddress, quint16)), Core::instance()->oidentdConfigGenerator(), SLOT(addSocket(const CoreIdentity*, QHostAddress, quint16, QHostAddress, quint16)), Qt::BlockingQueuedConnection); connect(this, SIGNAL(socketDisconnected(const CoreIdentity*, QHostAddress, quint16, QHostAddress, quint16)), Core::instance()->oidentdConfigGenerator(), SLOT(removeSocket(const CoreIdentity*, QHostAddress, quint16, QHostAddress, quint16))); } } @@ -444,6 +444,15 @@ void CoreNetwork::socketError(QAbstractSocket::SocketError error) void CoreNetwork::socketInitialized() { + CoreIdentity *identity = identityPtr(); + if (!identity) { + qCritical() << "Identity invalid!"; + disconnectFromIrc(); + return; + } + + emit socketOpen(identity, localAddress(), localPort(), peerAddress(), peerPort()); + Server server = usedServer(); #ifdef HAVE_SSL if (server.useSsl && !socket.isEncrypted()) @@ -452,12 +461,6 @@ void CoreNetwork::socketInitialized() #if QT_VERSION >= 0x040600 socket.setSocketOption(QAbstractSocket::KeepAliveOption, true); #endif - CoreIdentity *identity = identityPtr(); - if (!identity) { - qCritical() << "Identity invalid!"; - disconnectFromIrc(); - return; - } emit socketInitialized(identity, localAddress(), localPort(), peerAddress(), peerPort()); diff --git a/src/core/corenetwork.h b/src/core/corenetwork.h index bb7b12ac..c4bea908 100644 --- a/src/core/corenetwork.h +++ b/src/core/corenetwork.h @@ -157,6 +157,7 @@ signals: void sslErrors(const QVariant &errorData); void newEvent(Event *event); + void socketOpen(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); void socketInitialized(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); void socketDisconnected(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index 56aaf54c..bb58da17 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -1516,7 +1516,7 @@ QList PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, Ms if (limit != -1) params << limit; else - params << "ALL"; + params << QVariant(QVariant::Int); QSqlQuery query = executePreparedQuery(queryName, params, db); diff --git a/src/qtui/aboutdlg.cpp b/src/qtui/aboutdlg.cpp index 8f100234..b76f8998 100644 --- a/src/qtui/aboutdlg.cpp +++ b/src/qtui/aboutdlg.cpp @@ -89,6 +89,7 @@ QString AboutDlg::contributors() const "
Terje \"tan\" Andersen
Norwegian translation, documentation
" "
Jens \"amiconn\" Arnold
Postgres migration fixes
" "
Adolfo Jayme Barrientos
Spanish translation
" + "
Mattia Basaglia
Fixes
" "
Pete \"elbeardmorez\" Beardmore
Linewrap for input line
" "
Rafael \"EagleScreen\" Belmonte
Spanish translation
" "
Sergiu Bivol
Romanian translation
" @@ -129,6 +130,7 @@ QString AboutDlg::contributors() const "
Johannes \"j0hu\" Huber
Many fixes and features, bug triaging
" "
Theofilos Intzoglou
Greek translation
" "
Jovan Jojkić
Serbian translation
" + "
Allan Jude
Documentation improvements
" "
Michael \"ycros\" Kedzierski
Mac fixes
" "
Scott \"ScottK\" Kitterman
Kubuntu nightly packager, (packaging/build system) bughunter
" "
Paul \"Haudrauf\" Klumpp
Initial design and mainwindow layout
" @@ -144,6 +146,7 @@ QString AboutDlg::contributors() const "
Michael \"mamarley\" Marley
Various fixes and improvements
" "
Martin \"m4yer\" Mayer
German translation
" "
Daniel \"hydrogen\" Meltzer
Various fixes and improvements
" + "
Sebastian Meyer
Fixes
" "
Daniel E. Moctezuma
Japanese translation
" "
Chris \"kode54\" Moeller
Various fixes and improvements
" "
Thomas Müller
Fixes, Debian packaging
" @@ -167,6 +170,7 @@ QString AboutDlg::contributors() const "
Dirk \"MarcLandis\" Rettschlag
Various fixes and new features
" "
Miguel Revilla
Spanish translation
" "
Jaak Ristioja
Fixes
" + "
David \"Bombe\" Roden
Fixes
" "
Henning \"honk\" Rohlfs
Various fixes
" "
Stella \"differentreality\" Rouzi
Greek translation
" "
\"salnx\"
Highlight configuration improvements
" @@ -177,6 +181,7 @@ QString AboutDlg::contributors() const "
Tim \"xAFFE\" Schumacher
Fixes and feedback
" "
\"sfionov\"
Russian translation
" "
Harald \"apachelogger\" Sitter
{ku|U}buntu packager, motivator, promoter
" + "
Ramanathan Sivagurunathan
Fixes
" "
Stefanos Sofroniou
Greek translation
" "
Rüdiger \"ruediger\" Sonderfeld
Emacs keybindings
" "
Alexander Stein
Tray icon fix
" @@ -186,6 +191,7 @@ QString AboutDlg::contributors() const "
\"ToBeFree\"
German translation
" "
Edward \"Aides\" Toroshchin
Russian translation
" "
Adam \"adamt\" Tulinius
Early beta tester and bughunter, Danish translation
" + "
Deniz Türkoglu
Mac fixes
" "
Frederik M.J. \"freqmod\" Vestre
Norwegian translation
" "
Atte Virtanen
Finnish translation
" "
Pavel \"int\" Volkovitskiy
Early beta tester and bughunter
"