Следующая функция определяет все возможности и возвращает значение в разделенном запятой (ip, ip и т. д.).
Он также имеет необязательную функцию проверки как (первый параметр, который по умолчанию отключен) для проверки IP-адреса адрес в отношении (закрытый диапазон и зарезервированный диапазон).
<?php
echo GetClientIP(true);
function GetClientIP($validate = False){
$ipkeys = array(
'REMOTE_ADDR',
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_FORWARDED_FOR',
'HTTP_FORWARDED',
'HTTP_X_CLUSTER_CLIENT_IP'
);
/*
now we check each key against $_SERVER if contain such value
*/
$ip = array();
foreach($ipkeys as $keyword){
if( isset($_SERVER[$keyword]) ){
if($validate){
if( ValidatePublicIP($_SERVER[$keyword]) ){
$ip[] = $_SERVER[$keyword];
}
}else{
$ip[] = $_SERVER[$keyword];
}
}
}
$ip = ( empty($ip) ? 'Unknown' : implode(", ", $ip) );
return $ip;
}
function ValidatePublicIP($ip){
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
return true;
}
else {
return false;
}
}
Удалите $
из имени переменной env
system "echo", ENV["GITLAB_HOMEBREW_TOKEN"]
См .:
[1] pry(main)> ENV['LC_NAME']
=> "pl_PL.UTF-8"
[2] pry(main)> ENV['$LC_NAME']
=> nil
Homebrew имеет несколько уровней фильтрации переменных среды. Первое, что встречается, относится к предыдущей версии вашего вопроса, где у вас была переменная GITLAB_HOMEBREW_TOKEN
. Первоначальная фильтрация Homebrew позволяет только определенным переменным среды проходить через команды brew
, чтобы избежать загрязнения среды сборки. Таким образом, GITLAB_HOMEBREW_TOKEN
не будет передано, потому что оно не начинается с HOMEBREW_
(или не соответствует никаким другим переменным из белого списка).
Второй уровень фильтрации - это тот, который вы в данный момент используете, когда «чувствительные» переменные среды фильтруются , если они соответствуют следующему регулярному выражению Ruby:
/(cookie|key|token|password)/i
Поскольку переменная имеет ключевое слово TOKEN
в имени переменной, которую она отфильтровывает прежде, чем достигнет вашей формулы.
Короче говоря, вам нужно использовать другое имя переменной среды, которое начинается с с HOMEBREW_
, например:
HOMEBREW_GITLAB_SECRET=secretsquirrel brew install Pouet
, и вы будете иметь доступ к это в коде Ruby вашей Формулы.
См. Также https://docs.brew.sh/Formula-Cookbook#using-environment-variables для справки о типах фильтрации переменных среды, которая существует.