(ConfigChanged|CookieExpired)<\/ErrorCode>/', $out)) { $oldCookie = uupEncryptedData(); @unlink(dirname(__FILE__).'/cookie.json'); $postData = str_replace($oldCookie, uupEncryptedData(), $postData); return sendWuPostRequest($url, $postData); } $outDecoded = html_entity_decode($out); preg_match('/.*?<\/NewCookie>|.*?<\/GetCookieResult>/', $outDecoded, $cookieData); if(!empty($cookieData)) { preg_match('/.*<\/Expiration>/', $cookieData[0], $expirationDate); preg_match('/.*<\/EncryptedData>/', $cookieData[0], $encryptedData); $expirationDate = preg_replace('/|<\/Expiration>/', '', $expirationDate[0]); $encryptedData = preg_replace('/|<\/EncryptedData>/', '', $encryptedData[0]); $fileData = array( 'expirationDate' => $expirationDate, 'encryptedData' => $encryptedData, ); @file_put_contents(dirname(__FILE__).'/cookie.json', json_encode($fileData)); } return $out; } function consoleLogger($message, $showTime = 1) { if(php_sapi_name() != 'cli') return $currTime = ''; if($showTime) { $currTime = '['.date('Y-m-d H:i:s T', time()).'] '; } $msg = $currTime.$message; fwrite(STDERR, $msg."\n"); } function uupDumpApiGetConfig() { if(!file_exists('config.ini')) { return null; } return parse_ini_file('config.ini'); } function uupApiCheckUpdateId($updateId) { return preg_match( '/^[\da-fA-F]{8}-([\da-fA-F]{4}-){3}[\da-fA-F]{12}(_rev\.\d+)?$/', $updateId ); } function uupApiIsServer($skuId) { $serverSkus = [ 7, 8, 12, 13, 79, 80, 120, 145, 146, 147, 148, 159, 160, 406, 407, 408 ]; return in_array($skuId, $serverSkus); } function uupApiBuildMajor($build) { if($build == null) return null; if(!str_contains($build, '.')) return intval($build); return intval(explode('.', $build)[0]); } function uupApiFixDownloadLink($link) { if($link == null) return null; return str_replace( 'http://tlu.dl.delivery.mp.microsoft.com', 'https://uupdump.sf.tlu.dl.delivery.mp.microsoft.com', $link ); } function uupApiReadJson($path) { $data = @file_get_contents($path); if(empty($data)) return false; return json_decode($data, true); } function uupApiWriteJson($path, $data) { return file_put_contents($path, json_encode($data)."\n"); } function uupApiPacksExist($updateId) { return file_exists('packs/'.$updateId.'.json.gz'); } function uupApiConfigIsTrue($config) { $data = uupDumpApiGetConfig(); if(!isset($data[$config])) return false; return $data[$config] == true; }