16#include <zypp/base/Gettext.h>
17#include <zypp/base/LogTools.h>
18#include <zypp-core/base/DefaultIntegral>
19#include <zypp/parser/xml/XmlEscape.h>
21#include <zypp/ManagedFile.h>
26#include <zypp/TriBool.h>
27#include <zypp/Pathname.h>
31#include <zypp/ExternalProgram.h>
33#include <zypp/base/IOStream.h>
34#include <zypp-core/base/InputStream>
40#include <zypp/TmpPath.h>
53 repo::RepoType probeCache(
const Pathname & path_r )
56 if ( PathInfo(path_r).isDir() )
58 if ( PathInfo(path_r/
"/repodata/repomd.xml").isFile() )
60 else if ( PathInfo(path_r/
"/content").isFile() )
62 else if ( PathInfo(path_r/
"/cookie").isFile() )
65 DBG <<
"Probed cached type " << ret <<
" at " << path_r << endl;
82 ,
_type(repo::RepoType::NONE_e)
118 std::string licenseStem(
"license" );
119 if ( !name_r.empty() )
122 licenseStem += name_r;
195 [
this](
int num_r, std::string line_r )->
bool
199 std::vector<std::string> words;
200 if (
str::split( line_r, std::back_inserter(words) ) > 1
201 && words[0].length() == 12 )
203 this->
_keywords.second.insert( ++words.begin(), words.end() );
242 if (
PathInfo(gpgcheckFile).isExist() )
267 static const Pathname truePath(
"true" );
268 static const Pathname falsePath(
"false" );
269 static const Pathname indeterminatePath(
"indeterminate" );
272 static const ssize_t bufsiz = 63;
273 static char buf[bufsiz+1];
274 ssize_t ret = ::readlink( path_r.
c_str(), buf, bufsiz );
275 buf[ret == -1 ? 0 : ret] =
'\0';
280 if ( linkval == truePath )
282 else if ( linkval == falsePath )
284 else if ( linkval == indeterminatePath )
359 mutable std::pair<FalseBool, std::set<std::string> >
_keywords;
363 friend Impl * rwcowClone<Impl>(
const Impl * rhs );
366 {
return new Impl( *
this ); }
373 return str <<
"RepoInfo::Impl";
385 : _pimpl( new
Impl() )
392 {
return _pimpl->priority; }
405 {
return _pimpl->cfgGpgCheck(); }
408 {
_pimpl->rawGpgCheck( value_r ); }
420 if ( ret &&
_pimpl->internalUnsignedConfirmed() )
426 {
_pimpl->rawRepoGpgCheck( value_r ); }
436 {
_pimpl->rawPkgGpgCheck( value_r ); }
441 g_r =
_pimpl->rawGpgCheck();
442 r_r =
_pimpl->rawRepoGpgCheck();
443 p_r =
_pimpl->rawPkgGpgCheck();
455 {
_pimpl->internalSetValidRepoSignature( value_r ); }
461 {
if ( ! sameTriboolState( lhs, rhs ) ) { lhs = rhs;
return true; }
return false; }
465 bool changed =
false;
466 if ( changeGpgCheckTo( ogpg[0], g ) ) changed =
true;
467 if ( changeGpgCheckTo( ogpg[1], r ) ) changed =
true;
468 if ( changeGpgCheckTo( ogpg[2], p ) ) changed =
true;
478 bool changed =
false;
485 changed = changeGpgCheckTo( ogpg,
true,
true,
true );
488 changed = changeGpgCheckTo( ogpg,
true,
false,
false );
491 changed = changeGpgCheckTo( ogpg,
true,
false,
indeterminate );
494 changed = changeGpgCheckTo( ogpg,
true,
indeterminate,
false );
516 {
_pimpl->_mirrorListUrl.raw() = url_r;
_pimpl->_mirrorListForceMetalink =
false; }
522 {
_pimpl->_mirrorListUrl.raw() = url_r;
_pimpl->_mirrorListForceMetalink =
true; }
528 {
_pimpl->gpgKeyUrls().raw().swap( urls ); }
532 _pimpl->gpgKeyUrls().raw().clear();
533 _pimpl->gpgKeyUrls().raw().push_back( url_r );
538 if ( keyID_r.empty() )
541 MIL <<
"Check for " << keyID_r <<
" at " << targetDirectory_r << endl;
542 std::string keyIDStr( keyID_r.size() > 8 ? keyID_r.substr( keyID_r.size()-8 ) : keyID_r );
551 [&tempKeyRing](
const Pathname & dir_r,
const std::string & str_r ){
565 ERR <<
"Error importing cached key from file '"<<dir_r/str_r<<
"'."<<endl;
591 }
catch (
const std::exception & e ) {
594 MIL <<
"Key import from url:'"<<
url<<
"' failed." << endl;
609 MIL <<
"KEY ID in KEYRING: " << key.id() << endl;
613 std::ofstream fout( keyFile.
c_str(), std::ios_base::out | std::ios_base::trunc );
628 ERR <<
"Error when exporting key from temporary keychain." << endl;
637 for (
const auto &
url :
_pimpl->baseUrls().raw() )
640 _pimpl->baseUrls().raw().push_back( url_r );
645 _pimpl->baseUrls().raw().clear();
646 _pimpl->baseUrls().raw().push_back( url_r );
650 {
_pimpl->baseUrls().raw().swap( urls ); }
659 {
_pimpl->setProbedType( t ); }
669 {
_pimpl->keeppackages = keep; }
681 {
return _pimpl->metadataPath(); }
684 {
return _pimpl->packagesPath(); }
687 {
return _pimpl->usesAutoMethadataPaths(); }
690 {
return _pimpl->type(); }
693 {
return _pimpl->_mirrorListUrl.transformed(); }
696 {
return _pimpl->_mirrorListUrl.raw(); }
699 {
return _pimpl->gpgKeyUrls().empty(); }
702 {
return _pimpl->gpgKeyUrls().size(); }
705 {
return _pimpl->gpgKeyUrls().transformed(); }
708 {
return _pimpl->gpgKeyUrls().raw(); }
711 {
return(
_pimpl->gpgKeyUrls().empty() ?
Url() : *
_pimpl->gpgKeyUrls().transformedBegin() ); }
714 {
return(
_pimpl->gpgKeyUrls().empty() ?
Url() : *
_pimpl->gpgKeyUrls().rawBegin() ) ; }
717 {
return _pimpl->baseUrls().transformed(); }
720 {
return _pimpl->baseUrls().raw(); }
726 {
return _pimpl->service; }
729 {
return _pimpl->targetDistro; }
732 {
return(
_pimpl->baseUrls().empty() ?
Url() : *
_pimpl->baseUrls().rawBegin() ); }
735 {
return _pimpl->baseUrls().transformedBegin(); }
738 {
return _pimpl->baseUrls().transformedEnd(); }
741 {
return _pimpl->baseUrls().size(); }
744 {
return _pimpl->baseUrls().empty(); }
747 {
return _pimpl->baseurl2dump(); }
750 {
return _pimpl->contentKeywords(); }
753 {
_pimpl->addContent( keyword_r ); }
756 {
return _pimpl->hasContent(); }
759 {
return _pimpl->hasContent( keyword_r ); }
767 {
return !
_pimpl->licenseTgz( name_r ).empty(); }
776 if ( licenseTgz.
empty() )
780 cmd.push_back(
"tar" );
781 cmd.push_back(
"-t" );
782 cmd.push_back(
"-z" );
783 cmd.push_back(
"-f" );
784 cmd.push_back( licenseTgz.
asString() );
788 static const std::string noAcceptanceFile =
"no-acceptance-needed\n";
791 if ( output == noAcceptanceFile )
797 MIL <<
"License(" << name_r <<
") in " <<
name() <<
" has to be accepted: " << (accept?
"true":
"false" ) << endl;
806 {
return getLicense( std::string(), lang_r ); }
811 if ( avlocales.empty() )
812 return std::string();
815 if ( !getLang && avlocales.find(
Locale::noCode ) == avlocales.end() )
817 WAR <<
"License(" << name_r <<
") in " <<
name() <<
" contains no fallback text!" << endl;
821 getLang = *avlocales.begin();
825 static const std::string licenseFileFallback(
"license.txt" );
826 std::string licenseFile( !getLang ? licenseFileFallback
830 cmd.push_back(
"tar" );
831 cmd.push_back(
"-x" );
832 cmd.push_back(
"-z" );
833 cmd.push_back(
"-O" );
834 cmd.push_back(
"-f" );
835 cmd.push_back(
_pimpl->licenseTgz( name_r ).asString() );
836 cmd.push_back( licenseFile );
855 if ( licenseTgz.
empty() )
859 cmd.push_back(
"tar" );
860 cmd.push_back(
"-t" );
861 cmd.push_back(
"-z" );
862 cmd.push_back(
"-f" );
863 cmd.push_back( licenseTgz.
asString() );
869 static const C_Str license(
"license." );
870 static const C_Str dotTxt(
".txt\n" );
873 if ( output.size() <= license.
size() + dotTxt.
size() )
876 ret.insert(
Locale( std::string( output.c_str()+license.
size(), output.size()- license.
size() - dotTxt.
size() ) ) );
887 RepoInfoBase::dumpOn(
str);
888 if (
_pimpl->baseurl2dump() )
890 for (
const auto &
url :
_pimpl->baseUrls().raw() )
892 str <<
"- url : " <<
url << std::endl;
897 auto strif( [&] (
const std::string & tag_r,
const std::string & value_r ) {
898 if ( ! value_r.empty() )
899 str << tag_r << value_r << std::endl;
902 strif( (
_pimpl->_mirrorListForceMetalink ?
"- metalink : " :
"- mirrorlist : "),
rawMirrorListUrl().asString() );
903 strif(
"- path : ",
path().asString() );
904 str <<
"- type : " <<
type() << std::endl;
908#define OUTS(T,B) ( indeterminate(T) ? (std::string("D(")+(B?"Y":"N")+")") : ((bool)T?"Y":"N") )
916 for (
const auto &
url :
_pimpl->gpgKeyUrls().raw() )
918 str <<
"- gpgkey : " <<
url << std::endl;
924 strif(
"- service : ",
service() );
926 strif(
"- filePath: ",
filepath().asString() );
935 RepoInfoBase::dumpAsIniOn(
str);
937 if (
_pimpl->baseurl2dump() )
941 for (
const auto &
url :
_pimpl->baseUrls().raw() )
944 if ( indent.empty() ) indent =
" ";
948 if ( !
_pimpl->path.empty() )
949 str <<
"path="<<
path() << endl;
961 str <<
"gpgcheck=" << (
_pimpl->rawGpgCheck() ?
"1" :
"0") << endl;
964 str <<
"repo_gpgcheck=" << (
_pimpl->rawRepoGpgCheck() ?
"1" :
"0") << endl;
967 str <<
"pkg_gpgcheck=" << (
_pimpl->rawPkgGpgCheck() ?
"1" :
"0") << endl;
970 std::string indent(
"gpgkey=");
971 for (
const auto &
url :
_pimpl->gpgKeyUrls().raw() )
973 str << indent <<
url << endl;
974 if ( indent[0] !=
' ' )
993 <<
" alias=\"" << escape(
alias()) <<
"\""
994 <<
" name=\"" << escape(
name()) <<
"\"";
998 <<
" priority=\"" <<
priority() <<
"\""
999 <<
" enabled=\"" <<
enabled() <<
"\""
1001 <<
" gpgcheck=\"" <<
gpgCheck() <<
"\""
1005 str <<
" raw_gpgcheck=\"" << (
_pimpl->rawGpgCheck() ?
"1" :
"0") <<
"\"";
1007 str <<
" raw_repo_gpgcheck=\"" << (
_pimpl->rawRepoGpgCheck() ?
"1" :
"0") <<
"\"";
1009 str <<
" raw_pkg_gpgcheck=\"" << (
_pimpl->rawPkgGpgCheck() ?
"1" :
"0") <<
"\"";
1010 if (!(tmpstr =
gpgKeyUrl().asString()).empty())
1011 if (!(tmpstr =
gpgKeyUrl().asString()).empty())
1012 str <<
" gpgkey=\"" << escape(tmpstr) <<
"\"";
1014 str << (
_pimpl->_mirrorListForceMetalink ?
" metalink=\"" :
" mirrorlist=\"") << escape(tmpstr) <<
"\"";
1017 if (
_pimpl->baseurl2dump() )
1020 str <<
"<url>" << escape((*it).asString()) <<
"</url>" << endl;
1023 str <<
"</repo>" << endl;
1037#define OUTS( V ) case RepoInfo::V: return str << #V; break
1038 OUTS( GpgCheck::On );
1039 OUTS( GpgCheck::Strict );
1040 OUTS( GpgCheck::AllowUnsigned );
1041 OUTS( GpgCheck::AllowUnsignedRepo );
1042 OUTS( GpgCheck::AllowUnsignedPackage );
1043 OUTS( GpgCheck::Default );
1044 OUTS( GpgCheck::Off );
1045 OUTS( GpgCheck::indeterminate );
1048 return str <<
"GpgCheck::UNKNOWN";
1056 if ( canSkipMediaCheck ) {
1058 if ( not mDataPath.empty() ) {
1059 PathInfo mediafile { mDataPath/
"media.1/media" };
1060 if ( mediafile.isExist() ) {
1062 if ( lverifier && lverifier.totalMedia() > 1 ) {
1063 canSkipMediaCheck =
false;
1068 if ( canSkipMediaCheck )
1069 DBG <<
"Can SKIP media.1/media check for status calc of repo " <<
alias() << endl;
1070 return not canSkipMediaCheck;
base::ContainerTransform< std::list< Url >, repo::RepoVariablesUrlReplacer > RepoVariablesReplacedUrlList
Helper managing repo variables replaced url lists.
base::ValueTransform< Url, repo::RepoVariablesUrlReplacer > RepoVariablesReplacedUrl
Helper managing repo variables replaced urls.
Convenience char* constructible from std::string and char*, it maps (char*)0 to an empty string.
static const ValueType month
static Date now()
Return the current time.
Integral type with defined initial value when default constructed.
Base class for Exception.
Execute a program and give access to its io An object of this class encapsulates the execution of an ...
std::vector< std::string > Arguments
int close()
Wait for the progamm to complete.
const char * c_str() const
void dumpTrustedPublicKey(const std::string &id, std::ostream &stream)
void multiKeyImport(const Pathname &keyfile_r, bool trusted_r=false)
Initial import from RpmDb.
std::list< PublicKeyData > trustedPublicKeyData()
Get a list of trusted public key data in the keyring (key data only)
bool isKeyTrusted(const std::string &id)
true if the key id is trusted
'Language[_Country]' codes.
static const Locale noCode
Empty code.
static Locale bestMatch(const LocaleSet &avLocales_r, Locale requested_r=Locale())
Return the best match for Locale requested_r within the available avLocales_r.
@ STRINGEND
Match at string end.
Class representing one GPG Public Keys data.
std::string rpmName() const
Gpg-pubkey name as computed by rpm.
Class representing one GPG Public Key (PublicKeyData + ASCII armored in a tempfile).
What is known about a repository.
void setPkgGpgCheck(TriBool value_r)
Set the value for pkgGpgCheck (or indeterminate to use the default).
void setGpgKeyUrls(url_set urls)
Set a list of gpgkey URLs defined for this repo.
void setMirrorListUrls(url_set urls)
Like setMirrorListUrl but take an url_set.
void setMetalinkUrl(const Url &url)
Like setMirrorListUrl but expect metalink format.
Pathname metadataPath() const
Path where this repo metadata was read from.
void addBaseUrl(const Url &url)
Add a base url.
void setGpgKeyUrl(const Url &gpgkey)
(leagcy API) Set the gpgkey URL defined for this repo
GpgCheck
Some predefined settings.
bool baseUrlsEmpty() const
whether repository urls are available
bool hasContent() const
Check for content keywords.
void setKeepPackages(bool keep)
Set if packaqes downloaded from this repository will be kept in local cache.
void setBaseUrl(const Url &url)
Clears current base URL list and adds url.
url_set gpgKeyUrls() const
The list of gpgkey URLs defined for this repo.
Url rawGpgKeyUrl() const
(leagcy API) The 1st raw gpgkey URL defined for this repo (no variables replaced)
void setMirrorListUrl(const Url &url)
Set mirror list url.
Url rawUrl() const
Pars pro toto: The first repository raw url (no variables replaced)
Pathname provideKey(const std::string &keyID_r, const Pathname &targetDirectory_r) const
downloads all configured gpg keys into the defined directory
repo::RepoType type() const
Type of repository,.
url_set rawGpgKeyUrls() const
The list of raw gpgkey URLs defined for this repo (no variables replaced)
static unsigned noPriority()
The least priority (unsigned(-1)).
urls_size_type baseUrlsSize() const
number of repository urls
bool keepPackages() const
Whether packages downloaded from this repository will be kept in local cache.
Url url() const
Pars pro toto: The first repository url.
static const RepoInfo noRepo
Represents no Repository (one with an empty alias).
const std::set< std::string > & contentKeywords() const
Content keywords defined.
urls_const_iterator baseUrlsEnd() const
iterator that points at end of repository urls
virtual std::ostream & dumpOn(std::ostream &str) const
Write a human-readable representation of this RepoInfo object into the str stream.
void setPackagesPath(const Pathname &path)
set the path where the local packages are stored
std::string getLicense(const Locale &lang_r=Locale()) const
Return the best license for the current (or a specified) locale.
bool baseUrlSet() const
Whether there are manualy configured repository urls.
virtual std::ostream & dumpAsIniOn(std::ostream &str) const
Write this RepoInfo object into str in a .repo file format.
void setService(const std::string &name)
sets service which added this repository
void setGpgCheck(TriBool value_r)
Set the value for gpgCheck (or indeterminate to use the default).
virtual std::ostream & dumpAsXmlOn(std::ostream &str, const std::string &content="") const
Write an XML representation of this RepoInfo object.
Pathname path() const
Repository path.
urls_size_type gpgKeyUrlsSize() const
Number of gpgkey URLs defined.
LocaleSet getLicenseLocales() const
Return the locales the license is available for.
url_set baseUrls() const
The complete set of repository urls.
bool requireStatusWithMediaFile() const
Returns true if this repository requires the media.1/media file to be included in the metadata status...
bool pkgGpgCheckIsMandatory() const
Mandatory check (pkgGpgCheck is not off) must ask to confirm using unsigned packages.
url_set rawBaseUrls() const
The complete set of raw repository urls (no variables replaced)
Url mirrorListUrl() const
Url of a file which contains a list of repository urls.
bool usesAutoMethadataPaths() const
Whether metadataPath uses AUTO% setup.
url_set::size_type urls_size_type
void setProbedType(const repo::RepoType &t) const
This allows to adjust the RepoType lazy, from NONE to some probed value, even for const objects.
void setBaseUrls(url_set urls)
Clears current base URL list and adds an url_set.
std::string service() const
Gets name of the service to which this repository belongs or empty string if it has been added manual...
void setTargetDistribution(const std::string &targetDistribution)
Sets the distribution for which is this repository meant.
unsigned priority() const
Repository priority for solver.
bool gpgCheck() const
Whether default signature checking should be performed.
void setPath(const Pathname &path)
set the product path.
Url gpgKeyUrl() const
(leagcy API) The 1st gpgkey URL defined for this repo
void setValidRepoSignature(TriBool value_r)
Set the value for validRepoSignature (or indeterminate if unsigned).
static unsigned defaultPriority()
The default priority (99).
bool needToAcceptLicense() const
Whether the repo license has to be accepted, e.g.
void setPriority(unsigned newval_r)
Set repository priority for solver.
RWCOW_pointer< Impl > _pimpl
Pointer to implementation.
urls_const_iterator baseUrlsBegin() const
iterator that points at begin of repository urls
bool hasLicense() const
Whether there is a license associated with the repo.
bool repoGpgCheckIsMandatory() const
Mandatory check (repoGpgCheck is on) must ask to confirm using unsigned repos.
void setMetadataPath(const Pathname &path)
Set the path where the local metadata is stored.
TriBool validRepoSignature() const
Whether the repo metadata are signed and successfully validated or indeterminate if unsigned.
void setRepoGpgCheck(TriBool value_r)
Set the value for repoGpgCheck (or indeterminate to use the default).
void setMetalinkUrls(url_set urls)
Like setMirrorListUrls but expect metalink format.
Pathname packagesPath() const
Path where this repo packages are cached.
void addContent(const std::string &keyword_r)
Add content keywords.
bool repoGpgCheck() const
Whether the signature of repo metadata should be checked for this repo.
transform_iterator< repo::RepoVariablesUrlReplacer, url_set::const_iterator > urls_const_iterator
std::string targetDistribution() const
Distribution for which is this repository meant.
void getRawGpgChecks(TriBool &g_r, TriBool &r_r, TriBool &p_r) const
Raw values for RepoManager.
void setType(const repo::RepoType &t)
set the repository type
bool pkgGpgCheck() const
Whether the signature of rpm packages should be checked for this repo.
Url rawMirrorListUrl() const
The raw mirrorListUrl (no variables replaced).
bool gpgKeyUrlsEmpty() const
Whether gpgkey URLs are defined.
String matching (STRING|SUBSTRING|GLOB|REGEX).
std::string asString() const
Returns a default string representation of the Url object.
static bool schemeIsDownloading(const std::string &scheme_r)
http https ftp sftp tftp
bool gpgCheck() const
Turn signature checking on/off (on)
TriBool pkgGpgCheck() const
Check rpm package signatures (indeterminate - according to gpgcheck)
static ZConfig & instance()
Singleton ctor.
TriBool repoGpgCheck() const
Check repo matadata signatures (indeterminate - according to gpgcheck)
std::string receiveLine()
Read one line from the input stream.
Find pathnames matching a pattern.
bool empty() const
Whether matches were found.
const_iterator begin() const
Iterator pointing to the first result.
int add(const Pathname &pattern_r, Flags flags_r=Flags())
Add pathnames matching pattern_r to the current result.
Wrapper class for stat/lstat.
Pathname dirname() const
Return all but the last component od this path.
const char * c_str() const
String representation.
const std::string & asString() const
String representation.
bool empty() const
Test for an empty path.
Provide a new empty temporary directory and recursively delete it when no longer needed.
std::string asUserString() const
User string: label (alias or name)
Pathname filepath() const
File where this repo was read from.
bool autorefresh() const
If true, the repostory must be refreshed before creating resolvables from it.
std::string name() const
Repository name.
bool enabled() const
If enabled is false, then this repository must be ignored as if does not exists, except when checking...
std::string alias() const
unique identifier for this source.
const std::vector< Url > & getUrls() const
xmlTextReader based interface to iterate xml streams.
bool seekToEndNode(int depth_r, const std::string &name_r)
XmlString nodeText()
If the current node is not empty, advances the reader to the next node, and returns the value.
bool seekToNode(int depth_r, const std::string &name_r)
std::string asString() const
Explicit conversion to std::string.
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
String related utilities and Regular expression matching.
int unlink(const Pathname &path)
Like 'unlink'.
int dirForEach(const Pathname &dir_r, const StrMatcher &matcher_r, function< bool(const Pathname &, const char *const)> fnc_r)
int assert_dir(const Pathname &path, unsigned mode)
Like 'mkdir -p'.
int symlink(const Pathname &oldpath, const Pathname &newpath)
Like 'symlink'.
std::string asString(const Url &url_r)
int forEachLine(std::istream &str_r, function< bool(int, std::string)> consume_r)
Simple lineparser: Call functor consume_r for each line.
bool hasSuffix(const C_Str &str_r, const C_Str &suffix_r)
Return whether str_r has suffix suffix_r.
bool hasPrefix(const C_Str &str_r, const C_Str &prefix_r)
Return whether str_r has prefix prefix_r.
bool startsWith(const C_Str &str_r, const C_Str &prefix_r)
alias for hasPrefix
std::string form(const char *format,...) __attribute__((format(printf
Printf style construction of std::string.
unsigned split(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \t", const Trim trim_r=NO_TRIM)
Split line_r into words.
detail::EscapedString escape(const std::string &in_r)
Escape xml special charaters (& -> &; from IoBind library).
Easy-to use interface to the ZYPP dependency resolver.
std::unordered_set< Locale > LocaleSet
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
static bool info(const std::string &msg_r, const UserData &userData_r=UserData())
send message text
TriBool rawPkgGpgCheck() const
TriBool _rawRepoGpgCheck
need to check repo sign.: Y/N/(ZConf(Y/N/gpgCheck))
TriBool internalValidRepoSignature() const
Signature check result needs to be stored/retrieved from _metadataPath.
bool triBoolFromPath(const Pathname &path_r, TriBool &ret_r) const
bool internalUnsignedConfirmed() const
We definitely have a symlink pointing to "indeterminate" (for repoGpgCheckIsMandatory)?...
TriBool triBoolFromPath(const Pathname &path_r) const
void packagesPath(Pathname new_r)
void rawRepoGpgCheck(TriBool val_r)
void rawPkgGpgCheck(TriBool val_r)
bool usesAutoMethadataPaths() const
Pathname licenseTgz(const std::string &name_r) const
Path to a license tarball in case it exists in the repo.
RepoVariablesReplacedUrl _mirrorListUrl
bool _mirrorListForceMetalink
Impl * clone() const
clone for RWCOW_pointer
Pathname metadataPath() const
DefaultIntegral< unsigned, defaultPriority > priority
std::ostream & operator<<(std::ostream &str, const RepoInfo::Impl &obj)
Stream output.
void setType(const repo::RepoType &t)
bool hasContent(const std::string &keyword_r) const
const std::set< std::string > & contentKeywords() const
TriBool cfgPkgGpgCheck() const
bool baseurl2dump() const
const RepoVariablesReplacedUrlList & baseUrls() const
RepoVariablesReplacedUrlList _gpgKeyUrls
RepoVariablesReplacedUrlList _baseUrls
void rawGpgCheck(TriBool val_r)
void addContent(const std::string &keyword_r)
TriBool _rawGpgCheck
default gpgcheck behavior: Y/N/ZConf
Pathname packagesPath() const
void metadataPath(Pathname new_r)
TriBool rawGpgCheck() const
TriBool rawRepoGpgCheck() const
void internalSetValidRepoSignature(TriBool value_r)
const RepoVariablesReplacedUrlList & gpgKeyUrls() const
TriBool cfgRepoGpgCheck() const
static const unsigned defaultPriority
TriBool _rawPkgGpgCheck
need to check pkg sign.: Y/N/(ZConf(Y/N/gpgCheck))
void setProbedType(const repo::RepoType &t) const
RepoVariablesReplacedUrlList & baseUrls()
TriBool _validRepoSignature
have signed and valid repo metadata
repo::RepoType type() const
std::pair< FalseBool, std::set< std::string > > _keywords
RepoVariablesReplacedUrlList & gpgKeyUrls()
static const unsigned noPriority
Repository type enumeration.
static const RepoType YAST2
const std::string & asString() const
static const RepoType RPMMD
static const RepoType NONE
static const RepoType RPMPLAINDIR
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
#define ZYPP_CAUGHT(EXCPT)
Drops a logline telling the Exception was caught (in order to handle it).
#define ZYPP_THROW(EXCPT)
Drops a logline and throws the Exception.