/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to plugins.d/mandosclient.c

  • Committer: Björn Påhlsson
  • Date: 2008-07-21 03:58:36 UTC
  • mfrom: (17 mandos)
  • mto: This revision was merged to the branch mainline in revision 20.
  • Revision ID: belorn@braxen-20080721035836-v7220bmolr608r61
Added getopt_long support for mandosclient and passprompt
Added support for --interface for mandosclient
Added support for --prefix for passprompt

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
#include <errno.h>              /* perror() */
51
51
#include <gpgme.h>
52
52
 
 
53
// getopt long
 
54
#include <getopt.h>
53
55
 
54
56
#ifndef CERT_ROOT
55
57
#define CERT_ROOT "/conf/conf.d/cryptkeyreq/"
60
62
#define DH_BITS 1024
61
63
 
62
64
bool debug = false;
 
65
char *interface = "eth0";
63
66
 
64
67
typedef struct {
65
68
  gnutls_session_t session;
197
200
    new_packet_length += ret;
198
201
  }
199
202
 
200
 
  if(debug){
201
 
    fprintf(stderr, "decrypted password is: %s\n", *new_packet);
202
 
  }
203
 
 
204
 
   /* Delete the GPGME plaintext data buffer */
 
203
  /* FIXME: check characters before printing to screen so to not print
 
204
     terminal control characters */
 
205
  /*   if(debug){ */
 
206
  /*     fprintf(stderr, "decrypted password is: "); */
 
207
  /*     fwrite(*new_packet, 1, new_packet_length, stderr); */
 
208
  /*     fprintf(stderr, "\n"); */
 
209
  /*   } */
 
210
  
 
211
  /* Delete the GPGME plaintext data buffer */
205
212
  gpgme_data_release(dh_plain);
206
213
  return new_packet_length;
207
214
}
322
329
  size_t buffer_capacity = 0;
323
330
  ssize_t decrypted_buffer_size;
324
331
  int retval = 0;
325
 
  const char interface[] = "eth0";
326
332
 
327
333
  if(debug){
328
334
    fprintf(stderr, "Setting up a tcp connection to %s\n", ip);
553
559
int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED char*argv[]) {
554
560
    AvahiServerConfig config;
555
561
    AvahiSServiceBrowser *sb = NULL;
556
 
    const char db[] = "--debug";
557
562
    int error;
558
 
    int ret = 1;
 
563
    int ret;
559
564
    int returncode = EXIT_SUCCESS;
560
 
    char *basename = rindex(argv[0], '/');
561
 
    if(basename == NULL){
562
 
      basename = argv[0];
563
 
    } else {
564
 
      basename++;
565
 
    }
566
 
    
567
 
    char *program_name = malloc(strlen(basename) + sizeof(db));
568
 
 
569
 
    if (program_name == NULL){
570
 
      perror("argv[0]");
571
 
      return EXIT_FAILURE;
572
 
    }
573
 
    
574
 
    program_name[0] = '\0';
575
 
    
576
 
    for (int i = 1; i < argc; i++){
577
 
      if (not strncmp(argv[i], db, 5)){
578
 
          strcat(strcat(strcat(program_name, db ), "="), basename);
579
 
          if(not strcmp(argv[i], db) or not strcmp(argv[i], program_name)){
580
 
            debug = true;
581
 
          }
582
 
        }
583
 
    }
584
 
    free(program_name);
585
 
 
 
565
 
 
566
    while (true){
 
567
      static struct option long_options[] = {
 
568
        {"debug", no_argument, (int *)&debug, 1},
 
569
        {"interface", required_argument, 0, 'i'},
 
570
        {0, 0, 0, 0} };
 
571
 
 
572
      int option_index = 0;
 
573
      ret = getopt_long (argc, argv, "i:", long_options, &option_index);
 
574
 
 
575
      if (ret == -1){
 
576
        break;
 
577
      }
 
578
      
 
579
      switch(ret){
 
580
      case 0:
 
581
        break;
 
582
      case 'i':
 
583
        interface = optarg;
 
584
        break;
 
585
      default:
 
586
        exit(EXIT_FAILURE);
 
587
      }
 
588
    }
 
589
    
586
590
    if (not debug){
587
591
      avahi_set_log_function(empty_log);
588
592
    }
648
652
    if (simple_poll)
649
653
        avahi_simple_poll_free(simple_poll);
650
654
 
651
 
    return ret;
 
655
    return returncode;
652
656
}