Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Overview


Variables

VariableDescriptionDetails
passadmin passwordbase64encoded password
EMAIL_TO/EMAIL_FROM

SHOWRSS_FEED

TEMP_FOLDER

DEST_FOLDER


Scripts

In order to make it easier to run your php scripts, we can wrap them in a shell script like the following:

Code Block
#!/bin/sh

PHP=/mnt/ext/opt/apache/bin/php
SCRIPT_PATH=/share/homes/xxx/scripts/
cd $SCRIPT_PATH
$PHP $SCRIPT_PATH/showRss.php <ACTION>


showRss.php

Usage:

> php showRss.php <download/removeCompleted/listDownloads/removeAll>


Code Block
languagephp
titleshowrss.php
linenumberstrue
collapsetrue
<?php

//custom variables
$pass=urlencode("xxx_BASE64ENCODEDPASSWORD_xxx");
$EMAIL_TO="xxxx@xxx.com";
$EMAIL_FROM="xxxx@xxx.com";
$SHOWRSS_FEED="http://showrss.info/user/xxxx.rss?magnets=true&namespaces=true&name=clean&quality=hd&re=null

showrss.php

Code Block
<?php

$SHOWRSS_FEED="http://showrss.info/user/4480.rss?magnets=true&namespaces=true&name=clean&quality=hd&re=null";
$EMAIL_TO="jmehan@yahoo.com";
$EMAIL_FROM="jmehan@yahoo.com";
$EMAIL_SUBJECT="DOWNLOAD STARTED [NAS0] - ";
$EMAIL_SUBJECT_FAILED="FAILED TO DOWNLOAD [NAS0] - ";
$DB_FILE_NAME="db_showrss.json";
$TEMP_FOLDER="tv/tmp";
$DEST_FOLDER="tv/incoming";

$pass="bGlmZWlzV0Mx";//default variables
$baseURL="http://192.168.1.60:8080";


//login to NAS0
$sid = loginToQnap();

//get showRSS Feed
$xml = file_get_contents($SHOWRSS_FEED);
//echo $xml;

//process xml
$xml = simplexml_load_file($SHOWRSS_FEED);

$showArray = array();

$showdb = json_decode(file_get_contents($DB_FILE_NAME), true);
if($showdb==null){
  $showdb = array();
}


// loop through 
foreach ($xml->channel->item as $item) {
        $title =  $item->title;
	$link = $item->link;

        //echo "title=" . $title ."\n";

	//$pattern = "/S(\d{1,2})E(\d{1,2})/";
	$pattern = "/(\d{1,2})x(\d{1,2})/";
	preg_match($pattern, $title, $matches);
        if(sizeof($matches)>=3){
	  $season=intval($matches[1]);
          $episode=intval($matches[2]);	
 	  $show = trim(substr($title,0,strrpos($title,$matches[0])));	
 	  $showAndEpisode=sprintf("%s %02dx%02d", $show,$season,$episode);
	}else{
	  $show=(string)$title;
	  $showAndEpisode=(string)$title;
	  $season=0;
	  $episode=0;
        }

	//echo "SHOW: " . $show . "\n";
	//echo "SEASON: " . $season . "\n";
	//echo "EPISODE: " . $episode . "\n";
        
        $showInfo=array($showAndEpisode, $show, $season, $episode, $link);
	array_push($showArray, $showInfo);	

}

//echo "\n\n";

sort($showArray);
//print_r($showArray);




foreach ($showArray as $show) {



  //echo "show: " .  $show[0] . "\n";
  //add torrent

  $found =false;
  foreach($showdb as &$showEntry){
    $showName = $showEntry[0];

    if($showName==$show[1]){
      $found=true;
      //echo "Found " . $show[1] . " in showdb \n";
      $newSeason=$show[2];
      $newEpisode=$show[3];
      $lastSeason=$showEntry[1];   
      $lastEpisode=$showEntry[2]; 
      //echo "--- " . $lastSeason . "x" . $lastEpisode . " -> " .  $newSeason . "x" . $newEpisode ."\n";

      if($lastSeason == $newSeason && $newEpisode > $lastEpisode){
        if(downloadShow($show)){
  	  $showEntry[2]= $newEpisode;
          echo "U " . $showEntry[0] . " " . $showEntry[1] . "x" . $showEntry[2]localhost:8080";
$DB_FILE_NAME="db_showrss.json";
$EMAIL_SUBJECT_DOWNLOADED="DOWNLOADED - ";
$EMAIL_SUBJECT_STARTED="DOWNLOAD STARTED - ";
$EMAIL_SUBJECT_FAILED="FAILED TO DOWNLOAD - ";
$EMAIL_SUBJECT_REMOVED="CANCELLED DOWNLOAD - ";

//login
$sid=loginToQnap();

// Process Command Line
$cmd="download";
if ($argc > 1) {
  $cmd=$argv[1];
};

switch ($cmd) {
  case "download":
    echo "DOWNLOAD:\n";
    download();
    break;
  case "removeCompleted":
    echo "REMOVE COMPLETED:\n";
    removeCompleted();
    break;
  case "listDownloads":
    echo "LIST DOWNLOADS:\n";
    listDownloads();
    break;
  case "removeAll":
    echo "REMOVE ALL:\n";
    removeAll();
    break;
  default:
    showUsage();
    exit(1);
}

//done
exit(0);

//***************************************
// download
//***************************************
function download(){
  global $SHOWRSS_FEED, $DB_FILE_NAME, $baseURL, $sid, $EMAIL_TO, $EMAIL_FROM, $EMAIL_SUBJECT_DOWNLOADED;

  //get showRSS Feed
  $xml = file_get_contents($SHOWRSS_FEED);
  //echo $xml;
 
  //process xml
  $xml = simplexml_load_file($SHOWRSS_FEED);
 
  $showArray = array();
 
  $showdb = json_decode(file_get_contents($DB_FILE_NAME), true);
  if($showdb==null){
    $showdb = array();
  }
 
  // loop through
  foreach ($xml->channel->item as $item) {
    $title =  $item->title;
    $link = $item->link;
    //echo "title=" . $title ."\n";
 
    $pattern = "/(\d{1,2})x(\d{1,2})/";
    preg_match($pattern, $title, $matches);
    if(sizeof($matches)>=3){
      $season=intval($matches[1]);
      $episode=intval($matches[2]);
      $show = trim(substr($title,0,strrpos($title,$matches[0])));  
      $showAndEpisode=sprintf("%s %02dx%02d", $show,$season,$episode);
    }else{
      $show=(string)$title;
      $showAndEpisode=(string)$title;
      $season=0;
      $episode=0;
    }
 
    //echo "SHOW: " . $show . "\n";
    //echo "SEASON: " . $season . "\n";
    //echo "EPISODE: " . $episode . "\n";
        }else{ 
    $showInfo=array($showAndEpisode, $show, $season, $episode, $link);
  echo "F " . $showEntry[0] . " " . $showEntry[1] . "x" . $showEntry[2 array_push($showArray, $showInfo); 
  } //for
 
  sort($showArray);
  //print_r($showArray);
 
  foreach ($showArray as $show) {
 
    //echo "show: " .  $show[0] . "\n";
    //add torrent
 
  }
  $found =false;
   }elseif foreach($newSeason$showdb >as $lastSeason &$showEntry){
      $showName = $showEntry[0];
 
      if(downloadShow($show)){
	  $showEntry[1]= $newSeason;
	  $showEntry[2]= $newEpisode$showName==$show[1]){
        $found=true;
          //echo "U+Found " . $showEntry$show[01] . " in showdb \n";
 .  $showEntry[1] . "x"  . $showEntry$newSeason=$show[2];
 . "\n";
	}else{
	  echo "F+ " . $showEntry$newEpisode=$show[03] .;
 " " . $showEntry[1] . "x" . $lastSeason=$showEntry[21]; . "\n";
	}

        }else{$lastEpisode=$showEntry[2];
        // echo "WTF--- " . $lastSeason . "x" . $lastEpisode . " -> " .  $newSeason . "x" . $newEpisode ."\n";
      }
      break; 
 if($lastSeason == $newSeason }
&& $newEpisode }

 
  //set latest season/episode
  if ($found==false) {

> $lastEpisode){
          if(downloadShow($show)){
       echo  "A " . $show$showEntry[12]= $newEpisode;
 .  " " . $show[2] . "x" . $show[3] .  echo "\nU " ;
      $showDetails=array($show[1], $show[2], $show[3]);
 . $showEntry[0] . " " . $showEntry[1] . "x" . $showEntry[2] . "\n";
     array_push($showdb, $showDetails);
    }else{
            echo "F " . $show$showEntry[10] .  " " . $show$showEntry[21] . "x" . $show$showEntry[32] . "\n" ;

          }
     }
   


}

//save showdb to file

//print_r($showdb);

file_put_contents($DB_FILE_NAME,json_encode($showdb));

exit;

//***************************************
// downloadShow
//***************************************
function downloadShow($show){
    global $baseURL;

    $showAndEpisode =  $show[1] . }elseif ($newSeason > $lastSeason ){
          if(downloadShow($show)){
            $showEntry[1]= $newSeason;
            $showEntry[2]= $newEpisode;
            echo "U+ " . $showEntry[0] . " " . $show$showEntry[21] . "x" . $show$showEntry[3];
2] . "\n";
          }else{
          //  echo "D:F+ " . $showAndEpisode$showEntry[0] . "\n ";
 . $showEntry[1] . //echo "L: "x" . $show$showEntry[42] . "\n\n";

      $temp=$GLOBALS['TEMP_FOLDER'];
    $dest=$GLOBALS['DEST_FOLDER'] . "/" . $show[1]; }
        }else{
    
    $realDest = "/share/ echo "WTF " . $dest;
$lastSeason . "x" . if (!file_exists($realDest)) {
      mkdir($realDest, 0777, true)$lastEpisode . " -> " .  $newSeason . "x" . $newEpisode ."\n";
    }

     if($show[2]>0){ 
}
        $dest=$dest . "/Season " . $show[2]; break;
      }
    }
  
    ///echo "Dest: " . $dest . "\n";
set latest season/episode
    if ($found==false) {
 
    $realDest = "/share/" . $dest;
    if (!file_exists($realDest))  if(downloadShow($show)){
      mkdir($realDest, 0777, true);
    }


    $url = $baseURL . '/downloadstation/V4/Task/AddUrl?sid=' . $GLOBALS['sid']  . '&temp=' . urlencode($temp) . '&move=' . urlencode($dest) . '&url=' . urlencode($show[4]); 
    //echo "URL: " . $url . "\n";
    $resp=file_get_contents($url);
    //echo $resp;
    if($resp=='{"error":0}'){
      //sendNotification($showAndEpisode,true);
      return true;
    }else{
      sendNotification($showAndEpisode,fail);
      return false;
    }


 echo "A " . $show[1] .  " " . $show[2] . "x" . $show[3] . "\n" ;
        $showDetails=array($show[1], $show[2], $show[3]);
        array_push($showdb, $showDetails);
      }else{
        echo "F " . $show[1] .  " " . $show[2] . "x" . $show[3] . "\n" ;
      }
    }
   
  }
 
  //save showdb to file
  //print_r($showdb);
 
  file_put_contents($DB_FILE_NAME,json_encode($showdb));

}

//***************************************
// sendNotificationdownloadShow
//***************************************
function sendNotificationdownloadShow($showAndEpisode,$success$show){
    if(success == true){
 global $baseURL,$sid, $TEMP_FOLDER, $DEST_FOLDER;
 
    $showAndEpisode $subject=  $show[1] .  "\ "" . $GLOBALS['EMAIL_SUBJECT'$show[2] . $showAndEpisode"x" . "\""$show[3];
    }else{
      $subject= "\"" . $GLOBALS['EMAIL_SUBJECT_FAILED']//echo "D: " . $showAndEpisode . "\n"";
    }
    $cmd= getCwd() . "/sendEmail.sh " . $subject  . " " . $GLOBALS['EMAIL_FROM'] . " " . $GLOBALS['EMAIL_TO'] . " " . $subject;
    //echo "cmd=" . $cmd . "\n";
    shell_exec($cmd);

}

//***************************************
// endsWith
//***************************************
function endsWith($haystack, $needle)
{
    $length = strlen($needle)//echo "L: " . $show[4] . "\n\n";
 
    $temp=$TEMP_FOLDER;
    $dest=$DEST_FOLDER . "/" . $show[1];
     
    $realDest = "/share/" . $dest;
    if (!file_exists($realDest)) {
      mkdir($realDest, 0777, true);
    }
 
    if($show[2]>0){
      $dest=$dest . "/Season " . $show[2];
    }
    //echo "Dest: " . $dest . "\n";
 
    $realDest = "/share/" . $dest;
    if ($length == 0(!file_exists($realDest)) {
      mkdir($realDest,  return true0777, true);
    }
 
    return (substr($haystack, -$length) === $needle);
}

//***************************************
// getSid
//***************************************
function getSid($xml){

    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $xml, $values, $tags);
    xml_parser_free($parser);
    //print_r($values);
 
    // loop through the structures
    foreach ($values as $val) {
      $tag=$val['tag'];
      $value=$val['value'];
      if($tag=="authSid"){
  $url = $baseURL . '/downloadstation/V4/Task/AddUrl?sid=' . $sid  . '&temp=' . urlencode($temp) . '&move=' . urlencode($dest) . '&url=' . urlencode($show[4]);
    //echo "URL: " . $url . "\n";
    $resp=file_get_contents($url);
    //echo $resp;
    if($resp=='{"error":0}'){
      //sendNotification($showAndEpisode,"started"); 
      return true;
    }else{
      sendNotification($showAndEpisode,"failed"); 
      return $valuefalse;
      }
} 
      //echo "tag=" . $tag . ", value=" . $value . "\n";
    }

}

//***********

//***************************************
// loginToQnapsendNotification
//***************************************
function loginToQnapsendNotification($showAndEpisode,$status){
  global $baseURL;

  $resp = file_get_contents($baseURL . '/cgi-bin/authLogin.cgi?user=admin&pwd=bGlmZWlzV0Mx');
  //echo $resp;

  $sid=getSid($resp);
  //echo "sid='" . $sid . "'\n";

  $resp=file_get_contents($baseURL . '/downloadstation/V4/Misc/Login?sid=' . $sid);

  return $sid;
}

?>


removeTorrents.php

Code Block
<?php

//$EMAIL_TO="jmehan@yahoo.com";
$EMAIL_TO="jennymehan@yahoo.com,jmehan@yahoo.com";
$EMAIL_FROM="jmehan@yahoo.com";
$EMAIL_SUBJECT="TORRENT DOWNLOADED - ";

$pass="bGlmZWlzV0Mx";
$baseURL="http://192.168.1.60:8080";

//login
$resp=file_get_contents($baseURL . '/cgi-bin/authLogin.cgi?user=admin&pwd=' . $pass);
//echo $resp;

$sid=getSid($resp);
//echo "sid='" . $sid . "'\n";

$resp=file_get_contents($baseURL . '/downloadstation/V4/Misc/Login?sid=' . $sid);
//echo $resp . "\n";


$resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=25&status=completed&from=0&to=25&sid=' . $sid);
//echo $resp . "\n";


$json = json_decode($resp);
$data = $json->{'data'};
//var_dump($data);
file_put_contents("/var/log/download.log",$json,FILE_APPEND | LOCK_EX);
//echo "CWD: " . getCwd() . "\n";

foreach($data as $torrent){
  $name= $torrent->{'source_name'};
  $hash=$torrent->{'hash'};
  //echo "torrent: " . $name . "\n";
  //echo "hash: " . $hash . "\n";

  if(endsWith($name,".torrent")){
  //  echo "torrent file - just delete\n";
  }else{
    //echo "file - notify completion\n";
    $subject= "\"" . $EMAIL_SUBJECT . $name . "\""; 
    $cmd= getCwd() . "/sendEmail.sh " . $subject  . " " . $EMAIL_TO . " " . $EMAIL_FROM . " " . $subject;
    //echo "cmd=" . $cmd . "\n";

    shell_exec($cmd); 
  }

  //remove torrent 
  $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Remove?clean=0&hash=' . $hash . '&sid=' . $sid);

  //echo $resp ."\n";
  //break;

}

//***************************************
// endsWith
//***************************************
function endsWith($haystack, $needle)
{
    $length = strlen($needle);
    if ($length == 0) {
        return true;
    }

    return (substr($haystack, -$length) === $needle);
}

//***************************************
// getSid
//***************************************
function getSid($xml){

    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $xml, $values, $tags);
    xml_parser_free($parser);
    //print_r($values);
 
    // loop through the structures
    foreach ($values as $val) {
      $tag=$val['tag'];
      $value=$val['value'];
      if($tag=="authSid"){
        return $value;
      } 
      //echo "tag=" . $tag . ", value=" . $value global $EMAIL_SUBJECT_DOWNLOADED, $EMAIL_SUBJECT_STARTED,$EMAIL_SUBJECT_REMOVED, $EMAIL_SUBJECT_FAILED, $EMAIL_FROM, $EMAIL_TO;

    if($status == "started"){
      $subject= "\"" . $EMAIL_SUBJECT_STARTED . $showAndEpisode . "\"";
    }else if($status == "downloaded"){
      $subject= "\"" . $EMAIL_SUBJECT_DOWNLOADED . $showAndEpisode . "\"";
    }else if($status == "failed"){
      $subject= "\"" . $EMAIL_SUBJECT_FAILED . $showAndEpisode . "\"";
    }else if($status == "removed"){
      $subject= "\"" . $EMAIL_SUBJECT_REMOVED . $showAndEpisode . "\"";
    }else{
      $subject= "\"" . "ERROR " . $showAndEpisode . "\"";
    }

    $cmd= getCwd() . "/sendEmail.sh " . $subject  . " " . $EMAIL_FROM . " " . $EMAIL_TO . " " . $subject;
    shell_exec($cmd);
 
}

//***************************************
// removeCompleted
//***************************************
function removeCompleted(){
  global $baseURL, $sid, $EMAIL_TO, $EMAIL_FROM, $EMAIL_SUBJECT_DOWNLOADED;
  
  $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=25&status=completed&from=0&to=25&sid=' . $sid);
  //echo $resp . "\n";
 
   }
}
?>

showTorrents.php

Code Block
<?php

$EMAIL_TO="jmehan@yahoo.com";
$EMAIL_FROM="jmehan@yahoo.com";
$EMAIL_SUBJECT="TORRENT DOWNLOADED [NAS0] - ";

$pass="bGlmZWlzV0Mx";
$baseURL="http://192.168.1.60:8080";

//login
$resp = file_get_contents($baseURL . '/cgi-bin/authLogin.cgi?user=admin&pwd=' . $pass);
//echo $resp;

$sid=getSid($resp);
//echo "sid='" . $sid . "'\n";
 
$resp=file_get_contents($baseURL . '/downloadstation/V4/Misc/Login?sid=' . $sid);
//echo $resp$json = json_decode($resp);
  $data = $json->{'data'};
  //var_dump($data);
  file_put_contents("/var/log/download.log",$json,FILE_APPEND | LOCK_EX);
  //echo "CWD: " . getCwd() . "\n";

  if(count($data)==0){
    echo "- no completed downloads\n";
  }else{
 
    foreach($data as $torrent){
      $name= $torrent->{'source_name'};
      $hash=$torrent->{'hash'};
      echo "removing torrent: " . $name . "\n";


$resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=100&status=all&from=0&to=100&sid=' . $sid);
echo $resp . "\n";


$json = json_decode($resp);
$data = $json->{'data'};
//var_dump($data);

//echo "CWD: " . getCwd() . "\n";

foreach($data as $torrent){
  $name= $torrent->{'source_name'};
  echo "torrent: " . $name . "\n";

}

//***************************************
// endsWith
//********      //echo "hash: " . $hash . "\n";
 
      if(endsWith($name,".torrent")){
      //  echo "torrent file - just delete\n";
      }else{
        sendNotification($name,"downloaded"); 
      }
 
      //remove torrent
      $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Remove?clean=0&hash=' . $hash . '&sid=' . $sid);
    }
  }
}
//*******************************
function endsWith($haystack, $needle)
{
    $length = strlen($needle);
    if ($length == 0) {
        return true;
    }

    return (substr($haystack, -$length) === $needle);
}

//********
// removeAll
//****************************************
// getSid
//***************************************
function getSid($xml){

    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $xml, $values, $tags);
    xml_parser_free($parser);
    //print_r($values);
 
    // loop through the structures
    foreach ($values as $val) {
      $tag=$val['tag']
function removeAll(){
  global $baseURL, $sid, $EMAIL_TO, $EMAIL_FROM, $EMAIL_SUBJECT_DOWNLOADED;

  $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=100&status=all&from=0&to=100&sid=' . $sid);
 
  $json = json_decode($resp);
  $data = $json->{'data'};

  if(count($data)==0){
    echo "- no downloads\n";
  }else{ 
    foreach($data as $torrent){
      $name= $torrent->{'source_name'};
      $hash=$torrent->{'hash'};
 
      if(endsWith($name,".torrent")){
      //  echo "torrent file - just delete\n";
      }else{
        echo "- " . $name . "\n";
      $value=$val['value'];
  //echo "file -  if($tag=="authSid"){notify completion\n";
        return $value;//sendNotification($name,"removed"); 
      }
 
      //echo "tag=" . $tag . ", value=" . $value . "\n";
    }

}


?>


removeAllTorrents.php

Code Block
<?php

$EMAIL_TO="j****@yahoo.com";
$EMAIL_FROM="j****@yahoo.com";
$EMAIL_SUBJECT="TORRENT DOWNLOADED [NAS] - ";

$pass="xxx";
$baseURL="http://xxx.xxx.xxx.xxx:8080";

//login
$resp = file_get_contents($baseURL . "/cgi-bin/authLogin.cgi?user=admin&pwd=" . $pass );
$sid=getSid($resp);
 
$resp=file_get_contents($baseURL . '/downloadstation/V4/Misc/Login?sid=' . $sid);

remove torrent
      $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Remove?clean=0&hash=' . $hash . '&sid=' . $sid);
    }
  }
}

//***************************************
// listDownloads
//***************************************
function listDownloads(){
  global $baseURL, $sid;

  $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=100&status=all&from=0&to=100&sid=' . $sid);


$json = json_decode($resp);
$data = $json->{'data'};

foreach($data as $torrent){
  $name= $torrent->{'source_name'};
  $hash=$torrent->{'hash'};

  if(endsWith($name,".torrent")){
  //  echo "torrent file - just delete\n";
  }else  //echo $resp . "\n";
 
  $json = json_decode($resp);
  $data = $json->{'data'};

  if(count($data)==0){
    //echo "file - notifyno completiondownloads\n";
  }else{  $subject= "\"" . $EMAIL_SUBJECT . $name . "\""; 

    foreach($data as $torrent){
      $cmd= getCwd() . "/sendEmail.sh " . $subject  . " " . $EMAIL_FROM . "$name= $torrent->{'source_name'};
      echo "torrent: " . $EMAIL_TO$name . "\n";
 "  . $subject;}
    //echo "cmd=" . $cmd . "\n";

    //shell_exec($cmd); 
  }

  //remove torrent 
  $resp=file_get_contents(}
}

//***************************************
// loginToQnap
//***************************************
function loginToQnap(){
  global $baseURL, $pass;
 
  //login
  $vars = 'user=admin&pass=' . $pass;
  $ch = curl_init( $baseURL . '/downloadstation/V4/Task/Remove?clean=0&hash=' . $hash . '&sid=' . $sid);

  //echo $resp ."\n";
  //break;

}

//***************************************
// endsWith
//***************************************
function endsWith($haystack, $needle)
{
    $length = strlen($needle);
    if ($length == 0) {
        return true;
    }

    return (substr($haystack, -$length) === $needle)Misc/Login' );
  curl_setopt( $ch, CURLOPT_POST, 1);
  curl_setopt( $ch, CURLOPT_POSTFIELDS, $vars);
  curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt( $ch, CURLOPT_HEADER, 0);
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
  $resp = curl_exec( $ch );
  //echo $resp;
 
  $sid = json_decode($resp)->{'sid'};
  //echo "sid='" . $sid . "'\n";
 
  return $sid;
}

//***************************************
// getSidendsWith
//***************************************
function getSid($xml){
endsWith($haystack, $needle)
{
    $parser$length = xml_parser_createstrlen($needle);
    if xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING,($length == 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); {
        return true;
    }
    xml_parse_into_struct($parser, $xml, $values, $tags);
    xml_parser_free($parser);
    //print_r($values);
 
    // loop through the structures
    foreach ($values as $val) {
      $tag=$val['tag'];
      $value=$val['value'];
      if($tag=="authSid"){
        return $value;
      } 
      //echo "tag=" . $tag . ", value=" . $value . "\n";
    }

}


?>


return (substr($haystack, -$length) === $needle);
}

//******************************************
// showUsage
//******************************************
function showUsage(){
  global $argv;
  echo "Usage: php " . $argv[0] . " download/removeCompleted/listDownloads/removeAll\n";
}

?>


sendEmail.sh

Code Block
languagebash
titlesendEmail.sh
collapsetrue
#!/bin/sh

SUBJECT=$1
TO=$2
FROM=$3
CONTENT=$4

echo "Subject: $SUBJECT"
echo "From: $FROM"
echo "To: $TO"
echo "CONTENT $CONTENT"

echo "Subject: $SUBJECT" > mail.txt
echo "From: $FROM" >> mail.txt
echo "To: $TO" >> mail.txt
echo "" >> mail.txt
echo $CONTENT >> mail.txt

cat mail.txt |sendmail -t
#rm mail.txt