forked from uup-dump/api
ni_release / sha256 changes (#19)
add preliminary support for ni_release Apps as standalone edition if equivalent cab files exist, exclude updates msu files (from download only) exclude unnecessary baseless/express files append 8-sha1 name suffix only for dupliicate files
This commit is contained in:
parent
972cff36a5
commit
a46a5628c0
78
get.php
78
get.php
@ -79,6 +79,8 @@ function uupGetFiles(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$appEdition = 0;
|
||||||
|
|
||||||
if(!is_array($desiredEdition)) {
|
if(!is_array($desiredEdition)) {
|
||||||
$desiredEdition = strtoupper($desiredEdition);
|
$desiredEdition = strtoupper($desiredEdition);
|
||||||
$fileListSource = $desiredEdition;
|
$fileListSource = $desiredEdition;
|
||||||
@ -104,6 +106,8 @@ function uupGetFiles(
|
|||||||
|
|
||||||
case 'UPDATEONLY': break;
|
case 'UPDATEONLY': break;
|
||||||
|
|
||||||
|
case 'APP': $appEdition = 1;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if(!isset($genPack[$usePack][$desiredEdition])) {
|
if(!isset($genPack[$usePack][$desiredEdition])) {
|
||||||
return array('error' => 'UNSUPPORTED_COMBINATION');
|
return array('error' => 'UNSUPPORTED_COMBINATION');
|
||||||
@ -164,8 +168,7 @@ function uupGetFiles(
|
|||||||
if(isset($filesInfoList[$val])) unset($filesInfoList[$val]);
|
if(isset($filesInfoList[$val])) unset($filesInfoList[$val]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$sha256capable) {
|
$baseless = preg_grep('/^baseless_|Windows(10|11)\.0-KB.*-EXPRESS|SSU-.*-EXPRESS/i', array_keys($filesInfoList));
|
||||||
$baseless = preg_grep('/^baseless_|-baseless\....$/i', array_keys($filesInfoList));
|
|
||||||
foreach($baseless as $val) {
|
foreach($baseless as $val) {
|
||||||
if(isset($filesInfoList[$val])) unset($filesInfoList[$val]);
|
if(isset($filesInfoList[$val])) unset($filesInfoList[$val]);
|
||||||
}
|
}
|
||||||
@ -175,7 +178,7 @@ function uupGetFiles(
|
|||||||
|
|
||||||
$psfk = preg_grep('/Windows(10|11)\.0-KB.*/i', $psf);
|
$psfk = preg_grep('/Windows(10|11)\.0-KB.*/i', $psf);
|
||||||
$psfk = preg_grep('/.*-EXPRESS/i', $psfk, PREG_GREP_INVERT);
|
$psfk = preg_grep('/.*-EXPRESS/i', $psfk, PREG_GREP_INVERT);
|
||||||
if($build > 21380) foreach($psfk as $key => $val) {
|
foreach($psfk as $key => $val) {
|
||||||
if(isset($psf[$key])) unset($psf[$key]);
|
if(isset($psf[$key])) unset($psf[$key]);
|
||||||
}
|
}
|
||||||
unset($psfk);
|
unset($psfk);
|
||||||
@ -201,7 +204,15 @@ function uupGetFiles(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
unset($removeFiles);
|
unset($removeFiles);
|
||||||
|
|
||||||
|
$msu = array_keys($filesInfoList);
|
||||||
|
$msu = preg_grep('/\.msu$/i', $msu);
|
||||||
|
$removeMSUs = array();
|
||||||
|
foreach($msu as $val) {
|
||||||
|
$name = preg_replace('/\.msu$/i', '', $val);
|
||||||
|
$removeMSUs[] = $name;
|
||||||
}
|
}
|
||||||
|
unset($index, $name, $msu);
|
||||||
|
|
||||||
$filesInfoKeys = array_keys($filesInfoList);
|
$filesInfoKeys = array_keys($filesInfoList);
|
||||||
|
|
||||||
@ -215,10 +226,17 @@ function uupGetFiles(
|
|||||||
}
|
}
|
||||||
unset($removeFiles);
|
unset($removeFiles);
|
||||||
|
|
||||||
|
foreach($removeMSUs as $val) {
|
||||||
|
if(isset($filesInfoList[$val.'.cab'])) {
|
||||||
|
if(isset($filesInfoList[$val.'.msu'])) unset($filesInfoList[$val.'.msu']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($removeMSUs);
|
||||||
|
|
||||||
$filesInfoKeys = array_keys($filesInfoList);
|
$filesInfoKeys = array_keys($filesInfoList);
|
||||||
$temp = preg_grep('/.*?AggregatedMetadata.*?\.cab|.*?DesktopDeployment.*?\.cab/i', $filesInfoKeys);
|
$temp = preg_grep('/.*?AggregatedMetadata.*?\.cab|.*?DesktopDeployment.*?\.cab/i', $filesInfoKeys);
|
||||||
|
|
||||||
$filesInfoKeys = preg_grep('/Windows(10|11)\.0-KB|SSU-.*?\.cab/i', $filesInfoKeys);
|
$filesInfoKeys = preg_grep('/Windows(10|11)\.0-KB|SSU-.*?\....$/i', $filesInfoKeys);
|
||||||
if(count($filesInfoKeys) == 0) {
|
if(count($filesInfoKeys) == 0) {
|
||||||
return array('error' => 'NOT_CUMULATIVE_UPDATE');
|
return array('error' => 'NOT_CUMULATIVE_UPDATE');
|
||||||
}
|
}
|
||||||
@ -238,11 +256,21 @@ function uupGetFiles(
|
|||||||
if($updateSku == 135) $uupCleanFunc = 'uupCleanHolo';
|
if($updateSku == 135) $uupCleanFunc = 'uupCleanHolo';
|
||||||
|
|
||||||
if($fileListSource == 'GENERATEDPACKS') {
|
if($fileListSource == 'GENERATEDPACKS') {
|
||||||
|
foreach($removeMSUs as $val) {
|
||||||
|
if(isset($filesInfoList[$val.'.cab'])) {
|
||||||
|
if(isset($filesInfoList[$val.'.msu'])) unset($filesInfoList[$val.'.msu']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($removeMSUs);
|
||||||
|
$filesInfoKeys = array_keys($filesInfoList);
|
||||||
|
|
||||||
$temp = preg_grep('/Windows(10|11)\.0-KB.*-EXPRESS|Windows(10|11)\.0-KB.*-baseless|SSU-.*-.{3,5}-EXPRESS/i', $filesInfoKeys, PREG_GREP_INVERT);
|
$temp = preg_grep('/Windows(10|11)\.0-KB.*-EXPRESS|Windows(10|11)\.0-KB.*-baseless|SSU-.*-.{3,5}-EXPRESS/i', $filesInfoKeys, PREG_GREP_INVERT);
|
||||||
if($build > 21380) {
|
if($appEdition) {
|
||||||
$temp = preg_grep('/Windows(10|11)\.0-KB|SSU-.*?\.cab|.*?AggregatedMetadata.*?\.cab|.*?DesktopDeployment.*?\.cab/i', $temp);
|
$temp = preg_grep('/.*?AggregatedMetadata.*?\.cab|.*?DesktopDeployment.*?\.cab/i', $temp);
|
||||||
|
} else if($build > 21380) {
|
||||||
|
$temp = preg_grep('/Windows(10|11)\.0-KB|SSU-.*?\....$|.*?AggregatedMetadata.*?\.cab|.*?DesktopDeployment.*?\.cab/i', $temp);
|
||||||
} else {
|
} else {
|
||||||
$temp = preg_grep('/Windows(10|11)\.0-KB|SSU-.*?\.cab/i', $temp);
|
$temp = preg_grep('/Windows(10|11)\.0-KB|SSU-.*?\....$/i', $temp);
|
||||||
}
|
}
|
||||||
$filesPacksList = array_merge($filesPacksList, $temp);
|
$filesPacksList = array_merge($filesPacksList, $temp);
|
||||||
|
|
||||||
@ -390,9 +418,12 @@ function uupGetOnlineFiles($updateId, $rev, $info, $cacheRequests, $type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($sha256capable) {
|
if($sha256capable) {
|
||||||
$n = strrpos($name, '.');
|
$tempname = uupCleanSha256($name);
|
||||||
if($n === false) $n = strlen($name);
|
if(isset($files[$tempname])) {
|
||||||
$newName = substr($name, 0, $n).'_'.substr($sha1, 0, 8).substr($name, $n);
|
$newName = uupAppendSha1($tempname, $sha1);
|
||||||
|
} else {
|
||||||
|
$newName = $tempname;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$newName = $uupCleanFunc($name);
|
$newName = $uupCleanFunc($name);
|
||||||
}
|
}
|
||||||
@ -459,9 +490,12 @@ function uupGetOfflineFiles($info) {
|
|||||||
$sha256 = isset($val['sha256']) ? $val['sha256'] : null;
|
$sha256 = isset($val['sha256']) ? $val['sha256'] : null;
|
||||||
|
|
||||||
if($sha256capable) {
|
if($sha256capable) {
|
||||||
$n = strrpos($name, '.');
|
$tempname = uupCleanSha256($name);
|
||||||
if($n === false) $n = strlen($name);
|
if(isset($files[$tempname])) {
|
||||||
$newName = substr($name, 0, $n).'_'.substr($sha1, 0, 8).substr($name, $n);
|
$newName = uupAppendSha1($tempname, $sha1);
|
||||||
|
} else {
|
||||||
|
$newName = $tempname;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$newName = $uupCleanFunc($name);
|
$newName = $uupCleanFunc($name);
|
||||||
}
|
}
|
||||||
@ -487,6 +521,24 @@ function uupGetOfflineFiles($info) {
|
|||||||
return $files;
|
return $files;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function uupAppendSha1($name, $sha1) {
|
||||||
|
$n = strrpos($name, '.');
|
||||||
|
if($n === false) $n = strlen($name);
|
||||||
|
return substr($name, 0, $n).'_'.substr($sha1, 0, 8).substr($name, $n);
|
||||||
|
}
|
||||||
|
|
||||||
|
function uupCleanSha256($name) {
|
||||||
|
$replace = array(
|
||||||
|
'prss_signed_appx_' => null,
|
||||||
|
'~31bf3856ad364e35' => null,
|
||||||
|
'~~.' => '.',
|
||||||
|
'~.' => '.',
|
||||||
|
'~' => '-',
|
||||||
|
);
|
||||||
|
|
||||||
|
return strtr($name, $replace);
|
||||||
|
}
|
||||||
|
|
||||||
function uupCleanName($name) {
|
function uupCleanName($name) {
|
||||||
$replace = array(
|
$replace = array(
|
||||||
'cabs_' => null,
|
'cabs_' => null,
|
||||||
|
@ -16,7 +16,7 @@ limitations under the License.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
function uupApiVersion() {
|
function uupApiVersion() {
|
||||||
return '1.32.0';
|
return '1.32.2';
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once dirname(__FILE__).'/auths.php';
|
require_once dirname(__FILE__).'/auths.php';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
Copyright 2021 UUP dump API authors
|
Copyright 2022 UUP dump API authors
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@ -19,6 +19,7 @@ require_once dirname(__FILE__).'/../listid.php';
|
|||||||
|
|
||||||
function uupGetInfoTexts() {
|
function uupGetInfoTexts() {
|
||||||
$fancyLangNames = array(
|
$fancyLangNames = array(
|
||||||
|
'neutral' => 'Any Language',
|
||||||
'ar-sa' => 'Arabic (Saudi Arabia)',
|
'ar-sa' => 'Arabic (Saudi Arabia)',
|
||||||
'bg-bg' => 'Bulgarian',
|
'bg-bg' => 'Bulgarian',
|
||||||
'cs-cz' => 'Czech',
|
'cs-cz' => 'Czech',
|
||||||
@ -61,6 +62,8 @@ function uupGetInfoTexts() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
$fancyEditionNames = array(
|
$fancyEditionNames = array(
|
||||||
|
'APP' => 'Microsoft Store Inbox Apps',
|
||||||
|
'FOD' => 'Features on Demand (Capabilities)',
|
||||||
'CLOUD' => 'Windows S',
|
'CLOUD' => 'Windows S',
|
||||||
'CLOUDN' => 'Windows S N',
|
'CLOUDN' => 'Windows S N',
|
||||||
'CLOUDE' => 'Windows Lean',
|
'CLOUDE' => 'Windows Lean',
|
||||||
|
@ -26,7 +26,7 @@ function composeDeviceAttributes($flight, $ring, $build, $arch, $sku, $type) {
|
|||||||
$arch = $arch[0];
|
$arch = $arch[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if($sku == 125 || $sku == 126 || $sku == 7 || $sku == 8 || $sku == 12 || $sku == 13 || $sku == 79 || $sku == 80 || $sku == 120 || $sku == 145 || $sku == 146 || $sku == 147 || $sku == 148 || $sku == 159 || $sku == 160 || $sku == 406 || $sku == 407 || $sku == 408)
|
if($sku == 125 || $sku == 126)
|
||||||
$blockUpgrades = 1;
|
$blockUpgrades = 1;
|
||||||
|
|
||||||
$dvcFamily = 'Windows.Desktop';
|
$dvcFamily = 'Windows.Desktop';
|
||||||
@ -34,9 +34,10 @@ function composeDeviceAttributes($flight, $ring, $build, $arch, $sku, $type) {
|
|||||||
if($sku == 119) {
|
if($sku == 119) {
|
||||||
$dvcFamily = 'Windows.Team';
|
$dvcFamily = 'Windows.Team';
|
||||||
}
|
}
|
||||||
if($sku == 7 || $sku == 8 || $sku == 12 || $sku == 13 || $sku == 79 || $sku == 80 || $sku == 120 || $sku == 145 || $sku == 146 || $sku == 147 || $sku == 148 || $sku == 159 || $sku == 160 || $sku == 406 || $sku == 407 || $sku == 408) {
|
if(in_array($sku, [7,8,12,13,79,80,120,145,146,147,148,159,160,406,407,408])) {
|
||||||
$dvcFamily = 'Windows.Server';
|
$dvcFamily = 'Windows.Server';
|
||||||
$insType = 'Server';
|
$insType = 'Server';
|
||||||
|
$blockUpgrades = 1;
|
||||||
}
|
}
|
||||||
/*/ Hololens
|
/*/ Hololens
|
||||||
if($sku == 135) {
|
if($sku == 135) {
|
||||||
@ -331,7 +332,7 @@ function composeFetchUpdRequest($device, $encData, $arch, $flight, $ring, $build
|
|||||||
$branch = branchFromBuild($build);
|
$branch = branchFromBuild($build);
|
||||||
|
|
||||||
$mainProduct = 'Client.OS.rs2';
|
$mainProduct = 'Client.OS.rs2';
|
||||||
if($sku == 7 || $sku == 8 || $sku == 12 || $sku == 13 || $sku == 79 || $sku == 80 || $sku == 120 || $sku == 145 || $sku == 146 || $sku == 147 || $sku == 148 || $sku == 159 || $sku == 160 || $sku == 406 || $sku == 407 || $sku == 408) {
|
if(in_array($sku, [7,8,12,13,79,80,120,145,146,147,148,159,160,406,407,408])) {
|
||||||
$mainProduct = 'Server.OS';
|
$mainProduct = 'Server.OS';
|
||||||
}
|
}
|
||||||
/*/ Hololens
|
/*/ Hololens
|
||||||
|
Loading…
Reference in New Issue
Block a user