diff --git a/spectrum/src/main.cpp b/spectrum/src/main.cpp index dc513959..19e6e5bb 100644 --- a/spectrum/src/main.cpp +++ b/spectrum/src/main.cpp @@ -5,6 +5,7 @@ #include "transport/sqlite3backend.h" #include "transport/userregistration.h" #include "transport/networkpluginserver.h" +#include "transport/admininterface.h" #include "Swiften/EventLoop/SimpleEventLoop.h" using namespace Transport; @@ -72,6 +73,8 @@ int main(int argc, char **argv) } logger.setUserManager(&userManager); + AdminInterface adminInterface(&transport, storageBackend); + NetworkPluginServer plugin(&transport, &config, &userManager); eventLoop.run(); diff --git a/spectrum_manager/src/main.cpp b/spectrum_manager/src/main.cpp index dd0eb4a7..48929919 100644 --- a/spectrum_manager/src/main.cpp +++ b/spectrum_manager/src/main.cpp @@ -10,6 +10,7 @@ using namespace Transport; static int finished; +static std::string *m; static void handleDisconnected(Swift::Client *client, const boost::optional &) { std::cout << "[ DISCONNECTED ] " << client->getJID().getDomain() << "\n"; @@ -19,7 +20,16 @@ static void handleDisconnected(Swift::Client *client, const boost::optionalgetJID().getDomain() << "\n"; + boost::shared_ptr message(new Swift::Message()); + message->setTo(client->getJID().getDomain()); + message->setFrom(client->getJID()); + message->setBody(*m); + + client->sendMessage(message); +} + +static void handleMessageReceived(Swift::Client *client, Swift::Message::ref message) { + std::cout << "[ OK ] " << client->getJID().getDomain() << ": " << message->getBody() << "\n"; if (--finished == 0) { exit(0); } @@ -29,7 +39,7 @@ int main(int argc, char **argv) { ManagerConfig config; - boost::program_options::options_description desc("Usage: spectrum_manager \nAllowed options"); + boost::program_options::options_description desc("Usage: spectrum_manager \nAllowed options"); desc.add_options() ("help,h", "help") ; @@ -55,7 +65,7 @@ int main(int argc, char **argv) return 1; } - if (argc != 2) { + if (argc != 3) { std::cout << desc << "\n"; return 1; } @@ -69,6 +79,9 @@ int main(int argc, char **argv) Swift::SimpleEventLoop eventLoop; Swift::BoostNetworkFactories networkFactories(&eventLoop); + std::string message = argv[2]; + m = &message; + std::vector servers = CONFIG_VECTOR(&config, "servers.server"); for (std::vector::const_iterator it = servers.begin(); it != servers.end(); it++) { finished++; @@ -76,7 +89,7 @@ int main(int argc, char **argv) client->setAlwaysTrustCertificates(); client->onConnected.connect(boost::bind(&handleConnected, client)); client->onDisconnected.connect(bind(&handleDisconnected, client, _1)); -// client->onMessageReceived.connect(bind(&handleMessageReceived, _1)); + client->onMessageReceived.connect(bind(&handleMessageReceived, client, _1)); Swift::ClientOptions opt; opt.allowPLAINWithoutTLS = true; client->connect(opt); diff --git a/src/admininterface.cpp b/src/admininterface.cpp index a3ac76dd..7a6788ec 100644 --- a/src/admininterface.cpp +++ b/src/admininterface.cpp @@ -46,10 +46,19 @@ AdminInterface::~AdminInterface() { void AdminInterface::handleMessageReceived(Swift::Message::ref message) { if (!message->getTo().getNode().empty()) return; - if (message->getFrom().getNode() != CONFIG_STRING(m_component->getConfig(), "service.admin_username")) + + if (message->getFrom().getNode() != CONFIG_STRING(m_component->getConfig(), "service.admin_username")) { + LOG4CXX_WARN(logger, "Message not from admin user, but from " << message->getFrom().getNode()); return; + } LOG4CXX_INFO(logger, "Message from admin received"); + message->setTo(message->getFrom()); + message->setFrom(m_component->getJID()); + + message->setBody("Unknown command"); + + m_component->getStanzaChannel()->sendMessage(message); } }