diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 39c53627..e05ba412 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 94fc82c0..1b7f448c 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 acdd93f5..d3b4f317 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 19dee6cf..dfc3f447 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 1845d94e..52e41607 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; }