@@ -243,6 +243,9 @@ |
||
243 | 243 | } |
244 | 244 | } |
245 | 245 | |
246 | +/** |
|
247 | + * @param string $filter |
|
248 | + */ |
|
246 | 249 | function GetDirectoryList ($directory, $filter){ |
247 | 250 | $results = array(); |
248 | 251 | $handler = opendir($directory); |
@@ -248,7 +248,7 @@ |
||
248 | 248 | $handler = opendir($directory); |
249 | 249 | while ($file = readdir($handler)) { |
250 | 250 | if ($file != "." && $file != ".." && preg_match("/".$filter."/", $file)) { |
251 | - $results[] = $file; |
|
251 | + $results[] = $file; |
|
252 | 252 | } |
253 | 253 | } |
254 | 254 | closedir($handler); |
@@ -12,17 +12,17 @@ discard block |
||
12 | 12 | package_update_channel = stable |
13 | 13 | */ |
14 | 14 | |
15 | -$spkDir = "packages/"; // This has to be a directory relative to |
|
15 | +$spkDir = "packages/"; // This has to be a directory relative to |
|
16 | 16 | // where this script is and served by Apache |
17 | -$synologyModels = "conf/synology_models.conf"; // File where Syno models are |
|
17 | +$synologyModels = "conf/synology_models.conf"; // File where Syno models are |
|
18 | 18 | // stored in "DS412+=cedarview" |
19 | 19 | // type format |
20 | -$excludedSynoServices = array("apache-sys","apache-web","mdns","samba","db","applenetwork","cron","nfs","firewall"); |
|
20 | +$excludedSynoServices = array("apache-sys", "apache-web", "mdns", "samba", "db", "applenetwork", "cron", "nfs", "firewall"); |
|
21 | 21 | $host = $_SERVER['HTTP_HOST'].substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], "/"))."/"; |
22 | 22 | |
23 | 23 | $siteName = "Simple SPK Server"; |
24 | 24 | |
25 | -if($_SERVER['REQUEST_METHOD'] == 'POST'){ |
|
25 | +if ($_SERVER['REQUEST_METHOD'] == 'POST') { |
|
26 | 26 | |
27 | 27 | $language = trim($_POST['language']); |
28 | 28 | $timezone = trim($_POST['timezone']); |
@@ -33,18 +33,18 @@ discard block |
||
33 | 33 | $channel = trim($_POST['package_update_channel']); |
34 | 34 | $unique = trim($_POST['unique']); |
35 | 35 | |
36 | - if (!$language || !$timezone || !$arch || !$major || is_null($minor) || !$build || !$channel || !$unique || !$serial || !(preg_match("/^$unique/", $_SERVER['HTTP_USER_AGENT']) || $_SERVER['HTTP_USER_AGENT'] == "\"Mozilla/4.0 (compatible; MSIE 6.1; Windows XP) Synology\"" || $_SERVER['HTTP_USER_AGENT'] == "\"Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)\"" )){ |
|
36 | + if (!$language || !$timezone || !$arch || !$major || is_null($minor) || !$build || !$channel || !$unique || !$serial || !(preg_match("/^$unique/", $_SERVER['HTTP_USER_AGENT']) || $_SERVER['HTTP_USER_AGENT'] == "\"Mozilla/4.0 (compatible; MSIE 6.1; Windows XP) Synology\"" || $_SERVER['HTTP_USER_AGENT'] == "\"Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)\"")) { |
|
37 | 37 | header('Content-type: text/html'); |
38 | 38 | header('HTTP/1.1 404 Not Found'); |
39 | 39 | header('Status: 404 Not Found'); |
40 | 40 | } else { |
41 | - if($arch == "88f6282"){ |
|
41 | + if ($arch == "88f6282") { |
|
42 | 42 | $arch = "88f6281"; |
43 | 43 | } |
44 | 44 | echo stripslashes(json_encode(DisplayPackagesJSON(GetPackageList($arch, $channel, $major.".".$minor.".".$build)))); |
45 | 45 | } |
46 | 46 | } |
47 | -elseif($_SERVER['REQUEST_METHOD'] == 'GET') |
|
47 | +elseif ($_SERVER['REQUEST_METHOD'] == 'GET') |
|
48 | 48 | { |
49 | 49 | $arch = trim($_GET['arch']); |
50 | 50 | $channel = trim($_GET['channel']); |
@@ -67,9 +67,9 @@ discard block |
||
67 | 67 | echo "\t\t<div id=\"menu\">\n"; |
68 | 68 | echo "\t\t\t<ul>\n"; |
69 | 69 | echo "\t\t\t\t<li><a href=\".\">Synology Models</a></li>\n"; |
70 | - echo ($arch && !$channel)?"\t\t\t\t<li><a href=\"".$_SERVER['REQUEST_URI']."&channel=beta\">Show Beta Packages</a></li>\n":""; |
|
71 | - echo $channel?"\t\t\t\t<li><a href=\"index.php?arch=".$arch."\">Hide Beta Packages</a></li>\n":""; |
|
72 | - echo !$fullList?"\t\t\t\t<li><a href=\"index.php?fulllist=true\">Full Packages List</a></li>\n":""; |
|
70 | + echo ($arch && !$channel) ? "\t\t\t\t<li><a href=\"".$_SERVER['REQUEST_URI']."&channel=beta\">Show Beta Packages</a></li>\n" : ""; |
|
71 | + echo $channel ? "\t\t\t\t<li><a href=\"index.php?arch=".$arch."\">Hide Beta Packages</a></li>\n" : ""; |
|
72 | + echo !$fullList ? "\t\t\t\t<li><a href=\"index.php?fulllist=true\">Full Packages List</a></li>\n" : ""; |
|
73 | 73 | echo "\t\t\t\t<li class=\"last\"><a href=\"http://github.com/jdel/sspks\">Host your own packages</a></li>\n"; |
74 | 74 | echo "\t\t\t</ul>\n"; |
75 | 75 | echo "\t\t</div>\n"; |
@@ -78,7 +78,7 @@ discard block |
||
78 | 78 | echo "\t\t</div>\n"; |
79 | 79 | echo "\t\t<div id=\"content\">\n"; |
80 | 80 | echo "\t\t\t<ul>\n"; |
81 | - if ($arch){ |
|
81 | + if ($arch) { |
|
82 | 82 | DisplayPackagesHTML(GetPackageList($arch, $channel, "skip")); |
83 | 83 | } elseif ($fullList) { |
84 | 84 | DisplayAllPackages($spkDir); |
@@ -101,41 +101,41 @@ discard block |
||
101 | 101 | header('Status: 404 Not Found'); |
102 | 102 | } |
103 | 103 | |
104 | -function GetPackageList($arch="noarch", $beta=false, $version="") { |
|
104 | +function GetPackageList($arch = "noarch", $beta = false, $version = "") { |
|
105 | 105 | global $host; |
106 | 106 | global $spkDir; |
107 | 107 | $packagesList = GetDirectoryList($spkDir, ".*\.nfo"); |
108 | 108 | $packagesAvailable = array(); |
109 | - if (!empty($packagesList)){ |
|
110 | - foreach($packagesList as $nfoFile){ |
|
109 | + if (!empty($packagesList)) { |
|
110 | + foreach ($packagesList as $nfoFile) { |
|
111 | 111 | $packageInfo = array(); |
112 | 112 | $spkFile = basename($nfoFile, ".nfo").".spk"; |
113 | 113 | $thumb_72 = basename($nfoFile, ".nfo")."_thumb_72.png"; |
114 | 114 | $thumb_120 = basename($nfoFile, ".nfo")."_thumb_120.png"; |
115 | - if(file_exists($spkDir.$nfoFile) && file_exists($spkDir.$spkFile)){ |
|
115 | + if (file_exists($spkDir.$nfoFile) && file_exists($spkDir.$spkFile)) { |
|
116 | 116 | $fileHandle = fopen($spkDir.$nfoFile, 'r'); |
117 | - while(!feof($fileHandle)) |
|
117 | + while (!feof($fileHandle)) |
|
118 | 118 | { |
119 | 119 | $line = explode("=", chop(str_replace("\"", "", fgets($fileHandle)))); |
120 | - if (trim($line[0])){ $packageInfo[$line[0]] = $line[1]; } |
|
120 | + if (trim($line[0])) { $packageInfo[$line[0]] = $line[1]; } |
|
121 | 121 | } |
122 | 122 | fclose($fileHandle); |
123 | 123 | $packageInfo['nfo'] = $spkDir.$nfoFile; |
124 | 124 | $packageInfo['spk'] = $spkDir.$spkFile; |
125 | - if(file_exists($spkDir.$thumb_72)){ |
|
125 | + if (file_exists($spkDir.$thumb_72)) { |
|
126 | 126 | $packageInfo['thumbnail'][] = "http://".$host.$spkDir.$thumb_72; |
127 | 127 | } else { |
128 | 128 | $packageInfo['thumbnail'][] = "http://".$host.$spkDir."default_package_icon_72.png"; |
129 | 129 | } |
130 | - if(file_exists($spkDir.$thumb_120)){ |
|
130 | + if (file_exists($spkDir.$thumb_120)) { |
|
131 | 131 | $packageInfo['thumbnail'][] = "http://".$host.$spkDir.$thumb_120; |
132 | 132 | } else { |
133 | 133 | $packageInfo['thumbnail'][] = "http://".$host.$spkDir."default_package_icon_120.png"; |
134 | 134 | } |
135 | - foreach(GetDirectoryList($spkDir, basename($nfoFile, ".nfo").".*_screen_.*\.png") as $snapshot){ |
|
135 | + foreach (GetDirectoryList($spkDir, basename($nfoFile, ".nfo").".*_screen_.*\.png") as $snapshot) { |
|
136 | 136 | $packageInfo['snapshot'][] = "http://".$host.$spkDir.$snapshot; |
137 | 137 | } |
138 | - if ( (empty($packagesAvailable[$packageInfo['package']]) |
|
138 | + if ((empty($packagesAvailable[$packageInfo['package']]) |
|
139 | 139 | || version_compare($packageInfo['version'], $packagesAvailable[$packageInfo['package']]['version'], ">")) |
140 | 140 | && ($packageInfo['arch'] == $arch || $packageInfo['arch'] == "noarch") |
141 | 141 | && (($beta == "beta" && $packageInfo['beta'] == true) || empty($packageInfo['beta'])) |
@@ -149,12 +149,12 @@ discard block |
||
149 | 149 | return $packagesAvailable; |
150 | 150 | } |
151 | 151 | |
152 | -function DisplayPackagesHTML($packagesAvailable){ |
|
152 | +function DisplayPackagesHTML($packagesAvailable) { |
|
153 | 153 | global $host; |
154 | - foreach($packagesAvailable as $packageInfo){ |
|
154 | + foreach ($packagesAvailable as $packageInfo) { |
|
155 | 155 | echo "\t\t\t\t<li class=\"package\">\n"; |
156 | 156 | echo "\t\t\t\t\t<div class=\"spk-icon\">\n"; |
157 | - echo "\t\t\t\t\t\t<a href=\"http://".$host.$packageInfo['spk']."\"><img src=\"".$packageInfo['thumbnail'][0]."\" alt=\"".$packageInfo["displayname"]."\" />".($packageInfo['beta']?"<ins></ins>":"")."</a>\n"; |
|
157 | + echo "\t\t\t\t\t\t<a href=\"http://".$host.$packageInfo['spk']."\"><img src=\"".$packageInfo['thumbnail'][0]."\" alt=\"".$packageInfo["displayname"]."\" />".($packageInfo['beta'] ? "<ins></ins>" : "")."</a>\n"; |
|
158 | 158 | echo "\t\t\t\t\t</div>\n"; |
159 | 159 | echo "\t\t\t\t\t<div class=\"spk-desc\">\n"; |
160 | 160 | echo "\t\t\t\t\t\t<span class=\"spk-title\">".$packageInfo["displayname"]." v".$packageInfo["version"]."</span><br />\n"; |
@@ -178,11 +178,11 @@ discard block |
||
178 | 178 | } |
179 | 179 | } |
180 | 180 | |
181 | -function DisplayPackagesJSON($packagesAvailable){ |
|
181 | +function DisplayPackagesJSON($packagesAvailable) { |
|
182 | 182 | $packagesJSON = array(); |
183 | 183 | global $host; |
184 | 184 | global $excludedSynoServices; |
185 | - foreach($packagesAvailable as $packageInfo){ |
|
185 | + foreach ($packagesAvailable as $packageInfo) { |
|
186 | 186 | $packageJSON = array( |
187 | 187 | "package" => $packageInfo["package"], |
188 | 188 | "version" => $packageInfo["version"], |
@@ -191,23 +191,23 @@ discard block |
||
191 | 191 | "link" => "http://".$host.$packageInfo['spk'], |
192 | 192 | "md5" => md5_file($packageInfo['spk']), |
193 | 193 | "size" => filesize($packageInfo['spk']), |
194 | - "qinst" => !empty($packageInfo['qinst'])?$packageInfo['qinst']:false, // quick install |
|
195 | - "qstart" => !empty($packageInfo['start'])?$packageInfo['start']:false, // quick start |
|
196 | - "depsers" => !empty($packageInfo['start_dep_services'])?$packageInfo['start_dep_services']:"", // required started packages |
|
197 | - "deppkgs" => !empty($packageInfo['install_dep_services'])?trim(str_replace($excludedSynoServices, "", $packageInfo['install_dep_services'])):"", |
|
194 | + "qinst" => !empty($packageInfo['qinst']) ? $packageInfo['qinst'] : false, // quick install |
|
195 | + "qstart" => !empty($packageInfo['start']) ? $packageInfo['start'] : false, // quick start |
|
196 | + "depsers" => !empty($packageInfo['start_dep_services']) ? $packageInfo['start_dep_services'] : "", // required started packages |
|
197 | + "deppkgs" => !empty($packageInfo['install_dep_services']) ? trim(str_replace($excludedSynoServices, "", $packageInfo['install_dep_services'])) : "", |
|
198 | 198 | // required installed packages, skips the known syno services |
199 | 199 | "maintainer" => $packageInfo["maintainer"], |
200 | - "changelog" => !empty($packageInfo["changelog"])?$packageInfo["changelog"]:"", |
|
201 | - "beta" => !empty($packageInfo['beta'])?$packageInfo['beta']:false, // beta channel |
|
202 | - "thumbnail" => $packageInfo['thumbnail'], // New property for newer synos, need to check if it works with old synos |
|
203 | - "icon" => $packageInfo['thumbnail'][0], // Old icon property for pre 4.2 compatibility |
|
200 | + "changelog" => !empty($packageInfo["changelog"]) ? $packageInfo["changelog"] : "", |
|
201 | + "beta" => !empty($packageInfo['beta']) ? $packageInfo['beta'] : false, // beta channel |
|
202 | + "thumbnail" => $packageInfo['thumbnail'], // New property for newer synos, need to check if it works with old synos |
|
203 | + "icon" => $packageInfo['thumbnail'][0], // Old icon property for pre 4.2 compatibility |
|
204 | 204 | //"icon" => $packageInfo['package_icon'], // Get icon from INFO file |
205 | 205 | |
206 | 206 | //"category" => 2, // New property introduced, no effect on othersources packages |
207 | 207 | //"download_count" => 6000, // Will only display values over 1000 |
208 | - "price" => 0, // New property |
|
208 | + "price" => 0, // New property |
|
209 | 209 | //"recent_download_count" => 1222, // Not sure what this does |
210 | - "type" => 0, // New property introduced, no effect on othersources packages |
|
210 | + "type" => 0, // New property introduced, no effect on othersources packages |
|
211 | 211 | "snapshot" => $packageInfo['snapshot'] // Adds multiple screenshots to package view |
212 | 212 | ); |
213 | 213 | $packagesJSON[] = $packageJSON; |
@@ -219,31 +219,31 @@ discard block |
||
219 | 219 | global $spkDir; |
220 | 220 | global $host; |
221 | 221 | $packagesList = GetDirectoryList($spkDir, ".*\.spk"); |
222 | - foreach($packagesList as $spkFile){ |
|
222 | + foreach ($packagesList as $spkFile) { |
|
223 | 223 | echo "\t\t\t\t<li><a href=\"http://".$host.$spkDir.$spkFile."\">".$spkFile."</a></li>\n"; |
224 | 224 | } |
225 | 225 | } |
226 | 226 | |
227 | 227 | function DisplaySynoModels($synologyModelsFile) { |
228 | - if(file_exists($synologyModelsFile)){ |
|
228 | + if (file_exists($synologyModelsFile)) { |
|
229 | 229 | $synologyModels = array(); |
230 | 230 | $fileHandle = fopen($synologyModelsFile, 'r'); |
231 | - while(!feof($fileHandle)) |
|
231 | + while (!feof($fileHandle)) |
|
232 | 232 | { |
233 | 233 | $line = explode("=", chop(str_replace("\"", "", fgets($fileHandle)))); |
234 | - if ($line[0]){ $synologyModels[$line[0]] = $line[1]; } |
|
234 | + if ($line[0]) { $synologyModels[$line[0]] = $line[1]; } |
|
235 | 235 | } |
236 | 236 | fclose($fileHandle); |
237 | 237 | ksort($synologyModels); |
238 | - foreach ($synologyModels as $synoName => $synoArch){ |
|
238 | + foreach ($synologyModels as $synoName => $synoArch) { |
|
239 | 239 | echo "\t\t\t\t<li class=\"syno-model\"><a href=\"?arch=".$synoArch."\">".$synoName."</a></li>\n"; |
240 | 240 | } |
241 | - } else { |
|
241 | + } else { |
|
242 | 242 | echo "\t\t\t\t<li>Couldn't find Synology models</li>"; |
243 | 243 | } |
244 | 244 | } |
245 | 245 | |
246 | -function GetDirectoryList ($directory, $filter){ |
|
246 | +function GetDirectoryList($directory, $filter) { |
|
247 | 247 | $results = array(); |
248 | 248 | $handler = opendir($directory); |
249 | 249 | while ($file = readdir($handler)) { |
@@ -43,8 +43,7 @@ discard block |
||
43 | 43 | } |
44 | 44 | echo stripslashes(json_encode(DisplayPackagesJSON(GetPackageList($arch, $channel, $major.".".$minor.".".$build)))); |
45 | 45 | } |
46 | -} |
|
47 | -elseif($_SERVER['REQUEST_METHOD'] == 'GET') |
|
46 | +} elseif($_SERVER['REQUEST_METHOD'] == 'GET') |
|
48 | 47 | { |
49 | 48 | $arch = trim($_GET['arch']); |
50 | 49 | $channel = trim($_GET['channel']); |
@@ -93,8 +92,7 @@ discard block |
||
93 | 92 | echo "\t\t</div>\n"; |
94 | 93 | echo "\t</body>\n"; |
95 | 94 | echo "</html>"; |
96 | -} |
|
97 | -else |
|
95 | +} else |
|
98 | 96 | { |
99 | 97 | header('Content-type: text/html'); |
100 | 98 | header('HTTP/1.1 404 Not Found'); |