!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_led/php/vendor/siu/arai-cli/src/SIU/AraiCli/Services/Registry/   drwxrwxr-x
Free 15.59 GB of 61.93 GB (25.17%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     Registry.php (9.66 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * Created by IntelliJ IDEA.
 * User: ablanco
 * Date: 22/06/15
 * Time: 15:24.
 */
namespace SIU\AraiCli\Services\Registry;

use 
GuzzleHttp\Client;
use 
GuzzleHttp\Exception\ClientException;
use 
SIU\AraiCli\Config;
use 
SIU\AraiJsonParser\AraiJsonManager;
use 
SIU\AraiJsonParser\AraiPackage;

class 
Registry
{
    
/**
     * @var Client
     */
    
protected $httpClient;

    
/**
     * @var Config
     */
    
protected $config;

    
/**
     * @var AraiJsonManager
     */
    
protected $jsonManager;

    
/**
     * @var AraiJsonUtil
     */
    
protected $jsonUtil;

    public function 
__construct(Config $configClient $httpClientAraiJsonManager $jsonManagerAraiJsonUtil $jsonUtil)
    {
        
$this->config $config;
        
$this->httpClient $httpClient;
        
$this->jsonManager $jsonManager;
        
$this->jsonUtil $jsonUtil;
    }

    
/**
     * Parsea el archivo .lock y lo devuelve como un AraiPackage. Si el archivo .lock no existe se dispara una \Exception
     * @return AraiPackage
     * @throws \Exception
     */
    
public function getPackage()
    {
        if (!
$this->jsonUtil->lockFileExists()) {
            throw new \
Exception('No se puede obtener el paquete desde registry porque la aplicación actual no fue registrada');
        }
        return 
$this->jsonUtil->parseLockFile();
    }

    
/**
     * Recibe el $appName (eg: app:siu/mapuche) y lo transforma en una clave única a partir del instance name de paquete.
     *  * Las '/' se reemplazan por '-', tanto en $appName como en $instanceName
     *  * El separador entre instanceName y appName es '.'
     * @param string $appName.
     * @param string $instanceName por defecto es el instance name del sistema desde donde se invocó este método.
     * @return string clave única de la app dentro del paquete. Si appName == 'siu/mapuche' e instanceName == 'mapuche_1'
     * el id generado tendrá la forma: "mapuche_1.siu-mapuche"
     */
    
public function generateAppUniqueId($appName$instanceName null)
    {
        if (
is_null($instanceName)) {
            
$instanceName $this->getPackage()->getAraiRemoteInstanceName();
        }
        if (
strpos($appName':')) { // si viene con prefijo se saca
            
$appName explode(":"$appName2)[1];
        }

        list(
$instanceName$appName) = str_replace('/''-', [$instanceName$appName]);
        return 
$instanceName.'.'.$appName;
    }

    
/**
     * @return array con las claves: 'registrada', 'url', 'nombre-instancia', 'ultima-actualizacion'.
     * Notar que si 'registrada' es false el resto de los índices no están definidos.
     * 'ultima-actualizacion' está en formato DATE_ISO8601
     */
    
public function getStatus()
    {
        
$registrada $this->jsonUtil->lockFileExists();
        if (!
$registrada) {
            return [
'registrada' => false];
        }

        
$package $this->jsonUtil->parseLockFile();

        return [
            
'registrada' => true,
            
'url' => $package->getAraiRemoteUrl(),
            
'nombre-instancia' => $package->getAraiRemoteInstanceName(),
            
'ultima-actualizacion' => $package->getAraiRemoteLastSync()
        ];


    }

    protected function 
getMensajeExcepcion(ClientException $e)
    {
        try {
            
$response $e->getResponse();
            if (
$response != null) {
                
$body $e->getResponse()->getBody();
                
$json json_decode($body->getContents(), true);
                if (isset(
$json['descripcion'])) {
                    return 
$json['descripcion'];
                }
            }
        } catch (\
Exception $jsonException) {
        }

        return 
'';
    }

    
/**
     * @param string $type puede ser vacío, 'api', 'service', 'app'
     * @return array de dos niveles. 1er nivel paquete, la clave es el instanceName. El 2do nivel es la provision, la
     * clave es la featureName
     * @throws RegistryException
     */
    
public function queryProvisions($type '')
    {
        
$endpoint 'provisions';
        try {
            
$query = [];
            if (
$type !== '') {
                
$query = [ 'type' => $type ];
            }
            
/*
             * @var \Psr\Http\Message\ResponseIntere
             */
            
$response $this->httpClient->get($endpoint, [
                
'query' => $query,
            ]);
            
$raw json_decode($response->getBody()->getContents(), true);
            
$result = [];
            foreach (
$raw as $provision) {
                
$result[$provision['package_instance_name']][$provision['feature_name']] =
                    
$this->jsonManager->createProvision(json_decode($provision['properties'], true));
            }

            return 
$result;
        } catch (
ClientException $e) {
            
$mensajeExtra $this->getMensajeExcepcion($e);
            switch (
$e->getCode()) {
                case 
401:
                    throw new 
RegistryException('Las credenciales provistas para Arai Registry son inválidas. '.$mensajeExtra$e->getCode());
                case 
409:
                    throw new 
RegistryException('La aplicación que se intenta registrar ya se encuentra registrada en Arai. '.$mensajeExtra$e->getCode());
                case 
422:
                    throw new 
RegistryException('Problemas al registrar la aplicacion. '.$mensajeExtra$e->getCode());
                default:
                    throw new 
RegistryException('Ocurrió un error al intentar registrar la aplicación. '.$mensajeExtra$e->getCode());
            }
        }
    }

    
/**
     * @return HooksInterface $hooksScript
     */
    
protected function getHookObject($clase)
    {
        return new 
$clase;
    }

    
/**
     * @param AraiPackage $p
     */
    
protected function triggerPostHooks(AraiPackage $p)
    {
        
$hooksScript $this->getHookObject($p->getHooksScript());

        foreach (
$p->getConsumeList() as $c) {
            
$hooksScript->postConsume($c);
        }

        foreach (
$p->getProvideList() as $provision) {
            
$hooksScript->postProvide($provision);
        }
    }

    
/**
     * @param string $appJson el json de la aplicación que se quiere registrar
     *
     * @return AraiPackage
     *
     * @throws RegistryException
     */
    
public function register($appJson)
    {
        try {
            
/*
             * @var \Psr\Http\Message\ResponseInterface
             */
            
$response $this->httpClient->post("packages", [
                
'body' => $appJson,
            ]);

            
$p $this->jsonManager->loadFromString($response->getBody()->getContents());
            
$this->jsonUtil->writeAraiLock($p);
            
$this->triggerPostHooks($p);
            
$this->getHookObject($p->getHooksScript())->postAdd();
            return 
$p;
        } catch (
ClientException $e) {
            
$mensajeExtra $this->getMensajeExcepcion($e);
            switch (
$e->getCode()) {
                case 
401:
                    throw new 
RegistryException('Las credenciales provistas para Arai Registry son inválidas. '.$mensajeExtra$e->getCode());
                case 
409:
                    throw new 
RegistryException('La aplicación que se intenta registrar ya se encuentra registrada en Arai. '.$mensajeExtra$e->getCode());
                case 
422:
                    throw new 
RegistryException('Problemas al registrar la aplicacion. '.$mensajeExtra$e->getCode());
                default:
                    throw new 
RegistryException('Ocurrió un error al intentar registrar la aplicación. '.$mensajeExtra$e->getCode());
            }
        }
    }

    
/**
     * @param $appJson
     * @return AraiPackage
     * @throws RegistryException
     * @throws \Exception
     */
    
public function sync($appJson)
    {
        try {
            
$response $this->httpClient->put("packages", [
                
'body' => $appJson,
            ]);

            
$p $this->jsonManager->loadFromString($response->getBody()->getContents());
            
$this->triggerPostHooks($p);
            
$this->getHookObject($p->getHooksScript())->postSync();
            return 
$p;
        } catch (
ClientException $e) {
            
$mensajeExtra $this->getMensajeExcepcion($e);
            switch (
$e->getCode()) {
                case 
200:
                case 
204:
                    break;
                case 
404:
                    throw new 
RegistryException('La aplicación que se quiere sincronizar no está registrada en el servidor de Arai. '.$mensajeExtra$e->getCode());
                default:
                    throw new 
RegistryException('Ocurrió un error al intentar sincronizar. '.$mensajeExtra$e->getCode());
            }
        }
    }

    
/**
     * @param $appJson
     *
     * @return mixed
     *
     * @throws RegistryException
     */
    
public function unregister($appJson)
    {
        try {
            
$response $this->httpClient->delete('packages', [
                
'body' => $appJson
            
]);

            return 
$response->getBody()->getContents();
        } catch (
ClientException $e) {
            
$mensajeExtra $this->getMensajeExcepcion($e);
            switch (
$e->getCode()) {
                case 
200:
                case 
204:
                    break;
                case 
404:
                    throw new 
RegistryException('La aplicación que se quiere desregistrar no está registrada en el servidor de Arai. '.$mensajeExtra$e->getCode());
                case 
422:
                    throw new 
RegistryException('Alguna feature de la aplicación ya existe en Arai con el mismo nombre. '.$mensajeExtra$e->getCode());
                default:
                    throw new 
RegistryException('Ocurrió un error al intentar registrar la aplicación. '.$mensajeExtra$e->getCode());
            }
        }

    }

}

:: 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.3263 ]--