Changeset 243


Ignore:
Timestamp:
06/16/2011 01:48:36 AM (11 months ago)
Author:
sque
Message:

Merge branches/awmn 205:221

[awmn] Add support for multiple-table deletes
[awmn] Fix undefined offset errors, replace correct_ip* functions with ip_to_ranges
[awmn] Allow changing of node area
[awmn] Reuse deleted IP ranges
[awmn] Fix delete access bypassing
[awmn] Prevent SQL injection
[awmn] Delete every associated record on node deleting
[awmn] Fix unvalidated input of photos id which allows deletion of files from unprivileged users
[awmn] Fix DNS nameserver delete request canceling
[awmn] Extend sanity checks when adding or editing links
[awmn] Delete associated links and subnets when deleting links
[awmn] Show IP ranges search page when a subpage is not specified (#55)
[awmn] Fix undefined offset errors
[awmn] Fix nameservers searching when IP field contains an invalid address
[awmn] Delete association records when deleteing DNS zones and nameservers
[awmn] Fix one more SQL injection bug

Location:
trunk
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/globals/classes/form.php

    r187 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    267268                                } 
    268269                        } 
    269                         $ret = $ret && $db->del($ckey, $args[$carg+1]." = '".$args[$carg+2]."'"); 
     270                        $ret = $ret && $db->del($ckey, '', $args[$carg+1]." = '".$args[$carg+2]."'"); 
    270271                        if (isset($data_f)) { 
    271272                                for ($i=0;$i<count($data_f);$i++) { 
  • trunk/globals/classes/mysql.php

    r187 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    2627        var $last_query; 
    2728        var $insert_id; 
     29        var $affected_rows; 
    2830        var $log=FALSE; 
    2931        var $logs_table=''; 
     
    5153        function query($query) { 
    5254                $this->insert_id = 0; 
     55                $this->affected_rows = 0; 
    5356                $this->last_query=$query; 
    5457                $this->total_queries += 1; 
     
    173176        } 
    174177 
    175         function del($table, $where="", $addlog=TRUE) { 
     178        function del($table, $using="", $where="", $addlog=TRUE) { 
    176179                $table_start = preg_split("/[\s,]+/", $table); 
    177180                $table_start = $table_start[0]; 
    178                 if ($addlog && $this->log) $aff = $this->query_data("SELECT ".$table_start.".id FROM $table".($where==""?"":" WHERE $where")); 
    179                 $query = "DELETE FROM $table".($where==""?"":" WHERE $where"); 
     181                if ($addlog && $this->log) $aff = $this->query_data("SELECT ".$table_start.".id FROM ".($using==""?"$table":"$using").($where==""?"":" WHERE $where")); 
     182                $query = "DELETE FROM $table".($using==""?"":" USING $using").($where==""?"":" WHERE $where"); 
    180183                $res = $this->query_data($query); 
     184                if ($res === TRUE) $this->affected_rows = mysql_affected_rows($this->mysql_link); 
    181185                if ($addlog && isset($aff)) { 
    182186                        for ($i=0;$i<count($aff);$i++) { 
  • trunk/globals/functions.php

    r242 r243  
    237237} 
    238238 
    239 function correct_ip($ip, $ret_null=TRUE) { 
    240         if ($ip == '' && $ret_null === TRUE) return ''; 
     239function ip_to_ranges($ip, $ret_null=TRUE) { 
     240        if ($ip == '' && $ret_null === TRUE) return array(); 
    241241        $t = explode(".", $ip, 4); 
    242         for ($i=0;$i<4;$i++) { 
    243                 $t[$i] = (integer)($t[$i]); 
    244         } 
    245         return implode(".", $t); 
    246 } 
    247  
    248 function correct_ip_min($ip, $ret_null=TRUE, $pad=3) { 
    249         if ($ip == '' && $ret_null === TRUE) return ''; 
    250         $t = explode(".", $ip, 4); 
    251         for ($i=0;$i<4;$i++) { 
    252                 if(!isset($t[$i+1]) && $t[$i] != null) { 
    253                         switch (substr($t[$i], 0, 1)) { 
    254                         case '0': 
    255                                 break; 
    256                         case '1': 
    257                         case '2': 
    258                                 $t[$i] = intval(str_pad($t[$i], (substr($t[$i], 1, 1) >= 6?2:$pad), "0")); 
    259                                 break; 
    260                         default: 
    261                                 $t[$i] = intval(str_pad($t[$i], ($pad==3?2:$pad), "0")); 
    262                         } 
    263                 }elseif($t[$i] == null) { 
    264                         $t[$i] = 0; 
    265                 }else{ 
    266                         $t[$i] = (integer)($t[$i]); 
    267                 } 
    268         } 
    269         return implode(".", $t); 
    270 } 
    271  
    272 function correct_ip_max($ip, $ret_null=TRUE, $pad=3) { 
    273         if ($ip == '' && $ret_null === TRUE) return ''; 
    274         $t = explode(".", $ip, 4); 
    275         for ($i=0;$i<4;$i++) { 
    276                 if(!isset($t[$i+1]) && $t[$i] != null) { 
    277                         switch (substr($t[$i], 0, 1)) { 
    278                         case '0': 
    279                                 break; 
    280                         case '1': 
    281                         case '2': 
    282                                 $t[$i] = intval(str_pad($t[$i], (substr($t[$i], 1, 1) >= 6?2:$pad), "9")); 
    283                                 break; 
    284                         default: 
    285                                 $t[$i] = intval(str_pad($t[$i], ($pad==3?2:$pad), "9")); 
    286                         } 
    287                         if ($t[$i] > 255) $t[$i] = 255; 
    288                 }elseif($t[$i] == null) { 
    289                         $t[$i] = 255; 
    290                 }else{ 
    291                         $t[$i] = (integer)($t[$i]); 
    292                 } 
    293         } 
    294         return implode(".", $t); 
     242        for ($i=0;$i<=3;$i++) { 
     243                if (isset($t[$i]) && $t[$i] != '' && $i != 3) $t[$i] = $t1[$i] = $t2[$i] = (integer)($t[$i]); 
     244                else { 
     245                        $t1[$i] = 0; 
     246                        $t2[$i] = 255; 
     247                } 
     248        } 
     249        $ret[] = array("min" => implode(".", $t1), "max" => implode(".", $t2)); 
     250        $p = count($t) - 1; 
     251        if ($p <= 2 && $t[$p] != 0) { 
     252                $d = 2 - intval(log10($t[$p])); 
     253                for ($i=1;$i<=$d;$i++) { 
     254                        $t1[$p] = $t[$p] * pow(10,$i); 
     255                        $t2[$p] = $t1[$p] + pow(10,$i) - 1; 
     256                        if ($t2[$p] > 255) $t2[$p] = 255; 
     257                        $ret[] = array("min" => implode(".", $t1), "max" => implode(".", $t2)); 
     258                } 
     259        } 
     260        return $ret; 
    295261} 
    296262 
  • trunk/globals/language/english.php

    r242 r243  
    472472                                'body' => 'Changing the node name is not allowed.' 
    473473                        ), 
    474                         'nodes_field_area_id' => array( 
    475                                 'title' => 'Change node area', 
    476                                 'body' => 'Changing the node area is not allowed. Your IP C-Class has been assigned to you according to the area of your node. For more info, contact with the hostmaster team.' 
    477                         ), 
    478474                        'nodes_no_area_id' => array( 
    479475                                'title' => 'Area error', 
  • trunk/globals/language/greek.php

    r242 r243  
    627627.' 
    628628                        ), 
    629                         'nodes_field_area_id' => array( 
    630                                 'title' => 'Αλλαγή ΎήΌοϠ
    631 /κοιΜότητας κόΌβοϠ
    632 ', 
    633                                 'body' => 'ΔεΜ επιτρέπεται η αλλαγή περιοχής τοϠ
    634  ÎºÏŒÎŒÎ²Î¿Ï 
    635 . Σας έχοϠ
    636 Îœ αποΎοΞεί IP C-Classes, Όε βάση τηΜ περιοχή ποϠ
    637  Î­Ï‡ÎµÏ„ε ήΎη Ύηλώσει. Για περισσότερες λεπτοΌέρειες, επικοιΜωΜήστε Όε τηΜ οΌάΎα hostmaster.' 
    638                         ), 
    639629                        'nodes_no_area_id' => array( 
    640630                                'title' => 'ΣφάλΌα ΎήΌοϠ
  • trunk/includes/pages/admin/admin_areas.php

    r187 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    7475                $ret = TRUE; 
    7576                foreach( (array) $_POST['id'] as $key => $value) { 
    76                         $ret = $ret && $db->del("areas", "id = '".$value."'"); 
     77                        $ret = $ret && $db->del("areas", '', "id = '".$value."'"); 
    7778                } 
    7879                if ($ret) { 
  • trunk/includes/pages/admin/admin_nodes.php

    r41 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    7778                $ret = TRUE; 
    7879                foreach( (array) $_POST['id'] as $key => $value) { 
    79                         $ret = $ret && $db->del("nodes", "id = '".$value."'"); 
     80                        $ret = $ret && $db->del("nodes", '', "id = '".$value."'"); 
    8081                } 
    8182                if ($ret) { 
  • trunk/includes/pages/admin/admin_nodes_services.php

    r152 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    8485                $ret = TRUE; 
    8586                foreach( (array) $_POST['id'] as $key => $value) { 
    86                         $ret = $ret && $db->del("nodes_services", "id = '".$value."'"); 
     87                        $ret = $ret && $db->del("nodes_services", '', "id = '".$value."'"); 
    8788                } 
    8889                if ($ret) { 
  • trunk/includes/pages/admin/admin_regions.php

    r187 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    7374                $ret = TRUE; 
    7475                foreach( (array) $_POST['id'] as $key => $value) { 
    75                         $ret = $ret && $db->del("regions", "id = '".$value."'"); 
     76                        $ret = $ret && $db->del("regions", '', "id = '".$value."'"); 
    7677                } 
    7778                if ($ret) { 
  • trunk/includes/pages/admin/admin_services.php

    r187 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    7273                $ret = TRUE; 
    7374                foreach( (array) $_POST['id'] as $key => $value) { 
    74                         $ret = $ret && $db->del("services", "id = '".$value."'"); 
     75                        $ret = $ret && $db->del("services", '', "id = '".$value."'"); 
    7576                } 
    7677                if ($ret) { 
  • trunk/includes/pages/admin/admin_users.php

    r26 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    7374                $ret = TRUE; 
    7475                foreach( (array) $_POST['id'] as $key => $value) { 
    75                         $ret = $ret && $db->del("users", "id = '".$value."'"); 
     76                        $ret = $ret && $db->del("users", '', "id = '".$value."'"); 
    7677                } 
    7778                if ($ret) { 
  • trunk/includes/pages/hostmaster/hostmaster_dnsnameserver.php

    r148 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    139140                if(get('action') === "delete") 
    140141                { 
    141                         $ret = $db->del("dns_nameservers", "id = '".get('nameserver')."'"); 
     142                        $ret = $db->del("dns_nameservers, dns_zones_nameservers",  
     143                                        'dns_nameservers  
     144                                                LEFT JOIN dns_zones_nameservers ON dns_nameservers.id = dns_zones_nameservers.nameserver_id',  
     145                                        "dns_nameservers.id = '".get('nameserver')."'"); 
    142146                        if ($ret) { 
    143147                                $main->message->set_fromlang('info', 'delete_success', makelink(array("page" => "hostmaster", "subpage" => "dnsnameservers"))); 
  • trunk/includes/pages/hostmaster/hostmaster_dnsnameservers.php

    r187 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    3940        function table_nameservers() { 
    4041                global $construct, $db, $vars; 
    41                 if (isset($_POST['dns_nameservers__ip'])) $_POST['dns_nameservers__ip'] = ip2long($_POST['dns_nameservers__ip']); 
    42                 if ($_GET['form_search_nameservers_search'] != '') { 
     42                if (isset($_POST['dns_nameservers__ip'])) $_POST['dns_nameservers__ip'] = (is_ip($_POST['dns_nameservers__ip'])?ip2long($_POST['dns_nameservers__ip']):''); 
     43                if (isset($_GET['form_search_nameservers_search'])) { 
    4344                        $t = unserialize(stripslashes($_GET['form_search_nameservers_search'])); 
    44                         if (isset($t['dns_nameservers__ip'])) $t['dns_nameservers__ip'] = ip2long($t['dns_nameservers__ip']); 
     45                        if (isset($t['dns_nameservers__ip'])) $t['dns_nameservers__ip'] = (is_ip($t['dns_nameservers__ip'])?ip2long($t['dns_nameservers__ip']):''); 
    4546                        $_GET['form_search_nameservers_search'] = addslashes(serialize($t)); 
    4647                } 
     
    9192                $ret = TRUE; 
    9293                foreach( (array) $_POST['id'] as $key => $value) { 
    93                         $ret = $ret && $db->del("dns_nameservers", "id = '".$value."'"); 
     94                        $ret = $ret && $db->del("dns_nameservers, dns_zones_nameservers",  
     95                                                'dns_nameservers  
     96                                                        LEFT JOIN dns_zones_nameservers ON dns_nameservers.id = dns_zones_nameservers.nameserver_id',  
     97                                                "dns_nameservers.id = '".intval($value)."'"); 
    9498                } 
    9599                if ($ret) { 
  • trunk/includes/pages/hostmaster/hostmaster_dnszone.php

    r187 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    180181                if(get('action') === "delete") 
    181182                { 
    182                         $ret = $db->del("dns_zones", "id = '".get('zone')."'"); 
     183                        $ret = $db->del("dns_zones, dns_zones_nameservers",  
     184                                        'dns_zones  
     185                                                LEFT JOIN dns_zones_nameservers ON dns_zones.id = dns_zones_nameservers.zone_id',  
     186                                        "dns_zones.id = '".get('zone')."'"); 
    183187                        if ($ret) { 
    184188                                $main->message->set_fromlang('info', 'delete_success', makelink(array("page" => "hostmaster", "subpage" => "dnszones"))); 
  • trunk/includes/pages/hostmaster/hostmaster_dnszones.php

    r242 r243  
    7777                $ret = TRUE; 
    7878                foreach( (array) $_POST['id'] as $key => $value) { 
    79                         $ret = $ret && $db->del("dns_zones", "id = '".$value."'"); 
     79                        $ret = $ret && $db->del("dns_zones, dns_zones_nameservers",  
     80                                                'dns_zones  
     81                                                        LEFT JOIN dns_zones_nameservers ON dns_zones.id = dns_zones_nameservers.zone_id',  
     82                                                "dns_zones.id = '".intval($value)."'"); 
    8083                } 
    8184                if ($ret) { 
  • trunk/includes/pages/hostmaster/hostmaster_range.php

    r187 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    155156                if(get('action') === "delete") 
    156157                { 
    157                         $ret = $db->del("ip_ranges", "id = '".get('iprange')."'"); 
     158                        $ret = $db->del("ip_ranges", '', "id = '".get('iprange')."'"); 
    158159                        if ($ret) { 
    159160                                $main->message->set_fromlang('info', 'delete_success', makelink(array("page" => "hostmaster", "subpage" => "ranges"))); 
  • trunk/includes/pages/hostmaster/hostmaster_ranges.php

    r242 r243  
    4343                $where = $form_search_ranges->db_data_where(array('ip' => 'exclude', 'nodes__name' => 'starts_with')); 
    4444                $table_ip_ranges = new table(array('TABLE_NAME' => 'table_ip_ranges', 'FORM_NAME' => 'table_ip_ranges')); 
    45                 $s_ip = correct_ip($form_search_ranges->data[0]['value']); 
    46                 $where = ($where !=''?"(".$where.") AND ":""). 
    47                                 ($s_ip !=''?"ip_ranges.ip_start <= ".ip2long($s_ip)." AND ip_ranges.ip_end >= ".ip2long($s_ip)." AND ":""); 
     45                $where = ($where !=''?"(".$where.") AND ":""); 
     46                if ($form_search_ranges->data[0]['value'] != '') { 
     47                        $where .= "("; 
     48                        $s_ranges = ip_to_ranges($form_search_ranges->data[0]['value']); 
     49                        foreach ($s_ranges as $s_range) { 
     50                                $where .= "(ip_ranges.ip_start BETWEEN ".ip2long($s_range['min'])." AND ".ip2long($s_range['max']).") OR "; 
     51                        } 
     52                        $where = substr($where, 0, -4).") AND "; 
     53                } 
    4854                if ($where!='') $where = substr($where, 0, -5); 
    4955                $table_ip_ranges->db_data( 
     
    8793                $ret = TRUE; 
    8894                foreach( (array) $_POST['id'] as $key => $value) { 
    89                         $ret = $ret && $db->del("ip_ranges", "id = '".$value."'"); 
     95                        $ret = $ret && $db->del("ip_ranges", '', "id = '".$value."'"); 
    9096                } 
    9197                if ($ret) { 
  • trunk/includes/pages/mynodes/mynodes.php

    r191 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    330331                $this->tpl['node'] = get('node'); 
    331332                if (get('action') == 'delete') { 
    332                         if ($db->del('nodes', "id = ".intval(get('node')))) {  
     333                        if ($db->del('nodes,  
     334                                        dns_nameservers,  
     335                                        dns_zones,  
     336                                        dns_zones_nameservers,  
     337                                        ip_addresses,  
     338                                        ip_ranges,  
     339                                        links,  
     340                                        nodes_services,  
     341                                        photos,  
     342                                        services,  
     343                                        subnets,  
     344                                        users_nodes',  
     345                                'nodes  
     346                                        LEFT JOIN dns_nameservers ON nodes.id = dns_nameservers.node_id  
     347                                        LEFT JOIN dns_zones ON nodes.id = dns_zones.node_id  
     348                                        LEFT JOIN dns_zones_nameservers ON  dns_zones.id = dns_zones_nameservers.zone_id OR dns_nameservers.id = dns_zones_nameservers.nameserver_id  
     349                                        LEFT JOIN ip_addresses ON nodes.id = ip_addresses.node_id  
     350                                        LEFT JOIN ip_ranges ON nodes.id = ip_ranges.node_id  
     351                                        LEFT JOIN links ON nodes.id = links.node_id  
     352                                        LEFT JOIN nodes_services ON nodes.id = nodes_services.node_id  
     353                                        LEFT JOIN services ON nodes_services.service_id = services.id  
     354                                        LEFT JOIN photos ON nodes.id = photos.node_id  
     355                                        LEFT JOIN subnets ON nodes.id = subnets.node_id  
     356                                        LEFT JOIN users_nodes ON nodes.id = users_nodes.node_id',  
     357                                "nodes.id = ".intval(get('node')))) {  
    333358                                $main->message->set_fromlang('info', 'delete_success', makelink()); 
    334359                        } else { 
     
    392417                                $name_ns = validate_name_ns($_POST['nodes__name'], get('node')); 
    393418                        } 
    394                         if ($old_v[0]['area_id'] != $_POST['nodes__area_id'] &&  
    395                                         $db->cnt('', 'ip_ranges', "node_id = ".intval(get('node'))) > 0) { 
    396                                 $main->message->set_fromlang('error', 'nodes_field_area_id', makelink("",TRUE)); 
    397                                 return; 
    398                         } 
    399419                } 
    400420                 
     
    419439                        $ret = $ret && $form_node->db_set_multi(array(), "users_nodes", "node_id", $ins_id); 
    420440                        if ($_POST['user_id_owner'] != '') { 
    421                                 $ret = $ret && $db->del('users_nodes', "user_id = '".$_POST['user_id_owner']."' AND node_id = '".$ins_id."'"); 
     441                                $ret = $ret && $db->del('users_nodes', '', "user_id = '".$_POST['user_id_owner']."' AND node_id = '".$ins_id."'"); 
    422442                                $ret = $ret && $db->add('users_nodes', array("user_id" => $_POST['user_id_owner'], "node_id" => $ins_id, 'owner' => 'Y')); 
    423443                        } 
     
    435455                $ret = $ret && $db->set("ip_ranges", array('delete_req' => 'N'), "node_id = ".intval(get('node'))); 
    436456                foreach( (array) $_POST['id'] as $key => $value) { 
    437                         $ret = $ret && $db->set("ip_ranges", array('delete_req' => 'Y'), "id = '".$value."'"); 
     457                        $ret = $ret && $db->set("ip_ranges", array('delete_req' => 'Y'), "id = '".intval($value)."' AND node_id =  ".intval(get('node'))); 
    438458                } 
    439459                if ($ret) { 
     
    449469                $ret = $ret && $db->set("dns_zones", array('delete_req' => 'N'), "node_id = ".intval(get('node'))); 
    450470                foreach( (array) $_POST['id'] as $key => $value) { 
    451                         $ret = $ret && $db->set("dns_zones", array('delete_req' => 'Y'), "id = '".$value."'"); 
     471                        $ret = $ret && $db->set("dns_zones", array('delete_req' => 'Y'), "id = '".intval($value)."' AND node_id =  ".intval(get('node'))); 
    452472                } 
    453473                if ($ret) { 
     
    461481                global $db, $main; 
    462482                $ret = TRUE; 
    463                 $ret = $ret && $db->set("dns_nameservers, ip_ranges, nodes", array('dns_nameservers.delete_req' => 'N'), "dns_nameservers.ip >= ip_ranges.ip_start AND dns_nameservers.ip <= ip_ranges.ip_end AND ip_ranges.node_id = ".intval(get('node'))." AND ip_ranges.node_id = nodes.id"); 
    464                 foreach( (array) $_POST['id'] as $key => $value) { 
    465                         $ret = $ret && $db->set("dns_nameservers", array('delete_req' => 'Y'), "id = '".$value."'"); 
     483                $ret = $ret && $db->set("dns_nameservers", array('delete_req' => 'N'), "node_id = ".intval(get('node'))); 
     484                foreach( (array) $_POST['id'] as $key => $value) { 
     485                        $ret = $ret && $db->set("dns_nameservers", array('delete_req' => 'Y'), "id = '".intval($value)."' AND node_id =  ".intval(get('node'))); 
    466486                } 
    467487                if ($ret) { 
     
    476496                $ret = TRUE; 
    477497                foreach( (array) $_POST['id'] as $key => $value) { 
    478                         $ret = $ret && $db->del("links", "id = '".$value."'"); 
     498                        $ret = $ret && $db->del("links, links2, subnets",  
     499                                                'links  
     500                                                        LEFT JOIN links AS links2 ON links.id = links2.peer_ap_id 
     501                                                        LEFT JOIN subnets ON links.id = subnets.link_id',  
     502                                                "links.id = '".intval($value)."' AND links.node_id = ".intval(get('node'))); 
    479503                } 
    480504                if ($ret) { 
     
    489513                $ret = TRUE; 
    490514                foreach( (array) $_POST['id'] as $key => $value) { 
    491                         $ret = $ret && $db->del("links", "id = '".$value."'"); 
     515                        $ret = $ret && $db->del("links", '', "id = '".intval($value)."' AND node_id = ".intval(get('node'))); 
    492516                } 
    493517                if ($ret) { 
     
    502526                $ret = TRUE; 
    503527                foreach( (array) $_POST['id'] as $key => $value) { 
    504                         $ret = $ret && $db->del("subnets", "id = '".$value."'"); 
     528                        $ret = $ret && $db->del("subnets", '', "id = '".intval($value)."' AND node_id = ".intval(get('node'))); 
    505529                } 
    506530                if ($ret) { 
     
    515539                $ret = TRUE; 
    516540                foreach( (array) $_POST['id'] as $key => $value) { 
    517                         $ret = $ret && $db->del("ip_addresses", "id = '".$value."'"); 
     541                        $ret = $ret && $db->del("ip_addresses", '', "id = '".intval($value)."' AND node_id = ".intval(get('node'))); 
    518542                } 
    519543                if ($ret) { 
     
    528552                $ret = TRUE; 
    529553                foreach( (array) $_POST['id'] as $key => $value) { 
    530                         $ret = $ret && $db->del("nodes_services", "id = '".$value."'"); 
     554                        $ret = $ret && $db->del("nodes_services", '', "id = '".intval($value)."' AND node_id = ".intval(get('node'))); 
    531555                } 
    532556                if ($ret) { 
     
    541565                if (isset($_POST['id'])) { 
    542566                        foreach( (array) $_POST['id'] as $key => $value) { 
    543                                 $db->del("photos", "id = '".$value."'"); 
    544                                 $uploaddir = $vars['folders']['photos']; 
    545                                 $filename = 'photo-'.$value.".*"; 
    546                                 delfile(ROOT_PATH.$uploaddir.$filename); 
    547                                 $filename = 'photo-'.$value."-*.*"; 
    548                                 delfile(ROOT_PATH.$uploaddir.$filename); 
     567                                $db->del("photos", '', "id = '".intval($value)."' AND node_id = ".intval(get('node'))); 
     568                                if ($db->affected_rows > 0 ) { 
     569                                        $uploaddir = $vars['folders']['photos']; 
     570                                        $filename = 'photo-'.$value.".*"; 
     571                                        delfile(ROOT_PATH.$uploaddir.$filename); 
     572                                        $filename = 'photo-'.$value."-*.*"; 
     573                                        delfile(ROOT_PATH.$uploaddir.$filename); 
     574                                } 
    549575                        } 
    550576                } 
     
    558584                                $filename_s = 'photo-'.$ins_id.'-s.jpg'; 
    559585                                if (@move_uploaded_file($_FILES[$value]['tmp_name'], ROOT_PATH.$uploaddir.$filename) === FALSE) { 
    560                                         $db->del("photos", "id = '".$ins_id."'"); 
     586                                        $db->del("photos", '', "id = '".$ins_id."'"); 
    561587                                        $main->message->set_fromlang("error", "upload_file_failed"); 
    562588                                        return; 
  • trunk/includes/pages/mynodes/mynodes_link.php

    r137 r243  
    5757                switch ($_POST['links__type']) { 
    5858                        case 'p2p': 
    59                                 if ($_POST['links__peer_node_id'] == '') { 
     59                                $t = $db->get('id', 'nodes', "id = '".intval($_POST['links__peer_node_id'])."'"); 
     60                                if (!isset($t[0]['id']) || $t[0]['id'] == intval(get('node'))) { 
    6061                                        $db->output_error_fields_required(array('links__peer_node_id')); 
    6162                                        return; 
    6263                                } 
    6364                                $f['peer_ap_id'] = ''; 
    64                                 $f['peer_node_id'] = $_POST['links__peer_node_id']; 
     65                                $f['peer_node_id'] = intval($_POST['links__peer_node_id']); 
    6566                                break; 
    6667                        case 'client': 
    67                                 if ($_POST['links__peer_ap_id'] == '') { 
     68                                $t = $db->get('id, node_id', 'links', "id = '".intval($_POST['links__peer_ap_id'])."'"); 
     69                                if (!isset($t[0]['id']) || $t[0]['node_id'] == intval(get('node'))) { 
    6870                                        $db->output_error_fields_required(array('links__peer_ap_id')); 
    6971                                        return; 
    7072                                } 
    71                                 $f['peer_ap_id'] = $_POST['links__peer_ap_id']; 
     73                                $f['peer_ap_id'] = intval($_POST['links__peer_ap_id']); 
    7274                                $f['peer_node_id'] = ''; 
     75                                break; 
     76                        case 'ap': 
     77                                $f['peer_node_id'] = ''; 
     78                                $f['peer_ap_id'] = ''; 
    7379                                break; 
    7480                } 
  • trunk/includes/pages/mynodes/mynodes_range.php

    r137 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    2829        } 
    2930         
    30         function calculate_next_range() { 
     31        function new_range() { 
    3132                global $db; 
    3233                $range = 256; 
     
    4041                $data = $db->get("ip_ranges.ip_start AS ip_start, ip_ranges.ip_end AS ip_end, areas.ip_start AS area_ip_start, areas.ip_end AS area_ip_end", 
    4142                                        "ip_ranges 
    42                                         INNER JOIN nodes ON nodes.id = ip_ranges.node_id 
    43                                         INNER JOIN areas ON nodes.area_id = areas.id", 
     43                                        INNER JOIN areas", 
    4444                                        "areas.ip_start <= ip_ranges.ip_start AND areas.ip_end >= ip_ranges.ip_end AND areas.id = '".$area_id."'", "" , "ip_end ASC"); 
    45                  
    46                 if (count($data) == 0) { 
    47                         $ret['ip_start'] = $area_ip_start; 
    48                         $ret['ip_end'] = $area_ip_start+$range-1; 
    49                 } elseif ($data[count($data)-1]['ip_end']+$range <= $area_ip_end) { 
    50                         $ret['ip_start'] = $data[count($data)-1]['ip_end']+1; 
    51                         $ret['ip_end'] = $data[count($data)-1]['ip_end']+$range; 
    52                 } else { 
    53                         for ($start = $area_ip_start; $start <= $area_ip_end; $start=$start+$range) { 
    54                                 $end = $start+$range-1; 
    55                                 $flag = TRUE; 
    56                                 for($i=count($data)-1;$i>=0;$i--) { 
    57                                         if (($start >= $data[$i]['ip_start'] && $start <= $data[$i]['ip_end']) 
    58                                                 || ($end >= $data[$i]['ip_start'] && $end <= $data[$i]['ip_end'])) { 
    59                                                 $flag = FALSE; 
    60                                                 break; 
    61                                         } 
    62                                 } 
    63                                 if ($flag) { 
    64                                         $ret['ip_start'] = $start; 
    65                                         $ret['ip_end'] = $end; 
     45 
     46                for ($start = $area_ip_start; $start < $area_ip_end; $start=$start+$range) { 
     47                        $end = $start+$range-1; 
     48                        $flag = TRUE; 
     49                        foreach ($data as $t_range) { 
     50                                if (($start >= $t_range['ip_start'] && $start <= $t_range['ip_end']) 
     51                                        || ($end >= $t_range['ip_start'] && $end <= $t_range['ip_end'])) { 
     52                                        $flag = FALSE; 
    6653                                        break; 
    6754                                } 
     55                        } 
     56                        if ($flag) { 
     57                                $ret['ip_start'] = $start; 
     58                                $ret['ip_end'] = $end; 
     59                                break; 
    6860                        } 
    6961                } 
     
    9688                } 
    9789                $form_getrange = $this->form_getrange(); 
    98                 $nextr = $this->calculate_next_range(); 
     90                $nextr = $this->new_range(); 
    9991                $status = "waiting"; 
    10092                $ret = TRUE; 
  • trunk/includes/pages/ranges/ranges.php

    r143 r243  
    2121 
    2222if (get('subpage') != '') include_once(ROOT_PATH."includes/pages/ranges/ranges_".get('subpage').".php"); 
     23else include_once(ROOT_PATH."includes/pages/ranges/ranges_search.php"); 
    2324 
    2425class ranges { 
     
    3233                        $this->page = new $p; 
    3334                } 
     35                else $this->page = new ranges_search; 
    3436        } 
    3537         
  • trunk/includes/pages/ranges/ranges_search.php

    r242 r243  
    4343                $where = $form_search_ranges->db_data_where(array('ip' => 'exclude')); 
    4444                $table_ip_ranges = new table(array('TABLE_NAME' => 'table_ip_ranges', 'FORM_NAME' => 'table_ip_ranges')); 
    45                 $s_ip = $form_search_ranges->data[0]['value']; 
    4645                $where = ($where !=''?"(".$where.") AND ":""); 
    47                 if ($s_ip !='') $where .= '(ip_ranges.ip_start >= '.ip2long(correct_ip_min($s_ip, TRUE, 1)).' AND ip_ranges.ip_start <= '.ip2long(correct_ip_max($s_ip, TRUE, 1)).") OR ". 
    48                                                 '(ip_ranges.ip_start >= '.ip2long(correct_ip_min($s_ip, TRUE, 2)).' AND ip_ranges.ip_start <= '.ip2long(correct_ip_max($s_ip, TRUE, 2)).") OR ". 
    49                                                 '(ip_ranges.ip_start >= '.ip2long(correct_ip_min($s_ip, TRUE, 3)).' AND ip_ranges.ip_start <= '.ip2long(correct_ip_max($s_ip, TRUE, 3)).") AND "; 
    50                 //$where =  
    51                 //              ($s_ip !=''?"ip_ranges.ip_start <= ".ip2long($s_ip)." AND ip_ranges.ip_end >= ".ip2long($s_ip)." AND ":""); 
     46                if ($form_search_ranges->data[0]['value'] != '') { 
     47                        $where .= "("; 
     48                        $s_ranges = ip_to_ranges($form_search_ranges->data[0]['value']); 
     49                        foreach ($s_ranges as $s_range) { 
     50                                $where .= "(ip_ranges.ip_start BETWEEN ".ip2long($s_range['min'])." AND ".ip2long($s_range['max']).") OR "; 
     51                        } 
     52                        $where = substr($where, 0, -4).") AND "; 
     53                } 
    5254                if ($where!='') $where = substr($where, 0, -5); 
    5355                $table_ip_ranges->db_data( 
     
    7981                $this->tpl['link_ranges_search'] = makelink(array("page" => "ranges", "subpage" => "search")); 
    8082                $this->tpl['link_ranges_allocation'] = makelink(array("page" => "ranges", "subpage" => "allocation")); 
    81                 $form_search_ranges = $this->form_search_ranges(); 
    82                 //if ($form_search_ranges->data[0]['value'] != '') $form_search_ranges->data[0]['value'] = correct_ip($form_search_ranges->data[0]['value']); 
    83                 $this->tpl['form_search_ranges'] = $construct->form($form_search_ranges, __FILE__); 
     83                $this->tpl['form_search_ranges'] = $construct->form($this->form_search_ranges(), __FILE__); 
    8484                $this->tpl['table_ranges'] = $construct->table($this->table_ip_ranges(), __FILE__); 
    8585                return template($this->tpl, __FILE__); 
  • trunk/includes/pages/search/search_suggest.php

    r193 r243  
    44* 
    55* Copyright (C) 2006 John Kolovos <cirrus@awmn.net> 
     6* Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67* 
    78* This program is free software; you can redistribute it and/or modify 
     
    5657                        } 
    5758                } elseif (is_ip($q, FALSE)) { 
    58                         $where = '(ip_ranges.ip_start >= '.ip2long(correct_ip_min($q, TRUE, 1)).' AND ip_ranges.ip_start <= '.ip2long(correct_ip_max($q, TRUE, 1)).") OR ". 
    59                                                 '(ip_ranges.ip_start >= '.ip2long(correct_ip_min($q, TRUE, 2)).' AND ip_ranges.ip_start <= '.ip2long(correct_ip_max($q, TRUE, 2)).") OR ". 
    60                                                 '(ip_ranges.ip_start >= '.ip2long(correct_ip_min($q, TRUE, 3)).' AND ip_ranges.ip_start <= '.ip2long(correct_ip_max($q, TRUE, 3)).")"; 
     59                        $where = "("; 
     60                        $s_ranges = ip_to_ranges($q,FALSE); 
     61                        foreach ($s_ranges as $s_range) { 
     62                                $where .= "(ip_ranges.ip_start BETWEEN ".ip2long($s_range['min'])." AND ".ip2long($s_range['max']).") OR "; 
     63                        } 
     64                        $where = substr($where, 0, -4).")"; 
    6165                        $this->tpl['ip_search'] = $db->get( 
    6266                                                                                'ip_ranges.ip_start, nodes.id', 
  • trunk/includes/pages/users/users.php

    r187 r243  
    44 * 
    55 * Copyright (C) 2005 Nikolaos Nikalexis <winner@cube.gr> 
     6 * Copyright (C) 2009 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr> 
    67 *  
    78 * This program is free software; you can redistribute it and/or modify 
     
    7273                if(get('action') === "delete" && $main->userdata->privileges['admin'] === TRUE) 
    7374                { 
    74                         $ret = $db->del("users", "id = '".get('user')."'"); 
     75                        $ret = $db->del("users", '', "id = '".get('user')."'"); 
    7576                        if ($ret) { 
    7677                                $main->message->set_fromlang('info', 'delete_success', makelink(array("page" => "admin", "subpage" => "users"))); 
     
    145146                        $ret = $form_user->db_set_multi(array(), "rights", "user_id", get('user')); 
    146147                        $ret = $ret && $form_user->db_set_multi(array('owner' => 'N'), "users_nodes", "user_id", $ins_id); 
    147                         $ret = $ret && $db->del('users_nodes', "user_id = '".$ins_id."' AND owner = 'Y'"); 
     148                        $ret = $ret && $db->del('users_nodes', '', "user_id = '".$ins_id."' AND owner = 'Y'"); 
    148149                        if (isset($_POST['node_id_owner'])) { 
    149150                                foreach((array)$_POST['node_id_owner'] as $value) { 
    150                                         $ret = $ret && $db->del('users_nodes', "node_id = '".$value."' AND owner = 'Y'"); 
     151                                        $ret = $ret && $db->del('users_nodes', '', "node_id = '".$value."' AND owner = 'Y'"); 
    151152                                        $ret = $ret && $db->add('users_nodes', array("user_id" => $ins_id, "node_id" => $value, 'owner' => 'Y')); 
    152153                                } 
Note: See TracChangeset for help on using the changeset viewer.