コード例 #1
0
ファイル: Nfo.php プロジェクト: Jay204/nZEDb
 /**
  * Confirm this is an NFO file.
  *
  * @param string $possibleNFO The nfo.
  * @param string $guid        The guid of the release.
  *
  * @return bool               True on success, False on failure.
  *
  * @access public
  */
 public function isNFO(&$possibleNFO, $guid)
 {
     if ($possibleNFO === false) {
         return false;
     }
     // Make sure it's not too big or small, size needs to be at least 12 bytes for header checking. Ignore common file types.
     $size = strlen($possibleNFO);
     if ($size < 65535 && $size > 11 && !preg_match('/\\A(\\s*<\\?xml|=newz\\[NZB\\]=|RIFF|\\s*[RP]AR|.{0,10}(JFIF|matroska|ftyp|ID3))|;\\s*Generated\\s*by.*SF\\w/i', $possibleNFO)) {
         // File/GetId3 work with files, so save to disk.
         $tmpPath = $this->tmpPath . $guid . '.nfo';
         file_put_contents($tmpPath, $possibleNFO);
         // Linux boxes have 'file' (so should Macs), Windows *can* have it too: see GNUWIN.txt in docs.
         if (nzedb\utility\Utility::hasCommand('file')) {
             exec('file -b "' . $tmpPath . '"', $result);
             if (is_array($result)) {
                 if (count($result) > 1) {
                     $result = implode(',', $result[0]);
                 } else {
                     $result = $result[0];
                 }
             }
             // Check if it's text.
             if (preg_match('/(ASCII|ISO-8859|UTF-(8|16|32).*?)\\s*text/', $result)) {
                 @unlink($tmpPath);
                 return true;
                 // Or binary.
             } else {
                 if (preg_match('/^(JPE?G|Parity|PNG|RAR|XML|(7-)?[Zz]ip)/', $result) || preg_match('/[\\x00-\\x08\\x12-\\x1F\\x0B\\x0E\\x0F]/', $possibleNFO)) {
                     @unlink($tmpPath);
                     return false;
                 }
             }
         }
         // If above checks couldn't  make a categorical identification, Use GetId3 to check if it's an image/video/rar/zip etc..
         $getid3 = new getid3();
         $check = $getid3->analyze($tmpPath);
         @unlink($tmpPath);
         if (isset($check['error'])) {
             // Check if it's a par2.
             $par2info = new Par2Info();
             $par2info->setData($possibleNFO);
             if ($par2info->error) {
                 // Check if it's an SFV.
                 $sfv = new SfvInfo();
                 $sfv->setData($possibleNFO);
                 if ($sfv->error) {
                     return true;
                 }
             }
         }
     }
     return false;
 }
コード例 #2
0
ファイル: export_settings.php プロジェクト: Jay204/nZEDb
<?php

require_once dirname(__FILE__) . '/../../../www/config.php';
use nzedb\db\Settings;
// TODO make this platform agnostic
passthru("clear");
$pdo = new Settings();
if (!isset($argv[1]) || isset($argv[1]) && $argv[1] != "site" && $argv[1] != "tmux") {
    exit($pdo->log->error("\nThis script will output the setting of your site-edit or tmux-edit page to share with others. This will ouptut directly to web using pastebinit. This does not post any private information.\nTo run:\nphp export_settings.php [site, tmux] [tabbed, html, csv]\n"));
}
if (!nzedb\utility\Utility::hasCommand('pastebinit')) {
    exit($pdo->log->error("This script requires pastebinit, but it's not installed. Aborting.\n"));
}
switch (strtolower($argv[1])) {
    case 'site':
        $sql = "SELECT * FROM settings WHERE setting NOT LIKE '%key%' AND setting NOT LIKE '%google%' AND setting NOT LIKE '%seed%' AND setting NOT LIKE '%amazon%' AND setting != 'saburl' AND setting != 'adheader' AND setting != 'adbrowse' AND setting != 'addetail' AND setting != 'request_url'";
        break;
    case 'tmux':
        $sql = 'SELECT * FROM tmux';
        break;
    default:
        $sql = '';
}
if ($sql != '') {
    $output = '';
    $style = isset($argv[2]) ? strtolower($argv[2]) : '';
    switch ($style) {
        case 'html':
            $mask = "\t\t<tr><td>%s</td><td>%s</td></tr>\n";
            $output = "<table>\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Setting</th>\n\t\t\t<th>Value</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n";
            break;