summaryrefslogtreecommitdiff
path: root/curl.php
blob: c71d478ee0220d08c47625df494f4ba64c9a04f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/php
<?php

declare(strict_types=1);

// récupérer la version du client
$curl = curl_init('https://github.com/rustdesk/rustdesk/releases/latest');
if(!$curl){ // lien non valide
    echo "Erreur : Impossible d'initialiser cURL.\n";
    return;
}

curl_setopt($curl, CURLOPT_NOBODY, true);  // option -I de curl, envoie une requête HEAD, le serveur la traite comme un GET mais ne renvoie pas de contenu

curl_exec($curl);
$link = curl_getinfo($curl, CURLINFO_REDIRECT_URL);
$version = basename(parse_url($link, PHP_URL_PATH));
echo $link . "\n"; // https://github.com/rustdesk/rustdesk/releases/tag/1.4.9

curl_close($curl);
$curl = null;


// téléchargement
$web_packages = [
    'win64' => 'rustdesk-' . $version . '-x86_64.msi',
    'win32' => 'rustdesk-' . $version . '-x86-sciter.exe',
    'deb' => 'rustdesk-' . $version . '-x86_64.deb',
    'arch' => 'rustdesk-' . $version . '-0-x86_64.pkg.tar.zst'];
$renamed_packages = [
    'win64' => 'rustdesk-x64.msi',
    'win32' => 'rustdesk-x86.exe',
    'deb' => 'rustdesk.deb',
    'arch' => 'rustdesk.tar.zst'];

$path = 'client/';
if(!is_dir($path)){
    mkdir($path, 0755, true);
}

foreach(array_keys($renamed_packages) as $os){
    $link = "https://github.com/rustdesk/rustdesk/releases/download/" . $version . "/" . $web_packages[$os];
    echo $link . "\n";

    $curl = curl_init($link);    
    if(!$curl){ // lien non valide
        echo "Erreur : Impossible d'initialiser cURL.\n";
        return;
    }

    $file = fopen($path . '/' . $renamed_packages[$os], 'w'); // écriture seule
    if(!$file){
        echo "Erreur : Impossible d'ouvrir le fichier" . $path . '/' . $renamed_packages[$os] . "pour l'écriture.\n";
        echo "Détails de l'erreur : " . error_get_last()['message'] . "\n";
        return;
    }

    curl_setopt($curl, CURLOPT_FILE, $file); // option -o, sortie dans un fichier au lieu de la console
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // option -L, "location"

    $response = curl_exec($curl);
    if(!$response){
        echo "Erreur : Le téléchargement a échoué. cURL Error: " . curl_error($curl) . "\n";
    }
    else{
        $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        if($http_code >= 400){
            echo "Erreur HTTP : " . $http_code . "\n";
        }
        else{
            echo "Téléchargement réussi.\n";
        }
    }

    fclose($file);
    curl_close($curl);
}