Projekt

Obecné

Profil

Požadavek #882 » cgi-snmp.patch

Michal Kliment, 2014-02-17 10:53

Zobrazit rozdíly:

application/controllers/connection_requests.php Locally Modified (Based On LOCAL)
if ($gateway && $gateway->id)
{
// first try SNMP
if (module::e('snmp'))
$mac_address = '';
// first try CGI scripts
if (module::e('cgi'))
{
$vars = arr::to_object(array
(
'GATEWAY_IP_ADDRESS' => $gateway->ip_address,
'IP_ADDRESS' => $ip_address
));
$url = text::object_format($vars, Settings::get('cgi_arp_url'));
$mac_address = @file_get_contents($url);
}
// now try SNMP
if (!valid::mac_address($mac_address) && module::e('snmp'))
{
try
{
$snmp = Snmp_Factory::factoryForDevice($gateway->ip_address);
// try find MAC address in DHCP
$mac_address = $snmp->getDHCPMacAddressOf($ip_address);
$this->session->set('connection_request_mac', $mac_address);
}
catch (DHCPMacAddressException $e)
{
......
{
// try find MAC address in ARP table
$mac_address = $snmp->getARPMacAddressOf($ip_address);
$this->session->set('connection_request_mac', $mac_address);
}
catch(Exception $e)
{
......
status::mwarning($e->getMessage());
}
}
// now try CGI scripts
else if (module::e('cgi'))
{
$vars = arr::to_object(array
(
'GATEWAY_IP_ADDRESS' => $gateway->ip_address,
'IP_ADDRESS' => $ip_address
));
$url = text::object_format($vars, Settings::get('cgi_arp_url'));
$mac_address = @file_get_contents($url);
if ($mac_address !== FALSE)
{
$this->session->set('connection_request_mac', $mac_address);
}
}
}
}
// form
$form = new Forge();
application/controllers/json.php Locally Modified (Based On LOCAL)
if ($gateway && $gateway->id && valid::ip($ip_address))
{
// first try SNMP
if (module::e('snmp'))
$mac_address = '';
// first try CGI scripts
if (module::e('cgi'))
{
$vars = arr::to_object(array
(
'GATEWAY_IP_ADDRESS' => $gateway->ip_address,
'IP_ADDRESS' => $ip_address
));
$url = text::object_format($vars, Settings::get('cgi_arp_url'));
$mac_address = trim(@file_get_contents($url));
}
// now try SNMP
if (!valid::mac_address($mac_address) && module::e('snmp'))
{
try
{
$snmp = Snmp_Factory::factoryForDevice($gateway->ip_address);
// try find MAC address in DHCP
$mac_address = $snmp->getDHCPMacAddressOf($ip_address);
die(json_encode(array
(
'state' => 1,
'mac' => $mac_address
)));
}
// MAC table is not in DHCP
catch (DHCPMacAddressException $e)
......
{
// try find MAC address in ARP table
$mac_address = $snmp->getARPMacAddressOf($ip_address);
die(json_encode(array
(
'state' => 1,
'mac' => $mac_address
)));
}
catch(Exception $e)
{
Log::add_exception($e);
die(json_encode(array
(
'state' => 0,
'message' => $e->getMessage()
)));
}
}
catch (Exception $e)
{
Log::add_exception($e);
die(json_encode(array
(
'state' => 0,
'message' => $e->getMessage()
)));
}
}
// now try CGI scripts
else if (module::e('cgi'))
{
$vars = arr::to_object(array
(
'GATEWAY_IP_ADDRESS' => $gateway->ip_address,
'IP_ADDRESS' => $ip_address
));
$url = text::object_format($vars, Settings::get('cgi_arp_url'));
$mac_address = @file_get_contents($url);
if ($mac_address !== FALSE)
if (valid::mac_address($mac_address))
{
die(json_encode(array
(
......
die(json_encode(array
(
'state' => 0,
'message' => __('Invalid output data')
'message' => __('MAC not found')
)));
}
}
......
die(json_encode(array
(
'state' => 0,
'message' => __('SNMP or CGI scripts not enabled')
)));
}
}
else
{
die(json_encode(array
(
'state' => 0,
'message' => __('Invalid input data')
)));
}
    (1-1/1)