App-ClusterSSH
view release on metacpan or search on metacpan
lib/App/ClusterSSH.pm view on Meta::CPAN
if ( $self->config->{external_cluster_command} ) {
$self->debug( 4, 'External cluster command defined' );
# use a second array here in case of failure so previously worked
# out entries are not lost
my @new_servers;
eval {
@new_servers = $self->cluster->get_external_clusters(@servers);
};
if ($@) {
warn $@, $/;
}
else {
@servers = @new_servers;
}
}
# now clean the array up
@servers = grep { $_ !~ m/^$/ } @servers;
if ( $self->config->{unique_servers} ) {
$self->debug( 3, 'removing duplicate server names' );
@servers = remove_repeated_servers(@servers);
}
$self->debug( 3, 'leaving with ', $_ ) foreach (@servers);
$self->debug( 2, 'Resolving cluster names: completed' );
return (@servers);
}
sub remove_repeated_servers {
my %all = ();
@all{@_} = 1;
return ( keys %all );
}
sub change_main_window_title() {
my ($self) = @_;
my $number = keys(%servers);
$windows{main_window}->title( $self->config->{title} . " [$number]" );
}
sub show_history() {
my ($self) = @_;
if ( $self->config->{show_history} ) {
$windows{history}->packForget();
$windows{history}->selectAll();
$windows{history}->deleteSelected();
$self->config->{show_history} = 0;
}
else {
$windows{history}->pack(
-fill => "x",
-expand => 1,
);
$self->config->{show_history} = 1;
}
}
sub update_display_text($) {
my ( $self, $char ) = @_;
return if ( !$self->config->{show_history} );
$self->debug( 2, "Dropping :$char: into display" );
SWITCH: {
foreach ($char) {
/^Return$/ && do {
$windows{history}->insert( 'end', "\n" );
last SWITCH;
};
/^BackSpace$/ && do {
$windows{history}->delete('end - 2 chars');
last SWITCH;
};
/^(:?Shift|Control|Alt)_(:?R|L)$/ && do {
last SWITCH;
};
length($char) > 1 && do {
$windows{history}
->insert( 'end', chr( $keysymtocode{$char} ) )
if ( $keysymtocode{$char} );
last SWITCH;
};
do {
$windows{history}->insert( 'end', $char );
last SWITCH;
};
}
}
return $self;
}
sub substitute_macros {
my ( $self, $svr, $text ) = @_;
return $text unless ( $self->config->{macros_enabled} eq 'yes' );
{
my $macro_servername = $self->config->{macro_servername};
( my $servername = $svr ) =~ s/\s+//;
$text =~ s!$macro_servername!$servername!xsmg;
}
{
my $macro_hostname = $self->config->{macro_hostname};
my $hostname = $servers{$svr}{givenname};
$text =~ s!$macro_hostname!$hostname!xsmg;
}
{
my $macro_username = $self->config->{macro_username};
my $username = $servers{$svr}{username};
$username ||= getpwuid($UID);
$text =~ s!$macro_username!$username!xsmg;
}
{
( run in 0.843 second using v1.01-cache-2.11-cpan-9581c071862 )