SickRedStuff
Minecrafter
Disclaimer:
Dieses Script ist nur ein Workaround für den Fall dass die Verbindung zwischen MCSEU und eurem Server gestört ist. Es bietet keine Lösung dieses Problems: Wenn MCSEU dauerhaft nicht zu eurem Server verbinden kann solltet ihr das Problem beheben anstatt diesen Workaround zu nutzen! Der Sourcecode muss modifiziert werden um für euren individuellen Fall nutzbar zu sein, dafür müsst ihr wenigstens rudimentäre Kenntnisse in JS und PHP haben, ich supporte den Code hier nicht, möchte anderen die in Verlegenheit kommen so etwas basteln zu müssen nur etwas Zeit ersparen.
Hallo allerseits,
unser Server war bis vor kurzem für einige Tage nicht als online gelisted weil die Verbindung zwischen mcseu und uns blockiert war. Das heißt Votes wurden zwar weiterhin in den Logs hier bei mcseu gespeichert, aber nicht versendet. Hunderte votes manell einzutragen ist nicht nur lästig, es ist auch mit Zeitverzögerung verbunden = Spieler unzufrieden. Daher hab ich ein kleines Script gebastelt was dieses manuelle eintragen automatisiert. Mittlerweile ist das Problem glücklicherweise beseitigt, dieser Thread wird aber vielleicht anderen denen das gleiche widerfährt hilfreich sein:
Das Script ist nur in Google Chrome mit Tampermonkey getestet, hat da wie gesagt gute Dienste erwiesen. Es kann:
- Die Votes aus der Logseite von mcseu auslesen
- Neue Votes an eine Remote Seite via get request senden (dort kann man dann die votes selbst eintragen)
- Erkennt wenn ein neuer Tag angefangen hat
- Autrefresh jede Minute (Neue Votes werden also minütlich erkannt)
- Relog auf MCSEU wenn die Session abgelaufen ist (kann also 24/7 durchlaufen)
Für den Remoteteil (das Eintragen der Votes auf dem eigenen Server) habe ich https://github.com/Spirit55555/PHP-Minecraft/blob/master/MinecraftVotifier.php verwendet, das funktioniert einwandfrei und ist mit etwas PHP kenntnissen ruckzuck gebastelt. (Cross origin header nicht vergessen)
PHP Beispiel Snippit
Das Tampermonkey Script sieht wie folgt aus:
Alles Quick and dirty aber is ja nur nen Workaround und wie gesagt, hat fast 3 Tage super funktioniert.
Natürlich müssen in den Scripts noch ein paar anpassungen gemacht werden, aber denke diejenigen die diese Scripts nutzen können auch sehen wo da was rein muss. Alle anderen brauchen es vermutlich nicht.
Dieses Script ist nur ein Workaround für den Fall dass die Verbindung zwischen MCSEU und eurem Server gestört ist. Es bietet keine Lösung dieses Problems: Wenn MCSEU dauerhaft nicht zu eurem Server verbinden kann solltet ihr das Problem beheben anstatt diesen Workaround zu nutzen! Der Sourcecode muss modifiziert werden um für euren individuellen Fall nutzbar zu sein, dafür müsst ihr wenigstens rudimentäre Kenntnisse in JS und PHP haben, ich supporte den Code hier nicht, möchte anderen die in Verlegenheit kommen so etwas basteln zu müssen nur etwas Zeit ersparen.
Hallo allerseits,
unser Server war bis vor kurzem für einige Tage nicht als online gelisted weil die Verbindung zwischen mcseu und uns blockiert war. Das heißt Votes wurden zwar weiterhin in den Logs hier bei mcseu gespeichert, aber nicht versendet. Hunderte votes manell einzutragen ist nicht nur lästig, es ist auch mit Zeitverzögerung verbunden = Spieler unzufrieden. Daher hab ich ein kleines Script gebastelt was dieses manuelle eintragen automatisiert. Mittlerweile ist das Problem glücklicherweise beseitigt, dieser Thread wird aber vielleicht anderen denen das gleiche widerfährt hilfreich sein:
Das Script ist nur in Google Chrome mit Tampermonkey getestet, hat da wie gesagt gute Dienste erwiesen. Es kann:
- Die Votes aus der Logseite von mcseu auslesen
- Neue Votes an eine Remote Seite via get request senden (dort kann man dann die votes selbst eintragen)
- Erkennt wenn ein neuer Tag angefangen hat
- Autrefresh jede Minute (Neue Votes werden also minütlich erkannt)
- Relog auf MCSEU wenn die Session abgelaufen ist (kann also 24/7 durchlaufen)
Für den Remoteteil (das Eintragen der Votes auf dem eigenen Server) habe ich https://github.com/Spirit55555/PHP-Minecraft/blob/master/MinecraftVotifier.php verwendet, das funktioniert einwandfrei und ist mit etwas PHP kenntnissen ruckzuck gebastelt. (Cross origin header nicht vergessen)
PHP Beispiel Snippit
PHP:
header("Access-Control-Allow-Origin: *");
$key = "YOUROWNCHOOSENKEY";
if(!isset($_GET['key']) || !isset($_GET['un']))
die('key or un not set');
$key = $_GET['key'];
if($key != $key)
die('wrong key');
$username = $_GET['un'];
if(!isset($key) || !isset($username))
die('malformed usage');
$type = "_workaround";
require __DIR__ . 'MinecraftVotifier.php';
$votifier = new MinecraftVotifier('PUBLICRSAKEY',
'SERVERADRESSE', 'PORT', $type);
Das Tampermonkey Script sieht wie folgt aus:
Javascript:
// ==UserScript==
// @name Minecraft-Server.eu Votifier Workaround
// @namespace mcseuworkaround
// @version 0.1
// @description Check votes in logs on minecraft-server.eu and Send Votes to this tool
// @author SickRedStuff (minecraft-asylum.de)
// @match https://minecraft-server.eu/admin/votifierlog/index/SERVERID/
// @match https://minecraft-server.eu/admin/votifierlog/index/SERVERID/0
// @match https://minecraft-server.eu/admin/votifierlog/index/SERVERID/1
// @match https://minecraft-server.eu/admin/votifierlog/index/SERVERID/2
// @match https://minecraft-server.eu/admin/server/notLoggedIn
// @grant none
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// ==/UserScript==
var servereu_username = "MCSEUUSERNAME";
var servereu_password = "MCSEUPASSWORD";
var servereu_url = "https://minecraft-server.eu/admin/votifierlog/index/SERVERID/";
var servereu_url_notloggedin = "https://minecraft-server.eu/admin/server/notLoggedIn";
var VOTETOOLVOTEKEY = "YOUROWNSELECTEDKEY";
var votetoolurl = "URLZURPHPDATEI";
var votes;
Date.prototype.yyyymmdd = function() {
var yyyy = this.getFullYear().toString();
var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
var dd = this.getDate().toString();
return yyyy + (mm[1]?mm:"0"+mm[0]) + (dd[1]?dd:"0"+dd[0]); // padding
};
function loadVotes(key){
var string = localStorage[key];
if(string === undefined || string === null)
return {};
console.log("string",string);
return JSON.parse(string);
}
function saveVotes(key, votes){
console.log("saving votes");
console.log(votes);
localStorage.setItem(key, JSON.stringify(votes));
}
$(document).ready(function(){
//Check if logged out..
var loginform = $('#navbar_loginform');
if(loginform.length){
$('#ctrl_pageLogin_login').val(servereu_username);
$('#ctrl_pageLogin_password').val(servereu_password);
loginform.find('button').click();
return;
}
var date = new Date().yyyymmdd();
votes = loadVotes(date);
if(votes == null) votes = {};
console.log("votes",votes);
var onpage = [];
var alreadysent = false;
$('#tableVoteLog tbody tr td:nth-child(2)').each(function(){
var votedate = $(this).parent('tr').find('td:nth-child(4)').text().trim().split(' ')[0].replace(/-/g, '');
var issent = $(this).parent('tr').find('td:nth-child(6)').text().trim();
if(votedate == date){
if(issent == "noch nicht versendet") {
onpage.push($(this).text().trim());
}
else{
console.log("is already sent by mc-server.eu: " + issent);
alreadysent = true;
}
}
else{
console.log("different date: ", date, votedate);
}
});
console.log("onpage", onpage);
if(onpage.length == 0){
if(alreadysent){
alert("Service is up and working");
}
if(location.href = servereu_url_notloggedin){
location.href = servereu_url;
}
}
var newones = [];
for(var i = 0; i < onpage.length; i++){
if(votes[onpage[i]] === undefined){
newones.push(onpage[i]);
}
}
console.log("newones", newones);
var addVotesHtml = '';
for(var i = 0; i < newones.length; i++){
var tryInsertByRequest = function(){
var username = newones[i];
$.get( votetoolurl, { key: VOTETOOLVOTEKEY, un: username } )
.done(function( data ) {
if(typeof data == 'string' && data.trim() == 'success'){
votes[username] = true;
saveVotes(date, votes);
console.log("added vote for " + username + " with _workaround request");
}
else{
addVotesHtml += 'new vote from: ' + newones[i] + '<br>';
}
});
}
tryInsertByRequest();
}
$('body').prepend('<a id="exportbutton">Export</a>');
$('body').prepend('<div style="width:100%;background:#ffffff">' + addVotesHtml + '</div>');
$('#exportbutton').click(function(){
for(var i = 0; i < newones.length; i++){
votes[newones[i]] = true;
console.log("adding new one to votes file", newones[i]);
}
console.log("saving file");
saveVotes(date, votes);
location.reload();
});
setTimeout(function(){
location.reload();
}, 60000);
});
Alles Quick and dirty aber is ja nur nen Workaround und wie gesagt, hat fast 3 Tage super funktioniert.
Natürlich müssen in den Scripts noch ein paar anpassungen gemacht werden, aber denke diejenigen die diese Scripts nutzen können auch sehen wo da was rein muss. Alle anderen brauchen es vermutlich nicht.
Zuletzt bearbeitet: