From c2d1f50c45f221a5ea589a60b22c47b88af248a0 Mon Sep 17 00:00:00 2001 From: Ian Johnson Date: Fri, 29 Jul 2016 15:43:08 +0100 Subject: [PATCH] Added singleshot mode (with -s flag). Return the value of the authZ decision in the program return code --- src/XrdApps/XrdAccTest.cc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/XrdApps/XrdAccTest.cc b/src/XrdApps/XrdAccTest.cc index 42e0d73272d..7eb35813307 100644 --- a/src/XrdApps/XrdAccTest.cc +++ b/src/XrdApps/XrdAccTest.cc @@ -117,17 +117,19 @@ void Usage(const char *); char *p2l(XrdAccPrivs priv, char *buff, int blen); int rc = 0, argnum; char c, *argval[32]; -int DoIt(int argnum, int argc, char **argv); +int DoIt(int argnum, int argc, char **argv, int singleshot); XrdOucStream Command; const int maxargs = sizeof(argval)/sizeof(argval[0]); char *ConfigFN = (char *)"./acc.cf"; +int singleshot = 0; // Get all of the options. // - while ((c=getopt(argc,argv,"c:d")) != (char)EOF) + while ((c=getopt(argc,argv,"c:ds")) != (char)EOF) { switch(c) { case 'c': ConfigFN = optarg; break; + case 's': singleshot = 1; break; default: Usage("Invalid option."); } } @@ -141,7 +143,7 @@ if (!(Authorize = XrdAccDefaultAuthorizeObject(&myLogger, ConfigFN, 0, myVer))) // If command line options specified, process this // - if (optind < argc) {rc = DoIt(optind, argc, argv); exit(rc);} + if (optind < argc) {rc = DoIt(optind, argc, argv, singleshot); exit(rc);} // Start accepting command from standard in until eof // @@ -152,7 +154,7 @@ if (!(Authorize = XrdAccDefaultAuthorizeObject(&myLogger, ConfigFN, 0, myVer))) {for (argnum=2; argnum < maxargs && (argval[argnum]=Command.GetToken()); argnum++) {} - rc |= DoIt(1, argnum, argval); + rc |= DoIt(1, argnum, argval, singleshot=0); } // All done @@ -160,7 +162,7 @@ if (!(Authorize = XrdAccDefaultAuthorizeObject(&myLogger, ConfigFN, 0, myVer))) exit(rc); } -int DoIt(int argpnt, int argc, char **argv) +int DoIt(int argpnt, int argc, char **argv, int singleshot) { char *user, *host, *path, *result, buff[16]; Access_Operation cmd2op(char *opname); @@ -207,7 +209,8 @@ XrdSecEntity Entity(""); result = PrivsConvert(pargs, buff, sizeof(buff)); } cout <