Beispiel #1
0
/** Get a message node element, extrapolate its type (public msg, private msg, channelEnter, etc.) and emit
    the specific signal */
void AJAXChat::emitChatData(const QDomElement &message)
{
    QString messageText = message.firstChildElement("text").text();
    // decode html entities from the message text and simplify it
    QTextEdit t;
    t.setHtml(messageText);
    messageText = t.toPlainText().simplified();

    if (messageText.startsWith("/")) {
        QStringList messageParts = messageText.split(" ");
        if (messageText.startsWith("/privmsg")) {
            const int userID = message.attribute("userID").toInt();
            emit newPrivateMessage(messageParts.at(1), getUser(userID).text());
        } else if (messageText.startsWith("/login")) {
            emit userLoggedIn(messageParts.at(1));
        } else if (messageText.startsWith("/logout")) {
            emit userLoggedOut(messageParts.at(1));
            qDebug("Logged out: " + getUser(messageParts.at(1)).text().toUtf8());
        } else if (messageText.startsWith("/channelEnter")) {
            emit userJoinChannel(messageParts.at(1));
        } else if (messageText.startsWith("/channelLeave")) {
            emit userLeaveChannel(messageParts.at(1));
        } else if (messageText.startsWith("/kick")) {
            emit userKicked(messageParts.at(1));
        } else if (messageText.startsWith("/nick")) {
            emit userChangeNick(messageParts.at(1), messageParts.at(2));
        }
    } else {
        const int userID = message.attribute("userID").toInt();
        emit newPublicMessage(messageText, getUser(userID).text());
    }
}
Beispiel #2
0
supla_client::~supla_client() {
  if (getUser())  // 1st line !!!
    getUser()->remove_client(this);

  delete channels;
  delete locations;
}
Beispiel #3
0
	websocketpp::http::status_code::value SessionApi::handleLogin(ApiRequest& aRequest, bool aIsSecure, const WebSocketPtr& aSocket, const string& aIP) {
		const auto& reqJson = aRequest.getRequestBody();

		auto username = JsonUtil::getField<string>("username", reqJson, false);
		auto password = JsonUtil::getField<string>("password", reqJson, false);

		auto inactivityMinutes = JsonUtil::getOptionalFieldDefault<uint64_t>("max_inactivity", reqJson, WEBCFG(DEFAULT_SESSION_IDLE_TIMEOUT).uint64());
		auto userSession = JsonUtil::getOptionalFieldDefault<bool>("user_session", reqJson, false);

		auto session = WebServerManager::getInstance()->getUserManager().authenticate(username, password, 
			aIsSecure, inactivityMinutes, userSession, aIP);

		if (!session) {
			aRequest.setResponseErrorStr("Invalid username or password");
			return websocketpp::http::status_code::unauthorized;
		}

		json retJson = {
			{ "permissions", session->getUser()->getPermissions() },
			{ "token", session->getAuthToken() },
			{ "user", session->getUser()->getUserName() },
			{ "system", getSystemInfo(aIP) },
			{ "run_wizard", SETTING(WIZARD_RUN) },
			{ "cid", ClientManager::getInstance()->getMyCID().toBase32() },
		};

		if (aSocket) {
			session->onSocketConnected(aSocket);
			aSocket->setSession(session);
		}

		aRequest.setResponseBody(retJson);
		return websocketpp::http::status_code::ok;
	}
void UserInfoBase::pm(const string& hubHint)
{
	if (getUser() && !ClientManager::isMe(getUser())) // [!] FlylinkDC do not send messages to themselves.
	{
		UserManager::getInstance()->outgoingPrivateMessage(getUser(), hubHint, Util::emptyStringT);
	}
}
Beispiel #5
0
const tstring FinishedItem::getText(uint8_t col) const {
	dcassert(col >= 0 && col < COLUMN_LAST);
	switch(col) {
		case COLUMN_FILE: return Text::toT(Util::getFileName(getTarget()));
		case COLUMN_DONE: return Text::toT(Util::formatTime("%Y-%m-%d %H:%M:%S", getTime()));
		case COLUMN_PATH: return Text::toT(Util::getFilePath(getTarget()));
		case COLUMN_NICK: return Text::toT(ClientManager::getInstance()->getFormatedNicks(getUser()));
		case COLUMN_HUB: {
			if (getUser().user->isOnline()) {
				return Text::toT(ClientManager::getInstance()->getFormatedHubNames(getUser()));
			} else {
				auto ofu = ClientManager::getInstance()->getOfflineUser(getUser().user->getCID());
				return TSTRING(OFFLINE) + (ofu ? _T(" ( ") + Text::toT(ofu->getUrl()) + _T(" ) ") : _T(""));
			}
		}
		case COLUMN_SIZE: return Util::formatBytesW(getSize());
		case COLUMN_SPEED: return Util::formatBytesW(getAvgSpeed()) + _T("/s");
		case COLUMN_TYPE: {
			tstring filetype = Text::toT(Util::getFileExt(Text::fromT(getText(COLUMN_FILE))));
			if(!filetype.empty() && filetype[0] == _T('.'))
				filetype.erase(0, 1);
			return filetype;
		}
		default: return Util::emptyStringT;
	}
}
void UserInfoBase::removeAll()
{
	if (getUser())
	{
		QueueManager::getInstance()->removeSource(getUser(), QueueItem::Source::FLAG_REMOVED);
	}
}
void UserInfoBase::browseSqlExplorer(const string& hubHint)
{
	if (getUser())
	{
		UserManager::getInstance()->browseSqlExplorer(getUser(), hubHint);
	}
}
void UserInfoBase::ungrantSlot(const string& hubHint) // [!] IRainman fix: add hubhint.
{
	if (getUser())
	{
		UploadManager::unreserveSlot(HintedUser(getUser(), hubHint));
	}
}
void UserInfoBase::addFav()
{
	if (getUser())
	{
		FavoriteManager::getInstance()->addFavoriteUser(getUser());
	}
}
void UserInfoBase::doReport(const string& hubHint)
{
	if (getUser())
	{
		ClientManager::getInstance()->reportUser(HintedUser(getUser(), hubHint));
	}
}
Beispiel #11
0
void WaitingUsersFrame::LoadAll()
{
	CLockRedraw<> l_lock_draw(m_ctrlList);
	CLockRedraw<true> l_lock_draw_q(ctrlQueued);
	
	HTREEITEM userNode = ctrlQueued.GetRootItem();
	while (userNode)
	{
		delete reinterpret_cast<UserItem *>(ctrlQueued.GetItemData(userNode));
		userNode = ctrlQueued.GetNextSiblingItem(userNode);
	}
	// TODO - delete
	m_ctrlList.DeleteAllItems();
	ctrlQueued.DeleteAllItems();
	UQFUsers.clear();
	
	// Load queue
	{
		UploadManager::LockInstanceQueue lockedInstance;
		const auto& users = lockedInstance->getUploadQueueL();
		UQFUsers.reserve(users.size());
		for (auto uit = users.cbegin(); uit != users.cend(); ++uit)
		{
			UQFUsers.push_back(uit->getUser());
			ctrlQueued.InsertItem(TVIF_PARAM | TVIF_TEXT, (uit->getUser()->getLastNickT() + _T(" - ") + Text::toT(uit->m_hintedUser.hint)).c_str(),
			                      0, 0, 0, 0, (LPARAM)(new UserItem(uit->getUser())), TVI_ROOT, TVI_LAST);
			for (auto i = uit->m_waiting_files.cbegin(); i != uit->m_waiting_files.cend(); ++i)
			{
				AddFile(*i);
			}
		}
	}
	m_needsResort = true; // [!] IRainman opt.
	m_needsUpdateStatus = true; // [!] IRainman opt.
}
void UserInfoBase::delFav()
{
	if (getUser())
	{
		FavoriteManager::getInstance()->removeFavoriteUser(getUser());
	}
}
void UserInfoBase::setNormalPM() // [+] IRainman.
{
	if (getUser())
	{
		FavoriteManager::getInstance()->setNormalPM(getUser());
	}
}
void UserInfoBase::setUploadLimit(const int limit) // [+] IRainman.
{
	if (getUser())
	{
		FavoriteManager::getInstance()->setUploadLimit(getUser(), limit);
	}
}
void UserInfoBase::setFreePM() // [+] IRainman.
{
	if (getUser())
	{
		FavoriteManager::getInstance()->setFreePM(getUser(), true);
	}
}
void UserInfoBase::setIgnorePM() // [+] SSA.
{
	if (getUser())
	{
		FavoriteManager::getInstance()->setIgnorePM(getUser(), true);
	}
}
void UserInfoBase::connectFav()
{
	if (getUser())
	{
		UserManager::getInstance()->openUserUrl(getUser());
	}
}
void UserInfoBase::createSummaryInfo(const string& hubHint) // [+] IRainman
{
	if (getUser())
	{
		UserManager::getInstance()->collectSummaryInfo(getUser(), hubHint);
	}
}
Beispiel #19
0
/*
* finalizeRequest
* takes an action on a request
* Arguments:	user, I/P, string		request, I/P, string			accept, I/P, string
*				the user taking action	the user that made the request	whether the request was accepted
*/
void Server::finalizeRequest(string user, string request, string accept)
{
	getUser(user).removeRequest(request);
	if (accept == "true")
	{
		getUser(user).addPartner(request);
		getUser(request).addPartner(user);
	}
}
Beispiel #20
0
string OnlineUser::getLogPath() const noexcept {
	ParamMap params;
	params["userNI"] = [this] { return getIdentity().getNick(); };
	params["hubNI"] = [this] { return getClient()->getHubName(); };
	params["myNI"] = [this] { return getClient()->getMyNick(); };
	params["userCID"] = [this] { return getUser()->getCID().toBase32(); };
	params["hubURL"] = [this] { return getClient()->getHubUrl(); };

	return LogManager::getInstance()->getPath(getUser(), params);
}
void UserInfoBase::matchQueue()
{
	if (getUser())
	{
		try
		{
			QueueManager::getInstance()->addList(getUser(), QueueItem::FLAG_MATCH_QUEUE);
		}
		catch (const Exception& e)
		{
			LogManager::message(e.getError());
		}
	}
}
void UserInfoBase::browseList()
{
	if (getUser())
	{
		try
		{
			QueueManager::getInstance()->addList(getUser(), QueueItem::FLAG_CLIENT_VIEW | QueueItem::FLAG_PARTIAL_LIST);
		}
		catch (const Exception& e)
		{
			LogManager::message(e.getError());
		}
	}
}
void UserInfoBase::checkList()
{
	if (getUser())
	{
		try
		{
			QueueManager::getInstance()->addList(getUser(), QueueItem::FLAG_USER_CHECK);
		}
		catch (const Exception& e)
		{
			LogManager::message(e.getError());
		}
	}
}
void UserInfoBase::getUserResponses()
{
	if (getUser())
	{
		try
		{
			QueueManager::getInstance()->addCheckUserIP(getUser()); // [+] SSA
		}
		catch (const Exception& e)
		{
			LogManager::message(e.getError());
		}
	}
}
void UserInfoBase::ignoreOrUnignoreUserByName() // [!] IRainman moved from gui and clean
{
	if (getUser())
	{
		const auto& nick = getUser()->getLastNick();
		if (UserManager::isInIgnoreList(nick))
		{
			UserManager::removeFromIgnoreList(nick);
		}
		else
		{
			UserManager::addToIgnoreList(nick);
		}
	}
}
Beispiel #26
0
int GoogleAppsMailbox::loginRequest()
{
    //const QRegExp moorhuntHashRegex("(<<a[a-h].*>>)");


    page = doGet("https://www.google.com/a/"+getMailbox());
    int pos = 0;
    QRegExp re3("GALX\\\".*value=\\\"(.*)\\\"./>");
    re3.setMinimal(true);
    if (re3.indexIn(page, pos) == -1)
        return 1;

    //LOG(Log::Info, page);
    const QString vars = QString("ltmpl=default&ltmplcache=2&continue=")
                + escape("https://mail.google.com/a/"+getMailbox()+"/")
                +"&service=mail&GALX="
                + escape(re3.cap(1))
                +"&rm=false&hl=pl&Email="+escape(getUser())
                +"&Passwd="+escape(getPassword())
                +"&rmShown=1";
    page = doPost("https://www.google.com/a/"+getMailbox()+"/LoginAction2?service=mail",vars, true);

    QString username = getUser();

    QRegExp re(username);
    QRegExp re2("&amp;");
    QRegExp authre("auth=([\\w\\d-]+)"); // To Do

    if (re.indexIn(page, pos) != -1)
    {
        QString url = re.cap(1);

        LOG(Log::Info, page + " <f");
        if(url.indexOf("answer=40695") != -1)
        {
            LOG(Log::Info, "Niestety, konto zostało wyłączone. - " + getMailbox());
            return 1;
        }
        url.replace(re2, "&");
        url = unescape(url);
        if (authre.indexIn(page, pos) != -1)
            auth = authre.cap(1);
            LOG(Log::Info, auth + " <s");
        return 0;
    }
    else
        return 1;
}
const tstring FinishedItem::getText(uint8_t col) const {
	dcassert(col >= 0 && col < COLUMN_LAST);
	switch(col) {
	case COLUMN_FILE: return Text::toT(Util::getFileName(getTarget()));
	case COLUMN_DONE: return Text::toT(Util::formatTime("%Y-%m-%d %H:%M:%S", getTime()));
	case COLUMN_PATH: return Text::toT(Util::getFilePath(getTarget()));
	case COLUMN_NICK: return Text::toT(Util::toString(ClientManager::getInstance()->getNicks(getUser())));
	case COLUMN_HUB: {
		auto hubs = ClientManager::getInstance()->getHubNames(getUser());
		if (hubs.empty())
			hubs.push_back(STRING(OFFLINE));

		return Text::toT(Util::toString(hubs));
						}

	case COLUMN_SIZE: return Util::formatBytesW(getSize());
	case COLUMN_SPEED: return Util::formatBytesW(getAvgSpeed()) + _T("/s");
	case COLUMN_TYPE: {
		tstring filetype = Text::toT(Util::getFileExt(Text::fromT(getText(COLUMN_FILE))));
		if(!filetype.empty() && filetype[0] == _T('.'))
			filetype.erase(0, 1);
		return filetype;
						}
	default: return Util::emptyStringT;
	}
}
Beispiel #28
0
void MessageManager::loadUsers() {
    try {
        SimpleXML xml;
        SettingsManager::loadSettingFile(xml, CONFIG_DIR, CONFIG_NAME);
        auto cm = ClientManager::getInstance();
        if (xml.findChild("Ignored")) {
            xml.stepIn();
            xml.resetCurrentChild();
            if (xml.findChild("Users")) {
                xml.stepIn();
                while (xml.findChild("User")) {
                    UserPtr user = cm->getUser(CID(xml.getChildAttrib("CID")));
                    {
                        WLock(cm->getCS());
                        cm->addOfflineUser(user, xml.getChildAttrib("Nick"), xml.getChildAttrib("Hub"), (uint32_t)xml.getIntChildAttrib("LastSeen"));
                    }
                    WLock l(Ignorecs);
                    ignoredUsers.emplace(user);
                    user->setFlag(User::IGNORED);
                }
                xml.stepOut();
            }
            xml.stepOut();
        }
    }
    catch (const Exception& e) {
        LogManager::getInstance()->message(STRING_F(LOAD_FAILED_X, CONFIG_NAME % e.getError()), LogManager::LOG_ERROR);
    }
}
// !SMT!-S
void UserInfoBase::pm_msg(const string& hubHint, const tstring& p_message)
{
	if (!p_message.empty()) // [~] SCALOlaz: support for abolition and prohibition to send a blank line https://code.google.com/p/flylinkdc/issues/detail?id=1034
	{
		UserManager::getInstance()->outgoingPrivateMessage(getUser(), hubHint, p_message);
	}
}
Beispiel #30
0
int
getAuth_(struct lsfAuth *auth, char *host)
{
    auth->uid = getuid();

    if (getUser(auth->lsfUserName, sizeof(auth->lsfUserName)) < 0) {
        ls_syslog(LOG_DEBUG, I18N_FUNC_FAIL_MM, "getAuth", "getUser");
        lserrno = LSE_BADUSER;
        return -1;
    }

    auth->gid = getgid();

    if (!genParams_[LSF_AUTH].paramValue)
        auth->kind = CLIENT_SETUID;
    else if (!strcmp(genParams_[LSF_AUTH].paramValue, AUTH_IDENT))
        auth->kind = CLIENT_IDENT;
    else if (!strcmp(genParams_[LSF_AUTH].paramValue, AUTH_PARAM_EAUTH)) {
        auth->kind = CLIENT_EAUTH;
        return getEAuth(&auth->k.eauth, host);
    } else
        auth->kind = CLIENT_SETUID;

    return 0;
}