!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/apex_tdfonline/php/3ros/shindig/src/social/service/   drwxr-xr-x
Free 14.38 GB of 61.93 GB (23.21%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     MediaItemHandler.php (9.23 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

class MediaItemHandler extends DataRequestHandler {
  private static 
$MEDIA_ITEM_PATH "/mediaitems/{userId}/{groupId}/{albumId}/{mediaItemId}";

  public function 
__construct() {
    
parent::__construct('media_item_service');
  }

  
/**
   * Deletes the media items. The URI structure: /{userId}/{groupId}/{albumId}/{mediaItemId}+
   */
  
public function handleDelete(RequestItem $requestItem) {
    
$this->checkService();
    
$requestItem->applyUrlTemplate(self::$MEDIA_ITEM_PATH);

    
$userIds $requestItem->getUsers();
    
$groupId $requestItem->getGroup();
    
$albumIds $requestItem->getListParameter('albumId');
    
$mediaItemIds $requestItem->getListParameter('mediaItemId');

    
HandlerPreconditions::requireSingular($userIds"userId must be singular value.");
    
HandlerPreconditions::requireNotEmpty($groupId"groupId must be specified.");
    
HandlerPreconditions::requireSingular($albumIds"albumId must be singular value.");

    
$this->service->deleteMediaItems($userIds[0], $groupId$albumIds[0], $mediaItemIds$requestItem->getToken());
  }

  
/**
   * Gets the media items. The URI structure: /{userId}/{groupId}/{albumId}/{mediaItemId}+
   */
  
public function handleGet(RequestItem $requestItem) {
    
$this->checkService();
    
$requestItem->applyUrlTemplate(self::$MEDIA_ITEM_PATH);

    
$userIds $requestItem->getUsers();
    
$groupId $requestItem->getGroup();
    
$albumIds $requestItem->getListParameter("albumId");
    
$mediaItemIds $requestItem->getListParameter("mediaItemId");

    
HandlerPreconditions::requireSingular($userIds"userId must be singular value.");
    
HandlerPreconditions::requireNotEmpty($groupId"groupId must be specified.");
    
HandlerPreconditions::requireSingular($albumIds"albumId must be singular value.");

    
$options = new CollectionOptions($requestItem);
    
$fields $requestItem->getFields();

    return 
$this->service->getMediaItems($userIds[0], $groupId$albumIds[0], $mediaItemIds$options$fields$requestItem->getToken());
  }

  
/**
   * Creates the media item. The URI structure: /{userId}/{groupId}/{albumId}.
   */
  
public function handlePost(RequestItem $requestItem) {
    
$this->checkService();
    
$requestItem->applyUrlTemplate(self::$MEDIA_ITEM_PATH);

    
$userIds $requestItem->getUsers();
    
$groupId $requestItem->getGroup();
    
$albumIds $requestItem->getListParameter('albumId');
    
$mediaItem $requestItem->getParameter('mediaItem');
    if (! isset(
$mediaItem)) {
      
// For the content upload REST api. The param is mediaType in the spec now. As there is no mediaType
      // field in MediaItem. It should be 'type'.
      
$type $requestItem->getParameter('mediaType');
      if (! isset(
$type)) {
        
$type $requestItem->getParameter('type');
      }
      if (
in_array($typeMediaItem::$TYPES)) {
        
$mediaItem = array('type' => $type);
        
// Only support title and description for now.
        
$mediaItem['title'] = $requestItem->getParameter('title');
        
$mediaItem['description'] = $requestItem->getParameter('description');
      }
    }

    
HandlerPreconditions::requireSingular($userIds"userId must be of singular value");
    
HandlerPreconditions::requireNotEmpty($groupId"groupId must be specified.");
    
HandlerPreconditions::requireSingular($albumIds"albumId must be sigular value.");
    
HandlerPreconditions::requireNotEmpty($mediaItem"mediaItem must be specified.");
    
$mediaItem['albumId'] = $albumIds[0];
    
$file = array();
    if (isset(
$mediaItem['url']) && substr($mediaItem['url'], 0strlen('@field:')) != '@field:') {
      
$file $this->processRemoteContent($mediaItem['url']);
    } else {
      
$file $this->processUploadedContent();
    }

    
$ret $this->service->createMediaItem($userIds[0], $groupId$mediaItem$file$requestItem->getToken());
    if (isset(
$file['tmp_name']) && file_exists($file['tmp_name'])) {
      @
unlink($file['tmp_name']);
    }
    return 
$ret;
  }

  
/**
   * Fetches the remote media content and saves it as a temporary file. Returns the meta data of the file.
   */
  
private function processRemoteContent($uri) {
    
$request = new RemoteContentRequest($uri);
    
$request->createRemoteContentRequestWithUri($uri);
    
$brc = new BasicRemoteContent();
    
$response $brc->fetch($request);
    if (
$response->getHttpCode() != 200) {
      throw new 
SocialSpiException("Failed to fetch the content from $uri code: " $response->getHttpCode(), ResponseError::$BAD_REQUEST);
    }
    if (!
$this->isValidContentType($response->getContentType())) {
      throw new 
SocialSpiException("The content type " $response->getContentType() .
        
" fetched from $uri is not valid."ResponseError::$BAD_REQUEST);
    }
    return 
$this->writeBinaryContent($response->getResponseContent(), $response->getContentType());
  }

  
/**
   * Checks the $_FILES and HTTP_RAW_POST_DATA variables to write the user uploaded content as a temporary file.
   * Returns the meta data of the file. 
   */
  
private function processUploadedContent() {
    
$file = array();
    if (! empty(
$_FILES)) {
      
// The RPC api supports to post the file using the content type 'multipart/form-data'.
      
$uploadedFile current($_FILES);
      if (
$uploadedFile['error'] != UPLOAD_ERR_OK) {
        if (
$uploadedFile['error'] == UPLOAD_ERR_INI_SIZE || $uploadedFile == UPLOAD_ERR_FORM_SIZE) {
          throw new 
SocialSpiException("The uploaded file is too large."ResponseError::$REQUEST_TOO_LARGE);
        } else {
          throw new 
SocialSpiException("Failed to upload the file."ResponseError::$BAD_REQUEST);
        }
      }
      if (!
$this->isValidContentType($uploadedFile['type'])) {
        throw new 
SocialSpiException("The content type of the uploaded file " $uploadedFile['type'] . " is not valid."ResponseError::$BAD_REQUEST); 
      }
      
$tmpName tempnam('''shindig');
      if (!
move_uploaded_file($uploadedFile['tmp_name'], $tmpName)) {
        throw new 
SocialSpiException("Failed to move the uploaded file."ResponseError::$INTERNAL_ERROR);
      }
      
$file['tmp_name'] = $tmpName;
      
$file['size'] = $uploadedFile['size'];
      
$file['type'] = $uploadedFile['type'];
      
$file['name'] = $uploadedFile['name'];
    } else if (isset(
$GLOBALS['HTTP_RAW_POST_DATA'])) {
      
// The REST api supports to post the file using the content type 'image/*', 'video/*' or 'audio/*'.
      
if ($this->isValidContentType($_SERVER['CONTENT_TYPE'])) {
        
$file $this->writeBinaryContent($GLOBALS['HTTP_RAW_POST_DATA'], $_SERVER['CONTENT_TYPE']);
      }
    }
    return 
$file;
  }
  
  
/**
   * Writes the binary content to a temporary file and returns the meta data of the file.
   */
  
private function writeBinaryContent(&$rawData$contentType) {
    
$tmpName tempnam('''shindig');
    
$fp fopen($tmpName'w');
    if (!
fwrite($fp$rawData)) {
      throw new 
SocialSpiException("Failed to write the uploaded file."ResponseError::$INTERNAL_ERROR);
    }
    
fclose($fp);
    return array(
'tmp_name' => $tmpName'size' => filesize($tmpName), 'name' => basename($tmpName), 'type' => $contentType);
  }
  
  
/**
   * Returns true if the given content type is valid.
   */
  
private function isValidContentType($contentType) {
    
$acceptedMediaPrefixes = array('image''video''audio');
    
$prefix substr($contentType0strpos($contentType'/'));
    return 
in_array($prefix$acceptedMediaPrefixes);
  }

  
/**
   * Updates the mediaItem. The URI structure: /{userId}/{groupId}/{albumId}/{mediaItemId}
   */
  
public function handlePut(RequestItem $requestItem) {
    
$this->checkService();
    
$requestItem->applyUrlTemplate(self::$MEDIA_ITEM_PATH);

    
$userIds $requestItem->getUsers();
    
$groupId $requestItem->getGroup();
    
$albumIds $requestItem->getListParameter('albumId');
    
$mediaItemIds $requestItem->getListParameter('mediaItemId');
    
$mediaItem $requestItem->getParameter('mediaItem');

    
HandlerPreconditions::requireSingular($userIds"userId must be singular value.");
    
HandlerPreconditions::requireNotEmpty($groupId"groupId must be specified.");
    
HandlerPreconditions::requireSingular($albumIds"albumId must be sigular value.");
    
HandlerPreconditions::requireSingular($mediaItemIds"mediaItemId must be sigular value.");
    
HandlerPreconditions::requireNotEmpty($mediaItem"mediaItem must be specified.");

    
$mediaItem['id'] = $mediaItemIds[0];
    
$mediaItem['albumId'] = $albumIds[0];
    return 
$this->service->updateMediaItem($userIds[0], $groupId$mediaItem$requestItem->getToken());
  }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.6202 ]--