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
|
|||
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 |
This check looks from parameters that have been defined for a function or method, but which are not used in the method body.