Пример #1
0
void HTTPCustomCallback( )
{
	uint16_t i, bytestoread;
	struct HTTPConnection * h = curhttp;

	if( h->isdone )
	{
		HTTPClose( h->socket );
		return;
	}
	if( h->isfirst )
	{
		TCPs[h->socket].sendtype = ACKBIT | PSHBIT;
		StartTCPWrite( h->socket );
		//TODO: Content Length?  MIME-Type?
		PushStr( "HTTP/1.1 200 Ok\r\nConnection: close\r\n\r\n" );

		if( strncmp( h->pathbuffer, "/d/r1?", 6 ) == 0 )
		{
			char outb[3] = {0, 0, 0};
			char * bp = h->pathbuffer + 6;
			unsigned char address = 0;
			address += hex2val( *(bp++) )<<4;
			address += hex2val( *(bp++) );

			unsigned char * cc = (unsigned char*)address;

			int8tohex( *cc, outb );
			PushStr( outb );
		}
		else if( strncmp( h->pathbuffer, "/d/w1?", 6 ) == 0 )
		{
			char * bp = h->pathbuffer + 6;
			unsigned char address = 0;
			address += hex2val( *(bp++) )<<4;
			address += hex2val( *(bp++) );

			unsigned char value = 0;
			value += hex2val( *(bp++) )<<4;
			value += hex2val( *(bp++) );

			unsigned char * cc = (unsigned char*)address;
			*cc = value;
		}
		else if( strncmp( h->pathbuffer, "/d/r2?", 6 ) == 0 )
		{
			char outb[3] = {0, 0, 0};
			char * bp = h->pathbuffer + 6;
			unsigned char address = 0;
			address += hex2val( *(bp++) )<<4;
			address += hex2val( *(bp++) );

			unsigned short * cc = (unsigned char*)address;
			unsigned short vo = *cc;
			int8tohex( vo>>8, outb );
			PushStr( outb );
			int8tohex( vo&0xff, outb );
			PushStr( outb );
		}
Пример #2
0
int GetUrl(REC_INFO* pRec, void* pVal)
{
    REC_INFO* pCurRec = pRec;
    unsigned int recCount = 0;
    char** ppUrl = pVal;
    char* pTemp = NULL;
    unsigned int urlMaxLen = 32;

    pTemp = (char*)malloc(urlMaxLen);
    if(pTemp == NULL)
    {
        return -1;
    }
    memset(pTemp, 0, urlMaxLen);
    while(pCurRec)
    {
        if(pCurRec->type == ELE_SEPERATOR)
        {
            if(pCurRec->sep == SEP_COMMA)
            {
                *ppUrl = pTemp;
                return recCount;
            }
            else
            {
                if(PushChar(&pTemp,&urlMaxLen, seperator[pCurRec->sep]) != 0)
                {
                    break;
                }
            }
        }
        else if(pCurRec->type == ELE_TEXT)
        {
            if(PushStr(&pTemp, &urlMaxLen, pCurRec->pContent) != 0)
            {
                break;
            }
        }
        else
        {
            break;
        }
        ++recCount;
        pCurRec = goaheadRec(pCurRec, 1);
    }

    if(pTemp)
    {
        free(pTemp);
    }
    return -1;
}
Пример #3
0
int PushChar(char** ppDstStr, unsigned int* pDstMaxLen, char ch)
{
    char cha[2] = {ch,'\0'};
    return PushStr(ppDstStr, pDstMaxLen, cha);
}