inc/record.inc.php
author rejo
Mon, 31 Mar 2008 21:10:19 +0000
changeset 120 982f722376b4
parent 119 f74e4f88b680
child 126 cb06e3e29ed8
permissions -rwxr-xr-x
[feladat @ 223] Bugfix. No domain id was provided when entering 'edit record' page from a search query. Changed code so 'edit record' does not rely on domain id provided by user but determines it from the record id that is about to be changed. This closes ticket:31.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
71
e1b918eaf69a [feladat @ 118]
peter
parents: 65
diff changeset
     1
<?php
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
     2
119
f74e4f88b680 [feladat @ 222]
rejo
parents: 115
diff changeset
     3
/*  Poweradmin, a friendly web-based admin tool for PowerDNS.
47
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
     4
 *  See <https://rejo.zenger.nl/poweradmin> for more details.
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
     5
 *
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
     6
 *  Copyright 2007, 2008  Rejo Zenger <rejo@zenger.nl>
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
     7
 *
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
     8
 *  This program is free software: you can redistribute it and/or modify
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
     9
 *  it under the terms of the GNU General Public License as published by
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    10
 *  the Free Software Foundation, either version 3 of the License, or
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    11
 *  (at your option) any later version.
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    12
 *
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    13
 *  This program is distributed in the hope that it will be useful,
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    14
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    15
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    16
 *  GNU General Public License for more details.
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    17
 *
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    18
 *  You should have received a copy of the GNU General Public License
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    19
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
ae140472d97c [feladat @ 94]
rejo
parents: 40
diff changeset
    20
 */
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    21
120
982f722376b4 [feladat @ 223]
rejo
parents: 119
diff changeset
    22
function get_zone_id_from_record_id($rid) {
982f722376b4 [feladat @ 223]
rejo
parents: 119
diff changeset
    23
	global $db;
982f722376b4 [feladat @ 223]
rejo
parents: 119
diff changeset
    24
	$query = "SELECT domain_id FROM records WHERE id = " . $db->quote($rid);
982f722376b4 [feladat @ 223]
rejo
parents: 119
diff changeset
    25
	$zid = $db->queryOne($query);
982f722376b4 [feladat @ 223]
rejo
parents: 119
diff changeset
    26
	return $zid;
982f722376b4 [feladat @ 223]
rejo
parents: 119
diff changeset
    27
}
982f722376b4 [feladat @ 223]
rejo
parents: 119
diff changeset
    28
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    29
function count_zone_records($zone_id) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    30
	global $db;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    31
	$sqlq = "SELECT COUNT(id) FROM records WHERE domain_id = ".$db->quote($zone_id);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    32
	$record_count = $db->queryOne($sqlq);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    33
	return $record_count;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    34
}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    35
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    36
function update_soa_serial($domain_id)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    37
{
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    38
	global $db;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    39
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
    40
	$sqlq = "SELECT notified_serial FROM domains WHERE id = ".$db->quote($domain_id);
8
47dd15d8bb8c [feladat @ 20]
rejo
parents: 5
diff changeset
    41
	$notified_serial = $db->queryOne($sqlq);
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    42
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
    43
	$sqlq = "SELECT content FROM records WHERE type = 'SOA' AND domain_id = ".$db->quote($domain_id);
8
47dd15d8bb8c [feladat @ 20]
rejo
parents: 5
diff changeset
    44
	$content = $db->queryOne($sqlq);
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    45
	$need_to_update = false;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    46
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    47
	// Getting the serial field.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    48
	$soa = explode(" ", $content);
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    49
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    50
	if(empty($notified_serial)) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    51
		// Ok native replication, so we have to update.
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    52
		$need_to_update = true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    53
	} elseif($notified_serial >= $soa[2]) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    54
		$need_to_update = true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    55
	} elseif(strlen($soa[2]) != 10) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    56
		$need_to_update = true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    57
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    58
		$need_to_update = false;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    59
	}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    60
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    61
	if($need_to_update) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    62
		// Ok so we have to update it seems.
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    63
		$current_serial = $soa[2];
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    64
		$new_serial = date('Ymd'); // we will add revision number later
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    65
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    66
		if(strncmp($new_serial, $current_serial, 8) === 0) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    67
			$revision_number = (int) substr($current_serial, -2);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    68
			if ($revision_number == 99) return false; // ok, we cannot update anymore tonight
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    69
			++$revision_number;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    70
			// here it is ... same date, new revision
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    71
			$new_serial .= str_pad($revision_number, 2, "0", STR_PAD_LEFT);	
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    72
		} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    73
			/*
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    74
			 * Current serial is not RFC1912 compilant, so let's make a new one
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    75
			 */
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    76
			$new_serial .= '00';
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    77
		}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    78
		$soa[2] = $new_serial; // change serial in SOA array
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    79
		$new_soa = "";		
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    80
		// build new soa and update SQL after that
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    81
		for ($i = 0; $i < count($soa); $i++) {	
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    82
			$new_soa .= $soa[$i] . " "; 
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    83
		}
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
    84
		$sqlq = "UPDATE records SET content = ".$db->quote($new_soa)." WHERE domain_id = ".$db->quote($domain_id)." AND type = 'SOA'";
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    85
		$db->Query($sqlq);
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    86
		return true;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    87
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    88
}  
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    89
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    90
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    91
 * Edit a record.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    92
 * This function validates it if correct it inserts it into the database.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    93
 * return values: true if succesful.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
    94
 */
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    95
function edit_record($record) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    96
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    97
	if (verify_permission(zone_content_edit_others)) { $perm_content_edit = "all" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    98
	elseif (verify_permission(zone_content_edit_own)) { $perm_content_edit = "own" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
    99
	else { $perm_content_edit = "none" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   100
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   101
	$user_is_zone_owner = verify_user_is_owner_zoneid($record['zid']);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   102
	$zone_type = get_domain_type($record['zid']);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   103
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   104
	if ( $zone_type == "SLAVE" || $perm_content_edit == "none" || $perm_content_edit == "own" && $user_is_zone_owner == "0" ) {
111
0a2342a64b83 [feladat @ 211]
rejo
parents: 106
diff changeset
   105
		error(ERR_PERM_EDIT_RECORD);
0a2342a64b83 [feladat @ 211]
rejo
parents: 106
diff changeset
   106
		return false;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   107
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   108
		if($record['content'] == "") {
111
0a2342a64b83 [feladat @ 211]
rejo
parents: 106
diff changeset
   109
			error(ERR_DNS_CONTENT);
0a2342a64b83 [feladat @ 211]
rejo
parents: 106
diff changeset
   110
			return false;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   111
		}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   112
		global $db;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   113
		// TODO: no need to check for numeric-ness of zone id if we check with validate_input as well?
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   114
		if (is_numeric($record['zid'])) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   115
			validate_input($record['zid'], $record['type'], $record['content'], $record['name'], $record['prio'], $record['ttl']);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   116
			$query = "UPDATE records 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   117
					SET name=".$db->quote($record['name']).", 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   118
					type=".$db->quote($record['type']).", 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   119
					content=".$db->quote($record['content']).", 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   120
					ttl=".$db->quote($record['ttl']).", 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   121
					prio=".$db->quote($record['prio']).", 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   122
					change_date=".$db->quote(time())." 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   123
					WHERE id=".$db->quote($record['rid']);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   124
			$result = $db->Query($query);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   125
			if (PEAR::isError($result)) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   126
				error($result->getMessage());
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   127
				return false;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   128
			} elseif ($record['type'] != 'SOA') {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   129
				update_soa_serial($record['zid']);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   130
			}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   131
			return true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   132
		}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   133
		else
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   134
		{
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   135
			// TODO change to error style as above (returning directly)
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   136
			error(sprintf(ERR_INV_ARGC, "edit_record", "no zoneid given"));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   137
		}
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   138
	}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   139
	return true;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   140
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   141
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   142
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   143
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   144
 * Adds a record.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   145
 * This function validates it if correct it inserts it into the database.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   146
 * return values: true if succesful.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   147
 */
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   148
function add_record($zoneid, $name, $type, $content, $ttl, $prio) {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   149
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   150
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   151
	if (verify_permission(zone_content_edit_others)) { $perm_content_edit = "all" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   152
	elseif (verify_permission(zone_content_edit_own)) { $perm_content_edit = "own" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   153
	else { $perm_content_edit = "none" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   154
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   155
	$user_is_zone_owner = verify_user_is_owner_zoneid($zoneid);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   156
	$zone_type = get_domain_type($zoneid);
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   157
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   158
        if ( $zone_type == "SLAVE" || $perm_content_edit == "none" || $perm_content_edit == "own" && $user_is_zone_owner == "0" ) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   159
		error(ERR_PERM_ADD_RECORD);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   160
		return false;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   161
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   162
		if (validate_input($zoneid, $type, $content, $name, $prio, $ttl) ) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   163
			$change = time();
106
41d05ff53708 [feladat @ 206]
peter
parents: 98
diff changeset
   164
			$query = "INSERT INTO records (domain_id, name, type, content, ttl, prio, change_date) VALUES ("
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   165
						. $db->quote($zoneid) . ","
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   166
						. $db->quote($name) . "," 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   167
						. $db->quote($type) . "," 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   168
						. $db->quote($content) . ","
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   169
						. $db->quote($ttl) . ","
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   170
						. $db->quote($prio) . ","
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   171
						. $db->quote($change) . ")";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   172
			$response = $db->query($query);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   173
			if (PEAR::isError($response)) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   174
				error($response->getMessage());
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   175
				return false;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   176
			} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   177
				if ($type != 'SOA') { update_soa_serial($zoneid); }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   178
				return true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   179
			}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   180
		} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   181
			return false;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   182
		}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   183
		return true;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   184
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   185
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   186
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   187
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   188
function add_supermaster($master_ip, $ns_name, $account)
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   189
{
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   190
        global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   191
        if (!is_valid_ip($master_ip) && !is_valid_ip6($master_ip)) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   192
                error(ERR_DNS_IP);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   193
		return false;
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   194
        }
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   195
        if (!is_valid_hostname($ns_name)) {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   196
                error(ERR_DNS_HOSTNAME);
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   197
		return false;
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   198
        }
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   199
	if (!validate_account($account)) {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   200
		error(sprintf(ERR_INV_ARGC, "add_supermaster", "given account name is invalid (alpha chars only)"));
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   201
		return false;
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   202
	}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   203
        if (supermaster_exists($master_ip)) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   204
                error(ERR_SM_EXISTS);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   205
		return false;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   206
        } else {
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   207
                $db->query("INSERT INTO supermasters VALUES (".$db->quote($master_ip).", ".$db->quote($ns_name).", ".$db->quote($account).")");
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   208
                return true;
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   209
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   210
}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   211
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   212
function delete_supermaster($master_ip) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   213
	global $db;
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   214
        if (is_valid_ip($master_ip) || is_valid_ip6($master_ip))
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   215
        {
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   216
                $db->query("DELETE FROM supermasters WHERE ip = ".$db->quote($master_ip));
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   217
                return true;
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   218
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   219
        else
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   220
        {
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   221
                error(sprintf(ERR_INV_ARGC, "delete_supermaster", "No or no valid ipv4 or ipv6 address given."));
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   222
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   223
}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   224
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   225
function get_supermaster_info_from_ip($master_ip)
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   226
{
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   227
	global $db;
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   228
        if (is_valid_ip($master_ip) || is_valid_ip6($master_ip))
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   229
	{
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   230
	        $result = $db->queryRow("SELECT ip,nameserver,account FROM supermasters WHERE ip = ".$db->quote($master_ip));
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   231
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   232
		$ret = array(
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   233
		"master_ip"	=>              $result["ip"],
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   234
		"ns_name"	=>              $result["nameserver"],
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   235
		"account"	=>              $result["account"]
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   236
		);
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   237
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   238
		return $ret;	
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   239
	}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   240
        else
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   241
	{
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   242
                error(sprintf(ERR_INV_ARGC, "get_supermaster_info_from_ip", "No or no valid ipv4 or ipv6 address given."));
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   243
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   244
}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   245
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   246
function get_record_details_from_record_id($rid) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   247
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   248
	global $db;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   249
98
9c10fd623368 [feladat @ 198]
rejo
parents: 93
diff changeset
   250
	$query = "SELECT id AS rid, domain_id AS zid, name, type, content, ttl, prio, change_date FROM records WHERE id = " . $db->quote($rid) ;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   251
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   252
	$response = $db->query($query);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   253
	if (PEAR::isError($response)) { error($response->getMessage()); return false; }
98
9c10fd623368 [feladat @ 198]
rejo
parents: 93
diff changeset
   254
	
9c10fd623368 [feladat @ 198]
rejo
parents: 93
diff changeset
   255
	$return = $response->fetchRow();
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   256
	return $return;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   257
}
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   258
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   259
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   260
 * Delete a record by a given id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   261
 * return values: true, this function is always succesful.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   262
 */
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   263
function delete_record($rid)
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   264
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   265
	global $db;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   266
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   267
	if (verify_permission(zone_content_edit_others)) { $perm_content_edit = "all" ; } 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   268
	elseif (verify_permission(zone_content_edit_own)) { $perm_content_edit = "own" ; } 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   269
	else { $perm_content_edit = "none" ; }
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   270
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   271
	// Determine ID of zone first.
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   272
	$record = get_record_details_from_record_id($rid);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   273
	$user_is_zone_owner = verify_user_is_owner_zoneid($record['zid']);
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   274
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   275
	if ( $perm_content_edit == "all" || ($perm_content_edit == "own" && $user_is_zone_owner == "0" )) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   276
		if ($record['type'] == "SOA") {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   277
			error(_('You are trying to delete the SOA record. If are not allowed to remove it, unless you remove the entire zone.'));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   278
		} else {
98
9c10fd623368 [feladat @ 198]
rejo
parents: 93
diff changeset
   279
			$query = "DELETE FROM records WHERE id = " . $db->quote($rid);
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   280
			$response = $db->query($query);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   281
			if (PEAR::isError($response)) { error($response->getMessage()); return false; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   282
			return true;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   283
		}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   284
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   285
		error(ERR_PERM_DEL_RECORD);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   286
		return false;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   287
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   288
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   289
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   290
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   291
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   292
 * Add a domain to the database.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   293
 * A domain is name obligatory, so is an owner.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   294
 * return values: true when succesful.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   295
 * Empty means templates dont have to be applied.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   296
 * --------------------------------------------------------------------------
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   297
 * This functions eats a template and by that it inserts various records.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   298
 * first we start checking if something in an arpa record
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   299
 * remember to request nextID's from the database to be able to insert record.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   300
 * if anything is invalid the function will error
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   301
 */
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   302
function add_domain($domain, $owner, $webip, $mailip, $empty, $type, $slave_master)
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   303
{
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   304
	if(verify_permission(zone_master_add)) { $zone_master_add = "1" ; } ;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   305
	if(verify_permission(zone_slave_add)) { $zone_slave_add = "1" ; } ;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   306
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   307
	// TODO: make sure only one is possible if only one is enabled
86
0205771bf84c [feladat @ 186]
rejo
parents: 82
diff changeset
   308
	if($zone_master_add == "1" || $zone_slave_add == "1") {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   309
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   310
		global $db;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   311
		if (($domain && $owner && $webip && $mailip) || 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   312
				($empty && $owner && $domain) || 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   313
				(eregi('in-addr.arpa', $domain) && $owner) || 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   314
				$type=="SLAVE" && $domain && $owner && $slave_master) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   315
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   316
			$response = $db->query("INSERT INTO domains (name, type) VALUES (".$db->quote($domain).", ".$db->quote($type).")");
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   317
			if (PEAR::isError($response)) { error($response->getMessage()); return false; }
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   318
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   319
			$domain_id = $db->lastInsertId('domains', 'id');
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   320
			if (PEAR::isError($domain_id)) { error($id->getMessage()); return false; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   321
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   322
			$response = $db->query("INSERT INTO zones (domain_id, owner) VALUES (".$db->quote($domain_id).", ".$db->quote($owner).")");
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   323
			if (PEAR::isError($response)) { error($response->getMessage()); return false; }
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   324
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   325
			if ($type == "SLAVE") {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   326
				$response = $db->query("UPDATE domains SET master = ".$db->quote($slave_master)." WHERE id = ".$db->quote($domain_id));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   327
				if (PEAR::isError($response)) { error($response->getMessage()); return false; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   328
				return true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   329
			} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   330
				$now = time();
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   331
				if ($empty && $domain_id) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   332
					$ns1 = $GLOBALS['NS1'];
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   333
					$hm  = $GLOBALS['HOSTMASTER'];
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   334
					$ttl = $GLOBALS['DEFAULT_TTL'];
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   335
106
41d05ff53708 [feladat @ 206]
peter
parents: 98
diff changeset
   336
					$query = "INSERT INTO records (domain_id, name, content, type, ttl, prio, change_date) VALUES (" 
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   337
							. $db->quote($domain_id) . "," 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   338
							. $db->quote($domain) . "," 
106
41d05ff53708 [feladat @ 206]
peter
parents: 98
diff changeset
   339
							. $db->quote('SOA').","
87
654262e698e2 [feladat @ 187]
rejo
parents: 86
diff changeset
   340
							. $db->quote($ns1.' '.$hm.' 1') . ","
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   341
							. $db->quote($ttl) 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   342
							. ", 0, "
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   343
							. $db->quote($now).")";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   344
					$response = $db->query($query);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   345
					if (PEAR::isError($response)) { error($response->getMessage()); return false; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   346
				} elseif ($domain_id) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   347
					global $template;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   348
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   349
					foreach ($template as $r) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   350
						if ((eregi('in-addr.arpa', $domain) && ($r["type"] == "NS" || $r["type"] == "SOA")) || (!eregi('in-addr.arpa', $domain)))
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   351
						{
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   352
							$name     = parse_template_value($r["name"], $domain, $webip, $mailip);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   353
							$type     = $r["type"];
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   354
							$content  = parse_template_value($r["content"], $domain, $webip, $mailip);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   355
							$ttl      = $r["ttl"];
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   356
							$prio     = intval($r["prio"]);
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   357
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   358
							if (!$ttl) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   359
								$ttl = $GLOBALS["DEFAULT_TTL"];
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   360
							}
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   361
106
41d05ff53708 [feladat @ 206]
peter
parents: 98
diff changeset
   362
							$query = "INSERT INTO records (domain_id, name, type, content, ttl, prio, change_date) VALUES (" 
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   363
									. $db->quote($domain_id) . ","
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   364
									. $db->quote($name) . ","
87
654262e698e2 [feladat @ 187]
rejo
parents: 86
diff changeset
   365
									. $db->quote($type) . ","
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   366
									. $db->quote($content) . ","
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   367
									. $db->quote($ttl) . ","
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   368
									. $db->quote($prio) . ","
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   369
									. $db->quote($now) . ")";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   370
							$response = $db->query($query);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   371
							if (PEAR::isError($response)) { error($response->getMessage()); return false; }
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   372
						}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   373
					}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   374
					return true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   375
				 } else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   376
					error(sprintf(ERR_INV_ARGC, "add_domain", "could not create zone"));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   377
				 }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   378
			}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   379
		} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   380
			error(sprintf(ERR_INV_ARG, "add_domain"));
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   381
		}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   382
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   383
		error(ERR_PERM_ADD_ZONE_MASTER);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   384
		return false;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   385
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   386
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   387
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   388
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   389
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   390
 * Deletes a domain by a given id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   391
 * Function always succeeds. If the field is not found in the database, thats what we want anyway.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   392
 */
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   393
function delete_domain($id)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   394
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   395
	global $db;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   396
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   397
	if (verify_permission(zone_content_edit_others)) { $perm_edit = "all" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   398
	elseif (verify_permission(zone_content_edit_own)) { $perm_edit = "own" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   399
	else { $perm_edit = "none" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   400
	$user_is_zone_owner = verify_user_is_owner_zoneid($id);
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   401
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   402
        if ( $perm_edit == "all" || ( $perm_edit == "own" && $user_is_zone_owner == "1") ) {    
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   403
		if (is_numeric($id)) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   404
			$db->query("DELETE FROM zones WHERE domain_id=".$db->quote($id));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   405
			$db->query("DELETE FROM domains WHERE id=".$db->quote($id));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   406
			$db->query("DELETE FROM records WHERE domain_id=".$db->quote($id));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   407
			return true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   408
		} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   409
			error(sprintf(ERR_INV_ARGC, "delete_domain", "id must be a number"));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   410
			return false;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   411
		}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   412
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   413
		error(ERR_PERM_DEL_ZONE);
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   414
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   415
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   416
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   417
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   418
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   419
 * Gets the id of the domain by a given record id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   420
 * return values: the domain id that was requested.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   421
 */
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   422
function recid_to_domid($id)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   423
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   424
	global $db;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   425
	if (is_numeric($id))
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   426
	{
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   427
		$result = $db->query("SELECT domain_id FROM records WHERE id=".$db->quote($id));
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   428
		$r = $result->fetchRow();
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   429
		return $r["domain_id"];
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   430
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   431
	else
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   432
	{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   433
		error(sprintf(ERR_INV_ARGC, "recid_to_domid", "id must be a number"));
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   434
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   435
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   436
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   437
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   438
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   439
 * Change owner of a domain.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   440
 * return values: true when succesful.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   441
 */
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   442
function add_owner_to_zone($zone_id, $user_id)
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   443
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   444
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   445
	if ( (verify_permission(zone_meta_edit_others)) || (verify_permission(zone_meta_edit_own)) && verify_user_is_owner_zoneid($_GET["id"])) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   446
		// User is allowed to make change to meta data of this zone.
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   447
		if (is_numeric($zone_id) && is_numeric($user_id) && is_valid_user($user_id))
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   448
		{
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   449
			if($db->queryOne("SELECT COUNT(id) FROM zones WHERE owner=".$db->quote($user_id)." AND domain_id=".$db->quote($zone_id)) == 0)
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   450
			{
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   451
				$db->query("INSERT INTO zones (domain_id, owner) VALUES(".$db->quote($zone_id).", ".$db->quote($user_id).")");
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   452
			}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   453
			return true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   454
		} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   455
			error(sprintf(ERR_INV_ARGC, "add_owner_to_zone", "$zone_id / $user_id"));
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   456
		}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   457
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   458
		return false;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   459
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   460
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   461
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   462
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   463
function delete_owner_from_zone($zone_id, $user_id)
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   464
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   465
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   466
	if ( (verify_permission(zone_meta_edit_others)) || (verify_permission(zone_meta_edit_own)) && verify_user_is_owner_zoneid($_GET["id"])) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   467
		// User is allowed to make change to meta data of this zone.
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   468
		if (is_numeric($zone_id) && is_numeric($user_id) && is_valid_user($user_id))
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   469
		{
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   470
			// TODO: Next if() required, why not just execute DELETE query?
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   471
			if($db->queryOne("SELECT COUNT(id) FROM zones WHERE owner=".$db->quote($user_id)." AND domain_id=".$db->quote($zone_id)) != 0)
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   472
			{
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   473
				$db->query("DELETE FROM zones WHERE owner=".$db->quote($user_id)." AND domain_id=".$db->quote($zone_id));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   474
			}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   475
			return true;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   476
		} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   477
			error(sprintf(ERR_INV_ARGC, "delete_owner_from_zone", "$zone_id / $user_id"));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   478
		}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   479
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   480
		return false;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   481
	}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   482
	
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   483
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   484
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   485
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   486
 * Retrieves all supported dns record types
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   487
 * This function might be deprecated.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   488
 * return values: array of types in string form.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   489
 */
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   490
function get_record_types()
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   491
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   492
	global $rtypes;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   493
	return $rtypes;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   494
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   495
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   496
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   497
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   498
 * Retrieve all records by a given type and domain id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   499
 * Example: get all records that are of type A from domain id 1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   500
 * return values: a DB class result object
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   501
 */
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   502
function get_records_by_type_from_domid($type, $recid)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   503
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   504
	global $rtypes;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   505
	global $db;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   506
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   507
	// Does this type exist?
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   508
	if(!in_array(strtoupper($type), $rtypes))
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   509
	{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   510
		error(sprintf(ERR_INV_ARGC, "get_records_from_type", "this is not a supported record"));
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   511
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   512
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   513
	// Get the domain id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   514
	$domid = recid_to_domid($recid);
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   515
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   516
	$result = $db->query("select id, type from records where domain_id=".$db->quote($recid)." and type=".$db->quote($type));
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   517
	return $result;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   518
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   519
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   520
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   521
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   522
 * Retrieves the type of a record from a given id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   523
 * return values: the type of the record (one of the records types in $rtypes assumable).
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   524
 */
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   525
function get_recordtype_from_id($id)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   526
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   527
	global $db;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   528
	if (is_numeric($id))
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   529
	{
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   530
		$result = $db->query("SELECT type FROM records WHERE id=".$db->quote($id));
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   531
		$r = $result->fetchRow();
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   532
		return $r["type"];
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   533
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   534
	else
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   535
	{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   536
		error(sprintf(ERR_INV_ARG, "get_recordtype_from_id"));
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   537
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   538
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   539
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   540
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   541
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   542
 * Retrieves the name (e.g. bla.test.com) of a record by a given id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   543
 * return values: the name associated with the id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   544
 */
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   545
function get_name_from_record_id($id)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   546
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   547
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   548
	if (is_numeric($id)) {
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   549
		$result = $db->query("SELECT name FROM records WHERE id=".$db->quote($id));
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   550
		$r = $result->fetchRow();
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   551
		return $r["name"];
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   552
	} else {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   553
		error(sprintf(ERR_INV_ARG, "get_name_from_record_id"));
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   554
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   555
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   556
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   557
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   558
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   559
 * Get domain name from a given id
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   560
 * return values: the name of the domain associated with the id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   561
 */
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   562
function get_domain_name_from_id($id)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   563
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   564
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   565
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   566
	if (is_numeric($id))
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   567
	{
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   568
		$result = $db->query("SELECT name FROM domains WHERE id=".$db->quote($id));
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   569
		$rows = $result->numRows() ;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   570
		if ($rows == 1) {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   571
 			$r = $result->fetchRow();
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   572
 			return $r["name"];
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   573
		} elseif ($rows == "0") {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   574
			error(sprintf("Zone does not exist."));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   575
			return false;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   576
		} else {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   577
	 		error(sprintf(ERR_INV_ARGC, "get_domain_name_from_id", "more than one domain found?! whaaa! BAD! BAD! Contact admin!"));
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   578
			return false;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   579
		}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   580
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   581
	else
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   582
	{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   583
		error(sprintf(ERR_INV_ARGC, "get_domain_name_from_id", "Not a valid domainid: $id"));
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   584
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   585
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   586
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   587
function get_zone_info_from_id($zone_id) {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   588
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   589
	if (verify_permission(zone_content_view_others)) { $perm_view = "all" ; } 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   590
	elseif (verify_permission(zone_content_view_own)) { $perm_view = "own" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   591
	else { $perm_view = "none" ;}
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   592
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   593
	if ($perm_view == "none") { 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   594
		error(ERR_PERM_VIEW_ZONE);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   595
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   596
		global $db;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   597
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   598
		$query = "SELECT 	domains.type AS type, 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   599
					domains.name AS name, 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   600
					domains.master AS master_ip,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   601
					count(records.domain_id) AS record_count
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   602
					FROM domains, records 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   603
					WHERE domains.id = " . $db->quote($zone_id) . "
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   604
					AND domains.id = records.domain_id 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   605
					GROUP BY domains.id";
88
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   606
		$result = $db->query($query);
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   607
		if (PEAR::isError($result)) { error($result->getMessage()); return false; }
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   608
88
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   609
		if($result->numRows() != 1) {
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   610
			error(_('Function returned an error (multiple zones matching this zone ID).'));
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   611
			return false;
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   612
		} else {
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   613
			$r = $result->fetchRow();
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   614
			$return = array(
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   615
				"name"		=>	$r['name'],
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   616
				"type"		=>	$r['type'],
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   617
				"master_ip"	=>	$r['master_ip'],
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   618
				"record_count"	=>	$r['record_count']
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   619
				);
fa948cc3727e [feladat @ 188]
rejo
parents: 87
diff changeset
   620
		}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   621
		return $return;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   622
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   623
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   624
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   625
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   626
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   627
 * Check if a domain is already existing.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   628
 * return values: true if existing, false if it doesnt exist.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   629
 */
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   630
function domain_exists($domain)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   631
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   632
	global $db;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   633
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   634
	if (is_valid_domain($domain)) {
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   635
		$result = $db->query("SELECT id FROM domains WHERE name=".$db->quote($domain));
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   636
		if ($result->numRows() == 0) {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   637
			return false;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   638
		} elseif ($result->numRows() >= 1) {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   639
			return true;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   640
		}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   641
	} else {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   642
		error(ERR_DOMAIN_INVALID);
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   643
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   644
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   645
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   646
function get_supermasters()
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   647
{
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   648
        global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   649
        
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   650
	$result = $db->query("SELECT ip, nameserver, account FROM supermasters");
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   651
	if (PEAR::isError($response)) { error($response->getMessage()); return false; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   652
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   653
        $ret = array();
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   654
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   655
        if($result->numRows() == 0) {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   656
                return -1;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   657
        } else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   658
                while ($r = $result->fetchRow()) {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   659
                        $ret[] = array(
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   660
                        "master_ip"     => $r["ip"],
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   661
                        "ns_name"       => $r["nameserver"],
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   662
                        "account"       => $r["account"],
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   663
                        );
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   664
                }
36
4ec5ab29f634 [feladat @ 83]
rejo
parents: 30
diff changeset
   665
		return $ret;
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   666
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   667
}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   668
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   669
function supermaster_exists($master_ip)
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   670
{
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   671
        global $db;
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   672
        if (is_valid_ip($master_ip) || is_valid_ip6($master_ip))
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   673
        {
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   674
                $result = $db->query("SELECT ip FROM supermasters WHERE ip = ".$db->quote($master_ip));
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   675
                if ($result->numRows() == 0)
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   676
                {
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   677
                        return false;
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   678
                }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   679
                elseif ($result->numRows() >= 1)
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   680
                {
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   681
                        return true;
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   682
                }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   683
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   684
        else
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   685
        {
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   686
                error(sprintf(ERR_INV_ARGC, "supermaster_exists", "No or no valid IPv4 or IPv6 address given."));
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   687
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   688
}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   689
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   690
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   691
function get_zones($perm,$userid=0,$letterstart=all,$rowstart=0,$rowamount=999999) 
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   692
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   693
	global $db;
55
a885f557678f [feladat @ 102]
peter
parents: 47
diff changeset
   694
	global $sql_regexp;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   695
	if ($perm != "own" && $perm != "all") {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   696
		error(ERR_PERM_VIEW_ZONE);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   697
		return false;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   698
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   699
	else
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   700
	{
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   701
		if ($perm == "own") {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   702
			$sql_add = " AND zones.domain_id = domains.id
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   703
				AND zones.owner = ".$db->quote($userid);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   704
		}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   705
		if ($letterstart!=all && $letterstart!=1) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   706
			$sql_add .=" AND domains.name LIKE ".$db->quote($letterstart."%")." ";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   707
		} elseif ($letterstart==1) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   708
			$sql_add .=" AND substring(domains.name,1,1) ".$sql_regexp." '^[[:digit:]]'";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   709
		}
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   710
	}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   711
	
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   712
	$sqlq = "SELECT domains.id, 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   713
			domains.name,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   714
			domains.type,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   715
			COUNT(DISTINCT records.id) AS count_records
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   716
			FROM domains
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   717
			LEFT JOIN zones ON domains.id=zones.domain_id 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   718
			LEFT JOIN records ON records.domain_id=domains.id
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   719
			WHERE 1=1".$sql_add." 
106
41d05ff53708 [feladat @ 206]
peter
parents: 98
diff changeset
   720
			GROUP BY domains.name, domains.id, domains.type
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   721
			ORDER BY domains.name";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   722
	
74
43c31dc98305 [feladat @ 121]
peter
parents: 71
diff changeset
   723
	$db->setLimit($rowamount, $rowstart);
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   724
	$result = $db->query($sqlq);
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   725
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   726
	while($r = $result->fetchRow())
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   727
	{
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   728
		$ret[$r["name"]] = array(
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   729
		"id"		=>	$r["id"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   730
		"name"		=>	$r["name"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   731
		"type"		=>	$r["type"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   732
		"count_records"	=>	$r["count_records"]
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   733
		);	
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   734
	}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   735
	return $ret;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   736
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   737
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   738
// TODO: letterstart limitation and userid permission limitiation should be applied at the same time?
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   739
function zone_count_ng($perm, $letterstart=all) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   740
	global $db;
55
a885f557678f [feladat @ 102]
peter
parents: 47
diff changeset
   741
	global $sql_regexp;
115
b1d7998a903e [feladat @ 218]
peter
parents: 111
diff changeset
   742
b1d7998a903e [feladat @ 218]
peter
parents: 111
diff changeset
   743
	$fromTable = 'domains';
b1d7998a903e [feladat @ 218]
peter
parents: 111
diff changeset
   744
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   745
	if ($perm != "own" && $perm != "all") {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   746
		$zone_count = "0";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   747
	} 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   748
	else 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   749
	{
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   750
		if ($perm == "own") {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   751
			$sql_add = " AND zones.domain_id = domains.id
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   752
					AND zones.owner = ".$db->quote($_SESSION['userid']);
115
b1d7998a903e [feladat @ 218]
peter
parents: 111
diff changeset
   753
			$fromTable .= ',zones';
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   754
		}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   755
		if ($letterstart!=all && $letterstart!=1) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   756
			$sql_add .=" AND domains.name LIKE ".$db->quote($letterstart."%")." ";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   757
		} elseif ($letterstart==1) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   758
			$sql_add .=" AND substring(domains.name,1,1) ".$sql_regexp." '^[[:digit:]]'";
37
b785e54690ce [feladat @ 84]
rejo
parents: 36
diff changeset
   759
		}
b785e54690ce [feladat @ 84]
rejo
parents: 36
diff changeset
   760
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   761
		$sqlq = "SELECT COUNT(distinct domains.id) AS count_zones 
115
b1d7998a903e [feladat @ 218]
peter
parents: 111
diff changeset
   762
			FROM ".$fromTable."	WHERE 1=1
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   763
			".$sql_add.";";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   764
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   765
		$zone_count = $db->queryOne($sqlq);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   766
	}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   767
	return $zone_count;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   768
}
30
380197766e7e [feladat @ 77]
rejo
parents: 21
diff changeset
   769
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   770
function zone_count_for_uid($uid) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   771
	global $db;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   772
	$query = "SELECT COUNT(domain_id) 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   773
			FROM zones 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   774
			WHERE owner = " . $db->quote($uid) . " 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   775
			ORDER BY domain_id";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   776
	$zone_count = $db->queryOne($query);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   777
	return $zone_count;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   778
}
30
380197766e7e [feladat @ 77]
rejo
parents: 21
diff changeset
   779
380197766e7e [feladat @ 77]
rejo
parents: 21
diff changeset
   780
380197766e7e [feladat @ 77]
rejo
parents: 21
diff changeset
   781
/*
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   782
 * Get a record from an id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   783
 * Retrieve all fields of the record and send it back to the function caller.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   784
 * return values: the array with information, or -1 is nothing is found.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   785
 */
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   786
function get_record_from_id($id)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   787
{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   788
	global $db;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   789
	if (is_numeric($id))
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   790
	{
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   791
		$result = $db->query("SELECT id, domain_id, name, type, content, ttl, prio, change_date FROM records WHERE id=".$db->quote($id));
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   792
		if($result->numRows() == 0)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   793
		{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   794
			return -1;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   795
		}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   796
		elseif ($result->numRows() == 1)
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   797
		{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   798
			$r = $result->fetchRow();
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   799
			$ret = array(
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   800
				"id"            =>      $r["id"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   801
				"domain_id"     =>      $r["domain_id"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   802
				"name"          =>      $r["name"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   803
				"type"          =>      $r["type"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   804
				"content"       =>      $r["content"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   805
				"ttl"           =>      $r["ttl"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   806
				"prio"          =>      $r["prio"],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   807
				"change_date"   =>      $r["change_date"]
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   808
				);
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   809
			return $ret;
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   810
		}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   811
		else
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   812
		{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   813
			error(sprintf(ERR_INV_ARGC, "get_record_from_id", "More than one row returned! This is bad!"));
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   814
		}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   815
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   816
	else
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   817
	{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   818
		error(sprintf(ERR_INV_ARG, "get_record_from_id"));
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   819
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   820
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   821
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   822
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   823
/*
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   824
 * Get all records from a domain id.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   825
 * Retrieve all fields of the records and send it back to the function caller.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   826
 * return values: the array with information, or -1 is nothing is found.
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   827
 */
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   828
function get_records_from_domain_id($id,$rowstart=0,$rowamount=999999) {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   829
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   830
	if (is_numeric($id)) {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   831
		if ($_SESSION[$id."_ispartial"] == 1) {
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   832
			$db->setLimit($rowamount, $rowstart);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   833
			$result = $db->query("SELECT record_owners.record_id as id
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   834
					FROM record_owners,domains,records
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   835
					WHERE record_owners.user_id = " . $db->quote($_SESSION["userid"]) . "
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   836
					AND record_owners.record_id = records.id
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   837
					AND records.domain_id = " . $db->quote($id) . "
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   838
					GROUP BY record_owners.record_id");
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   839
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   840
			$ret = array();
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   841
			if($result->numRows() == 0) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   842
				return -1;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   843
			} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   844
				$ret[] = array();
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   845
				$retcount = 0;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   846
				while($r = $result->fetchRow())
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   847
				{
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   848
					// Call get_record_from_id for each row.
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   849
					$ret[$retcount] = get_record_from_id($r["id"]);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   850
					$retcount++;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   851
				}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   852
				return $ret;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   853
			}
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   854
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   855
		} else {
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   856
			$db->setLimit($rowamount, $rowstart);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   857
			$result = $db->query("SELECT id FROM records WHERE domain_id=".$db->quote($id));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   858
			$ret = array();
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   859
			if($result->numRows() == 0)
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   860
			{
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   861
				return -1;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   862
			}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   863
			else
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   864
			{
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   865
				$ret[] = array();
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   866
				$retcount = 0;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   867
				while($r = $result->fetchRow())
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   868
				{
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   869
					// Call get_record_from_id for each row.
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   870
					$ret[$retcount] = get_record_from_id($r["id"]);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   871
					$retcount++;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   872
				}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   873
				return $ret;
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   874
			}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   875
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   876
		}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   877
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   878
	else
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   879
	{
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   880
		error(sprintf(ERR_INV_ARG, "get_records_from_domain_id"));
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   881
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   882
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   883
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   884
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   885
function get_users_from_domain_id($id) {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   886
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   887
	$sqlq = "SELECT owner FROM zones WHERE domain_id =" .$db->quote($id);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   888
	$id_owners = $db->query($sqlq);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   889
	if ($id_owners->numRows() == 0) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   890
		return -1;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   891
	} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   892
		while ($r = $id_owners->fetchRow()) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   893
			$fullname = $db->queryOne("SELECT fullname FROM users WHERE id=".$r['owner']);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   894
			$owners[] = array(
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   895
				"id" 		=> 	$r['owner'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   896
				"fullname"	=>	$fullname		
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   897
			);		
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   898
		}
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   899
	}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   900
	return $owners;	
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   901
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   902
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   903
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   904
function search_zone_and_record($holy_grail,$perm) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   905
	
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   906
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   907
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   908
	$holy_grail = trim($holy_grail);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   909
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   910
	if (verify_permission(zone_content_view_others)) { $perm_view = "all" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   911
	elseif (verify_permission(zone_content_view_own)) { $perm_view = "own" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   912
	else { $perm_view = "none" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   913
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   914
	if (verify_permission(zone_content_edit_others)) { $perm_content_edit = "all" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   915
	elseif (verify_permission(zone_content_edit_own)) { $perm_content_edit = "own" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   916
	else { $perm_content_edit = "none" ; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   917
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   918
	// Search for matching domains
62
ce4919f37489 [feladat @ 109]
rejo
parents: 60
diff changeset
   919
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   920
	if ($perm == "own") {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   921
		$sql_add_from = ", zones ";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   922
		$sql_add_where = " AND zones.domain_id = domains.id AND zones.owner = " . $db->quote($userid);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   923
	}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   924
	
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   925
	$query = "SELECT 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   926
			domains.id AS zid,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   927
			domains.name AS name,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   928
			domains.type AS type,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   929
			domains.master AS master
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   930
			FROM domains" . $sql_add_from . "
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   931
			WHERE domains.name LIKE " . $db->quote($holy_grail)
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   932
			. $sql_add_where ;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   933
	
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   934
	$response = $db->query($query);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   935
	if (PEAR::isError($response)) { error($response->getMessage()); return false; }
62
ce4919f37489 [feladat @ 109]
rejo
parents: 60
diff changeset
   936
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   937
	while ($r = $response->fetchRow()) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   938
		$return_zones[] = array(
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   939
			"zid"		=>	$r['zid'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   940
			"name"		=>	$r['name'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   941
			"type"		=>	$r['type'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   942
			"master"	=>	$r['master']);
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   943
	}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   944
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   945
	// Search for matching records
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   946
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   947
	if ($perm == "own") {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   948
		$sql_add_from = ", zones ";
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   949
		$sql_add_where = " AND zones.domain_id = record.id AND zones.owner = " . $db->quote($userid);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   950
	}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   951
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   952
	$query = "SELECT
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   953
			records.id AS rid,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   954
			records.name AS name,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   955
			records.type AS type,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   956
			records.content AS content,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   957
			records.ttl AS ttl,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   958
			records.prio AS prio,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   959
			records.domain_id AS zid
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   960
			FROM records" . $sql_add_from . "
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   961
			WHERE (records.name LIKE " . $db->quote($holy_grail) . " OR records.content LIKE " . $db->quote($holy_grail) . ")"
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   962
			. $sql_add_where ;
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   963
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   964
	$response = $db->query($query);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   965
	if (PEAR::isError($response)) { error($response->getMessage()); return false; }
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   966
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   967
	while ($r = $response->fetchRow()) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   968
		$return_records[] = array(
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   969
			"rid"		=>	$r['rid'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   970
			"name"		=>	$r['name'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   971
			"type"		=>	$r['type'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   972
			"content"	=>	$r['content'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   973
			"ttl"		=>	$r['ttl'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   974
			"zid"		=>	$r['zid'],
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   975
			"prio"		=>	$r['prio']);
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   976
	}
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   977
	return array('zones' => $return_zones, 'records' => $return_records);
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   978
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   979
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   980
function get_domain_type($id) {
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
   981
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   982
        if (is_numeric($id)) {
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   983
		$type = $db->queryOne("SELECT type FROM domains WHERE id = ".$db->quote($id));
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   984
		if ($type == "") {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   985
			$type = "NATIVE";
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   986
		}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   987
		return $type;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   988
        } else {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   989
                error(sprintf(ERR_INV_ARG, "get_record_from_id", "no or no valid zoneid given"));
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   990
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   991
}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   992
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   993
function get_domain_slave_master($id){
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   994
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   995
        if (is_numeric($id)) {
65
ce1c4d5e1576 [feladat @ 112]
peter
parents: 63
diff changeset
   996
		$slave_master = $db->queryOne("SELECT master FROM domains WHERE type = 'SLAVE' and id = ".$db->quote($id));
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   997
		return $slave_master;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
   998
        } else {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
   999
                error(sprintf(ERR_INV_ARG, "get_domain_slave_master", "no or no valid zoneid given"));
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1000
        }
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
  1001
}
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
  1002
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1003
function change_zone_type($type, $id)
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
  1004
{
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1005
	global $db;
79
0c0aa144356a [feladat @ 156]
peter
parents: 78
diff changeset
  1006
	$add = '';
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1007
        if (is_numeric($id))
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1008
	{
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1009
		// It is not really neccesary to clear the field that contains the IP address 
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1010
		// of the master if the type changes from slave to something else. PowerDNS will
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1011
		// ignore the field if the type isn't something else then slave. But then again,
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1012
		// it's much clearer this way.
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1013
		if ($type != "SLAVE") {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1014
			$add = ", master=''";
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1015
		}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1016
		$result = $db->query("UPDATE domains SET type = " . $db->quote($type) . $add . " WHERE id = ".$db->quote($id));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1017
	} else {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1018
                error(sprintf(ERR_INV_ARG, "change_domain_type", "no or no valid zoneid given"));
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1019
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1020
}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1021
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1022
function change_zone_slave_master($zone_id, $ip_slave_master) {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1023
	global $db;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1024
        if (is_numeric($zone_id)) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1025
       		if (is_valid_ip($ip_slave_master) || is_valid_ip6($ip_slave_master)) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1026
			$result = $db->query("UPDATE domains SET master = " .$db->quote($ip_slave_master). " WHERE id = ".$db->quote($zone_id));
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1027
		} else {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1028
			error(sprintf(ERR_INV_ARGC, "change_domain_ip_slave_master", "This is not a valid IPv4 or IPv6 address: $ip_slave_master"));
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1029
		}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1030
	} else {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1031
                error(sprintf(ERR_INV_ARG, "change_domain_type", "no or no valid zoneid given"));
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1032
        }
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1033
}
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1034
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1035
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1036
function validate_account($account) {
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1037
  	if(preg_match("/^[A-Z0-9._-]+$/i",$account)) {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1038
		return true;
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1039
	} else {
13
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1040
		return false;
2ff220cfde13 [feladat @ 60]
rejo
parents: 8
diff changeset
  1041
	}
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
  1042
}
82
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1043
c255196bc447 [feladat @ 182]
rejo
parents: 81
diff changeset
  1044
1
58094faf794d [feladat @ 2]
rejo
parents:
diff changeset
  1045
?>