Passed
Push — bantools ( acdcfb...ca0207 )
by Simon
03:08
created

wfDebugLog()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 0
c 1
b 0
f 0
dl 0
loc 2
rs 10
cc 1
nc 1
nop 2
1
<?php
2
/******************************************************************************
3
 * Wikipedia Account Creation Assistance tool                                 *
4
 *                                                                            *
5
 * All code in this file is released into the public domain by the ACC        *
6
 * Development Team. Please see team.json for a list of contributors.         *
7
 ******************************************************************************/
8
9
/**************************************************************************
10
 **********                   IMPORTANT NOTICE                    **********
11
 ***************************************************************************
12
 ** YOU MUST OVERRIDE THE CONFIGURATION IN THIS FILE WITH A LOCAL COPY!!! **
13
 ** IT IS VERY IMPORTANT THAT THAT FILE IS CALLED config.local.inc.php    **
14
 ***************************************************************************/
15
16
/*********************************
17
 * Databases and stuff
18
 */
19
20
// Main database location and access details.
21
$toolserver_username = "";
22
$toolserver_password = "";
23
$toolserver_host = "";
24
$toolserver_database = "";
25
26
$toolserver_notification_database = "notifications";
27
$toolserver_notification_dbhost = "dbmaster.srv.stwalkerster.net";
28
$notifications_username = "";
29
$notifications_password = "";
30
31
// The antispoof configuration.
32
$antispoof_equivset = "equivset.php";
33
$antispoof_host = "sql-s1";
34
$antispoof_db = "enwiki_p";
35
$antispoof_table = "spoofuser";
36
37
/**********************************
38
 * File paths etc
39
 */
40
41
$mediawikiWebServiceEndpoint = "https://en.wikipedia.org/w/api.php";
42
$mediawikiScriptPath = "https://en.wikipedia.org/w/index.php";
43
$metaWikimediaWebServiceEndpoint = "https://meta.wikimedia.org/w/api.php";
44
45
// URL of the current copy of the tool.
46
$baseurl = "https://accounts.wmflabs.org";
47
48
// Pathname to the local installation of Peachy.
49
$peachyPath = "";
50
51
// Location outside web directory to place temporary files.
52
$varfilepath = "/projects/acc/";
53
54
// Set up cookies and session information.
55
$cookiepath = '/acc/';
56
$sessionname = 'ACC';
57
58
$xff_trusted_hosts_file = '../TrustedXFF/trusted-hosts.txt';
59
/************************************
60
 * Tool downtime
61
 */
62
63
$dontUseDb = 0; // Disable the tool completely.
64
$dontUseWikiDb = 0; // Disable access to the Wiki database.
65
$dontUseDbReason = ""; // Reason for disabling the tool.
66
$dontUseDbCulprit = ""; // Your name, or the person who broke the tool.
67
68
/**************************************
69
 * ACCBot IRC bot
70
 */
71
72
$ircBotDaemonise = true; // Run the IRC bot as a daemon, detached from the terminal.
73
74
$ircBotNickServPassword = ""; // Password for ACCBot's Nickserv account.
75
$ircBotCommunicationKey = ""; // Key used to communicate with the ACCBot.
76
$ircBotNetworkHost = "chat.freenode.net"; // The host to use for connecting.
77
$ircBotNetworkPort = 6667; // The port on the particular host.
78
$ircBotChannel = "#wikipedia-en-accounts"; // The channel in which the discussions are.
79
$ircBotNickname = "ACCBot"; // The nickname of the ACCBot.
80
$ircBotCommandTrigger = '!'; // The ACCBot's command trigger.
81
82
$ircBotNotificationType = 1; // Helpmebot's notification type ID.
83
$ircBotNotificationsEnabled = 1; // Enable Helpmebot's notifications.
84
// Name of this instance of the tool.
85
// This name would be used by the bot as reference point.	
86
$whichami = 'Live';
87
88
/***************************************
89
 * Email confirmation
90
 */
91
92
// Enable request email confirmation.
93
$enableEmailConfirm = 1;
94
// Number of days that are given for a requestor to confirm their email address.
95
$emailConfirmationExpiryDays = 7;
96
97
/**************************************
98
 * Interface registration, interface users, etc.
99
 */
100
101
$allowRegistration = true;
102
103
// Parameters for performing a newbie check on tool registration.
104
$onRegistrationNewbieCheck = true; // Enable the newbie checking.
105
$onRegistrationNewbieCheckEditCount = 20; // Minimum amount of edits on Wikipedia.
106
$onRegistrationNewbieCheckAge = 5184000; // Account age on Wikipedia in seconds.
107
108
// Force identification to the foundation
109
$forceIdentification = true;
110
111
// Time to cache positive automatic identification results, as a MySQL time interval
112
$identificationCacheExpiry = "1 DAY";
113
114
// minimum password version
115
//   0 = hashed
116
//   1 = hashed, salted
117
$minimumPasswordVersion = 0;
118
119
$communityUsername = "[Community]";
120
121
/***********************************
122
 * Reservations
123
 */
124
125
// Reserve requests to a specific user by default.
126
// Adapted from livehack by st - use the userid, zero for unreserved.
127
$defaultReserver = 0;
128
129
/************************************
130
 * OAuth Configuration
131
 */
132
133
$oauthConsumerToken = "";
134
$oauthSecretToken = "";
135
136
// path to Special:OAuth on target wiki.
137
// don't use pretty urls, see [[bugzilla:57500]]
138
$oauthBaseUrl = "https://en.wikipedia.org/w/index.php?title=Special:OAuth";
139
// use this for requests from the server, if some special url is needed.
140
$oauthBaseUrlInternal = "https://en.wikipedia.org/w/index.php?title=Special:OAuth";
141
142
$oauthMediaWikiCanonicalServer = "http://en.wikipedia.org";
143
144
$useOauthSignup = true;
145
$enforceOAuth = false;
146
147
// Password for the creation bot when this is used in place of OAuth
148
$creationBotUsername = '';
149
$creationBotPassword = '';
150
151
/************************************
152
 * Providers Configuration
153
 */
154
155
// IP GeoLocation
156
// ------------------------
157
// To set this up, change the class to "IpLocationProvider", and put *your* ipinfodb API key in.
158
// You'll need to sign up at IpInfoDb.com to get an API key - it's free.
159
$locationProviderClass = "FakeLocationProvider";
160
$locationProviderApiKey = "super secret"; // ipinfodb api key
161
162
// RDNS Provider ( RDnsLookupProvider / CachedRDnsLookupProvider / FakeRDnsLookupProvider)
163
$rdnsProviderClass = "CachedRDnsLookupProvider";
164
165
$antispoofProviderClass = "FakeAntiSpoofProvider";
166
$xffTrustProviderClass = "XffTrustProvider";
167
168
/***********************************
169
 * Data clear script
170
 */
171
172
$dataclear_interval = '15 DAY';
173
174
/***********************************
175
 * Other stuff that doesn't fit in.
176
 */
177
178
$enableSQLError = 0; // Enable the display of SQL errors.
179
$enableTitleblacklist = 0; // Enable Title Blacklist checks.
180
181
// Enable the use of PATH_INFO for request parameters to prettify URLs.
182
$usePathInfo = true;
183
184
// user agent of the tool.
185
$toolUserAgent = "Wikipedia-ACC Tool/0.1 (+https://accounts.wmflabs.org/internal.php/team)";
186
187
// list of squid proxies requests go through.
188
$squidIpList = array();
189
190
// request states
191
$availableRequestStates = array(
192
    'Open'          => array(
193
        'defertolog' => 'users', // don't change or you'll break old logs
194
        'deferto'    => 'users',
195
        'header'     => 'Open requests',
196
        'api'        => "open",
197
        'queuehelp'  => null
198
    ),
199
    'Flagged users' => array(
200
        'defertolog' => 'flagged users', // don't change or you'll break old logs
201
        'deferto'    => 'flagged users',
202
        'header'     => 'Flagged user needed',
203
        'api'        => "admin",
204
        'queuehelp'  => 'This queue lists the requests which require a user with the <code>accountcreator</code> flag to create.<br />If creation is determined to be the correct course of action, requests here will require the overriding the AntiSpoof checks or the title blacklist in order to create. It is recommended to try to create the account <em>without</em> checking the flags to validate the results of the AntiSpoof and/or title blacklist hits.'
205
    ),
206
    'Checkuser'     => array(
207
        'defertolog' => 'checkusers', // don't change or you'll break old logs
208
        'deferto'    => 'checkusers',
209
        'header'     => 'Checkuser needed',
210
        'api'        => "checkuser",
211
        'queuehelp'  => null
212
    ),
213
);
214
215
$defaultRequestStateKey = 'Open';
216
217
$providerCacheExpiry = $dataclear_interval;
218
219
// miser mode
220
$requestLimitShowOnly = 25;
221
222
// Enables the Smarty debugging console. This should only be used for development and even then
223
// be left false when you don't need it, since this will open a popup window on every page load.
224
$smartydebug = false;
225
226
// ID of the Email template used for the main "Created!" close reason.
227
$createdid = 1;
228
229
// HSTS expiry - use false to disable header.
230
$strictTransportSecurityExpiry = false;
231
232
// CSP violation report URI
233
$cspReportUri = null;
234
235
// Must be disabled in production.
236
$enableErrorTrace = false;
237
238
// Dangerous.
239
// Don't set this.
240
// Definitely don't set this if there's sensitive data stored here you care about such as OAuth credentials.
241
$curlDisableSSLVerifyPeer = false;
242
243
// Change this to be outside the web directory.
244
$curlCookieJar = __DIR__ . '/../cookies.txt';
245
246
$yubicoApiId = 0;
247
$yubicoApiKey = "";
248
249
$totpEncryptionKey = "1234";
250
251
// external resource cache epoch value. Bump me to force clients to reload assets
252
$resourceCacheEpoch = 1;
253
254
/**************************************************************************
255
 **********                   IMPORTANT NOTICE                    **********
256
 ***************************************************************************
257
 **     DON'T ADD ANY NEW CONFIGURATION OPTIONS BELOW THIS LINE!!!        **
258
 **     THEY WILL NOT BE CHANGABLE BY THE LOCAL CONFIGURATION FILE.       **
259
 ***************************************************************************/
260
261
// Retriving the local configuration file.
262
require_once('config.local.inc.php');
263
264
$cDatabaseConfig = array(
265
    "acc"           => array(
266
        "dsrcname" => "mysql:host=" . $toolserver_host . ";dbname=" . $toolserver_database,
267
        "username" => $toolserver_username,
268
        "password" => $toolserver_password,
269
		"options"  => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4'),
270
    ),
271
    "wikipedia"     => array(
272
        "dsrcname" => "mysql:host=" . $antispoof_host . ";dbname=" . $antispoof_db,
273
        "username" => $toolserver_username,
274
        "password" => $toolserver_password,
275
        "options"  => array(),
276
    ),
277
    "notifications" => array(
278
        "dsrcname" => "mysql:host=" . $toolserver_notification_dbhost . ";dbname=" . $toolserver_notification_database,
279
        "username" => $notifications_username,
280
        "password" => $notifications_password,
281
        "options"  => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4'),
282
    ),
283
);
284
285
// //Keep the included files from being executed.
286
define("ACC", 1);
287
288
// Sets the values of the cookie configuration options.
289
ini_set('session.cookie_path', $cookiepath);
290
ini_set('session.name', $sessionname);
291
ini_set('user_agent', $toolUserAgent);
292
293
foreach (array(
294
    "mbstring", // unicode and stuff
295
    "pdo",
296
    "pdo_mysql", // new database module
297
    "session",
298
    "date",
299
    "pcre", // core stuff
300
    "curl", // mediawiki api access etc
301
    "openssl", // token generation
302
) as $x) {
303
    if (!extension_loaded($x)) {
304
        die("extension $x is required.");
305
    }
306
}
307
308
// Set up the AutoLoader
309
require_once(__DIR__ . "/includes/AutoLoader.php");
310
spl_autoload_register('Waca\\AutoLoader::load');
311
require_once(__DIR__ . '/vendor/autoload.php');
312
313
// Crap that's needed for libraries. >:(
314
/**
315
 * Don't use me. I'm only here because the MediaWiki OAuth library we're using requires it.
316
 *
317
 * @param $section
318
 * @param $message
319
 */
320
function wfDebugLog($section, $message)
0 ignored issues
show
Unused Code introduced by
The parameter $message is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

320
function wfDebugLog($section, /** @scrutinizer ignore-unused */ $message)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $section is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

320
function wfDebugLog(/** @scrutinizer ignore-unused */ $section, $message)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
321
{
322
}
323
324
// Initialise the site configuration object
325
/** @noinspection PhpFullyQualifiedNameUsageInspection */
326
$siteConfiguration = new \Waca\SiteConfiguration();
327
328
$siteConfiguration->setBaseUrl($baseurl)
329
    ->setFilePath(__DIR__)
330
    ->setDebuggingTraceEnabled($enableErrorTrace)
331
    ->setForceIdentification($forceIdentification)
332
    ->setIdentificationCacheExpiry($identificationCacheExpiry)
333
    ->setMediawikiScriptPath($mediawikiScriptPath)
334
    ->setMediawikiWebServiceEndpoint($mediawikiWebServiceEndpoint)
335
    ->setMetaWikimediaWebServiceEndpoint($metaWikimediaWebServiceEndpoint)
336
    ->setEnforceOAuth($enforceOAuth)
337
    ->setEmailConfirmationEnabled($enableEmailConfirm == 1)
338
    ->setEmailConfirmationExpiryDays($emailConfirmationExpiryDays)
339
    ->setMiserModeLimit($requestLimitShowOnly)
340
    ->setRequestStates($availableRequestStates)
341
    ->setSquidList($squidIpList)
342
    ->setDefaultCreatedTemplateId($createdid)
343
    ->setDefaultRequestStateKey($defaultRequestStateKey)
344
    ->setUseStrictTransportSecurity($strictTransportSecurityExpiry)
345
    ->setUserAgent($toolUserAgent)
346
    ->setCurlDisableVerifyPeer($curlDisableSSLVerifyPeer)
347
    ->setUseOAuthSignup($useOauthSignup)
348
    ->setOAuthBaseUrl($oauthBaseUrl)
349
    ->setOAuthConsumerToken($oauthConsumerToken)
350
    ->setOAuthConsumerSecret($oauthSecretToken)
351
    ->setOauthMediaWikiCanonicalServer($oauthMediaWikiCanonicalServer)
352
    ->setDataClearInterval($dataclear_interval)
353
    ->setXffTrustedHostsFile($xff_trusted_hosts_file)
354
    ->setIrcNotificationsEnabled($ircBotNotificationsEnabled == 1)
355
    ->setIrcNotificationType($ircBotNotificationType)
356
    ->setIrcNotificationsInstance($whichami)
357
    ->setTitleBlacklistEnabled($enableTitleblacklist == 1)
358
    ->setTorExitPaths(array_merge(gethostbynamel('en.wikipedia.org'), gethostbynamel('accounts.wmflabs.org')))
359
    ->setCreationBotUsername($creationBotUsername)
360
    ->setCreationBotPassword($creationBotPassword)
361
    ->setCurlCookieJar($curlCookieJar)
362
    ->setYubicoApiId($yubicoApiId)
363
    ->setYubicoApiKey($yubicoApiKey)
364
    ->setTotpEncryptionKey($totpEncryptionKey)
365
    ->setRegistrationAllowed($allowRegistration)
366
    ->setCspReportUri($cspReportUri)
367
    ->setResourceCacheEpoch($resourceCacheEpoch)
368
    ->setLocationProviderApiKey($locationProviderApiKey);
369