Révision bcfab93f
Ajouté par Ermal il y a presque 10 ans
pfPorts/check_reload_status/files/fcgicli.c | ||
---|---|---|
132 | 132 |
socketpath = optarg; |
133 | 133 |
break; |
134 | 134 |
case 'o': |
135 |
if (!strcasecmp(optarg, "POST")) |
|
135 |
if (!strcasecmp(optarg, "POST")) {
|
|
136 | 136 |
ispost = 1; |
137 |
else if(!strcasecmp(optarg, "GET")) |
|
137 |
printf("POST mode is not yet implemented\n"); |
|
138 |
exit(-2); |
|
139 |
} else if(!strcasecmp(optarg, "GET")) |
|
138 | 140 |
ispost = 0; |
139 | 141 |
else |
140 | 142 |
usage(); |
... | ... | |
197 | 199 |
|
198 | 200 |
uname(&uts); |
199 | 201 |
|
200 |
if (ispost) { |
|
201 |
printf("POST is not yet implemented\n"); |
|
202 |
tmpl = NULL; |
|
203 |
|
|
204 |
} else { |
|
205 |
sbtmp2 = sbuf_new_auto(); |
|
206 |
if (sbtmp2 == NULL) |
|
207 |
errx(-3, "Could not allocate memory\n"); |
|
208 |
build_nvpair(sbtmp2, "GATEWAY_INTERFACE", (char *)"FastCGI/1.0"); |
|
209 |
build_nvpair(sbtmp2, "REQUEST_METHOD", (char *)"GET"); |
|
210 |
build_nvpair(sbtmp2, "NO_HEADERS", (char *)"1"); |
|
202 |
sbtmp2 = sbuf_new_auto(); |
|
203 |
if (sbtmp2 == NULL) |
|
204 |
errx(-3, "Could not allocate memory\n"); |
|
205 |
build_nvpair(sbtmp2, "GATEWAY_INTERFACE", (char *)"FastCGI/1.0"); |
|
206 |
build_nvpair(sbtmp2, "REQUEST_METHOD", (char *)"GET"); |
|
207 |
build_nvpair(sbtmp2, "NO_HEADERS", (char *)"1"); |
|
208 |
sbtmp = sbuf_new_auto(); |
|
209 |
sbuf_printf(sbtmp, "/%s", basename(script)); |
|
210 |
sbuf_finish(sbtmp); |
|
211 |
build_nvpair(sbtmp2, "SCRIPT_FILENAME", script); |
|
212 |
build_nvpair(sbtmp2, "SCRIPT_NAME", sbuf_data(sbtmp)); |
|
213 |
if (data == NULL) { |
|
214 |
build_nvpair(sbtmp2, "REQUEST_URI", sbuf_data(sbtmp)); |
|
215 |
} |
|
216 |
build_nvpair(sbtmp2, "DOCUMENT_URI", sbuf_data(sbtmp)); |
|
217 |
sbuf_delete(sbtmp); |
|
218 |
if (data) { |
|
219 |
build_nvpair(sbtmp2, "QUERY_STRING", data); |
|
211 | 220 |
sbtmp = sbuf_new_auto(); |
212 |
sbuf_printf(sbtmp, "/%s", basename(script));
|
|
221 |
sbuf_printf(sbtmp, "/%s?%s", basename(script), data);
|
|
213 | 222 |
sbuf_finish(sbtmp); |
214 |
build_nvpair(sbtmp2, "SCRIPT_FILENAME", script); |
|
215 |
build_nvpair(sbtmp2, "SCRIPT_NAME", sbuf_data(sbtmp)); |
|
216 |
if (data == NULL) { |
|
217 |
build_nvpair(sbtmp2, "REQUEST_URI", sbuf_data(sbtmp)); |
|
218 |
} |
|
219 |
build_nvpair(sbtmp2, "DOCUMENT_URI", sbuf_data(sbtmp)); |
|
223 |
build_nvpair(sbtmp2, "REQUEST_URI", sbuf_data(sbtmp)); |
|
220 | 224 |
sbuf_delete(sbtmp); |
221 |
if (data) { |
|
222 |
build_nvpair(sbtmp2, "QUERY_STRING", data); |
|
223 |
sbtmp = sbuf_new_auto(); |
|
224 |
sbuf_printf(sbtmp, "/%s?%s", basename(script), data); |
|
225 |
sbuf_finish(sbtmp); |
|
226 |
build_nvpair(sbtmp2, "REQUEST_URI", sbuf_data(sbtmp)); |
|
227 |
sbuf_delete(sbtmp); |
|
228 |
} |
|
229 |
sbuf_finish(sbtmp2); |
|
230 |
|
|
231 |
len = (3 * sizeof(FCGI_Header)) + sizeof(FCGI_BeginRequestRecord) + sbuf_len(sbtmp2); |
|
232 |
buf = calloc(1, len); |
|
233 |
if (buf == NULL) |
|
234 |
errx(-4, "Cannot allocate memory"); |
|
235 |
|
|
236 |
bHeader = (FCGI_BeginRequestRecord *)buf; |
|
237 |
prepare_packet(&bHeader->header, FCGI_BEGIN_REQUEST, sizeof(bHeader->body), 1); |
|
238 |
bHeader->body.roleB0 = (unsigned char)FCGI_RESPONDER; |
|
239 |
bHeader->body.flags = (unsigned char)(keepalive ? FCGI_KEEP_CONN : 0); |
|
240 |
bHeader++; |
|
241 |
tmpl = (FCGI_Header *)bHeader; |
|
242 |
prepare_packet(tmpl, FCGI_PARAMS, sbuf_len(sbtmp2), 1); |
|
243 |
tmpl++; |
|
244 |
memcpy((char *)tmpl, sbuf_data(sbtmp2), sbuf_len(sbtmp2)); |
|
245 |
tmpl = (FCGI_Header *)(((char *)tmpl) + sbuf_len(sbtmp2)); |
|
246 |
sbuf_delete(sbtmp2); |
|
247 | 225 |
} |
226 |
sbuf_finish(sbtmp2); |
|
227 |
|
|
228 |
len = (3 * sizeof(FCGI_Header)) + sizeof(FCGI_BeginRequestRecord) + sbuf_len(sbtmp2); |
|
229 |
buf = calloc(1, len); |
|
230 |
if (buf == NULL) |
|
231 |
errx(-4, "Cannot allocate memory"); |
|
232 |
|
|
233 |
bHeader = (FCGI_BeginRequestRecord *)buf; |
|
234 |
prepare_packet(&bHeader->header, FCGI_BEGIN_REQUEST, sizeof(bHeader->body), 1); |
|
235 |
bHeader->body.roleB0 = (unsigned char)FCGI_RESPONDER; |
|
236 |
bHeader->body.flags = (unsigned char)(keepalive ? FCGI_KEEP_CONN : 0); |
|
237 |
bHeader++; |
|
238 |
tmpl = (FCGI_Header *)bHeader; |
|
239 |
prepare_packet(tmpl, FCGI_PARAMS, sbuf_len(sbtmp2), 1); |
|
240 |
tmpl++; |
|
241 |
memcpy((char *)tmpl, sbuf_data(sbtmp2), sbuf_len(sbtmp2)); |
|
242 |
tmpl = (FCGI_Header *)(((char *)tmpl) + sbuf_len(sbtmp2)); |
|
243 |
sbuf_delete(sbtmp2); |
|
248 | 244 |
prepare_packet(tmpl, FCGI_PARAMS, 0, 1); |
249 | 245 |
tmpl++; |
250 | 246 |
prepare_packet(tmpl, FCGI_STDIN, 0, 1); |
Formats disponibles : Unified diff
Correct check_reload_status behaviour but correcting the pointer arithmetic! Also while here add more error checking