|
|
1.1 ! root 1: #include <sys/types.h> ! 2: #include <kerberos/krb.h> ! 3: #include <stdio.h> ! 4: #include <netdb.h> ! 5: #include <netinet/in.h> ! 6: #include <sys/file.h> ! 7: #include "register_proto.h" ! 8: ! 9: #define KFILE "update.key%s" ! 10: ! 11: main(argc, argv) ! 12: char **argv; ! 13: { ! 14: char namebuf[255]; ! 15: int fd; ! 16: struct hostent *hp; ! 17: char *addr; ! 18: int i; ! 19: struct sockaddr_in sin; ! 20: ! 21: if(argc != 2) { ! 22: usage(argv[0]); ! 23: exit(1); ! 24: } ! 25: ! 26: hp = gethostbyname(argv[1]); ! 27: for(i = 0; addr = hp->h_addr_list[i]; i++) { ! 28: addr = hp->h_addr_list[i]; ! 29: bcopy(addr, &sin.sin_addr, hp->h_length); ! 30: ! 31: printf("Making key for host %s (%s)\n", ! 32: argv[1], inet_ntoa(sin.sin_addr)); ! 33: make_key(sin.sin_addr); ! 34: } ! 35: printf("==========\n"); ! 36: printf("One copy of the each key should be put in /kerberos on the\n"); ! 37: printf("Kerberos machine (mode 600, owner root).\n"); ! 38: printf("Another copy of each key should be put on the named\n"); ! 39: printf("client as /.update.keyXXX.XXX.XXX.XXX (same modes as above).\n"); ! 40: fflush(stdout); ! 41: } ! 42: ! 43: make_key(addr) ! 44: struct in_addr addr; ! 45: { ! 46: struct keyfile_data kfile; ! 47: char namebuf[255]; ! 48: int fd; ! 49: ! 50: sprintf(namebuf, KFILE, inet_ntoa(addr)); ! 51: fd = open(namebuf, O_WRONLY|O_CREAT, 0600); ! 52: if(fd < 0) { ! 53: perror("open"); ! 54: exit(1); ! 55: } ! 56: random_key(kfile.kf_key); ! 57: if(write(fd, &kfile, sizeof(kfile)) != sizeof(kfile)) { ! 58: fprintf(stderr, "error writing file %s\n", namebuf); ! 59: } ! 60: close(fd); ! 61: } ! 62: usage(name) ! 63: char *name; ! 64: { ! 65: fprintf(stderr, "usage: %s host\n", name); ! 66: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.