1. Trang chủ
  2. » Công Nghệ Thông Tin

Secure PHP Development- P136 pdf

5 125 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Secure PHP Development
Trường học Standard University
Chuyên ngành Computer Science
Thể loại Thesis
Năm xuất bản 2003
Thành phố City Name
Định dạng
Số trang 5
Dung lượng 96,71 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

To use them, just call the desired zone template using the --template=zone_template option.. Remember to place your zone template in the templates directory pointed to by the ZONE_TEMPLA

Trang 1

All the IP addresses and host names are inserted using various $GLOBALS set from the makezone script and makezone.conf file.

You can create as many zone templates as you wish To use them, just call the desired zone template using the template=zone_template option Remember to place your zone template in the templates directory pointed to by the

ZONE_TEMPLATE_DIRconstant in makezone.conf.

Make sure your template is a PHP script containing the getZone Configuration()function, which returns the full zone configuration

The zone template produced configuration is stored in the ZONE_DIR directory

as a separate zone file.

There is one other kind of template that makezone uses for creating the config-uration needed to add a new zone configconfig-uration to /etc/named.conf This template

is shown in Listing 18-4.

Listing 18-4: named.master_zone.conf

<?php function getNamedZoneConfig() {

$output = <<<MASTER_ZONE_NAMED_CONF //

// Master zone configuration for $GLOBALS[ZONE]

//

zone “$GLOBALS[ZONE]” IN {

type master;

file “$GLOBALS[ZONE_FILE]”;

allow-update { none; };

};

MASTER_ZONE_NAMED_CONF;

return $output;

}

?>

Trang 2

Like the zone template, this is also a PHP script It has a function called

getNamedZoneConfig(), which is called by makezone This function returns the configuration that is appended to the /etc/named.conffile to hook up the new zone to the DNS server The following code shows sample output of this template:

//

// Master zone configuration for example.com //

zone “example.com” IN {

type master;

file “example.com.zone”;

allow-update { none; };

};

This configuration is appended to /etc/named.conf Notice that we only create a master configuration for the new forward domain.

When makezone is run successfully to create a new zone, a zone file is created in the location specified by ZONE_DIR, and the appropriate configuration is appended

to the file specified by NAMED_CONFto enable the DNS server to find the new zone configuration.

Once makezone is successful, you can restart the BIND name server using the following:

/etc/rc.d/init.d/named restart

This will load the new zone, and you can test your new zone data using the dig

command, which is discussed in the section, “ Testing makezone.”

Understanding makezone

The makezone utility is implemented in Listing 18-5 This script works as follows:

◆ It expects the command-line arguments and options defined in

$CMD_SHORT_OPTIONSand $CMD_LONG_OPTIONS

◆ It retrieves the command-line arguments and options into $cmd

using the getCommandLineOptions()function, which is called with

Console_Getopt::getopt()output, which returns valid command-line arguments and options or an error object.

◆ If no command-line argument is provided, the syntax()function is called

to display syntax.

◆ If the addoption is specified, the addZone()function is called to create the new zone.

Trang 3

Listing 18-5: makezone

#!/usr/bin/php -q

<?php require_once(‘makezone.conf’);

$CMD_SHORT_OPTIONS = ‘h’;

$CMD_LONG_OPTIONS = array(‘help’,

‘add=’,

‘name=’,

‘template=’,

‘enable’,

‘disable’,

‘test’

);

$cmd = getCommandLineOptions(

Console_Getopt::getopt($GLOBALS[‘argv’],

$CMD_SHORT_OPTIONS,

$CMD_LONG_OPTIONS) );

if (empty($cmd)) syntax();

if ($cmd[add] == ‘zone’) {

addZone($cmd[name], $cmd[template]);

} exit;

function addZone($zone =null, $template = null) {

// First check if zone is already created

$zoneFile = getFQPNZoneFile($zone);

if (zoneExists($zoneFile)) {

echo “Error: $zoneFile exists.\n”;

return FALSE;

Trang 4

$zoneTemplate = getFQPNZoneTemplate($template);

if (empty($zoneTemplate)) return FALSE;

echo “Adding $zone using $zoneTemplate \n”;

require_once($zoneTemplate);

$GLOBALS[ZONE] = $zone;

$config = getZoneConfiguration();

echo $config;

$status = writeZoneFile($zoneFile, $config);

$namedMasterZoneTemplate = getFQPNNamedMasterZoneTemplate();

if ( ! file_exists($namedMasterZoneTemplate)) {

echo “Error: $namedMasterZoneTemplate is missing\n”;

return FALSE;

} echo “Loading $namedMasterZoneTemplate ”;

require_once($namedMasterZoneTemplate);

echo “OK.\n”;

$GLOBALS[ZONE_FILE] = basename($zoneFile);

$baseZoneFile = basename($zoneFile);

if (! zoneInNamedConf($baseZoneFile)) {

$namedConf = getNamedZoneConfig();

$status = appendNamedConfFile($namedConf);

Continued

Trang 5

Listing 18-5(Continued)

echo $namedConf;

} else { echo “Warning: $baseZoneFile “

“already used in “ NAMED_CONF “\n”;

} return TRUE;

} function zoneInNamedConf($file = null) {

$lines = file(NAMED_CONF);

if (count($lines) <1) return FALSE;

$search = ‘/’ $file ‘/’;

foreach ($lines as $named_conf) {

if (preg_match($search, $named_conf)) return TRUE; }

return FALSE;

} function appendNamedConfFile($config = null) {

$fp = fopen(NAMED_CONF, ‘a’);

if (! $fp) {

echo “Error: could not open “ NAMED_CONF “ for update.\n”;

return FALSE;

} fputs($fp, $config);

fclose($fp);

return TRUE;

Ngày đăng: 07/07/2014, 07:20

TỪ KHÓA LIÊN QUAN