136 lines
2.3 KiB
C
136 lines
2.3 KiB
C
#include <stdlib.h>
|
|
|
|
char filtered_query[2000];
|
|
char rdata[500];
|
|
char param_n[500];
|
|
char param_d[500];
|
|
|
|
|
|
char *get_query(char *inquery)
|
|
{
|
|
memset(filtered_query, 0x0, 2000);
|
|
sscanf(inquery, "GET %s %[$]", filtered_query);
|
|
return(filtered_query);
|
|
}
|
|
|
|
void web_send(int sockin, char *in_data)
|
|
{
|
|
send(sockin, in_data, strlen(in_data), 0);
|
|
}
|
|
|
|
|
|
//THIS IS BAD CODE BE CAREFULL WITH IT!
|
|
//Watch out for buffer overflow...
|
|
//When using please make sure to check the string size.
|
|
|
|
//Also note:
|
|
//I take no pride in this code, it is a really bad way of doing this...
|
|
char *get_param(char in_string[500], char swhat[500])
|
|
{
|
|
int i = 0;
|
|
int marker, iswitch, pint, dint;
|
|
char flux[500];
|
|
memset(flux, 0x0, 500);
|
|
|
|
//Get the path of out "page"
|
|
if (swhat == 0)
|
|
{
|
|
//while i is not equal to array size
|
|
while (i != 500)
|
|
{
|
|
//if there is a question mark, halt!
|
|
if (in_string[i] == '?')
|
|
{
|
|
i = 499;
|
|
}
|
|
else
|
|
rdata[i] = in_string[i];
|
|
|
|
i++;
|
|
}
|
|
return rdata;
|
|
}
|
|
else //so, we want a param...
|
|
{
|
|
//calculate where param begins
|
|
while (i != 500)
|
|
{
|
|
if (in_string[i] == '?')
|
|
{
|
|
marker = i + 1;
|
|
i = 499;
|
|
}
|
|
i++;
|
|
}
|
|
|
|
i = 0;
|
|
|
|
//keep morons from trying to crash this
|
|
if ((marker > 500)||(marker < 1))
|
|
marker = 500;
|
|
|
|
while(marker != 500)
|
|
{
|
|
if ((in_string[marker] != '&') && (in_string[marker] != '\0'))
|
|
{
|
|
flux[i] = in_string[marker];
|
|
i++;
|
|
}
|
|
else
|
|
{
|
|
|
|
//we have a param, now we must dig through it
|
|
|
|
//clear temp vars
|
|
memset(param_n, 0x0, 500);
|
|
memset(param_d, 0x0, 500);
|
|
iswitch = 0;
|
|
pint = 0;
|
|
dint = 0;
|
|
i = 0;
|
|
|
|
//split result into param_n and param_d
|
|
while(i != 500)
|
|
{
|
|
if ( (flux[i] != '=') && (flux[i] != '\0') )
|
|
{
|
|
if (iswitch == 0)
|
|
{
|
|
param_n[pint] = flux[i];
|
|
pint++;
|
|
}
|
|
else
|
|
{
|
|
param_d[dint] = flux[i];
|
|
dint++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
iswitch = 1;
|
|
}
|
|
if (flux[i] == '\0')
|
|
i = 499;
|
|
|
|
i++;
|
|
}
|
|
|
|
if ( strcmp(param_n, swhat) == 0 )
|
|
{
|
|
return param_d;
|
|
}
|
|
|
|
i = 0;
|
|
}
|
|
|
|
if (in_string[marker] == '\0')
|
|
{
|
|
marker = 499;
|
|
}
|
|
marker++;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
|