forked from uup-dump/api
Add option to get list of UUP without generation of links
This commit is contained in:
parent
eeb779eca9
commit
71ee367367
254
get.php
254
get.php
@ -19,11 +19,21 @@ require_once dirname(__FILE__).'/shared/main.php';
|
|||||||
require_once dirname(__FILE__).'/shared/requests.php';
|
require_once dirname(__FILE__).'/shared/requests.php';
|
||||||
require_once dirname(__FILE__).'/shared/packs.php';
|
require_once dirname(__FILE__).'/shared/packs.php';
|
||||||
|
|
||||||
|
/*
|
||||||
|
$updateId = Update Identifier
|
||||||
|
$usePack = Desired language
|
||||||
|
$desiredEdition = Desired edition
|
||||||
|
|
||||||
|
$requestType = 0 = uncached request,;
|
||||||
|
1 = use cache if available;
|
||||||
|
2 = offline information retrieval
|
||||||
|
*/
|
||||||
|
|
||||||
function uupGetFiles(
|
function uupGetFiles(
|
||||||
$updateId = 'c2a1d787-647b-486d-b264-f90f3782cdc6',
|
$updateId = 'c2a1d787-647b-486d-b264-f90f3782cdc6',
|
||||||
$usePack = 0,
|
$usePack = 0,
|
||||||
$desiredEdition = 0,
|
$desiredEdition = 0,
|
||||||
$cacheRequests = 0
|
$requestType = 0
|
||||||
) {
|
) {
|
||||||
uupApiPrintBrand();
|
uupApiPrintBrand();
|
||||||
|
|
||||||
@ -95,9 +105,6 @@ function uupGetFiles(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$cacheHash = hash('sha1', strtolower("api-get-$updateId"));
|
|
||||||
$cached = 0;
|
|
||||||
|
|
||||||
$rev = 1;
|
$rev = 1;
|
||||||
if(preg_match('/_rev\./', $updateId)) {
|
if(preg_match('/_rev\./', $updateId)) {
|
||||||
$rev = preg_replace('/.*_rev\./', '', $updateId);
|
$rev = preg_replace('/.*_rev\./', '', $updateId);
|
||||||
@ -108,6 +115,115 @@ function uupGetFiles(
|
|||||||
$updateBuild = (isset($info['build'])) ? $info['build'] : 'UNKNOWN';
|
$updateBuild = (isset($info['build'])) ? $info['build'] : 'UNKNOWN';
|
||||||
$updateName = (isset($info['title'])) ? $info['title'] : 'Unknown update: '.$updateId;
|
$updateName = (isset($info['title'])) ? $info['title'] : 'Unknown update: '.$updateId;
|
||||||
|
|
||||||
|
if($requestType < 2) {
|
||||||
|
$files = uupGetOnlineFiles($updateId, $rev, $info, $requestType);
|
||||||
|
} else {
|
||||||
|
$files = uupGetOfflineFiles($info);
|
||||||
|
}
|
||||||
|
|
||||||
|
$baseless = preg_grep('/^baseless_|-baseless\....$/i', array_keys($files));
|
||||||
|
foreach($baseless as $val) {
|
||||||
|
if(isset($files[$val])) unset($files[$val]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$psf = array_keys($files);
|
||||||
|
$psf = preg_grep('/\.psf$/i', $psf);
|
||||||
|
|
||||||
|
$removeFiles = array();
|
||||||
|
foreach($psf as $val) {
|
||||||
|
$name = preg_replace('/\.psf$/i', '', $val);
|
||||||
|
$removeFiles[] = $name;
|
||||||
|
unset($files[$val]);
|
||||||
|
}
|
||||||
|
unset($index, $name, $psf);
|
||||||
|
|
||||||
|
$temp = preg_grep('/'.$updateArch.'_.*|arm64.arm_.*/i', $removeFiles);
|
||||||
|
foreach($temp as $key => $val) {
|
||||||
|
if(isset($files[$val.'.cab'])) unset($files[$val.'.cab']);
|
||||||
|
unset($removeFiles[$key]);
|
||||||
|
}
|
||||||
|
unset($temp);
|
||||||
|
|
||||||
|
foreach($removeFiles as $val) {
|
||||||
|
if(isset($files[$val.'.esd'])) {
|
||||||
|
if(isset($files[$val.'.cab'])) unset($files[$val.'.cab']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($removeFiles);
|
||||||
|
|
||||||
|
$filesKeys = array_keys($files);
|
||||||
|
|
||||||
|
switch($fileListSource) {
|
||||||
|
case 'UPDATEONLY':
|
||||||
|
$skipPackBuild = 1;
|
||||||
|
$removeFiles = preg_grep('/Windows10\.0-KB.*-EXPRESS/i', $filesKeys);
|
||||||
|
|
||||||
|
foreach($removeFiles as $val) {
|
||||||
|
if(isset($files[$val])) unset($files[$val]);
|
||||||
|
}
|
||||||
|
|
||||||
|
unset($removeFiles, $temp);
|
||||||
|
$filesKeys = array_keys($files);
|
||||||
|
|
||||||
|
$filesKeys = preg_grep('/Windows10\.0-KB/i', $filesKeys);
|
||||||
|
if(count($filesKeys) == 0) {
|
||||||
|
return array('error' => 'NOT_CUMULATIVE_UPDATE');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'WUBFILE':
|
||||||
|
$skipPackBuild = 1;
|
||||||
|
$filesKeys = preg_grep('/WindowsUpdateBox.exe/i', $filesKeys);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($fileListSource == 'GENERATEDPACKS') {
|
||||||
|
$temp = preg_grep('/Windows10\.0-KB.*-EXPRESS/i', $filesKeys, PREG_GREP_INVERT);
|
||||||
|
$temp = preg_grep('/Windows10\.0-KB/i', $temp);
|
||||||
|
$filesList = array_merge($filesList, $temp);
|
||||||
|
|
||||||
|
$newFiles = array();
|
||||||
|
foreach($filesList as $val) {
|
||||||
|
$name = preg_replace('/~31bf3856ad364e35/', '', $val);
|
||||||
|
$name = preg_replace('/~~\.|~\./', '.', $name);
|
||||||
|
$name = preg_replace('/~/', '-', $name);
|
||||||
|
$name = strtolower($name);
|
||||||
|
|
||||||
|
if(isset($files[$name])) {
|
||||||
|
$newFiles[$name] = $files[$name];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$files = $newFiles;
|
||||||
|
$filesKeys = array_keys($files);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(empty($filesKeys)) {
|
||||||
|
return array('error' => 'NO_FILES');
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($filesKeys as $val) {
|
||||||
|
$filesNew[$val] = $files[$val];
|
||||||
|
}
|
||||||
|
|
||||||
|
$files = $filesNew;
|
||||||
|
ksort($files);
|
||||||
|
|
||||||
|
consoleLogger('Successfully parsed the information.');
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'apiVersion' => uupApiVersion(),
|
||||||
|
'updateName' => $updateName,
|
||||||
|
'arch' => $updateArch,
|
||||||
|
'build' => $updateBuild,
|
||||||
|
'files' => $files,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function uupGetOnlineFiles($updateId, $rev, $info, $cacheRequests) {
|
||||||
|
$cacheHash = hash('sha1', strtolower("api-get-${updateId}_rev.$rev"));
|
||||||
|
$cached = 0;
|
||||||
|
|
||||||
if(file_exists('cache/'.$cacheHash.'.json.gz') && $cacheRequests == 1) {
|
if(file_exists('cache/'.$cacheHash.'.json.gz') && $cacheRequests == 1) {
|
||||||
$cache = @gzdecode(@file_get_contents('cache/'.$cacheHash.'.json.gz'));
|
$cache = @gzdecode(@file_get_contents('cache/'.$cacheHash.'.json.gz'));
|
||||||
$cache = json_decode($cache, 1);
|
$cache = json_decode($cache, 1);
|
||||||
@ -224,103 +340,37 @@ function uupGetFiles(
|
|||||||
$files[$newName] = $temp;
|
$files[$newName] = $temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unset($temp, $newName);
|
|
||||||
|
|
||||||
$baseless = preg_grep('/^baseless_|-baseless\....$/i', array_keys($files));
|
return $files;
|
||||||
foreach($baseless as $val) {
|
}
|
||||||
if(isset($files[$val])) unset($files[$val]);
|
|
||||||
}
|
function uupGetOfflineFiles($info) {
|
||||||
|
if(empty($info['files'])) return array();
|
||||||
$psf = array_keys($files);
|
|
||||||
$psf = preg_grep('/\.psf$/i', $psf);
|
consoleLogger('Parsing information...');
|
||||||
|
foreach($info['files'] as $sha1 => $val) {
|
||||||
$removeFiles = array();
|
$name = $val['name'];
|
||||||
foreach($psf as $val) {
|
$size = $val['size'];
|
||||||
$name = preg_replace('/\.psf$/i', '', $val);
|
if(!isset($fileSizes[$name])) $fileSizes[$name] = 0;
|
||||||
$removeFiles[] = $name;
|
|
||||||
unset($files[$val]);
|
if($size > $fileSizes[$name]) {
|
||||||
}
|
$fileSizes[$name] = $size;
|
||||||
unset($index, $name, $psf);
|
|
||||||
|
$temp = array();
|
||||||
$temp = preg_grep('/'.$updateArch.'_.*|arm64.arm_.*/i', $removeFiles);
|
$temp['sha1'] = $sha1;
|
||||||
foreach($temp as $key => $val) {
|
$temp['size'] = $size;
|
||||||
if(isset($files[$val.'.cab'])) unset($files[$val.'.cab']);
|
$temp['url'] = null;
|
||||||
unset($removeFiles[$key]);
|
$temp['uuid'] = null;
|
||||||
}
|
$temp['expire'] = 0;
|
||||||
unset($temp);
|
|
||||||
|
$newName = preg_replace('/^cabs_|^metadataesd_|~31bf3856ad364e35/i', '', $name);
|
||||||
foreach($removeFiles as $val) {
|
$newName = preg_replace('/~~\.|~\./', '.', $newName);
|
||||||
if(isset($files[$val.'.esd'])) {
|
$newName = preg_replace('/~/', '-', $newName);
|
||||||
if(isset($files[$val.'.cab'])) unset($files[$val.'.cab']);
|
$newName = strtolower($newName);
|
||||||
}
|
|
||||||
}
|
$files[$newName] = $temp;
|
||||||
unset($removeFiles);
|
}
|
||||||
|
}
|
||||||
$filesKeys = array_keys($files);
|
|
||||||
|
return $files;
|
||||||
switch($fileListSource) {
|
|
||||||
case 'UPDATEONLY':
|
|
||||||
$skipPackBuild = 1;
|
|
||||||
$removeFiles = preg_grep('/Windows10\.0-KB.*-EXPRESS/i', $filesKeys);
|
|
||||||
|
|
||||||
foreach($removeFiles as $val) {
|
|
||||||
if(isset($files[$val])) unset($files[$val]);
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($removeFiles, $temp);
|
|
||||||
$filesKeys = array_keys($files);
|
|
||||||
|
|
||||||
$filesKeys = preg_grep('/Windows10\.0-KB/i', $filesKeys);
|
|
||||||
if(count($filesKeys) == 0) {
|
|
||||||
return array('error' => 'NOT_CUMULATIVE_UPDATE');
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'WUBFILE':
|
|
||||||
$skipPackBuild = 1;
|
|
||||||
$filesKeys = preg_grep('/WindowsUpdateBox.exe/i', $filesKeys);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($fileListSource == 'GENERATEDPACKS') {
|
|
||||||
$temp = preg_grep('/Windows10\.0-KB.*-EXPRESS/i', $filesKeys, PREG_GREP_INVERT);
|
|
||||||
$temp = preg_grep('/Windows10\.0-KB/i', $temp);
|
|
||||||
$filesList = array_merge($filesList, $temp);
|
|
||||||
|
|
||||||
$newFiles = array();
|
|
||||||
foreach($filesList as $val) {
|
|
||||||
$name = preg_replace('/~31bf3856ad364e35/', '', $val);
|
|
||||||
$name = preg_replace('/~~\.|~\./', '.', $name);
|
|
||||||
$name = preg_replace('/~/', '-', $name);
|
|
||||||
$name = strtolower($name);
|
|
||||||
|
|
||||||
if(isset($files[$name])) {
|
|
||||||
$newFiles[$name] = $files[$name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$files = $newFiles;
|
|
||||||
$filesKeys = array_keys($files);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(empty($filesKeys)) {
|
|
||||||
return array('error' => 'NO_FILES');
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach($filesKeys as $val) {
|
|
||||||
$filesNew[$val] = $files[$val];
|
|
||||||
}
|
|
||||||
|
|
||||||
$files = $filesNew;
|
|
||||||
ksort($files);
|
|
||||||
|
|
||||||
consoleLogger('Successfully parsed the information.');
|
|
||||||
|
|
||||||
return array(
|
|
||||||
'apiVersion' => uupApiVersion(),
|
|
||||||
'updateName' => $updateName,
|
|
||||||
'arch' => $updateArch,
|
|
||||||
'build' => $updateBuild,
|
|
||||||
'files' => $files,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ limitations under the License.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
function uupApiVersion() {
|
function uupApiVersion() {
|
||||||
return '1.18.0';
|
return '1.19.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once dirname(__FILE__).'/auths.php';
|
require_once dirname(__FILE__).'/auths.php';
|
||||||
|
Loading…
Reference in New Issue
Block a user