pantheon
view release on metacpan or search on metacpan
lib/Poros/Query.pm view on Meta::CPAN
my $query = $self->{query};
my ( $code, $user ) = @$query{ qw( code user ) };
die "already running $code\n" if ( $code =~ /\.mx$/ ) && !
Vulcan::ProcLock->new( File::Spec->join( $path{run}, $code ) )->lock();
die "invalid code\n" unless
-f ( $code = File::Spec->join( $path{code}, $code ) )
&& ( $code = do $code ) && ref $code eq 'CODE';
if ( ! $< && $user && $user ne ( getpwuid $< )[0] )
{
die "invalid user $user\n" unless my @pw = getpwnam $user;
@pw = map { 0 + sprintf '%d', $_ } @pw[2,3];
POSIX::setgid( $pw[1] ); ## setgid must preceed setuid
POSIX::setuid( $pw[0] );
}
&$code( pdir => File::Basename::dirname( $RealBin ), %$query );
}
lib/Vulcan/Sudo.pm view on Meta::CPAN
=head1 Methods
=head3 sudo( $user )
Become $user ( default root ).
=cut
sub sudo
{
my ( $class, $user ) = splice @_;
my $me = ( getpwuid $< )[0];
return $user if $me eq ( $user ||= 'root' );
confess "invalid user $user\n" unless my @pw = getpwnam $user;
@pw = map { 0 + sprintf '%d', $_ } @pw[2,3];
POSIX::setgid( $pw[1] );
return $user if POSIX::setuid( $pw[0] );
warn "$me: need '$user' privilege, invoking sudo.\n";
confess "exec $0: $!" unless exec 'sudo', '-u', $user, $0, @ARGV;
}
pantheon/tools/seco/getbuildtype view on Meta::CPAN
use SECO::Conf::Auto;
use SECO::Engine;
our %FILE = %SECO::Index::FILE;
our %TYPE = %SECO::Index::TYPE;
confess "invalid config file!" unless $seco{index};
my $engine = SECO::Engine->new();
my $user = $engine->{user};
exit 1 unless $user eq ( getpwuid $< )[0];
my $hdfs = $engine->{env}{PECTL}{hdfs} || $seco{index}{hdfs};
my $repo = $seco{index}{repo};
$repo =~ s/\$RUNUSER/$user/;
my $version = $engine->{env}{PECTL}{version} || $engine->{env}{VERSION}{version};
my $host = Sys::Hostname::hostname();
my $conf = SECO::Conf::Auto->new( $seco{conf} );
my $info = $conf->search( $host );
pantheon/tools/seco/search view on Meta::CPAN
=cut
my ( $option, %seco );
BEGIN { $option = Vulcan::OptConf->load(); %seco = $option->dump( 'seco' ) }
use lib $seco{lib};
use SECO::Conf::Auto;
use SECO::Engine::Search;
die "no ytt!\n" unless -e File::Spec->join( ( getpwuid $< )[7], 'ytt' );
my %o = $option->get( qw( stop start restart load=s lock=s cache=s ) )->dump;
my $conf = SECO::Conf::Auto->new( $seco{conf} );
my $host = Sys::Hostname::hostname;
my $info = $conf->search( $host );
die "no seco config!" unless my ( $tier ) = @{ $info->{$host} };
my $seco = SECO::Engine::Search->new();
my %mode = ( mode => 'qrw' ) if $tier =~ /pw$/;
pantheon/tools/seco/searcherrun view on Meta::CPAN
}
use lib $seco{lib};
use SECO::Index;
use SECO::Index::Incr;
use SECO::Conf::Auto;
use SECO::Engine;
use SECO::Engine::Search;
die "you has let the user run engine? are sure?\n"
unless -e File::Spec->join( ( getpwuid $< )[7], 'ytt' );
my $host = Sys::Hostname::hostname();
my $conf = SECO::Conf::Auto->new( $seco{conf} );
my $info = $conf->search( $host );
my ( $tier, $dc, $replica ) = @{ $info->{$host} };
confess "invalid config file!" unless $seco{index};
my $engine = SECO::Engine::Search->new();
my $user = $engine->{user};
exit 1 unless $user eq ( getpwuid $< )[0];
my $home = $engine->{path}{home};
my $lock = Vulcan::ProcLock->new( "$home/.runlock" );
exit 1 unless $lock->lock();
my %flags;
map { $flags{$_} = $engine->path( run => ( $seco{index}{$_} || "ops_build.$_" ) ) }
qw( status inc full pack fastpack lock );
do { warn "locking"; sleep 10; exit 0 } if -f $flags{lock};
( run in 0.407 second using v1.01-cache-2.11-cpan-454fe037f31 )