This commit is contained in:
2024-10-14 00:08:40 +02:00
parent dbfba56f66
commit 1462d52e13
4572 changed files with 2658864 additions and 0 deletions

View File

@@ -0,0 +1,158 @@
# --
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
package Kernel::System::SupportDataCollector::Plugin::OTRS::PackageDeployment;
use strict;
use warnings;
use parent qw(Kernel::System::SupportDataCollector::PluginBase);
use Kernel::Language qw(Translatable);
our @ObjectDependencies = (
'Kernel::Config',
'Kernel::System::Package',
);
sub GetDisplayPath {
return Translatable('OTRS');
}
sub Run {
my $Self = shift;
# get package object
my $PackageObject = $Kernel::OM->Get('Kernel::System::Package');
my @InvalidPackages;
my @NotVerifiedPackages;
my @WrongFrameworkVersion;
for my $Package ( $PackageObject->RepositoryList() ) {
my $DeployCheck = $PackageObject->DeployCheck(
Name => $Package->{Name}->{Content},
Version => $Package->{Version}->{Content},
);
if ( !$DeployCheck ) {
push @InvalidPackages, "$Package->{Name}->{Content} $Package->{Version}->{Content}";
}
# get package
my $PackageContent = $PackageObject->RepositoryGet(
Name => $Package->{Name}->{Content},
Version => $Package->{Version}->{Content},
Result => 'SCALAR',
);
my $Verified = $PackageObject->PackageVerify(
Package => $PackageContent,
Name => $Package->{Name}->{Content},
) || 'unknown';
if ( $Verified ne 'verified' ) {
push @NotVerifiedPackages, "$Package->{Name}->{Content} $Package->{Version}->{Content}";
}
my %PackageStructure = $PackageObject->PackageParse(
String => $PackageContent,
);
my %CheckFramework = $PackageObject->AnalyzePackageFrameworkRequirements(
Framework => $PackageStructure{Framework},
NoLog => 1,
);
if ( !$CheckFramework{Success} ) {
push @WrongFrameworkVersion, "$Package->{Name}->{Content} $Package->{Version}->{Content}";
}
}
if (@InvalidPackages) {
if ( $Kernel::OM->Get('Kernel::Config')->Get('Package::AllowLocalModifications') ) {
$Self->AddResultInformation(
Label => Translatable('Package Installation Status'),
Value => join( ', ', @InvalidPackages ),
Message => Translatable('Some packages have locally modified files.'),
);
}
else {
$Self->AddResultProblem(
Label => Translatable('Package Installation Status'),
Value => join( ', ', @InvalidPackages ),
Message => Translatable('Some packages are not correctly installed.'),
);
}
}
else {
$Self->AddResultOk(
Label => Translatable('Package Installation Status'),
Value => '',
);
}
if (@NotVerifiedPackages) {
if ( $Kernel::OM->Get('Kernel::Config')->Get('Package::AllowLocalModifications') ) {
$Self->AddResultInformation(
Identifier => 'Verification',
Label => Translatable('Package Verification Status'),
Value => join( ', ', @NotVerifiedPackages ),
Message => Translatable(
'Some packages are not verified by the OTRS Group! It is recommended not to use this packages.'
),
);
}
else {
$Self->AddResultProblem(
Identifier => 'Verification',
Label => Translatable('Package Verification Status'),
Value => join( ', ', @NotVerifiedPackages ),
Message => Translatable(
'Some packages are not verified by the OTRS Group! It is recommended not to use this packages.'
),
);
}
}
else {
$Self->AddResultOk(
Identifier => 'Verification',
Label => Translatable('Package Verification Status'),
Value => '',
);
}
if (@WrongFrameworkVersion) {
if ( $Kernel::OM->Get('Kernel::Config')->Get('Package::AllowLocalModifications') ) {
$Self->AddResultInformation(
Identifier => 'FrameworkVersion',
Label => Translatable('Package Framework Version Status'),
Value => join( ', ', @WrongFrameworkVersion ),
Message => Translatable('Some packages are not allowed for the current framework version.'),
);
}
else {
$Self->AddResultProblem(
Identifier => 'FrameworkVersion',
Label => Translatable('Package Framework Version Status'),
Value => join( ', ', @WrongFrameworkVersion ),
Message => Translatable('Some packages are not allowed for the current framework version.'),
);
}
}
else {
$Self->AddResultOk(
Identifier => 'FrameworkVersion',
Label => Translatable('Package Framework Version Status'),
Value => '',
);
}
return $Self->GetResults();
}
1;