diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 39c536276e853a6d7b8e17e94e0f9ac68769db03..e05ba4126b1e4040af0e1539a106a3a9f8b49217 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -24,6 +24,13 @@ #include #endif +#ifdef WIN32 +#include "win32/win32dep.h" +#define ssize_t SSIZE_T +#include +#define getpid _getpid +#endif + using namespace log4cxx; static LoggerPtr logger_libpurple = log4cxx::Logger::getLogger("libpurple"); diff --git a/plugin/cpp/networkplugin.cpp b/plugin/cpp/networkplugin.cpp index 94fc82c0f847e431d6554d38f4ac2da2be952709..1b7f448c12198bf9d2c622194b873e1d12e149a6 100644 --- a/plugin/cpp/networkplugin.cpp +++ b/plugin/cpp/networkplugin.cpp @@ -28,6 +28,8 @@ #else #include #include +#include +#define getpid _getpid #endif using namespace log4cxx; diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index acdd93f57859c69222c811e6abc0076cc8bd0e16..d3b4f31747d08c98c6efe9b11f18691e1ff9afb8 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -8,7 +8,7 @@ backend_host=localhost pidfile=./test.pid # < this option doesn't work yet #backend_port=10001 -admin_username=admin +admin_jid=admin@localhost admin_password=test #cert=server.pfx #patch to PKCS#12 certificate #cert_password=test #password to that certificate if any diff --git a/src/logging.cpp b/src/logging.cpp index 19dee6cf1495b715a90245e7e8b544d2fcb31439..dfc3f447969d47b147a2d4ade706616f718211cf 100644 --- a/src/logging.cpp +++ b/src/logging.cpp @@ -43,6 +43,8 @@ #include "libgen.h" #else #include +#include +#define getpid _getpid #endif using namespace boost::filesystem; diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 1845d94e07a5990b903ba65aa94d7fff958012a2..52e4160755681c641d5691dbb5bf5f7fb57dd506 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -152,6 +152,21 @@ void UserManager::handlePresence(Swift::Presence::ref presence) { if (!user) { // Admin user is not legacy network user, so do not create User class instance for him if (m_component->inServerMode() && CONFIG_STRING(m_component->getConfig(), "service.admin_jid") == presence->getFrom().toBare().toString()) { + // Send admin contact to the user. + Swift::RosterPayload::ref payload = Swift::RosterPayload::ref(new Swift::RosterPayload()); + Swift::RosterItemPayload item; + item.setJID(m_component->getJID()); + item.setName("Admin"); + item.setSubscription(Swift::RosterItemPayload::Both); + payload->addItem(item); + + Swift::SetRosterRequest::ref request = Swift::SetRosterRequest::create(payload, presence->getFrom(), m_component->getIQRouter()); + request->send(); + + Swift::Presence::ref response = Swift::Presence::create(); + response->setTo(presence->getFrom()); + response->setFrom(m_component->getJID()); + m_component->getStanzaChannel()->sendPresence(response); return; }