⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote.pm

📁 source of perl for linux application,
💻 PM
字号:
package CPANPLUS::Shell::Default::Plugins::Remote;use strict;use Module::Load;use Params::Check               qw[check];use CPANPLUS::Error             qw[error msg];use Locale::Maketext::Simple    Class => 'CPANPLUS', Style => 'gettext';=head1 NAMECPANPLUS::Shell::Default::Plugins::Remote=head1 SYNOPSIS    CPAN Terminal> /connect localhost 1337 --user=foo --pass=bar    ...    CPAN Terminal@localhost> /disconnect=head1 DESCRIPTIONThis is a C<CPANPLUS::Shell::Default> plugin that allows you to connectto a machine running an instance of C<CPANPLUS::Daemon>, allowing remoteusage of the C<CPANPLUS Shell>.A sample session, updating all modules on a remote machine, might looklike this:    CPAN Terminal> /connect --user=my_user --pass=secret localhost 1337    Connection accepted        Successfully connected to 'localhost' on port '11337'        Note that no output will appear until a command has completed    -- this may take a while    CPAN Terminal@localhost> o; i *        [....]        CPAN Terminal@localhost> /disconnect    CPAN Terminal>=cut### store the original prompt here, so we can restore it on disconnectmy $Saved_Prompt;sub plugins { ( connect => 'connect', disconnect => 'disconnect' ) }sub connect {    my $class   = shift;    my $shell   = shift;    my $cb      = shift;    my $cmd     = shift;    my $input   = shift || '';    my $opts    = shift || {};    my $conf = $cb->configure_object;    my $user; my $pass;    {   local $Params::Check::ALLOW_UNKNOWN = 1;        my $tmpl = {            user => { default   => 'cpanpd',    store => \$user },            pass => { required  => 1,           store => \$pass },        };         check( $tmpl, $opts ) or return;    }    my @parts = split /\s+/, $input;    my $host = shift @parts || 'localhost';    my $port = shift @parts || '1337';    load IO::Socket;    my $remote = IO::Socket::INET->new(                        Proto       => "tcp",                        PeerAddr    => $host,                        PeerPort    => $port,                    ) or (                        error( loc( "Cannot connect to port '%1' ".                                    "on host '%2'", $port, $host ) ),                        return                    );    my $con = {        connection  => $remote,        username    => $user,        password    => $pass,    };    ### store the connection    $shell->remote( $con );    my($status,$buffer) = $shell->__send_remote_command(                            "VERSION=$CPANPLUS::Shell::Default::VERSION");    if( $status ) {        print "\n$buffer\n\n";        print loc(  "Successfully connected to '%1' on port '%2'",                    $host, $port );        print "\n\n";        print loc(  "Note that no output will appear until a command ".                    "has completed\n-- this may take a while" );        print "\n\n";        ### save the original prompt        $Saved_Prompt = $shell->prompt;        $shell->prompt( $shell->brand .'@'. $host .':'. $port .'> ' );    } else {        print "\n$buffer\n\n";        print loc(  "Failed to connect to '%1' on port '%2'",                    $host, $port );        print "\n\n";        $shell->remote( undef );    }}sub disconnect {    my $class   = shift;    my $shell   = shift;    print "\n", ( $shell->remote                    ? loc( "Disconnecting from remote host" )                    : loc( "Not connected to remote host" )            ), "\n\n";    $shell->remote( undef );    $shell->prompt( $Saved_Prompt );}sub connect_help {    return loc(             "    /connect [HOST PORT]   # Connect to the remote machine,\n" .            "                           # defaults taken from your config\n" .            "        --user=USER        # Optional username\n" .            "        --pass=PASS        # Optional password" );}sub disconnect_help {    return loc(            "    /disconnect            # Disconnect from the remote server" );}1;         =pod=head1 BUG REPORTSPlease report bugs or other issues to E<lt>bug-cpanplus@rt.cpan.org<gt>.=head1 AUTHORThis module by Jos Boumans E<lt>kane@cpan.orgE<gt>.=head1 COPYRIGHTThe CPAN++ interface (of which this module is a part of) is copyright (c) 2001 - 2007, Jos Boumans E<lt>kane@cpan.orgE<gt>. All rights reserved.This library is free software; you may redistribute and/or modify it under the same terms as Perl itself.=head1 SEE ALSOL<CPANPLUS::Shell::Default>, L<CPANPLUS::Shell>, L<cpanp>=cut# Local variables:# c-indentation-style: bsd# c-basic-offset: 4# indent-tabs-mode: nil# End:# vim: expandtab shiftwidth=4:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -