E-MailRelay
gverifierfactory.cpp
Go to the documentation of this file.
1//
2// Copyright (C) 2001-2021 Graeme Walker <graeme_walker@users.sourceforge.net>
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <http://www.gnu.org/licenses/>.
16// ===
17///
18/// \file gverifierfactory.cpp
19///
20
21#include "gdef.h"
22#include "gfactoryparser.h"
23#include "gexception.h"
24#include "gverifierfactory.h"
25#include "ginternalverifier.h"
26#include "gexecutableverifier.h"
27#include "gnetworkverifier.h"
28
29std::string GSmtp::VerifierFactory::check( const std::string & identifier )
30{
31 return FactoryParser::check( identifier , false ) ;
32}
33
34std::unique_ptr<GSmtp::Verifier> GSmtp::VerifierFactory::newVerifier( GNet::ExceptionSink es ,
35 const std::string & identifier , unsigned int timeout )
36{
37 std::unique_ptr<Verifier> ptr ;
38 FactoryParser::Result p = FactoryParser::parse( identifier , false ) ;
39 if( p.first.empty() || p.first == "exit" )
40 {
41 ptr = std::make_unique<InternalVerifier>() ; // up-cast
42 }
43 else if( p.first == "net" )
44 {
45 ptr = std::make_unique<NetworkVerifier>( es , p.second , timeout , timeout ) ; // up-cast
46 }
47 else
48 {
49 ptr = std::make_unique<ExecutableVerifier>( es , G::Path(p.second) ) ; // up-cast
50 }
51 return ptr ;
52}
53
A tuple containing an ExceptionHandler interface pointer and a bound 'exception source' pointer.
static Result parse(const std::string &identifier, bool allow_spam)
Parses an identifier like "/usr/bin/foo" or "net:127.0.0.1:99" or "net:/run/spamd....
static std::string check(const std::string &identifier, bool allow_spam)
Parses and checks an identifier.
static std::string check(const std::string &identifier)
Checks an identifier.
static std::unique_ptr< Verifier > newVerifier(GNet::ExceptionSink, const std::string &identifier, unsigned int timeout)
Returns a Verifier on the heap.
A Path object represents a file system path.
Definition: gpath.h:72
Result tuple for GSmtp::FactoryParser::parse().