Squid Web Cache master
Loading...
Searching...
No Matches
SchemesConfig.cc
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2025 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
16static void
17addUnique(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
27void
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
static void addUnique(const SBuf &scheme, std::vector< SBuf > &vec)
Auth::ConfigVector schemes
set of auth_params directives
Definition Config.h:29
static SchemeConfig * GetParsed(const char *proxy_auth)
SBuf schemes
raw auth schemes list (may have duplicates)
Auth::ConfigVector authConfigs
corresponding vector of Auth::Config objects
optimized set of C chars, with quick membership test and merge support
static const CharacterSet SP
static const CharacterSet HTAB
SBuf::size_type skipAllTrailing(const CharacterSet &discardables)
Definition Tokenizer.cc:222
bool token(SBuf &returnedToken, const CharacterSet &delimiters)
Definition Tokenizer.cc:61
const SBuf & remaining() const
the remaining unprocessed section of buffer
Definition Tokenizer.h:44
Definition SBuf.h:94
const char * c_str()
Definition SBuf.cc:516
bool isEmpty() const
Definition SBuf.h:435
Auth::Config TheConfig
Definition Config.cc:15