
| Current Path : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/Server/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/Server/ProtocolPERL.pm |
package Server::ProtocolPERL;
use strict;
use Server::frezthaw;
eval("use MIME::Base64");
sub new {
my $class = shift;
my $self = {};
my $par = shift;
$self->{'FREEZE'} = 1;
$self->{'ENCODE'} = "u";
$self->{'FORMAT'} = "";
$par = "_" . $par . "_";
if ($par =~ /\_FREEZE\_/) { $self->{'FREEZE'} = 1; }
if ($par =~ /\_NOFREEZE\_/) { $self->{'FREEZE'} = 0; }
if ($par =~ /\_UUENCODE\_/) { $self->{'ENCODE'} = "u"; }
if ($par =~ /\_BASE64\_/) { $self->{'ENCODE'} = "b"; }
if ($par =~ /\_NOENCODE\_/) { $self->{'ENCODE'} = ""; }
if ($par =~ /\_XML\_/) { $self->{'FORMAT'} = "x"; }
if ($par =~ /\_LINE\_/) { $self->{'FORMAT'} = "l"; }
bless($self,$class);
return($self);
}
#***********************************************************************
sub server_send {
my $self = shift;
my $obj = shift;
my $sock = shift;
if ($self->{'FREEZE'}) {
$obj = Server::frezthaw::freeze($obj);
}
if ($self->{'ENCODE'} eq "u") {
$obj = pack('u',$obj) . "\n----E-E-N-N-D-D----\n";
}
elsif ($self->{'ENCODE'} eq "b") {
$obj = MIME::Base64::encode_base64($obj) . "\n";
}
if ($sock) {
print $sock $obj;
return(1);
}
return(0);
}
#***********************************************************************
sub client_send {
my $self = shift;
my $obj = shift;
my $sock = shift;
return($self->server_send($obj,$sock));
}
#**********************************************************************
sub server_receive {
my $self = shift;
my $sock = shift;
my $zeilen = shift;
my $erg = "";
my $o;
my $zaehler = 1;
if ( $self->{'FORMAT'} eq "x" and !($self->{'FREEZE'}) and
!($self->{'ENCODE'}) ) {
my $EndTag = "";
while (0 == 0) {
if (eof($sock)) {
print "___EOF___\n";
return("___EOF___",0);
} else {
$o = <$sock>;
}
if (!$EndTag) {
if ($o =~ /\<([A-Za-z0-9]+)[ \>]/) {
$EndTag = $1;
}
}
$erg = $erg . $o;
last if ($o =~ /\<\/$EndTag\>/);
}
}
elsif ( $self->{'FORMAT'} eq "l" and !($self->{'FREEZE'}) and
!($self->{'ENCODE'}) ) {
print "hhhier\n";
if (eof($sock)) {
print "___EOF___\n";
return("___EOF___",0);
} else {
$o = <$sock>;
}
$erg = $erg . $o;
}
else {
while (0 == 0) {
if (eof($sock)) {
print "___EOF___\n";
return("___EOF___",0);
} else {
$o = <$sock>;
}
last if ($o eq "\n" and $self->{'ENCODE'} =~ /b/);
last if ($o eq "----E-E-N-N-D-D----\n" and $self->{'ENCODE'} =~ /u/);
$erg = $erg . $o;
}
}
return("___EOF___",0) if (!$erg);
if ($self->{'ENCODE'} eq "u") {
$erg =~ /(.*)\n/s;
$erg = $1;
$erg = unpack('u',$erg);
}
elsif ($self->{'ENCODE'} eq "b") {
$erg = MIME::Base64::decode_base64($erg);
}
if ($self->{'FREEZE'}) {
$erg = (Server::frezthaw::thaw($erg))[0];
}
return($erg,1);
}
#**********************************************************************
sub client_receive {
my $self = shift;
my $sock = shift;
return($self->server_receive($sock,1));
}
#**********************************************************************
1;