XRootD
Macaroons Namespace Reference

Classes

class  Authz
 
class  Handler
 

Enumerations

enum  LogMask {
  Debug = 0x01 ,
  Info = 0x02 ,
  Warning = 0x04 ,
  Error = 0x08 ,
  All = 0xff
}
 

Functions

ssize_t determine_validity (const std::string &input)
 
std::string NormalizeSlashes (const std::string &input)
 

Enumeration Type Documentation

◆ LogMask

Enumerator
Debug 
Info 
Warning 
Error 
All 

Definition at line 16 of file XrdMacaroonsHandler.hh.

16  {
17  Debug = 0x01,
18  Info = 0x02,
19  Warning = 0x04,
20  Error = 0x08,
21  All = 0xff
22 };
bool Debug
@ Error

Function Documentation

◆ determine_validity()

ssize_t Macaroons::determine_validity ( const std::string &  input)

Definition at line 26 of file XrdMacaroonsUtils.cc.

27 {
28  ssize_t duration = 0;
29  if (input.find("PT") != 0)
30  {
31  return -1;
32  }
33  size_t pos = 2;
34  std::string remaining = input;
35  do
36  {
37  remaining = remaining.substr(pos);
38  if (remaining.size() == 0) break;
39  long cur_duration;
40  try
41  {
42  cur_duration = stol(remaining, &pos);
43  } catch (...)
44  {
45  return -1;
46  }
47  if (pos >= remaining.size())
48  {
49  return -1;
50  }
51  char unit = remaining[pos];
52  switch (unit) {
53  case 'S':
54  break;
55  case 'M':
56  cur_duration *= 60;
57  break;
58  case 'H':
59  cur_duration *= 3600;
60  break;
61  default:
62  return -1;
63  };
64  pos ++;
65  duration += cur_duration;
66  } while (1);
67  return duration;
68 }

Referenced by Macaroons::Handler::ProcessReq().

+ Here is the caller graph for this function:

◆ NormalizeSlashes()

std::string Macaroons::NormalizeSlashes ( const std::string &  input)

Definition at line 5 of file XrdMacaroonsUtils.cc.

6 {
7  std::string output;
8  // In most cases, the output should be "about as large"
9  // as the input
10  output.reserve(input.size());
11  char prior_chr = '\0';
12  size_t output_idx = 0;
13  for (size_t idx = 0; idx < input.size(); idx++) {
14  char chr = input[idx];
15  if (prior_chr == '/' && chr == '/') {
16  output_idx++;
17  continue;
18  }
19  output += input[output_idx];
20  prior_chr = chr;
21  output_idx++;
22  }
23  return output;
24 }