In Monolithic build only starts listening over tcp if a port is passed via cmd line.
proxy->removePeer(this);
}
proxy->removePeer(this);
}
if(dev->parent() == this)
dev->deleteLater();
if(dev->parent() == this)
dev->deleteLater();
+QString Core::setupCoreForInternalUsage() {
+ Q_ASSERT(!_storageBackends.isEmpty());
+ QVariantMap setupData;
+ qsrand(QDateTime::currentDateTime().toTime_t());
+ int pass = 0;
+ for(int i = 0; i < 10; i++) {
+ pass *= 10;
+ pass += qrand() % 10;
+ }
+ setupData["AdminUser"] = "AdminUser";
+ setupData["AdminPasswd"] = QString::number(pass);
+ setupData["Backend"] = _storageBackends[_storageBackends.keys().first()]->displayName();
+ return setupCore(setupData);
+}
-QString Core::setupCore(const QVariant &setupData_) {
- QVariantMap setupData = setupData_.toMap();
+QString Core::setupCore(QVariantMap setupData) {
QString user = setupData.take("AdminUser").toString();
QString password = setupData.take("AdminPasswd").toString();
if(user.isEmpty() || password.isEmpty()) {
QString user = setupData.take("AdminUser").toString();
QString password = setupData.take("AdminPasswd").toString();
if(user.isEmpty() || password.isEmpty()) {
/*** Network Management ***/
bool Core::startListening() {
/*** Network Management ***/
bool Core::startListening() {
+ // in mono mode we only start a local port if a port is specified in the cli call
+ if(Quassel::runMode() == Quassel::Monolithic && !Quassel::isOptionSet("port"))
+ return true;
+
bool success = false;
uint port = Quassel::optionValue("port").toUInt();
bool success = false;
uint port = Quassel::optionValue("port").toUInt();
-void Core::stopListening() {
- _server.close();
- _v6server.close();
- quInfo() << "No longer listening for GUI clients.";
+void Core::stopListening(const QString &reason) {
+ bool wasListening = false;
+ if(_server.isListening()) {
+ wasListening = true;
+ _server.close();
+ }
+ if(_v6server.isListening()) {
+ wasListening = true;
+ _v6server.close();
+ }
+ if(wasListening) {
+ if(reason.isEmpty())
+ quInfo() << "No longer listening for GUI clients.";
+ else
+ quInfo() << qPrintable(reason);
+ }
}
void Core::incomingConnection() {
}
void Core::incomingConnection() {
quInfo() << qPrintable(tr("Client connected from")) << qPrintable(socket->peerAddress().toString());
if(!configured) {
quInfo() << qPrintable(tr("Client connected from")) << qPrintable(socket->peerAddress().toString());
if(!configured) {
- _server.close();
- _v6server.close();
- quDebug() << "Closing server for basic setup.";
+ stopListening(tr("Closing server for basic setup."));
}
if(msg["MsgType"] == "CoreSetupData") {
QVariantMap reply;
}
if(msg["MsgType"] == "CoreSetupData") {
QVariantMap reply;
- QString result = setupCore(msg["SetupData"]);
+ QString result = setupCore(msg["SetupData"].toMap());
if(!result.isEmpty()) {
reply["MsgType"] = "CoreSetupReject";
reply["Error"] = result;
if(!result.isEmpty()) {
reply["MsgType"] = "CoreSetupReject";
reply["Error"] = result;
}
void Core::setupInternalClientSession(SignalProxy *proxy) {
}
void Core::setupInternalClientSession(SignalProxy *proxy) {
+ if(!configured) {
+ stopListening();
+ setupCoreForInternalUsage();
+ }
+
UserId uid = 3; // FIXME!!!11
// Find or create session for validated user
SessionThread *sess;
UserId uid = 3; // FIXME!!!11
// Find or create session for validated user
SessionThread *sess;
private slots:
bool startListening();
private slots:
bool startListening();
+ void stopListening(const QString &msg = QString());
void incomingConnection();
void clientHasData();
void clientDisconnected();
void incomingConnection();
void clientHasData();
void clientDisconnected();
void setupClientSession(QTcpSocket *socket, UserId uid);
void processClientMessage(QTcpSocket *socket, const QVariantMap &msg);
//void processCoreSetup(QTcpSocket *socket, QVariantMap &msg);
void setupClientSession(QTcpSocket *socket, UserId uid);
void processClientMessage(QTcpSocket *socket, const QVariantMap &msg);
//void processCoreSetup(QTcpSocket *socket, QVariantMap &msg);
- QString setupCore(const QVariant &setupData);
+ QString setupCoreForInternalUsage();
+ QString setupCore(QVariantMap setupData);
bool registerStorageBackend(Storage *);
void unregisterStorageBackend(Storage *);
bool registerStorageBackend(Storage *);
void unregisterStorageBackend(Storage *);
}
bool MonolithicApplication::init() {
}
bool MonolithicApplication::init() {
+ if(!Quassel::init()) // parse args
+ return false;
+
+ if(isOptionSet("port")) {
+ _internal->init();
+ _internalInitDone = true;
+ }
+
connect(Client::instance(), SIGNAL(newClientSyncer(ClientSyncer *)), this, SLOT(newClientSyncer(ClientSyncer *)));
return QtUiApplication::init();
}
connect(Client::instance(), SIGNAL(newClientSyncer(ClientSyncer *)), this, SLOT(newClientSyncer(ClientSyncer *)));
return QtUiApplication::init();
}
void MonolithicApplication::startInternalCore() {
if(!_internalInitDone) {
_internal->init();
void MonolithicApplication::startInternalCore() {
if(!_internalInitDone) {
_internal->init();
+ _internalInitDone = true;
}
Core *core = Core::instance();
ClientSyncer *syncer = static_cast<ClientSyncer *>(sender());
}
Core *core = Core::instance();
ClientSyncer *syncer = static_cast<ClientSyncer *>(sender());