Failed Conditions
Pull Request — oauthcreation (#531)
by Simon
18:38 queued 08:37
created

config.inc.php (2 issues)

Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

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
// Parameters for performing a newbie check on tool registration.
102
$onRegistrationNewbieCheck = true; // Enable the newbie checking.
103
$onRegistrationNewbieCheckEditCount = 20; // Minimum amount of edits on Wikipedia.
104
$onRegistrationNewbieCheckAge = 5184000; // Account age on Wikipedia in seconds.
105
106
// Force identification to the foundation
107
$forceIdentification = true;
108
109
// Time to cache positive automatic identification results, as a MySQL time interval
110
$identificationCacheExpiry = "1 DAY";
111
112
// minimum password version
113
//   0 = hashed
114
//   1 = hashed, salted
115
$minimumPasswordVersion = 0;
116
117
$communityUsername = "[Community]";
118
119
/***********************************
120
 * Reservations
121
 */
122
123
// Reserve requests to a specific user by default.
124
// Adapted from livehack by st - use the userid, zero for unreserved.
125
$defaultReserver = 0;
126
127
/************************************
128
 * Backup Configuration
129
 */
130
131
$BUbasefile = "backup"; // The basefile's name.
132
$BUdir = "/home/project/a/c/c/acc/backups"; // The directory where backups should be stored.
133
$BUmonthdir = $BUdir . "/monthly"; // The directory where monthly backups should be stored.
134
$BUdumper = "/opt/ts/mysql/5.1/bin/mysqldump --defaults-file=~/.my.cnf p_acc_live"; // Add parameters here if they are needed.
135
$BUgzip = "/usr/bin/gzip"; // Add the gzip parameters here if needed.
136
$BUtar = "/bin/tar -cvf"; // Add the tar parameters here if needed.
137
138
/************************************
139
 * OAuth Configuration
140
 */
141
142
$oauthConsumerToken = "";
143
$oauthSecretToken = "";
144
145
// path to Special:OAuth on target wiki.
146
// don't use pretty urls, see [[bugzilla:57500]]
147
$oauthBaseUrl = "https://en.wikipedia.org/w/index.php?title=Special:OAuth";
148
// use this for requests from the server, if some special url is needed.
149
$oauthBaseUrlInternal = "https://en.wikipedia.org/w/index.php?title=Special:OAuth";
150
151
$oauthMediaWikiCanonicalServer = "http://en.wikipedia.org";
152
153
$useOauthSignup = true;
154
$enforceOAuth = false;
155
156
// Password for the creation bot when this is used in place of OAuth
157
$creationBotUsername = '';
158
$creationBotPassword = '';
159
160
/************************************
161
 * Providers Configuration
162
 */
163
164
// IP GeoLocation
165
// ------------------------
166
// To set this up, change the class to "IpLocationProvider", and put *your* ipinfodb API key in.
167
// You'll need to sign up at IpInfoDb.com to get an API key - it's free.
168
$locationProviderClass = "FakeLocationProvider";
169
$locationProviderApiKey = "super secret"; // ipinfodb api key
170
171
// RDNS Provider ( RDnsLookupProvider / CachedRDnsLookupProvider / FakeRDnsLookupProvider)
172
$rdnsProviderClass = "CachedRDnsLookupProvider";
173
174
$antispoofProviderClass = "FakeAntiSpoofProvider";
175
$xffTrustProviderClass = "XffTrustProvider";
176
177
/***********************************
178
 * Data clear script
179
 */
180
181
$dataclear_interval = '15 DAY';
182
183
/***********************************
184
 * Other stuff that doesn't fit in.
185
 */
186
187
$enableSQLError = 0; // Enable the display of SQL errors.
188
$enableTitleblacklist = 0; // Enable Title Blacklist checks.
189
190
// Enable the use of PATH_INFO for request parameters to prettify URLs.
191
$usePathInfo = true;
192
193
// user agent of the tool.
194
$toolUserAgent = "Wikipedia-ACC Tool/0.1 (+https://accounts.wmflabs.org/internal.php/team)";
195
196
// list of squid proxies requests go through.
197
$squidIpList = array();
198
199
$apiDeployPassword = "super secret update password";
200
201
// request states
202
$availableRequestStates = array(
203
    'Open'          => array(
204
        'defertolog' => 'users', // don't change or you'll break old logs
205
        'deferto'    => 'users',
206
        'header'     => 'Open requests',
207
        'api'        => "open",
208
    ),
209
    'Flagged users' => array(
210
        'defertolog' => 'flagged users', // don't change or you'll break old logs
211
        'deferto'    => 'flagged users',
212
        'header'     => 'Flagged user needed',
213
        'api'        => "admin",
214
    ),
215
    'Checkuser'     => array(
216
        'defertolog' => 'checkusers', // don't change or you'll break old logs
217
        'deferto'    => 'checkusers',
218
        'header'     => 'Checkuser needed',
219
        'api'        => "checkuser",
220
    ),
221
);
222
223
$defaultRequestStateKey = 'Open';
224
225
$providerCacheExpiry = $dataclear_interval;
226
227
// miser mode
228
$requestLimitShowOnly = 25;
229
230
// Enables the Smarty debugging console. This should only be used for development and even then
231
// be left false when you don't need it, since this will open a popup window on every page load.
232
$smartydebug = false;
233
234
// ID of the Email template used for the main "Created!" close reason.
235
$createdid = 1;
236
237
// HSTS expiry - use false to disable header.
238
$strictTransportSecurityExpiry = false;
239
240
// Must be disabled in production.
241
$enableErrorTrace = false;
242
243
// Dangerous.
244
// Don't set this.
245
// Definitely don't set this if there's sensitive data stored here you care about such as OAuth credentials.
246
$curlDisableSSLVerifyPeer = false;
247
248
// Change this to be outside the web directory.
249
$curlCookieJar = __DIR__ . '/../cookies.txt';
250
251
$yubicoApiId = 0;
252
$yubicoApiKey = "";
253
254
$totpEncryptionKey = "1234";
255
256
/**************************************************************************
257
 **********                   IMPORTANT NOTICE                    **********
258
 ***************************************************************************
259
 **     DON'T ADD ANY NEW CONFIGURATION OPTIONS BELOW THIS LINE!!!        **
260
 **     THEY WILL NOT BE CHANGABLE BY THE LOCAL CONFIGURATION FILE.       **
261
 ***************************************************************************/
262
263
// Retriving the local configuration file.
264
require_once('config.local.inc.php');
265
266
$cDatabaseConfig = array(
267
    "acc"           => array(
268
        "dsrcname" => "mysql:host=" . $toolserver_host . ";dbname=" . $toolserver_database,
269
        "username" => $toolserver_username,
270
        "password" => $toolserver_password,
271
    ),
272
    "wikipedia"     => array(
273
        "dsrcname" => "mysql:host=" . $antispoof_host . ";dbname=" . $antispoof_db,
274
        "username" => $toolserver_username,
275
        "password" => $toolserver_password,
276
    ),
277
    "notifications" => array(
278
        "dsrcname" => "mysql:host=" . $toolserver_notification_dbhost . ";dbname=" . $toolserver_notification_database,
279
        "username" => $notifications_username,
280
        "password" => $notifications_password,
281
    ),
282
);
283
284
// //Keep the included files from being executed.
285
define("ACC", 1);
286
287
// Sets the values of the cookie configuration options.
288
ini_set('session.cookie_path', $cookiepath);
289
ini_set('session.name', $sessionname);
290
ini_set('user_agent', $toolUserAgent);
291
292
foreach (array(
293
    "mbstring", // unicode and stuff
294
    "pdo",
295
    "pdo_mysql", // new database module
296
    "session",
297
    "date",
298
    "pcre", // core stuff
299
    "curl", // mediawiki api access etc
300
    "openssl", // token generation
301
) as $x) {
302
    if (!extension_loaded($x)) {
303
        die("extension $x is required.");
304
    }
305
}
306
307
// Set up the AutoLoader
308
require_once(__DIR__ . "/includes/AutoLoader.php");
309
spl_autoload_register('Waca\\AutoLoader::load');
310
require_once(__DIR__ . '/vendor/autoload.php');
311
312
// Extra includes which are just plain awkward wherever they are.
313
require_once(__DIR__ . '/lib/mediawiki-extensions-OAuth/lib/OAuth.php');
314
require_once(__DIR__ . '/lib/mediawiki-extensions-OAuth/lib/JWT.php');
315
316
// Crap that's needed for libraries. >:(
317
/**
318
 * Don't use me. I'm only here because the MediaWiki OAuth library we're using requires it.
319
 *
320
 * @param $section
321
 * @param $message
322
 */
323
function wfDebugLog($section, $message)
0 ignored issues
show
The parameter $section is not used and could be removed.

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

Loading history...
The parameter $message is not used and could be removed.

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

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