+ Antworten
Ergebnis 1 bis 2 von 2

Thema: Image von entferntem Server per curl kopieren

  1. #1
    Neu an Board
    Registriert seit
    27.09.2006
    Beiträge
    22
    Bedankte sich
    3
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Image von entferntem Server per curl kopieren

    Hallo zusammen,

    ich hoffe ich werde nicht gleich gesteinigt da das Thema eigentlich nichts mit Joomla zu tun hat.

    Aktuell hole ich mir Bilder von einer Webcam über http mit curl in einem php Skript der auf einer Subdomain liegt.
    Die Übertragung soll nun auf https mit Benutzername und Passwort umgestellt werden.
    Leider kenne ich mich viel zu wenig mit dem Thema aus sodass es mir auch nach tagelanger Lösungssuche nicht gelingt eine Verbindung zur Webcam über https herzustellen.

    Eine X.509-Zertifikat pem datei liegt mir vor wenn diese benötigt wird.

    Vieleicht kann mir ja jemand von euch weiterhelfen.


    Der aktuelle skript sieht wie folgt aus.
    PHP-Code:
    <?php
        
    if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
            
    header('Access-Control-Allow-Origin: *');
            
    header('Access-Control-Allow-Methods: GET');
            
    header('Access-Control-Allow-Headers: xxx');
            
    header('Access-Control-Max-Age: 1728000');
            
    header('Content-Length: 0');
            
    header('Content-Type: text/plain');
            die();
        }

        
    header('Access-Control-Allow-Origin: *');
        
    header('Content-Type: application/json');

        
    $ret = [
            
    'result' => 'OK',
        ];
        print 
    json_encode($ret);

    //Bilder hohlen
    function getImagen($url$rename$ch)
    {
    $ch curl_init($url);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_BINARYTRANSFER,1);
        
    $rawdata=curl_exec ($ch);
        
    curl_close ($ch);

    $fp fopen("$rename.jpg",'w');
    fwrite($fp$rawdata); 
    fclose($fp);             
    }

    $ch curl_init();
    $image ="http://benutzer:passwort@url.net:9008";

    getImagen ($image"current"$ch);
    ?>
    Grüße
    Steffen
    Geändert von traumspiel (14.05.2019 um 05:34 Uhr)

  2. #2
    Neu an Board
    Registriert seit
    27.09.2006
    Beiträge
    22
    Bedankte sich
    3
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hab eine Lösung für mein Problem gefunden, ev. kann es ja jemand gebrauchen...
    Das Zertifikat *.pem liegt in meinem Fall im gleichen Verzeichnis, und in der php.ini muss die folgende Zeile eingefügt werden.
    PHP-Code:
    curl.cainfo xxxx_cert.pem 
    Dieser skript holt die bilder ab.
    PHP-Code:
    <?php
    //header
        
    if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
            
    header('Access-Control-Allow-Origin: *');
            
    header('Access-Control-Allow-Methods: GET');
            
    header('Access-Control-Allow-Headers: xxx'); // <-- deine Daten
            
    header('Access-Control-Max-Age: 1728000');
            
    header('Content-Length: 0');
            
    header('Content-Type: text/plain');
            die();
        }

        
    header('Access-Control-Allow-Origin: *');
        
    header('Content-Type: application/json');

        
    $ret = [
            
    'result' => 'OK',
        ];
        print 
    json_encode($ret);
    //Anmelden + Bild holen
    $output_filename 'dein_file.jpg';
    $host "https://xxxxxx"// <-- deine Daten
    $ch curl_init();
    curl_setopt($chCURLOPT_URL$host);
    curl_setopt($chCURLOPT_USERPWD'user' ':' 'password'); // <-- deine Daten
    curl_setopt($chCURLOPT_VERBOSE1);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_AUTOREFERERfalse);
    curl_setopt($chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_SSL_VERIFYPEER1); 
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
    curl_setopt($chCURLOPT_CAINFO,'xxxx_cert.pem'); // <-- deine Daten
    $result curl_exec($ch);
    curl_close($ch);
    $fp fopen($output_filename'wb');
    fwrite($fp$result);
    fclose($fp);
    ?>
    Geändert von traumspiel (13.05.2019 um 11:22 Uhr)

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein