void checkConfiguration(){ List *lstConf = initList(); if (0 != getParamsFromFile("conf/httpd.conf", lstConf, '=')) { puts("Could not read configuration file..."); }else{ puts("Configuration file 'conf/httpd.conf' is OK."); } removeAll(lstConf); }
void parseUserInput(int argc, char** argv) { int c; char configfile[30]; int outfileSpecified=0; int configfileSpecified=0; int scaleSpecified=0; if (argc == 1) { fprintf(stderr, "GTgraph-ssca2 [-options]\n"); fprintf(stderr, "\t-s ### SCALE value (integer) to use (default -- 20)\n"); fprintf(stderr, "\t-c ### config file to use\n"); fprintf(stderr, "\t-o ### output file to write the graph to (default -- sample.gr)\n"); fprintf(stderr, "\t-h display this message\n"); fprintf(stderr, "No config file specified\n"); fprintf(stderr, "Assigning default values from init.c\n"); getParams(); updateLog(); } else if (argc <= 5) { while((c = getopt(argc, argv, "s:c:h:o:")) != -1) { switch (c) { case 's': if ((!configfileSpecified) && (!outfileSpecified)) { getParams(); } else if (configfileSpecified) { fprintf(stderr, "Warning: Ignoring the SCALE value given as an input argument. The parameters specified in the config file have been applied\n"); break; } SCALE = atol(optarg); fprintf(stderr, "Applying a SCALE value of %ld\n", SCALE); TotVertices = 1 << SCALE; MaxCliqueSize = (LONG_T) floor(pow(2, (double) (SCALE/3.0))); MaxWeight = 1 << SCALE; updateLog(); scaleSpecified = 1; break; case 'o': outfileSpecified = 1; if ((!configfileSpecified) && (!scaleSpecified)) { fprintf(stderr, "No config file specified, assigning default values ...\n"); getParams(); } WRITE_TO_FILE = 1; strcpy(OUTFILE, optarg); fprintf(stderr, "Graph will be written to %s\n", OUTFILE); updateLog(); break; case 'c': if (scaleSpecified) { fprintf(stderr, "Warning: The parameters specified in the config file will be applied and the previous SCALE value will be lost\n"); } configfileSpecified = 1; if (!outfileSpecified) { if (!scaleSpecified) getParams(); strcpy(configfile, optarg); fprintf(stderr, "Reading config file %s\n", configfile); getParamsFromFile(configfile); } else { strcpy(configfile, optarg); fprintf(stderr, "Updating parameters from config file %s\n", configfile); getParamsFromFile(configfile); } updateLog(); break; case 'h': usage(); default: usage(); } } } else { fprintf(stderr, "Invalid input arguments\n"); usage(); } }
int InitServer() { char ErrBuff[256] = {0}; FILE* fileLogTmp; //############## CONFIGURATE SERVER ############### // Read parameters from 'conf/httpd.conf' to list List *lstConf = initList(); if (0 != getParamsFromFile("conf/httpd.conf", lstConf, '=')) { puts("Could not read configuration file..."); return 1; } // Apply parameters from list (or set to default, if they are absent) int port = getParamInt(lstConf, "portListen", 80); int maxConn = getParamInt(lstConf, "maxConnection", 100); char *logAccessPath = getParamS(lstConf, "logAccess", "log/access.log"); char *logErrorPath = getParamS(lstConf, "logError", "log/error.log"); defaultPage = getParamS(lstConf, "defaultPage", "/index.htm"); rootFolder = getParamS(lstConf, "rootFolder", "www/"); char *interface = getParamS(lstConf, "interfaceToListen", ""); // Open new log files if ( initErrorLog(logErrorPath) == 0 ) { return 1; } if ( !( fileLogAccess = fopen(logAccessPath, "a") ) ) { snprintf(ErrBuff, sizeof(ErrBuff), "Could not open '%s'!", logAccessPath); puts(ErrBuff); logError(ErrBuff); return 1; } // Check if default page exists char *fullPath = malloc(strlen(rootFolder)+strlen(defaultPage)+1); strcpy(fullPath, rootFolder); strcat(fullPath, defaultPage); if (fileExists(fullPath) != 0) { snprintf(ErrBuff, sizeof(ErrBuff), "Could not find default page following next path: '%s'!", fullPath); puts(ErrBuff); logError(ErrBuff); } // Free data with configuration from memory removeAll(lstConf); //############# START SERVER ############### struct sockaddr_in saddr; // used for getting IP _ socklen_t len = sizeof( saddr );// of incomming connection _ char IP_Buff[INET_ADDRSTRLEN]; // defined in <netinet/in.h> . int listenSocket = 0, connSocket = 0; pid_t child_pid; // Try to start server listenSocket = startServer(interface, port, maxConn); if (listenSocket > 0) { #ifndef __DEBUG_MODE__ logError("#Server started Successfully!"); #endif printf("\n\nServer started Successfully!\n\n"); //############# MAIN PROCESSING LOOP ############### while(1) { // Wait few second, if there's no connections - continue if (wait4Socket(listenSocket, ACCEPT_TIMEOUT) > 0) { connSocket = accept( listenSocket, ( struct sockaddr* )&saddr, &len ); if ( listenSocket < 0 ) { logError("Accept Error..."); break; } child_pid = fork (); if (child_pid == 0) //#### child thread #### { #ifndef __DEBUG_MODE__ close (STDIN_FILENO); //child don't need to print anything, close (STDOUT_FILENO); // so close input/output streams #endif close (listenSocket); //close a child-copy of listening port if ( inet_ntop( AF_INET, &saddr.sin_addr, IP_Buff, INET_ADDRSTRLEN ) == NULL ) { logError("Can't convert IP addr"); close(connSocket); exit(1); } procConn(IP_Buff, connSocket); exit (0); // close child process } else if (child_pid > 0) // #### parent thread #### { close (connSocket); #ifdef __DEBUG_MODE__ if (getComm() == 0) { break; } #endif } else logError("Can't fork"); // if can't create child } } close(listenSocket); // close parent listenSocket #ifndef __DEBUG_MODE__ logError("#Server closed Successfully!"); #endif printf("\n\nServer closed Successfully!\n\n"); return 0; } logError("#Server was not started!"); printf("\n\nServer was not started! See error.log to get more information!\n\n"); return 1; }
void parseUserInput(int argc, char** argv) { int c; char configfile[30]; int outfileSpecified = 0; int configfileSpecified = 0; int typeSpecified = 0; if (argc == 1) { fprintf(stderr, "GTgraph-random [-options]\n"); fprintf(stderr, "\t-c ### config file to use\n"); fprintf(stderr, "\t-t ### random graph model\n"); fprintf(stderr, "\t (0 for G(n, p), 1 for G(n, m))\n"); fprintf(stderr, "\t-n ### no. of vertices\n"); fprintf(stderr, "\t-p ### probability of an edge (graph model 0)\n"); fprintf(stderr, "\t-m ### no. of edges (graph model 1)\n"); fprintf(stderr, "\t-o ### output file to write the graph to\n"); fprintf(stderr, "\t (default: sample.gr)\n"); fprintf(stderr, "\t-h display this message\n\n"); fprintf(stderr, "No config file specified\n"); fprintf(stderr, "Assigning default values from init.c\n"); getParams(); updateLog(); } else if (argc <= 9) { while ((c = getopt(argc, argv, "c:t:n:m:p:o:h:")) != -1) { switch (c) { case 't': if (configfileSpecified) break; if (!outfileSpecified) { getParams(); } GRAPH_MODEL = atoi(optarg); typeSpecified = 1; fprintf(stderr, "Graph model %d chosen\n", GRAPH_MODEL); updateLog(); break; case 'o': outfileSpecified = 1; if ((!configfileSpecified) && (!typeSpecified)) { fprintf(stderr, "No config file specified, assigning default values ...\n"); getParams(); } WRITE_TO_FILE = 1; strcpy(OUTFILE, optarg); fprintf(stderr, "Graph will be written to %s\n", OUTFILE); updateLog(); break; case 'c': fprintf(stderr, "Warning: The parameters specified in the config file will be applied and all other options will be lost\n"); configfileSpecified = 1; if (!outfileSpecified) { getParams(); strcpy(configfile, optarg); fprintf(stderr, "Reading config file %s\n", configfile); getParamsFromFile(configfile); } else { strcpy(configfile, optarg); fprintf(stderr, "Updating parameters from config file %s\n", configfile); getParamsFromFile(configfile); } updateLog(); break; case 'n': if (configfileSpecified) break; if (!typeSpecified) { fprintf(stderr, "Error! First specify graph model using the -t option before this argument\n"); exit(-1); } n = atol(optarg); fprintf(stderr, "n is set to %ld\n", n); updateLog(); break; case 'p': if (configfileSpecified) break; if (!typeSpecified) { fprintf(stderr, "Error! First specify graph model using the -t option before this argument\n"); exit(-1); } p = atof(optarg); fprintf(stderr, "p is set to %lf\n", p); updateLog(); break; case 'm': if (configfileSpecified) break; if (!typeSpecified) { fprintf(stderr, "Error! First specify graph model using the -t option before this argument\n"); exit(-1); } m = atol(optarg); fprintf(stderr, "m is set to %ld\n", m); updateLog(); break; case 'h': usage(); default: usage(); } } } else { fprintf(stderr, "Invalid input arguments\n"); usage(); } }