handle artifact download correctly
This commit is contained in:
		
							parent
							
								
									abf87f1955
								
							
						
					
					
						commit
						0709e92b6f
					
				| 
						 | 
					@ -73,35 +73,10 @@ function getArtifacts($job,$slug){
 | 
				
			||||||
    return getJson($url,getTokenHeaders(),true);
 | 
					    return getJson($url,getTokenHeaders(),true);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (isset($_REQUEST['api'])){
 | 
					function getArtifactsForPipeline($pipeline,$wf=workflowName,$job=jobName){
 | 
				
			||||||
    $action=$_REQUEST['api'];
 | 
					    $jstat=getJobStatus($pipeline,$wf,$job);
 | 
				
			||||||
    header("Content-Type: application/json");
 | 
					    if (! isset($jstat['job_number'])){
 | 
				
			||||||
    $par=array();
 | 
					        throw new Exception("no job number");
 | 
				
			||||||
    if ($action == 'status') {
 | 
					 | 
				
			||||||
        addVars(
 | 
					 | 
				
			||||||
            $par,
 | 
					 | 
				
			||||||
            ['pipeline', 'workflow', 'job'],
 | 
					 | 
				
			||||||
            array('workflow' => workflowName, 'job' => jobName)
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            $pstat = getJobStatus($par['pipeline'], $par['workflow'], $par['job']);
 | 
					 | 
				
			||||||
            echo(json_encode($pstat));
 | 
					 | 
				
			||||||
        } catch (Exception $e) {
 | 
					 | 
				
			||||||
            $rt=array('status'=>'error','error'=>$e->getMessage());
 | 
					 | 
				
			||||||
            echo(json_encode($rt));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        exit(0);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if ($action == 'artifacts'){
 | 
					 | 
				
			||||||
        addVars(
 | 
					 | 
				
			||||||
            $par,
 | 
					 | 
				
			||||||
            ['pipeline', 'workflow', 'job'],
 | 
					 | 
				
			||||||
            array('workflow' => workflowName, 'job' => jobName)
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
        try{
 | 
					 | 
				
			||||||
            $jstat=getJobStatus($par['pipeline'], $par['workflow'], $par['job']);
 | 
					 | 
				
			||||||
            if (! isset($jstat['project_slug'])){
 | 
					 | 
				
			||||||
                throw new Exception("no project_slug in job");
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (! isset($jstat['status'])){
 | 
					    if (! isset($jstat['status'])){
 | 
				
			||||||
        throw new Exception("no job status");
 | 
					        throw new Exception("no job status");
 | 
				
			||||||
| 
						 | 
					@ -110,13 +85,67 @@ if (isset($_REQUEST['api'])){
 | 
				
			||||||
        throw new Exception("invalid job status ".$jstat['status']);
 | 
					        throw new Exception("invalid job status ".$jstat['status']);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    $astat=getArtifacts($jstat['job_number'],$jstat['project_slug']);
 | 
					    $astat=getArtifacts($jstat['job_number'],$jstat['project_slug']);
 | 
				
			||||||
 | 
					    return $astat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					try {
 | 
				
			||||||
 | 
					    if (isset($_REQUEST['api'])) {
 | 
				
			||||||
 | 
					        $action = $_REQUEST['api'];
 | 
				
			||||||
 | 
					        header("Content-Type: application/json");
 | 
				
			||||||
 | 
					        $par = array();
 | 
				
			||||||
 | 
					        if ($action == 'status') {
 | 
				
			||||||
 | 
					            addVars(
 | 
				
			||||||
 | 
					                $par,
 | 
				
			||||||
 | 
					                ['pipeline', 'workflow', 'job'],
 | 
				
			||||||
 | 
					                array('workflow' => workflowName, 'job' => jobName)
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                $pstat = getJobStatus($par['pipeline'], $par['workflow'], $par['job']);
 | 
				
			||||||
 | 
					                echo (json_encode($pstat));
 | 
				
			||||||
 | 
					            } catch (Exception $e) {
 | 
				
			||||||
 | 
					                $rt = array('status' => 'error', 'error' => $e->getMessage());
 | 
				
			||||||
 | 
					                echo (json_encode($rt));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            exit(0);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ($action == 'artifacts') {
 | 
				
			||||||
 | 
					            addVars(
 | 
				
			||||||
 | 
					                $par,
 | 
				
			||||||
 | 
					                ['pipeline', 'workflow', 'job'],
 | 
				
			||||||
 | 
					                array('workflow' => workflowName, 'job' => jobName)
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                $astat = getArtifactsForPipeline($par['pipeline'], $par['workflow'], $par['job']);
 | 
				
			||||||
                echo (json_encode($astat));
 | 
					                echo (json_encode($astat));
 | 
				
			||||||
        }catch (Exception $e){
 | 
					            } catch (Exception $e) {
 | 
				
			||||||
            echo(json_encode(array('status'=>'error','error'=>$e->getMessage())));
 | 
					                echo (json_encode(array('status' => 'error', 'error' => $e->getMessage())));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            exit(0);
 | 
					            exit(0);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        die("invalid api $action");
 | 
					        die("invalid api $action");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (isset($_REQUEST['download'])) {
 | 
				
			||||||
 | 
					        $pipeline = $_REQUEST['download'];
 | 
				
			||||||
 | 
					        $par = array('pipeline' => $pipeline);
 | 
				
			||||||
 | 
					        addVars(
 | 
				
			||||||
 | 
					            $par,
 | 
				
			||||||
 | 
					            ['workflow', 'job'],
 | 
				
			||||||
 | 
					            array('workflow' => workflowName, 'job' => jobName)
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        $astat = getArtifactsForPipeline($par['pipeline'], $par['workflow'], $par['job']);
 | 
				
			||||||
 | 
					        if (!isset($astat['items']) || count($astat['items']) < 1) {
 | 
				
			||||||
 | 
					            die("no artifacts for job");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $dlurl = $astat['items'][0]['url'];
 | 
				
			||||||
 | 
					        #echo("DL: $dlurl\n");
 | 
				
			||||||
 | 
					        proxy($dlurl);
 | 
				
			||||||
 | 
					        exit(0);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    die("no action");
 | 
				
			||||||
 | 
					} catch (HTTPErrorException $h) {
 | 
				
			||||||
 | 
					    header($_SERVER['SERVER_PROTOCOL'] . " " . $h->code . " " . $h->getMessage());
 | 
				
			||||||
 | 
					    die($h->getMessage());
 | 
				
			||||||
 | 
					} catch (Exception $e) {
 | 
				
			||||||
 | 
					    header($_SERVER['SERVER_PROTOCOL'] . ' 500 ' . $e->getMessage());
 | 
				
			||||||
 | 
					    die($e->getMessage());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
die("no action");
 | 
					 | 
				
			||||||
?>
 | 
					?>
 | 
				
			||||||
| 
						 | 
					@ -39,6 +39,7 @@ function addVars(&$vars,$names,$defaults=null){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) {
 | 
					function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) {
 | 
				
			||||||
    $mr = $maxredirect === null ? 5 : intval($maxredirect);
 | 
					    $mr = $maxredirect === null ? 5 : intval($maxredirect);
 | 
				
			||||||
 | 
					    #echo("###handling redirects $mr\n");
 | 
				
			||||||
    if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off') && false) {
 | 
					    if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off') && false) {
 | 
				
			||||||
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $mr > 0);
 | 
					        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $mr > 0);
 | 
				
			||||||
        curl_setopt($ch, CURLOPT_MAXREDIRS, $mr);
 | 
					        curl_setopt($ch, CURLOPT_MAXREDIRS, $mr);
 | 
				
			||||||
| 
						 | 
					@ -48,20 +49,26 @@ function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) {
 | 
				
			||||||
            $newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
 | 
					            $newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
 | 
				
			||||||
            $rch = curl_copy_handle($ch);
 | 
					            $rch = curl_copy_handle($ch);
 | 
				
			||||||
            curl_setopt($rch, CURLOPT_HEADER, true);
 | 
					            curl_setopt($rch, CURLOPT_HEADER, true);
 | 
				
			||||||
            curl_setopt($rch, CURLOPT_NOBODY, true);
 | 
					            #curl_setopt($rch, CURLOPT_NOBODY, true);
 | 
				
			||||||
            curl_setopt($rch, CURLOPT_FORBID_REUSE, false);
 | 
					            curl_setopt($rch, CURLOPT_FORBID_REUSE, false);
 | 
				
			||||||
            curl_setopt($rch, CURLOPT_RETURNTRANSFER, true);
 | 
					            curl_setopt($rch, CURLOPT_RETURNTRANSFER, true);
 | 
				
			||||||
            do {
 | 
					            do {
 | 
				
			||||||
 | 
					                #echo("###trying $newurl\n");
 | 
				
			||||||
                curl_setopt($rch, CURLOPT_URL, $newurl);
 | 
					                curl_setopt($rch, CURLOPT_URL, $newurl);
 | 
				
			||||||
 | 
					                curl_setopt($ch, CURLOPT_URL, $newurl);
 | 
				
			||||||
                $header = curl_exec($rch);
 | 
					                $header = curl_exec($rch);
 | 
				
			||||||
                if (curl_errno($rch)) {
 | 
					                if (curl_errno($rch)) {
 | 
				
			||||||
                    $code = 0;
 | 
					                    $code = 0;
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    $code = curl_getinfo($rch, CURLINFO_HTTP_CODE);
 | 
					                    $code = curl_getinfo($rch, CURLINFO_HTTP_CODE);
 | 
				
			||||||
 | 
					                    #echo("###code=$code\n");
 | 
				
			||||||
                    if ($code == 301 || $code == 302) {
 | 
					                    if ($code == 301 || $code == 302) {
 | 
				
			||||||
                        preg_match('/Location:(.*?)\n/', $header, $matches);
 | 
					                        preg_match('/Location:(.*?)\n/', $header, $matches);
 | 
				
			||||||
                        $newurl = trim(array_pop($matches));
 | 
					                        $newurl = trim(array_pop($matches));
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        if ($code >= 300){
 | 
				
			||||||
 | 
					                            trigger_error("HTTP error $code");
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                        $code = 0;
 | 
					                        $code = 0;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -98,7 +105,7 @@ function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) {
 | 
				
			||||||
    return curl_exec($ch);
 | 
					    return curl_exec($ch);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function setFw($curl,$aheaders=null){
 | 
					function getFwHeaders($aheaders=null){
 | 
				
			||||||
    $headers=getallheaders();
 | 
					    $headers=getallheaders();
 | 
				
			||||||
    $FWHDR = ['User-Agent'];
 | 
					    $FWHDR = ['User-Agent'];
 | 
				
			||||||
    $outHeaders = array();
 | 
					    $outHeaders = array();
 | 
				
			||||||
| 
						 | 
					@ -112,41 +119,98 @@ function setFw($curl,$aheaders=null){
 | 
				
			||||||
            array_push($outHeaders,"$hk: $hv");
 | 
					            array_push($outHeaders,"$hk: $hv");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    curl_setopt($curl, CURLOPT_HTTPHEADER, $outHeaders);
 | 
					    return $outHeaders;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function getJson($url,$headers=null){
 | 
					function getJson($url,$headers=null,$doThrow=false){
 | 
				
			||||||
    $curl = curl_init();
 | 
					    $curl = curl_init();
 | 
				
			||||||
    curl_setopt($curl, CURLOPT_URL,$url);
 | 
					    curl_setopt($curl, CURLOPT_URL,$url);
 | 
				
			||||||
    curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
 | 
					    curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
 | 
				
			||||||
    setFw($curl,$headers);
 | 
					    curl_setopt($curl, CURLOPT_HTTPHEADER, getFwHeaders($headers));
 | 
				
			||||||
    $response = curl_exec($curl);
 | 
					    $response = curl_exec($curl);
 | 
				
			||||||
    $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
 | 
					    $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
 | 
				
			||||||
    #echo("curl exec for $url:$response:$httpcode\n");
 | 
					    #echo("curl exec for $url:$response:$httpcode\n");
 | 
				
			||||||
    if($e = curl_error($curl)) {
 | 
					    if($e = curl_error($curl)) {
 | 
				
			||||||
        curl_close($curl);
 | 
					        curl_close($curl);
 | 
				
			||||||
 | 
					        if ($doThrow) throw new Exception($e);
 | 
				
			||||||
        return array('error'=>$e);
 | 
					        return array('error'=>$e);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        if ($httpcode >= 300){
 | 
					        if ($httpcode >= 300){
 | 
				
			||||||
            curl_close($curl);
 | 
					            curl_close($curl);
 | 
				
			||||||
 | 
					            if ($doThrow) throw new Exception("HTTP error $httpcode");
 | 
				
			||||||
            return array('error'=>"HTTP code ".$httpcode);
 | 
					            return array('error'=>"HTTP code ".$httpcode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        curl_close($curl);
 | 
					        curl_close($curl);
 | 
				
			||||||
        return json_decode($response, true);
 | 
					        return json_decode($response, true);
 | 
				
			||||||
    }    
 | 
					    }    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					class HTTPErrorException extends Exception{
 | 
				
			||||||
 | 
					    public $code=0;
 | 
				
			||||||
 | 
					    public function __construct($c,$text){
 | 
				
			||||||
 | 
					        parent::__construct($text);
 | 
				
			||||||
 | 
					        $this->code=$c;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					function proxy_impl($url, $timeout=30,$headers=null,$num = 5)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    $nexturl=$url;
 | 
				
			||||||
 | 
					    while ($num > 0 && $nexturl != null) {
 | 
				
			||||||
 | 
					        $num--;
 | 
				
			||||||
 | 
					        $code=0;
 | 
				
			||||||
 | 
					        $ch = curl_init($nexturl);
 | 
				
			||||||
 | 
					        $nexturl=null;
 | 
				
			||||||
 | 
					        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
 | 
				
			||||||
 | 
					        curl_setopt($ch, CURLOPT_TIMEOUT,$timeout);
 | 
				
			||||||
 | 
					        if ($headers != null){
 | 
				
			||||||
 | 
					            curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        curl_setopt(
 | 
				
			||||||
 | 
					            $ch,
 | 
				
			||||||
 | 
					            CURLOPT_HEADERFUNCTION,
 | 
				
			||||||
 | 
					            function ($curl, $header) use(&$nexturl,&$code){
 | 
				
			||||||
 | 
					                #echo ("###header:$header\n");
 | 
				
			||||||
 | 
					                if ($code == 0){
 | 
				
			||||||
 | 
					                    $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                #echo ("???code=$code\n");
 | 
				
			||||||
 | 
					                if ($code == 301 || $code == 302) {
 | 
				
			||||||
 | 
					                    if(preg_match('/Location:(.*?)\n/', $header, $matches)){
 | 
				
			||||||
 | 
					                        $nexturl = trim(array_pop($matches));
 | 
				
			||||||
 | 
					                        #echo("???nexturl=$nexturl\n");
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if ($code != 0 && $code < 300){
 | 
				
			||||||
 | 
					                    header($header);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return strlen($header);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        curl_setopt(
 | 
				
			||||||
 | 
					            $ch,
 | 
				
			||||||
 | 
					            CURLOPT_WRITEFUNCTION,
 | 
				
			||||||
 | 
					            function ($curl, $body) use(&$code) {
 | 
				
			||||||
 | 
					                if ($code != 0 && $code < 300){
 | 
				
			||||||
 | 
					                    #echo ("### body part " . strlen($body)."\n");
 | 
				
			||||||
 | 
					                    echo $body;
 | 
				
			||||||
 | 
					                    return strlen($body);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        $rs = curl_exec($ch);
 | 
				
			||||||
 | 
					        #echo ("###code=$code\n");
 | 
				
			||||||
 | 
					        curl_close($ch);
 | 
				
			||||||
 | 
					        if ($nexturl == null){
 | 
				
			||||||
 | 
					            if ($code != 200) throw new HTTPErrorException($code,"HTTP status $code");
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    throw new HTTPErrorException(500,"too many redirects");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function proxy($url)
 | 
					function proxy($url)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    $ch = curl_init($url);
 | 
					    header('Access-Control-Allow-Origin:*');
 | 
				
			||||||
    curl_setopt_array(
 | 
					    return proxy_impl($url,30,getFwHeaders());
 | 
				
			||||||
        $ch,
 | 
					 | 
				
			||||||
        [
 | 
					 | 
				
			||||||
            CURLOPT_RETURNTRANSFER => true,
 | 
					 | 
				
			||||||
            CURLOPT_CONNECTTIMEOUT => 30,
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
    setFw($ch);
 | 
					 | 
				
			||||||
    $response = curl_exec_follow($ch);
 | 
					 | 
				
			||||||
    curl_close($ch);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
?>
 | 
					?>
 | 
				
			||||||
| 
						 | 
					@ -1,41 +1,51 @@
 | 
				
			||||||
<?php
 | 
					<?php
 | 
				
			||||||
	include("functions.php");
 | 
					include("functions.php");
 | 
				
			||||||
	include("config.php");
 | 
					include("config.php");
 | 
				
			||||||
	$api="https://api.github.com/repos/#user#/#repo#/releases/latest";
 | 
					$api = "https://api.github.com/repos/#user#/#repo#/releases/latest";
 | 
				
			||||||
	$download="https://github.com/#user#/#repo#/releases/download/#dlVersion#/#dlName#";
 | 
					$download = "https://github.com/#user#/#repo#/releases/download/#dlVersion#/#dlName#";
 | 
				
			||||||
	$manifest="?dlName=#mName#&dlVersion=#mVersion#&user=#user#&repo=#repo#";
 | 
					$manifest = "?dlName=#mName#&dlVersion=#mVersion#&user=#user#&repo=#repo#";
 | 
				
			||||||
	
 | 
					try {
 | 
				
			||||||
	if (isset($_REQUEST['api'])) {
 | 
						if (isset($_REQUEST['api'])) {
 | 
				
			||||||
		$vars=fillUserAndRepo();
 | 
							$vars = fillUserAndRepo();
 | 
				
			||||||
		proxy(replaceVars($api,$vars));
 | 
							proxy(replaceVars($api, $vars));
 | 
				
			||||||
		exit(0);
 | 
							exit(0);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (isset($_REQUEST['dlName'])){
 | 
						if (isset($_REQUEST['dlName'])) {
 | 
				
			||||||
		$vars=fillUserAndRepo();
 | 
							$vars = fillUserAndRepo();
 | 
				
			||||||
		$vars=addVars($vars,array('dlName','dlVersion'));
 | 
							$vars = addVars($vars, array('dlName', 'dlVersion'));
 | 
				
			||||||
		proxy(replaceVars($download,$vars));
 | 
							proxy(replaceVars($download, $vars));
 | 
				
			||||||
		exit(0);
 | 
							exit(0);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (isset($_REQUEST['flash'])){
 | 
						if (isset($_REQUEST['flash'])) {
 | 
				
			||||||
        $vars=fillUserAndRepo();
 | 
							$vars = fillUserAndRepo();
 | 
				
			||||||
		$json=getJson(replaceVars($api,$vars));
 | 
							$json = getJson(replaceVars($api, $vars));
 | 
				
			||||||
		$assets=$json['assets'];
 | 
							$assets = $json['assets'];
 | 
				
			||||||
		$targetUrl=null;
 | 
							$targetUrl = null;
 | 
				
			||||||
		$targetBase=$_REQUEST['flash'];
 | 
							$targetBase = $_REQUEST['flash'];
 | 
				
			||||||
		$mode='all';
 | 
							$mode = 'all';
 | 
				
			||||||
		if (isset($_REQUEST['update'])) $mode='update';
 | 
							if (isset($_REQUEST['update']))
 | 
				
			||||||
		$lb=strlen($targetBase);
 | 
								$mode = 'update';
 | 
				
			||||||
		foreach ($assets as &$asset){
 | 
							$lb = strlen($targetBase);
 | 
				
			||||||
            if (substr($asset['name'],0,$lb) == $targetBase){
 | 
							foreach ($assets as &$asset) {
 | 
				
			||||||
                if (! preg_match("/-$mode.bin/",$asset['name'])) continue;
 | 
								if (substr($asset['name'], 0, $lb) == $targetBase) {
 | 
				
			||||||
                $targetUrl=$asset['browser_download_url'];
 | 
									if (!preg_match("/-$mode.bin/", $asset['name']))
 | 
				
			||||||
 | 
										continue;
 | 
				
			||||||
 | 
									$targetUrl = $asset['browser_download_url'];
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (! $targetUrl) die("unable to find $targetBase $mode\n");
 | 
							if (!$targetUrl)
 | 
				
			||||||
 | 
								die("unable to find $targetBase $mode\n");
 | 
				
			||||||
		#echo("download for $targetBase=$targetUrl\n");
 | 
							#echo("download for $targetBase=$targetUrl\n");
 | 
				
			||||||
		proxy($targetUrl);
 | 
							proxy($targetUrl);
 | 
				
			||||||
		exit(0);
 | 
							exit(0);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	die("invalid request");
 | 
					} catch (HTTPErrorException $h) {
 | 
				
			||||||
	?>
 | 
						header($_SERVER['SERVER_PROTOCOL'] . " " . $h->code . " " . $h->getMessage());
 | 
				
			||||||
 | 
						die($h->getMessage());
 | 
				
			||||||
 | 
					} catch (Exception $e) {
 | 
				
			||||||
 | 
						header($_SERVER['SERVER_PROTOCOL'] . ' 500 ' . $e->getMessage());
 | 
				
			||||||
 | 
						die($e->getMessage());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					die("invalid request");
 | 
				
			||||||
 | 
					?>
 | 
				
			||||||
		Loading…
	
		Reference in New Issue