SchemesConfig.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #include "squid.h"
10 #include "auth/Config.h"
11 #include "fatal.h"
12 #include "parser/Tokenizer.h"
13 
14 #include <algorithm>
15 
16 static void
17 addUnique(const SBuf &scheme, std::vector<SBuf> &vec)
18 {
19  static const SBuf all("ALL");
20  if (scheme == all) {
21  for (const auto config: Auth::TheConfig.schemes)
22  addUnique(SBuf(config->type()), vec);
23  } else if (std::find(vec.begin(), vec.end(), scheme) == vec.end())
24  vec.push_back(scheme);
25 }
26 
27 void
29 {
30  static const CharacterSet delimiters("delimiters", ",");
31  static const CharacterSet quotedDelimiters("quotedDelimiters", ", ");
32  const CharacterSet *resultDelimiters = quoted ? &quotedDelimiters : &delimiters;
33  std::vector<SBuf> expanded;
35  SBuf scheme;
36  while (t.token(scheme, *resultDelimiters))
37  addUnique(scheme, expanded);
39  if (!t.remaining().isEmpty())
40  addUnique(t.remaining(), expanded);
41 
42  authConfigs.clear();
43  transform(expanded.begin(), expanded.end(),
44  back_inserter(authConfigs), [](SBuf &s) {
46  });
47 }
48 
bool isEmpty() const
Definition: SBuf.h:435
bool token(SBuf &returnedToken, const CharacterSet &delimiters)
Definition: Tokenizer.cc:61
Definition: SBuf.h:93
Auth::Config TheConfig
Definition: Config.cc:15
static void addUnique(const SBuf &scheme, std::vector< SBuf > &vec)
SBuf::size_type skipAllTrailing(const CharacterSet &discardables)
Definition: Tokenizer.cc:222
Auth::ConfigVector authConfigs
corresponding vector of Auth::Config objects
Definition: SchemesConfig.h:33
const SBuf & remaining() const
the remaining unprocessed section of buffer
Definition: Tokenizer.h:44
static SchemeConfig * GetParsed(const char *proxy_auth)
Definition: SchemeConfig.cc:70
static const CharacterSet HTAB
Definition: CharacterSet.h:90
const char * c_str()
Definition: SBuf.cc:516
SBuf schemes
raw auth schemes list (may have duplicates)
Definition: SchemesConfig.h:37
optimized set of C chars, with quick membership test and merge support
Definition: CharacterSet.h:17
static const CharacterSet SP
Definition: CharacterSet.h:94

 

Introduction

Documentation

Support

Miscellaneous