"Fossies" - the Fresh Open Source Software Archive

Member "tlswrap-1.04/config.c" (25 Nov 2006, 4033 Bytes) of package /linux/privat/old/tlswrap-1.04.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "config.c" see the Fossies "Dox" file reference documentation.

    1 #include "config.h"
    2 
    3 #include <fcntl.h>
    4 #include <stdio.h>
    5 #include <stdlib.h>
    6 #include <string.h>
    7 #ifdef WIN32
    8 #include <io.h>
    9 #define F_OK 00
   10 #define snprintf _snprintf
   11 #define access _access
   12 #else
   13 #include <unistd.h>
   14 #endif
   15 
   16 #include "tlswrap.h"
   17 
   18 #ifndef HAVE_STRLCPY
   19 #include "misc.h"
   20 #endif
   21 
   22 /*
   23 extern char *optarg;
   24 extern int optind;
   25 extern int optopt;
   26 extern int opterr;
   27 extern int optreset;
   28 */
   29 
   30 /*
   31     Check the "default" egd-pool locations.
   32 */
   33 
   34 void    egd_check(char *cfg_egdsock, int cfg_egdsock_max)
   35 {
   36     const char std_loc[3][18]= {"/var/run/egd-pool",
   37         "/dev/egd-pool", "/etc/egd-pool"};
   38     int i;
   39 
   40     for (i = 0; i < 3; i++) {
   41         if (access(std_loc[i], F_OK) == 0) {
   42             strlcpy(cfg_egdsock, std_loc[i], cfg_egdsock_max);
   43             return;
   44         }
   45     }
   46 
   47     cfg_egdsock[0] = '\0';
   48 }
   49 
   50 /*
   51     Configure everything.
   52 */
   53 
   54 void    read_config(int argc, char * const *argv, unsigned int *users,
   55     char *listenport, int listenmax, int *debug, char *cfg_egdsock,
   56     int cfg_egdsock_max, char *tlsciphers, int tlsciphersmax,
   57     unsigned int *tcpbufsize, unsigned int *tcpsndlowat, char
   58     *listenhost, int listenhostmax, char *token, int tokenmax, int *sec_mode,
   59     char *certspath, int certspathmax, int *serv_install, int *serv_remove, 
   60     int *key_wait, char *serv_install_opt, int serv_install_max,
   61     char *ucertspath, int ucertspathmax, char *cafile, int cafilemax,
   62     char *crlfile, int crlfilemax)
   63 {
   64     signed char ch; /* StrongARM fix */
   65     char *ep;
   66 
   67     /* Set defaults first */
   68 
   69     *users = 5;
   70     *certspath = '\0';
   71     *ucertspath = '\0';
   72     *cafile = '\0';
   73     *crlfile = '\0';
   74     strlcpy(listenport, "7000", listenmax);
   75     strlcpy(listenhost, "127.0.0.1", listenhostmax);
   76     strlcpy(token, "#@:%+", tokenmax);
   77     *debug = 0;
   78     *sec_mode = 0;
   79     *tcpbufsize = 32768;
   80     *tcpsndlowat = DBUF_SIZE;
   81     egd_check(cfg_egdsock, cfg_egdsock_max);
   82     *serv_remove = *serv_install = 0;
   83     *key_wait = 0;
   84 
   85     strlcpy(tlsciphers,"DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:RC4-SHA:RC4-MD5:DHE-DSS-RC4-SHA:DES-CBC3-SHA:DES-CBC3-MD5:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA",
   86         tlsciphersmax);
   87 
   88     while ((ch = getopt(argc, argv, "a:b:B:c:C:dE:h:I:kl:p:P:r:Rs:St:")) != -1)
   89         switch (ch) {
   90         case 'a':
   91             strlcpy(cafile, optarg, cafilemax);
   92             break;
   93         case 'b':
   94             *tcpbufsize = strtol(optarg, &ep, 10);
   95             if (*tcpbufsize <= 0 || *ep != '\0') {
   96                 fprintf(stderr,"illegal number -- %s", optarg);
   97                 exit(1);
   98             }
   99         case 'B':
  100             *tcpsndlowat = strtol(optarg, &ep, 10);
  101             if (*tcpsndlowat <= 0 || *ep != '\0') {
  102                 fprintf(stderr, "illegal number -- %s", optarg);
  103                 exit(1);
  104             }
  105         case 'c':
  106             *users = strtol(optarg, &ep, 10);
  107             if (*users <= 0 || *ep != '\0') {
  108                 fprintf(stderr, "illegal number -- %s", optarg);
  109                 exit(1);
  110             }
  111             break;
  112         case 'C':
  113             strlcpy(tlsciphers, optarg, tlsciphersmax);
  114             break;
  115         case 'd':
  116             *debug = 1;
  117             break;
  118         case 'E':
  119             strlcpy(cfg_egdsock, optarg, cfg_egdsock_max);
  120             break;
  121         case 'h':
  122             strlcpy(listenhost, optarg, listenhostmax);
  123             break;
  124         case 'I':
  125             *serv_install = 1;
  126             strlcpy(serv_install_opt, optarg, serv_install_max);
  127             break;
  128         case 'k':
  129             *key_wait = 1;
  130             break;
  131         case 'l':
  132             strlcpy(listenport, optarg, listenmax);
  133             break;
  134         case 'p':
  135             strlcpy(certspath, optarg, certspathmax);
  136             break;
  137         case 'P':
  138             strlcpy(ucertspath, optarg, ucertspathmax);
  139             break;
  140         case 's':
  141             *sec_mode = strtol(optarg, &ep, 10);
  142             if (*sec_mode < 0 || *ep != '\0') {
  143                 fprintf(stderr, "illegal number -- %s", optarg);
  144                 exit(1);
  145             }
  146             break;
  147         case 'r':
  148             strlcpy(crlfile, optarg, crlfilemax);
  149             break;
  150         case 'R':
  151             *serv_remove = 1;
  152             break;
  153         case 'S': break; /* empty for WIN32 service */
  154         case 't':
  155             if (strlen(optarg) == (tokenmax - 1))
  156                 strlcpy(token, optarg, tokenmax);
  157             else {
  158                 fprintf(stderr, "tokens must be %d characters\n", tokenmax - 1);
  159                 exit(1);
  160             }
  161             break;
  162         default:
  163             usage();
  164         }
  165         
  166     argc -= optind;
  167         argv += optind;
  168 
  169 }
  170 void usage()
  171 {
  172     (void)fprintf(stderr, "usage: %s [-c max] [-C list] [-d] [-E socket] [-h host] [-l port] [-p certs_path] [-s mode] [-t tokens]\n","tlswrap");
  173     exit(1);
  174 }