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 )