- Portals
- The Current Year
- ED in the News
- Admins
- Help ED Rebuild
- Archive
- ED Bookmarklet
- Donate Bitcoin
Contact an admin on Discord or EDF if you want an account. Also fuck bots.
User:BMO/src
< User:BMO
<?php error_reporting(E_ALL | E_STRICT); $COMMON_GET_CONTENTS = 0; $COMMON_NEWLINE = 0; function alert ($file, $fn, $line, $alert = '') { global $COMMON_NEWLINE; if ($COMMON_NEWLINE) { print ("\n"); } printf ("%s %s %s\n", $file, $fn, $line, $alert); $COMMON_NEWLINE = 0; return false; } function msg ($msg) { global $COMMON_NEWLINE; $COMMON_NEWLINE = 1; printf ('%s ', $msg); } function dump_array ($array, $filename = 'tmp.txt') { ob_start (); print_r ($array); file_put_contents ($filename, ob_get_clean ()); } function xml_get_array ($xml) { $array = array(); if ($xml->hasAttributes ()) { foreach ($xml->attributes as $a) { $array['@attributes'][$a->name] = $a->value; } } if ($xml->hasChildNodes()) { $nodes = $xml->childNodes; if ($nodes->length == 1) { $node = $nodes->item(0); if ($node->nodeType == XML_TEXT_NODE) { $array['_value'] = $node->nodeValue; return count($array) == 1 ? $array['_value'] : $array; } } $groups = array(); foreach ($nodes as $node) { if (!isset ($array[$node->nodeName])) { $array[$node->nodeName] = xml_get_array ($node); } else { if (!isset ($groups[$node->nodeName])) { $array[$node->nodeName] = array ($array[$node->nodeName]); $groups[$node->nodeName] = 1; } $array[$node->nodeName][] = xml_get_array ($node); } } } return $array; } function append_array ($source_array, $values_array, $path_array, &$append_array) { $array = $source_array; foreach ($path_array as $value) { if (isset ($array[$value]) === false) { $array = array (); break; } else { $array = $array[$value]; } } if (count ($values_array) == 0) { $append_array = $array; return true; } if (count ($array)) { foreach ($values_array as $value) { if (isset ($array[$value]) == true) { $append_array[$value] = $array[$value]; } } return true; } else { return false; } } function wikiput_cookie ($cookieprefix, $sessionid, &$cookie) { $cookie = "Cookie: " . $cookieprefix . "_session=$sessionid\r\n"; } function wikiget_contents ($cookie, $post_array, $format = 'xml') { sleep (.5); msg ('.'); global $COMMON_GET_CONTENTS; $COMMON_GET_CONTENTS++; $stream_context = stream_context_create (array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n" . $cookie, 'method' => 'POST', 'content' => http_build_query (array_merge (array ('format' => $format), $post_array)), 'timeout' => 10, ), )); if ($stream_context === false) { return false; } else { $file_contents = file_get_contents (MEDIAWIKI_API, false, $stream_context); if ($file_contents === false) { return false; } else { if ($format == 'xml') { try { $xml = new DOMDocument (); $xml->loadXML ($file_contents); } catch (Exception $e) { return false; } return xml_get_array ($xml); } else { return $file_contents; } } } } function wikiput_logintoken (&$cookie, $username, $pwd, &$logintoken) { msg (chr (10) . 'login'); $logintoken = ''; $logintoken_array = array (); $xml_contents_array = wikiget_contents ('', array ( 'action' => 'login', 'lgname' => $username, 'lgpassword' => $pwd )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (append_array ($xml_contents_array, array ('token', 'cookieprefix', 'sessionid', 'result'), array ('api', 'login', '@attributes'), $logintoken_array) == false) { return alert (__FILE__, __FUNCTION__, __LINE__); } wikiput_cookie ($logintoken_array ['cookieprefix'], $logintoken_array ['sessionid'], $cookie); if ($logintoken_array ['result'] != 'NeedToken') { return alert (__FILE__, __FUNCTION__, __LINE__); } $xml_contents_array = wikiget_contents ($cookie, array ( 'action' => 'login', 'lgname' => $username, 'lgpassword' => $pwd, 'lgtoken' => $logintoken_array ['token'], )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (append_array ($xml_contents_array, array ('lgtoken'), array ('api', 'login', '@attributes'), $logintoken_array) == false) { return alert (__FILE__, __FUNCTION__, __LINE__); } $logintoken = $logintoken_array['lgtoken']; return true; } function wikiput_userinfo ($cookie, $user, &$userinfo) { $userinfo_array = array (); $xml_contents_array = wikiget_contents ('', array ( 'action' => 'query', 'list' => 'users', 'ususers' => $user, 'usprop' => 'editcount|blockinfo|groups|registration', )); if (append_array ($xml_contents_array, array ('editcount', 'blockedby', 'registration'), array ('api', 'query', 'users', 'user', '@attributes'), $userinfo_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (isset ($userinfo_array['blockedby']) === false) { $userinfo_array['blockedby'] = false; } $userinfo_array['days'] = (int)((time () - strtotime ($userinfo_array['registration'])) / 60 / 60 / 24); $userinfo = $userinfo_array; return true; } function wikicall_rollback ($cookie, $title, $user, $rollbacktoken) { $xml_contents_array = wikiget_contents ($cookie, array ( 'action' => 'rollback', 'title' => $title, 'token' => $rollbacktoken, 'user' => $user, )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } return true; } function wikiput_edittoken ($cookie, $logintoken, $username, &$edittoken) { $edittoken = ''; $edittoken_array = array (); $xml_contents_array = wikiget_contents ($cookie, array ( 'action' => 'query', 'prop' => 'info', 'titles' => 'User:' . $username, 'intoken' => 'edit', )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (append_array ($xml_contents_array, array ('edittoken'), array ('api', 'query', 'pages', 'page', '@attributes'), $edittoken_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (substr ($edittoken_array['edittoken'], -2) != '+\\') { return alert (__FILE__, __FUNCTION__, __LINE__); } $edittoken = $edittoken_array['edittoken']; return true; } function wikiput_redlink ($cookie, $edittoken, $title, &$redlink) { $redlink = false; $redlink_array = array (); $xml_contents_array = wikiget_contents ('', array ( 'action' => 'query', 'prop' => 'revisions', 'titles' => $title, 'rvprop' => 'timestamp', )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (append_array ($xml_contents_array, array (), array ('api', 'query', 'pages', 'page', '@attributes'), $redlink_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } $redlink = isset ($redlink_array['missing']); return true; } function wikicall_logout ($cookie) { msg (chr (10) . 'logout'); $login_array = wikiget_contents ($cookie, array ( 'action' => 'logout', )); if ($login_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } return true; } function wikicall_edit ($cookie, $edittoken, $title, $summary, $post_array = array ()) { $edit_array = array (); $xml_contents_array = wikiget_contents ($cookie, array_merge ($post_array, array ( 'action' => 'edit', 'title' => $title, 'summary' => $summary, 'token' => $edittoken, ))); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (append_array ($xml_contents_array, array (), array ('api'), $edit_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (isset ($edit_array['error']) !== false) { return alert (__FILE__, __FUNCTION__, __LINE__); } return true; } function wikiput_rollbacktoken ($cookie, $edittoken, $title, &$rollbacktoken) { $rollbacktoken = ''; $rollbacktoken_array = array (); $xml_contents_array = wikiget_contents ($cookie, array ( 'action' => 'query', 'prop' => 'revisions', 'rvtoken' => 'rollback', 'titles' => $title, )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (append_array ($xml_contents_array, array ('rollbacktoken'), array ('api', 'query', 'pages', 'page', 'revisions', 'rev', '@attributes'), $rollbacktoken_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (substr ($rollbacktoken_array['rollbacktoken'], -2) != '+\\') { return alert (__FILE__, __FUNCTION__, __LINE__); } $rollbacktoken = $rollbacktoken_array['rollbacktoken']; return true; } function wikicall_blockuser ($cookie, $user, $expiry, $reason) { $xml_contents_array = wikiget_contents ($cookie, array ( 'action' => 'block', 'user' => $user, 'expiry' => $expiry, 'reason' => $reason, 'nocreate' => 'nocreate', 'autoblock' => 'autoblock', 'noemail' => 'noemail', )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } return true; } ?> <?php define ('MEDIAWIKI_API', 'https://encyclopediadramatica.se/api.php'); $wiki_username = 'Weaselbot'; $wiki_cookie = ''; require_once ('common.php'); function newusers ($cookie, $edittoken, &$id_array) { msg (chr (10) . 'newusers'); $newusers_array = array (); $xml_contents_array = wikiget_contents ('', array ( 'action' => 'query', 'list' => 'logevents', 'letype' => 'newusers', 'leprop' => 'title|ids', 'lelimit' => '5', )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (append_array ($xml_contents_array, array (), array ('api', 'query', 'logevents', 'item'), $newusers_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } foreach ($newusers_array as $newuser_array) { if (append_array ($newuser_array, array ('title', 'logid'), array ('@attributes'), $newuser_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (in_array ($newuser_array['logid'], $id_array, true) == true) { continue; } msg ($id_array[] = $newuser_array['logid']); $redlink = false; $newuser_array['title'] = str_replace ('User:', 'User talk:', $newuser_array['title']); if (wikiput_redlink ($cookie, $edittoken, $newuser_array['title'], $redlink) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if ($redlink == true) { if (wikicall_edit ($cookie, $edittoken, $newuser_array['title'], 'welcome!', array ('text' => '{{welcome}}~~~~', 'createonly' => 'createonly')) === false) { return false; } else { msg ($newuser_array['title']); } } } return true; } function blockedusers ($cookie, $edittoken, &$id_array) { msg (chr (10) . 'blockedusers'); $blockedusers_array = array (); $xml_contents_array = wikiget_contents ('', array ( 'action' => 'query', 'list' => 'logevents', 'letype' => 'block', 'lelimit' => '5', 'leprop' => 'title|type|ids', )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (append_array ($xml_contents_array, array (), array ('api', 'query', 'logevents', 'item'), $blockedusers_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } foreach ($blockedusers_array as $blockeduser_array) { if (append_array ($blockeduser_array, array ('title', 'action', 'logid'), array ('@attributes'), $blockeduser_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (in_array ($blockeduser_array['logid'], $id_array, true) == true) { continue; } msg ($id_array[] = $blockeduser_array['logid']); if ($blockeduser_array['action'] != 'block') { continue; } $xml_contents_array = wikiget_contents ('', array ( 'action' => 'query', 'list' => 'users', 'ususers' => str_replace ('User:', '', $blockeduser_array['title']), 'usprop' => 'editcount|blockinfo', )); if (append_array ($xml_contents_array, array ('editcount', 'blockedby'), array ('api', 'query', 'users', 'user', '@attributes'), $blockeduser_array) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (isset ($blockeduser_array['blockedby']) === false) { continue; } $file_contents = wikiget_contents ('', array ( 'action' => 'query', 'prop' => 'revisions', 'titles' => $blockeduser_array['title'], 'rvprop' => 'content', ), 'dbg'); if ($file_contents === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (stripos ($file_contents, 'banned') === false) { if (wikicall_edit ($cookie, $edittoken, $blockeduser_array['title'], 'banned: editcount=' . $blockeduser_array['editcount'], array ('prependtext' => '{{banned}}')) === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } else { msg ($blockeduser_array['title']); } } } return true; } function recentchanges ($cookie, $edittoken, &$id_array) { msg (chr (10) . 'recentchanges'); $recentchanges_array = array (); $xml_contents_array = wikiget_contents ($cookie, array ( 'action' => 'query', 'list' => 'recentchanges', 'rcnamespace' => '0', 'rcdir' => 'newer', 'rcprop' => 'user|comment|parsedcomment|flags|timestamp|title|ids|sizes|redirect|patrolled|loginfo|tags', 'rcdir' => 'older', 'rctype' => 'edit', 'rclimit' => 20, )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if (append_array ($xml_contents_array, array (), array ('api', 'query', 'recentchanges', 'rc'), $recentchanges_array) == false) { return alert (__FILE__, __FUNCTION__, __LINE__); } foreach ($recentchanges_array as $recentchange_array) { if (append_array ($recentchange_array, array ('title', 'user', 'rcid', 'oldlen', 'newlen'), array ('@attributes'), $recentchange_array) == false) { return alert (__FILE__, __FUNCTION__, __LINE__); } if ($recentchange_array['newlen'] != 0 || in_array ($recentchange_array['rcid'], $id_array, true) == true) { continue; } msg ($id_array[] = $recentchange_array['rcid']); if (wikiput_userinfo ($cookie, $recentchange_array['user'], $recentchange_userinfo) === false) { alert (__FILE__, __FUNCTION__, __LINE__); continue; } if ($recentchange_array['user'] != 'Schnookums' && ($recentchange_userinfo['days'] > 3 || $recentchange_userinfo['editcount'] > 20)) { continue; } $recentchange_rollbacktoken = ''; if (wikiput_rollbacktoken ($cookie, $edittoken, $recentchange_array['title'], $recentchange_rollbacktoken) === false) { alert (__FILE__, __FUNCTION__, __LINE__); continue; } if (wikicall_rollback ($cookie, $recentchange_array['title'], $recentchange_array['user'], $recentchange_rollbacktoken) === false) { alert (__FILE__, __FUNCTION__, __LINE__); continue; } //if (wikicall_blockuser ($cookie, $recentchange_array['user'], '1 year', 'BLANKING IN PROGRESS') === false) { //return alert (__FILE__, __FUNCTION__, __LINE__); //} msg ($recentchange_array['user'] . ' blanked ' . $recentchange_array['title']); } return true; } function reviewusers ($cookie, $edittoken, $users) { foreach ($users as $user) { $user_array = array (); $xml_contents_array = wikiget_contents ($cookie, array ( 'action' => 'query', 'list' => 'recentchanges', 'rcnamespace' => '0', 'rcdir' => 'newer', 'rcprop' => 'user|comment|parsedcomment|flags|timestamp|title|ids|sizes|redirect|patrolled|loginfo|tags', 'rcdir' => 'older', 'rctype' => 'edit', 'rclimit' => 20, )); if ($xml_contents_array === false) { return alert (__FILE__, __FUNCTION__, __LINE__); } } $id_array = array (); $wiki_reviewusers = array ('User:Schnookums'); while (1) { $COMMON_GET_CONTENTS = 0; $wiki_logintoken = ''; $wiki_edittoken = ''; if (wikiput_logintoken ($wiki_cookie, $wiki_username, $wiki_pwd, $wiki_logintoken) !== false) { if (wikiput_edittoken ($wiki_cookie, $wiki_logintoken, $wiki_username, $wiki_edittoken) !== false) { reviewusers ($wiki_cookie, $wiki_edittoken, $wiki_reviewusers); if (recentchanges ($wiki_cookie, $wiki_edittoken, $id_array) !== false) { if (blockedusers ($wiki_cookie, $wiki_edittoken, $id_array) !== false) { if (newusers ($wiki_cookie, $wiki_edittoken, $id_array) !== false) { // } } } } wikicall_logout ($wiki_cookie); } msg (chr (10) . 'http requests: ' . $COMMON_GET_CONTENTS); for ($x = 0; $x < 15; $x++) { if ($x == 0) { msg (chr (10) . 'z'); } else { msg ('z'); } sleep (1); } } ?>