/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
_ircParser(new IrcParser(this)),
scriptEngine(new QScriptEngine(this)),
_processMessages(false),
- _ignoreListManager(this)
+ _ignoreListManager(this),
+ _highlightRuleManager(this)
{
SignalProxy *p = signalProxy();
p->setHeartBeatInterval(30);
p->attachSlot(SIGNAL(changePassword(PeerPtr,QString,QString,QString)), this, SLOT(changePassword(PeerPtr,QString,QString,QString)));
p->attachSignal(this, SIGNAL(passwordChanged(PeerPtr,bool)));
+ p->attachSlot(SIGNAL(kickClient(int)), this, SLOT(kickClient(int)));
+ p->attachSignal(this, SIGNAL(disconnectFromCore()));
+
loadSettings();
initScriptEngine();
p->synchronize(networkConfig());
p->synchronize(&_coreInfo);
p->synchronize(&_ignoreListManager);
+ p->synchronize(&_highlightRuleManager);
p->synchronize(transferManager());
// Restore session state
if (restoreState)
if (_ignoreListManager.match(rawMsg, networkName) == IgnoreListManager::HardStrictness)
return;
+ if (_highlightRuleManager.match(rawMsg, currentNetwork->myNick(), currentNetwork->identityPtr()->nicks()))
+ rawMsg.flags |= Message::Flag::Highlight;
+
_messageQueue << rawMsg;
if (!_processMessages) {
_processMessages = true;
{
CoreNetwork *currentNetwork = network(bufferInfo.networkId());
if (!currentNetwork) {
- return "";
+ return {};
}
if (bufferInfo.type() != BufferInfo::ChannelBuffer) {
- return "";
+ return {};
}
IrcChannel *currentChannel = currentNetwork->ircChannel(bufferInfo.bufferName());
if (!currentChannel) {
- return "";
+ return {};
}
const QString modes = currentChannel->userModes(nickFromMask(sender).toLower());
createIdentity(coreIdentity);
}
+const QString CoreSession::strictSysident() {
+ return Core::instance()->strictSysIdent(_user);
+}
void CoreSession::createIdentity(const CoreIdentity &identity)
{
}
}
-void CoreSession::changePassword(PeerPtr peer, const QString &userName, const QString &oldPassword, const QString &newPassword)
-{
+void CoreSession::changePassword(PeerPtr peer, const QString &userName, const QString &oldPassword, const QString &newPassword) {
+ Q_UNUSED(peer);
+
bool success = false;
UserId uid = Core::validateUser(userName, oldPassword);
if (uid.isValid() && uid == user())
success = Core::changeUserPassword(uid, newPassword);
- emit passwordChanged(peer, success);
+ signalProxy()->restrictTargetPeers(signalProxy()->sourcePeer(), [&]{
+ emit passwordChanged(nullptr, success);
+ });
+}
+
+void CoreSession::kickClient(int peerId) {
+ auto peer = signalProxy()->peerById(peerId);
+ if (peer == nullptr) {
+ qWarning() << "Invalid peer Id: " << peerId;
+ return;
+ }
+ signalProxy()->restrictTargetPeers(peer, [&]{
+ emit disconnectFromCore();
+ });
}