/mandos/release

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

« back to all changes in this revision

Viewing changes to plugins.d/mandosclient.c

  • Committer: Teddy Hogeborn
  • Date: 2008-07-21 02:33:00 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080721023300-c4t0cq7sxit973py
* plugins.d/Makefile: Removed

* plugins.d/mandosclient.c (start_mandos_communcation): Bug fix: write
                                                        server IP
                                                        address to
                                                        "to" struct.

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>
55
53
 
56
54
#ifndef CERT_ROOT
57
55
#define CERT_ROOT "/conf/conf.d/cryptkeyreq/"
62
60
#define DH_BITS 1024
63
61
 
64
62
bool debug = false;
65
 
char *interface = "eth0";
66
63
 
67
64
typedef struct {
68
65
  gnutls_session_t session;
200
197
    new_packet_length += ret;
201
198
  }
202
199
 
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 */
 
200
  if(debug){
 
201
    fprintf(stderr, "decrypted password is: %s\n", *new_packet);
 
202
  }
 
203
 
 
204
   /* Delete the GPGME plaintext data buffer */
212
205
  gpgme_data_release(dh_plain);
213
206
  return new_packet_length;
214
207
}
318
311
 
319
312
void empty_log(AvahiLogLevel level, const char *txt){}
320
313
 
321
 
int start_mandos_communication(char *ip, uint16_t port){
 
314
int start_mandos_communcation(char *ip, uint16_t port){
322
315
  int ret, tcp_sd;
323
316
  struct sockaddr_in6 to;
324
317
  encrypted_session es;
328
321
  size_t buffer_capacity = 0;
329
322
  ssize_t decrypted_buffer_size;
330
323
  int retval = 0;
 
324
  const char interface[] = "eth0";
331
325
 
332
326
  if(debug){
333
327
    fprintf(stderr, "Setting up a tcp connection to %s\n", ip);
500
494
            if(debug){
501
495
              fprintf(stderr, "Mandos server found at %s on port %d\n", ip, port);
502
496
            }
503
 
            int ret = start_mandos_communication(ip, port);
 
497
            int ret = start_mandos_communcation(ip, port);
504
498
            if (ret == 0){
505
499
              exit(EXIT_SUCCESS);
506
500
            } else {
558
552
int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED char*argv[]) {
559
553
    AvahiServerConfig config;
560
554
    AvahiSServiceBrowser *sb = NULL;
 
555
    const char db[] = "--debug";
561
556
    int error;
562
 
    int ret;
 
557
    int ret = 1;
563
558
    int returncode = EXIT_SUCCESS;
564
 
 
565
 
    while (true){
566
 
      static struct option long_options[] = {
567
 
        {"debug", no_argument, (int *)&debug, 1},
568
 
        {"interface", required_argument, 0, 'i'},
569
 
        {0, 0, 0, 0} };
570
 
 
571
 
      int option_index = 0;
572
 
      ret = getopt_long (argc, argv, "i:", long_options, &option_index);
573
 
 
574
 
      if (ret == -1){
575
 
        break;
576
 
      }
577
 
      
578
 
      switch(ret){
579
 
      case 0:
580
 
        break;
581
 
      case 'i':
582
 
        interface = optarg;
583
 
        break;
584
 
      default:
585
 
        exit(EXIT_FAILURE);
586
 
      }
587
 
    }
588
 
    
 
559
    char *basename = rindex(argv[0], '/');
 
560
    if(basename == NULL){
 
561
      basename = argv[0];
 
562
    } else {
 
563
      basename++;
 
564
    }
 
565
    
 
566
    char *program_name = malloc(strlen(basename) + sizeof(db));
 
567
 
 
568
    if (program_name == NULL){
 
569
      perror("argv[0]");
 
570
      return EXIT_FAILURE;
 
571
    }
 
572
    
 
573
    program_name[0] = '\0';
 
574
    
 
575
    for (int i = 1; i < argc; i++){
 
576
      if (not strncmp(argv[i], db, 5)){
 
577
          strcat(strcat(strcat(program_name, db ), "="), basename);
 
578
          if(not strcmp(argv[i], db) or not strcmp(argv[i], program_name)){
 
579
            debug = true;
 
580
          }
 
581
        }
 
582
    }
 
583
    free(program_name);
 
584
 
589
585
    if (not debug){
590
586
      avahi_set_log_function(empty_log);
591
587
    }
651
647
    if (simple_poll)
652
648
        avahi_simple_poll_free(simple_poll);
653
649
 
654
 
    return returncode;
 
650
    return ret;
655
651
}