Razor2-Client-Agent
view release on metacpan or search on metacpan
lib/Razor2/Client/Config.pm view on Meta::CPAN
if ( -r $mycf ) {
$self->{razorconf} = $mycf;
}
elsif ( -e $mycf ) {
$self->log( 5, "Found but can't read $mycf, skipping." );
}
else {
$self->log( 5, "No $mycf found, skipping." );
}
}
if ( !$self->{razorconf} && -e $default_conf_fn ) {
if ( -r $default_conf_fn ) {
$self->{razorconf} = $default_conf_fn;
}
else {
$self->log( 5, "Found but can't read $default_conf_fn, skipping." );
$self->{computed_razorconf} ||= $default_conf_fn;
}
}
}
sub write_conf {
my ( $self, $hash ) = @_;
unless ( $self->{razorconf} ) {
$self->log( 5, "Cannot write_conf without razorconf set" );
return $self->error("Cannot write_conf without razorconf set");
}
my $now = localtime();
my $srcmsg;
unless ($hash) {
$hash = $self->default_agent_conf();
if ( -r $self->{razorconf} ) {
$hash = $self->read_file( $self->{razorconf}, $hash );
$srcmsg = "Non-default values taken from $self->{razorconf}";
}
else {
$srcmsg = "Created with all default values";
}
}
my $clientheader = <<EOFCLIENT;
#
# Razor2 config file
#
# Autogenerated by $self->{name_version}
# $now
# $srcmsg
#
# see razor-agent.conf(5) man page
#
EOFCLIENT
return $self->write_file( $self->{razorconf}, $hash, 0, $clientheader );
}
sub find_user {
my $self = shift;
return 1 if $self->{user};
$self->{user} = getpwuid($>) || do {
$self->log( 1, "Can't figure out who the effective user is: $!" );
return undef;
};
return 1;
}
# compute razorhome. like so:
#
# -home=/tmp/razor/ used if readable, else
# 'razorhome' from config file used if readable, else
# <home>/.razor/ used if readable, else
# <home>/.razor/ is created. if that fails, no razorhome.
# -conf=/foo/razor/razor.conf if all else fails pick it up from the config file path,
# if one is available
sub find_home {
my ( $self, $rhome ) = @_;
my $dotrazor = '.razor';
$dotrazor = '_razor' if $^O eq 'VMS';
if ( defined $self->{razorhome} ) {
$self->{razorhome_computed} = $self->{razorhome};
return 1;
}
if ( defined $self->{opt}->{razorhome} ) {
$self->{razorhome_computed} = $self->{opt}->{razorhome};
return 1;
}
# if razorhome is read from config file, its passed as rhome
unless ($rhome) {
if ( defined $ENV{HOME} ) {
$rhome = File::Spec->catdir( "$ENV{HOME}", "$dotrazor" );
}
else {
return unless $self->find_user();
$rhome = File::Spec->catdir( ( getpwnam( $self->{user} ) )[7], "$dotrazor" ) || "/home/$self->{user}/$dotrazor";
}
$rhome = VMS::Filespec::unixify($rhome) if $^O eq 'VMS';
$self->log( 8, "Computed razorhome from env: $rhome" );
}
$self->{razorhome_computed} = $rhome;
if ( -d $rhome ) {
if ( -w $rhome ) {
$self->log( 6, "Found razorhome: $rhome" );
}
else {
$self->log( 6, "Found razorhome: $rhome, however, can't write to it." );
}
$self->{razorhome} = $rhome;
return 1;
}
if ( $self->{razorconf} ) {
my $path = $$self{razorconf};
( run in 1.936 second using v1.01-cache-2.11-cpan-39bf76dae61 )