-
Notifications
You must be signed in to change notification settings - Fork 4
/
load_installer_logos.php
102 lines (77 loc) · 3.13 KB
/
load_installer_logos.php
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
$dir = dirname(__FILE__);
chdir("$dir/www");
require "Lib/load_database.php";
require ("Modules/system/system_model.php");
$system = new System($mysqli);
$logos = array();
$fails = array();
$data = $system->list_admin();
foreach ($data as $row) {
$systemid = $row->id;
if ($row->installer_url!='') {
$url = parse_url($row->installer_url);
if (isset($url['host'])) {
$host = $url['host'];
$host_parts = explode(".",$host);
$i = 0;
if ($host_parts[0] == "www") {
$i++;
}
$imagefile = $host_parts[$i];
// if (!isset($logos[$imagefile])) {
$image = getFaviconContent($url['host']);
if ($image === false) {
$url['host'] = str_replace("www.","",$url['host']);
$image = getFaviconContent($url['host']);
}
if ($image !== false) {
// Detect MIME type
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->buffer($image);
// Determine file extension based on MIME type
switch ($mimeType) {
case 'image/jpeg':
$extension = '.jpg';
break;
case 'image/png':
$extension = '.png';
break;
case 'image/gif':
$extension = '.gif';
break;
default:
$extension = ''; // Or assume a default extension or handle error
break;
}
$filename = "theme/img/installers/".$imagefile.$extension;
$logos[$imagefile] = 1;
// Write the image data to the file
file_put_contents($filename, $image);
$mysqli->query("UPDATE system_meta SET `installer_logo`='".$imagefile.$extension."' WHERE `id`='$systemid'");
print "success: $imagefile"."$extension\n";
} else {
//print $url['host']."\n";
$fails[] = $url['host'];
}
// }
}
}
}
foreach ($fails as $fail) {
print "fail $fail\n";
}
function getFaviconContent($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://t0.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://$url&size=16");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$image = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode == 200) { // Check if successful response
return $image;
} else {
return false; // Or handle error as needed
}
}