Piwik / WordPress Remote Update

Wie ich teilweise bereits auf meinem persönlichen Blog erwähnt habe, wurden von mir in letzter Zeit Python Scripts zum Aktualisieren von WordPress und Piwik über die Kommandozeile geschrieben.

Wenn man diese z.B.: als Cronjob laufen lässt, kann man von einem entfernten Gerät die Piwik- oder WordPress Instanz automatisch aktualisieren lassen.

Das ist in manchen Fällen recht nützlich.

Downloaden kann man die beiden Programme von GitHub, eine Installationsanleitung ist in der jeweiligen README.md Datei:

Bei Fehlern / Problemen kann gerne im jeweiligen GitHub Repo ein Issue erstellt werden.

Tutorial: Einen Debian Server absichern

In letzter Zeit werden immer wieder Server für Projekte von „Wronnay“ eingerichtet. Um das Ganze etwas bequemer zu machen, wurde von mir ein Bash-Script erstellt, dass die Grundeinrichtung etwas vereinfacht. Ich möchte jetzt eine kleine Anleitung veröffentlichen, die die Verwendung dieses Scripts erklärt.

Informationen über das Script:

  • Es steht unter der GNU General Public License
  • Es aktualisiert die installieren Pakete
  • Es installiert folgende Pakete: ufw rkhunter fail2ban nano sudo htop whois
  • Es setzt einen Cronjob für tägliche Paket-Updates
  • Es erstellt eine Grundkonfiguration für die Firewall „ufw“
  • Es erstellt einen neuen Benutzer
  • Der Standard-Port für SSH wird geändert und der Login mit dem „root“ – User verboten

Verwendung:

Bevor das Script heruntergeladen werden kann, müssen erst die nötigen Pakete zur Verwendung installiert werden:

Zuerst benötigen wir Root-Rechte:

su

Jetzt installieren wir die benötigten Pakete:

apt-get install nano git

Nun können wir das Script downloaden:

git clone https://github.com/CMiksche/DebianServerBasicConfig.git

Anschließend wechseln wir in das Verzeichnis:

cd DebianServerBasicConfig

Und geben in der config.sh – Datei unsere gewünschten Daten (Benutzername, Passwort, SSH-Port) ein:

nano config.sh

Nach dem Abspeichern der Datei geben wir der Install-Datei noch die passenden Rechte:

chmod 0777 install.sh
chown root install.sh

So. Jetzt können wir die Datei auch ausführen:

./install.sh

Danach müssen wir nur noch das Script löschen:

cd ..
rm -R DebianServerBasicConfig

Fertig. Bei dem nächsten Einloggen über SSH ist jetzt nur noch zu beachten, das man den neuen Port, Benutzer und das neue Passwort verwenden muss.

Wronnay Software Lizenz

Wie bereits unter CMS.Wronnay.net angekündigt, wird die nächste Version (2.0) des WronnayCMS einige Änderungen mit sich bringen. Eine davon wird sein, dass die Software nicht mehr kostenlos verfügbar sein wird. (Davon ausgenommen sind von WebPage4.Me gehostete Varianten)

Das Content Management System wird die Basis aller anderen Websysteme von Wronnay. (Also auch für z.B.: das Wronnay Board – der Weiterentwicklung der Forensoftware)

Um nun ein Exemplar dieser Software erwerben zu können, wird man eine Lizenz benötigen. Diese wird man bei einer Firma, die noch gegründet wird, kaufen können.

Die Bedingungen der Lizenz werden immer auf dem aktuellsten Stand in Englisch unter dem nachfolgenden Link aufrufbar sein: http://license.wronnay.net/ (Bevor das WronnayCMS verkauft wird, werden diese Bedingungen allerdings noch überarbeitet werden)

Diese Bedingungen werden in Zukunft in jeder kostenpflichtigen Software von Wronnay als Kopie enthalten sein.

Tutorial: Benutzername und E-Mail Überprüfung

Ich habe ein Script gebastelt, dass alle Benutzernamen auf verbotene Usernamen und alle E-Mail-Adressen auf E-Mail-Adressen von Wegwerf-Email-Diensten überprüft.

Wer es verwenden will und nicht mehr als 25 Mal am Tag ausführt, kann es gerne nutzen:

<?php
/* Check for illegal Usernames and / or Emails
* Created: 15.02.2015 by Christoph Daniel Miksche (Wronnay)
* Uses the Wronnay Database for illegal Usernames and Emails
* More Informations: check.wronnay.net
*/
function wcms_namecheck($username, $email){
$username = str_replace(' ', '_', $username); // Wandelt Leerzeichen in _ um
$username = strtolower($username); // Wandelt alle Buchstaben in Kleinbuchstaben um
$email = str_replace(' ', '_', $email);
$email = strtolower($email);
// Nur die Domain wird benötigt
$email = substr(strrchr($email, "@"), 1);
// Wronnay E-Mail-Check API-URL
$locked_email = file_get_contents('http://check.wronnay.net/locked_email.php?domain='.$email);
// Leerzeichen raus!
$locked_email = str_replace(' ', '', $locked_email);
// Wronnay Username-Check API-URL
$locked_username = file_get_contents('http://check.wronnay.net/locked_username.php?username='.$username);
// Leerzeichen raus!
$locked_username = str_replace(' ', '', $locked_username);
// Default Wert für den Check setzen
$found = false;
// Username: Check
if($locked_username == 'true') {
$found = true;
}
// E-Mail-Check
elseif($locked_email == 'true') {
$found = true;
}
return $found;
}
?>

Update: ForenSoftware 0.7

Heute habe ich die neueste Version meiner ForenSoftware (PHP-Script für das Erstellen eines Forums) veröffentlicht. Es wurden vor allem neue Funktionen hinzugefügt, die von so manchem User gewünscht wurden.

Wichtigste Neuerungen:

  • Automatische Suche nach Aktualisierungen
  • E-Mail-Aktivierung bei Registrierung (Im Admin-Bereich aktivierbar)
  • E-Mail bei Antworten auf das Thema an den Threadersteller
  • E-Mail bei neuen Nachrichten
  • E-Mail bei neuem Passwort
  • Besucherzähler

Diese Neuheiten werden wohl auch in der nächsten Version meines Content Management Systems (des WronnayCMS) zu finden sein.

Downloaden kann man die ForenSoftware hier: http://scripts.wronnay.net/?s=php&id=3

Eigentlich wollte ich solche Neuheiten ausschließlich auf der Webseite meiner ForenSoftware veröffentlichen, aber die existiert seit meinem Problem mit Dot.tk nicht mehr.

Spam unter WordPress ohne Plugins verhindern!

Ich habe bei einem meiner Projekte das Problem, dass ich WordPress verwende, allerdings keine Plugins oder Themes verwenden kann. Wie verhindert man also bei so einem Projekt Kommentar-Spam?

Es ist eigentlich ganz einfach: Man baut in die functions.php ein paar neue Funktionen gegen Spam ein:

1. Webseiten-Feld entfernen!

Spammer / Spam-Bots wollen ihre Webseite bekannter machen, gibt es kein -Webseiten-Feld ist das Risiko niedriger, dass Spam gepostet wird.

PHP-Code:

function remove_comment_fields($fields) {
    unset($fields['url']);
    return $fields;
}
add_filter('comment_form_default_fields','remove_comment_fields');
 
function rkv_url_spamcheck( $approved , $commentdata ) {
   return ( strlen( $commentdata['comment_author_url'] ) > 1 ) ? 'spam' : $approved;
}
 
add_filter( 'pre_comment_approved', 'rkv_url_spamcheck', 99, 2 );

Diese Funktion entfernt das Webseiten-Feld und markiert Kommentare mit Webseite automatisch als Spam. (Quelle: catswhocode.com)

2. Kommentare mit Links entfernen

Als Nächstes weist man die Besucher des Blogs darauf hin, dass Links in den Kommentaren verboten sind und baut die folgende von mir erstellte Funktion ein, die Kommentare mit Links erkennt.

PHP-Code:

// BBCodes und HTML-Links erkennen - Wronnay.net
function wy_link_on_comment() {
if(stristr($_POST['comment'],"[link=") || stristr($_POST['comment'],"[url=") || stristr($_POST['comment'],"a href=") || stristr($_POST['comment'],"http://")){
wp_die( __('Bitte keine Links posten!') );
}
}
add_action('pre_comment_on_post', 'wy_link_on_comment');

Die Funktion erkennt sogenannte BBCodes, die eigentlich gar nicht in WordPress verwendet werden und normale HTML-Links und weist den Autor darauf hin, dass Links nicht erlaubt sind.

Update (23.04): Ich habe jetzt „ || stristr($_POST[‚comment‘],“http://“)“ hinzugefügt. Der Code erkennt jetzt alle Links.

Server-Status

Da ich in letzter Zeit immer wieder mit Ausfällen zu kämpfen hatte, habe ich jetzt eine Webseite bei einem anderen Webhoster erstellt, die anzeigt, ob meine Projekte online sind oder nicht.

Die Webseite prüft meinen vServer und meine einzelnen Projekte und zeigt deren Status an. Der Server wird mit einer anderen Methode geprüft wie die einzelnen Webseiten.

Die Seite ist unter Status.Wronnay.net erreichbar. Allerdings gibt es auch ein kleines Problem: sollte mein DNS-Server ausfallen, ist auch die Status-Seite nicht mehr erreichbar.

Vielleicht baue ich auch eine kleine Funktion zum Zählen von den Ausfällen an – so könnte ich ermitteln, ob ich vielleicht zu einem anderen Hoster wechseln sollte. Sollte es vermehrt zu Ausfällen kommen, werde ich wohl meine Projekte auf verschiedene Webhoster aufteilen. Allerdings bin ich derzeit mit meinem Server zufrieden, außerdem will ich (frühestens) ab Mai einen zweiten Server in Österreich betreiben. (Dieser wird dann natürlich auch von der Status-Webseite überwacht)

Mehrsprachige Webseiten und Suchmaschinenoptimierung

Eine mehrsprachige Webseite ist etwas Schönes. Durch die Vielfalt der Sprachen kann man meist mehr als doppelt so viele Nutzer ansprechen wie vergleichbare einsprachige Webseiten. Allerdings gibt es bei mehrsprachigen Webseiten auch einen Haken: Entweder muss der Nutzer selbst die Sprache auswählen oder die Webseite liest die Daten von dem Browser aus. Das Problem ist, dass Suchmaschinen keine Sprachdaten an die Webseite übermitteln. Also wird die Webseite bei Suchmaschinen mit der Standard-Sprache ausgeliefert (meist ist dies Englisch). So wird aus einer zweisprachigen Webseite bei Google ganz schnell eine einsprachige Webseite. Ich möchte nun meine Lösung zu diesem Problem präsentieren: zwei Domains (bzw.: Subdomains). Denn wenn man zwei Domains für eine Webseite hat, dann kann man die Sprachauswahl so einstellen, dass wenn keine Sprachdaten gefunden werden, einfach die eine Webseite auf Deutsch ausgeliefert wird und die andere auf Englisch. So findet Google statt einer mehrsprachigen Webseite zwei Webseiten mit jeweils einer anderen Sprache. Dies ist optimal für die Suchmaschinenoptimierung.

Hier noch ein Beispiel in PHP:

    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) // Sind Sprachdaten vorhanden?
    {
      $_SESSION['lang'] = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
    }
	else // Keine Sprachdaten vorhanden!
    {
if($_SERVER['SERVER_NAME'] == 'homepage-versammlung.tk') {$_SESSION['lang'] = 'de';}
elseif($_SERVER['SERVER_NAME'] == 'homepage-meeting.tk') {$_SESSION['lang'] = 'en';}	
else {$_SESSION['lang'] = 'en';} 	
    }

WronnayCMS: Closed Beta veröffentlicht

WronnayCMSIch habe vorgestern mein Content Management System in der Closed Beta veröffentlicht. Das heißt, es ist zurzeit nur einen eingeschränkten Nutzerkreis möglich, mein CMS zu testen. Der größte Unterschied zu herkömmlichen CMS ist, das man im Adminbereich des WronnayCMS PHP-Codes einfügen kann, um die Webseite um weitere Funktionen zu erweitern. Dieses Feature habe ich angelegt, da ich alle meine Webseiten mit diesem System ausstatten möchte und die Seiten trotzdem individuelle Funktionen bieten sollen. Eine weitere Besonderheit ist, dass das CMS eine eingebaute ForenSoftware besitzt, was es einfacher macht, das System für Communitys zu verwenden. Daneben besitzt es alle Standard Funktionen eines normalen Content Management Systems. Die offizielle Webseite ist: cms.wronnay.net

Start der Entwicklung des WronnayCMS

WronnayCMSIch habe heute mit der Entwicklung meines eigenen Content-Management-Systems begonnen.

Das CMS soll anders als andere Systeme aufgebaut werden und ein paar Funktionen bieten, die es bisher noch nicht gibt. Da ich es für alle meine Websites benützen will, wird es sehr flexibel sein und meine ForenSoftware unterstützen.