Пример #1
0
/**
 * Server Status SOAP service handler for GetServerStatus.
 *
 * @param req   SOAP request context
 * @param res   SOAP response context
 *
 * @return H_OK on success
 */
static herror_t _get_server_status(SoapCtx *req, SoapCtx *res)
{
    xmlNode *cmd;

    cmd = soap_env_get_method(req->env);
    soap_env_new_with_method(cmd->ns->href, "GetServerStatusResponse", &res->env);

    /* TODO */
    xmlNode *result = xmlNewChild(res->env->body->children->next, NULL, "GetServerStatusResult", NULL);

    return H_OK;
}
Пример #2
0
/**
 * Server Status SOAP service handler for CheckAuthentication.
 *
 * @param req   SOAP request context
 * @param res   SOAP response context
 *
 * @return H_OK on success
 */
static herror_t _check_authentication(SoapCtx *req, SoapCtx *res)
{
    xmlNode *cmd;

    cmd = soap_env_get_method(req->env);
    soap_env_new_with_method(cmd->ns->href, "CheckAuthenticationResponse", &res->env);

    /* TODO */
    xmlNode *result = xmlNewChild(res->env->body->children->next, NULL, "CheckAuthenticationResult", "REDMOND\\bob");

    return H_OK;
}
Пример #3
0
void
soap_env_add_custom(SoapEnv * call, void *obj, XmlSerializerCallback cb, const char *type, const char *name)
{
  struct XmlNodeHolder holder;

  holder.node = soap_env_get_method(call);

  cb(obj, BAD_CAST name,
     xmlbuilder_start_element,
     xmlbuilder_characters, xmlbuilder_end_element, &holder);

  return;
}
Пример #4
0
int interpretResponse( SoapCtx* response, xmlChar** buildID ) {
	xmlNodePtr method;
	xmlNodePtr node;
	xmlChar* value;
                                                                                                                                    
	method = soap_env_get_method( response->env );

	if ( method ) {
		if ( strcmp( (char*)method->name, "Fault" ) == 0 ) {
			printf( "Regresstor: A SOAP error has occured:\n" );
			node = soap_xml_get_children( method );
			while ( node ) {
				value = xmlNodeListGetString( node->doc, node->xmlChildrenNode, 1 );
				printf( "Regresstor: %s=%s\n", node->name, value );
				node = soap_xml_get_next(node);
			}
			return 0;
		}
		
		node = soap_xml_get_children( method );		/* The s-gensym3 struct */

		if ( node->children ) {
			/* This is where the response values are */
			node = node->children;
			while ( node ) {
				value = xmlNodeListGetString( node->doc, node->xmlChildrenNode, 1 );

				if ( strcmp( (char*)node->name, "errorMsg" ) == 0 ) {
					printf( "Regresstor: Error - %s\n", value );
					return 0;
				}
				
				node = soap_xml_get_next(node);
			}
		}
	}
	else {
		printf( "Regresstor: Non-SOAP response.\n" );
	}
	printf( "Regresstor: Successfully submited check.\n" );
	return 1;
}
Пример #5
0
herror_t
soap_env_new_from_doc(xmlDocPtr doc, SoapEnv ** out)
{
  xmlNodePtr node;
  SoapEnv *env;

  if (doc == NULL)
  {
    log_error1("Can not create xml document!");
    return herror_new("soap_env_new_from_doc",
                      GENERAL_INVALID_PARAM,
                      "XML Document (xmlDocPtr) is NULL");
  }

  if (!(node = xmlDocGetRootElement(doc)))
  {
    log_error1("XML document is empty!");
    return herror_new("soap_env_new_from_doc",
                      XML_ERROR_EMPTY_DOCUMENT, "XML Document is empty!");
  }

  if (!(env = (SoapEnv *) malloc(sizeof(SoapEnv))))
  {
    log_error2("malloc failed (%s)", strerror(errno));
    return herror_new("soap_env_from_doc", GENERAL_INVALID_PARAM, "malloc failed");
  }

 
  env->root = node;
  env->header = soap_env_get_header(env);
  env->body = soap_env_get_body(env);
  env->cur = soap_env_get_method(env);

  
  *out = env;

  return H_OK;
}
Пример #6
0
int iteliec_soap_init (char *hash) {
    herror_t err;
    SoapCtx *request;
    SoapCtx *response;

    char url[1024];
    int error;

    xmlNodePtr function, node;

    /* ----------------------------------- */
    /*    Initialize SOAP Client           */
    /* ----------------------------------- */
    err = soap_client_init_args(0, NULL);
    if (err != H_OK)  {
        err_soap (err);
        
        return 1;
    }

    /* ----------------------------------- */
    /*    Create "request" envelope        */
    /* ----------------------------------- */
    err = soap_ctx_new_with_method ("", "setSystem", &request);
    if (err != H_OK) {
        err_soap(err);
        soap_client_destroy();

        return 1;
    }

    /* ----------------------------------- */
    /*    Create header element            */
    /* ----------------------------------- */

    //xmlDocFormatDump(stdout, request->env->header->doc,1);

    /* ----------------------------------- */
    /*    Start collecting data            */
    /* ----------------------------------- */
    iteliec_get_host_info (&request->env);
    iteliec_get_user_info (&request->env);
    iteliec_get_load_info (&request->env);
    iteliec_get_process_info (&request->env);
    iteliec_get_process_list (&request->env);
    iteliec_get_memory_info (&request->env);
    iteliec_get_swap_info (&request->env);
    iteliec_get_cpu_info (&request->env);

    iteliec_get_fs_info (&request->env);
    iteliec_get_disk_info (&request->env);

    iteliec_get_iface_info (&request->env);
    iteliec_get_network_info (&request->env);

    /* ----------------------------------- */
    /*    Trade for "response" envelope    */
    /* ----------------------------------- */
    sprintf (url, "http://api.iteliec.com/system/update/ws/?token=%s", hash);
    err = soap_client_invoke (request, &response, url, "");
    if (err != H_OK)  {
        err_soap(err);
        soap_ctx_free(request);
        soap_client_destroy();
        
        return ITELIEC_ERR;
    }

    function = soap_env_get_method (response->env);
    node = soap_xml_get_children (function);

    parseResponse (node->doc, node);

    /* ----------------------------------- */
    /*    Show "response" envelope          */
    /* ----------------------------------- */
/*
    xmlDocFormatDump(stdout, response->env->root->doc,1);
*/

    /* ----------------------------------- */
    /*    Destroy SOAP Client              */
    /* ----------------------------------- */
    soap_ctx_free(request);
    soap_ctx_free(response);
    soap_client_destroy();

    return 0;
}