/* * Copyright 2000, International Business Machines Corporation and others. * All Rights Reserved. * * This software has been released under the terms of the IBM Public * License. For details, see the LICENSE file in the top-level source * directory or online at http://www.openafs.org/dl/license10.html */ #include #include #include #include #include #include #include #include #include main(argc, argv) int argc; char **argv; { int cellNum; int rc; time_t current_time; time_t tokenExpireTime; char *expireString; char userName[100]; struct ktc_principal serviceName, clientName; struct ktc_token token; WSADATA WSAjunk; WSAStartup(0x0101, &WSAjunk); if (argc > 1) { printf("%s [-help]\n", argv[0]); return 0; } printf("\nTokens held by the Cache Manager:\n\n"); cellNum = 0; current_time = time((void *) 0); while (1) { rc = ktc_ListTokens(cellNum, &cellNum, &serviceName); if (rc == KTC_NOENT) { /* end of list */ printf(" --End of list --\n"); break; } else if (rc == KTC_NOCM) { printf("AFS device may not have started\n"); break; } else if (rc) { printf("Unexpected error, code %d\n", rc); exit(1); } else { rc = ktc_GetToken(&serviceName, &token, sizeof(token), &clientName); if (rc) { printf("Unexpected error, service %s.%s.%s, code %d\n", serviceName.name, serviceName.instance, serviceName.cell, rc); continue; } tokenExpireTime = token.endTime; strcpy(userName, clientName.name); if (clientName.instance[0] != 0) { strcat(userName, "."); strcat(userName, clientName.instance); } if (userName[0] == '\0') printf("Tokens"); else if (strncmp(userName, "AFS ID", 6) == 0) printf("User's (%s) tokens", userName); else if (strncmp(userName, "Unix UID", 8) == 0) printf("Tokens"); else printf("User %s's tokens", userName); printf(" for %s%s%s@%s ", serviceName.name, serviceName.instance[0] ? "." : "", serviceName.instance, serviceName.cell); if (tokenExpireTime <= current_time) printf("[>> Expired <<]\n"); else { time_t t = tokenExpireTime; expireString = ctime(&t); expireString += 4; /* Skip day of week */ expireString[12] = '\0'; /* Omit secs & year */ printf("[Expires %s]\n", expireString); } } } return(0); }