PHP-BRIEF 90
PasteStore.php Guest on 9th May 2020 09:50:43 AM
  1. <?php
  2.  
  3. class PasteStore{
  4.         private $devKey, $userKey;
  5.         public $private, $name, $expire, $code;
  6.         function __construct($devKey, $userKey=Null){
  7.  
  8.                 $this->setDevKey($devKey);
  9.                 $this->setUserKey($userKey);
  10.  
  11.  
  12.                 $this->setPrivate(1);
  13.                 $this->setExpire("N");
  14.                 $this->setName(uniqid());
  15.         }
  16.  
  17.         public function upload($postFields){
  18.                 $url                            = 'https://pastebin.com/api/api_post.php';
  19.                 $ch                             = curl_init($url);
  20.                 curl_setopt($ch, CURLOPT_POST, true);
  21.                 curl_setopt($ch, CURLOPT_POSTFIELDS,$postFields);
  22.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  23.                 curl_setopt($ch, CURLOPT_VERBOSE, 1);
  24.                 curl_setopt($ch, CURLOPT_NOBODY, 0);
  25.  
  26.                 $response                       = curl_exec($ch);
  27.                 $info                           = curl_getinfo($ch);
  28.                 if($info['http_code'] != 200){
  29.                         echo "Something went wrong.  Usually this is pastebin being 'under heavy load'.\n";
  30.                         print_r($info);
  31.                         die();
  32.                 }
  33.                 return $response;
  34.         }
  35.  
  36.         public function uploadAsAnon($code){
  37.                 if($this->getPrivate()==2){
  38.                         return "Cant upload privately as anon.\n";
  39.                         die();
  40.                 }
  41.                 return $this->upload('api_option=paste'
  42.                         .'&api_paste_private='.$this->getPrivate()
  43.                         .'&api_paste_name='.$this->getName()
  44.                         .'&api_paste_expire_date='.$this->getExpire()
  45.                         .'&api_dev_key='.$this->getDevKey()
  46.                         .'&api_paste_code='.urlencode($code));
  47.         }
  48.  
  49.         public function uploadAsUser($code){
  50.                 return $this->upload('api_option=paste&api_user_key='.$this->getUserKey()
  51.                         .'&api_paste_private='.$this->getPrivate()
  52.                         .'&api_paste_name='.$this->getName()
  53.                         .'&api_paste_expire_date='.$this->getExpire()
  54.                         .'&api_dev_key='.$this->getDevKey()
  55.                         .'&api_paste_code='.urlencode($code));
  56.         }
  57.  
  58.         /**
  59.          * @return mixed
  60.          */
  61.         public function getDevKey()
  62.         {
  63.                 return $this->devKey;
  64.         }
  65.  
  66.         /**
  67.          * @param mixed $devKey
  68.          * @return PasteStore
  69.          */
  70.         public function setDevKey( $devKey )
  71.         {
  72.                 $this->devKey = trim($devKey);
  73.  
  74.                 return $this;
  75.         }
  76.  
  77.         /**
  78.          * @return mixed
  79.          */
  80.         private function getUserKey()
  81.         {
  82.                 return $this->userKey;
  83.         }
  84.  
  85.         /**
  86.          * @param mixed $userKey
  87.          * @return PasteStore
  88.          */
  89.         public function setUserKey( $userKey )
  90.         {
  91.                 $this->userKey = trim($userKey);
  92.  
  93.                 return $this;
  94.         }
  95.  
  96.         /**
  97.          * @return mixed
  98.          */
  99.         public function getPrivate()
  100.         {
  101.                 return $this->private;
  102.         }
  103.  
  104.         /**
  105.          * @param mixed $private
  106.          * @return PasteStore
  107.          */
  108.         public function setPrivate( $private )
  109.         {
  110.                 $this->private = trim($private);
  111.  
  112.                 return $this;
  113.         }
  114.  
  115.         /**
  116.          * @return mixed
  117.          */
  118.         public function getName()
  119.         {
  120.                 return $this->name;
  121.         }
  122.  
  123.         /**
  124.          * @param mixed $name
  125.          * @return PasteStore
  126.          */
  127.         public function setName( $name )
  128.         {
  129.                 $this->name = urlencode($name);
  130.  
  131.                 return $this;
  132.         }
  133.  
  134.         /**
  135.          * @return mixed
  136.          */
  137.         public function getExpire()
  138.         {
  139.                 return $this->expire;
  140.         }
  141.  
  142.         /**
  143.          * @param mixed $expire
  144.          * @return PasteStore
  145.          */
  146.         public function setExpire( $expire )
  147.         {
  148.                 $this->expire = $expire;
  149.  
  150.                 return $this;
  151.         }
  152.  
  153.         /**
  154.          * @return mixed
  155.          */
  156.         public function getCode()
  157.         {
  158.                 return $this->code;
  159.         }
  160.  
  161.         /**
  162.          * @param mixed $code
  163.          * @return PasteStore
  164.          */
  165.         public function setCode( $code )
  166.         {
  167.                 $this->code = $code;
  168.  
  169.                 return $this;
  170.         }
  171. }
  172.  
  173. function getAllSTDIN(){
  174.         $stdin = '';
  175.         $fh = fopen('php://stdin', 'rb');
  176.         $read  = array($fh);
  177.         $write = NULL;
  178.         $except = NULL;
  179.         if ( stream_select( $read, $write, $except, 1 ) === 1 ) {
  180.                 while ($line = fgets( $fh )) {
  181.                         $stdin .= $line;
  182.                 }
  183.         }
  184.         fclose($fh);
  185.         return $stdin;
  186. }
  187.  
  188.  
  189. $data = getAllSTDIN();
  190.  
  191. $paste = new PasteStore(file_get_contents("devKey"), file_get_contents("userKey"));
  192.  
  193. /* No pipe, no arg */
  194. if ( empty( $data ) && $argc == 1 )
  195. {
  196.         echo "Pipe some data into me!\n";
  197.         die();
  198. }
  199.  
  200. /* No Pipe, Found an arg */
  201. if( empty( $data ) && $argc == 2 )
  202. {
  203.         $fh = fopen($argv[1], "rb");
  204.         $data = fread($fh, filesize($argv[1]));
  205.         fclose($fh);
  206.         if ( empty( $data ) )
  207.         {
  208.                 echo "Couldn't read file: ".$argv[1]."\n";
  209.                 die();
  210.         }
  211. }
  212.  
  213. /* Pipe, with an arg, using it as paste name */
  214. if( ! empty($data) && $argc == 2){
  215.         $paste->setName($argv[2]);
  216. }
  217.  
  218.  
  219. echo $paste->uploadAsUser($data)."\n";
  220.  
  221.  ?>

Paste is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.