Сделать переменную среды доступной из формулы

Следующая функция определяет все возможности и возвращает значение в разделенном запятой (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;
  }
} 
2
задан Martin Delille 16 January 2019 в 16:45
поделиться

2 ответа

Удалите $ из имени переменной env

system "echo", ENV["GITLAB_HOMEBREW_TOKEN"]

См .:

[1] pry(main)> ENV['LC_NAME']
=> "pl_PL.UTF-8"
[2] pry(main)> ENV['$LC_NAME']
=> nil
0
ответ дан mrzasa 16 January 2019 в 16:45
поделиться

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 для справки о типах фильтрации переменных среды, которая существует.

0
ответ дан davidjb 16 January 2019 в 16:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: