Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 482

Přidáno uživatelem Michal Kliment před asi 15 roky(ů)

Synchronizacni skript Mikrotik -> Freenetis by mel nyni fungovat. Moje
testy na lokale dopadly bezchybne, nutno zkusit na nejakem realnem AP...

Zobrazit rozdíly:

freenetis/trunk/kohana/application/controllers/devices.php
$ip_address_model = new Ip_address_Model();
$user_model = new User_Model();
$subnet_model = new Subnet_Model();
$enum_type_model = new Enum_type_Model();
// ID of member is set up
if ($member_id)
{
$member = new Member_Model($member_id);
......
$ip_address = $ip_address_model->where('ip_address',$device->address)->find();
// ip adress already exists
if ($ip_address->id)
{
//mac address is different
if ($device->mac_address != $ip_address->iface->mac)
{
$ip_address->iface->segment_id = $ip_address->subnet->segment_id;
$ip_address->iface->mac = $device->mac_address;
$ip_address->save();
$ip_address->iface->save();
}
// owner of device is different
if ($user->id != $ip_address->iface->device->user_id)
{
$ip_address->iface->device->user_id = $user->id;
$ip_address->save();
$ip_address->iface->device->name = $user->login."_pc";
$ip_address->iface->device->save();
}
}
// ip address doesn't exist'
else
{
$iface = $iface_model->where('mac',$device->mac_address)->find();
// mac address already exists
if ($iface->id)
{
$ip_addresses = $iface->find_related_ip_addresses();
$ip_address = $ip_addresses->current();
if (!is_array($ip_addresses))
{
$ip_address = $ip_addresses->current();
if (!$ip_address->id)
$ip_address->clear();
if (!$ip_address->id)
$ip_address->clear();
}
else
$ip_address = new Ip_address_model();
$ip = ip2long($device->address);
$subnets = $subnet_model
......
"inet_aton(network_address) as net",
"32-log2((~inet_aton(netmask) & 0xffffffff) + 1) as mask")
->find_all();
$arr_subnets = array();
foreach($subnets as $subnet)
{
......
$ip_address->subnet_id = $subnet_id;
$ip_address->ip_address = $device->address;
$ip_address->iface_id = $iface->id;
$ip_address->save();
if ($user->id != $ip_address->iface->device->user_id)
{
$ip_address->iface->device->user_id = $user->id;
$ip_address->save();
$ip_address->iface->device->name = $user->login."_pc";
$ip_address->iface->device->save();
}
}
// mac address doesn't exist, create new device
else
{
$ip = ip2long($device->address);
$subnets = $subnet_model
->select("id","name","network_address as net_str",
"inet_aton(network_address) as net",
"32-log2((~inet_aton(netmask) & 0xffffffff) + 1) as mask")
->find_all();
$arr_subnets = array();
foreach($subnets as $subnet)
{
$mask = 0xffffffff << (32-$subnet->mask) & 0xffffffff;
if (($ip & $mask) == $subnet->net)
$arr_subnets[] = $subnet;
}
// remote ip address belongs to some subnet
$subnet_id = count($arr_subnets) ? $arr_subnets[0]->id : NULL;
$subnet = new Subnet_Model($subnet_id);
$device_model->clear();
$device_model->user_id = $user->id;
$device_model->address_point_id = $member->address_point_id;
$device_model->name = $user->login."_pc";
$device_model->type = $enum_type_model->get_type_id('pc');
$device_model->comment = 'Import';
$device_model->save();
$iface_model->clear();
$iface_model->device_id = $device_model->id;
$iface_model->segment_id = $subnet->segment_id;
$iface_model->mac = $device->mac_address;
$iface_model->name = $user->login."_pc";
$iface_model->save();
$ip_address_model->clear();
$ip_address_model->iface_id = $iface_model->id;
$ip_address_model->subnet_id = $subnet->id;
$ip_address_model->ip_address = $device->address;
$ip_address_model->save();
}
}
}
else
{
echo "Clen nenalezen - (".$device->comment.")<br />";
}
}
public static function get_ID_from_comment($comment = '')

Také k dispozici: Unified diff