MediaWiki:Gadget-CheckRCForm.js
Zur Navigation springen
Zur Suche springen
Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Gehe zu Menü → Einstellungen (Opera → Einstellungen auf dem Mac) und dann auf Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien.
addOnloadHook( function () { if ( window.wgUserName ) { if ( wgUserName === 'WWWIG' || wgUserName === 'Torsten' || wgUserName === 'WikiWatcher' ) { LoadCheckRCForm(); } } }); var t_wikiurl = wgServer + wgScriptPath + '/api.php'; var t_Files = new Array(); var t_FilestoCheck = new Array(); var t_UserstoCheck = new Array(); var t_processnext = 0; var t_restartintervall = 120*1000; var t_dblmsg = true; t_blackwordlist = new Array(); t_whitewordlist = new Array(); t_CheckBadWordfound = ''; function LoadCheckRCForm() { if ( document.getElementById( 'InsertCheckRCForm' ) ) { out = '<form method="get" style="width:100%" name="TemCatGenForm">' + '<fieldset><legend>RecentChanges-Check</legend>' + '<div style="margin-top:.5em; margin-left:1em; margin-right:1em;">' + '<p><input type="button" value="Starte RC-Check" ' + 'title="" onClick="GetBadWordLists()"> ' + '</p>' + '<label for="Status" style="vertical-align:top;">Status:</label>' + '<p id="Status" style="border: 1px solid #aaa; padding:.5em;" > ...</p>' + '<div id="PreviewForm"></div>' + '<div id="InsertRCForm"></div>' + '</div></fieldset></form>'; document.getElementById( 'InsertCheckRCForm' ).innerHTML = out; } } function GetBadWordLists() { window.setTimeout( "GetBadWordLists()", t_restartintervall ); t_FilesToCheckString = 'MediaWiki:Spam-BlackList|MediaWiki:Spam-WhiteList'; var t_parameters = '?action=query&format=json&prop=revisions&rvprop=ids|content&titles=' + encodeURIComponent( t_FilesToCheckString ) + ''; var t_http_req = null; if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();} else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");} t_http_req.open("POST", t_wikiurl + t_parameters, true); t_dblmsg = true; t_http_req.onreadystatechange = function() { if(t_http_req.readyState != 4) { if ( t_dblmsg ) { document.getElementById( 'Status' ).innerHTML = '<i>BadWord-Listen werden angefordert</i> ('+GetTimeStamp()+') ...'; t_dblmsg = false; } } if(t_http_req.readyState == 4 && t_http_req.status == 200) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>BadWord-Listen erhalten</i> ('+GetTimeStamp()+') ...'; GotBadWordLists( eval("(" + t_http_req.responseText + ")"), t_http_req.responseText ); } } t_http_req.send(null); } function GotBadWordLists( queryData, rawData ) { if ( queryData.query && queryData.query.pages ) { for ( var t_Page in queryData.query.pages ) { if ( queryData.query.pages[t_Page].pageid ) { if ( queryData.query.pages[t_Page].revisions ) { if ( queryData.query.pages[t_Page].title == 'MediaWiki:Spam-BlackList' ) { t_blackwordlist = String( queryData.query.pages[t_Page].revisions[0]['*'] ).split( '\n' ); //document.getElementById( 'Status' ).innerHTML += '<br>' + 'BlackList-Inhalt ('+GetTimeStamp()+')<br>' + t_blackwordlist.join("/"); } if ( queryData.query.pages[t_Page].title == 'MediaWiki:Spam-WhiteList' ) { t_whitewordlist = String( queryData.query.pages[t_Page].revisions[0]['*'] ).split( '\n' ); //document.getElementById( 'Status' ).innerHTML += '<br>' + 'WhiteList-Inhalt ('+GetTimeStamp()+')<br>' + t_whitewordlist.join("/"); } } } } } CheckRC(); } function CheckRC() { var t_parameters = '?action=query&format=json&list=recentchanges&rclimit=100&rctype=new|edit&rcprop=user|comment|flags|timestamp|title|ids|sizes'; var t_http_req = null; if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();} else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");} t_http_req.open("GET", t_wikiurl + t_parameters, true); t_dblmsg = true; t_http_req.onreadystatechange = function() { if(t_http_req.readyState != 4) { if ( t_dblmsg ) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>RC-Liste wird angefordert</i> ('+GetTimeStamp()+') ...'; t_dblmsg = false; } } if(t_http_req.readyState == 4 && t_http_req.status == 200) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>RC-Liste erhalten</i> ('+GetTimeStamp()+') ...'; GotRC( eval("(" + t_http_req.responseText + ")"), t_http_req.responseText ); } } t_http_req.send(null); } function GotRC( queryData, rawData ) { // document.getElementById( 'Status' ).innerHTML += '<br>' + rawData; //.substr(0, 500); t_Files.splice( 0, t_Files.length ); t_FilestoCheck.splice( 0, t_FilestoCheck.length ); t_UserstoCheck.splice( 0, t_UserstoCheck.length ); t_processnext = 0; if ( queryData.query && queryData.query.recentchanges ) { for ( t_Change = 0; t_Change < queryData.query.recentchanges.length; t_Change++ ) { if ( queryData.query.recentchanges[t_Change].type == 'new' ) { if ( typeof queryData.query.recentchanges[t_Change].anon != 'undefined' ) { if ( CheckBadWord( queryData.query.recentchanges[t_Change].comment, '' ) ) { var t_File = new Array( queryData.query.recentchanges[t_Change].title, queryData.query.recentchanges[t_Change].revid, queryData.query.recentchanges[t_Change].user, queryData.query.recentchanges[t_Change].comment, t_CheckBadWordfound ); t_Files.push( t_File ); } else { document.getElementById( 'Status' ).innerHTML += '<br>[' + queryData.query.recentchanges[t_Change].title+']'; var t_File = new Array( queryData.query.recentchanges[t_Change].title, queryData.query.recentchanges[t_Change].revid, queryData.query.recentchanges[t_Change].user, queryData.query.recentchanges[t_Change].comment ); t_FilestoCheck.push( t_File ); } } else { var t_File = new Array( queryData.query.recentchanges[t_Change].title, queryData.query.recentchanges[t_Change].revid, queryData.query.recentchanges[t_Change].user, queryData.query.recentchanges[t_Change].comment ); t_UserstoCheck.push( t_File ); // document.getElementById( 'Status' ).innerHTML += '<br>* Check [' +queryData.query.recentchanges[t_Change].title +']'; } } else { document.getElementById( 'Status' ).innerHTML += '<br>CheckEdit[' + queryData.query.recentchanges[t_Change].title+']'; } } } if ( t_Files.length == 0 && t_FilestoCheck.length == 0 && t_UserstoCheck.length == 0 ) { document.getElementById( 'Status' ).innerHTML += '<br>' + 'Prüfung durchgeführt ('+GetTimeStamp()+')<hr style="margin-top:1em;">'; } else { if ( t_FilestoCheck.length == 0 ) { if ( t_UserstoCheck.length == 0 ) { document.getElementById( 'InsertRCForm' ).innerHTML = '<hr style="margin-top:1em;">('+GetTimeStamp()+')<ul>'; CheckTitles(); } else { PreCheckUsers(); } } else { if ( t_UserstoCheck.length == 0 ) { PreCheckTitles(); } else { PreCheckUsers(); } } } } function PreCheckTitles() { t_FilesToCheckString = ''; for ( t_FiletoCheck = 0; t_FiletoCheck < t_FilestoCheck.length; t_FiletoCheck++ ) { if ( t_FilesToCheckString != '' ) { t_FilesToCheckString += '|'; } t_FilesToCheckString += t_FilestoCheck[t_FiletoCheck][0]; } var t_parameters = '?action=query&format=json&prop=revisions&rvprop=ids|timestamp|user|comment|content&titles=' + encodeURIComponent( t_FilesToCheckString ) + ''; var t_http_req = null; if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();} else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");} t_http_req.open("GET", t_wikiurl + t_parameters, true); t_dblmsg = true; t_http_req.onreadystatechange = function() { if(t_http_req.readyState != 4) { if ( t_dblmsg ) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>Datei-Inhalt</i> wird angefordert ('+GetTimeStamp()+') ...'; t_dblmsg = false; } } if(t_http_req.readyState == 4 && t_http_req.status == 200) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>Datei-Inhalt erhalten</i> ('+GetTimeStamp()+') ...'; PreCheckTitlesProcess( eval("(" + t_http_req.responseText + ")"), t_http_req.responseText ); } } t_http_req.send(null); } function PreCheckTitlesProcess( queryData, rawData ) { document.getElementById( 'Status' ).innerHTML += '<br>' + rawData.substr(0, 200); if ( queryData.query && queryData.query.pages ) { for ( var t_Page in queryData.query.pages ) { if ( queryData.query.pages[t_Page].pageid ) { if ( queryData.query.normalized ) { for ( t_PageNorm= 0; t_PageNorm < queryData.query.normalized.length; t_PageNorm++ ) { if ( queryData.query.normalized[t_PageNorm].to == queryData.query.pages[t_Page].title ) { if ( queryData.query.pages[t_Page].revisions ) { if ( CheckBadWord( queryData.query.pages[t_Page].revisions[0]['*'], 'http:' ) ) { var t_File = new Array( queryData.query.pages[t_Page].title, queryData.query.pages[t_Page].revisions[0].revid, queryData.query.pages[t_Page].revisions[0].user, queryData.query.pages[t_Page].revisions[0]['*'], t_CheckBadWordfound ); t_Files.push( t_File ); } } } } } else if ( queryData.query.pages[t_Page].revisions ) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<b>Prüfe Datei-Inhalt</b> ('+GetTimeStamp()+')<br>' + String( queryData.query.pages[t_Page].revisions[0]['*'] ).substr(0, 500); if ( CheckBadWord( queryData.query.pages[t_Page].revisions[0]['*'], 'http:' ) ) { var t_File = new Array( queryData.query.pages[t_Page].title, queryData.query.pages[t_Page].revisions[0].revid, queryData.query.pages[t_Page].revisions[0].user, queryData.query.pages[t_Page].revisions[0]['*'], t_CheckBadWordfound ); t_Files.push( t_File ); } } } } } if ( t_Files.length == 0 ) { document.getElementById( 'Status' ).innerHTML += '<br>' + 'Prüfung durchgeführt ('+GetTimeStamp()+')<hr style="margin-top:1em;">'; } else { document.getElementById( 'InsertRCForm' ).innerHTML = '<hr style="margin-top:1em;">('+GetTimeStamp()+')<ul>'; CheckTitles(); } } function PreCheckUsers() { t_UsersToCheckString = ''; for ( t_UsertoCheck = 0; t_UsertoCheck < t_UserstoCheck.length; t_UsertoCheck++ ) { if ( String( '|' + t_UsersToCheckString + '|' ).indexOf( '|' + t_UserstoCheck[t_UsertoCheck][2] + '|' ) == -1 ) { if ( t_UsersToCheckString != '' ) { t_UsersToCheckString += '|'; } t_UsersToCheckString += t_UserstoCheck[t_UsertoCheck][2]; } } document.getElementById( 'Status' ).innerHTML += '<br><b>PreCheckUsers:</b> ' + t_UsersToCheckString; var t_parameters = '?action=query&format=json&list=users&usprop=groups|editcount|registration&ususers=' + encodeURIComponent( t_UsersToCheckString ) + ''; var t_http_req = null; if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();} else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");} t_http_req.open("GET", t_wikiurl + t_parameters, true); t_dblmsg = true; t_http_req.onreadystatechange = function() { if(t_http_req.readyState != 4) { if ( t_dblmsg ) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>User-Info wird angefordert</i> ('+GetTimeStamp()+') ...'; t_dblmsg = false; } } if(t_http_req.readyState == 4 && t_http_req.status == 200) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>User-Info erhalten</i> ('+GetTimeStamp()+') ...'; PreCheckUsersProcess( eval("(" + t_http_req.responseText + ")"), t_http_req.responseText ); } } t_http_req.send(null); } function PreCheckUsersProcess( queryData, rawData ) { document.getElementById( 'Status' ).innerHTML += '<br>' + rawData; if ( queryData.query && queryData.query.users ) { for ( var t_User in queryData.query.users ) { for ( t_UsertoCheck = 0; t_UsertoCheck < t_UserstoCheck.length; t_UsertoCheck++ ) { if ( t_UserstoCheck[t_UsertoCheck][2] == queryData.query.users[t_User].name && queryData.query.users[t_User].editcount < 10 ) { if ( CheckBadWord( t_UserstoCheck[t_UsertoCheck][3], '' ) ) { var t_File = new Array( t_UserstoCheck[t_UsertoCheck][0], t_UserstoCheck[t_UsertoCheck][1], t_UserstoCheck[t_UsertoCheck][2], t_UserstoCheck[t_UsertoCheck][3], t_CheckBadWordfound ); t_Files.push( t_File ); } else { document.getElementById( 'Status' ).innerHTML += '<br><b>USER:</b> ' + queryData.query.users[t_User].name + ' [' + t_UserstoCheck[t_UsertoCheck][0] + ']'; var t_File = new Array( t_UserstoCheck[t_UsertoCheck][0], t_UserstoCheck[t_UsertoCheck][1], t_UserstoCheck[t_UsertoCheck][2], t_UserstoCheck[t_UsertoCheck][3] ); t_FilestoCheck.push( t_File ); } } } } } if ( t_Files.length == 0 && t_FilestoCheck.length == 0 ) { document.getElementById( 'Status' ).innerHTML += '<br>' + 'Prüfung durchgeführt ('+GetTimeStamp()+')<hr style="margin-top:1em;">'; } else { if ( t_FilestoCheck.length == 0 ) { document.getElementById( 'InsertRCForm' ).innerHTML = '<hr style="margin-top:1em;">('+GetTimeStamp()+')<ul>'; CheckTitles(); } else { PreCheckTitles(); } } } function CheckTitles() { if ( t_processnext < t_Files.length ) { document.getElementById( 'InsertRCForm' ).innerHTML += '<li>' + t_Files[t_processnext][0]+'<br>'+t_Files[t_processnext][1]+ '<br>'+t_Files[t_processnext][2]+'<br>'+TransFormText( t_Files[t_processnext][3] )+ '<br>'+t_Files[t_processnext][4]+'</li>'; var t_parameters = '?action=query&format=json&prop=info|revisions&intoken=delete&titles=' + encodeURIComponent( t_Files[t_processnext][0] ) + ''; var t_http_req = null; if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();} else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");} t_http_req.open("GET", t_wikiurl + t_parameters, true); t_dblmsg = true; t_http_req.onreadystatechange = function() { if(t_http_req.readyState != 4) { if ( t_dblmsg ) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>Datei-Token wird angefordert</i> ('+GetTimeStamp()+') ...'; t_dblmsg = false; } } if(t_http_req.readyState == 4 && t_http_req.status == 200) { DeleteTitles( eval("(" + t_http_req.responseText + ")"), t_http_req.responseText ); } } t_http_req.send(null); } } function DeleteTitles ( queryData, rawData ) { if ( queryData ) { if ( queryData.query && queryData.query.pages ) { var t_token = ""; var t_timestamp = ""; var t_some_pages = queryData.query.pages; for ( var t_Page in t_some_pages ) { if ( t_some_pages[t_Page].edittoken ) { t_token = encodeURIComponent( t_some_pages[t_Page].edittoken ); } else if ( t_some_pages[t_Page].deletetoken ) { t_token = encodeURIComponent( t_some_pages[t_Page].deletetoken ); } if ( t_some_pages[t_Page].revisions ) { var t_some_revisions = t_some_pages[t_Page].revisions; for ( var i = 0; i < t_some_revisions.length; i++ ) { if (t_some_revisions[i].timestamp) { t_timestamp = t_some_revisions[i].timestamp; } } } document.getElementById( 'Status' ).innerHTML += '<br>' + t_some_pages[t_Page].starttimestamp; } t_summary = '&reason=' + encodeURIComponent( 'automatisch gelöscht' ); var t_parameters = '?action=delete&format=json&title=' + encodeURIComponent( t_some_pages[t_Page].title ) + t_summary + '&watch&basetimestamp=' + t_timestamp + '&token=' + t_token + '&bot=1'; var t_http_req = null; if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();} else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");} t_http_req.open("POST", t_wikiurl + t_parameters, true); t_dblmsg = true; t_http_req.onreadystatechange = function() { if( t_http_req.readyState != 4 ) { if ( t_dblmsg ) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<small>'+t_some_pages[t_Page].title+'</small><br><i>wird gelöscht</i> ('+GetTimeStamp()+') ...'; t_dblmsg = false; } } if( t_http_req.readyState == 4 && t_http_req.status == 200 ) { DeleteTitlesProcessed( eval("(" + t_http_req.responseText + ")" ), t_http_req.responseText ); } } t_http_req.send(null); } } } function CheckUsers() { if ( t_processnext < t_Files.length ) { var t_parameters = '?action=block&format=json&user=' + encodeURIComponent( t_Files[t_processnext][2] ) + '&gettoken'; var t_http_req = null; if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();} else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");} t_http_req.open("POST", t_wikiurl + t_parameters, true); t_dblmsg = true; t_http_req.onreadystatechange = function() { if(t_http_req.readyState != 4) { if ( t_dblmsg ) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>Benutzer-Token wird angefordert</i> ('+GetTimeStamp()+') ...'; t_dblmsg = false; } } if(t_http_req.readyState == 4 && t_http_req.status == 200) { BlockUsers( eval("(" + t_http_req.responseText + ")"), t_http_req.responseText ); } } t_http_req.send(null); } } function BlockUsers ( queryData, rawData ) { document.getElementById( 'Status' ).innerHTML += '<br>' + rawData; if ( queryData ) { if ( queryData.block && queryData.block.blocktoken ) { var t_token = queryData.block.blocktoken; var t_parameters = '?action=block&format=json&nocreate&anononly&expiry=' + encodeURIComponent('24 hours') + '&user=' + encodeURIComponent( t_Files[t_processnext][2] ) + '&reason=' + encodeURIComponent( 'spam (automatisch gesperrt)' ) + '&token=' + encodeURIComponent( t_token ); var t_http_req = null; if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();} else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");} t_http_req.open("POST", t_wikiurl + t_parameters, true); t_dblmsg = true; t_http_req.onreadystatechange = function() { if(t_http_req.readyState != 4) { if ( t_dblmsg ) { document.getElementById( 'Status' ).innerHTML += '<br>' + '<i>Benutzer wird gesperrt</i> ('+GetTimeStamp()+') ...'; t_dblmsg = false; } } if(t_http_req.readyState == 4 && t_http_req.status == 200) { DeleteTitlesProcessed( eval("(" + t_http_req.responseText + ")"), t_http_req.responseText ); } } t_http_req.send(null); } } } function DeleteTitlesProcessed( queryData, rawData ) { if ( queryData['delete'] ) { if ( queryData['delete'].title && queryData['delete'].reason ) { document.getElementById( 'Status' ).innerHTML += '<br>' + queryData['delete'].title + '<br>' + queryData['delete'].reason; t_processnext++; if ( t_processnext < t_Files.length ) { CheckTitles(); } else { t_processnext = 0; CheckUsers(); } } } else if ( queryData['block'] && queryData['block'].user ) { document.getElementById( 'Status' ).innerHTML += '<br>' + queryData['block'].user + ' wurde gesperrt ('+GetTimeStamp()+') '; t_processnext++; if ( t_processnext < t_Files.length ) { CheckUsers(); } } else { document.getElementById( 'Status' ).innerHTML += '<br>Unbekannter Fehler ' + rawData + '<br>('+GetTimeStamp()+')'; } if ( t_processnext >= t_Files.length ) { document.getElementById( 'InsertRCForm' ).innerHTML += '</ul>'; document.getElementById( 'Status' ).innerHTML += '<br>' + 'Prüfung durchgeführt ('+GetTimeStamp()+')<hr style="margin-top:1em;">'; } } function CheckBadWord( t_text, t_extra ) { t_CheckBadWordfound = ''; t_isblack_count = 0; var t_BadWord = ''; if ( t_text ) { for ( t_bWord = 1; t_bWord < t_blackwordlist.length; t_bWord++ ) { t_BadWord = String( t_blackwordlist[t_bWord] ); t_erg_bw = String( t_text.toUpperCase() ).indexOf( t_BadWord.replace(/\+/g, '').toUpperCase() ); if ( t_erg_bw != -1 ) { document.getElementById( 'Status' ).innerHTML += '<br>'+'<b>BadWord:</b> ('+t_BadWord+'/Pos: '+t_erg_bw+') in<br>['+TransFormText(String( t_text ).substr(0, 500))+']'; t_isblack = true; for ( t_wWord = 1; t_wWord < t_whitewordlist.length; t_wWord++ ) { t_erg_ww = String( t_text.toUpperCase() ).indexOf( String( t_whitewordlist[t_wWord] ).toUpperCase() ); if ( t_erg_ww == t_erg_bw ) { document.getElementById( 'Status' ).innerHTML += '<br>'+'WhiteWord ('+t_whitewordlist[t_wWord]+')'; t_isblack = false; } } t_erg_ex = 0; if ( t_extra != '' ) { t_erg_ex = String( t_text.toUpperCase() ).indexOf( String( t_extra ).toUpperCase() ); } if ( t_isblack == true && t_erg_ex != -1 ) { t_isblack_count++; t_CheckBadWordfound += '[' + t_BadWord + '] '; if ( t_isblack_count >= 2 || t_BadWord.substr( t_BadWord.length - 2 ) == '++' ) { return true; } } } } return false; } }