"",
"address" => "",
"active" => "",
"nmask" => "",
"heartbeat" => "",
"weight" => ""
),
),
);
*/
$virt = array ( "",
array (
"virtual" => "",
"address" => "",
"vip_nmask" => "",
"fwmark" => "",
"active" => "",
"port" => "",
"load_monitor" => "",
"scheduler" => "",
"method" => "",
"protocol" => "",
"persistent" => "",
"pmask" => "",
"send" => "",
"expect" => "",
"use_regex" => "",
"send_program" => "",
"expect_program" => "",
"persistent" => "",
"timeout" => "",
"reentry" => "",
"quiesce_server" => ""
)
);
$fail = array ( "",
array (
"failover" => "",
"address" => "",
"active" => "",
"vip_nmask" => "",
"port" => "",
"timeout" => "",
"heartbeat" => "",
"send" => "",
"expect" => "",
"start_cmd" => "",
"stop_cmd" => "",
"send_program" => "",
"expect_program" => ""
)
);
$prim = array (
"serial_no" => "",
"primary" => "",
"primary_private" => "",
"primary_shared" => "",
"rsh_command" => "",
"backup_active" => "",
"backup" => "",
"backup_private" => "",
"backup_shared" => "",
"heartbeat" => "",
"heartbeat_port" => "",
"keepalive" => "",
"network" => "",
"nat_router" => "",
"nat_nmask" => "",
"service" => "",
"deadtime" => "",
"reservation_conflict_action" => "",
"debug_level" => ""
);
/* Global file descriptor for use as a pointer to the lvs.cf file */
$fd = 0;
$service = "lvs";
if (empty($debug)) { $debug = 0; } /* if unset, leave debugging off */
$buffer = "";
function parse($name, $datum) {
global $debug;
global $buffer;
global $fd;
global $prim;
global $virt;
global $fail;
global $serv;
global $service;
static $level = 0 ;
static $server_count = 0;
static $virt_count = 0;
static $fail_count = 0;
if ($debug) {
if (!empty($buffer)) {
echo "Level $level $buffer
";
};
};
if (strstr($buffer,"{")) {
$buffer = "$name $datum";
if ($debug) { echo "Striping the \"{\". Level changed up. Calling parse().
"; };
$level++;
/* the following /mess/ is because I want to generate 'structures' ie */
/* New VIRTUAL required virt[0] */
/* New vitual.server required virt[0]:[0] */
/* New vitual.server required virt[0]:[1] */
/* New VIRTUAL required virt[1] */
/* New vitual.server required virt[1]:[0] */
/* New vitual.server required virt[1]:[1] */
/* I'm sure my logic is flawed, however, this works */
/* Note to self: NEVER TOUCH THESE TWO LINES AGAIN (I REALLY MEAN THAT) */
if ($level == 1) { $server_count = -1; };
if ($level > 1) { $server_count++ ; };
parse($name, $datum);
return; /* <--- HIGHLY IMPORTANT! do **NOT** remove this VITAL command */
};
if (strstr($buffer,"}")) {
$name = "";
$datum = "";
$buffer = "$name $datum";
if ($debug) { echo "Striping the \"}\". Level changed down. Calling parse().
"; };
$level--;
parse($name, $datum);
return; /* <--- HIGHLY IMPORTANT! do **NOT** remove this VITAL command */
};
/* Level 0 */
if ($level == 0) {
switch ($name) {
case "serial_no" : $prim[serial_no] = $datum;
break;
case "primary" : $prim[primary] = $datum;
break;
case "primary_private" : $prim[primary_private] = $datum;
break;
case "primary_shared" : $prim[primary_shared] = $datum;
break;
case "rsh_command" : $prim[rsh_command] = $datum;
break;
case "service" : $prim[service] = $datum;
break;
case "backup_active" : $prim[backup_active] = $datum;
break;
case "backup" : $prim[backup] = $datum;
break;
case "backup_private" : $prim[backup_private] = $datum;
break;
case "backup_shared" : $prim[backup_shared] = $datum;
break;
case "heartbeat" : $prim[heartbeat] = $datum;
break;
case "heartbeat_port" : $prim[heartbeat_port] = $datum;
break;
case "keepalive" : $prim[keepalive] = $datum;
break;
case "deadtime" : $prim[deadtime] = $datum;
break;
case "network" : $prim[network] = $datum;
break;
case "nat_router" : $prim[nat_router] = $datum;
break;
case "nat_nmask" : $prim[nat_nmask] = $datum;
break;
case "reservation_conflict_action" : $prim[reservation_conflict_action] = $datum;
break;
case "debug_level" : $prim[debug_level] = $datum;
break;
case "virtual" : /* new virtual definitition */
$service="lvs"; echo $service;
break;
case "failover" : /* new failover definitition */
$service="fos"; echo $service;
break;
case "" : break;
default : if ($debug) { echo "Level $level - garbage [$name] (ignored line [$buffer])
"; }
break;
}
}
/* Level 1 */
if ($level == 1) {
switch ($name) {
case "failover" : $fail_count++;
$service="fos";
if ($debug) { echo "Asked for failover service \$fail[$fail_count]
"; };
$fail[$fail_count][failover] = $datum;
break;
case "start_cmd" : if ($service == "fos") $fail[$fail_count][start_cmd] = $datum;
break;
case "stop_cmd" : if ($service == "fos") $fail[$fail_count][stop_cmd] = $datum;
break;
case "address" : if ($service == "fos") {
$fail[$fail_count][address] = $datum;
} else {
$virt[$virt_count][address] = $datum;
}
break;
case "active" : if ($service == "fos") {
$fail[$fail_count][active] = $datum;
} else {
$virt[$virt_count][active] = $datum;
}
break;
case "port" : if ($service == "fos") {
$fail[$fail_count][port] = $datum;
} else {
$virt[$virt_count][port] = $datum;
}
break;
case "heartbeat" : if ($service == "fos") {
$fail[$fail_count][heartbeat] = $datum;
} /* else { $virt[$virt_count][heartbeat] = $datum; } */
break;
case "send" : if ($service == "fos") {
$fail[$fail_count][send] = $datum;
} else {
$virt[$virt_count][send] = $datum;
}
break;
case "expect" : if ($service == "fos") {
$fail[$fail_count][expect] = $datum;
} else {
$virt[$virt_count][expect] = $datum;
}
break;
case "use_regex" : if ($service == "lvs") {
$virt[$virt_count]['use_regex'] = $datum;
}
break;
case "send_program" : if ($service == "fos") {
$fail[$fail_count][send_program] = $datum;
} else {
$virt[$virt_count][send_program] = $datum;
}
break;
case "expect_program" : if ($service == "fos") {
$fail[$fail_count][expect_program] = $datum;
} else {
$virt[$virt_count][expect_program] = $datum;
}
break;
case "timeout" : if ($service == "fos") {
$fail[$fail_count][timeout] = $datum;
} else {
$virt[$virt_count][timeout] = $datum;
}
break;
case "vip_nmask" : if ($service == "fos") {
$fail[$fail_count][vip_nmask] = $datum;
} else {
$virt[$virt_count][vip_nmask] = $datum;
}
break;
case "virtual" : $virt_count++;
$service = "lvs";
if ($debug) { echo "Asked for virtual service \$virt[$virt_count]
"; };
if ($service == "lvs") $virt[$virt_count][virtual] = $datum;
break;
case "fwmark" : if ($service == "lvs") $virt[$virt_count][fwmark] = $datum;
break;
case "load_monitor" : if ($service == "lvs") $virt[$virt_count][load_monitor] = $datum;
break;
case "scheduler" : if ($service == "lvs") $virt[$virt_count][scheduler] = $datum;
break;
case "protocol" : if ($service == "lvs") $virt[$virt_count][protocol] = $datum;
break;
case "vip_nmask" : if ($service == "lvs") $virt[$virt_count][vip_nmask] = $datum;
break;
case "persistent" : if ($service == "lvs") $virt[$virt_count][persistent] = $datum;
break;
case "pmask" : if ($service == "lvs") $virt[$virt_count][pmask] = $datum;
break;
case "reentry" : if ($service == "lvs") $virt[$virt_count][reentry] = $datum;
break;
case "quiesce_server" : if ($service == "lvs") $virt[$virt_count][quiesce_server] = $datum;
break;
case "server" : /* ignored (compatibility) */
break;
case "" : break;
default : if ($debug) { echo "Level 1 - garbage [$name] (ignored line [$buffer])
"; }
break;
}
}
/* Level 2 */
if ($level == 2 ) {
switch ($name) {
case "server" : if ($debug) {
echo "Asked for vitual.server ("
. ($server_count+1) .
") - \$serv[$virt_count]:["
. ($server_count+1) .
"]
"; };
$serv[$virt_count][$server_count+1][server] = $datum;
break;
case "address" : $serv[$virt_count][$server_count+1][address] = $datum;
break;
case "nmask" : $serv[$virt_count][$server_count+1][nmask] = $datum;
break;
case "active" : $serv[$virt_count][$server_count+1][active] = $datum;
break;
case "weight" : $serv[$virt_count][$server_count+1][weight] = $datum;
break;
case "" : break;
default : if ($debug) { echo "Level2 - garbage [$name] (ignored line [$buffer])
"; }
break;
}
}
}
function next_line() {
global $fd;
global $buffer;
global $debug;
global $test;
while (!feof($fd)) {
$buffer = fgets($fd, 4096);
if ($debug) { echo "Buffer = [$buffer]
"; }
/* All data is comprised of a name, an optional seperator and a datum */
/* oh wow!.. trim()!!! I could hug somebody! */
$buffer = trim($buffer);
if (strlen ($buffer) > 4) { /* basically 'if not empty',.. however 'if (!empty($buffer)' didn't work */
/* explode! oh boy! */
$pieces = explode(" ", $buffer);
$name = $pieces[0];
if (strstr($buffer, "=")) {
$datum = $pieces[2];
} else {
$datum = $pieces[1];
}
}
}
}
function read_config() {
global $fd;
global $buffer;
while (!feof($fd)) {
$buffer = fgets($fd, 4096);
if ($debug) { echo "Buffer = [$buffer]
"; }
/* all data is comprised of a name, an optional seperator, and a datum */
/* oh wow!.. trim()!!! I could hug somebody! */
$buffer = trim($buffer);
if (strlen ($buffer) > 4) { /* basically if not empty,.. however if (!empty($buffer) didn't work */
/* explode! oh boy! */
$pieces = explode(" ", $buffer);
$name = $pieces[0];
if (strstr($buffer,"=")) {
$datum = $pieces[2];
} else {
$datum = $pieces[1];
}
if (!empty($pieces[3])) { $datum = $pieces[2] . " " . $pieces[3] ; }
if (!empty($pieces[4])) { /* must be a send or expect string */
$datum = strstr($buffer, "\"");
$test = $datum;
}
}
parse($name, $datum) ;
}
/* specials that need to be preset if unset */
if (empty($prim['rsh_command'])) {
$rsync_tool = $prim['rsh_command'] = "ssh";
}
if (empty($prim['debug_level'])) {
$debug_level = $prim['debug_level'] = "NONE";
}
return;
}
function backup_lvs() {
global $prim;
global $LVS;
global $SERVER_ADDR;
global $debug;
return; /* UNTIL SUCH TIME AS THE GUI/PULSE INTERACTION IS SORTTED OUT */
$command = "";
if ($debug) { echo "
WARNING: | ";
// echo "It was not possible to syncronize the /etc/sysconfig/ha/lvs.cf file on " . $prim['backup'] . " using the command $command ";
// echo "It may be that that system is down OR that the required access privilages for user nobody and/or piranha are incorrect. | ";
// echo "
WARNING: | ";
echo "You are attempting to edit the lvs.cf file from a server that is not the cluster master "; echo "Please use the primary server as any modifications made on the backup machine will be overwritten by the primary "; echo "Based on your current lvs.cf configuration clicking HERE will to attempt connection to the primary else please correct the 'Primary LVS server IP' from the global settings page | ";
echo "
Failover";
echo "
Failover [$loop1] [failover] = " . $fail[$loop1]['failover'];
echo "
Failover [$loop1] [active] = " . $fail[$loop1]['active'];
echo "
Failover [$loop1] [port] = " . $fail[$loop1]['port'];
echo "
Failover [$loop1] [timeout] = " . $fail[$loop1]['timeout'];
echo "
Failover [$loop1] [heartbeat] = " . $fail[$loop1]['heartbeat'];
echo "
Failover [$loop1] [send] = " . $fail[$loop1]['send'];
echo "
Failover [$loop1] [expect] = " . $fail[$loop1]['expect'];
echo "
Failover [$loop1] [send_program] = " . $fail[$loop1]['send_program'];
echo "
Failover [$loop1] [expect_program] = ". $fail[$loop1]['expect_program'];
echo "
Failover [$loop1] [start_cmd] = " . $fail[$loop1]['start_cmd'];
echo "
Failover [$loop1] [stop_cmd] = " . $fail[$loop1]['stop_cmd'];
}
$loop1 = $loop2 = 0;
while ($virt[++$loop1]['virtual'] != "" ) { /* NOTE: must use *pre*increment not post */
echo "
Virtual";
echo "
Virtual [$loop1] [virtual] = " . $virt[$loop1]['virtual'];
echo "
Virtual [$loop1] [active] = " . $virt[$loop1]['active'];
echo "
Virtual [$loop1] [port] = " . $virt[$loop1]['port'];
echo "
Virtual [$loop1] [address] = " . $virt[$loop1]['address'];
echo "
Virtual [$loop1] [vip_nmask] = " . $virt[$loop1]['vip_nmask'];
echo "
Virtual [$loop1] [fwmark] = " . $virt[$loop1]['fwmark'];
echo "
Virtual [$loop1] [load_monitor] = " . $virt[$loop1]['load_monitor'];
echo "
Virtual [$loop1] [scheduler] = " . $virt[$loop1]['scheduler'];
echo "
Virtual [$loop1] [method] = " . $virt[$loop1]['method'];
echo "
Virtual [$loop1] [protocol] = " . $virt[$loop1]['protocol'];
echo "
Virtual [$loop1] [persistent] = " . $virt[$loop1]['persistent'];
echo "
Virtual [$loop1] [pmask] = " . $virt[$loop1]['pmask'];
echo "
Virtual [$loop1] [send] = " . $virt[$loop1]['send'];
echo "
Virtual [$loop1] [expect] = " . $virt[$loop1]['expect'];
echo "
Virtual [$loop1] [use_regex] = " . $virt[$loop1]['use_regex'];
echo "
Virtual [$loop1] [send_program] = " . $virt[$loop1]['send_program'];
echo "
Virtual [$loop1] [expect_program] = " . $virt[$loop1]['expect_program'];
echo "
Virtual [$loop1] [timeout] = " . $virt[$loop1]['timeout'];
echo "
Virtual [$loop1] [retry] = " . $virt[$loop1]['retry'];
echo "
Virtual [$loop1] [quiesce_server] = " . $virt[$loop1]['quiesce_server'];
echo "
";
}
$loop1 = 1; /* reuse loop1 */
$loop2 = 1;
echo "
Server";
while ( $serv[$loop1][$loop2]['server'] != "" ) {
while ($serv[$loop1][$loop2]['server'] != "") {
echo "
Server [$loop1]:[$loop2]['server'] = " . $serv[$loop1][$loop2]['server'];
echo "
Server [$loop1]:[$loop2]['address'] = " . $serv[$loop1][$loop2]['address'];
echo "
Server [$loop1]:[$loop2]['nmask'] = " . $serv[$loop1][$loop2]['nmask'];
echo "
Server [$loop1]:[$loop2]['active'] = " . $serv[$loop1][$loop2]['active'];
echo "
Server [$loop1]:[$loop2]['weight'] = " . $serv[$loop1][$loop2]['weight'];
echo "
";
$loop2++;
}
$loop1++;
$loop2 = 1;
}
echo "
Primary
"; };
if ($prim['serial_no'] != "" ) {
// Basically try and not update the serial number unless the query string appears to have
// data in it, for this we use '&'. It's not absolutely bulletproof, however it does for
// our purposes
if (strstr(getenv(QUERY_STRING), '&' ) ) {
fputs ($fd, "serial_no = " . (1 + $prim['serial_no']) . "\n", 80);
if ($debug) { echo "serial_no = " . (1 + $prim['serial_no']) . "
"; };
} else {
fputs ($fd, "serial_no = " . $prim['serial_no'] . "\n", 80);
if ($debug) { echo "serial_no = " . $prim['serial_no'] . "
"; };
};
} else {
fputs ($fd, "serial_no = 1\n");
if ($debug) { echo "serial_no = 1
"; };
}
if ($prim['primary'] != "" ) {
fputs ($fd, "primary = " . $prim['primary'] . "\n", 80);
if ($debug) { echo "primary = " . $prim['primary'] . "
"; };
}
if ($prim['primary_private'] != "" ) {
fputs ($fd, "primary_private = " . $prim['primary_private'] . "\n", 80);
if ($debug) { echo "primary_private = " . $prim['primary_private'] . "
"; };
}
if ($prim['primary_shared'] != "" ) {
fputs ($fd, "primary_shared = " . $prim['primary_shared'] . "\n", 80);
if ($debug) { echo "primary_shared = " . $prim['primary_shared'] . "
"; };
}
if ($prim['service'] != "" ) {
fputs ($fd, "service = " . $prim['service'] . "\n", 80);
if ($debug) { echo "service = " . $prim['service'] . "
"; };
}
if ($prim['rsh_command'] != "" ) {
fputs ($fd, "rsh_command = " . $prim['rsh_command'] . "\n", 80);
if ($debug) { echo "rsh_command = " . $prim['rsh_command'] . "
"; };
}
if ($prim['backup_active'] != "" ) {
fputs ($fd, "backup_active = " . $prim['backup_active'] . "\n", 80);
if ($debug) { echo "backup_active = " . $prim['backup_active'] . "
"; };
}
if ($prim['backup'] != "" ) {
fputs ($fd, "backup = " . $prim['backup'] . "\n", 80);
if ($debug) { echo "backup = " . $prim['backup'] . "
"; };
}
if ($prim['backup_private'] != "" ) {
fputs ($fd, "backup_private = " . $prim['backup_private'] . "\n", 80);
if ($debug) { echo "backup_private = " . $prim['backup_private'] . "
"; };
}
if ($prim['backup_shared'] != "" ) {
fputs ($fd, "backup_shared = " . $prim['backup_shared'] . "\n", 80);
if ($debug) { echo "backup_shared = " . $prim['backup_shared'] . "
"; };
}
if ($prim['heartbeat'] != "" ) {
fputs ($fd, "heartbeat = " . $prim['heartbeat'] . "\n", 80);
if ($debug) { echo "heartbeat = " . $prim['heartbeat'] . "
"; };
}
if ($prim['heartbeat_port'] != "" ) {
fputs ($fd, "heartbeat_port = " . $prim['heartbeat_port'] . "\n", 80);
if ($debug) { echo "heartbeat_port = " . $prim['heartbeat_port'] . "
"; };
}
if ($prim['keepalive'] != "" ) {
fputs ($fd, "keepalive = " . $prim['keepalive'] . "\n", 80);
if ($debug) { echo "keepalive = " . $prim['keepalive'] . "
"; };
}
if ($prim['deadtime'] != "" ) {
fputs ($fd, "deadtime = " . $prim['deadtime'] . "\n", 80);
if ($debug) { echo "deadtime = " . $prim['deadtime'] . "
"; };
}
if ($prim['network'] != "" ) {
fputs ($fd, "network = " . $prim['network'] . "\n", 80);
if ($debug) { echo "network = " . $prim['network'] . "
"; };
}
if (($prim['nat_router'] != "" ) && ($prim['nat_router'] != " " )) {
fputs ($fd, "nat_router = " . $prim['nat_router'] . "\n", 80);
if ($debug) { echo "nat_router = " . $prim['nat_router'] . "
"; };
}
if (($prim['nat_nmask'] != "" ) && ($prim['nat_nmask'] != " " )) {
fputs ($fd, "nat_nmask = " . $prim['nat_nmask'] . "\n", 80);
if ($debug) { echo "nat_nmask = " . $prim['nat_nmask'] . "
"; };
}
if (($prim['reservation_conflict_action'] != "" ) && ($prim['reservation_conflict_action'] != " " )) {
fputs ($fd, "reservation_conflict_action = " . $prim['reservation_conflict_action'] . "\n", 80);
if ($debug) { echo "reservation_conflict_action = " . $prim['reservation_conflict_action'] . "
"; };
}
if ($prim['debug_level'] != "" ){
fputs ($fd, "debug_level = " . $prim['debug_level'] . "\n", 80);
if ($debug) { echo "debug_level = " . $prim['debug_level'] . "
"; };
}
while ( $fail[$loop1]['failover'] != "" ) {
if ((($loop1 == $delete_item ) && ($level == "1")) && ($prim['service'] == "fos")) { $loop1++; $loop2 = 1; } else {
if ($debug) { echo "
Failover
"; };
if ($fail[$loop1]['failover'] != "") {
fputs ($fd, "failover " . $fail[$loop1]['failover'] . " {\n", 80);
if ($debug) { echo "failover " . $fail[$loop1]['failover'] . " {
"; };
}
if ($fail[$loop1]['address'] != "") {
fputs ($fd, "$gap1 address = " . $fail[$loop1]['address'] . "\n", 80);
if ($debug) { echo "$egap1 address = " . $fail[$loop1]['address'] . "
"; };
}
if ($fail[$loop1]['vip_nmask'] != "") {
fputs ($fd, "$gap1 vip_nmask = " . $fail[$loop1]['vip_nmask'] . "\n", 80);
if ($debug) { echo "$egap1 vip_nmask = " . $fail[$loop1]['vip_nmask'] . "
"; };
}
if ($fail[$loop1]['active'] != "") {
fputs ($fd, "$gap1 active = " . $fail[$loop1]['active'] . "\n", 80);
if ($debug) { echo "$egap1 active = " . $fail[$loop1]['active'] . "
"; };
}
if ($fail[$loop1]['port'] != "") {
fputs ($fd, "$gap1 port = " . $fail[$loop1]['port'] . "\n", 80);
if ($debug) { echo "$egap1 port = " . $fail[$loop1]['port'] . "
"; };
}
if ($fail[$loop1]['timeout'] != "") {
fputs ($fd, "$gap1 timeout = " . $fail[$loop1]['timeout'] . "\n", 80);
if ($debug) { echo "$egap1 timeout = " . $fail[$loop1]['timeout'] . "
"; };
}
if ($fail[$loop1]['heartbeat'] != "") {
fputs ($fd, "$gap1 heartbeat = " . $fail[$loop1]['heartbeat'] . "\n", 80);
if ($debug) { echo "$egap1 heartbeat = " . $fail[$loop1]['heartbeat'] . "
"; };
}
if ($fail[$loop1]['send'] != "") {
fputs ($fd, "$gap1 send = " . $fail[$loop1]['send'] . "\n", 80);
if ($debug) { echo "$egap1 send = " . $fail[$loop1]['send'] . "
"; };
}
if ($fail[$loop1]['expect'] != "") {
fputs ($fd, "$gap1 expect = " . $fail[$loop1]['expect'] . "\n", 80);
if ($debug) { echo "$egap1 expect = " . $fail[$loop1]['expect'] . "
"; };
}
if ($fail[$loop1]['send_program'] != "") {
fputs ($fd, "$gap1 send_program = " . $fail[$loop1]['send_program'] . "\n", 80);
if ($debug) { echo "$egap1 send_program = " . $fail[$loop1]['send_program'] . "
"; };
}
if ($fail[$loop1]['expect_program'] != "") {
fputs ($fd, "$gap1 expect_program = " . $fail[$loop1]['expect_program']. "\n", 80);
if ($debug) { echo "$egap1 expect_program = " . $fail[$loop1]['expect_program']. "
"; };
}
if ($fail[$loop1]['start_cmd'] != "") {
fputs ($fd, "$gap1 start_cmd = " . $fail[$loop1]['start_cmd'] . "\n", 80);
if ($debug) { echo "$egap1 start_cmd = " . $fail[$loop1]['start_cmd'] . "
"; };
}
if ($fail[$loop1]['stop_cmd'] != "") {
fputs ($fd, "$gap1 stop_cmd = " . $fail[$loop1]['stop_cmd'] . "\n", 80);
if ($debug) { echo "$egap1 stop_cmd = " . $fail[$loop1]['stop_cmd'] . "
"; };
}
fputs ($fd,"}\n", 80);
$loop1++;
$loop2 = 1;
}
}
while ( $virt[$loop3]['virtual'] != "" ) {
if ((($loop3 == $delete_item ) && ($level == "1")) && ($prim['service'] != "fos")) { $loop3++; $loop4 = 1; } else {
if ($debug) { echo "
Virtual
"; };
if ($virt[$loop3]['virtual'] != "") {
fputs ($fd, "virtual " . $virt[$loop3]['virtual'] . " {\n", 80);
if ($debug) { echo "vitual " . $virt[$loop3]['virtual'] . " {
"; };
}
if ($virt[$loop3]['active'] != "") {
fputs ($fd, "$gap1 active = " . $virt[$loop3]['active'] . "\n", 80);
if ($debug) { echo "$egap1 active = " . $virt[$loop3]['active'] . "
"; };
}
if ($virt[$loop3]['address'] != "") {
fputs ($fd, "$gap1 address = " . $virt[$loop3]['address'] . "\n", 80);
if ($debug) { echo "$egap1 address " . $virt[$loop3]['address'] . "
"; };
}
if ($virt[$loop3]['vip_nmask'] != "") {
fputs ($fd, "$gap1 vip_nmask = " . $virt[$loop3]['vip_nmask'] . "\n", 80);
if ($debug) { echo "$egap1 vip_nmask " . $virt[$loop3]['vip_nmask'] . "
"; };
}
if ($virt[$loop3]['fwmark'] != "") {
fputs ($fd, "$gap1 fwmark = " . $virt[$loop3]['fwmark'] . "\n", 80);
if ($debug) { echo "$egap1 fwmark " . $virt[$loop3]['fwmark'] . "
"; };
}
if ($virt[$loop3]['port'] != "") {
fputs ($fd, "$gap1 port = " . $virt[$loop3]['port'] . "\n", 80);
if ($debug) { echo "$egap1 port = " . $virt[$loop3]['port'] . "
"; };
}
if ($virt[$loop3]['persistent'] != "") {
fputs ($fd, "$gap1 persistent = " . $virt[$loop3]['persistent'] . "\n", 80);
if ($debug) { echo "$egap1 persistent = " . $virt[$loop3]['persistent'] . "
"; };
}
if ($virt[$loop3]['pmask'] != "") {
fputs ($fd, "$gap1 pmask = " . $virt[$loop3]['pmask'] . "\n", 80);
if ($debug) { echo "$egap1 pmask = " . $virt[$loop3]['pmask'] . "
"; };
}
if ($virt[$loop3]['send'] != "") {
fputs ($fd, "$gap1 send = " . $virt[$loop3]['send'] . "\n", 300);
if ($debug) { echo "$egap1 send = " . $virt[$loop3]['send'] . "
"; };
}
if ($virt[$loop3]['expect'] != "") {
fputs ($fd, "$gap1 expect = " . $virt[$loop3]['expect'] . "\n", 300);
if ($debug) { echo "$egap1 expect = " . $virt[$loop3]['expect'] . "
"; };
}
if ($virt[$loop3]['use_regex'] != "") {
fputs ($fd, "$gap1 use_regex = " . $virt[$loop3]['use_regex'] . "\n", 300);
if ($debug) { echo "$egap1 use_regex = " . $virt[$loop3]['use_regex'] . "
"; };
}
if ($virt[$loop3]['send_program'] != "") {
fputs ($fd, "$gap1 send_program = " . $virt[$loop3]['send_program'] . "\n", 300);
if ($debug) { echo "$egap1 send_program = " . $virt[$loop3]['send_program'] . "
"; };
}
if ($virt[$loop3]['expect_program'] != "") {
fputs ($fd, "$gap1 expect_program = " . $virt[$loop3]['expect_program']. "\n", 300);
if ($debug) { echo "$egap1 expect_program = " . $virt[$loop3]['expect_program']. "
"; };
}
if ($virt[$loop3]['load_monitor'] != "") {
fputs ($fd, "$gap1 load_monitor = " . $virt[$loop3]['load_monitor'] . "\n", 80);
if ($debug) { echo "$egap1 load_monitor = " . $virt[$loop3]['load_monitor'] . "
"; };
}
if ($virt[$loop3]['scheduler'] != "") {
fputs ($fd, "$gap1 scheduler = " . $virt[$loop3]['scheduler'] . "\n", 80);
if ($debug) { echo "$egap1 scheduler = " . $virt[$loop3]['scheduler'] . "
"; };
}
if ($virt[$loop3]['deadtime'] != "") {
fputs ($fd, "$gap1 deadtime = " . $virt[$loop3]['deadtime'] . "\n", 80);
if ($debug) { echo "$egap1 deadtime = " . $virt[$loop3]['deadtime'] . "
"; };
}
if ($virt[$loop3]['protocol'] != "") {
fputs ($fd, "$gap1 protocol = " . $virt[$loop3]['protocol'] . "\n", 80);
if ($debug) { echo "$egap1 protocol = " . $virt[$loop3]['protocol'] . "
"; };
}
if ($virt[$loop3]['timeout'] != "") {
fputs ($fd, "$gap1 timeout = " . $virt[$loop3]['timeout'] . "\n", 80);
if ($debug) { echo "$egap1 timeout = " . $virt[$loop3]['timeout'] . "
"; };
}
if ($virt[$loop3]['reentry'] != "") {
fputs ($fd, "$gap1 reentry = " . $virt[$loop3]['reentry'] . "\n", 80);
if ($debug) { echo "$egap1 reentry = " . $virt[$loop3]['reentry'] . "
"; };
}
if ($virt[$loop3]['quiesce_server'] != "") {
fputs ($fd, "$gap1 quiesce_server = " . $virt[$loop3]['quiesce_server'] . "\n", 80);
if ($debug) { echo "$egap1 quiesce_server = " . $virt[$loop3]['quiesce_server'] . "
"; };
}
while ( $serv[$loop3][$loop4]['server'] != "" ) {
if (($loop4 == $delete_item) && ($loop3 == $delete_virt) && ($level == "2")) {
$loop4++;
} else {
if ($debug) { echo "
Server
"; };
if ($serv[$loop3][$loop4]['server'] != "" ) {
fputs ($fd, "$gap1 server " . $serv[$loop3][$loop4]['server'] . " {\n", 80);
if ($debug) { echo "$egap1 server " . $serv[$loop3][$loop4]['server'] . " {
"; };
}
if ($serv[$loop3][$loop4]['address'] != "" ) {
fputs ($fd, "$gap2 address = " . $serv[$loop3][$loop4]['address'] . "\n", 80);
if ($debug) { echo "$egap2 address = " . $serv[$loop3][$loop4]['address'] . "
"; };
}
if ($serv[$loop3][$loop4]['nmask'] != "" ) {
fputs ($fd, "$gap2 nmask = " . $serv[$loop3][$loop4]['nmask'] . "\n", 80);
if ($debug) { echo "$egap2 nmask = " . $serv[$loop3][$loop4]['nmask'] . "
"; };
}
if ($serv[$loop3][$loop4]['active'] != "" ) {
fputs ($fd, "$gap2 active = " . $serv[$loop3][$loop4]['active'] . "\n", 80);
if ($debug) { echo "$egap2 active = " . $serv[$loop3][$loop4]['active'] . "
"; };
}
if ($serv[$loop3][$loop4]['weight'] != "" ) {
fputs ($fd, "$gap2 weight = " . $serv[$loop3][$loop4]['weight'] . "\n", 80);
if ($debug) { echo "$egap2 weight = " . $serv[$loop3][$loop4]['weight'] . "
"; };
}
$loop4++;
fputs ($fd,"$gap1 }\n", 80);
if ($debug) { echo "$egap1 }
"; }
}
}
fputs ($fd,"}\n", 80);
$loop3++;
$loop4 = 1;
}
}
fclose($fd);
backup_lvs();
if ($debug) { echo "