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


Viewing file:     wsf_wsdl_client.php (17.61 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/*
 * Copyright (c) 2005-2010 WSO2, Inc. http://wso2.com
 *
 * Licensed 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.
 */

/**
 * Return response parameters as a DOM node.
 * @param DomNode $sig_node Node points to the signature element in sigmodel  
 * @return DomNode Cloned DomNode
 */
function wsf_get_response_parameters(DomNode $sig_node)
{
    
$signature_child_list $sig_node->childNodes;
    foreach(
$signature_child_list as $signature_child) {
        if(
$signature_child->tagName == WSF_RETURNS) {
            
$clone_return_node $signature_child->cloneNode(TRUE);
            return 
$clone_return_node;
        }
    }
}


/**
 * Creates the payload to be passed to C level.
 * @param DomNode $sig_node the sig node of the operation
 * @param Bool $is_doc true if doc-lit or false if rpc style
 * @param string $operation_name Name of the operation to be invoked
 * @param int $arg_count No of arguments in the function
 * @param array $argument array of arguments of the function to be invoked
 * @param array $classmap array of class mappings for complex types 
 * @param DomNode $schema_node schema for the given WSDL
 */
function wsf_create_payload(DomNode $sig_node$is_doc$operation_name,
            
$arg_count$arguments, array $classmap NULL$mtom_on, &$attachment_map)
{
    require_once(
'wsf_wsdl_consts.php');
    require_once(
'wsf_wsdl_util.php');
    require_once(
'wsf_wsdl_serialization.php');

    
// if the sig is an immediate simple type then
    // it is expected to have is_wrapper = TRUE
    
$is_wrapper FALSE;
    
$params_node NULL;

    
// starting prefix index to build the xml
    
$prefix_i 2;
   
    if(
$sig_node) {
        
$params_node $sig_node->firstChild;
        if(
$params_node && $params_node->localName == WSF_PARAMS) {
            if(
$params_node->hasAttributes()) {
                
/* Wrapper element of the request operation */
                
$sig_attrs $params_node->attributes;
                
$ele_name NULL;
                
$ele_ns NULL;
                if(
$sig_attrs->getNamedItem(WSF_WRAPPER_ELEMENT)) {
                    
$ele_name $sig_attrs->getNamedItem(WSF_WRAPPER_ELEMENT)->value;
                }
                if(
$sig_attrs->getNamedItem(WSF_WRAPPER_ELEMENT_NS)) {
                    
$ele_ns $sig_attrs->getNamedItem(WSF_WRAPPER_ELEMENT_NS)->value;
                }
                
$is_wrapper TRUE;
                            
            }
            else {
                
/* No wrapper element in the request */
                
$ele_ns NULL;
                
$ele_name NULL;

                
/* check for the only param target-namespace */
                
$only_param $params_node->firstChild;
                
$sig_attrs $only_param->attributes;
                
                if(
$sig_attrs->getNamedItem(WSF_TARGETNAMESPACE)) {
                    
$ele_ns $sig_attrs->getNamedItem(WSF_TARGETNAMESPACE)->value;
                }

                if(
$sig_attrs->getNamedItem(WSF_NAME)) {
                    
$ele_name $sig_attrs->getNamedItem(WSF_NAME)->value;
                }
            }
        }
    }

    if(
$params_node == NULL) {
        return 
NULL;
    }
                                
    
    
ws_log_write(__FILE____LINE__WSF_LOG_DEBUG"element name: $ele_name");

    
// the returning payload..
    
$payload_str NULL;

    
/*if(array_key_exists(0, $arguments) && $arguments[0] === NULL) {
        $payload_str = NULL;
    }*/ 
    
if(
        (
$ele_name == NULL || $ele_name == "#any")) {
        
$payload_str NULL;
    }
    else if(
$is_doc == TRUE) {

        
$payload_dom = new DOMDocument('1.0''iso-8859-1');
        
$element $payload_dom->createElementNS($ele_nsWSF_STARTING_NS_PREFIX.":".$ele_name);
        if(!
array_key_exists(0$arguments)) {
            
$payload_dom->appendChild($element);
            
$payload_node $payload_dom->firstChild;
            
$clone_node $payload_node->cloneNode(TRUE);


            
$payload_str $payload_dom->saveXML($clone_node);
        }
        else if(
is_object($arguments[0])) {

            
/* this is class map support */
            
$new_obj $arguments[0];
            
$namespace_map = array($ele_ns => WSF_STARTING_NS_PREFIX);
            
wsf_create_payload_for_class_map($payload_dom$params_node$element$element$new_obj$classmap,
                                                  
$prefix_i$namespace_map$mtom_on$attachment_map);
            
$payload_dom->appendChild($element);
            
$payload_node $payload_dom->firstChild;
            
$clone_node $payload_node->cloneNode(TRUE);

            
$payload_str $payload_dom->saveXML($clone_node);
        }
        else {
            
/* array type implementation */
            
$namespace_map = array($ele_ns => WSF_STARTING_NS_PREFIX);

            
wsf_create_payload_for_array($payload_dom$params_node$element$element$arguments[0],
                                                   
$prefix_i$namespace_map$mtom_on$attachment_map);
            
$payload_dom->appendChild($element);
            
$payload_node $payload_dom->firstChild;
            
$clone_node $payload_node->cloneNode(TRUE);

            
$payload_str $payload_dom->saveXML($clone_node);
        }
    }
    else {
        
$payload_dom = new DOMDocument('1.0''iso-8859-1');
        
$element $payload_dom->createElementNS($ele_nsWSF_STARTING_NS_PREFIX.":".$ele_name);
        
$element->setAttribute("xmlns:xsi""http://www.w3.org/2001/XMLSchema-instance");
        
$element->setAttribute("xmlns:xsd""http://www.w3.org/2001/XMLSchema");


        if(
is_object($arguments[0])) {
            
$new_obj $arguments[0];
            
            
$namespace_map = array($ele_ns => WSF_STARTING_NS_PREFIX);
            
// currently we handle both rpc and doc lit sameway
            
wsf_create_payload_for_class_map($payload_dom$params_node$element$element$new_obj$classmap,
                                                           
$prefix_i$namespace_map$mtom_on$attachment_map);
            
$payload_dom->appendChild($element);
            
$payload_node $payload_dom->firstChild;
            
$clone_node $payload_node->cloneNode(TRUE);
            
$payload_str $payload_dom->saveXML($clone_node);
        }
        else {
            
/* array type implementation */
            
            
$namespace_map = array($ele_ns => WSF_STARTING_NS_PREFIX);

            
wsf_create_payload_for_array($payload_dom$params_node$element$element$arguments[0],
                                                           
$prefix_i$namespace_map$mtom_on$attachment_map);

            
$payload_dom->appendChild($element);
            
$payload_node $payload_dom->firstChild;
            
$clone_node $payload_node->cloneNode(TRUE);
            
$payload_str $payload_dom->saveXML($clone_node);
        }
    }
    
    
ws_log_write(__FILE____LINE__WSF_LOG_DEBUG"test: ".$payload_str);

    
$binding_details_node NULL;
    
$binding_details_node $sig_node->nextSibling;

    while((
$binding_details_node && $binding_details_node->nodeType == XML_ELEMENT_NODE) &&
            
$binding_details_node->nodeName != WSF_BINDINDG_DETAILS) {
        
$binding_details_node $binding_details_node->nextSibling;
    }

    
$input_headers = array();

    
$argument_index 1;
    if(
$binding_details_node) {
        
$binding_details_childs $binding_details_node->childNodes;

        foreach(
$binding_details_childs as $binding_details_child) {
            if(
$binding_details_child->nodeType == XML_ELEMENT_NODE && 
                
$binding_details_child->nodeName == WSF_SOAPHEADER &&
                
$binding_details_child->attributes->getNamedItem(WSF_HEADER_FOR_ATTRIBUTE) &&
                
$binding_details_child->attributes->getNamedItem(WSF_HEADER_FOR_ATTRIBUTE)->value == WSF_WSDL_INPUT) {
                
                
//so this is the next input element..


                
$header_name "";
                
$header_ns "";
                if(
$binding_details_child->attributes->getNamedItem(WSF_TYPE)) {
                    
$header_name $binding_details_child->attributes->getNamedItem(WSF_TYPE)->value;
                }
                if(
$binding_details_child->attributes->getNamedItem(WSF_TYPE_NAMESPACE)) {
                    
$header_ns $binding_details_child->attributes->getNamedItem(WSF_TYPE_NAMESPACE)->value;
                }

                
$header_dom = new DOMDocument('1.0''iso-8859-1');
                
$element $header_dom->createElementNS($header_nsWSF_STARTING_NS_PREFIX.":".$header_name);

                if(
array_key_exists($argument_index$arguments)) {

                    
$namespace_map = array($header_ns => WSF_STARTING_NS_PREFIX);
                    
$argument $arguments[$argument_index];

                    
$header_sig $binding_details_child->firstChild;

                    if(
$argument && is_array($argument)){

                        
wsf_create_payload_for_array($header_dom$header_sig$element$element$arguments,
                                                   
$prefix_i$namespace_map$mtom_on$attachment_map);
                    }
                    else if(
$argument && is_object($argument)) {

                        
wsf_create_payload_for_class_map($header_dom$header_sig$element$element$argument$classmap,
                                                  
$prefix_i$namespace_map$mtom_on$attachment_map);
                    }
                    else if(
$argument) {
                        
// this can be tiny little simple type
                        
$text_node = new DOMText($argument);
                        
$element->appendChild($text_node);
                    }

                    
$header_dom->appendChild($element);
                    
$header_node $header_dom->firstChild;
                    
$clone_node $header_node->cloneNode(TRUE);
                    
$header_str $header_dom->saveXML($clone_node);

                    
$input_headers[] = $header_str;

                }
                else {
                    break;
                }

                
$argument_index ++;
            }
        }
    }

    return array(
WSF_REQUEST_PAYLOAD => $payload_str,
                
WSF_INPUT_HEADERS => $input_headers);
}


/**
 * Processes and validate response message and assign values to class map.
 * @param DomDocument $payload_dom response payload
 * @param DomDocument $header_dom response header, can be NULL
 * @param DomDocument $operation_sig_dom operation sig model
 * @param array $response_parameters array of response parameters
 * @return mixed an object, an array or a simple type in line with the 
 * expected format of the response
 */
function wsf_client_response_and_validate(DomDocument $payload_dom
        
$header_dom,
        
DomDocument $operation_sig_dom,
        
$response_parameters,
        
$mtom_on FALSE)
{
    require_once(
'wsf_wsdl_consts.php');
    require_once(
'wsf_wsdl_util.php');
    require_once(
'wsf_wsdl_deserialization.php');

    
$payload_node $payload_dom->documentElement;
    
$operation_sig_node $operation_sig_dom->documentElement;
    
$binding_details_node NULL;

    
$sig_method NULL;
    
//extracting out the sig_method from the operation sig node
    
if($operation_sig_node) {
        foreach(
$operation_sig_node->childNodes as $operation_sig_child) {
            if(
$operation_sig_child->tagName == WSF_SIGNATURE) {
                
$sig_method $operation_sig_child;
            }
            if(
$operation_sig_child->tagName == WSF_BINDINDG_DETAILS) {
                
$binding_details_node $operation_sig_child;
            }
        }
    }

    
$ele_ns NULL;
    
$is_wrapper FALSE;

    if(
$sig_method) {
        
$returns_node $sig_method->firstChild;
        while(
$returns_node && $returns_node->localName != WSF_RETURNS) {
            
$returns_node $returns_node->nextSibling;
        }
        if(
$returns_node) {
            if(
$returns_node->hasAttributes()) {
                
/* Wrapper element of the request operation */
                
$sig_attrs $returns_node->attributes;
                
$ele_name NULL;
                
$ele_ns NULL;
                if(
$sig_attrs->getNamedItem(WSF_WRAPPER_ELEMENT)) {
                    
$ele_name $sig_attrs->getNamedItem(WSF_WRAPPER_ELEMENT)->value;
                }
                if(
$sig_attrs->getNamedItem(WSF_WRAPPER_ELEMENT_NS)) {
                    
$ele_ns $sig_attrs->getNamedItem(WSF_WRAPPER_ELEMENT_NS)->value;
                }
                
$is_wrapper TRUE;
            }
            else {
                
/* No wrapper element in the request */
                
$ele_ns NULL;
                
$ele_name NULL;

                
/* check for the only param target-namespace */
                
$only_param $returns_node->firstChild;
                
$sig_attrs $only_param->attributes;
                
                if(
$sig_attrs->getNamedItem(WSF_TARGETNAMESPACE)) {
                    
$ele_ns $sig_attrs->getNamedItem(WSF_TARGETNAMESPACE)->value;
                }
                if(
$sig_attrs->getNamedItem(WSF_NAME)) {
                    
$ele_name $sig_attrs->getNamedItem(WSF_NAME)->value;
                }
            }
        }
    }

    
/** get SOAP body DOM tree to compare with Sig model */

    
if(!$payload_node) {
        
error_log("soap_body not found"0);
    }

    
$classmap NULL;
    
$cid2cont_type = array();
    
$cid2attachments = array();

    if(
array_key_exists(WSF_CLASSMAP$response_parameters)) {
        
$classmap $response_parameters[WSF_CLASSMAP];
    }
    if(
array_key_exists("attachments"$response_parameters)) {
        
$cid2attachments $response_parameters["attachments"];
    }
    if(
array_key_exists("cid2contentType"$response_parameters)) {
        
$cid2cont_type $response_parameters["cid2contentType"];
    }

    
$op_param_values = array();
    if(
$classmap !== NULL) {
        
$op_param_values wsf_parse_payload_for_class_map($payload_node$returns_node,
                                
$ele_name$classmap$cid2cont_type$cid2attachments);
    }
    else {
        
$op_param_values wsf_parse_payload_for_array($payload_node$returns_node,
                                
$cid2cont_type$cid2attachments);
    }

    
$header_node NULL;
    if(
$header_dom) {
        
$header_node $header_dom->documentElement;
    }

    
$header_params = array();
    if(
$header_node) {
        
$header_first_child $header_node->firstChild;
        
$output_index 0;

        if(
$binding_details_node) {
            
$binding_details_childs $binding_details_node->childNodes;

            foreach(
$binding_details_childs as $binding_details_child) {
                if(
$binding_details_child->nodeType == XML_ELEMENT_NODE &&
                    
$binding_details_child->nodeName == WSF_SOAPHEADER &&
                    
$binding_details_child->attributes->getNamedItem(WSF_HEADER_FOR_ATTRIBUTE)) {

                    if(
$binding_details_child->attributes->getNamedItem(WSF_HEADER_FOR_ATTRIBUTE)->value == WSF_WSDL_OUTPUT) {

                        
//so this is the next input element..
                        
$sig_attrs $binding_details_child->attributes;

                        if(
$sig_attrs->getNamedItem(WSF_TYPE)) {
                            
$ele_name $sig_attrs->getNamedItem(WSF_TYPE)->value;
                        }
                        if(
$sig_attrs->getNamedItem(WSF_TYPE_NAMESPACE)) {
                            
$ele_ns $sig_attrs->getNamedItem(WSF_TYPE_NAMESPACE)->value;
                        }

                        
//go to the next header
                        
if($header_first_child) {
                            
$header_child $header_first_child;
                            while(
$header_child  && ($header_child->nodeType == XML_TEXT_NODE ||
                                    !(
$header_child->localName == $ele_name && $header_child->namespaceURI == $ele_ns))) {
                                
$header_child $header_child->nextSibling;
                            }
                        }

                        if(
$header_child) {
                            
$header_sig $binding_details_child->firstChild;
                            if(
$classmap != NULL && !empty($classmap)) {
                                
ws_log_write(__FILE____LINE__WSF_LOG_DEBUG"starting to parse header $ele_name as a classmap");
                                
$new_param wsf_parse_payload_for_class_map($header_child$header_sig$ele_name$classmap,
                                                                               
$cid2cont_type$cid2attachments);
                            }
                            else
                            {
                                
ws_log_write(__FILE____LINE__WSF_LOG_DEBUG"starting to parse header $ele_name as an array");
                                
$new_param wsf_parse_payload_for_array($header_child$header_sig,
                                                                               
$cid2cont_type$cid2attachments);
                            }
                            
$header_params[] = $new_param;
                        }
                    }
                }
            }
        }
    }

    return array(
WSF_RESPONSE_PAYLOAD_PARAM => $op_param_values,
                
WSF_RESPONSE_HEADER_PARAM => $header_params);
}

?>

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