Problemas Pacote vHosts
-
Se o que você quer é gerar a acl a partir do seu código usando o pacote do squid para configurar o resto, é melhor fazer o código para editar o xml em vez de criar o arquivo de configuração.
Se for o caso, é melhor usar a proprio php do pfsense para usar a framework a seu favor.
-
Mas como eu editaria o XML diretamente?
Eu inputei em /var/squid/acl/blacklist.acl -
Da uma olhada no squid.inc e veja que ele trata o xml como um array php.
http://forum.pfsense.org/index.php/topic,41928.msg237822.html#msg237822
Este script que habilita e desabilita o ipsec vai te ajudar a fazer um php que altera o conteúdo do xml como você quer.
att,
Marcello Coutinho -
Bom Dia!
Desculpe a ignorancia, mas onde fica o arquivo squid.inc? Os dados relacionados a bloqueio não são carregados a partir do arquivo blacklist.acl?
-
Onde você cadastra normalmente os bloqueios?
já pensou em usar as pemissões de acesso do proprio pfsense e liberar para os gerentes somente acesso ao squidguard(ou pacotes que usam xml) por exemplo?
-
Normalmente uso o SquidGuard, mas esse é um caso isolado, se trata de um projeto de laboratório…
Os bloqueios eu cadastro via web...Services>Proxy Server>Access Control> Blacklist
Ai analisando o squid.conf (/usr/local/etc/squid/squid.conf) eu achei essa linha:
acl blacklist dstdom_regex -i "/var/squid/acl/blacklist.acl"
Ai coloquei meu script pra alterar esse arquivo "blacklist.alc"
porem as restrições que eu coloco la não são lidas pelo squid, tanto que quando vou emServices>Proxy Server>Access Control> Blacklist
não muda nada.
-
Não muda porque a configuração é gravada no xml.
depois de alterar o arquivo, voce precisa reiniciar o serviço.
Dependendo da forma com que o pacote foi escrito, cada restart do serviço o daemon executa o procedimento de leitura do xml e gravação em disco.
-
E você sabe informar onde fica o XML?
-
E você sabe informar onde fica o XML?
O xml fica em /conf/config.xml mas não recomendo editar ele via script.
A melhor forma é usar as funções do php para editar o campo que você precisa.
Aquele post que te passei esta cheio de comentários e mostra um php que liga e desliga o ipsec.
/* check_mpls.php Versao 1.1 Este script tem como funcao habilitar ou desabilitar tuneis de VPN para serem usados como backup em caso de falhas em linhas dedicadas ou links ponto-a-ponto. Este script deve ser instalado no diretorio /usr/local/www, ter permisao de execucao e devera ser chamado atraves do cron na peridiocidade desejada. O script recebe como parametro o IP de origem para determinar a interface pela qual o teste sera realizado, o IP de destino que sera verificado se esta on-line ou n## e o nummero da VPN. No caso o numero da VPN e obtido contando-se apenas os itens de Fase 1 na configuracao do IPSec do pfSense de cima para baixo comecando do 0. Exemplo: php -q /usr/local/www/check_mpls.php <ip de="" origem=""> <ip a="" ser="" testado=""> <numero da="" vpn="" ipsec=""> php -q /usr/local/www/check_mpls.php 192.168.0.1 192.168.10.3 0 */ require_once("util.inc"); require_once("functions.inc"); require_once("pkg-utils.inc"); require_once("globals.inc"); require_once("filter.inc"); require_once("shaper.inc"); require_once("ipsec.inc"); require_once("vpn.inc"); /* Pega o ultimo parametro informado na chamada, e armazena na variavel $VPN_ID */ $VPN_ID=array_pop($argv); /* Pega o IP de destino informado e checa se e valido, se sim continua o programa */ $dsthost=array_pop($argv); if (! is_ipaddr($dsthost)){ print "Invalid Destination IP address!\n"; exit(1); } /* Pega o IP de origem informado e checa se e valido, se sim continua o programa */ $srchost=array_pop($argv); if (! is_ipaddr($srchost)){ print "Invalid Source IP address!\n"; exit(1); } /* Verifica se o IPSec esta ligado no pfSense, se sim continua o programa */ $ipsec=&$config['ipsec']; if (! isset($ipsec['enable'])) { exit(1); } /* Armazena as configuracoes das fases 1 e 2 do IPSec nas variaveis e verifica se a VPN informada existe ou nao */ $a_phase1 = &$config['ipsec']['phase1']; $a_phase2 = &$config['ipsec']['phase2']; if (isset($a_phase1[$VPN_ID]['ikeid'])) { $ikeid = $a_phase1[$VPN_ID]['ikeid']; } else { print "VPN Tunnel didn't exist!\n"; exit(1); } /* Determina a quantidade de pings que serao realizados, o tunel sera ativado se a quantdade de erros for maior ou igual a 50% desse valor */ $qtdping=10; $exit=0; for ($i=1; $i<=$qtdping; $i++) { exec("/sbin/ping -c 1 -t 1 -S $srchost $dsthost",$ret,$exit1); if ($exit1 <> 0) { $exit=$exit+1; } } /* Se a quantidade for menor que 50% o link esta online, se a VPN estiver ativada sera desligada, caso contrario imprime a mensagem informativa e encerra o programa. */ if ($exit < ($qtdping/2)) { #link online if (! isset($a_phase1[$VPN_ID]['disabled'])) { print "Link online, Disabling Tunnel!\n"; $a_phase1[$VPN_ID]['disabled']=""; if (is_array($a_phase2) && (count($a_phase2))) { foreach ($a_phase2 as &$phase2) { if ($phase2['ikeid'] == $ikeid) { $phase2['disabled']=""; } } unset($phase2); } write_config(); /* flush SPD and SAD */ mwexec("/usr/local/sbin/setkey -F"); mwexec("/usr/local/sbin/setkey -FP"); vpn_ipsec_refresh_policies(); vpn_ipsec_configure(); filter_configure(); exit(0); } else { print "Link online, Tunnel already Disabled!\n"; exit(0); } } /* Se a quantidade de erros for maior ou igual a 50% o link esta offline, então a VPN sera ativada. Caso ela ja esteja ligada, imprime a mensagem informativa e encerra o programa */ else { if (isset($a_phase1[$VPN_ID]['disabled'])) { print "Link offline, Enabling Tunnel!\n"; unset ($a_phase1[$VPN_ID]['disabled']); if (is_array($a_phase2) && (count($a_phase2))) { foreach ($a_phase2 as &$phase2) { if ($phase2['ikeid'] == $ikeid) { unset ($phase2['disabled']); } } unset($phase2); } write_config(); /* flush SPD and SAD */ mwexec("/usr/local/sbin/setkey -F"); mwexec("/usr/local/sbin/setkey -FP"); vpn_ipsec_refresh_policies(); vpn_ipsec_configure(); filter_configure(); exit(0); } else { print "Link offline, Tunnel already Enabled!\n"; exit(0); } } ?></numero></ip></ip>
No seu caso, a configração deve estar no array $config['installedpackages']['squidnac'][0][config]
-
Quando chegar no escritorio vou testar dessa forma e posta aqui os resultados.
Por hora muito obrigado.
-
Acessando um cliente rapidamente eu verifiquei essa estrutura:
<squidnac><config><allowed_subnets><unrestricted_hosts>MTkyLjE2OC4wLjEwNg==</unrestricted_hosts>
<banned_hosts><whitelist><blacklist>eW91dHViZS5jb20NCnd3dy5vcmt1dC5jb20uYnINCnBhc3Nwb3J0LmNvbQ0KbXNuLmNvbS5icg0Kc2MubXNuLmNvbQ0Kd3d3Lm1zbi5iZQ0KMjA3LjQ2LjExMC4xMQ0KNjUuNTUuMjU1LjE4DQo2NS41NS4yNTUuMzgNCm1lc3Nlbmdlci5tc24uY29tLmJyDQpodHRwLm1zZy55YWhvby5jb20NCm5pY2tuYW1lLm1zbi5jb20uYnINCmNoYXQubXNuLmNvbQ0KY2hhdC5tc24uY29tLmJyDQptc2dyLmhvdG1haWwuY29tDQpnYXRld2F5Lm1lc3Nlbmdlci5ob3RtYWlsLmNvbQ0KbWVzc2VuZ2VyLmxpdmUuY29tDQpjb250YWN0cy5tc24uY29tDQptZWViby5jb20NCmh0dHAxLm1zZ3IuaG90bWFpbC5jb20NCmh0dHAyLm1zZ3IuaG90bWFpbC5jb20NCmh0dHAzLm1zZ3IuaG90bWFpbC5jb20NCmh0dHA0Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA1Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA2Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA3Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA4Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA5Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHAxMC5tc2dyLmhvdG1haWwuY29tDQpodHRwMTEubXNnci5ob3RtYWlsLmNvbQ0KaHR0cDEyLm1zZ3IuaG90bWFpbC5jb20NCmh0dHAxMy5tc2dyLmhvdG1haWwuY29tDQpodHRwMTQubXNnci5ob3RtYWlsLmNvbQ0KaHR0cDE1Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHAxNi5tc2dyLmhvdG1haWwuY29tDQpodHRwMTcubXNnci5ob3RtYWlsLmNvbQ0KaHR0cDE4Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHAxOS5tc2dyLmhvdG1haWwuY29tDQpodHRwMjAubXNnci5ob3RtYWlsLmNvbQ0KbWVlYm8uY29tDQo2NS4xOS4xNDAuMjQ2DQplYnVkZHkuY29tDQoxOTMuMjM4LjE2MC42Mg0KbXNuMmdvLmNvbQ0KNjkuNjQuMzguMTI4DQplLW1lc3Nlbmdlci5uZXQNCjgyLjk4LjI1Mi4yMzQNCnBob25lZm94LmNvbQ0KODUuMTg0LjQuMw0KMTkzLjIzOC4xNjIuMjENCm1zbmdlci5jb20NCjIxNi4zMi42Ni4yMzQNCnRvcnBlcmt1dC5jb20NCjY1Ljk5LjIzMi40Mg0KZ28uaWNxLmNvbQ0KNjQuMTIuMTY0LjEyMA0Kd2Jtc24ubmV0DQoyMTIuMjI3LjM0LjMNCmJoaS5jb20uYnINCm1lc3NlbmdlcmZ4LmNvbQ0KZ2F0ZXdheS5tZXNzZW5nZXIuaG90bWFpbC5jb20NCmdhdGV3YXkuZGxs</blacklist> <ext_cachemanager><addtl_ports><addtl_sslports></addtl_sslports></addtl_ports></ext_cachemanager></whitelist></banned_hosts></allowed_subnets></config></squidnac>Não sei como farei pra mexer na estrutura…Programação não é muito minha praia...rs
-
Tenta entender o script que eu postei. É a melhor forma de alterar a configuração da blacklist.
Não esqueça de fazer backup da configuração antes de testar seu código.
-
Estou montando o ambiente para testar, agradeço a força Marcelo!
-
Estou montando o ambiente para testar, agradeço a força Marcelo!
o campo da blacklist esta codificado com base64
para ler, use a função base64_decode() do php.
para codificar a função é base64_encode()
att,
Marcello Coutinho