Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 1524

Přidáno uživatelem David Raška před asi 12 roky(ů)

Opravy:
- Oprava kontroly kolize podsiti
- Oprava presmerovani po smazani IP adresy
- Ostranovani povolene podsite po smazani posledniho zarizeni v podsiti

Zobrazit rozdíly:

freenetis/branches/network/application/models/subnet.php
) s
WHERE
(
(INET_ATON(?) > start AND INET_ATON(?) < end) OR
(INET_ATON(?) >= start AND INET_ATON(?) < end) OR
(
(INET_ATON(?)+(~INET_ATON(?) & 0xffffffff)) > start AND
(INET_ATON(?)+(~INET_ATON(?) & 0xffffffff)) >= start AND
(INET_ATON(?)+(~INET_ATON(?) & 0xffffffff)) < end
)
) OR
(
(start > INET_ATON(?) AND start < INET_ATON(?)+(~inet_aton(?) & 0xffffffff)) AND
(end > INET_ATON(?) AND end < INET_ATON(?)+(~inet_aton(?) & 0xffffffff))
(start >= INET_ATON(?) AND start <= INET_ATON(?)+(~inet_aton(?) & 0xffffffff)) AND
(end >= INET_ATON(?) AND end <= INET_ATON(?)+(~inet_aton(?) & 0xffffffff))
)
", $network_address, $network_address, $network_address,
$netmask, $network_address, $netmask,
......
}
/**
* Returns all unique subnets by device
*
* @author David Raska
* @param type $device_id
* @return type
*/
public function get_all_unique_subnets_by_device ($device_id = NULL)
{
if (!$device_id)
$device_id = $this->id;
return $this->db->query("
SELECT s.id
FROM ip_addresses ip
JOIN ifaces i ON i.id = ip.iface_id
JOIN subnets s ON s.id = ip.subnet_id
JOIN devices d ON d.id = i.device_id
JOIN users u ON u.id = d.user_id
WHERE i.device_id = ? AND s.id NOT IN
(
SELECT s2.id
FROM users u2
JOIN devices d2 ON d2.user_id = u2.id
JOIN ifaces i2 ON i2.device_id = d2.id
JOIN ip_addresses ip2 ON ip2.iface_id = i2.id
JOIN subnets s2 ON s2.id = ip2.subnet_id
WHERE d2.id <> ? AND u2.member_id = u.member_id
)
ORDER BY INET_ATON(ip_address)
", $device_id, $device_id);
}
/**
* Returns all dependent subnets of device
*
* @author Michal Kliment
freenetis/branches/network/application/controllers/ip_addresses.php
$linkback = Path::instance()->previous();
if (url::slice(url_lang::uri($linkback),0,1) == 'ip_addresses/show')
if (url::slice(url_lang::uri($linkback),0,2) == 'ip_addresses/show')
{
$linkback = 'ip_addresses/show_all';
}
freenetis/branches/network/application/controllers/devices.php
*/
public function delete($device_id = null)
{
if (!isset($device_id))
{
Controller::warning(PARAMETER);
......
}
$mid = $device->user->member_id;
$ifaces = $device->ifaces;
$subnet_model = new Subnet_Model();
$all_subnets = $subnet_model->get_all_unique_subnets_by_device($device->id);
$subnets = array();
foreach ($all_subnets AS $subnet)
{
$subnets[] = $subnet->id;
}
$subnets = array_unique($subnets);
if (!$this->acl_check_delete('Devices_Controller', 'devices', $mid))
{
Controller::error(ACCESS);
......
if ($device->delete())
{
Allowed_subnets_Controller::update_enabled($mid, NULL, NULL, $subnets);
status::success('Device has been successfully deleted.');
}
else

Také k dispozici: Unified diff