27.10.16

Joomla - Inhalte per Script auf neue Version übertragen

Ich stand vor dem Problem, die Inhalte einer ziemlich alten Joomla Version (V 1.5) auf eine neue Joomla Installation zu übertragen.

Hier ein schnell dahin gehacktes Script. Dieses muss noch mit den Zugangsdaten der alten und neuen Datenbank angepasst werden. Dann noch die Startwerte von  $rgt und $lft anpassen. Ich habe keine Ahnung, wozu sie sind. Auf jeden Fall müssen sie hochgezählt werden. Einfach mal in die Tabelle assets nach den entsprechenden Spalten gucken und die letzten Werte +1 übernehmen in das Script.

<?php


$prefix = "c27gy_";
$rgt = 36;
$lft = 35;

class mydatabase
{

    var $database = "";
    var $prefix = "c27gy_"; // Prefix der Joomla Tabellen

   
    function db_connect($database)
    {
       
        $user = "[user]";
        $pw = "[PASSWORD]";

        $mysqli = new mysqli("localhost", $user, $pw, $database);
        /* check connection */
        if (mysqli_connect_errno())
        {
            $error = "Connect failed: " . mysqli_connect_error();
            //$this->errorReport($error, true);
            exit();
        }
        $mysqli->query("SET NAMES 'utf8'");
        return $mysqli;
    }


    function getAssetID($title, $lft, $rgt, $name)
    {
       
        $sql_asset = "INSERT INTO " . $this->prefix . "assets
    (level,name,title, lft, rgt, parent_id, rules)
    VALUES
    ('3', '$name','$title', '$lft', '$rgt', '27','{\"core.admin\":{\"7\":1},\"core.manage\":{\"6\":1},\"core.create\":{\"3\":1},\"core.delete\":[],\"core.edit\":{\"4\":1},\"core.edit.state\":{\"5\":1},\"core.edit.own\":[]}')";
        $link=$this->db_connect("[DATABASE]");
        $link->query($sql_asset);
        //echo "DEBUG $sql_asset <br>";
        return $link->insert_id;
    }

    function truncateTables()
    {
        $link=$this->db_connect($this->db_new);
        // Die u.a. id anpassen!!! Nicht, dass existente Datensätze gelöscht werden
        $link->query("DELETE FROM " . $this->prefix . "assets WHERE id > 65");
        $link->query("TRUNCATE TABLE " . $this->prefix . "content");
        $link->query("TRUNCATE TABLE " . $this->prefix . "content_frontpage");
       
    }
}

$db = new \mydatabase();
// ACHTUNG: NICHT UNBEDINGT NÖTIG!!
//$db->truncateTables(); // Tabellen leeren bzw. Einträge löschen

// Mit den Datenbanken verbinden
$link = $db->db_connect("[DATABASE]");
$link1 = $db->db_connect("[DATABASE_OLD]");
// Daten aus der alten Tabelle holen
$sql_abfrage = "SELECT * FROM jos_content where state=1 ORDER by created DESC";
$result = $link1->query($sql_abfrage);
$zaehler = 0;
while ($row = $result->fetch_array())
{
    $zaehler++;

    echo $zaehler . " " . $row['alias'] . "<br>";
    $title = $row['title'];
    $alias = $row['alias'];
    $introtext = $row['introtext'];
    $fulltext = $link->real_escape_string($row['fulltext']);
    $created = $row['created'];
    $old_id=$row['id'];
    $id = $db->getAssetID($title, $lft, $rgt, "com_content.article." . $old_id);
    $rgt+=2;
    $lft+=2;
    $sql_insert = "INSERT INTO ${prefix}content (
                asset_id,
                title,
                alias,
                state,
                catid,
                introtext,
                `fulltext`,
                language,
                created, publish_up,
                featured,
                version,
                access)
VALUES('$id', '$title',
        '$alias',
        1,
        2,
         '$introtext',
         '$fulltext',
         '*',
        '$created', '$created',
         1,
         2,
         1)";
    if(!$link->query($sql_insert))
    {
        echo "Fehler! " . $link->error . "<br>$sql_insert";
    }
    $content_id=$link->insert_id;
   
    $sql_frontpage="INSERT INTO ${prefix}content_frontpage (content_id, ordering)
    VALUES ('$content_id', '$zaehler')";
    if(!$link->query($sql_frontpage))
    {
        echo "Fehler! " . $link->error . "<br>$sql_frontpage";
    }
}

7.10.16

Webmin / Apache: Virtuelle Hosts einrichten


Belegen:

Document_Root
ServerName

Alles andere auf Default lassen.

Für Subdomains unter Virtual Server Options -> Networking and Addresses -> Alternate Virtual Server Names z.B. *.meineseite.de eintragen.

Nicht:

<VirtualHost gehrdener.de:80>

sondern

<VirtualHost *:80>

eintragen!!

 certbot-auto --apache -d gehrdener.de -d www.gehrdener.de

3.10.16

Raspberry LCD Display aus China ansteuern

Das 3.2 Inch Display habe ich für wenig Geld aus China bekommen (Gearbest.com?).

Es ist nicht plug&play, d.h. ich brauche einen Treiber.

Hier wurde ich schließlich fündig.

Falls die Seite mal verschwindet:

Method 1. Driver installation

Description: Supports the latest version of Raspbian and Ubuntu Mate.
1. Configure your Pi:
sudo raspi-config
Set as:
  • Select Expand Filesystem.
  • Boot Option -> Desktop Autologin (may differ depending on Raspbian revision)
2. Copy the driver (choose the driver according to your OS) into your OS then Run the following commands:
tar xvf LCD-show-YYMMDD.tar.gz
cd LCD-show/
This toggles the mode to LCD display: ./LCD32-show 3. After system rebooting, the RPi LCD is ready to use.

DHCP Server konfigurieren

Adresspool definieren:

class "virtualbox"
{
  match if binary-to-ascii(16,8,":",substring(hardware,1 ,2)) == "08:00";
}

Eigenen Adressraum für virtuelle Maschinen festlegen:

pool
{
   allow members of "virtualbox";
  range 192.168.1.200 192.168.1.220:
}

 Unbekannte Geräte ausschließen

subnet 192.168.178.0 netmask 255.255.255.0
{
option routers x.x.x.x;
range 192.168.178.50 192.168.178.150;
deny unknown-clients;

}


subnet 192.168.1.0 netmask 255.255.255.0
{
option routers x.x.x.x;
range 192.168.1.50 192.168.1.150;
option host-name = concat("intruder", binary-to-ascii(10,8,"",substring(leased-address,3,1)));
allow unknown-clients;

}



DHCP Server im Netz finden

dhcping -s 255.255.255.255 -r -v
Ein Dank an Heise!

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. ...