web services in c with cgi
2016-06-13
352 words
2 mins read
I was trying to setup a simply webservice to reply to POST requests. Earlier this was being done in tomcat which seem a little overkill to me since I already had a webserver up and running. So, a quick c program to respond to request is all that I needed. And here is the result.
/* * ===================================================================================== * * Filename: Login.cpp * * Description: * * Version: 1.0 * Revision: none * Compiler: gcc * * Author: Amit Agarwal (), * Organization: * * == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = */ #include <stdio .h> #include <stdlib .h> #include <string .h> #define MAXLEN 1024 #ifdef DBG #define DEBUG(a,b) fprintf(stderr, a, b); #else #define DEBUG(a,b) #endif #define HEAD "n" #define TAIL "" int main(void) { char input[MAXLEN]; char * data; char*lenstr; long len; printf("%s%c%cnn", "Content-Type:text/xml;charset=iso-8859-1", 13, 10); // len = getenv("QUERY_STRING"); // This is for GET lenstr = getenv("CONTENT_LENGTH"); DEBUG( "Length string is %sn", lenstr); if(lenstr == NULL || sscanf(lenstr,"%ld",&len)!=1 || len > MAXLEN) printf("Error in invocation - wrong FORM probably."); DEBUG( "Length is %ldn", len); { int count=0; while ( count < len ) input[count++] = getchar(); input[count]='?'; DEBUG ( "Read characters = %dn", count) } //fprintf(stderr, "VAlue is %sn", input); ///unencode(input + 5 , input + len, data); data = input; DEBUG("Data value is %sn", data); printf(HEAD); printf("Everything else goes heren"); printf(TAIL); fprintf(stderr, "Sent resp: tid[%s], eaid[%s], tcode[%s]n", tid, eaid, tcode); } </string></stdlib></stdio>
Additionally, the makefile:
all:
gcc -o Login Login.c -Walldebug:
gcc -o Login Login.c -Wall -DDBG=1
And finally, compile this with make command and put in the cgi-bin folder and that is all that you need π
Related articles across the web
Related Articles:
- 2010/05/24 Inotify Example - Introduction to Inotify with a C Program Example
- 2016/05/16 firewalld β enable logging
- 2015/11/30 Disk usage by file type
- 2015/10/15 Get count of lines in scripts (shell)
- 2015/07/09 evvsubst β substitute variables in text in shell
Authored By Amit Agarwal
Amit Agarwal, Linux and Photography are my hobbies.Creative Commons Attribution 4.0 International License.