This is an old revision of this page, as edited by ClueBot (talk | contribs) at 07:23, 24 July 2007 (Automated source upload.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 07:23, 24 July 2007 by ClueBot (talk | contribs) (Automated source upload.)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)The following is automatically generated by ClueBot.
Source to ClueBot
<?PHP
class http {
private $ch;
private $uid;
function data_encode ($data, $keyprefix = "", $keypostfix = "") {
assert( is_array($data) );
$vars=null;
foreach($data as $key=>$value) {
if(is_array($value)) $vars .= $this->data_encode($value, $keyprefix.$key.$keypostfix.urlencode(""));
else $vars .= $keyprefix.$key.$keypostfix."=".urlencode($value)."&";
}
return $vars;
}
function __construct () {
$this->ch = curl_init();
$this->uid = dechex(rand(0,99999999));
curl_setopt($this->ch,CURLOPT_COOKIEJAR,'/tmp/cluewikibot.cookies.'.$this->uid.'.dat');
curl_setopt($this->ch,CURLOPT_COOKIEFILE,'/tmp/cluewikibot.cookies.'.$this->uid.'.dat');
}
function post ($url,$data) {
curl_setopt($this->ch,CURLOPT_URL,$url);
curl_setopt($this->ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($this->ch,CURLOPT_MAXREDIRS,10);
curl_setopt($this->ch,CURLOPT_HEADER,0);
curl_setopt($this->ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($this->ch,CURLOPT_TIMEOUT,30);
curl_setopt($this->ch,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($this->ch,CURLOPT_POST,1);
curl_setopt($this->ch,CURLOPT_POSTFIELDS, substr($this->data_encode($data), 0, -1) );
return curl_exec($this->ch);
}
function get ($url) {
curl_setopt($this->ch,CURLOPT_URL,$url);
curl_setopt($this->ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($this->ch,CURLOPT_MAXREDIRS,10);
curl_setopt($this->ch,CURLOPT_HEADER,0);
curl_setopt($this->ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($this->ch,CURLOPT_TIMEOUT,30);
curl_setopt($this->ch,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($this->ch,CURLOPT_HTTPGET,1);
return curl_exec($this->ch);
}
function __destruct () {
curl_close($this->ch);
@unlink('/tmp/cluewikibot.cookies.'.$this->uid.'.dat');
}
}
class wikipediaquery {
private $http;
private $queryurl = 'http://en.wikipedia.org/w/query.php';
function __construct () {
global $__wp__http;
if (!isset($__wp__http)) {
$__wp__http = new http;
}
$this->http = &$__wp__http;
}
function getpage ($page) {
$ret = unserialize($this->http->get($this->queryurl.'?what=content&format=php&titles='.urlencode($page)));
foreach ($ret as $page) {
return $page;
}
}
}
class wikipediaapi {
private $http;
private $apiurl = 'http://en.wikipedia.org/w/api.php';
function __construct () {
global $__wp__http;
if (!isset($__wp__http)) {
$__wp__http = new http;
}
$this->http = &$__wp__http;
}
function login ($user,$pass) {
$this->http->post($this->apiurl.'?action=login',array('lgname' => $user, 'lgpassword' => $pass));
}
function recentchanges ($count = 10,$namespace = null,$dir = 'older',$ts = null) {
$append = ;
if ($ts != null) { $append .= '&rcstart='.urlencode($ts); }
$append .= '&rcdir='.urlencode($dir);
if ($namespace != null) { $append .= '&rcnamespace='.urlencode($namespace); }
$x = $this->http->get($this->apiurl.'?action=query&list=recentchanges&rcprop=user|comment|flags|timestamp|title|ids|sizes&format=php&rclimit='.$count.$append);
$x = unserialize($x);
return $x;
}
}
class wikipediaindex {
private $http;
private $indexurl = 'http://en.wikipedia.org/search/';
function __construct () {
global $__wp__http;
if (!isset($__wp__http)) {
$__wp__http = new http;
}
$this->http = &$__wp__http;
}
function post ($page,$data,$summery = ) {
global $user;
$html = $this->http->get($this->indexurl.'?title='.urlencode($page).'&action=edit');
if (preg_match('/'.preg_quote(,'/').'/i',$html)) { return false; } /* Honor the bots flags */
if (preg_match('/'.preg_quote(,'/').'/i',$html)) { return false; }
if (preg_match('/'.preg_quote(,'/').'/i',$html)) { return false; }
if (preg_match('/'.preg_quote(,'/').'/i',$html,$m)) { if (in_array(explode(',',$m),$user)) { return false; } } /* /Honor the bots flags */
if (!preg_match('/'.preg_quote($user,'/').'/i',$html)) { return false; } /* We need to be logged in */
if (preg_match('/'.preg_quote('You have new messages','/').'/i',$html)) { return false; } /* Check talk page */
$wpq = new wikipediaquery;
if (!preg_match('/(yes|enable|true)/i',$wpq->getpage('User:'.$user.'/Run'))) { return false; } /* Check /Run page */
return $this->forcepost($page,$data,$summery); /* Go ahead and post. */
}
function forcepost ($page,$data,$summery = ) {
$post = ;
$post = ;
$post = $data;
$post = $summery;
$html = $this->http->get($this->indexurl.'?title='.urlencode($page).'&action=edit');
preg_match('|\<input type\=\\\'hidden\\\' value\=\"(.*)\" name\=\"wpStarttime\" /\>|U',$html,$m);
$post = $m;
preg_match('|\<input type\=\\\'hidden\\\' value\=\"(.*)\" name\=\"wpEdittime\" /\>|U',$html,$m);
$post = $m;
preg_match('|\<input type\=\\\'hidden\\\' value\=\"(.*)\" name\=\"wpEditToken\" /\>|U',$html,$m);
$post = $m;
preg_match('|\<input name\=\"wpAutoSummary\" type\=\"hidden\" value\=\"(.*)\" /\>|U',$html,$m);
$post = $m;
$this->http->post($this->indexurl.'?title='.urlencode($page).'&action=submit',$post);
}
}
$wpapi = new wikipediaapi;
$wpq = new wikipediaquery;
$wpi = new wikipediaindex;
include 'wikibot.config.php';
$wpapi->login($user,$pass);
$wpi->post('User:'.$user.'/Source','The following is automatically generated by '.$user.".\n\n\n\n==Source to ".$user."==\n\n
".file_get_contents(__FILE__)."
\n\n\n\nClueBot 07:23, 24 July 2007 (UTC)",
'Automated source upload.'); /* Our source code */
$rc = $wpapi->recentchanges(500);
$lasttime = $rc;
$pipe = fopen('thepipe','w');
while (1) {
$rc = $wpapi->recentchanges(500,0,'newer',$lasttime);
foreach ($rc as $change) {
if (($change - $change) <= -5000) {
echo 'Possible vandalism: '.$change.' changed by '.$change.' deleting '.($change - $change).' characters on '.$change.".\n";
fwrite($pipe,'http://en.wikipedia.org/search/?title='.urlencode($change).'&action=history'."\n");
}
$lasttime = $change;
}
sleep(30);
}
?>
ClueBot 07:23, 24 July 2007 (UTC)