No cosmetic layout fixes, no functional changes

This commit is contained in:
Deon George 2023-03-03 10:05:55 +11:00
parent 2f9ea10be1
commit a389264ec4
2 changed files with 83 additions and 79 deletions

View File

@ -3,9 +3,9 @@ root = true
[*] [*]
charset = utf-8 charset = utf-8
end_of_line = lf end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4 indent_size = 4
indent_style = tab
insert_final_newline = false
trim_trailing_whitespace = true trim_trailing_whitespace = true
[*.md] [*.md]
@ -13,3 +13,6 @@ trim_trailing_whitespace = false
[*.{yml,yaml}] [*.{yml,yaml}]
indent_size = 2 indent_size = 2
[docker-compose.yml]
indent_size = 4

View File

@ -9,104 +9,105 @@ use Illuminate\Support\Facades\Log;
class VersionController extends Controller class VersionController extends Controller
{ {
const CACHE_TIME = 10; // Time to cache version const CACHE_TIME = 10; // Time to cache version
const GL_PROJECT = 2; // Gitlab project number const GL_PROJECT = 2; // Gitlab project number
const GL_URL = 'https://dev.dege.au/api/v4'; // Gitlab URL const GL_URL = 'https://dev.dege.au/api/v4'; // Gitlab URL
const VERSION_REGEX = '/^v([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?)-([a-z]{3})-([a-z0-9]{8})$/'; const VERSION_REGEX = '/^v([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?)-([a-z]{3})-([a-z0-9]{8})$/';
public function main(Request $request,string $version=NULL) { public function main(Request $request,string $version=NULL) {
// Our version is in the format of either: // Our version is in the format of either:
// v1.2.3-xxx-abcdef01 // v1.2.3-xxx-abcdef01
Log::info(sprintf('Connection from [%s] reporting version [%s]',$this->getUserIpAddr(),$version)); Log::info(sprintf('Connection from [%s] reporting version [%s]',$this->getUserIpAddr(),$version));
$matches = []; $matches = [];
if (preg_match(self::VERSION_REGEX,$version,$matches)) { if (preg_match(self::VERSION_REGEX,$version,$matches)) {
// If xxx is "dev" we are a development version // If xxx is "dev" we are a development version
switch($matches[3]) { switch($matches[3]) {
case 'dev': case 'dev':
$current = Cache::remember('dev',self::CACHE_TIME,function() { $current = Cache::remember('dev',self::CACHE_TIME,function() {
$client = new Client; $client = new Client;
$url = sprintf('%s/projects/%d/repository/commits',self::GL_URL,self::GL_PROJECT); $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']]); $response = $client->request('GET',$url,['form_params'=>['ref_name'=>'BRANCH-2.0','order'=>'default']]);
if ($response->getStatusCode() === 200) { if ($response->getStatusCode() === 200) {
$result = collect(json_decode($response->getBody())); $result = collect(json_decode($response->getBody()));
return $result->first(); return $result->first();
} }
return NULL; return NULL;
}); });
if ($current) { if ($current) {
$repository = sprintf('v%s-rel-%s',$matches[1],$current->short_id); $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] // 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)]; return ($matches[4] === $current->short_id) ? ['current'=>$repository] : ['upgrade'=>sprintf('v%s-%s-%s',$matches[1],$matches[3],$current->short_id)];
} else } else
return ['unknown'=>'vn.n.n-dev-hhhhhhhh']; return ['unknown'=>'vn.n.n-dev-hhhhhhhh'];
case 'rel': case 'rel':
$current = Cache::remember('dev',self::CACHE_TIME,function() { $current = Cache::remember('dev',self::CACHE_TIME,function() {
$client = new Client; $client = new Client;
$url = sprintf('%s/projects/%d/repository/tags',self::GL_URL,self::GL_PROJECT); $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 // 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']]); $response = $client->request('GET',$url,['form_params'=>['ref_name'=>'master','sort'=>'desc']]);
if ($response->getStatusCode() === 200) { if ($response->getStatusCode() === 200) {
$result = collect(json_decode($response->getBody())); $result = collect(json_decode($response->getBody()));
return $result->first(); return $result->first();
} }
return NULL; return NULL;
}); });
if ($current) { if ($current) {
$repository = sprintf('v%s-rel-%s',$current->name,$current->commit->short_id); $repository = sprintf('v%s-rel-%s',$current->name,$current->commit->short_id);
// If $matches[1] is smaller, "upgrade available" // If $matches[1] is smaller, "upgrade available"
if ($matches[1] < $current->name) if ($matches[1] < $current->name)
return ['upgrade'=>$repository]; return ['upgrade'=>$repository];
// If $matches[1] is the same, validate that $matches[4] is current and the same and if not, error // If $matches[1] is the same, validate that $matches[4] is current and the same and if not, error
elseif ($matches[1] === $current->name) elseif ($matches[1] === $current->name)
return ($matches[4] === $current->commit->short_id) ? ['current'=>$repository] : ['mismatch'=>$repository]; return ($matches[4] === $current->commit->short_id) ? ['current'=>$repository] : ['mismatch'=>$repository];
// if $matches[1] is higher, abort // if $matches[1] is higher, abort
else else
return ['unknown'=>$repository]; return ['unknown'=>$repository];
} else } else
return ['unknown'=>'vn.n.n-rel-hhhhhhhh']; return ['unknown'=>'vn.n.n-rel-hhhhhhhh'];
} }
} }
// Return the current version // Return the current version
return ['unknown'=>'vn.n.n-xxxx-hhhhhhhh']; return ['unknown'=>'vn.n.n-xxxx-hhhhhhhh'];
} }
public function getUserIpAddr(){ public function getUserIpAddr(): string
$ipaddress = ''; {
if (isset($_SERVER['HTTP_CLIENT_IP'])) if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP']; $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED'])) else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED']; $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED'])) else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED']; $ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR'])) else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR']; $ipaddress = $_SERVER['REMOTE_ADDR'];
else else
$ipaddress = 'UNKNOWN'; $ipaddress = 'UNKNOWN';
return $ipaddress;
} return $ipaddress;
}
} }