getUserIpAddr(),$version)); $matches = []; if (preg_match(self::VERSION_REGEX,$version,$matches)) { // If xxx is "dev" we are a development version switch($matches[3]) { case 'dev': $current = Cache::remember('dev',self::CACHE_TIME,function() { $client = new Client; $url = sprintf('%s/projects/%d/repository/commits',self::GL_URL,self::GL_PROJECT); $response = $client->request('GET',$url,['form_params'=>['ref_name'=>'BRANCH-2.0','order'=>'default']]); if ($response->getStatusCode() === 200) { $result = collect(json_decode($response->getBody())); return $result->first(); } return NULL; }); if ($current) { $repository = sprintf('v%s-rel-%s',$matches[1],$current->short_id); // Find the tag associated with version $matches[1] and see if it is more recent than $matches[4] return ($matches[4] === $current->short_id) ? ['current'=>$repository] : ['upgrade'=>sprintf('v%s-%s-%s',$matches[1],$matches[3],$current->short_id)]; } else return ['unknown'=>'vn.n.n-dev-hhhhhhhh']; case 'rel': $current = Cache::remember('dev',self::CACHE_TIME,function() { $client = new Client; $url = sprintf('%s/projects/%d/repository/tags',self::GL_URL,self::GL_PROJECT); // Find the tag associated with version $matches[1] and see if there is a more recent version number $response = $client->request('GET',$url,['form_params'=>['ref_name'=>'master','sort'=>'desc']]); if ($response->getStatusCode() === 200) { $result = collect(json_decode($response->getBody())); return $result->first(); } return NULL; }); if ($current) { $repository = sprintf('v%s-rel-%s',$current->name,$current->commit->short_id); // If $matches[1] is smaller, "upgrade available" if ($matches[1] < $current->name) return ['upgrade'=>$repository]; // If $matches[1] is the same, validate that $matches[4] is current and the same and if not, error elseif ($matches[1] === $current->name) return ($matches[4] === $current->commit->short_id) ? ['current'=>$repository] : ['mismatch'=>$repository]; // if $matches[1] is higher, abort else return ['unknown'=>$repository]; } else return ['unknown'=>'vn.n.n-rel-hhhhhhhh']; } } // Return the current version return ['unknown'=>'vn.n.n-xxxx-hhhhhhhh']; } public function getUserIpAddr(): string { if (isset($_SERVER['HTTP_CLIENT_IP'])) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_X_FORWARDED'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED']; else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_FORWARDED'])) $ipaddress = $_SERVER['HTTP_FORWARDED']; else if(isset($_SERVER['REMOTE_ADDR'])) $ipaddress = $_SERVER['REMOTE_ADDR']; else $ipaddress = 'UNKNOWN'; return $ipaddress; } }