minor improvements

ver3
acetone 2023-03-14 12:58:32 +03:00
parent 5b4a0ebd49
commit 6e61843d70
3 changed files with 39 additions and 27 deletions

View File

@ -65,7 +65,7 @@ bool AdminIRCPanel::parse(const QString& networkName, const QString &input, QStr
{ // https://modern.ircdocs.horse/formatting.html#bold
answer = QStringList() << QString(QString("Add channel to my list or remove one: ")+0x02+ QString("!channel <add|delete> CHANNEL_NAME")) <<
QString(QString("After deleting or adding channels, reload connections: ")+0x02+ QString("!reload channels")) <<
QString(QString("Captcha gate in channels where I have the privilege to do +v: ")+0x02+QString("!voiceGate set <enabled|disabled>")) <<
QString(QString("Captcha gate in this network: ")+0x02+QString("!voiceGate set <enabled|disabled>")) <<
QString(QString("Global voice gate option: ")+0x02+ QString("!voiceGate set case sensitive <enabled|disabled>")) <<
QString(QString("Global voice gate option: ")+0x02+ QString("!voiceGate set only numbers <enabled|disabled>")) <<
QString(QString("Global voice gate option: ")+0x02+ QString("!voiceGate set captcha cache size <positive number>")) <<
@ -114,12 +114,13 @@ bool AdminIRCPanel::parse(const QString& networkName, const QString &input, QStr
else if (input.contains(rgx_reloadChannels))
{
uint changeCounter = 0;
auto configs = Config::networksAccess();
for (auto iter = configs.begin(); iter != configs.end(); ++iter)
{
(*iter)->instance->reloadChannelList();
changeCounter = (*iter)->instance->reloadChannelList();
}
answer.push_back("Success. Reloaded.");
answer.push_back("Success. Reloaded: " + QString::number(changeCounter) + " changes.");
}
else if (input.contains(rgx_voiceGate))

View File

@ -26,6 +26,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
#include <QDateTime>
#include <QStringList>
#include <QRegularExpression>
#include <QDebug>
#define LOG_WARN qWarning().noquote() << "[" + m_config->networkName + "]"
@ -49,8 +50,9 @@ void IRCNetworkClient::setConfig(Config::Network *&config)
m_config = config;
}
void IRCNetworkClient::reloadChannelList()
uint IRCNetworkClient::reloadChannelList()
{
uint changeCounter = 0;
QMutexLocker lock (&m_mtxNetworkChannelsIteration);
QStringList connectedChannelsTotalList;
@ -64,6 +66,7 @@ void IRCNetworkClient::reloadChannelList()
if (not m_config->channels.contains(connectedChan->GetName()))
{
channelsToPart.push_back(connectedChan->GetName());
changeCounter++;
}
connectedChannelsTotalList.push_back(connectedChan->GetName());
}
@ -85,6 +88,7 @@ void IRCNetworkClient::reloadChannelList()
if (not connectedChannelsTotalList.contains(newChannel))
{
channelsToJoin.push_back(newChannel);
changeCounter++;
}
}
@ -95,6 +99,8 @@ void IRCNetworkClient::reloadChannelList()
m_network->RequestJoin(chanName);
QThread::msleep(500);
}
return changeCounter;
}
void IRCNetworkClient::start()
@ -136,7 +142,13 @@ void IRCNetworkClient::Slot_privMsg(libircclient::Parser *p)
{
const QString receiver = p->GetParameterLine();
const QString sender = p->GetSourceUserInfo()->GetNick();
const QString text = p->GetText();
QString text = p->GetText();
static const QRegularExpression leadingSpaces("^\\s*");
static const QRegularExpression trailingSpaces("\\s*$");
text.remove(leadingSpaces);
text.remove(trailingSpaces);
if (text.isEmpty()) return;
if (receiver == m_network->GetLocalUserInfo()->GetNick())
{
@ -148,27 +160,6 @@ void IRCNetworkClient::Slot_privMsg(libircclient::Parser *p)
}
}
void IRCNetworkClient::Slot_adminIdentified(libircclient::Parser* p)
{
auto params = p->GetParameters();
if (params.size() < 2)
{
LOG_WARN << "Event_WhoisRegNick failure: params.size() < 2, expected 2";
return;
}
if (p->GetParameters().at(1) != m_config->ircabotAdmin)
{
LOG_WARN << "Event_WhoisRegNick failure: requested, but admin changed";
return;
}
AdminIRCPanel::identifiedTimestampUpdate(m_config->networkName);
m_network->SendNotice("You have been identified as an IRCaBot administrator.", m_config->ircabotAdmin, libircclient::Priority_RealTime);
processAdminCommand(m_adminCommandBuffer);
m_adminCommandBuffer.clear();
}
void IRCNetworkClient::Slot_onDirectMessage(QString sender, QString text)
{
if (sender == m_config->ircabotAdmin and text.startsWith("!"))
@ -252,6 +243,26 @@ void IRCNetworkClient::processVoiceRequest(const QString& sender)
m_network->SendMessage(message, sender);
}
void IRCNetworkClient::Slot_adminIdentified(libircclient::Parser* p)
{
auto params = p->GetParameters();
if (params.size() < 2)
{
LOG_WARN << "Event_WhoisRegNick failure: params.size() < 2, expected 2";
return;
}
if (p->GetParameters().at(1) != m_config->ircabotAdmin)
{
LOG_WARN << "Event_WhoisRegNick failure: requested, but admin changed";
return;
}
AdminIRCPanel::identifiedTimestampUpdate(m_config->networkName);
processAdminCommand(m_adminCommandBuffer);
m_adminCommandBuffer.clear();
}
void IRCNetworkClient::processAdminCommand(const QString &text)
{
QStringList answer;

View File

@ -34,7 +34,7 @@ public:
IRCNetworkClient(QObject* parent = nullptr);
void setConfig(Config::Network*& config);
// after config change; voiceGate have effect in run-time automatically
void reloadChannelList();
uint reloadChannelList();
void start();
void addNicknameToVoicedGroup(const QString& nickname);