ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/ihost/ihost.c
(Generate patch)

Comparing projects/cms/source/ihost/ihost.c (file contents):
Revision 1.40 by pajs, Sun Apr 6 12:08:37 2003 UTC vs.
Revision 1.49 by tdb, Sun Jan 18 23:29:15 2004 UTC

# Line 1 | Line 1
1   /*
2   * i-scream central monitoring system
3 < * http://www.i-scream.org.uk
3 > * http://www.i-scream.org
4   * Copyright (C) 2000-2002 i-scream
5   *
6   * This program is free software; you can redistribute it and/or
# Line 47 | Line 47 | typedef struct{
47  
48          char *host_ip;
49          char *host_fqdn;
50 +        int preset_fqdn;
51 +        int preset_ip;
52  
53          char *server_fqdn;
54          int server_udp_port;
# Line 168 | Line 170 | void log_msg(int level, char *format, ...){
170          }
171   }
172  
171 /* Takes many pointers, checks if they are NULL or not, and then free's them */
172 /* Deprciated - and i only wrote it today! :)
173 void m_free(int num_pointers, ...){
174        int x=0;
175        va_list ap;
176        void *p;
177
178        va_start(ap, num_pointers);
179        for(;x<num_pointers;x++){
180                p=va_arg(ap, void*);
181                if(p!=NULL){
182                        free(p);
183                }
184        }
185        va_end(ap);
186 }
187 */
188
173   int create_udp_sockinfo(udp_sockinfo_t *udp_sockinfo, char *hostname, int port){
174  
175          struct in_addr haddr;
# Line 257 | Line 241 | int tcp_comm(FILE *f, char *send, char **response, cha
241          *response=fpgetline(f);
242          fseek(f, 0, SEEK_CUR);
243  
244 <        if(*response!=NULL) log_msg(LOG_DEBUG, "Recieved %s", *response);
244 >        if(*response!=NULL) log_msg(LOG_DEBUG, "Received %s", *response);
245  
246          if( (*response==NULL) || (strcmp(*response, "ERROR")==0) ) return -1;
247          
# Line 385 | Line 369 | int ihost_getconfig(ihost_state_t *ihost_state){
369                          goto error;
370                  }
371  
388                printf("string : %s\n", response_ptr);
372                  server_udp_port=atoi(response_ptr);
373  
374                  if (server_udp_port==0){
# Line 406 | Line 389 | int ihost_getconfig(ihost_state_t *ihost_state){
389           * this already be NULL */
390          if(ihost_state->file_list!=NULL) free(ihost_state->file_list);
391          if(ihost_state->last_modified!=NULL) free(ihost_state->last_modified);
409        if(ihost_state->host_fqdn!=NULL) free(ihost_state->host_fqdn);
392          if(ihost_state->server_fqdn!=NULL) free(ihost_state->server_fqdn);
411        if(ihost_state->host_ip!=NULL) free(ihost_state->host_ip);
393  
394 +        if(ihost_state->preset_fqdn){
395 +                if(host_fqdn != NULL) free(host_fqdn);
396 +        }else{
397 +                if(ihost_state->host_fqdn!=NULL) free(ihost_state->host_fqdn);
398 +                ihost_state->host_fqdn=host_fqdn;
399 +        }
400 +
401 +        if(ihost_state->preset_ip){
402 +                if(host_ip != NULL) free(host_ip);
403 +        }else{
404 +                if(ihost_state->host_ip!=NULL) free(ihost_state->host_ip);
405 +                ihost_state->host_ip=host_ip;
406 +        }
407 +
408 +
409          ihost_state->file_list=file_list;
410          ihost_state->last_modified=last_modified;
415        ihost_state->host_fqdn=host_fqdn;
416        ihost_state->host_ip=host_ip;
411          ihost_state->server_fqdn=server_fqdn;
412          ihost_state->server_udp_port=server_udp_port;
413          ihost_state->udp_update_time=udp_update_time;
# Line 699 | Line 693 | too_big_error:
693  
694          
695   void usage(char *progname){
696 <        fprintf(stderr, "Usage %s [options] server port\n", progname);
697 <        fprintf(stderr, "Options\n");
698 <        fprintf(stderr, "  -v           Verbose mode,-vv would make even more verbose\n");
699 <        fprintf(stderr, "  -f           Foreground mode, print errors to stderr\n");
700 <        fprintf(stderr, "  -V           Print version number\n");
701 <        fprintf(stderr, "  -h           Prints this help page\n");
696 >        fprintf(stderr, "Usage %s [-v[v]] [-f] [-n name] [-i ip] [-s server] [-p port] [-V] [-h]\n\n", progname);
697 >        fprintf(stderr, "  -v    Verbose mode, -vv would make even more verbose\n");
698 >        fprintf(stderr, "  -f    Foreground mode, print errors to stderr\n");
699 >        fprintf(stderr, "  -n    Set the machine name to be reported as\n");
700 >        fprintf(stderr, "  -i    Set the IP to be reported as\n");
701 >        fprintf(stderr, "  -s    Specifies the i-scream server to connect to\n");
702 >        fprintf(stderr, "          default: %s\n", DEF_SERVER_NAME);
703 >        fprintf(stderr, "  -p    Specifies the i-scream server port\n");
704 >        fprintf(stderr, "          default: %d\n", DEF_SERVER_PORT);
705 >        fprintf(stderr, "  -V    Print version number\n");
706 >        fprintf(stderr, "  -h    Prints this help page\n");
707 >        fprintf(stderr, "\nReport bugs to <%s>.\n", PACKAGE_BUGREPORT);
708          exit(1);
709   }
710  
# Line 731 | Line 731 | int main(int argc, char **argv){
731          ihost_config.log=stderr;
732  
733          /* Blank ihost_state to default settings */
734 <        ihost_state.filtermanager_host=NULL;
734 >        ihost_state.filtermanager_host=DEF_SERVER_NAME;
735 >        ihost_state.filtermanager_port=DEF_SERVER_PORT;
736          ihost_state.host_fqdn=NULL;
737          ihost_state.host_ip=NULL;
738 +        ihost_state.preset_fqdn = 0;
739 +        ihost_state.preset_ip = 0;
740          ihost_state.server_fqdn=NULL;
741          ihost_state.file_list=NULL;
742          ihost_state.last_modified=NULL;
743  
744 <        while((cmdopt=getopt(argc, argv, "vfhV")) != -1){
744 >        while((cmdopt=getopt(argc, argv, "vfVn:i:s:p:h")) != -1){
745                  switch(cmdopt){
746                          case 'v':
747                                  ihost_config.verbose++;
# Line 749 | Line 752 | int main(int argc, char **argv){
752                                  ihost_config.daemon=0;
753                                  break;
754  
752                        case 'h':
753                                usage(argv[0]);
754                                break;
755
755                          case 'V':
756                                  fprintf(stderr, "%s version %s\n", argv[0], VERSION);
757                                  break;
758 +                        case 'n':
759 +                                ihost_state.preset_fqdn = 1;
760 +                                ihost_state.host_fqdn = strdup(optarg);
761 +                                if(ihost_state.host_fqdn == NULL){
762 +                                        fprintf(stderr, "Missing hostname\n");  
763 +                                        usage(argv[0]);
764 +                                }
765 +                                break;
766 +                        case 'i':
767 +                                /* Hmm.. Someone could set any string to be the IP, and it will let it */
768 +                                ihost_state.preset_ip = 1;
769 +                                ihost_state.host_ip = strdup(optarg);
770 +                                if(ihost_state.host_ip == NULL){
771 +                                        fprintf(stderr, "Missing ip\n");        
772 +                                        usage(argv[0]);
773 +                                }
774 +                                break;
775  
776 +                        case 's':
777 +                                ihost_state.filtermanager_host=strdup(optarg);
778 +                                break;
779 +
780 +                        case 'p':
781 +                                ihost_state.filtermanager_port=atoi(optarg);
782 +                                break;
783 +
784 +                        case 'h':
785                          default:
786                                  usage(argv[0]);
787                                  exit(1);
788                  }
789          }
790  
766        if(argc!=optind+2){
767                usage(argv[0]);
768                exit(1);
769        }
770
771        ihost_state.filtermanager_host=strdup(argv[optind]);
772        ihost_state.filtermanager_port=atoi(argv[optind+1]);
773        
791          if(gethostbyname(ihost_state.filtermanager_host)==NULL){
792                  log_msg(LOG_CRIT, "Failed to lookup hostname. Please check settings");
793                  exit(1);
# Line 807 | Line 824 | int main(int argc, char **argv){
824  
825          }
826  
827 <        log_msg(LOG_INFO, "Starting ihost");
827 >        log_msg(LOG_INFO, "Starting ihost...");
828 >
829 >        log_msg(LOG_DEBUG, "Running statgrab_init()");
830 >        if(statgrab_init()){
831 >                log_msg(LOG_CRIT, "statgrab_init failed (%m)");
832 >                exit(1);
833 >        }
834          
835          log_msg(LOG_DEBUG,"Writing PID FILE");
836  
# Line 835 | Line 858 | int main(int argc, char **argv){
858                  sleep(10);
859          }
860  
838        printf("%s\n%d\n", ihost_state.server_fqdn, ihost_state.server_udp_port);
861          while((create_udp_sockinfo(&udp_sockinfo, ihost_state.server_fqdn, ihost_state.server_udp_port))!=0){
862                  log_msg(LOG_ERR, "Failed to create udp socket");        
863                  sleep(10);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines