#include #include #include #include #include #include #include #include #include #define UNIX_SOCKET_FILE "/tmp/modelbahn.socket" #define LOG_FILE "/tmp/modelbahn-cgi.log" #define BUFFERSIZE 64000 //extern char **environ; int main (int argc, char **argv) { int i, inlen; FILE *logf; char buffer[BUFFERSIZE+1]; char *ptr = NULL; printf ("Content-type: text/html\n"); printf ("Expires: now\n"); printf ("Pragma: no-cache\n"); printf ("\n"); // // open logfile for writing logf = fopen(LOG_FILE, "a+"); if (logf == NULL) return 0; fprintf (logf, "*************************************\n"); // // read data memset (buffer, 0x0, BUFFERSIZE+1); // FIXME: fgets is wrong.... for (ptr = buffer, inlen = 0; inlen < BUFFERSIZE-1 && (fgets (ptr, BUFFERSIZE - inlen, stdin)) > 0;) { inlen = strlen (buffer); ptr = buffer+inlen; } if (inlen >= BUFFERSIZE-1) fprintf (logf, "read input puffer full.\n"); fprintf (logf, "read from stdin %d bytes\n", strlen(buffer)); // // send data to server UNIX u; if (u.Connect(UNIX_SOCKET_FILE) != 1) return 0; u.Write(buffer, strlen(buffer)); // // read data and send back to the web server do { i = u.ReadTimeout(buffer, BUFFERSIZE-1, 1000); buffer[i] = 0; fprintf (logf, "read from server %d bytes\n", i); printf ("%s", buffer); } while (i == BUFFERSIZE-1); u.Close(); fclose (logf); return 0; };