24.9.13

DSL - Damn small Linux als Gateway auf gleichem Rechner installieren

  • Distribution herunterladen und in den VMWare Player als Laufwerk (iso) einbinden und installieren
  • Standardmäßig ist kein APT Paketmanager aktiv. Diesen als root auf der Shell installieren mit
    dpkg-restore

  • Firewall (falls vorhanden) anpassen und Forwarding aktivieren mit

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward

18.9.13

Screenshots mit PHP erstellen

aptitude install imagemagick wkhtmltopdf
<?php
 
// save this snippet as url_to_png.php
// usage: php url_to_png.php http://example.com
if (!isset($argv[1])){
    die("specify site: e.g. http://example.com\n");
}
 
$md5 = md5($argv[1]);
$command = "wkhtmltopdf $argv[1] $md5.pdf";
exec($command, $output, $ret);
if ($ret) {
    echo "error fetching screen dump\n";
    die;
}
 
$command = "convert $md5.pdf -append $md5.png";
exec($command, $output, $ret);
if ($ret){
    echo "Error converting\n";
    die;
}
 
echo "Conversion compleated: $argv[1] converted to $md5.png\n"; 
  

Whois-Klasse für PHP

Nach längerer Zeit habe ich mich mal wieder auf die Suche nach einer guten PHP-Klasse für Whois-Abfragen begeben.
Und jetzt bin ich endlich fündig (und glücklich) geworden :)

Hier findet ihr eine Klasse, die endlich das tut, was sie soll.

Chapeau!

19.8.13

Firefox - Plugin Entwicklung

An dieser Stelle möchte ich beschreiben, wie man ein Firefox-Plugin entwickeln kann.
Ich weiß, dass es schon einige Anleitungen in dieser Form gibt, vielleicht aber kann man auch hier etwas lernen ; )
Das Beispiel soll ein Plugin sein, welches eine Whois-Abfrage zu einer Domain oder IP-Adresse durchführt.

Was das Plugin leisten soll:

  • Der mit der Maus selektierte Text (IP oder Domain) soll ausgewertet und an eine bestimmte URL geschickt werden
  • Die Antwort mit den Whois-Informationen soll in einem neuen Div erscheinen; alternativ: neues Tab


Was muss ich vorher machen?


Der Code:

exports.main = function() {
   
    var contextMenu = require("context-menu");
    var tabs = require("tabs");
    var selection = require("selection");
    var Request = require('request');
   
    var menuItem = contextMenu.Item({
        label: "Whois Auskunft",
        context: contextMenu.SelectionContext(),
        contentScript: 'self.on("click", function() {'+
                            'var text = window.getSelection().toString();'+
                            'self.postMessage(text);'+
                            '});',
        onMessage: function(text) {
                        tabs.open("http://whois.domaintools.com/"+text);
                    }                       
        }) ;
  

    };

Tipps:

  • Debuggen → Fehlerkonsole vom Firefox
    Console.log(„Nachricht“);



to be continued....

23.7.13

PHP und JS Schnipsel - Datumsfunktionen

Datum aus einer MySQL-Datenbank formatieren:


$datum_de = date("d.m.Y ", strToTime($datum));



Datumspicker mit jquery einbinden:

  1. Framework und CSS einbinden 
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"</script>
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js">
    </script> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" type="text/css" />
  2. Funktion definieren (geht auch ohne PHP :))
function datepicker($fieldId)
{
    ?>
    <script type="text/javascript">

        jQuery(function($){
            $.datepicker.regional['de'] = {clearText: 'enternen', clearStatus: 'Auswahl löschen',
                closeText: 'schließen', closeStatus: 'Änderungen nicht übernehmen',
                prevText: 'vorheriger Monat', prevStatus: 'vorheriger Monat',
                nextText: 'nächster Monat', nextStatus: 'nächster Monat',
                currentText: 'heute', currentStatus: '',
                monthNames: ['Januar','Februar','März','April','Mai','Juni',
                    'Juli','August','September','Oktober','November','Dezember'],
                monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
                    'Jul','Aug','Sep','Okt','Nov','Dez'],
                monthStatus: 'anderer Monat', yearStatus: 'anderes Jahr',
                weekHeader: 'Wo', weekStatus: 'Woche des Monats',
                dayNames:
                    ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
                dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayStatus: 'Setze DD als ersten Wochentag', dateStatus: 'Wähle D, M d',
                dateFormat: 'yy-mm-dd', firstDay: 1,
                changeMonth: true,
                changeYear: true,
                initStatus: 'Bitte wählen Sie ein Datum', isRTL: false};
            $.datepicker.setDefaults($.datepicker.regional['de']);
        });
        $(function() {
            <?php echo "\$(\"#" . $fieldId . "\").datepicker();";
            ?>
        });

    </script>
    <?php
}

29.4.13

Verschlüsselte Verbindung mit MySQL Server

Diese Anleitung ist sehr gut, jedoch gab es bei immer noch folgende Fehlermeldung, obwohl die Rechte zu den Pfaden mit chown mysql:mysql entsprechend angepasst wurden:

SSL error: Unable to get certificate from '/etc/ssl/mysql/server.cert'
130429 13:09:59 [Warning] Failed to setup SSL
130429 13:09:59 [Warning] SSL error: Unable to get certificate

Erst dieser Fund hat die Lösung gebracht.

Und wieder war Apparmor mein Problem :(

Auch diese Anleitung ist ganz gut gemacht :)


Mini-Tools, die ich immer wieder brauche und nicht verloren gehen dürfen :)

Große Dateien finden:
 ls -lahS $(find / -type f -size +10000k)

 Findet alle Dateien größer 10MB

SCP ohne Abbruch
Wer kennt es nicht? Man will per SCP eine große Datei übertragen, die Übertragung bricht jedoch bei 70,80 oder 90% ab und man muss von vorn beginnen.
 Lösung: Rsync

rsync -P ——bwlimit=45 ——rsh=ssh /Quelldatei benutzer@server:/Zieldatei

Root Laufwerk nach Booten der Wiederherstellungskonsole wieder beschreibbar einbinden:

mount -o remount,rw /
 
 
System zeigt mit df 0% freien Platz an, obwohl die Festplatte noch nicht voll ist
Grund: Die restlichen 10% an Platz sind dem Benutzer root vorbehalten.

Änderung:
tune2fs -m 1 /dev/sdb1
 
MySQL Root Passwort setzen 
Mysql stoppen
/usr/bin/mysqld_safe --skip-grant-tables --user=root
login als root
UPDATE mysql.user SET Password=PASSWORD('passwort') WHERE User='root';
FLUSH PRIVILEGES;
 

Samba Freigabe mounten

mount -t cifs -o username=USERNAME,cruid=UID_DES_NUTZERS,sec=krb5i,vers=3.0 //192.168.1.100/Tausch /media/austausch  

Openhab und Ecoflow Max - API Anbindung

 Ich wollte die neu erworbene Powerstation in Openhab einbinden, um den aktuellen Status (Ladestand etc.) über Openhab auswerten zu können. ...