11 #include "configuration.hpp"
13 using namespace Huggle;
43 QString Configuration::DefaultRevertSummary =
"Reverted edits by $1 identified as vandalism";
48 bool Configuration::GlobalConfig_EnableAll =
true;
49 QString Configuration::GlobalConfig_MinVersion = HUGGLE_VERSION;
50 QString Configuration::GlobalConfig_LocalConfigWikiPath =
"Project:Huggle/Config";
51 QString Configuration::GlobalConfig_DocumentationPath =
"https://www.mediawiki.org/wiki/Manual:Huggle";
52 QString Configuration::GlobalConfig_FeedbackPath =
"http://en.wikipedia.org/wiki/Wikipedia:Huggle/Feedback";
53 QString Configuration::GlobalConfig_UserConf =
"User:$1/huggle.css";
58 bool Configuration::LocalConfig_UseIrc =
false;
59 bool Configuration::LocalConfig_RequireRollback =
false;
60 bool Configuration::LocalConfig_RequireAdmin =
false;
61 bool Configuration::LocalConfig_EnableAll =
false;
62 int Configuration::LocalConfig_RequireEdits = 0;
65 QString Configuration::LocalConfig_MultipleRevertSummary =
"Reverted,edit by,edits by,and,other users,to last revision by,to an older version by";
66 QStringList Configuration::LocalConfig_RevertSummaries;
67 QString Configuration::LocalConfig_RollbackSummary =
"Reverted edits by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]]) to last revision by $2";
68 QString Configuration::LocalConfig_DefaultSummary =
"Reverted edits by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]]) to last revision by $2";
69 QString Configuration::LocalConfig_SingleRevert =
"Reverted edits by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]])";
70 QString Configuration::LocalConfig_UndoSummary =
"Undid edit by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]])";
71 QString Configuration::LocalConfig_SoftwareRevertDefaultSummary =
"Reverted edits by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]]) to last revision by $2 using huggle software rollback (reverted by $3 revisions to revision $4)";
75 QString Configuration::LocalConfig_AgfRevert =
"Reverted good faith edits";
76 QString Configuration::LocalConfig_WarnSummary =
"Warning (level 1)";
77 QString Configuration::LocalConfig_WarnSummary2 =
"Warning (level 2)";
78 QString Configuration::LocalConfig_WarnSummary3 =
"Warning (level 3)";
79 QString Configuration::LocalConfig_WarnSummary4 =
"Warning (level 4)";
81 QStringList Configuration::LocalConfig_Assisted;
82 QStringList Configuration::LocalConfig_Ignores;
83 QStringList Configuration::LocalConfig_RevertPatterns;
84 QStringList Configuration::LocalConfig_IgnorePatterns;
85 QStringList Configuration::LocalConfig_WarningTypes;
86 QStringList Configuration::Rights;
88 QStringList Configuration::LocalConfig_WarningDefs;
93 QStringList Configuration::LocalConfig_WarningTemplates;
95 int Configuration::LocalConfig_IPScore = 800;
96 int Configuration::LocalConfig_BotScore = -200;
97 int Configuration::LocalConfig_WarningScore = 2000;
98 int Configuration::LocalConfig_TalkPageWarningScore = -800;
99 QList<ScoreWord> Configuration::LocalConfig_ScoreParts;
100 QList<ScoreWord> Configuration::LocalConfig_ScoreWords;
101 int Configuration::LocalConfig_ScoreFlag = -20000;
102 QStringList Configuration::LocalConfig_WelcomeTypes;
104 bool Configuration::NextOnRv =
true;
105 bool Configuration::LocalConfig_WelcomeGood =
true;
106 QString Configuration::LocalConfig_ClearTalkPageTemp =
"{{Huggle/Cleared}}";
107 QString Configuration::LocalConfig_WelcomeAnon =
"{{subst:Welcome-anon}} ~~~~";
108 bool Configuration::GlobalConfigWasLoaded =
false;
109 bool Configuration::LocalConfig_GlobalRequired =
true;
110 bool Configuration::LocalConfig_AIV =
false;
111 bool Configuration::LocalConfig_AIVExtend =
true;
112 QString Configuration::LocalConfig_ReportPath =
"";
117 int Configuration::LocalConfig_WhitelistScore = -800;
123 QString Configuration::LocalConfig_WelcomeSummary =
"Welcoming user";
124 QString Configuration::LocalConfig_WelcomeTitle =
"Welcome";
126 QString Configuration::LocalConfig_ReportSummary =
"Reporting user";
129 QString Configuration::LocalConfig_NSProject = MEDIAWIKI_DEFAULT_NS_PROJECT;
130 QString Configuration::LocalConfig_NSProjectTalk = MEDIAWIKI_DEFAULT_NS_PROJECTTALK;
131 QString Configuration::LocalConfig_NSTalk = MEDIAWIKI_DEFAULT_NS_TALK;
132 QString Configuration::LocalConfig_NSUser = MEDIAWIKI_DEFAULT_NS_USER;
133 QString Configuration::LocalConfig_NSUserTalk = MEDIAWIKI_DEFAULT_NS_USERTALK;
134 QString Configuration::LocalConfig_NSFile = MEDIAWIKI_DEFAULT_NS_FILE;
135 QString Configuration::LocalConfig_NSFileTalk = MEDIAWIKI_DEFAULT_NS_FILETALK;
136 QString Configuration::LocalConfig_NSCategory = MEDIAWIKI_DEFAULT_NS_CATEGORY;
137 QString Configuration::LocalConfig_NSCategoryTalk = MEDIAWIKI_DEFAULT_NS_CATEGORYTALK;
138 QString Configuration::LocalConfig_NSMediaWiki = MEDIAWIKI_DEFAULT_NS_MEDIAWIKI;
139 QString Configuration::LocalConfig_NSMediaWikiTalk = MEDIAWIKI_DEFAULT_NS_MEDIAWIKITALK;
140 QString Configuration::LocalConfig_NSHelp = MEDIAWIKI_DEFAULT_NS_HELP;
141 QString Configuration::LocalConfig_NSHelpTalk = MEDIAWIKI_DEFAULT_NS_HELPTALK;
142 QString Configuration::LocalConfig_NSPortal = MEDIAWIKI_DEFAULT_NS_PORTAL;
143 QString Configuration::LocalConfig_NSPortalTalk = MEDIAWIKI_DEFAULT_NS_PORTALTALK;
145 QStringList Configuration::LocalConfig_DeletionTemplates;
146 int Configuration::LocalConfig_TemplateAge = -30;
150 QStringList Configuration::LocalConfig_BlockExpiryOptions;
151 QString Configuration::LocalConfig_BlockTime =
"indefinite";
152 QString Configuration::LocalConfig_BlockTimeAnon =
"31 hours";
153 QString Configuration::LocalConfig_BlockMessage =
"{{subst:huggle/block|1=$1|2=$2}}";
154 QString Configuration::LocalConfig_BlockMessageIndef =
"{{subst:huggle/block-indef|1=$1}}";
155 QString Configuration::LocalConfig_BlockReason =
"[[WP:VAND|Vandalism]]";
156 QString Configuration::LocalConfig_BlockSummary =
"Notification: Blocked";
158 QString Configuration::VandalNw_Server =
"hub.tm-irc.org";
159 bool Configuration::VandalNw_Login =
true;
161 QString Configuration::LocalConfig_ProtectReason =
"Persistent [[WP:VAND|vandalism]]";
163 bool Configuration::LocalConfig_ConfirmMultipleEdits =
false;
164 bool Configuration::LocalConfig_ConfirmRange =
false;
165 bool Configuration::LocalConfig_ConfirmPage =
false;
166 bool Configuration::LocalConfig_ConfirmSame =
false;
167 bool Configuration::LocalConfig_ConfirmWarned =
false;
175 bool Configuration::LocalConfig_UAAavailable =
false;
176 QString Configuration::LocalConfig_UAAPath =
"Project:Usernames for administrator attention";
177 QString Configuration::LocalConfig_UAATemplate =
"* {{user-uaa|1=$1}} $2 ~~~~";
200 QString summary = Configuration::DefaultRevertSummary;
214 void Configuration::NormalizeConf()
216 if (Configuration::LocalConfig_TemplateAge > -1)
218 Configuration::LocalConfig_TemplateAge = -30;
232 bool Configuration::SafeBool(QString value,
bool defaultvalue)
234 if (value.toLower() ==
"true")
243 QString conf =
"<nowiki>\n";
244 conf +=
"enable:true\n";
246 conf +=
"admin:true\n";
247 conf +=
"patrol-speedy:true\n";
248 conf +=
"speedy-message-title:Speedy deleted\n";
249 conf +=
"report-summary:" + Configuration::LocalConfig_ReportSummary +
"\n";
250 conf +=
"prod-message-summary:Notification: Proposed deletion of [[$1]]\n";
251 conf +=
"warn-summary-4:" + Configuration::LocalConfig_WarnSummary4 +
"\n";
252 conf +=
"warn-summary-3:" + Configuration::LocalConfig_WarnSummary3 +
"\n";
253 conf +=
"warn-summary-2:" + Configuration::LocalConfig_WarnSummary2 +
"\n";
254 conf +=
"warn-summary:" + Configuration::LocalConfig_WarnSummary +
"\n";
255 conf +=
"auto-advance:false\n";
256 conf +=
"auto-whitelist:true\n";
261 conf +=
"template-age:" + QString::number(Configuration::LocalConfig_TemplateAge) +
"\n";
263 conf +=
"default-summary:" + Configuration::DefaultRevertSummary +
"\n";
279 if(!file.open(QIODevice::ReadOnly))
285 conf.setContent(file.readAll());
286 QDomNodeList l = conf.elementsByTagName(
"local");
288 while (item < l.count())
290 QDomElement option = l.at(item).toElement();
291 QDomNamedNodeMap xx = option.attributes();
292 if (!xx.contains(
"text") || !xx.contains(
"key"))
296 QString key = option.attribute(
"key");
297 if (key ==
"DefaultRevertSummary")
299 Configuration::DefaultRevertSummary = option.attribute(
"text");
303 if (key ==
"Cache_InfoSize")
309 if (key ==
"GlobalConfigurationWikiAddress")
315 if (key ==
"IRCIdent")
321 if (key ==
"IRCNick")
327 if (key ==
"IRCPort")
333 if (key ==
"IRCServer")
339 if (key ==
"Language")
345 if (key ==
"ProviderCache")
351 if (key ==
"AskUserBeforeReport")
357 if (key ==
"HistorySize")
363 if (key ==
"VandalNw_Login")
365 Configuration::VandalNw_Login = Configuration::SafeBool(option.attribute(
"text"));
377 if (!file.open(QIODevice::WriteOnly))
379 Core::Log(
"Unable to save configuration because the file can't be open");
382 QXmlStreamWriter *x =
new QXmlStreamWriter();
384 x->writeStartDocument();
406 x->writeEndDocument();
413 if (content.startsWith(key +
":"))
415 QString value = content.mid(key.length() + 1);
416 QStringList lines = value.split(
"\n");
418 while (curr < lines.count())
421 if (_line.endsWith(
","))
439 while (c<list.count())
441 QStringList xx = list.at(c).split(
",");
443 while (i2<xx.count())
456 }
else if (content.contains(
"\n" + key +
":"))
458 QString value = content.mid(content.indexOf(
"\n" + key +
":") + key.length() + 2);
459 QStringList lines = value.split(
"\n");
461 while (curr < lines.count())
464 if (_line.endsWith(
","))
482 while (c<list.count())
484 QStringList xx = list.at(c).split(
",");
486 while (i2<xx.count())
506 if (result.count() == 0)
519 Configuration::GlobalConfig_DocumentationPath = temp;
524 Configuration::GlobalConfig_FeedbackPath = temp;
526 Configuration::GlobalConfigWasLoaded =
true;
560 Configuration::LocalConfig_TemplateAge =
Configuration::ConfigurationParse(
"template-age", config, QString::number(Configuration::LocalConfig_TemplateAge)).toInt();
568 "Reverted edits by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]]) to last revision by $2");
570 "Reverted good faith edits by [[Special:Contributions/$2|$2]] [[User talk:$2|talk]]");
578 "Reverted edits by [[Special:Contributions/$1|$1]] to last revision by $2");
580 "Reverted,edit by,edits by,and,other users,to last revision by,to an older version by");
584 "Reverted edits by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]]) to last revision by $2");
586 "Undid edit by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]])");
596 Core::ParseWords(config);
599 while (namespaces.count() > NS)
601 QString line = namespaces.at(NS);
604 if (!line.contains(
",") || !line.contains(
";"))
609 int ns = line.mid(0, line.indexOf(
";")).toInt();
610 QString name = line.mid(line.indexOf(
";"));
612 if (!name.contains(
","))
617 name = name.mid(0, name.indexOf(
","));
618 QString talk = line.mid(line.indexOf(
",") + 1);
620 if (talk.endsWith(
","))
622 talk = talk.mid(0, talk.length() - 1);
625 if (talk.contains(
";"))
627 talk = talk.mid(talk.indexOf(
";") + 1);
633 case MEDIAWIKI_NSID_MAIN:
634 Configuration::LocalConfig_NSTalk = talk;
636 case MEDIAWIKI_NSID_CATEGORY:
637 Configuration::LocalConfig_NSCategory = name;
638 Configuration::LocalConfig_NSCategoryTalk = talk;
640 case MEDIAWIKI_NSID_FILE:
641 Configuration::LocalConfig_NSFile = name;
642 Configuration::LocalConfig_NSFileTalk = talk;
644 case MEDIAWIKI_NSID_HELP:
645 Configuration::LocalConfig_NSHelp = name;
646 Configuration::LocalConfig_NSHelpTalk = talk;
648 case MEDIAWIKI_NSID_MEDIAWIKI:
649 Configuration::LocalConfig_NSMediaWiki = name;
650 Configuration::LocalConfig_NSMediaWikiTalk = talk;
658 int CurrentTemplate=0;
659 while (CurrentTemplate<Configuration::LocalConfig_WarningTypes.count())
661 QString type = Core::GetKeyFromValue(Configuration::LocalConfig_WarningTypes.at(CurrentTemplate));
662 int CurrentWarning = 1;
663 while (CurrentWarning <= 4)
668 Configuration::LocalConfig_WarningTemplates.append(type + QString::number(CurrentWarning) +
";" + xx);
675 if (Configuration::LocalConfig_ReportPath ==
"")
677 Configuration::LocalConfig_AIV =
false;
680 if (Configuration::LocalConfig_UAAPath ==
"")
682 Configuration::LocalConfig_UAAavailable =
false;
699 Configuration::LocalConfig_TemplateAge =
Configuration::ConfigurationParse(
"template-age", config, QString::number(Configuration::LocalConfig_TemplateAge)).toInt();
704 Configuration::NormalizeConf();
711 if (content.startsWith(key +
":"))
713 QString value = content.mid(key.length() + 1);
714 if (value.contains(
"\n"))
716 value = value.mid(0, value.indexOf(
"\n"));
722 if (content.contains(
"\n" + key +
":"))
724 QString value = content.mid(content.indexOf(
"\n" + key +
":") + key.length() + 2);
725 if (value.contains(
"\n"))
727 value = value.mid(0, value.indexOf(
"\n"));
736 s->writeStartElement(
"local");
737 s->writeAttribute(
"key", key);
738 s->writeAttribute(
"text", value);
739 s->writeEndElement();
742 ScoreWord::ScoreWord(QString Word,
int Score)
750 this->score = word->score;
751 this->word = word->word;
754 ScoreWord::ScoreWord(
const ScoreWord &word)
756 this->score = word.score;
757 this->word = word.word;
static QString HuggleVersion
Version.
static QStringList ConfigurationParse_QL(QString key, QString content, bool CS=false)
ConfigurationParse_QL Parses a QStringList of values for a given key.
static QString WikiDB
Path to a file where information about wikis are stored.
static WikiPage * AIVP
Pointer to AIV page.
static void Log(QString Message)
Write text to terminal as well as ring log.
static bool QueueNewEditsUp
Whether new edits go to top or bottom.
static double RvCounter
Number of reverts made since you logged in.
static QString HomePath
Path where huggle contains its data.
static QString UserName
User name.
static int QueryListTimeLimit
Number of seconds for which the processed queries remain in list of processes.
static WikiPage * UAAP
Pointer to UAA page.
static QString GetConfigurationPath()
Return a configuration path.
static bool Restricted
When this is true most of functions will not work.
static bool WelcomeEmpty
Send a message to user on good edit.
static int ReadTimeout
Timeout for queries.
static QString Bool2String(bool b)
Bool2String Convert a bool to string.
static QString GetURLProtocolPrefix()
Return a prefix for url.
static double EditCounter
Number of edits made since you logged in.
static bool TrimOldWarnings
This is experimental feature that removes the old templates from talk pages when they are being read...
static QString LocalConfig_RUTemplateReport
Regular users.
static QString WmfOAuthConsumerKey
Consumer key.
static void LoadConfig()
Load the local configuration from disk.
static bool WarnUserSpaceRoll
Warn you in case you want to revert a user page.
static QString IRCIdent
Ident.
static QString IRCServer
Server.
static bool UsingIRC
Whether IRC is being used.
static void InsertConfig(QString key, QString value, QXmlStreamWriter *s)
InsertConfig.
static QString Language
Language selected by user this is only a language of interface.
static int ProviderCache
Size of feed.
static QStringList EditRegexOfTools
Regexes that other tools can be identified with.
static QString Password
Password.
static QStringList WhiteList
Data of wl.
static int LocalConfig_ReportSt
Section of report page to append template to.
static int Cache_InfoSize
Size of info cache.
static QString IRCNick
Nick.
static int HistorySize
Number of edits to keep in history stack.
static QString MakeLocalUserConfig()
This function creates a user configuration that is stored on wiki.
static bool ParseUserConfig(QString config)
static quint16 IRCPort
Port.
static unsigned int Verbosity
Verbosity for debugging to terminal etc, can be switched with parameter –verbosity.
static int WriteTimeout
Timeout for write / update queries.
static QString LocalConfig_MinimalVersion
Minimal version of huggle required to use it.
static WikiSite Project
currently selected project
static int LocalConfig_ScoreChange
Score that is added for every edit that has really big size.
static QString EditSuffixOfHuggle
Suffix used by huggle.
static int RingLogMaxSize
Maximum size of ringlog.
static void DebugLog(QString Message, unsigned int Verbosity=1)
This log is only shown if verbosity is same or larger than requested verbosity.
static void ParsePats(QString text)
Parse a part patterns for score words.
static int FontSize
Size of fonts in diff.
static bool AutomaticallyResolveConflicts
Resolve edit conflict without asking user.
static bool ParseGlobalConfig(QString config)
Parse all information from global config on meta.
static bool PythonEngine
Whether python is available.
static QString ConfigurationParse(QString key, QString content, QString missing="")
Parse a string from configuration which has format used by huggle 2x.
static bool WhitelistDisabled
Whitelist is not useable.
static QString LocalConfig_IPVTemplateReport
IP vandals.
static bool UsingSSL
If SSL is being used.
static bool ParseLocalConfig(QString config)
Parse all information from local config, this function is used in login.
static QList< WikiSite * > ProjectList
List of projects.
static QString GlobalConfigurationWikiAddress
URL of wiki that contains a global config.
static bool _SafeMode
If this is true some functionalities will be disabled.
static QString WelcomeMP
Where the welcome message is stored.
static QString Trim(QString text)
Remove leading and finishing space of string.
static void SaveConfig()
Save the local configuration to file.
static QString GetDefaultRevertSummary(QString source)
GetDefaultRevertSummary Retrieve default summary.
static bool AskUserBeforeReport
Ask user if they really want to report someone.
static bool EnforceManualSoftwareRollback
If this is true huggle will always use software rollback even if user has the rollback privileges...