1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
#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;
}
}
|