diff options
Diffstat (limited to 'src/clientinfo.c')
-rw-r--r-- | src/clientinfo.c | 271 |
1 files changed, 20 insertions, 251 deletions
diff --git a/src/clientinfo.c b/src/clientinfo.c index c640973c..0aa5e3b5 100644 --- a/src/clientinfo.c +++ b/src/clientinfo.c | |||
@@ -14,20 +14,16 @@ | |||
14 | 14 | ||
15 | #include "clientinfo.h" | 15 | #include "clientinfo.h" |
16 | 16 | ||
17 | |||
18 | struct ClientInfo *ClientInfo; // tochange | ||
19 | |||
20 | /*********************************************************************************************************/ | 17 | /*********************************************************************************************************/ |
21 | /* | 18 | /* |
22 | * Initialize ClientInfo structure | 19 | * Initialize ClientInfo structure |
23 | */ | 20 | */ |
24 | void __ILWS_init_clientinfo() { | 21 | void __ILWS_init_clientinfo(struct ClientInfo *ClientInfo) { |
25 | char *t; | 22 | char *t; |
26 | struct outstream *tstream=current_web_client->outstream; | 23 | struct outstream *tstream=current_web_client->outstream; |
27 | 24 | ||
28 | ClientInfo=__ILWS_malloc(sizeof(struct ClientInfo)); | 25 | ClientInfo=__ILWS_malloc(sizeof(struct ClientInfo)); |
29 | if(ClientInfo==NULL) { | 26 | if(ClientInfo==NULL) { |
30 | LWSERR(LE_MEMORY); | ||
31 | return; | 27 | return; |
32 | }; | 28 | }; |
33 | 29 | ||
@@ -74,26 +70,24 @@ void __ILWS_init_clientinfo() { | |||
74 | 70 | ||
75 | } | 71 | } |
76 | 72 | ||
77 | /*********************************************************************************************************/ | ||
78 | /* | 73 | /* |
79 | * Free ClientInfo structure | 74 | * Free ClientInfo structure |
80 | */ | 75 | */ |
81 | void __ILWS_free_clientinfo() { | 76 | void __ILWS_free_clientinfo(struct ClientInfo *ClientInfo) { |
82 | if(ClientInfo==NULL) { | 77 | if(ClientInfo==NULL) { |
83 | return; | 78 | return; |
84 | }; | 79 | }; |
85 | __ILWS_delete_buffer_list(ClientInfo->mem); | 80 | __ILWS_delete_buffer_list(ClientInfo->mem); |
86 | 81 | ||
87 | __ILWS_free(ClientInfo); | 82 | __ILWS_free(ClientInfo); |
88 | ClientInfo=NULL; | 83 | ClientInfo=NULL; |
89 | } | 84 | } |
90 | 85 | ||
91 | 86 | ||
92 | /*********************************************************************************************************/ | ||
93 | /* | 87 | /* |
94 | * Header function for ClientInfo->Header("x") | 88 | * Header function for ClientInfo->Header("x") |
95 | */ | 89 | */ |
96 | char *__ILWS_Header(char *str) { | 90 | char *__ILWS_Header(struct ClientInfo *ClientInfo, char *str) { |
97 | char *tmp1,*tmp2,*tmp3,*ret; | 91 | char *tmp1,*tmp2,*tmp3,*ret; |
98 | struct _Header *hl=ClientInfo->HeaderList; | 92 | struct _Header *hl=ClientInfo->HeaderList; |
99 | char *defret=""; | 93 | char *defret=""; |
@@ -106,7 +100,6 @@ char *__ILWS_Header(char *str) { | |||
106 | 100 | ||
107 | ClientInfo->HeaderList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Header)); | 101 | ClientInfo->HeaderList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Header)); |
108 | if(ClientInfo->HeaderList==NULL) { | 102 | if(ClientInfo->HeaderList==NULL) { |
109 | LWSERR(LE_MEMORY); | ||
110 | return defret; | 103 | return defret; |
111 | }; | 104 | }; |
112 | ClientInfo->HeaderList->next=NULL; | 105 | ClientInfo->HeaderList->next=NULL; |
@@ -129,11 +122,9 @@ char *__ILWS_Header(char *str) { | |||
129 | /* Doesn't exists */ | 122 | /* Doesn't exists */ |
130 | strsize=strlen(str); | 123 | strsize=strlen(str); |
131 | if(!(hl->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Header)))) { | 124 | if(!(hl->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Header)))) { |
132 | LWSERR(LE_MEMORY); | ||
133 | return defret; | 125 | return defret; |
134 | }; | 126 | }; |
135 | if(!(hl->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1))) { | 127 | if(!(hl->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1))) { |
136 | LWSERR(LE_MEMORY); | ||
137 | return defret; | 128 | return defret; |
138 | }; | 129 | }; |
139 | 130 | ||
@@ -143,7 +134,6 @@ char *__ILWS_Header(char *str) { | |||
143 | hl->next->next=NULL; | 134 | hl->next->next=NULL; |
144 | 135 | ||
145 | if(!(tmp3=__ILWS_malloc(strsize+3))) { | 136 | if(!(tmp3=__ILWS_malloc(strsize+3))) { |
146 | LWSERR(LE_MEMORY); | ||
147 | return defret; | 137 | return defret; |
148 | }; | 138 | }; |
149 | snprintf(tmp3,strsize+3,"%s: ",str); | 139 | snprintf(tmp3,strsize+3,"%s: ",str); |
@@ -169,13 +159,10 @@ char *__ILWS_Header(char *str) { | |||
169 | return ret; | 159 | return ret; |
170 | } | 160 | } |
171 | 161 | ||
172 | |||
173 | |||
174 | /*********************************************************************************************************/ | ||
175 | /* | 162 | /* |
176 | * Function for Querydata | 163 | * Function for Querydata |
177 | */ | 164 | */ |
178 | char *__ILWS_Query(char *handle) { | 165 | char *__ILWS_Query(struct ClientInfo *ClientInfo, char *handle) { |
179 | char *tmp1,*tmp2,*tmp3,*tmp4,*ret; | 166 | char *tmp1,*tmp2,*tmp3,*tmp4,*ret; |
180 | char *defret=""; | 167 | char *defret=""; |
181 | size_t strsize; | 168 | size_t strsize; |
@@ -198,7 +185,6 @@ char *__ILWS_Query(char *handle) { | |||
198 | if(ClientInfo->QueryList==NULL) { | 185 | if(ClientInfo->QueryList==NULL) { |
199 | ClientInfo->QueryList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Query)); | 186 | ClientInfo->QueryList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Query)); |
200 | if(ClientInfo->QueryList==NULL) { | 187 | if(ClientInfo->QueryList==NULL) { |
201 | LWSERR(LE_MEMORY); | ||
202 | if(rw) return 0; | 188 | if(rw) return 0; |
203 | return defret; | 189 | return defret; |
204 | }; | 190 | }; |
@@ -301,13 +287,11 @@ char *__ILWS_Query(char *handle) { | |||
301 | // Working here ^ | 287 | // Working here ^ |
302 | ql->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Query)); | 288 | ql->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Query)); |
303 | if(ql->next==NULL) { | 289 | if(ql->next==NULL) { |
304 | LWSERR(LE_MEMORY); | ||
305 | if(handle[0]=='#') rw=1; | 290 | if(handle[0]=='#') rw=1; |
306 | return defret; | 291 | return defret; |
307 | }; | 292 | }; |
308 | ql->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1); | 293 | ql->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1); |
309 | if(ql->next->id==NULL) { | 294 | if(ql->next->id==NULL) { |
310 | LWSERR(LE_MEMORY); | ||
311 | if(handle[0]=='#') rw=1; | 295 | if(handle[0]=='#') rw=1; |
312 | return defret; | 296 | return defret; |
313 | }; | 297 | }; |
@@ -339,7 +323,6 @@ char *__ILWS_Query(char *handle) { | |||
339 | 323 | ||
340 | ql->next->data=__ILWS_add_buffer(ClientInfo->mem,size+1); | 324 | ql->next->data=__ILWS_add_buffer(ClientInfo->mem,size+1); |
341 | if(ql->next->data==NULL) { | 325 | if(ql->next->data==NULL) { |
342 | LWSERR(LE_MEMORY); | ||
343 | if(handle[0]=='#') rw=1; | 326 | if(handle[0]=='#') rw=1; |
344 | return defret; | 327 | return defret; |
345 | }; | 328 | }; |
@@ -353,7 +336,6 @@ char *__ILWS_Query(char *handle) { | |||
353 | 336 | ||
354 | tmp1=__ILWS_malloc(3); | 337 | tmp1=__ILWS_malloc(3); |
355 | if(tmp1==NULL) { | 338 | if(tmp1==NULL) { |
356 | LWSERR(LE_MEMORY); | ||
357 | if(rw) return 0; | 339 | if(rw) return 0; |
358 | return defret; | 340 | return defret; |
359 | }; | 341 | }; |
@@ -378,13 +360,10 @@ char *__ILWS_Query(char *handle) { | |||
378 | return ret; | 360 | return ret; |
379 | } | 361 | } |
380 | 362 | ||
381 | |||
382 | |||
383 | /*********************************************************************************************************/ | ||
384 | /* | 363 | /* |
385 | * Function for Postdata | 364 | * Function for Postdata |
386 | */ | 365 | */ |
387 | char *__ILWS_Post(char *handle) { | 366 | char *__ILWS_Post(struct ClientInfo *ClientInfo, char *handle) { |
388 | char *tmp1,*tmp2,*tmp3,*ret; | 367 | char *tmp1,*tmp2,*tmp3,*ret; |
389 | struct _Post *pl=ClientInfo->PostList; | 368 | struct _Post *pl=ClientInfo->PostList; |
390 | char *defret=""; | 369 | char *defret=""; |
@@ -408,7 +387,6 @@ char *__ILWS_Post(char *handle) { | |||
408 | /* Allocate the list */ | 387 | /* Allocate the list */ |
409 | if(ClientInfo->PostList==NULL) { | 388 | if(ClientInfo->PostList==NULL) { |
410 | if(!(ClientInfo->PostList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Post)))) { | 389 | if(!(ClientInfo->PostList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Post)))) { |
411 | LWSERR(LE_MEMORY); | ||
412 | if(rw) return 0; | 390 | if(rw) return 0; |
413 | return defret; | 391 | return defret; |
414 | }; | 392 | }; |
@@ -491,13 +469,11 @@ char *__ILWS_Post(char *handle) { | |||
491 | 469 | ||
492 | pl->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Post)); | 470 | pl->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Post)); |
493 | if(pl->next==NULL) { | 471 | if(pl->next==NULL) { |
494 | LWSERR(LE_MEMORY); | ||
495 | if(rw) return 0; | 472 | if(rw) return 0; |
496 | return defret; | 473 | return defret; |
497 | }; | 474 | }; |
498 | pl->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1); | 475 | pl->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1); |
499 | if(pl->next->id==NULL) { | 476 | if(pl->next->id==NULL) { |
500 | LWSERR(LE_MEMORY); | ||
501 | if(rw) return 0; | 477 | if(rw) return 0; |
502 | return defret; | 478 | return defret; |
503 | }; | 479 | }; |
@@ -526,7 +502,6 @@ char *__ILWS_Post(char *handle) { | |||
526 | 502 | ||
527 | pl->next->data=__ILWS_add_buffer(ClientInfo->mem,size+1); | 503 | pl->next->data=__ILWS_add_buffer(ClientInfo->mem,size+1); |
528 | if(pl->next->data==NULL) { | 504 | if(pl->next->data==NULL) { |
529 | LWSERR(LE_MEMORY); | ||
530 | return defret; | 505 | return defret; |
531 | }; | 506 | }; |
532 | j=0; | 507 | j=0; |
@@ -539,7 +514,6 @@ char *__ILWS_Post(char *handle) { | |||
539 | 514 | ||
540 | tmp1=__ILWS_malloc(3); | 515 | tmp1=__ILWS_malloc(3); |
541 | if(tmp1==NULL) { | 516 | if(tmp1==NULL) { |
542 | LWSERR(LE_MEMORY); | ||
543 | if(rw) return 0; | 517 | if(rw) return 0; |
544 | return defret; | 518 | return defret; |
545 | }; | 519 | }; |
@@ -566,13 +540,10 @@ char *__ILWS_Post(char *handle) { | |||
566 | return ret; | 540 | return ret; |
567 | } | 541 | } |
568 | 542 | ||
569 | |||
570 | |||
571 | /*********************************************************************************************************/ | ||
572 | /* | 543 | /* |
573 | * Function for MultiPart formdata | 544 | * Function for MultiPart formdata |
574 | */ | 545 | */ |
575 | struct _MultiPart __ILWS_MultiPart(char *handle) { | 546 | struct _MultiPart __ILWS_MultiPart(struct ClientInfo *ClientInfo, char *handle) { |
576 | char *tmp1,*tmp2,*tmp3; | 547 | char *tmp1,*tmp2,*tmp3; |
577 | int i; | 548 | int i; |
578 | char *name; | 549 | char *name; |
@@ -588,7 +559,6 @@ struct _MultiPart __ILWS_MultiPart(char *handle) { | |||
588 | if(ClientInfo->MultiPartList==NULL) { | 559 | if(ClientInfo->MultiPartList==NULL) { |
589 | ClientInfo->MultiPartList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _MultiPart)); | 560 | ClientInfo->MultiPartList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _MultiPart)); |
590 | if(ClientInfo->MultiPartList==NULL) { | 561 | if(ClientInfo->MultiPartList==NULL) { |
591 | LWSERR(LE_MEMORY); | ||
592 | return defret; | 562 | return defret; |
593 | }; | 563 | }; |
594 | ClientInfo->MultiPartList->next=NULL; | 564 | ClientInfo->MultiPartList->next=NULL; |
@@ -613,12 +583,10 @@ struct _MultiPart __ILWS_MultiPart(char *handle) { | |||
613 | strsize=strlen(handle); | 583 | strsize=strlen(handle); |
614 | ml->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _MultiPart)); | 584 | ml->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _MultiPart)); |
615 | if(ml->next==NULL) { | 585 | if(ml->next==NULL) { |
616 | LWSERR(LE_MEMORY); | ||
617 | return defret; | 586 | return defret; |
618 | }; | 587 | }; |
619 | ml->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1); | 588 | ml->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1); |
620 | if(ml->next->id==NULL) { | 589 | if(ml->next->id==NULL) { |
621 | LWSERR(LE_MEMORY); | ||
622 | return defret; | 590 | return defret; |
623 | }; | 591 | }; |
624 | memcpy(ml->next->id,handle,strsize); | 592 | memcpy(ml->next->id,handle,strsize); |
@@ -637,7 +605,6 @@ struct _MultiPart __ILWS_MultiPart(char *handle) { | |||
637 | boundarysize=tmp2-tmp1; | 605 | boundarysize=tmp2-tmp1; |
638 | boundary=__ILWS_add_buffer(ClientInfo->mem,boundarysize+3); | 606 | boundary=__ILWS_add_buffer(ClientInfo->mem,boundarysize+3); |
639 | if(boundary==NULL) { | 607 | if(boundary==NULL) { |
640 | LWSERR(LE_MEMORY); | ||
641 | return defret; | 608 | return defret; |
642 | }; | 609 | }; |
643 | memcpy(boundary,tmp1,boundarysize); | 610 | memcpy(boundary,tmp1,boundarysize); |
@@ -648,7 +615,6 @@ struct _MultiPart __ILWS_MultiPart(char *handle) { | |||
648 | namesize=boundarysize+41+strlen(handle); | 615 | namesize=boundarysize+41+strlen(handle); |
649 | name=__ILWS_add_buffer(ClientInfo->mem,namesize+1); | 616 | name=__ILWS_add_buffer(ClientInfo->mem,namesize+1); |
650 | if(name==NULL) { | 617 | if(name==NULL) { |
651 | LWSERR(LE_MEMORY); | ||
652 | return defret; | 618 | return defret; |
653 | }; | 619 | }; |
654 | snprintf(name,namesize,"%s\r\nContent-Disposition: form-data; name=",boundary); | 620 | snprintf(name,namesize,"%s\r\nContent-Disposition: form-data; name=",boundary); |
@@ -681,7 +647,6 @@ struct _MultiPart __ILWS_MultiPart(char *handle) { | |||
681 | tmp3=strstr(tmp2,"\r\n"); | 647 | tmp3=strstr(tmp2,"\r\n"); |
682 | ml->next->filename=__ILWS_add_buffer(ClientInfo->mem,(tmp3-tmp2)+1); | 648 | ml->next->filename=__ILWS_add_buffer(ClientInfo->mem,(tmp3-tmp2)+1); |
683 | if(ml->next->filename==NULL) { | 649 | if(ml->next->filename==NULL) { |
684 | LWSERR(LE_MEMORY); | ||
685 | return defret; | 650 | return defret; |
686 | }; | 651 | }; |
687 | memcpy(ml->next->filename,tmp2,tmp3-tmp2); | 652 | memcpy(ml->next->filename,tmp2,tmp3-tmp2); |
@@ -704,7 +669,6 @@ struct _MultiPart __ILWS_MultiPart(char *handle) { | |||
704 | 669 | ||
705 | // copy data to node | 670 | // copy data to node |
706 | if(!(ml->next->data=__ILWS_add_buffer(ClientInfo->mem,(tmp3-tmp2)+1))) { | 671 | if(!(ml->next->data=__ILWS_add_buffer(ClientInfo->mem,(tmp3-tmp2)+1))) { |
707 | LWSERR(LE_MEMORY); | ||
708 | return defret; | 672 | return defret; |
709 | }; | 673 | }; |
710 | memcpy(ml->next->data,tmp2,tmp3-tmp2); | 674 | memcpy(ml->next->data,tmp2,tmp3-tmp2); |
@@ -718,11 +682,10 @@ struct _MultiPart __ILWS_MultiPart(char *handle) { | |||
718 | 682 | ||
719 | }; | 683 | }; |
720 | 684 | ||
721 | /*********************************************************************************************************/ | ||
722 | /* | 685 | /* |
723 | * Function for CookieData | 686 | * Function for CookieData |
724 | */ | 687 | */ |
725 | char *__ILWS_Cookie(char *handle) { | 688 | char *__ILWS_Cookie(struct ClientInfo *ClientInfo, char *handle) { |
726 | char *defret=""; | 689 | char *defret=""; |
727 | char *tmp1,*tmp2,*ret; | 690 | char *tmp1,*tmp2,*ret; |
728 | int size; | 691 | int size; |
@@ -743,7 +706,6 @@ char *__ILWS_Cookie(char *handle) { | |||
743 | 706 | ||
744 | ClientInfo->CookieList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Cookie)); | 707 | ClientInfo->CookieList=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Cookie)); |
745 | if(ClientInfo->CookieList==NULL) { | 708 | if(ClientInfo->CookieList==NULL) { |
746 | LWSERR(LE_MEMORY); | ||
747 | return defret; | 709 | return defret; |
748 | }; | 710 | }; |
749 | ClientInfo->CookieList->next=NULL; | 711 | ClientInfo->CookieList->next=NULL; |
@@ -764,11 +726,9 @@ char *__ILWS_Cookie(char *handle) { | |||
764 | 726 | ||
765 | strsize=strlen(handle); | 727 | strsize=strlen(handle); |
766 | if(!(cl->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Cookie)))) { | 728 | if(!(cl->next=__ILWS_add_buffer(ClientInfo->mem,sizeof(struct _Cookie)))) { |
767 | LWSERR(LE_MEMORY); | ||
768 | return defret; | 729 | return defret; |
769 | }; | 730 | }; |
770 | if(!(cl->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1))) { | 731 | if(!(cl->next->id=__ILWS_add_buffer(ClientInfo->mem,strsize+1))) { |
771 | LWSERR(LE_MEMORY); | ||
772 | return defret; | 732 | return defret; |
773 | }; | 733 | }; |
774 | memcpy(cl->next->id,handle,strsize); | 734 | memcpy(cl->next->id,handle,strsize); |
@@ -801,7 +761,6 @@ char *__ILWS_Cookie(char *handle) { | |||
801 | 761 | ||
802 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); | 762 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); |
803 | if(ret==NULL) { | 763 | if(ret==NULL) { |
804 | LWSERR(LE_MEMORY); | ||
805 | return defret; | 764 | return defret; |
806 | }; | 765 | }; |
807 | 766 | ||
@@ -811,13 +770,10 @@ char *__ILWS_Cookie(char *handle) { | |||
811 | return cl->next->data; | 770 | return cl->next->data; |
812 | }; | 771 | }; |
813 | 772 | ||
814 | |||
815 | |||
816 | /*********************************************************************************************************/ | ||
817 | /* | 773 | /* |
818 | * get whole query string | 774 | * get whole query string |
819 | */ | 775 | */ |
820 | char *__ILWS_clientinfo_getquerystring() { | 776 | char *__ILWS_clientinfo_getquerystring(struct ClientInfo *ClientInfo) { |
821 | char *tmp1,*tmp2,*ret; | 777 | char *tmp1,*tmp2,*ret; |
822 | char *defret=""; | 778 | char *defret=""; |
823 | size_t size; | 779 | size_t size; |
@@ -830,7 +786,6 @@ char *__ILWS_clientinfo_getquerystring() { | |||
830 | size=(tmp2-tmp1)-1; | 786 | size=(tmp2-tmp1)-1; |
831 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); | 787 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); |
832 | if(ret==NULL) { | 788 | if(ret==NULL) { |
833 | LWSERR(LE_MEMORY); | ||
834 | return defret; | 789 | return defret; |
835 | }; | 790 | }; |
836 | memcpy(ret,tmp1,size); | 791 | memcpy(ret,tmp1,size); |
@@ -838,12 +793,10 @@ char *__ILWS_clientinfo_getquerystring() { | |||
838 | return ret; | 793 | return ret; |
839 | }; | 794 | }; |
840 | 795 | ||
841 | |||
842 | /*********************************************************************************************************/ | ||
843 | /* | 796 | /* |
844 | * get whole post data | 797 | * get whole post data |
845 | */ | 798 | */ |
846 | char *__ILWS_clientinfo_getpostdata() { | 799 | char *__ILWS_clientinfo_getpostdata(struct ClientInfo *ClientInfo) { |
847 | char *tmp1,*ret; | 800 | char *tmp1,*ret; |
848 | char *defret=""; | 801 | char *defret=""; |
849 | size_t size; | 802 | size_t size; |
@@ -855,7 +808,6 @@ char *__ILWS_clientinfo_getpostdata() { | |||
855 | size=(current_web_client->rbuf+current_web_client->rbufsize)-tmp1; | 808 | size=(current_web_client->rbuf+current_web_client->rbufsize)-tmp1; |
856 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); | 809 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); |
857 | if(ret==NULL) { | 810 | if(ret==NULL) { |
858 | LWSERR(LE_MEMORY); | ||
859 | return defret; | 811 | return defret; |
860 | }; | 812 | }; |
861 | memcpy(ret,tmp1,size); | 813 | memcpy(ret,tmp1,size); |
@@ -863,126 +815,10 @@ char *__ILWS_clientinfo_getpostdata() { | |||
863 | return ret; | 815 | return ret; |
864 | } | 816 | } |
865 | 817 | ||
866 | |||
867 | /*********************************************************************************************************/ | ||
868 | /* | ||
869 | * Get authorization username | ||
870 | */ | ||
871 | char *__ILWS_clientinfo_getauthuser() { | ||
872 | char *tmp1,*tmp2,*ret, *out=NULL; | ||
873 | char *defret=""; | ||
874 | size_t size; | ||
875 | |||
876 | tmp1=strstr(current_web_client->rbuf,"Authorization: Basic"); | ||
877 | if(tmp1==NULL) { | ||
878 | |||
879 | return defret; | ||
880 | }; | ||
881 | |||
882 | tmp1+=21; | ||
883 | tmp2=strstr(tmp1,"\r\n"); | ||
884 | if(tmp2==NULL) return defret; | ||
885 | size=(int)(tmp2-tmp1); | ||
886 | |||
887 | ret=__ILWS_malloc(size+1); | ||
888 | if(ret==NULL) { | ||
889 | LWSERR(LE_MEMORY); | ||
890 | return defret; | ||
891 | }; | ||
892 | memcpy(ret,tmp1,size); | ||
893 | ret[size]=0; | ||
894 | |||
895 | out=__ILWS_malloc(size+1); | ||
896 | if(out==NULL) { | ||
897 | LWSERR(LE_MEMORY); | ||
898 | __ILWS_free(ret); | ||
899 | return defret; | ||
900 | }; | ||
901 | |||
902 | size=__ILWS_base64decode(out,ret); | ||
903 | out[size]='\0'; | ||
904 | |||
905 | |||
906 | __ILWS_free(ret); | ||
907 | tmp2=strstr(out,":"); | ||
908 | if(tmp2==NULL) return defret; | ||
909 | |||
910 | ret=__ILWS_add_buffer(ClientInfo->mem,(tmp2-out)+1); | ||
911 | if(ret==NULL) { | ||
912 | LWSERR(LE_MEMORY); | ||
913 | __ILWS_free(out); | ||
914 | return defret; | ||
915 | }; | ||
916 | memcpy(ret,out,tmp2-out); | ||
917 | ret[tmp2-out]=0; | ||
918 | |||
919 | __ILWS_free(out); | ||
920 | return ret; | ||
921 | } | ||
922 | |||
923 | |||
924 | /*********************************************************************************************************/ | ||
925 | /* | ||
926 | * get authorization password | ||
927 | */ | ||
928 | char *__ILWS_clientinfo_getauthpass() { | ||
929 | char *tmp1,*tmp2,*ret, *out=NULL; | ||
930 | char *defret=""; | ||
931 | size_t size; | ||
932 | |||
933 | tmp1=strstr(current_web_client->rbuf,"Authorization: Basic"); | ||
934 | if(tmp1==NULL) { | ||
935 | |||
936 | return defret; | ||
937 | }; | ||
938 | |||
939 | tmp1+=21; | ||
940 | tmp2=strstr(tmp1,"\r\n"); | ||
941 | if(tmp2==NULL) return defret; | ||
942 | size=(int)(tmp2-tmp1); | ||
943 | |||
944 | ret=__ILWS_malloc(size+1); | ||
945 | if(ret==NULL) { | ||
946 | LWSERR(LE_MEMORY); | ||
947 | return defret; | ||
948 | }; | ||
949 | memcpy(ret,tmp1,size); | ||
950 | ret[size]=0; | ||
951 | |||
952 | out=__ILWS_malloc(size+1); | ||
953 | if(out==NULL) { | ||
954 | LWSERR(LE_MEMORY); | ||
955 | __ILWS_free(ret); | ||
956 | return defret; | ||
957 | }; | ||
958 | |||
959 | size=__ILWS_base64decode(out,ret); | ||
960 | out[size]='\0'; | ||
961 | |||
962 | |||
963 | __ILWS_free(ret); | ||
964 | tmp1=strstr(out,":")+1; | ||
965 | tmp2=out+strlen(out); | ||
966 | |||
967 | ret=__ILWS_add_buffer(ClientInfo->mem,(tmp2-tmp1)+1); | ||
968 | if(ret==NULL) { | ||
969 | LWSERR(LE_MEMORY); | ||
970 | __ILWS_free(out); | ||
971 | return defret; | ||
972 | }; | ||
973 | memcpy(ret,tmp1,tmp2-tmp1); | ||
974 | ret[tmp2-tmp1]=0; | ||
975 | |||
976 | __ILWS_free(out); | ||
977 | return ret; | ||
978 | } | ||
979 | |||
980 | |||
981 | /*********************************************************************************************************/ | ||
982 | /* | 818 | /* |
983 | * get method (GET POST HEAD etc) | 819 | * get method (GET POST HEAD etc) |
984 | */ | 820 | */ |
985 | char *__ILWS_clientinfo_getmethod() { | 821 | char *__ILWS_clientinfo_getmethod(struct ClientInfo *ClientInfo) { |
986 | char *tmp1,*ret; | 822 | char *tmp1,*ret; |
987 | char *defret=""; | 823 | char *defret=""; |
988 | size_t size; | 824 | size_t size; |
@@ -993,7 +829,6 @@ char *__ILWS_clientinfo_getmethod() { | |||
993 | size=tmp1-current_web_client->rbuf; | 829 | size=tmp1-current_web_client->rbuf; |
994 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); | 830 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); |
995 | if(ret==NULL) { | 831 | if(ret==NULL) { |
996 | LWSERR(LE_MEMORY); | ||
997 | return defret; | 832 | return defret; |
998 | }; | 833 | }; |
999 | memcpy(ret,current_web_client->rbuf,size); | 834 | memcpy(ret,current_web_client->rbuf,size); |
@@ -1001,12 +836,10 @@ char *__ILWS_clientinfo_getmethod() { | |||
1001 | return ret; | 836 | return ret; |
1002 | } | 837 | } |
1003 | 838 | ||
1004 | |||
1005 | /*********************************************************************************************************/ | ||
1006 | /* | 839 | /* |
1007 | * get request name (GET /taltal HTTP/1.0) returning /taltal | 840 | * get request name (GET /taltal HTTP/1.0) returning /taltal |
1008 | */ | 841 | */ |
1009 | char *__ILWS_clientinfo_getreqname() { | 842 | char *__ILWS_clientinfo_getreqname(struct ClientInfo *ClientInfo) { |
1010 | char *ret; | 843 | char *ret; |
1011 | char *tmp1=strstr(current_web_client->rbuf,"/"); // Must have / | 844 | char *tmp1=strstr(current_web_client->rbuf,"/"); // Must have / |
1012 | char *tmp2=strstr(tmp1,"?"); | 845 | char *tmp2=strstr(tmp1,"?"); |
@@ -1025,7 +858,6 @@ char *__ILWS_clientinfo_getreqname() { | |||
1025 | return defret; | 858 | return defret; |
1026 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); | 859 | ret=__ILWS_add_buffer(ClientInfo->mem,size+1); |
1027 | if(ret==NULL) { | 860 | if(ret==NULL) { |
1028 | LWSERR(LE_MEMORY); | ||
1029 | return defret; | 861 | return defret; |
1030 | }; | 862 | }; |
1031 | j=0; | 863 | j=0; |
@@ -1038,7 +870,6 @@ char *__ILWS_clientinfo_getreqname() { | |||
1038 | 870 | ||
1039 | tmp2=__ILWS_malloc(3); | 871 | tmp2=__ILWS_malloc(3); |
1040 | if(tmp2==NULL) { | 872 | if(tmp2==NULL) { |
1041 | LWSERR(LE_MEMORY); | ||
1042 | return defret; | 873 | return defret; |
1043 | }; | 874 | }; |
1044 | strncpy(tmp2,&tmp1[j+1],2); | 875 | strncpy(tmp2,&tmp1[j+1],2); |
@@ -1058,67 +889,5 @@ char *__ILWS_clientinfo_getreqname() { | |||
1058 | ret[size]=0; | 889 | ret[size]=0; |
1059 | return ret; | 890 | return ret; |
1060 | } | 891 | } |
1061 | /*********************************************************************************************************/ | 892 | |
1062 | /* | 893 | |
1063 | * Get config entry (new on 0.5.0) | ||
1064 | */ | ||
1065 | char *__ILWS_Conf(const char *topic,const char *key) { | ||
1066 | struct web_server *server=current_web_server; | ||
1067 | FILE *tmpf; | ||
1068 | struct stat statf; // tested only on WIN | ||
1069 | char *defret=""; | ||
1070 | char *dataconf; | ||
1071 | char *tmp1,*tmp2,*tmp3; | ||
1072 | long tmpsize=0; | ||
1073 | int sizec; | ||
1074 | // Config revive tested only on WIN | ||
1075 | if(server->conffile!=NULL) { | ||
1076 | stat(server->conffile,&statf); | ||
1077 | if(statf.st_mtime>server->conffiletime) { | ||
1078 | tmpf=fopen(server->conffile,"r"); | ||
1079 | if(tmpf!=NULL) { | ||
1080 | free(server->dataconf); | ||
1081 | fseek(tmpf,SEEK_SET,SEEK_END); | ||
1082 | sizec=ftell(tmpf); | ||
1083 | fseek(tmpf,0,SEEK_SET); | ||
1084 | server->dataconf=malloc(sizec+1); | ||
1085 | fread(server->dataconf,sizec,1,tmpf); | ||
1086 | server->dataconf[sizec-9]=0; // 9 is temporary | ||
1087 | server->conffiletime=statf.st_mtime; | ||
1088 | fclose(tmpf); | ||
1089 | }; | ||
1090 | }; | ||
1091 | }; | ||
1092 | |||
1093 | dataconf=__ILWS_stristr(server->dataconf,topic); | ||
1094 | if(dataconf==NULL) { | ||
1095 | return defret; | ||
1096 | }; | ||
1097 | dataconf+=strlen(topic); | ||
1098 | |||
1099 | do { | ||
1100 | tmp1=__ILWS_stristr(dataconf,key); | ||
1101 | dataconf+=1; | ||
1102 | if(dataconf[0]==0) { | ||
1103 | return defret; | ||
1104 | }; | ||
1105 | if(dataconf[0]=='[' && dataconf[-1]=='\n') { | ||
1106 | return defret; | ||
1107 | }; | ||
1108 | }while(!(tmp1!=NULL && tmp1[-1]=='\n' && tmp1[strlen(key)]=='=')); | ||
1109 | |||
1110 | |||
1111 | tmp1+=strlen(key)+1; | ||
1112 | tmp2=__ILWS_stristr(tmp1,"\n"); | ||
1113 | if(tmp2==NULL) { | ||
1114 | tmp2=tmp1+strlen(tmp1); | ||
1115 | }; | ||
1116 | tmpsize=tmp2-tmp1; | ||
1117 | tmp3=__ILWS_add_buffer(ClientInfo->mem,tmpsize+1); | ||
1118 | memcpy(tmp3,tmp1,tmpsize); | ||
1119 | tmp3[tmpsize]=0; | ||
1120 | return tmp3; | ||
1121 | |||
1122 | |||
1123 | |||
1124 | }; | ||