The audit result is posted to system -> add_system
Line 739 in controllers/system.php calls a function to set the address, as below.
[code]$this->m_ip_address->set_initial_address($details->system_id);[/code]
Look at the file models/m_ip_address.php and that function to see the logic.
It is below.
I have commented out the print_r that some idiot left in there.... It's difficult to get good help these days
You could force the setting of the address with each audit submission by changing line 739 to
[code]$this->m_ip_address->set_initial_address($details->system_id, 'y');[/code]
The issue is that any manually set addresses would be overwritten if they are different, every time an audit is submitted.
If anyone would like to propose some logic for this (as opposed to actual code), I'm happy to listen.
[quote] public function set_initial_address($system_id, $force = 'n')
{
# new logic
# only set an ip address if we do not already have an existing in system table
# no unset ('', '0.0.0.0', '000.000.000.000') addresses
# no localhost ('127.0.0.1', '127.000.000.001') addresses
# no 169.254.x.x addresses (RFC 3927)
# prefer non-DHCP address (ORDER BY sys_hw_network_card.net_dhcp_enabled ASC)
# secondary prefer private to public ip address (pubpriv)
# get the stored attribute for man_ip_address
$sql = "SELECT man_ip_address, timestamp FROM system WHERE system_id = ?";
$data = array("$system_id");
$query = $this->db->query($sql, $data);
$result = $query->result();
if ($force == 'y' or $result[0]->man_ip_address == '' or $result[0]->man_ip_address == '000.000.000.000' or $result[0]->man_ip_address == '0.0.0.0') {
# we do not already have an ip address - attempt to set one
$sql = "SELECT
sys_hw_network_card.net_dhcp_enabled,
sys_hw_network_card_ip.ip_address_v4,
if( (sys_hw_network_card_ip.ip_address_v4 >= '010.000.000.000' AND sys_hw_network_card_ip.ip_address_v4 <= '010.255.255.255') OR
(sys_hw_network_card_ip.ip_address_v4 >= '172.016.000.000' AND sys_hw_network_card_ip.ip_address_v4 <= '172.031.255.255') OR
(sys_hw_network_card_ip.ip_address_v4 >= '192.168.000.000' AND sys_hw_network_card_ip.ip_address_v4 <= '192.168.255.255'), 'prv', 'pub') as pubpriv
FROM
sys_hw_network_card LEFT JOIN sys_hw_network_card_ip ON
(sys_hw_network_card.system_id = sys_hw_network_card_ip.system_id AND
sys_hw_network_card.timestamp = sys_hw_network_card_ip.timestamp AND
LOWER(sys_hw_network_card_ip.net_mac_address) = LOWER(sys_hw_network_card.net_mac_address))
WHERE
sys_hw_network_card.system_id = ? AND
LOWER(sys_hw_network_card.net_ip_enabled) != 'false' AND
sys_hw_network_card_ip.timestamp = ? AND
sys_hw_network_card_ip.ip_address_v4 != '' AND
sys_hw_network_card_ip.ip_address_v4 != '0.0.0.0' AND
sys_hw_network_card_ip.ip_address_v4 != '000.000.000.000' AND
sys_hw_network_card_ip.ip_address_v4 != '127.0.0.1' AND
sys_hw_network_card_ip.ip_address_v4 != '127.000.000.001' AND
sys_hw_network_card_ip.ip_address_v4 != '127.0.1.1' AND
sys_hw_network_card_ip.ip_address_v4 != '127.000.001.001' AND
sys_hw_network_card_ip.ip_address_v4 NOT LIKE '169.254.%'
ORDER BY
sys_hw_network_card.net_dhcp_enabled ASC,
pubpriv ASC,
sys_hw_network_card_ip.ip_address_v4 DESC
LIMIT 1";
$sql = $this->clean_sql($sql);
$data = array("$system_id", $result[0]->timestamp);
$query = $this->db->query($sql, $data);
$result = $query->result();
if (strtolower($result[0]->ip_address_v4) != '') {
$sql = "UPDATE system SET man_ip_address = ? WHERE system_id = ?";
$data = array($result[0]->ip_address_v4, "$system_id");
$query = $this->db->query($sql, $data);
}
}
}