<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wikimirror.piraten.tools/wiki/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3AJan%2FProtectbot</id>
	<title>Benutzer:Jan/Protectbot - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wikimirror.piraten.tools/wiki/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3AJan%2FProtectbot"/>
	<link rel="alternate" type="text/html" href="https://wikimirror.piraten.tools/wiki/index.php?title=Benutzer:Jan/Protectbot&amp;action=history"/>
	<updated>2026-05-31T03:36:18Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Piratenwiki Mirror</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wikimirror.piraten.tools/wiki/index.php?title=Benutzer:Jan/Protectbot&amp;diff=55813644&amp;oldid=prev</id>
		<title>imported&gt;Jan am 18. März 2012 um 07:53 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wikimirror.piraten.tools/wiki/index.php?title=Benutzer:Jan/Protectbot&amp;diff=55813644&amp;oldid=prev"/>
		<updated>2012-03-18T07:53:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Dieser Bot schützt alle Seiten, die mit einem bestimmten Präfix (z. B. &amp;quot;Bundesparteitag 2012.1/Antragsportal/&amp;quot;) beginnen. Eine Liste der zu schützenden Seiten wird vorher angezeigt; es muss ein Benutzerkonto mit writeapi- und Seitenschutzrecht eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
Der folgende Code muss in eine Datei eingefügt und dann mit php ausgeführt werden. Falls SSL (Passwort verschlüsselt übertragen) richtig verwendet werden soll, muss in der Datei &amp;quot;trustedcerts.pem&amp;quot; eine Liste vertrauenswürdiger Zertifikate (im PEM-Format) liegen. Wenn man keinen Schutz gegen MitM-Angriffe haben will, kann man stattdessen auch $SECURE_SSL auf false setzen.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$API = 'https://wiki.piratenpartei.de/wiki/api.php';&lt;br /&gt;
$PARTEITAG = 'Bundesparteitag';&lt;br /&gt;
$JAHRESZAHL = '2012.1';&lt;br /&gt;
$PREFIX = &amp;quot;$PARTEITAG $JAHRESZAHL/Antragsportal/&amp;quot;;&lt;br /&gt;
$REASON = &amp;quot;Antragsseite&amp;quot;;&lt;br /&gt;
$SECURE_SSL = true;&lt;br /&gt;
&lt;br /&gt;
$DEBUG = false;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&lt;br /&gt;
curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;ProtectBot by Jan Schejbal&amp;quot;);&lt;br /&gt;
curl_setopt($ch, CURLOPT_POST, true);&lt;br /&gt;
&lt;br /&gt;
//curl_setopt($ch, CURLOPT_COOKIEJAR, &amp;quot;cookie.tmp.txt&amp;quot;);&lt;br /&gt;
curl_setopt($ch, CURLOPT_COOKIEFILE, &amp;quot;cookie.tmp.txt&amp;quot;);&lt;br /&gt;
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);&lt;br /&gt;
curl_setopt($ch, CURLOPT_MAXREDIRS, 7);&lt;br /&gt;
&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $SECURE_SSL);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $SECURE_SSL ? 2 : 0);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSLVERSION, 3);&lt;br /&gt;
curl_setopt($ch, CURLOPT_CAINFO, 'trustedcerts.pem');&lt;br /&gt;
&lt;br /&gt;
curl_setopt($ch, CURLOPT_URL, $API);&lt;br /&gt;
&lt;br /&gt;
// data: array von POST-vars&lt;br /&gt;
function fetch($data) {&lt;br /&gt;
	global $ch;&lt;br /&gt;
	global $DEBUG;&lt;br /&gt;
	&lt;br /&gt;
	$data['format'] = 'json';&lt;br /&gt;
	&lt;br /&gt;
	curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); // use this for urlencode encoding&lt;br /&gt;
	//curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // use this for multipart/form-data encoding&lt;br /&gt;
	&lt;br /&gt;
	if ($DEBUG) {&lt;br /&gt;
		echo &amp;quot;\n======================================================================\nRequesting:\n&amp;quot;;&lt;br /&gt;
		var_dump($data);&lt;br /&gt;
	}&lt;br /&gt;
	$response = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	if (!$response) die(&amp;quot;Could not get response from server&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if ($DEBUG) {&lt;br /&gt;
		echo &amp;quot;\n----------------------------------------------------------------------\nResponse:\n&amp;quot;;&lt;br /&gt;
		var_dump($response);&lt;br /&gt;
	}&lt;br /&gt;
	$decoded = json_decode($response,true);&lt;br /&gt;
	if ($DEBUG) {&lt;br /&gt;
		var_dump($decoded);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (!empty($decoded['error']['code'])) {&lt;br /&gt;
		echo &amp;quot;API error: &amp;quot;.$decoded['error']['code'].&amp;quot;\n&amp;quot;;&lt;br /&gt;
		if (!empty($decoded['error']['info'])) echo &amp;quot;  &amp;quot;.$decoded['error']['info'].&amp;quot;\n\n&amp;quot;;&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return $decoded;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$titles = array();&lt;br /&gt;
echo &amp;quot;Fetching list of titles...\n&amp;quot;;&lt;br /&gt;
$start = &amp;quot;&amp;quot;;&lt;br /&gt;
do {&lt;br /&gt;
	$result =  fetch(array('action' =&amp;gt; 'query', 'list' =&amp;gt; 'allpages', 'apprefix' =&amp;gt; $PREFIX, 'aplimit' =&amp;gt; 500, 'apfrom' =&amp;gt; $start));&lt;br /&gt;
	if (!isset($result['query']['allpages']) || !is_array($result['query']['allpages'])) die(&amp;quot;Unexpected response - missing page array&amp;quot;);&lt;br /&gt;
	foreach ($result['query']['allpages'] as $pagearray) {&lt;br /&gt;
		if (!isset($pagearray['title'])) die(&amp;quot;Unexpected response - missing title&amp;quot;);&lt;br /&gt;
		$titles[] = $pagearray['title'];&lt;br /&gt;
		echo &amp;quot;  &amp;quot;.$pagearray['title'].&amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	$continue = isset($result['query-continue']['allpages']['apfrom']);&lt;br /&gt;
	if ($continue) $start = $result['query-continue']['allpages']['apfrom'];&lt;br /&gt;
} while ($continue);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;\nThe &amp;quot;.count($titles).&amp;quot; page(s) listed above will be protected.\n&amp;quot;;&lt;br /&gt;
echo &amp;quot;To continue, enter your wiki login. To abort, press CTRL-C.\n&amp;quot;;&lt;br /&gt;
echo &amp;quot;(warning: your password will be shown on the screen)\n\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;username: &amp;quot;;&lt;br /&gt;
$username = trim(fgets(STDIN));&lt;br /&gt;
echo &amp;quot;password: &amp;quot;;&lt;br /&gt;
$password = trim(fgets(STDIN));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;\nLogging in as '$username'\n&amp;quot;;&lt;br /&gt;
$result =  fetch(array('action' =&amp;gt; 'login', 'lgname' =&amp;gt; $username, 'lgpassword'=&amp;gt; $password));&lt;br /&gt;
if (empty($result['login']['result'])) die(&amp;quot;Unexpected response to first login step&amp;quot;);&lt;br /&gt;
if ($result['login']['result'] != &amp;quot;Success&amp;quot;) {&lt;br /&gt;
	if ($result['login']['result'] != &amp;quot;NeedToken&amp;quot;) die(&amp;quot;Login failed: &amp;quot;.$result['login']['result']);&lt;br /&gt;
	if (empty($result['login']['token'])) die(&amp;quot;Login failed - could not get login token&amp;quot;);&lt;br /&gt;
	$result = fetch(array('action' =&amp;gt; 'login', 'lgname' =&amp;gt; $username, 'lgpassword'=&amp;gt; $password, 'lgtoken' =&amp;gt; $result['login']['token']));&lt;br /&gt;
	if (empty($result['login']['result']) || $result['login']['result'] != &amp;quot;Success&amp;quot;) die(&amp;quot;Login failed: &amp;quot;.$result['login']['result']);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Login successful, fetching token.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$result =  fetch(array('action' =&amp;gt; 'query', 'prop' =&amp;gt; 'info', 'intoken' =&amp;gt; 'protect', 'titles' =&amp;gt; 'Hauptseite'));&lt;br /&gt;
if (empty($result['query']['pages']) || !is_array($result['query']['pages'])) die(&amp;quot;Unexpected response when fetching token&amp;quot;);&lt;br /&gt;
$pagearray = array_pop($result['query']['pages']);&lt;br /&gt;
if (empty($pagearray['protecttoken'])) die(&amp;quot;Could not get token&amp;quot;);&lt;br /&gt;
$token = $pagearray['protecttoken'];&lt;br /&gt;
&lt;br /&gt;
foreach ($titles as $title) {&lt;br /&gt;
	echo &amp;quot;Protecting $title\n&amp;quot;;&lt;br /&gt;
	$result =  fetch(array('action' =&amp;gt; 'protect', 'title' =&amp;gt; $title, 'token' =&amp;gt; $token, 'protections' =&amp;gt; 'edit=sysop|move=sysop', 'reason' =&amp;gt; &amp;quot;[via Bot] - $REASON&amp;quot;)); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;\nFinished\n\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;Jan</name></author>
	</entry>
</feed>