[ Avaa Bypassed ]




Upload:

Command:

www-data@3.134.86.4: ~ $
# heartbeat-lib.pl
# Common functions for heartbeat tool configuration

BEGIN { push(@INC, ".."); };
use WebminCore;
&init_config();

$ha_cf = $config{'ha_cf'} ? $config{'ha_cf'} : "$config{'ha_dir'}/ha.cf";
$haresources = $config{'haresources'} ? $config{'haresources'}
				      : "$config{'ha_dir'}/haresources";
$authkeys = $config{'authkeys'} ? $config{'authkeys'}
				: "$config{'ha_dir'}/authkeys";
$resource_d = $config{'resource_d'} ? $config{'resource_d'}
				    : "$config{'ha_dir'}/resource.d";

open(VERSION, "<$module_config_directory/version");
chop($heartbeat_version = <VERSION>);
close(VERSION);

sub get_ha_config
{
local @rv;
local $lnum = 0;
open(CONF, "<".$ha_cf);
while(<CONF>) {
	s/\s+$//;
	s/#.*$//;
	if (/^(\S+)\s+(\S.*)$/) {
		push(@rv, { 'name' => $1,
			    'value' => $2,
			    'line' => $lnum });
		}
	$lnum++;
	}
close(CONF);
return @rv;
}

# find(name, &config)
sub find
{
local @rv;
foreach $c (@{$_[1]}) {
	if ($c->{'name'} eq $_[0]) {
		push(@rv, $c->{'value'});
		}
	}
return wantarray ? @rv : @rv==0 ? undef : $rv[0];
}

# find_struct(name, &config)
sub find_struct
{
local @rv;
foreach $c (@{$_[1]}) {
	if ($c->{'name'} eq $_[0]) {
		push(@rv, $c);
		}
	}
return wantarray ? @rv : @rv==0 ? undef : $rv[0];
}

# save_directive(&config, name, &values)
sub save_directive
{
local $lref = &read_file_lines($ha_cf);
local @old = &find_struct($_[1], $_[0]);
for($i=0; $i<@old || $i<@{$_[2]}; $i++) {
	if ($i >= @old) {
		# adding a directive
		push(@$lref, "$_[1]\t$_[2]->[$i]");
		push(@{$_[0]}, { 'name' => $_[1],
				 'value' => $_[2]->[$i],
				 'line' => scalar(@$lref)-1 });
		}
	elsif ($i >= @{$_[2]}) {
		# removing a directive
		splice(@$lref, $old[$i]->{'line'}, 1);
		splice(@{$_[0]}, &indexof($old[$i], @{$_[0]}), 1);
		&renumber($_[0], $old[$i]->{'line'}, -1);
		}
	else {
		# updating a directive
		splice(@$lref, $old[$i]->{'line'}, 1, "$_[1]\t$_[2]->[$i]");
		$old[$i]->{'value'} = $_[2]->[$i];
		}
	}
}

# renumber(&config, line, offset)
sub renumber
{
foreach $c (@{$_[0]}) {
	if ($c->{'line'} > $_[1]) {
		$c->{'line'} += $_[2];
		}
	}
}

sub list_resources()
{
local @rv;
local $lnum = 0;
open(RES, "<".$haresources);
while(<RES>) {
	s/\s+$//;
	s/#.*$//;
	local @res = split(/\s+/, $_);
	if (@res > 0) {
		local $r = { 'node' => shift(@res),
			     'line' => $lnum };
		foreach $v (@res) {
			if ($v =~ /^[0-9\.\/]+$/) {
				push(@{$r->{'ips'}}, $v);
				}
			elsif ($v =~ /^IPaddr::(\S+)$/) {
				push(@{$r->{'ips'}}, $1);
				}
			else {
				push(@{$r->{'servs'}}, $v);
				}
			}
		push(@rv, $r);
		}
	$lnum++;
	}
close(RES);
return @rv;
}

sub create_resource
{
local $lref = &read_file_lines($haresources);
push(@$lref, &resource_line($_[0]));
&flush_file_lines();
}

sub modify_resource
{
local $lref = &read_file_lines($haresources);
$lref->[$_[0]->{'line'}] = &resource_line($_[0]);
&flush_file_lines();
}

sub delete_resource
{
local $lref = &read_file_lines($haresources);
splice(@$lref, $_[0]->{'line'}, 1);
&flush_file_lines();
}

sub resource_line
{
local @l = ( $_[0]->{'node'} );
push(@l, @{$_[0]->{'ips'}});
push(@l, @{$_[0]->{'servs'}});
return join(" ", @l);
}

sub get_auth_config
{
local $rv;
open(AUTH, "<".$authkeys);
while(<AUTH>) {
	s/\r|\n//g;
	s/#.*$//;
	local @l = split(/\s+/, $_);
	if (@l > 0) {
		$rv->{shift(@l)} = \@l;
		}
	}
close(AUTH);
return $rv;
}

sub save_auth_config
{
local %auth;
&open_tempfile(AUTH, ">$authkeys");
if ($_[0]->{'auth'}) {
	&print_tempfile(AUTH, "auth ",join(" ", @{$_[0]->{'auth'}}),"\n");
	map { $auth{$_}++ } @{$_[0]->{'auth'}};
	}
foreach $k (keys %{$_[0]}) {
	if ($k ne 'auth') {
		&print_tempfile(AUTH, "# ") if (!$auth{$k});
		&print_tempfile(AUTH, "$k ",join(" ", @{$_[0]->{$k}}),"\n");
		}
	}
&close_tempfile(AUTH);
}

# add two more functions (Christof Amelunxen, 22.08.2003)
sub check_status_resource {
	@ips = @_;
	$ifconfig="/sbin/ifconfig";
	@lines=qx|$ifconfig| or die("ifconfig does not seem to work: ".$!);
	foreach(@lines){
        if(/inet addr:([\d.]+)/){ 
		push(@realips,$1);
	}
	}
	$iplist = join (' ',@realips);
	foreach my $ip (@ips) {
		$ip =~ s/\/.*//;
		return 0 unless ( $iplist =~ m/$ip/);
	}		
	return 1;
}

sub get_resource {
	foreach(@_) {
		system("$config{req_resource_cmd} $_");
	}
}	

# version_atleast(v1, v2, v3)
sub version_atleast
{
local @vsp = split(/\./, $heartbeat_version);
local $i;
for($i=0; $i<@vsp || $i<@_; $i++) {
	return 0 if ($vsp[$i] < $_[$i]);
	return 1 if ($vsp[$i] > $_[$i]);
	}
return 1;	# same!
}

# apply_configuration()
# Apply the heartbeat configuration, and return undef on success or an error
# message on failure
sub apply_configuration
{
if ($config{'apply_cmd'}) {
	$out = &backquote_logged("$config{'apply_cmd'} 2>&1 </dev/null");
	if ($?) {
		return $out;
		}
	}
else {
	local $pid = &check_pid_file($config{'pid_file'});
	if ($pid) {
		kill(HUP, $pid);
		}
	else {
		return $text{'apply_epid'};
		}
	}
return undef;
}

1;


Filemanager

Name Type Size Permission Actions
images Folder 0755
lang Folder 0755
apply.cgi File 219 B 0755
backup_config.pl File 630 B 0755
config File 479 B 0644
config-freebsd File 415 B 0644
config-generic-linux File 322 B 0644
config-slackware-linux File 322 B 0644
config-solaris File 235 B 0644
config-syno-linux File 219 B 0644
config.info File 726 B 0644
config.info.bg File 1.28 KB 0644
config.info.ca File 846 B 0644
config.info.cs File 676 B 0644
config.info.de File 862 B 0644
config.info.es File 524 B 0644
config.info.hu File 483 B 0644
config.info.nl File 798 B 0644
config.info.no File 760 B 0644
edit_auth.cgi File 944 B 0755
edit_conf.cgi File 6.68 KB 0755
edit_node.cgi File 2.96 KB 0755
edit_res.cgi File 2.26 KB 0755
feedback_files.pl File 110 B 0755
heartbeat-lib.pl File 4.79 KB 0755
index.cgi File 3.3 KB 0755
install_check.pl File 564 B 0755
module.info File 200 B 0644
module.info.af File 0 B 0644
module.info.af.auto File 126 B 0644
module.info.ar File 0 B 0644
module.info.ar.auto File 178 B 0644
module.info.be File 0 B 0644
module.info.be.auto File 216 B 0644
module.info.bg File 0 B 0644
module.info.bg.auto File 248 B 0644
module.info.ca File 135 B 0644
module.info.ca.auto File 22 B 0644
module.info.cs File 26 B 0644
module.info.cs.auto File 138 B 0644
module.info.da File 0 B 0644
module.info.da.auto File 124 B 0644
module.info.de File 129 B 0644
module.info.de.auto File 19 B 0644
module.info.el File 0 B 0644
module.info.el.auto File 260 B 0644
module.info.es File 26 B 0644
module.info.es.auto File 143 B 0644
module.info.eu File 0 B 0644
module.info.eu.auto File 146 B 0644
module.info.fa File 0 B 0644
module.info.fa.auto File 181 B 0644
module.info.fi File 0 B 0644
module.info.fi.auto File 140 B 0644
module.info.fr File 0 B 0644
module.info.fr.auto File 168 B 0644
module.info.he File 0 B 0644
module.info.he.auto File 180 B 0644
module.info.hr File 0 B 0644
module.info.hr.auto File 147 B 0644
module.info.hu File 0 B 0644
module.info.hu.auto File 159 B 0644
module.info.it File 0 B 0644
module.info.it.auto File 151 B 0644
module.info.ja File 0 B 0644
module.info.ja.auto File 190 B 0644
module.info.ko File 0 B 0644
module.info.ko.auto File 169 B 0644
module.info.lt File 0 B 0644
module.info.lt.auto File 161 B 0644
module.info.lv File 0 B 0644
module.info.lv.auto File 141 B 0644
module.info.ms File 121 B 0644
module.info.ms.auto File 18 B 0644
module.info.mt File 0 B 0644
module.info.mt.auto File 155 B 0644
module.info.nl File 25 B 0644
module.info.nl.auto File 112 B 0644
module.info.no File 29 B 0644
module.info.no.auto File 103 B 0644
module.info.pl File 0 B 0644
module.info.pl.auto File 147 B 0644
module.info.pt File 0 B 0644
module.info.pt.auto File 166 B 0644
module.info.pt_BR File 0 B 0644
module.info.pt_BR.auto File 175 B 0644
module.info.ro File 0 B 0644
module.info.ro.auto File 152 B 0644
module.info.ru File 0 B 0644
module.info.ru.auto File 237 B 0644
module.info.sk File 0 B 0644
module.info.sk.auto File 141 B 0644
module.info.sl File 0 B 0644
module.info.sl.auto File 142 B 0644
module.info.sv File 0 B 0644
module.info.sv.auto File 134 B 0644
module.info.th File 0 B 0644
module.info.th.auto File 291 B 0644
module.info.tr File 0 B 0644
module.info.tr.auto File 159 B 0644
module.info.uk File 0 B 0644
module.info.uk.auto File 220 B 0644
module.info.ur File 0 B 0644
module.info.ur.auto File 205 B 0644
module.info.vi File 0 B 0644
module.info.vi.auto File 170 B 0644
module.info.zh File 0 B 0644
module.info.zh.auto File 118 B 0644
module.info.zh_TW File 0 B 0644
module.info.zh_TW.auto File 127 B 0644
save_auth.cgi File 469 B 0755
save_conf.cgi File 3.56 KB 0755
save_node.cgi File 1.27 KB 0755
start.cgi File 246 B 0755