#! /usr/bin/php
<?php
function IdentificaOIPLocal(): string
{
return trim(shell_exec('ip a | grep 192.168 | cut -d" " -f6 | cut -d"/" -f1'));
}
function SubstituirOIPdoArquivo(string $arquivo, string $ip): void
{
if(is_file($arquivo)){
$conteudo = file_get_contents($arquivo);
$conteudo = preg_replace('/192.168.\d+.\d+/', $ip, $conteudo);
file_put_contents($arquivo, $conteudo);
}
}
function JaFoiSubstituido(string $arquivo, string $ip): bool
{
if(is_file($arquivo)){
$conteudo = file_get_contents($arquivo);
return preg_match("/$ip/", $conteudo);
}
return false;
}
// Função para percorrer diretórios recursivamente
function percorrerDiretorios($diretorio, $ip) {
// Abre o diretório
$itens = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($diretorio),
RecursiveIteratorIterator::LEAVES_ONLY
);
// Itera sobre os itens encontrados
foreach ($itens as $item) {
// Se for um arquivo .env
if ($item->isFile() && $item->getFilename() === '.env') {
if(JaFoiSubstituido($item->getRealPath(), $ip)){
exit;
}
SubstituirOIPdoArquivo($item->getRealPath(), $ip);
}
// Se for um arquivo launch.json
if ($item->isFile() && $item->getFilename() === 'launch.json') {
if(JaFoiSubstituido($item->getRealPath(), $ip)){
exit;
}
SubstituirOIPdoArquivo($item->getRealPath(), $ip);
}
}
}
// Vamos carregar o .env.
$pathEnvfile = __DIR__.'/../.env';
if(!file_exists($pathEnvfile)){
echo "Arquivo .env não encontrado\n";
exit;
}
$envContent = file_get_contents($pathEnvfile);
$envContent = explode("\n", $envContent);
$env = [];
foreach($envContent as $line){
$line = explode('=', $line);
if(count($line) === 2){
$env[$line[0]] = $line[1];
}
}
$ipLocal = IdentificaOIPLocal();
$diretorioBase = $env['DIRETORIO_BASE'] ?? '/home/github';
percorrerDiretorios($diretorioBase, $ipLocal);
echo "Foi substituído o IP local nos arquivos .env e launch.json\n";
echo "IP local: $ipLocal\n";
echo "Bom trabalho,\nOSS!\n";
|