Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Portals

Mach den Local Mount in /var/www
Ansonsten werden die Rechte in deinem/home Ordner nicht stimmen.
Liegt alles schon in /var/www dann alles auf User 33 setzen.
 
Das Problem ist ja auch, das ich fast nie was verstehe, wenn du mir Hilfe gibst. Ich versuche mir dann immer das was du schreibst mit chatgpt zu lösen. Damit ich dich/euch nicht verärgere, weil es für euch grundlage sind. Wie ich einen local Mount machen kann, weiß ich z.b nicht. Das hat er doch bei der Installation von Portals gemacht oder? Wo ich var/www angegeben habe. Ich hatte ja gestern ein Auszug gemacht, mit den Rechten. Und das mit 33 hattest du ja geschrieben. Das ich zum Ordner Portals navigieren soll und dann sudo chown -R 33:33 , && sudo chmod -R 755 . eintippen soll.
 
Den local mount gibts du an wenn du portals.sh startest.
da hast du irgenwas mit /home angegeben, oder?
Da gibts du /var/www ein.
Richte dir winscp ein auf dem PC (Windows) ein.
Das macht es einfacher irgendwas zu ändern.
In winscp als Übertragungsportokoll SFTP einstellen.
Unter Erweitert. Bei Shell sudo su - eingeben.
Hier mal zum Lesen:
Hört sich kompliziert an, aber wenns eingerichtet ist, macht es alles einfacher.
 
Zuletzt bearbeitet:
Den local mount gibts du an wenn du portals.sh startest.
da hast du irgenwas mit /home angegeben, oder?
Da gibts du /var/www ein.
Nein, da habe ich /var/www angegeben. Ich hatte den Pi ja noch mal komplett neu aufgesetzt, nachdem du mir das geschrieben hast, das ich Portals falsch installiert habe.

winscp gucke ich mir nachher mal in Ruhe an. Danke schon mal
 
Hi. Danke an alle für eure Hilfe. Portals Docker läuft soweit. Lg

Kann ich das ganze auch von außerhalb meines Netzwerkes erreichen?
 
Hallo. Ich habe vor mir Linux neben Windows auf meinen Laptop zu installieren um dieses tolle Portal auch zu benutzen.
Macht es einen Unterschied ob Mint oder Ubuntu?
Wenn ich Linux Installiert hab wo genau muss ich dann anfangen ich bin noch ein wenig verwirrt.
Danke schonmal für eure Hilfe.
 
So winscp ist installiert und Verbindung kann ich aufbauen.
Aber das ging nicht Option1:
In winscp als Übertragungsportokoll SFTP einstellen.
Unter Erweitert. Bei Shell sudo su - eingeben.
Musste Option 2 auch machen, wie es auf der Seite beschrieben ist.

Habe jetzt Portals noch mal neu drüber installiert.
Es läuft aber auch mit der neu Installierung nicht.
Das habe ich dann auch noch mal gemacht: sudo chown -R 33:33 . && sudo chmod -R 755 .
Ging aber auch net damit.
Habe 3 Portale getestet. Bei Tivi kommt immer nach einiger Zeit wenn er in Bearbeitung ist, Fehler. Beim Ott das selbe. failed to connect to ...... enrhält keine unterstützen Live Kanäle... Obwohl die die Mac´s so laufen.



Ich kann übrigens kein Updatet machen.
"Failed to update portals: Zip file not found or failed to open"
 
Zuletzt bearbeitet:
Spricht alles dafür, dass etwas mit den Rechten nicht stimmt.
Da passt auf dem Host etwas nicht.
Aber darum müsst ihr euch selbst kümmern.

@Paniker69
Must du testen.
Linux in einer virtuellen Umgebung oder externaly mananged ist immer problematisch.

PHP:
<?php
function checkPermissions($path, $expectedOwner, $expectedPerms)
{
    $currentOwner = posix_getpwuid(fileowner($path));
    $currentPerms = substr(sprintf('%o', fileperms($path)), -3);

    return $currentOwner && $currentOwner['name'] === $expectedOwner && $currentPerms === $expectedPerms;
}

function setPermissions($path, $owner, $perms)
{
    chown($path, $owner);
    chmod($path, octdec($perms));
}

function isPortOpen($host, $port)
{
    $connection = @fsockopen($host, $port, $errno, $errstr, 5);
    if ($connection) {
        fclose($connection);
        return true;
    }
    return false;
}

function isUrlAccessible($url)
{
    $headers = @get_headers($url);
    return $headers && strpos($headers[0], '200') !== false;
}

function loadLsJson($file)
{
    return file_exists($file) ? json_decode(file_get_contents($file), true) : [];
}

function saveLsJson($file, $data)
{
    file_put_contents($file, json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
    chown($file, 'www-data');
    chmod($file, 0755);
}

function checkOrCreateUser($userName, $userId = null)
{
    if ($userName) {
        $userInfo = posix_getpwnam($userName);
        if ($userInfo) {
            return $userInfo['name'];
        }
    } else if ($userId !== null) {
        $userInfo = posix_getpwuid($userId);
        if ($userInfo) {
            return $userInfo['name'];
        }
    }

    $promptName = $userName ? $userName : "User ID $userId";
    echo "$promptName does not exist. Do you want to create it? (y/n): ";
    $input = trim(fgets(STDIN));

    if (strtolower($input) === 'y') {
        $command = $userName 
            ? "sudo useradd -M -r $userName"
            : "sudo useradd -u $userId -M -r placeholder_name";

        exec($command, $output, $returnVar);

        if ($returnVar === 0) {
            echo "$promptName created successfully.\n";
            return $userName ? $userName : "placeholder_name";
        } else {
            die("Failed to create $promptName. Please check your system configuration.\n");
        }
    } else {
        die("Required $promptName not found. Exiting.\n");
    }
}

function getUserOwner()
{
    $wwwData = checkOrCreateUser('www-data');
    if ($wwwData) {
        return $wwwData;
    }

    $user33 = checkOrCreateUser(null, 33);
    return $user33;
}

function checkAndInstallPackages()
{
    $corePackages = ['apache2', 'php'];
    $phpExtensions = ['curl', 'json', 'xml', 'mbstring', 'zip'];
    $pythonPackages = ['aiohttp', 'argparse', 'asyncio', 'base64', 'datetime', 'json', 'os', 'random', 'subprocess', 'sys', 'tqdm', 'typing', 'urllib'];

    $missingCore = [];
    $missingPhp = [];
    $missingPython = [];

    foreach ($corePackages as $package) {
        exec("command -v $package", $output, $returnVar);
        if ($returnVar !== 0) {
            $missingCore[] = $package;
        }
    }

    $loadedExtensions = explode("\n", shell_exec("php -m"));
    foreach ($phpExtensions as $extension) {
        if (!in_array($extension, $loadedExtensions)) {
            $missingPhp[] = "php-$extension";
        }
    }

    foreach ($pythonPackages as $package) {
        exec("python3 -c \"import $package\" 2>/dev/null", $output, $returnVar);
        if ($returnVar !== 0) {
            $missingPython[] = $package;
        }
    }

    if (!empty($missingCore) || !empty($missingPhp) || !empty($missingPython)) {
        echo "The following packages are missing:\n";
        if (!empty($missingCore)) {
            echo "Core packages: " . implode(', ', $missingCore) . "\n";
        }
        if (!empty($missingPhp)) {
            echo "PHP extensions: " . implode(', ', $missingPhp) . "\n";
        }
        if (!empty($missingPython)) {
            echo "Python packages: " . implode(', ', $missingPython) . "\n";
        }

        echo "Do you want to install the missing packages? (y/n): ";
        $input = trim(fgets(STDIN));
        if (strtolower($input) === 'y') {
            if (!empty($missingCore)) {
                exec("sudo apt-get install -y " . implode(' ', $missingCore));
            }
            if (!empty($missingPhp)) {
                exec("sudo apt-get install -y " . implode(' ', $missingPhp));
            }
            if (!empty($missingPython)) {
                exec("sudo pip3 install " . implode(' ', $missingPython));
            }
            echo "All missing packages have been installed.\n";
        } else {
            die("Missing packages not installed. Exiting.\n");
        }
    }
}

checkAndInstallPackages();

$basePath = dirname(__DIR__, 1);
$expectedOwner = getUserOwner();
$expectedPerms = '755';

$directoryIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($basePath));
$incorrectItems = [];

foreach ($directoryIterator as $file) {
    if (in_array($file->getFilename(), ['.', '..'])) {
        continue;
    }

    $fullPath = $file->getPathname();

    if (!checkPermissions($fullPath, $expectedOwner, $expectedPerms)) {
        $incorrectItems[] = $fullPath;
    }
}

if (!empty($incorrectItems)) {
    echo "Some files or folders have incorrect ownership or permissions.\n";
    echo "Do you want to list the items? (l/n): ";
    $input = trim(fgets(STDIN));
    if (strtolower($input) === 'l') {
        foreach ($incorrectItems as $item) {
            $currentPerms = substr(sprintf('%o', fileperms($item)), -3);
            $ownerInfo = posix_getpwuid(fileowner($item));
            $currentOwner = $ownerInfo ? $ownerInfo['name'] : 'Unknown';
            echo "- $item (Owner: $currentOwner, Permissions: $currentPerms)\n";
        }
        echo "Do you want to update permissions for all listed items? (y/n): ";
        $input = trim(fgets(STDIN));
        if (strtolower($input) === 'y') {
            foreach ($incorrectItems as $item) {
                setPermissions($item, $expectedOwner, $expectedPerms);
                echo "Permissions updated for '$item'.\n";
            }
        }
    } elseif (strtolower($input) === 'y') {
        foreach ($incorrectItems as $item) {
            setPermissions($item, $expectedOwner, $expectedPerms);
            echo "Permissions updated for '$item'.\n";
        }
    }
}

$lsFile = './ls.json';
$lsData = loadLsJson($lsFile);

if (empty($lsData)) {
    echo "The ls.json file is empty. Please set the Local Server Address:\n";
    $input = trim(fgets(STDIN));
    $lsData = [$input];
    saveLsJson($lsFile, $lsData);
    echo "Local Server Address saved.\n";
}

foreach ($lsData as $url) {
    $parsedUrl = parse_url($url);
    if (!$parsedUrl || !isset($parsedUrl['host'], $parsedUrl['port'])) {
        echo "Invalid URL in ls.json: $url\n";
        continue;
    }

    $host = $parsedUrl['host'];
    $port = $parsedUrl['port'];

    if (!isPortOpen($host, $port)) {
        echo "Port $port on $host is not open.\n";
        continue;
    }

    if (!isUrlAccessible($url)) {
        echo "URL $url is not accessible.\n";
        continue;
    }

    echo "URL $url is accessible and port $port is open.\n";
}

?>

Hier noch ein Script zum Testen für Pakate, www-data (33), Server Adresse etc.
in ./data2 kopieren und mit sudo php test.php ausführen auf dem Host.
 
Zuletzt bearbeitet:
Iwie scheint er nach den letzten Updates ständig die Verbindung zum Server zu verlieren...HttpDataSource$HttpDataSourceException
 
Das hat nichts mit Portals zu tun.
Wenn das kommt, bist du nicht mehr auf dem local Server, sondern beim Portal.
 
Schein ein Problem mit den Zusatzfunktionen unter local Server zu sein...setzte ich den Haken bei ohne machcheck nutzen..gehts

Besteht die Möglichkeit diese Funktionen wieder raus zu nehmen ?? So das es wieder wie vorher ist...und eine Frage habe ich auch noch...habe es bisher noch nicht hinbekommen ein xstream Portal zu sannen..wie geht das ???Und welches Portal ist gut
 
Zuletzt bearbeitet:
Dann mach es ohne gescheckte Macs.
Hauptsache es läuft. ;)

User/Pass fällt bei manchen Stalker Portalen auch mit ab, falls die auch xtream Zugänge haben.
Musst du einfach mach suchen/testen.
 
Zurück
Oben