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);
}
|