Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /var/www/web-klick.de/dsh/10_customer2017/1210__delphi/

Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
Upload File :
Current File : /var/www/web-klick.de/dsh/10_customer2017/1210__delphi/TestTree.pm

package DivBasicF::TestTree;

use strict;
use Data::Dumper;

#******************************************************************

ladösfsub new {

   my $class = shift;
   my $self  = {};
   bless($self,$class);
   $self->init();
   return($self);
   
}

sub choose          { my $l = shift; my @pars = $l->sets(@_);
                         return($pars[int rand($#pars+1)]); }
sub choose_between  { my $l = shift; my $a = shift; my $b = shift;
                         return($a + int rand(1 + $b - $a)); }
sub choose_until    { my $l = shift; 
                         my $b = shift; return(int rand(1 + $b)); }
sub mchoose         { my $l = shift; my $nr = shift; my @pars = $l->sets(@_);
                         my @erg = (); while ($#erg < $nr-1) {
                         push(@erg,$l->choose(@pars)); }      return(@erg); }
sub mchoose_between { my $l = shift;
                         my $nr = shift; my @erg = (); while ($#erg < $nr-1) {
                         push(@erg,$l->choose_between(@_)); } return(@erg); }
sub mchoose_until   { my $l = shift;
                         my $nr = shift; my @erg = (); while ($#erg < $nr-1) {
                         push(@erg,$l->choose_until(@_)); }   return(@erg); }

sub sets {

   my $self = shift;
   my @pars = @_;
   my @erg  = ();
   my $o; my $o1; my $o2; my $start; my $xa; my $xe;

   foreach $o (@pars) {
       
      if ($o =~ /^([A-Za-z0-9])(\.|\-)([A-Za-z0-9])$/) {
         $xa    = $1;
         $o2    = $2;
         if ($o2 eq ".") {
            $o2 = [];
         } else {
            $o2 = "";
         }
         $xe    = $3;
         $start = 0;
         foreach $o1 (qw(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
                         a b c d e f g h i j k l m n o p q r s t u v w x y z
                         0 1 2 3 4 5 6 7 8 9)) {
            if ($o1 eq $xa) { $start = 1; }
            if ($start) { 
               if ($o2) {
                  push(@$o2,$o1);
               } else {
                  push(@erg,$o1);
               }
            }
            last if ($o1 eq $xe);
         }
         if ($o2) { push(@erg,$self->choose(@$o2)); }
      }
      elsif ($o =~ /^([\-\+]?\d+)\-([\-\+]?\d+)$/) {
         push(@erg,$self->choose_between($1,$2));
      }
      elsif ($o =~ /^(\d+\.\d+\.\d+)\-(\d+\.\d+\.\d+)$/) {
         $xa = Time::ParseDate::parsedate($1,UK=>1)/86400;
         $xe = Time::ParseDate::parsedate($2,UK=>1)/86400;
         $o1 = $self->choose_between($xa,$xe);
         $o1 = Date::Format::time2str("%e.%L.%Y",$o1*86400);
         $o1 =~ s/ //g;
         push(@erg,$o1);
      }
      else {
         push(@erg,$o);
      }

   }

   return(@erg);

}


sub max { my $l = shift;
          my $a = shift; my $b = shift; return($b) if ($a > $b); return($a); }


#******************************************************************
   
#  to overload:

sub init   { 1; }
sub result { my $self = shift; return(1); }
sub remark { my $self = shift; return("OK"); }
sub user   { my $self = shift; return("");  }
sub requ   { my $self = shift; return([]); }
#sub requ   { my $self = shift; return([ 'Standard' => 0.01 ]); }

sub run    {

   my $self = shift; 
   $self->test_start(@_);
#   $self->{'requ'} = { 'Standard' => 0.01 };

   my $o = <<'TEXT_ENDE';
sub run    {

   my $self = shift; 
   $self->test_start(@_);
#   $self->{'requ'} = { 'Standard' => 0.01 };

   my $o = <<'TEXXT_ENDE';
---LOG---
TEXXT_ENDE

   $o =~ s/---LOG---/$o/;
   $o =~ s/TEXXT_ENDE(.*)\nTEXXT_ENDE/TEXT_ENDE$1\nTEXT_ENDE/s;
   $self->{'log'} = $o;

   $self->test_end();

}
TEXT_ENDE
             
   $o =~ s/---LOG---/$o/;
   $o =~ s/TEXXT_ENDE(.*)\nTEXXT_ENDE/TEXT_ENDE$1\nTEXT_ENDE/s;
   $self->{'log'} = $o;

   $self->test_end();

}
             
#******************************************************************

sub test_start {

   my $self  = shift;
   my @pars  = @_;
   my @pars1 = ();
   my $o; my @ee; my $o1;
   while (@pars) {                             #  Requirements werden mit uebergeben
      last if ($pars[0] =~ /^(USER|ARCH)\_/);  #  ab einem Parameter, der beginnt mit USER_ oder ARCH_
      push(@pars1,shift(@pars));               #  ( <par1>, <par2>, ..., <requ1> => <gewicht1>, ...
   }
   $self->{'requ'} = { @pars };
#   $self->{'requ'} = { @{$self->requ()}, @pars };
   foreach $o (keys %{$self->{'requ'}}) {      #  Ein Requirement, das eingeschlossen ist
      if ($o =~ /^___(.*)___$/) {              #  in ___ , wird als Objektvariable
         $self->{$o} = $self->{'requ'}->{$o};  # betrachtet. Beispiel:
         delete( $self->{'requ'}->{$o} );      # $self->{'requ'}->{'___abc___'} = "jr"  ->
      }                                        # $self->{'abc'} = "jr"
   }
   $self->mk_package();
   return(@pars1);
   
}

#*********************************************************************

sub mk_package {

   my $self  = shift;
   my $file  = ref($self);
   my $file1 = $file;
   $file1    =~ s/\:\:/\//gs;

   mkdir($file1);
   my $zaehler = 0;
   while (0 == 0) {
      $zaehler = sprintf("%03u",$zaehler+1);
      last if (!(-f("$file1/$zaehler.pm")));
   }
   $self->{'package'} = $file . "::" . $zaehler;

}

#******************************************************************

sub test_end {

   my $self        = shift;
   $self->{'log'} .= shift;

   my $user1 = "xx"; 

   if (!($self->{'requ'}) or !(%{$self->{'requ'}})) {
      $self->{'requ'} = { "Standard" => 0.01 };
   }


   my $r = "";
   my $l; my $o; my $o1; my @ee; my $dbh; my $cursor; my $nr;
#   my $maxweight = $self->{'weight'} || 1;
   foreach $o (sort keys %{$self->{'requ'}}) {
      if ($o =~ /^user_(.*)$/i) {
         $user1 = $1;
      }
      $l = length($o) + 2;
      if ($l < 25) { $l = 25; }
      $o1 = $self->{'requ'}->{$o};
#      if ($o1 > $maxweight) { $o1 = $maxweight; }
      $r = $r . "      '" . substr($o."'                           ",0,$l + 2)
                          . " =>  " .
                           sprintf("%6.4f",$o1)
                          . "   ,\n";
   }
   while ( $r =~ s/0( +),/ $1,/g )  { 1; } 
   while ( $r =~ s/\.( +),/ $1,/g ) { 1; } 

   my $text  = <<'TEXT_ENDE';
package ---PACKAGE---;

use strict;
use vars qw(@ISA $PKG);
$PKG = __PACKAGE__;
while ($PKG =~ s/^(.*)\:\:.*$/$1/) { eval("use $PKG"); next if ($@); @ISA = ($PKG); last }

sub result { ---RESULT--- }
sub remark { "---REMARK---" }
sub user   { "---USER---" }
sub requ   { [

---REQUIREMENT---
           ] }


---FUNCTIONS---


1;
TEXT_ENDE

   $o = $self->{'log'};

   eval ( $o );  print STDERR "\n------------------\n\nThis is only a WARNING, NO ERROR:\n\n"
                  . $@ . "\n------------------\n\n" if ($@);
   if ($@) {
      $o = 'sub run { my $self = shift; $self->test_start(@_); $self->{'."'weight'".'} = 0; $self->test_end('."<<'LOG'".'); }' . "\n\nRun log of " . ref($self) .
           "\n-------------------------------------\n\n\n" . $o . "\nLOG\n\n";
   }
   $text =~ s/---FUNCTIONS---/$o/gs;
   $o    = $self->{'package'} || ref($self) . "::001";
   $text =~ s/---PACKAGE---/$o/gs;

   $o = $self->user() . "," . time() . "." . $user1;
   $o =~ s/^\,//;
   while ($o =~ /^(.*\,)(\d+)(\..*)$/) {
      @ee = localtime($2); # Sekundenformat in lesbares Format umwandeln
      $o = $1 .
               sprintf("%04u",$ee[5]+1900) .   sprintf("%02u",$ee[4]+1) .
               sprintf("%02u",$ee[3]) . "_" .  sprintf("%02u",$ee[2]) .
               sprintf("%02u",$ee[1]) .        sprintf("%02u",$ee[0]) . $3;
   }
   $o    =~ s/^,//;
   $text =~ s/---USER---/$o/gs;
   $text =~ s/---REQUIREMENT---/$r/gs;
#   print $text; exit;

#  Probeweises Einsetzen und pruefen, ob der Test-Item-Eintrag
#      a) gueltiger Perl-Code ist
#      b) ein gueltiges Perl-Package ist

   $o1 = $text;
   $o  = $self->{'result'}    || 1;
   $o1 =~ s/---RESULT---/$o/gs;
   $o  = $self->{'remark'}    || "";
   $o1 =~ s/---REMARK---/$o/gs;

#  jetzt fertigstellen

         if ($self->{'result'} > 9900) {
            $self->{'result'} = 1;
            $self->{'remark'} = "OK";
         }

   $o    = $self->{'result'}    || 0;
   $text =~ s/---RESULT---/$o/gs;
   $o    = $self->{'remark'}    || "";
   $text =~ s/---REMARK---/$o/gs;

   $self->save_package($text);
   
}

#************************************************************

sub save_package {

   my $self = shift;
   my $text = shift;
   my $o    =  $self->{'package'} . ".pm";
   $o       =~ s/\:\:/\//gs;

   open(FFILE,">".$o);
   print FFILE $text;
   close(FFILE);
   return("CREATED: $self->{'package'}");

}

#************************************************************

sub goto_next_function {

   my $self = shift;

   my $func; my $jump;
   my %list_of_functions     = eval("\%".ref($self)."::");
   $list_of_functions{'run'} = 1;
   my $tlist = [];
   foreach $func (sort {
         $a =~ /^(.*?)(0*)(\d*)$/; my $a1 = $3;
         $b =~ /^(.*?)(0*)(\d*)$/; my $b1 = $3;
           $a1 <=> $b1 } keys %list_of_functions) {
      next if ($func !~ /^(r|run|t|test)(\d*)$/);
      $jump = $func;
      last if (!($self->{'___JUMP___'}));
      if ($self->{'___JUMP___'} eq $func) {
         delete ($self->{'___JUMP___'});
      }
   }
   $self->{'___JUMP___'} = $jump;
   if (!$jump) {
      $func = "ERROR: No function found in " . ref($self) .
              "::get_next_function\n";
      print STDERR $jump;
   } else {
      print STDERR "Jump to: $jump\n";
   }

   return($jump);

}

#******************************************************************

sub sleep {

   my $self = shift;
   my $time = shift;
   my $func = shift || $self->goto_next_function();
   sleep($time);
   $self->$func();

}

#*****************************************************************

sub simple_report {

   my $self  = shift;
   my $rlist = shift;  #  Reportliste
   my $erg   = 0;
   if (!$rlist) {
      $rlist = {};
      $erg = 1;
   }
   
   my $result = $self->result();
   my $requs  = $self->requ();
   $requs     = {@$requs};
   my $o;
   
   foreach $o (keys %$requs) {
      if (!(exists($rlist->{$o}))) {
         $rlist->{$o} = [0.00,0,0,0,0];
      }
      $rlist->{$o}->[0] = 1 - (1 - $rlist->{$o}->[0])*(1 - $requs->{$o});
      $rlist->{$o}->[1] = $rlist->{$o}->[1] + 1;
      if ($result == 1) {
         $rlist->{$o}->[2] = $rlist->{$o}->[2] + 1;
      }
      elsif ($result < 1000) {
         $rlist->{$o}->[3] = $rlist->{$o}->[3] + 1;
      }
      else {
         $rlist->{$o}->[4] = $rlist->{$o}->[4] + 1;
      }
   }

   my $pkg = ref($self);
   my $dir = "./" . $pkg;
   $dir =~ s/\:\:/\//g;

   opendir(DDIR,"$dir");
   my $subitems = [];
   while (0 == 0) {
      $o = readdir(DDIR);
      last if (!$o);
      next if ($o !~ s/\.pm$//);
      push(@$subitems,$pkg . "::" . $o);
   }

   foreach $o (@$subitems) {
      eval("use $o");
      next if ($@);
      $o->new()->report($rlist);
   }

   if ($erg) {
      my $text = "\n\n\nRequirement              " .
                 "    Sensitivity  All_Tests      OK   WARNING   ERROR\n" .
                 "-----------------------------------------------------" .
                 "------------------------\n\n";
      foreach $o (keys %$rlist) {
         next if ($o eq "Standard");
         next if ($o eq "run");
         $text = $text . substr($o."                                ".$o,0,35) .
                 sprintf("%5.3f",$rlist->{$o}->[0]) . "      " .
                 sprintf("%3u",  $rlist->{$o}->[1]) . "       " .
                 sprintf("%3u",  $rlist->{$o}->[2]) . "      " .
                 sprintf("%3u",  $rlist->{$o}->[3]) . "     " .
                 sprintf("%3u",  $rlist->{$o}->[4]) . "\n";
      }
      return($text."\n\n\n");
   }
   return($rlist);
    
}


#************************************************************

sub add_log {

   my $self = shift;
   my $mode = shift;
   my $text = shift;
   $self->{'log'} = $self->{'log'} . $text . "\n";
   print $text . "\n";

} 

#************************************************************

sub add_req {

   my $self = shift;
   my $val  = shift;
   my $requ = shift;
   $self->{'requ'}->{$requ} = $val;
   $self->add_log(0,"   --->  Requirement $requ added with sensitivity $val");

} 

#************************************************************


1;



bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped)
Email: contact@elmoujehidin.net bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped) Email: contact@elmoujehidin.net