Sincronização no Squid2
-
Boa tarde,
Teria como colocar a função de sincronização da configuração do squid3 no squid 2?
Dei uma olhada na configuração e vi o arquivo squid_sync.xml, seria só copiar esse xml pro squid2 e ajustar as tag <tab>?</tab> -
fiz oque eu disse ai, e até que a interface apareceu bonitinha e talz.. mais ele não sincroniza.. parece que não esta chamando alguma função.
-
o xml é só o primeiro passo :)
A engenharia está toda no squid.inc.
O squid2 é mantido pelo core team e o squid3 por mim.
Dificilmente você verá esta aba de sincronia ou grandes inovações no squid2 para não alterar o status "stable" dele.
-
pô, triste isso em.
Marcelloc, tem como me dar uma ideia do que eu precisaria fazer no squid.inc pra sincronia funcionar no squid2 ou não é possível ou daria muito trabalho? -
a função de sincronia do squid3 é esta:
/* Uses XMLRPC to synchronize the changes to a remote node */ function squid_sync_on_changes() { global $config, $g; log_error("[squid] xmlrpc sync is starting."); $synconchanges = $config['installedpackages']['squidsync']['config'][0]['synconchanges']; if(!$synconchanges) return; foreach ($config['installedpackages']['squidsync']['config'] as $rs ){ foreach($rs['row'] as $sh){ $sync_to_ip = $sh['ipaddress']; $password = $sh['password']; if($sh['username']) $username = $sh['username']; else $username = 'admin'; if($password && $sync_to_ip) squid_do_xmlrpc_sync($sync_to_ip, $username, $password); } } log_error("[squid] xmlrpc sync is ending."); } /* Do the actual XMLRPC sync */ function squid_do_xmlrpc_sync($sync_to_ip, $username, $password) { global $config, $g; if(!$username) return; if(!$password) return; if(!$sync_to_ip) return; $xmlrpc_sync_neighbor = $sync_to_ip; if($config['system']['webgui']['protocol'] != "") { $synchronizetoip = $config['system']['webgui']['protocol']; $synchronizetoip .= "://"; } $port = $config['system']['webgui']['port']; /* if port is empty lets rely on the protocol selection */ if($port == "") { if($config['system']['webgui']['protocol'] == "http") $port = "80"; else $port = "443"; } $synchronizetoip .= $sync_to_ip; /* xml will hold the sections to sync */ $xml = array(); $xml['squid'] = $config['installedpackages']['squid']; $xml['squidupstream'] = $config['installedpackages']['squidupstream']; $xml['squidcache'] = $config['installedpackages']['squidcache']; $xml['squidnac'] = $config['installedpackages']['squidnac']; $xml['squidtraffic'] = $config['installedpackages']['squidtraffic']; $xml['squidreverse'] = $config['installedpackages']['squidreverse']; $xml['squidauth'] = $config['installedpackages']['squidauth']; $xml['squidusers'] = $config['installedpackages']['squidusers']; /* assemble xmlrpc payload */ $params = array( XML_RPC_encode($password), XML_RPC_encode($xml) ); /* set a few variables needed for sync code borrowed from filter.inc */ $url = $synchronizetoip; log_error("Beginning squid XMLRPC sync to {$url}:{$port}."); $method = 'pfsense.merge_installedpackages_section_xmlrpc'; $msg = new XML_RPC_Message($method, $params); $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); $cli->setCredentials($username, $password); if($g['debug']) $cli->setDebug(1); /* send our XMLRPC message and timeout after 250 seconds */ $resp = $cli->send($msg, "250"); if(!$resp) { $error = "A communications error occurred while attempting squid XMLRPC sync with {$url}:{$port}."; log_error($error); file_notice("sync_settings", $error, "squid Settings Sync", ""); } elseif($resp->faultCode()) { $cli->setDebug(1); $resp = $cli->send($msg, "250"); $error = "An error code was received while attempting squid XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); log_error($error); file_notice("sync_settings", $error, "squid Settings Sync", ""); } else { log_error("squid XMLRPC sync successfully completed with {$url}:{$port}."); } /* tell squid to reload our settings on the destination sync host. */ $method = 'pfsense.exec_php'; $execcmd = "require_once('/usr/local/pkg/squid.inc');\n"; $execcmd .= "squid_resync();"; /* assemble xmlrpc payload */ $params = array( XML_RPC_encode($password), XML_RPC_encode($execcmd) ); log_error("squid XMLRPC reload data {$url}:{$port}."); $msg = new XML_RPC_Message($method, $params); $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); $cli->setCredentials($username, $password); $resp = $cli->send($msg, "250"); if(!$resp) { $error = "A communications error occurred while attempting squid XMLRPC sync with {$url}:{$port} (pfsense.exec_php)."; log_error($error); file_notice("sync_settings", $error, "squid Settings Sync", ""); } elseif($resp->faultCode()) { $cli->setDebug(1); $resp = $cli->send($msg, "250"); $error = "An error code was received while attempting squid XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); log_error($error); file_notice("sync_settings", $error, "squid Settings Sync", ""); } else { log_error("squid XMLRPC reload data success with {$url}:{$port} (pfsense.exec_php)."); } }
você precisa chama-la dentro da função que cria o arquivo de configuração a casa save
function squid_resync() { . . . if(!isset($boot_process)) squid_sync_on_changes(); . . .
Teste em laboratorio e não esqueça de fazer backups
-
Bom, vou tentar aplicar isso no squid2, vlw pela ajuda.