DNS Files
ID |
Name |
Type |
|
";
$post = "";
}
else
{
$pre = "";
$post = "";
}
switch( $row["f_type"] )
{
case 1:
$type = "Forward DNS";
break;
case 2:
$type = "Reverse DNS";
break;
case 3:
$type = "DHCP";
break;
case 4:
$type = "FIdent Daemon";
break;
default:
break;
}
echo "\n";
echo "" . $pre . $id . $post . " | \n";
echo "" . $pre . $row["f_name"] . $post . " | \n";
echo "" . $pre . $type . $post . " | \n";
echo "edit | \n";
echo "
\n";
}
?>
Add New File (1/2)
illegal parameter name '$name'\n";
return false;
}
$value = $_POST[$name];
if( $value == "" )
{
echo "parameter '$name' is empty
\n";
return false;
}
switch( $name )
{
case "dfllease":
case "maxlease":
case "domain":
if( !checkInt( $value ) )
{
echo "illegal parameter '$name'
\n";
return false;
}
break;
case "router":
case "ns":
if( !checkDomainName( $value ) )
{
echo "illegal parameter '$name'
\n";
return false;
}
break;
case "mailuser":
if( !ereg( "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$", $value ) )
{
echo "illegal parameter '$name'
\n";
return false;
}
break;
case "ttl":
case "refresh":
case "retry":
case "expiry":
case "minimum":
if( !ereg( "^[1-9][0-9]*[DW]$", $value ) )
{
echo "illegal parameter '$name'
\n";
return false;
}
break;
case "minip":
case "maxip":
case "netmask":
case "broadcast":
if( ipToInt( $value ) == -1 )
{
echo "illegal parameter '$name'
\n";
return false;
}
break;
case "defaultreply":
if( $value != "none" )
{
echo "illegal parameter '$name'
\n";
return false;
}
break;
default:
echo "illegal parameter name '$name'
\n";
return false;
}
$parameters[$name] = $value;
$i++;
}
return true;
}
function edit( $conn, $id, $fromdb )
{
$parameters = array();
if( $fromdb )
{
$sql = "select f_name, f_type " .
"from file where f_id = $id";
$rs = pg_exec( $conn, $sql );
if( !$rs )
{
echo "SQL: error selecting file
\n";
return;
}
$row = pg_fetch_array( $rs );
if( !$row )
{
echo "SQL: file not found
\n";
return;
}
$name = $row["f_name"];
$type = $row["f_type"];
$sql = "select fp_name, fp_value from fileparam where f_id = $id";
$rs = pg_exec( $conn, $sql );
if( !$rs )
{
echo "SQL: error selecting file params
\n";
return;
}
$row = pg_fetch_array( $rs );
while( $row )
{
$parameters[$row["fp_name"]] = $row["fp_value"];
$row = pg_fetch_array( $rs );
}
echo "Update File
\n";
}
else
{
$name = getPostVar( "name", "" );
$type = getPostVar( "type", "" );
setDefaultParameters( $parameters, $type );
echo "Add New File (2/2)
\n";
}
echo "\n";
}
function update( $conn, $id )
{
$dnsuid = $_SESSION["dnsuid"];
$type = getPostVar( "type", "" );
if( !checkInt( $id ) )
{
echo "illegal type
\n";
return 0;
}
$type = (int)$type;
if( $type < 1 || $type > 4 )
{
echo "illegal type $type
\n";
return 0;
}
$name = getPostVar( "name", "" );
if( !ereg( "^[a-z0-9.]*$", $name ) )
{
echo "illegal name
\n";
return 0;
}
$parameters = array();
if( !getPostParameters( $parameters, $type ) )
{
return 0;
}
//$pass = stripslashes( getPostVar( "pass", "" ) );
$xid = $id;
if( $id == 0 )
{
$id = db_get_next_id( $conn, "file", "f_id" );
if( $id == 0 )
{
return 0;
}
}
else
{
if( !checkInt( $id ) )
{
echo "illegal id
\n";
return 0;
}
}
if( !db_begin_work($conn ) )
{
return 0;
}
if( $xid == 0 )
{
$sql = "insert into file (" .
"f_id, f_type, f_name" .
") values (" .
"$id, $type, '$name'" .
")";
}
else
{
$sql = "update file set " .
"f_type = $type, " .
"f_name = '$name' " .
"where f_id = $id";
}
showVar( "sql", $sql );
if( !pg_exec( $conn, $sql ) )
{
db_rollback_work($conn);
return 0;
}
reset( $parameters );
while( list( $name, $value ) = each( $parameters ) )
{
if( $xid == 0 )
{
$sql = "insert into fileparam ( " .
"f_id, fp_name, fp_value " .
") values ( " .
"$id, '$name', '$value' " .
")";
}
else
{
$sql = "update fileparam set fp_value = '$value' " .
"where f_id = $id and fp_name = '$name'";
}
showVar( "sql", $sql );
if( !pg_exec( $conn, $sql ) )
{
db_rollback_work($conn);
return 0;
}
}
// ip range priv
if( $type == 2 )
{
$sql = "select ipr_id from iprange";
$sql = "select r.ipr_id, f.f_id " .
"from iprange r left join fileiprange f " .
"on r.ipr_id = f.ipr_id and f.f_id = $id " .
"order by ipr_min_addr";
$rs = pg_exec( $conn, $sql );
if( !$rs )
{
echo "SQL: error selecting ip ranges
\n";
db_rollback_work($conn);
return 0;
}
while( $row = pg_fetch_array( $rs ) )
{
$iprid = $row["ipr_id"];
$var = "iprid_" . $iprid;
if( getPostVar( $var, "" ) == "checked" )
{
$sql = "insert into fileiprange ( f_id, ipr_id ) " .
"values ( $id, $iprid )";
if( $row["f_id"] != "" )
{
$sql = "";
}
//showVar( "f_id", $row["f_id"] );
}
else
{
$sql = "delete from fileiprange " .
"where f_id = $id and ipr_id = $iprid";
if( $row["f_id"] == "" )
{
$sql = "";
}
}
if( $sql != "" )
{
showVar( "sql", $sql );
pg_exec( $conn, $sql );
}
}
}
db_commit_work($conn);
return $id;
}
function delete( $conn, $id )
{
$dnsuid = $_SESSION["dnsuid"];
if( !checkInt( $id ) )
{
echo "illegal ID
\n";
return false;
}
if( !db_begin_work($conn ) )
{
return false;
}
$sql = "delete file where f_id = $id";
pg_exec( $conn, $sql );
if( !pg_exec( $conn, $sql ) )
{
db_rollback_work($conn);
return false;
}
$sql = "delete fileparam where f_id = $id";
pg_exec( $conn, $sql );
$sql = "delete fileiprange where f_id = $id";
pg_exec( $conn, $sql );
db_commit_work($conn);
return true;
}
switch( $subcmd )
{
case "edit":
edit( $conn, $_REQUEST["id"], true );
break;
case "add":
add();
break;
case "add2":
edit( $conn, 0, false );
break;
case "insert":
$id = update( $conn, 0 );
if( $id > 0 )
{
show( $conn, $id );
$subcmd = "show";
}
else
{
edit( $conn, $id, false );
}
break;
case "update":
if( update( $conn, $_REQUEST["id"] ) != 0 )
{
show( $conn, $_REQUEST["id"] );
$subcmd = "show";
}
else
{
edit( $conn, $_REQUEST["id"], false );
}
break;
case "delete":
if( update( $conn, $_REQUEST["id"] ) )
{
show( $conn, 0 );
$subcmd = "show";
}
else
{
edit( $conn, $_REQUEST["id"], false );
}
break;
default:
show( $conn, 0 );
$subcmd = "show";
break;
}
if( $subcmd != "show" )
{
addToMenu( "show files", "file", "" );
}
if( $subcmd != "add" )
{
addToMenu( "add file", "file", "add" );
}
?>