Net-SC version 1.20
===================
INSTALLATION
To install this module type the following:
perl Makefile.PL
make
make test
make install
COPYRIGHT AND LICENCE
Copyright (C) by Okunev Igor
[email protected] 2002-2006
All rights reserved. This program is free software;
you can redistribute it and/or modify it under the
same terms as Perl itself.
===================
NAME
Net::SC - perl module for create the chain from the SOCKS/HTTP proxies.
SYNOPSIS
# CONNECT TO HOST
# ----------------
...
$self = new Net::SC(
Timeout => ( $opt{'to'} || 10 ),
Chain_Len => ( $opt{'l'} || 2 ),
Debug => ( $opt{'d'} || 0x04 ),
Log_File => ( $opt{'lf'} || undef ),
Random_Chain => ( $opt{'rnd'} || 0 ),
Auto_Save => 1
);
die unless ref $self;
unless ( ( $rc = $self->connect( $host, $port ) ) == SOCKS_OKAY ) {
print STDERR "Can't connect to $host:$port [".( socks_error($rc) )."]\n";
exit;
}
$sh = $self->sh;
print $sh, "Hello !!!\n";
...
--- or ---
...
$self = new Net::SC(
Timeout => ( $opt{'to'} || 10 ),
Chain_Len => ( $opt{'l'} || 2 ),
Debug => ( $opt{'d'} || 0x04 ),
Random_Chain => ( $opt{'rnd'} || 0 ),
Auto_Save => 0,
Chain_File_Data => [
'200.41.23.164:1080:::4:383 b/s Argentina',
'24.232.88.160:1080:::4:1155 b/s Argentina',
'24.2.8.160:3128:::0:HTTP proxy',
],
);
die unless ref $self;
unless ( ( $rc = $self->connect( $host, $port ) ) == SOCKS_OKAY ) {
print STDERR "Can't connect to $host:$port [".( socks_error($rc) )."]\n";
exit;
}
$sh = $self->sh;
print $sh, "Hello !!!\n";
...
$self->close;
...
# BIND THE PORT ( only SOCKS [4/5] proxies )
# ---------------
...
$self = new Net::SC(
Timeout => ( $opt{'to'} || 10 ),
Chain_len => ( $opt{'l'} || 2 ),
Debug => ( $opt{'d'} || 0x04 ),
Log_file => ( $opt{'lf'} || undef ),
Random_chain => ( $opt{'rnd'} || 0 ),
Auto_save => 1
);
die unless ref $self;
unless ( ( $rc = $self->bind( $host, $port ) ) == SOCKS_OKAY ) {
print STDERR "Can't bind port [".( socks_error($rc) )."]\n";
exit;
}
print STDOUT "Binding the port : ",
$self->socks_param('listen_port'), "\n";
print STDOUT " in the host : ",
$self->socks_param('listen_addr'), "\n";
print STDOUT " for $host\n";
$self->configure( TIMEOUT => 45 );
unless ( ( $rc = $self->accept() ) == SOCKS_OKAY ) {
return $rc;
} else {
$sh = $self->sh;
}
print STDOUT 'Connect from: ',
$self->socks_param('listen_addr'), ':',
$self->socks_param('listen_port'), "\n";
print $sh 'Hello : ', $self->socks_param('listen_addr'), "\n";
print $sh ' port : ', $self->socks_param('listen_port'), "\n";
print STDOUT <$sh>;
...
For more information see examples: telnet_over_socks_chain.pl and
accept_over_socks_chain.pl
DESCRIPTION
CONSTRUCTOR
new
TIMEOUT - Time Out in seconds.
CHAIN_LEN - Length of chain.
DEBUG - Debug level ( 0x00 | 0x01 | 0x02 | 0x04 )
0x00 - Off
0x01 - Debug On
0x02 - Write all answers of socks servers.
0x04 - Write all requests of socks servers.
0x08 - Extended error information.
CHAIN_FILE - Configuration file name.
CHAIN_FILE_DATA - Array reference. ( a format same as well as
in a file of a configuration ). It is possible
to use for data transmission about chains directly,
without use of a file of a configuration. At use
of the given parameter, parameter CHAIN_FILE is
ignored, that is the file of a configuration
is not read.
LOG_FILE - Log file name. if undef, writing
all errors to STDERR or `syslogd`
RANDOM_CHAIN - Rule for create the chains ( 0 || 1 ).
0 - create chain by index...
1 - create chain by random...
CHECK_DELAY - Delay time for the next usage this proxy if
the last connection failed ( in seconds )
AUTO_SAVE - Auto save the data of chain to the cache file.
LOG_FH - File Descriptor of LOG file.
SYSLOG - 1 - Use syslogd ( for *nix ), or eventlog
( for win32 ) for debug messages. Default 0.
HTTP_CLIENT - User-Agent name for http proxies
METHODS
connect Create new connection to remote host.
Usage:
die unless $self->connect( $peer_host, $peer_port ) == SOCKS_OKAY;
bind Binding port.
Usage:
die unless $self->bind( $peer_host, $peer_port ) == SOCKS_OKAY;
accept Accepting connection over SOCKS
Usage:
die unless $self->accept() == SOCKS_OKAY;
$sh = $self->sh;
sh Returns the sock handle
Usage:
$sh = $self->sh;
close Close the connection.
Usage:
$self->close;
configure Returns [ and modify ] the current configuration options.
Usage:
# Change TIMEOUT
$self->configure( TIMEOUT => 10 );
# Returns TIMEOUT
$timeout = $self->configure( 'TIMEOUT' );
socks_param
Returns parameters of the last server into the chain socks...
Usage:
$listen_addr = $self->socks_param( 'listen_Addr' );
or:
$all_param = $self->socks_param();
$listen_addr = $all_param->{'listen_addr'};
ANY ROUTINES
socks_error( ERROR_CODE )
Returns the error message.
Socks error codes:
SOCKS_GENERAL_SOCKS_SERVER_FAILURE
SOCKS_CONNECTION_NOT_ALLOWED_BY_RUL
SOCKS_NETWORK_UNREACHABLE
SOCKS_HOST_UNREACHABLE
SOCKS_CONNECTION_REFUSED
SOCKS_TTL_EXPIRED
SOCKS_COMMAND_NOT_SUPPORTED
SOCKS_ADDRESS_TYPE_NOT_SUPPORTED
SOCKS_OKAY
SOCKS_FAILED
SOCKS_NO_IDENT
SOCKS_USER_MISMATCH
SOCKS_INCOMPLETE_AUTH
SOCKS_BAD_AUTH
SOCKS_SERVER_DENIES_AUTH_METHOD
SOCKS_MISSING_SOCKS_SERVER_NET_DATA
SOCKS_MISSING_PEER_NET_DATA
SOCKS_SOCKS_SERVER_UNAVAILABLE
SOCKS_TIMEOUT
SOCKS_UNSUPPORTED_PROTOCOL_VERSION
SOCKS_UNSUPPORTED_ADDRESS_TYPE
SOCKS_HOSTNAME_LOOKUP_FAILURE
$self->read_chain_data();
Reading the configuration file.
$self->get_socks_count
Returns the number of the socks servers
$self->mark_proxy ( $proxy_id, $status );
Mark the socks server with index $proxy_id how dead
if $status not equally SOCKS_OKAY, otherwise
clearing counter of the connection failure...
$self->dump_cfg_data();
Dump socks data, in the cache file.
$self->restore_cfg_data();
Restore socks data, from the cache file.
NOTES
accept method change the follow variable, which returns of the
socks_param:
listen_addr
listen_port
Methods connect, bind, accept returnings SOCKS_OKAY if it succeeded.
Http proxies do not support bind method.
Http proxies support only Basic auth.
CONFIG FORMAT
#host : port : uid : pswd : socks_proto
192.168.1.90 : 1080 : : : 5
192.18.122.90 : 3128 : bbb : ccc : 0
...
You can use the comments in the configuration file, for
this you must write `#' in the beginning of string...
THANKS
JoNO <jonozzz[at]yahoo.com> - for ideas of a writing of support http a proxy.
SEE ALSO
perl, RFC 1928, RFC 1929, ...
AUTHOR
Igor V. Okunev mailto:
[email protected]
http://www.mts-nn.ru/~gosha
icq:106183300