Exemplo n.º 1
0
/* IGD:2, functions for service WANIPv6FirewallControl:1 */
LIBSPEC int
UPNP_GetFirewallStatus(const char * controlURL,
                       const char * servicetype,
                       int * firewallEnabled,
                       int * inboundPinholeAllowed)
{
    struct NameValueParserData pdata;
    char * buffer;
    int bufsize;
    char * fe, *ipa, *p;
    int ret = UPNPCOMMAND_UNKNOWN_ERROR;

    if(!firewallEnabled && !inboundPinholeAllowed)
        return UPNPCOMMAND_INVALID_ARGS;

    buffer = simpleUPnPcommand(-1, controlURL, servicetype,
                               "GetFirewallStatus", 0, &bufsize);
    if(!buffer) {
        return UPNPCOMMAND_HTTP_ERROR;
    }
    ParseNameValue(buffer, bufsize, &pdata);
    free(buffer);
    buffer = NULL;
    fe = GetValueFromNameValueList(&pdata, "FirewallEnabled");
    ipa = GetValueFromNameValueList(&pdata, "InboundPinholeAllowed");
    if(ipa && fe)
        ret = UPNPCOMMAND_SUCCESS;
    if(fe)
        *firewallEnabled = my_atoui(fe);
    /*else
    	*firewallEnabled = 0;*/
    if(ipa)
        *inboundPinholeAllowed = my_atoui(ipa);
    /*else
    	*inboundPinholeAllowed = 0;*/
    p = GetValueFromNameValueList(&pdata, "errorCode");
    if(p)
    {
        ret = UPNPCOMMAND_UNKNOWN_ERROR;
        sscanf(p, "%d", &ret);
    }
    ClearNameValueList(&pdata);
    return ret;
}
Exemplo n.º 2
0
MINIUPNP_LIBSPEC int
UPNP_GetOutboundPinholeTimeout(const char * controlURL, const char * servicetype,
                    const char * remoteHost,
                    const char * remotePort,
                    const char * intClient,
                    const char * intPort,
                    const char * proto,
                    int * opTimeout)
{
	struct UPNParg * GetOutboundPinholeTimeoutArgs;
	char * buffer;
	int bufsize;
	struct NameValueParserData pdata;
	const char * resVal;
	char * p;
	int ret;

	if(!intPort || !intClient || !proto || !remotePort || !remoteHost)
		return UPNPCOMMAND_INVALID_ARGS;

	GetOutboundPinholeTimeoutArgs = calloc(6, sizeof(struct UPNParg));
	if(GetOutboundPinholeTimeoutArgs == NULL)
		return UPNPCOMMAND_MEM_ALLOC_ERROR;
	GetOutboundPinholeTimeoutArgs[0].elt = "RemoteHost";
	GetOutboundPinholeTimeoutArgs[0].val = remoteHost;
	GetOutboundPinholeTimeoutArgs[1].elt = "RemotePort";
	GetOutboundPinholeTimeoutArgs[1].val = remotePort;
	GetOutboundPinholeTimeoutArgs[2].elt = "Protocol";
	GetOutboundPinholeTimeoutArgs[2].val = proto;
	GetOutboundPinholeTimeoutArgs[3].elt = "InternalPort";
	GetOutboundPinholeTimeoutArgs[3].val = intPort;
	GetOutboundPinholeTimeoutArgs[4].elt = "InternalClient";
	GetOutboundPinholeTimeoutArgs[4].val = intClient;
	buffer = simpleUPnPcommand(-1, controlURL, servicetype,
	                           "GetOutboundPinholeTimeout", GetOutboundPinholeTimeoutArgs, &bufsize);
	free(GetOutboundPinholeTimeoutArgs);
	if(!buffer)
		return UPNPCOMMAND_HTTP_ERROR;
	ParseNameValue(buffer, bufsize, &pdata);
	free(buffer); buffer = NULL;
	resVal = GetValueFromNameValueList(&pdata, "errorCode");
	if(resVal)
	{
		ret = UPNPCOMMAND_UNKNOWN_ERROR;
		sscanf(resVal, "%d", &ret);
	}
	else
	{
		ret = UPNPCOMMAND_SUCCESS;
		p = GetValueFromNameValueList(&pdata, "OutboundPinholeTimeout");
		if(p)
			*opTimeout = my_atoui(p);
	}
	ClearNameValueList(&pdata);
	return ret;
}
Exemplo n.º 3
0
MINIUPNP_LIBSPEC int
UPNP_CheckPinholeWorking(const char * controlURL, const char * servicetype,
                                 const char * uniqueID, int * isWorking)
{
	struct NameValueParserData pdata;
	struct UPNParg * CheckPinholeWorkingArgs;
	char * buffer;
	int bufsize;
	char * p;
	int ret = UPNPCOMMAND_UNKNOWN_ERROR;

	if(!uniqueID)
		return UPNPCOMMAND_INVALID_ARGS;

	CheckPinholeWorkingArgs = calloc(4, sizeof(struct UPNParg));
	if(CheckPinholeWorkingArgs == NULL)
		return UPNPCOMMAND_MEM_ALLOC_ERROR;
	CheckPinholeWorkingArgs[0].elt = "UniqueID";
	CheckPinholeWorkingArgs[0].val = uniqueID;
	buffer = simpleUPnPcommand(-1, controlURL, servicetype,
	                           "CheckPinholeWorking", CheckPinholeWorkingArgs, &bufsize);
	free(CheckPinholeWorkingArgs);
	if(!buffer)
	{
		return UPNPCOMMAND_HTTP_ERROR;
	}
	ParseNameValue(buffer, bufsize, &pdata);
	free(buffer); buffer = NULL;

	p = GetValueFromNameValueList(&pdata, "IsWorking");
	if(p)
	{
		*isWorking=my_atoui(p);
		ret = UPNPCOMMAND_SUCCESS;
	}
	else
		*isWorking = 0;

	p = GetValueFromNameValueList(&pdata, "errorCode");
	if(p)
	{
		ret = UPNPCOMMAND_UNKNOWN_ERROR;
		sscanf(p, "%d", &ret);
	}

	ClearNameValueList(&pdata);
	return ret;
}
Exemplo n.º 4
0
LIBSPEC UNSIGNED_INTEGER
UPNP_GetTotalPacketsReceived(const char * controlURL,
						const char * servicetype)
{
	struct NameValueParserData pdata;
	char buffer[4096];
	int bufsize = 4096;
	unsigned int r = 0;
	char * p;
	simpleUPnPcommand(-1, controlURL, servicetype, "GetTotalPacketsReceived", 0, buffer, &bufsize);
	ParseNameValue(buffer, bufsize, &pdata);
	/*DisplayNameValueList(buffer, bufsize);*/
	p = GetValueFromNameValueList(&pdata, "NewTotalPacketsReceived");
	r = my_atoui(p);
	ClearNameValueList(&pdata);
	return r;
}
Exemplo n.º 5
0
unsigned int
UPNP_GetTotalBytesSent(const char * controlURL,
					const char * servicetype)
{
	struct NameValueParserData pdata;
	char buffer[4096];
	int bufsize = 4096;
	unsigned int r = 0;
	char * p;
	simpleUPnPcommand(-1, controlURL, servicetype, "GetTotalBytesSent", 0, buffer, &bufsize);
	ParseNameValue(buffer, bufsize, &pdata);
	/*DisplayNameValueList(buffer, bufsize);*/
	p = GetValueFromNameValueList(&pdata, "NewTotalBytesSent");
	if(p)
		r = my_atoui(p);
	ClearNameValueList(&pdata);
	return r;
}
Exemplo n.º 6
0
MINIUPNP_LIBSPEC int
UPNP_GetPinholePackets(const char * controlURL, const char * servicetype,
                                 const char * uniqueID, int * packets)
{
	struct NameValueParserData pdata;
	struct UPNParg * GetPinholePacketsArgs;
	char * buffer;
	int bufsize;
	char * p;
	int ret = UPNPCOMMAND_UNKNOWN_ERROR;

	if(!uniqueID)
		return UPNPCOMMAND_INVALID_ARGS;

	GetPinholePacketsArgs = calloc(4, sizeof(struct UPNParg));
	if(GetPinholePacketsArgs == NULL)
		return UPNPCOMMAND_MEM_ALLOC_ERROR;
	GetPinholePacketsArgs[0].elt = "UniqueID";
	GetPinholePacketsArgs[0].val = uniqueID;
	buffer = simpleUPnPcommand(-1, controlURL, servicetype,
	                           "GetPinholePackets", GetPinholePacketsArgs, &bufsize);
	free(GetPinholePacketsArgs);
	if(!buffer)
		return UPNPCOMMAND_HTTP_ERROR;
	ParseNameValue(buffer, bufsize, &pdata);
	free(buffer); buffer = NULL;

	p = GetValueFromNameValueList(&pdata, "PinholePackets");
	if(p)
	{
		*packets=my_atoui(p);
		ret = UPNPCOMMAND_SUCCESS;
	}

	p = GetValueFromNameValueList(&pdata, "errorCode");
	if(p)
	{
		ret = UPNPCOMMAND_UNKNOWN_ERROR;
		sscanf(p, "%d", &ret);
	}

	ClearNameValueList(&pdata);
	return ret;
}
Exemplo n.º 7
0
MINIUPNP_LIBSPEC UNSIGNED_INTEGER
UPNP_GetTotalPacketsReceived(const char * controlURL,
						const char * servicetype)
{
	struct NameValueParserData pdata;
	char * buffer;
	int bufsize;
	unsigned int r = 0;
	char * p;
	if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype,
	                                "GetTotalPacketsReceived", 0, &bufsize))) {
		return UPNPCOMMAND_HTTP_ERROR;
	}
	ParseNameValue(buffer, bufsize, &pdata);
	/*DisplayNameValueList(buffer, bufsize);*/
	free(buffer); buffer = NULL;
	p = GetValueFromNameValueList(&pdata, "NewTotalPacketsReceived");
	r = my_atoui(p);
	ClearNameValueList(&pdata);
	return r;
}