home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / hostmgr.zip / PROBE.PL < prev    next >
Perl Script  |  1999-07-07  |  13KB  |  361 lines

  1. #!\perl5\bin\perl
  2.  
  3.  
  4.  
  5. print uuencode("d:/myhost/hostman.arj","1.UUE","644");
  6. print uudecode("1.uue","hostman.arq");
  7.  
  8. sub uuencode
  9. { my($in,$file,$mode) = @_;
  10.   my($chunk,@result,$r);
  11.   $mode         ||= "644";
  12.   open    FILE,$in ||  return "";
  13.   binmode FILE;
  14.   while (defined($r = read(FILE,$chunk,45)) && $r > 0)
  15.         {
  16.          push @result, uuencode_chunk($chunk);
  17.         };
  18.   my (@name) = split /[\:\\\/]/,$in;
  19.   $out = join "", "begin $mode @name[$#name]\n", @result, "end\n";
  20.   if ($file)
  21.      { open  FILE,">$file";
  22.        print FILE $out;
  23.        close FILE;
  24.      }
  25.   return $out;
  26. }
  27.  
  28. sub uuencode_chunk
  29. {
  30.     my($string) = shift;
  31.     my $encoded_string = pack("u", $string);           # unix uuencode
  32.     return $encoded_string;
  33. }
  34.  
  35. sub uudecode
  36. { my($in,$out) = @_;
  37.   my(@result,$file,$mode);
  38.   $mode = $file = "";
  39.   open FILE,$in || return "";
  40.   local($\) = "\n";
  41.   binmode FILE;
  42.   while (<FILE>)
  43.   { if ($file eq "" and !$mode)
  44.        {
  45.         ($mode,$file) = ($1, $2) if /^begin\s+(\d+)\s+(\S+)/ ;
  46.         next;
  47.        }
  48.     last if /^end/;
  49.     push @result, uudecode_chunk($_);
  50.   };
  51.   if ($file and $mode)
  52.      {open    FILE,">$out" || return "";
  53.       binmode FILE;
  54.       foreach (@result)
  55.               {syswrite FILE,$_,length $_;
  56.               };
  57.       close FILE;
  58.      }
  59.   return $file;
  60. }
  61.  
  62. sub uudecode_chunk {
  63.     my($chunk) = @_;
  64.     return "" if $chunk =~ /^(?:--|CREATED)/;
  65.     my $string = substr($chunk,0,int((((ord($chunk) - 32) & 077) + 2) / 3)*4+1);
  66. #    warn "DEBUG: string [$string]";
  67. #    my $return = unpack("u", $string);
  68. #    warn "DEBUG: return [$return]";
  69. #    $return;
  70.  
  71.     my $ret = unpack("u", $string);
  72.     defined $ret ? $ret : "";
  73. }
  74.  
  75.  
  76. sub RunGame
  77. { my ($GNum) = @_;
  78.   my ($i);
  79.   $command = $GAMES{"Run$GNum"};
  80.   $command = ChngSlash($command);
  81.   printlog("[Run $GNum] Now perform command : $command\n");
  82.   system($command);
  83.   $GAMEINFO{"RunDay"} = GetCurDays();
  84.   for ($i = 1; $i <= 11; $i++)
  85.       {SentTurn($GNum,$i);
  86.       }
  87. };
  88.  
  89. sub CheckGame
  90. { my ($GNum)     = @_;
  91.   TakeGameInfo($GNum,1);
  92.   $HoursGo  = GetCurDays()*24          + GetCurTime()/3600 -
  93.               $GAMEINFO{"CheckDay"}*24 - $GAMEINFO{"CheckTime"}/3600;
  94.   $NewCheck = ($GAMEINFO{"CheckDay"}*24*60*60 + $GAMEINFO{"CheckTime"} <
  95.                $GAMEINFO{"CheckDay"}*24*60*60 + $GAMES{"Time$GNum"} and
  96.                GetCurDays()*24*60*60          + GetCurTime() >
  97.                $GAMEINFO{"CheckDay"}*24*60*60 + $GAMES{"Time$GNum"}) ? 1 : 0;
  98.  
  99.   if ($GAMEINFO{"RunOption"} eq "RunGamemaster")
  100.      #ºá»πΘÑ¡ º¼ÑѼ-úÑ⌐¼¼áßΓÑα«¼
  101.      {RunGame($GNum);
  102.       printlog ("[Run $GNum] èá¬πε-Γπ ¿¡ΣѬµ¿ε ßÑ⌐τáß Γδ ºá»πßΓ¿½ ...\n");
  103.       printlog ("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ GAMEMASTER ...\n");
  104.       $GAMEINFO{"RunOption"} = "RunGameMaster";
  105.      }
  106.   elsif
  107.      ($GAMEINFO{"RunOption"} eq "SleepGamemaster")
  108.      #ß½¿»¡πΓ º¼ÑѼ-úÑ⌐¼¼áßΓÑα«¼
  109.      {DoSleep($GNum);
  110.       printlog ("[Sleep $GNum] ò«ßΓ ß»¿Γ - »πßΓ∞ º¡áεΓ óßÑ ...\n");
  111.      }
  112.   elsif ($GAMEINFO{"AllTurns"})
  113.      #»α¿ßπΓßΓóπεΓ éæà Γα¡-¬¿
  114.      {RunGame($GNum);
  115.       printlog ("[Run $GNum] èᬠºñ«α«ó«, τΓ« óßÑ ¼δ ºñÑß∞ ßÑú«ñ¡∩ ß«íα὿ß∞ ...\n");
  116.       if ( ($GAMEINFO{"TimeOut"})   ||                           #á) Äª¿ñá¡¿Ñ;
  117.            ((substr($GAMES{"Days$GNum"},GetCurDay,1) =~ /r/i) && #í) ê Γᬠíδ
  118.            ($GAMEINFO{"RunDay"} != GetCurDays())) ||             #   ºá»πßΓ¿½¿.
  119.            ($GAMEINFO{"RunOption"} = "RunImmediate") )           #ó) «ª¿ñ὿ 9¬π
  120.          {printlog ("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ NORMAL ...\n");
  121.           $GAMEINFO{"TimeOut"}   = 0;
  122.           $GAMEINFO{"RunOption"} = "RunNormal";
  123.          }
  124.       else
  125.          {printlog ("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ ALLPRESENT ...\n");
  126.           $GAMEINFO{"RunOption"} = "RunByAll";
  127.          }
  128.       }
  129.   elsif
  130.      ($GAMEINFO{"TimeOut"})
  131.      #¡áσ«ñ¿¼ß∩ ó αѪ¿¼Ñ ÄåêäÇìêƒ
  132.      {if ($HoursGo)
  133.           {printlog("[Check $GNum] Äª¿ñá¡¿Ñ ºá»π߬á...\n");
  134.            if ($GAMEINFO{"Summ"} >= $GAMEINFO{"Need"} && $GAMEINFO{"AllNine"} && $NewCheck)
  135.              {RunGame($GNum);
  136.               printlog("[Run $GNum] ä«Γ∩¡π½ ¡á ºá»áß¡«¼, ßΓÑαóѵ ...\n");
  137.               printlog("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ NORMAL ...\n");
  138.               $GAMEINFO{"RunOption"} = "RunNormal";
  139.              }
  140.           elsif
  141.              ($HoursGo >= $GAMEINFO{"TimeOut"})
  142.              {RunGame($GNum);
  143.               printlog("[Run $GNum] ìÑ π߻ѽ¿, ¡Ñ π߻ѽ¿ ...\n");
  144.               printlog("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ TIMEOUT ...\n");
  145.               $GAMEINFO{"RunOption"} = "RunTimeOut";
  146.              }
  147.           else
  148.              {$GAMEINFO{"TimeOut"} -= $HoursGo;
  149.               printlog("[Wait $GNum] ... ¡« α«ó¡« τÑαѺ $GAMEINFO{'TimeOut'} τáß(á,«ó) «¡ »α«ß¡ÑΓß∩ ...\n");
  150.               DoSleep($GNum) if $NewCheck;
  151.              }
  152.           }
  153.       else
  154.          {return 0;
  155.          }
  156.      }
  157.   elsif
  158.      ($NewCheck)
  159.      #¡áßΓπ»¿½« óαѼ∩ »α«óÑα¿Γ∞ Σ½áú¿
  160.      {printlog ("[Check $GNum] Åα¿Φ½á »«αá »α«óÑα¿Γ∞ ß«íδΓ¿Ñ ...\n");
  161.       if (substr($GAMES{"Days$GNum"},GetCurDay,1) =~ /s/i)
  162.          { DoSleep($GNum);
  163.            printlog("[Sleep $GNum] æ»¿¼, í½∩ ...\n");
  164.          }
  165.       elsif
  166.          (substr($GAMES{"Days$GNum"},GetCurDay,1) =~ /c/i)
  167.          { printlog("[Check $GNum] Å«ß¼«Γα¿¼, »«ß¼«Γα¿¼ ...\n");
  168.            if ( ($GAMEINFO{"RunOption"} eq "RunByAll") ||
  169.                 ($GAMEINFO{"RunOption"} eq "RunGameMaster") )
  170.               {DoSleep($GNum);
  171.                printlog("[Sleep $GNum] Å«¬á »α«¡Ñß½«, á τΓ« ñá½∞ΦÑ ...\n");
  172.                printlog("[Sleep $GNum] ÉѪ¿¼ ¿º¼Ñ¡Ñ¡ ¡á NORMAL ...\n");
  173.                $GAMEINFO{"RunOption"} = "RunNormal";
  174.               }
  175.            elsif
  176.               ( $GAMEINFO{"RunOption"} eq "RunImmediate" )
  177.               {RunGame($GNum);
  178.                printlog("[Run $GNum] äá¡ »α¿¬áº Ñ¼π ¡á ºá»π߬ ...\n");
  179.                printlog("[Run $GNum] çá»π߬ »α«¿ºóÑñÑ¡ ó αѪ¿¼Ñ NORMAL ...\n");
  180.                $GAMEINFO{"RunOption"} = "RunNormal";
  181.               }
  182.            elsif
  183.               ( $GAMEINFO{"Summ"} >= $GAMEINFO{"Need"} )
  184.               { unless ($GAMEINFO{"RunOption"} eq "RunTimeOut")
  185.                        {DecWeights($GNum);
  186.                         printlog("[Dec $GNum] èΓ« ¡Ñ ΓπΓ - π»á½, «Γªá½ß∩ ...\n");
  187.                        };
  188.                 if ($GAMEINFO{"AllNine"})
  189.                    {RunGame($GNum);
  190.                     printlog("[Run $GNum] òóáΓ¿½« óα«ñÑ ...\n");
  191.                     printlog("[Run $GNum] çá»π߬ »α«¿ºóÑñÑ¡ ó αѪ¿¼Ñ NORMAL ...\n");
  192.                     $GAMEINFO{"RunOption"} = "RunNormal";
  193.                    }
  194.                 else
  195.                    {DoSleep($GNum);
  196.                     printlog("[Sleep $GNum] Ç ó«Γ ñÑó∩Γ«¬-Γ« ¿ ¡Ñ σóáΓáÑΓ ...\n");
  197.                     printlog("[Sleep $GNum] æ½ÑñπεΘ¿⌐ ºá»π߬ ß«ßΓ«¿Γß∩ ó ½εíπε »«ú«ñπ ...\n");
  198.                     $GAMEINFO{"RunOption"} = "RunImmediate";
  199.                    };
  200.               }
  201.            else
  202.               { unless ($GAMEINFO{"RunOption"} eq "RunTimeOut")
  203.                        {DecWeights($GNum);
  204.                         printlog("[Dec $GNum] èΓ« ¡Ñ ΓπΓ - π»á½, «Γªá½ß∩ ...\n");
  205.                        };
  206.                 DoSleep($GNum);
  207.                 printlog("[Sleep $GNum] îá½áóáΓá íπñÑΓ ...\n");
  208.                 if ($GAMES{"Wait$GNum"})
  209.                    {$GAMEINFO{"TimeOut"} = $GAMES{"Wait$GNum"};
  210.                     printlog("[Sleep $GNum] ... ¿ ó ºá»áßÑ π ¡Ñú«(¡¿σ) «ßΓὫß∞ $GAMEINFO{'TimeOut'} τáß(á,«ó) ...\n");
  211.                    }
  212.                 else
  213.                    {$GAMEINFO{"RunOption"} = "RunImmediate";
  214.                     printlog("[Sleep $GNum] æ½ÑñπεΘ¿⌐ ºá»π߬ ß«ßΓ«¿Γß∩ ó ½εíπε »«ú«ñπ ...\n");
  215.                    }
  216.               };
  217.          }
  218.       elsif
  219.         (substr($GAMES{"Days$GNum"},GetCurDay,1) =~ /r/i)
  220.         {printlog("[Check $GNum] Two beer or not two beer ...\n");
  221.          if ( ($GAMEINFO{"RunOption"} eq "RunByAll") ||
  222.               ($GAMEINFO{"RunOption"} eq "RunGameMaster") )
  223.               {DoSleep($GNum);
  224.                printlog("[Sleep $GNum] Å«¬á »α«¡Ñß½«, á τΓ« ñá½∞ΦÑ ...\n");
  225.                printlog("[Sleep $GNum] ÉѪ¿¼ ¿º¼Ñ¡Ñ¡ ¡á NORMAL ...\n");
  226.                $GAMEINFO{"RunOption"} = "RunNormal";
  227.               }
  228.            elsif
  229.               ( ($GAMEINFO{"RunOption"} eq "RunTimeOut") && ($GAMES{"Wait$GNum"} > 0) )
  230.               {DoSleep($GNum);
  231.                printlog("[Sleep $GNum] Å«¬á »α«¡Ñß½«, á τΓ« ñá½∞ΦÑ ...\n");
  232.                printlog("[Sleep $GNum] æ½ÑñπεΘ¿⌐ ºá»π߬ ß«ßΓ«¿Γß∩ ó ½εíπε »«ú«ñπ ...\n");
  233.                $GAMEINFO{"RunOption"} = "RunImmediate";
  234.               }
  235.            else
  236.               {unless ($GAMEINFO{"RunOption"} eq "RunTimeOut")
  237.                        {DecWeights($GNum);
  238.                         printlog("[Dec $GNum] èΓ« ¡Ñ ΓπΓ - π»á½, «Γªá½ß∩ ...\n");
  239.                        };
  240.                RunGame($GNum);
  241.                printlog("[Run $GNum] Å«αá, íαáΓ, »«αá ...\n");
  242.                printlog("[Run $GNum] çá»π߬ »α«¿ºóÑñÑ¡ ó αѪ¿¼Ñ - NORMAL ...\n");
  243.                $GAMEINFO{"RunOption"} = "RunNormal";
  244.               };
  245.         };
  246.    };
  247.   $GAMEINFO{"CheckDay"}  = GetCurDays();
  248.   $GAMEINFO{"CheckTime"} = GetCurTime();
  249.   SaveParams($GNum);
  250. };
  251.  
  252. sub CheckNextRun
  253. { my ($GNum)     = @_;
  254.   print "GNum = $GNum\n";
  255.   TakeGameInfo($GNum,1);
  256.  
  257.   if ($GAMEINFO{"TimeOut"})
  258.      {$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ : ".AddTime(0,$GAMEINFO{"TimeOut"}*3600,$GNum);
  259.      }
  260.   elsif
  261.      ( !($GAMES{"Days$GNum"} =~ /c|r/i) ||
  262.        !($GAMES{"Run$GNum"}) )
  263.      {$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ :  »« »α¿σ«ñπ óßÑσ Γα¡ ¿½¿\n".
  264.                  "                    ¿úαá íπñÑΓ ºá»πΘÑ¡á óαπτ¡πε âî.";
  265.      }
  266.   else
  267.      {$AddDays    = $GAMEINFO{"CheckTime"} > $GAMES{"Time$GNum"} ? 0 : 1;
  268.       $DayValue   = (GetCurDay() + $AddDays) % 7;
  269.       $AddTime    = 0;
  270.       $FirstPoint = -1;
  271.       $RunOption  = $GAMEINFO{"RunOption"};
  272.       while ($AddDays <= 14)
  273.       {if (substr($GAMES{"Days$GNum"},$DayValue,1) =~ /s/i)
  274.           {$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
  275.            print "s-$AddDays\n";
  276.           }
  277.        elsif
  278.           (substr($GAMES{"Days$GNum"},$DayValue,1) =~ /c/i)
  279.           {print "c-$AddDays\n";
  280.            if ( $RunOption eq "RunByAll" ||
  281.                 $RunOption eq "RunGameMaster" )
  282.               {$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
  283.                $RunOption  = "RunNormal";
  284.               }
  285.            elsif
  286.               ( $RunOption  eq "RunImmediate" )
  287.               { last;
  288.               }
  289.            elsif
  290.               ( $GAMEINFO{"Summ"} >= $GAMEINFO{"Need"} )
  291.               { if ($GAMEINFO{"AllNine"})
  292.                    { last;
  293.                    }
  294.                 else
  295.                    { $FirstPoint = $AddDays;
  296.                      $AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
  297.                      $RunOption = "RunImmediate";
  298.                    };
  299.               }
  300.            else
  301.               { if ($GAMES{"Wait$GNum"})
  302.                    {$FirstPoint = $AddDays;
  303.                     $AddTime    = $GAMES{"Wait$GNum"};
  304.                     last;
  305.                    }
  306.                 else
  307.                    {$FirstPoint = $AddDays;
  308.                     $AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
  309.                     $RunOption = "RunImmediate";
  310.                    }
  311.               };
  312.          }
  313.       elsif
  314.         (substr($GAMES{"Days$GNum"},$DayValue,1) =~ /r/i)
  315.         {if ( $RunOption eq "RunByAll" ||
  316.               $RunOption eq "RunGameMaster" )
  317.               {$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
  318.                $RunOption = "RunNormal";
  319.               }
  320.            elsif
  321.               ( ($RunOption eq "RunTimeOut") && ($GAMES{"Wait$GNum"} > 0) )
  322.               {$FirstPoint = $AddDays;
  323.                $AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
  324.                $RunOption = "RunImmediate";
  325.               }
  326.            else
  327.               {last;
  328.               };
  329.         }
  330.       else
  331.         {$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
  332.          print "e-$AddDays-$DayValue\n";
  333.         }
  334.       };
  335.      print "Tre - $AddDays - $DayValue\n";
  336.      if ($AddDays > 14)
  337.         {$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ :  »« »α¿σ«ñπ óßÑσ Γα¡ ¿½¿\n".
  338.                     "                    ¿úαá íπñÑΓ ºá»πΘÑ¡á óαπτ¡πε âî.";
  339.         }
  340.      else
  341.         {if ($FirstPoint >= 0)
  342.             {$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ :\n".
  343.                         " - »α¿ ñ«ßΓ¿ªÑ¡¿¿ óÑßá ".AddTime($FirstPoint,0,$GNum)."\n".
  344.                         " - íѺπß½«ó¡«          ".AddTime($AddDays,$AddTime*3600,$GNum);
  345.             }
  346.          else
  347.             {$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ :\n".
  348.                         " - íѺπß½«ó¡«          ".AddTime($AddDays,$AddTime*3600,$GNum);
  349.             };
  350.         }
  351.      };
  352.   return $NextRun;
  353. };
  354.  
  355. sub AddTime
  356. {my ($adays,$atime,$GNum) = @_;
  357.  $mytime = (GetCurDays() + $adays)*24*60*60 + $GAMES{"Time$GNum"} + $atime;
  358.  $timestring = localtime($mytime);
  359.  return  $timestring;
  360. };
  361.