Net-Clacks
view release on metacpan or search on metacpan
},
"runtime" : {
"requires" : {
"Array::Contains" : "2.7",
"Carp" : "0",
"English" : "0",
"Errno" : "0",
"File::Copy" : "0",
"IO::Select" : "0",
"IO::Socket::IP" : "0",
"IO::Socket::SSL" : "0",
"Readonly" : "0",
"Scalar::Util" : "0",
"Sys::Hostname" : "0",
"Time::HiRes" : "0",
"XML::Simple" : "0",
"YAML::Syck" : "0",
"perl" : "5.036000"
}
}
},
- t
- inc
requires:
Array::Contains: '2.7'
Carp: '0'
English: '0'
Errno: '0'
File::Copy: '0'
IO::Select: '0'
IO::Socket::IP: '0'
IO::Socket::SSL: '0'
Readonly: '0'
Scalar::Util: '0'
Sys::Hostname: '0'
Time::HiRes: '0'
XML::Simple: '0'
YAML::Syck: '0'
perl: '5.036000'
version: 30
x_serialization_backend: 'CPAN::Meta::YAML version 0.020'
Makefile.PL view on Meta::CPAN
# the contents of the Makefile that is written.
WriteMakefile(
NAME => 'Net::Clacks',
VERSION_FROM => 'lib/Net/Clacks.pm', # finds $VERSION
MIN_PERL_VERSION => '5.36.0',
PREREQ_PM => {
"Array::Contains" => 2.7,
"XML::Simple" => 0,
"IO::Select" => 0,
"IO::Socket::IP" => 0,
"IO::Socket::SSL" => 0,
"Time::HiRes" => 0,
"Carp" => 0,
"English" => 0,
"Errno" => 0,
"Readonly" => 0,
"Sys::Hostname" => 0,
"Time::HiRes" => 0,
"YAML::Syck" => 0,
"File::Copy" => 0,
"Scalar::Util" => 0,
example/rawclient.pl view on Meta::CPAN
use utf8;
use Encode qw(is_utf8 encode_utf8 decode_utf8);
use Data::Dumper;
use builtin qw[true false is_bool];
no warnings qw(experimental::builtin); ## no critic (TestingAndDebugging::ProhibitNoWarnings)
#---AUTOPRAGMAEND---
use Term::ReadKey;
use Time::HiRes qw(sleep);
use IO::Socket::IP;
use IO::Socket::SSL;
use MIME::Base64;
my $peer = shift @ARGV;
if(!defined($peer) || $peer !~ /\:/) {
die("Usage: rawclient.pl host:port");
}
my ($host, $port) = split/\:/, $peer;
my $username = 'exampleuser';
my $password = 'unsafepassword';
example/rawclient.pl view on Meta::CPAN
my $socket = IO::Socket::IP->new(
PeerHost => $host,
PeerPort => $port,
Type => SOCK_STREAM,
) or croak("Failed to connect to Clacks message service: $ERRNO");
binmode($socket, ':bytes');
$socket->blocking(0);
IO::Socket::SSL->start_SSL($socket,
SSL_verify_mode => SSL_VERIFY_NONE,
) or croak("Can't use SSL: " . $SSL_ERROR);
# Auth
foreach my $initcmd (@initcommands) {
print '>', $initcmd, "\n";
syswrite($socket, $initcmd . "\r\n");
}
my $keepRunning = 1;
lib/Net/Clacks/Client.pm view on Meta::CPAN
use Data::Dumper;
use builtin qw[true false is_bool];
no warnings qw(experimental::builtin); ## no critic (TestingAndDebugging::ProhibitNoWarnings)
#---AUTOPRAGMAEND---
use IO::Socket::IP;
#use IO::Socket::UNIX;
use Time::HiRes qw[sleep usleep];
use Sys::Hostname;
use IO::Select;
use IO::Socket::SSL;
use MIME::Base64;
sub new($class, $server, $port, $username, $password, $clientname, $iscaching = 0) {
my $self = bless {}, $class;
if(!defined($server) || !length($server)) {
croak("server not defined!");
}
if(!defined($port) || !length($port)) {
croak("port not defined!");
lib/Net/Clacks/Client.pm view on Meta::CPAN
croak("Neither TCP nor Unix domain socket specified. Don't know where to connect to.");
}
#binmode($socket, ':bytes');
$socket->blocking(0);
if(ref $socket ne 'IO::Socket::UNIX') {
# ONLY USE SSL WHEN RUNNING OVER THE NETWORK
# There is simply no point in running it over a local socket.
IO::Socket::SSL->start_SSL($socket,
SSL_verify_mode => SSL_VERIFY_NONE,
) or croak("Can't use SSL: " . $SSL_ERROR);
}
$self->{socket} = $socket;
$self->{selector} = IO::Select->new($self->{socket});
$self->{failcount} = 0;
$self->{lastping} = time;
$self->{inbuffer} = '';
$self->{incharbuffer} = [];
lib/Net/Clacks/Server.pm view on Meta::CPAN
use builtin qw[true false is_bool];
no warnings qw(experimental::builtin); ## no critic (TestingAndDebugging::ProhibitNoWarnings)
#---AUTOPRAGMAEND---
use XML::Simple;
use Time::HiRes qw(sleep usleep time);
use Sys::Hostname;
use Errno;
use IO::Socket::IP;
use IO::Select;
use IO::Socket::SSL;
use YAML::Syck;
use MIME::Base64;
use File::Copy;
use Scalar::Util qw(looks_like_number);
# For turning off SSL session cache
use Readonly;
Readonly my $SSL_SESS_CACHE_OFF => 0x0000;
my %overheadflags = (
lib/Net/Clacks/Server.pm view on Meta::CPAN
S => "shutdown_service", # value: positive number (number in seconds before shutdown). If interclacks clients are present, should be high
# enough to flush all buffers to them
T => 'timestamp', # Used before KEYSYNC to compensate for time drift between different systems
U => "return_to_sender",
Z => "no_flags", # Only sent when no other flags are set
);
BEGIN {
{
# We need to add some extra function to IO::Socket::SSL so we can track the client ID
# on both TCP and Unix Domain Sockets
no strict 'refs'; ## no critic (TestingAndDebugging::ProhibitNoStrict)
*{"IO::Socket::SSL::_setClientID"} = sub {
my ($self, $cid) = @_;
${*$self}{'__client_id'} = $cid; ## no critic (References::ProhibitDoubleSigils)
return;
};
*{"IO::Socket::SSL::_getClientID"} = sub {
my ($self) = @_;
return ${*$self}{'__client_id'} || ''; ## no critic (References::ProhibitDoubleSigils)
};
}
}
sub new($class, $isDebugging, $configfile) {
lib/Net/Clacks/Server.pm view on Meta::CPAN
);
}
if(!defined($msocket)) {
print STDERR "Can't connect to MASTER via interclacks!\n";
} else {
print "connected to master\n";
if(ref $msocket ne 'IO::Socket::UNIX') {
# ONLY USE SSL WHEN RUNNING OVER THE NETWORK
# There is simply no point in running it over a local socket.
my $encrypted = IO::Socket::SSL->start_SSL($msocket,
SSL_verify_mode => SSL_VERIFY_NONE,
);
if(!$encrypted) {
print "startSSL failed: ", $SSL_ERROR, "\n";
next;
}
}
$msocket->blocking(0);
#binmode($msocket, ':bytes');
lib/Net/Clacks/Server.pm view on Meta::CPAN
$cid = "$chost:$cport";
foreach my $debugcid (keys %{$self->{clients}}) {
if($self->{clients}->{$debugcid}->{mirror}) {
$self->{clients}->{$debugcid}->{outbuffer} .= "DEBUG CONNECTED=" . $cid . "\r\n";
}
}
if(ref $clientsocket ne 'IO::Socket::UNIX') {
# ONLY USE SSL WHEN RUNNING OVER THE NETWORK
# There is simply no point in running it over a local socket.
my $encrypted = IO::Socket::SSL->start_SSL($clientsocket,
SSL_server => 1,
SSL_cert_file => $self->{config}->{ssl}->{cert},
SSL_key_file => $self->{config}->{ssl}->{key},
SSL_cipher_list => 'ALL:!ADH:!RC4:+HIGH:+MEDIUM:!LOW:!SSLv2:!SSLv3!EXPORT',
SSL_create_ctx_callback => sub {
my $ctx = shift;
# Enable workarounds for broken clients
Net::SSLeay::CTX_set_options($ctx, &Net::SSLeay::OP_ALL); ## no critic (Subroutines::ProhibitAmpersandSigils)
( run in 0.597 second using v1.01-cache-2.11-cpan-4d50c553e7e )