int main(int argc, char **argv) { char ** ptr; const char * myName; // find our name myName = strrchr( argv[0], DIR_DELIM_CHAR ); if( !myName ) { myName = argv[0]; } else { myName++; } int cred_type = 0; char * cred_name = NULL; char * cred_file_name = NULL; char * myproxy_user = NULL; char * myproxy_host = NULL; int myproxy_port = 0; char * myproxy_dn = NULL; char * server_address= NULL; // read config file myDistro->Init (argc, argv); config(); for (ptr=argv+1,argc--; argc > 0; argc--,ptr++) { if ( ptr[0][0] == '-' ) { switch ( ptr[0][1] ) { case 'h': usage(myName); exit(0); break; case 'd': // dprintf to console Termlog = 1; dprintf_config ("TOOL", get_param_functions()); break; case 'S': // dprintf to console Termlog = 1; Read_Myproxy_pw_terminal = false; break; case 'n': if( !(--argc) || !(*(++ptr)) ) { fprintf( stderr, "%s: -n requires another argument\n", myName ); exit(1); } server_address = strdup (*ptr); break; case 't': if( !(--argc) || !(*(++ptr)) ) { fprintf( stderr, "%s: -t requires another argument\n", myName ); exit(1); } if (strcmp (*ptr, "x509") == 0) { cred_type = X509_CREDENTIAL_TYPE; } else { fprintf( stderr, "Invalid credential type %s\n", *ptr ); exit(1); } break; case 'f': if( !(--argc) || !(*(++ptr)) ) { fprintf( stderr, "%s: -f requires another argument\n", myName ); exit(1); } cred_file_name = strdup (*ptr); break; case 'N': if( !(--argc) || !(*(++ptr)) ) { fprintf( stderr, "%s: -N requires another argument\n", myName ); exit(1); } cred_name = strdup (*ptr); break; case 'm': if( !(--argc) || !(*(++ptr)) ) { fprintf( stderr, "%s: -m requires another argument\n", myName ); exit(1); } parseMyProxyArgument (*ptr, myproxy_user, myproxy_host, myproxy_port); break; case 'D': if( !(--argc) || !(*(++ptr)) ) { fprintf( stderr, "%s: -D requires another argument\n", myName ); exit(1); } myproxy_dn = strdup (*ptr); break; case 'v': version(); // this function calls exit(0) break; default: fprintf( stderr, "%s: Unknown option %s\n", myName, *ptr); usage(myName); exit(1); } } //fi } //rof if (( cred_file_name == NULL ) || (cred_type == 0)) { fprintf ( stderr, "Credential filename or type not specified\n"); exit (1); } Credential * cred = NULL; if (cred_type == X509_CREDENTIAL_TYPE) { cred = new X509Credential(); } else { fprintf ( stderr, "Invalid credential type\n"); exit (1); } char * data = NULL; int data_size; if (!read_file (cred_file_name, data, data_size)) { fprintf (stderr, "Can't open %s\n", cred_file_name); exit (1); } cred->SetData (data, data_size); if (cred_name !=NULL) { cred->SetName(cred_name); } else { cred->SetName(DEFAULT_CREDENTIAL_NAME); } char * username = my_username(0); cred->SetOwner (username); if (cred_type == X509_CREDENTIAL_TYPE && myproxy_host != NULL) { X509Credential * x509cred = (X509Credential*)cred; MyString str_host_port = myproxy_host; if (myproxy_port != 0) { str_host_port += ":"; str_host_port += myproxy_port; } x509cred->SetMyProxyServerHost (str_host_port.Value()); if (myproxy_user != NULL) { x509cred->SetMyProxyUser (myproxy_user); } else { x509cred->SetMyProxyUser (username); } if (myproxy_dn != NULL) { x509cred->SetMyProxyServerDN (myproxy_dn); } char * myproxy_password; if ( Read_Myproxy_pw_terminal ) { myproxy_password = prompt_password( "Please enter the MyProxy password:"******"Please enter the MyProxy password from the standard input\n"); } if (myproxy_password) { x509cred->SetRefreshPassword ( myproxy_password ); } x509cred->display( D_FULLDEBUG ); } CondorError errstack; DCCredd dc_credd (server_address); // resolve server address if ( ! dc_credd.locate() ) { fprintf (stderr, "%s\n", dc_credd.error() ); return 1; } if (dc_credd.storeCredential(cred, errstack)) { printf ("Credential submitted successfully\n"); } else { fprintf (stderr, "Unable to submit credential\n%s\n", errstack.getFullText(true)); return 1; } return 0; }
int main(int argc, char **argv) { char * server_address = NULL; char * cred_name = NULL; char ** ptr; const char * myName; // find our name myName = strrchr( argv[0], DIR_DELIM_CHAR ); if( !myName ) { myName = argv[0]; } else { myName++; } // read config file myDistro->Init (argc, argv); config(); for (ptr=argv+1,argc--; argc > 0; argc--,ptr++) { if ( ptr[0][0] == '-' ) { switch ( ptr[0][1] ) { case 'h': usage(myName); exit(0); break; case 'd': // dprintf to console Termlog = 1; dprintf_config ("TOOL", get_param_functions()); break; case 'n': if( !(--argc) || !(*(++ptr)) ) { fprintf( stderr, "%s: -n requires another argument\n", myName ); exit(1); } server_address = strdup (*ptr); break; case 'N': if( !(--argc) || !(*(++ptr)) ) { fprintf( stderr, "%s: -N requires another argument\n", myName ); exit(1); } cred_name = strdup (*ptr); break; case 'v': version(); // this function calls exit(0) break; default: fprintf( stderr, "%s: Unknown option %s\n", myName, *ptr); usage(myName); exit(1); } } //fi else { fprintf( stderr, "%s: Unknown option %s\n", myName, *ptr); usage(myName); exit(1); } } //rof if (cred_name == NULL) { cred_name = DEFAULT_CREDENTIAL_NAME; } CondorError errstack; DCCredd dc_credd (server_address); // resolve server address if ( ! dc_credd.locate() ) { fprintf (stderr, "%s\n", dc_credd.error() ); return 1; } if (dc_credd.removeCredential(cred_name, errstack)) { fprintf (stderr, "Unable to remove credential '%s'\n%s\n", cred_name, errstack.getFullText(true).c_str()); return 1; } return 0; }