init III
This commit is contained in:
@@ -0,0 +1,348 @@
|
||||
# --
|
||||
# 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::Modules::AdminGenericInterfaceWebserviceHistory;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Kernel::System::VariableCheck qw(:all);
|
||||
use Kernel::Language qw(Translatable);
|
||||
|
||||
our $ObjectManagerDisabled = 1;
|
||||
|
||||
sub new {
|
||||
my ( $Type, %Param ) = @_;
|
||||
|
||||
my $Self = {%Param};
|
||||
bless( $Self, $Type );
|
||||
|
||||
return $Self;
|
||||
}
|
||||
|
||||
sub Run {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $ParamObject = $Kernel::OM->Get('Kernel::System::Web::Request');
|
||||
|
||||
my $WebserviceHistoryID = $ParamObject->GetParam( Param => 'WebserviceHistoryID' );
|
||||
my $WebserviceID = $ParamObject->GetParam( Param => 'WebserviceID' );
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
if ( !$WebserviceID ) {
|
||||
return $LayoutObject->ErrorScreen(
|
||||
Message => Translatable('Need WebserviceID!'),
|
||||
);
|
||||
}
|
||||
|
||||
# Send data to JS.
|
||||
$LayoutObject->AddJSData(
|
||||
Key => 'WebserviceID',
|
||||
Value => $WebserviceID
|
||||
);
|
||||
|
||||
my $WebserviceData = $Kernel::OM->Get('Kernel::System::GenericInterface::Webservice')->WebserviceGet(
|
||||
ID => $WebserviceID,
|
||||
);
|
||||
|
||||
if ( !IsHashRefWithData($WebserviceData) ) {
|
||||
return $LayoutObject->ErrorScreen(
|
||||
Message =>
|
||||
$LayoutObject->{LanguageObject}->Translate( 'Could not get data for WebserviceID %s', $WebserviceID ),
|
||||
);
|
||||
}
|
||||
|
||||
if ( $Self->{Subaction} eq 'GetWebserviceList' ) {
|
||||
return $Self->_GetWebserviceList(
|
||||
%Param,
|
||||
WebserviceID => $WebserviceID,
|
||||
WebserviceData => $WebserviceData,
|
||||
);
|
||||
}
|
||||
elsif ( $Self->{Subaction} eq 'GetWebserviceHistoryDetails' ) {
|
||||
return $Self->_GetWebserviceHistoryDetails(
|
||||
%Param,
|
||||
WebserviceHistoryID => $WebserviceHistoryID,
|
||||
);
|
||||
}
|
||||
elsif ( $Self->{Subaction} eq 'Export' ) {
|
||||
return $Self->_ExportWebserviceHistory(
|
||||
%Param,
|
||||
WebserviceID => $WebserviceID,
|
||||
WebserviceHistoryID => $WebserviceHistoryID,
|
||||
WebserviceData => $WebserviceData,
|
||||
);
|
||||
}
|
||||
elsif ( $Self->{Subaction} eq 'Rollback' ) {
|
||||
|
||||
# Challenge token check for write action.
|
||||
$LayoutObject->ChallengeTokenCheck();
|
||||
|
||||
return $Self->_RollbackWebserviceHistory(
|
||||
%Param,
|
||||
WebserviceID => $WebserviceID,
|
||||
WebserviceHistoryID => $WebserviceHistoryID,
|
||||
WebserviceData => $WebserviceData,
|
||||
);
|
||||
}
|
||||
|
||||
# Default: show start screen.
|
||||
return $Self->_ShowScreen(
|
||||
%Param,
|
||||
WebserviceID => $WebserviceID,
|
||||
WebserviceData => $WebserviceData,
|
||||
);
|
||||
}
|
||||
|
||||
sub _ShowScreen {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar();
|
||||
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminGenericInterfaceWebserviceHistory',
|
||||
Data => {
|
||||
%Param,
|
||||
WebserviceName => $Param{WebserviceData}->{Name},
|
||||
},
|
||||
);
|
||||
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
|
||||
sub _GetWebserviceList {
|
||||
my ( $Self, %Param ) = @_;
|
||||
my %LogSearchParam = (
|
||||
WebserviceID => $Param{WebserviceID},
|
||||
);
|
||||
|
||||
# Get web service history object.
|
||||
my $WebserviceHistoryObject = $Kernel::OM->Get('Kernel::System::GenericInterface::WebserviceHistory');
|
||||
my @List = $WebserviceHistoryObject->WebserviceHistoryList(
|
||||
WebserviceID => $Param{WebserviceID},
|
||||
);
|
||||
|
||||
my @LogData;
|
||||
|
||||
# Get web service history info.
|
||||
for my $Key (@List) {
|
||||
my $WebserviceHistory = $WebserviceHistoryObject->WebserviceHistoryGet(
|
||||
ID => $Key,
|
||||
);
|
||||
$WebserviceHistory->{Config} = '';
|
||||
push @LogData, $WebserviceHistory;
|
||||
}
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
# Build JSON output.
|
||||
my $JSON = $LayoutObject->JSONEncode(
|
||||
Data => {
|
||||
LogData => \@LogData,
|
||||
},
|
||||
);
|
||||
|
||||
# Send JSON response.
|
||||
return $LayoutObject->Attachment(
|
||||
ContentType => 'application/json; charset=' . $LayoutObject->{Charset},
|
||||
Content => $JSON,
|
||||
Type => 'inline',
|
||||
NoCache => 1,
|
||||
);
|
||||
}
|
||||
|
||||
sub _GetWebserviceHistoryDetails {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $PasswordMask = '*******';
|
||||
|
||||
my $WebserviceHistoryID = $Param{WebserviceHistoryID};
|
||||
|
||||
if ( !$WebserviceHistoryID ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => 'Got no WebserviceID',
|
||||
);
|
||||
|
||||
return; # return empty response
|
||||
}
|
||||
|
||||
my $LogData = $Kernel::OM->Get('Kernel::System::GenericInterface::WebserviceHistory')->WebserviceHistoryGet(
|
||||
ID => $WebserviceHistoryID,
|
||||
);
|
||||
|
||||
# Mask password strings.
|
||||
if (
|
||||
IsStringWithData(
|
||||
$LogData->{Config}->{Requester}->{Transport}->{Config}->{Authentication}->{BasicAuthPassword}
|
||||
)
|
||||
)
|
||||
{
|
||||
$LogData->{Config}->{Requester}->{Transport}->{Config}->{Authentication}->{BasicAuthPassword} = $PasswordMask;
|
||||
}
|
||||
if (
|
||||
IsStringWithData( $LogData->{Config}->{Requester}->{Transport}->{Config}->{Proxy}->{ProxyPassword} )
|
||||
)
|
||||
{
|
||||
$LogData->{Config}->{Requester}->{Transport}->{Config}->{Proxy}->{ProxyPassword} = $PasswordMask;
|
||||
}
|
||||
if (
|
||||
IsStringWithData( $LogData->{Config}->{Requester}->{Transport}->{Config}->{SSL}->{SSLPassword} )
|
||||
)
|
||||
{
|
||||
$LogData->{Config}->{Requester}->{Transport}->{Config}->{SSL}->{SSLPassword} = $PasswordMask;
|
||||
}
|
||||
|
||||
# For compatibility (web services changed before OTRS 6).
|
||||
if (
|
||||
IsStringWithData( $LogData->{Config}->{Requester}->{Transport}->{Config}->{Authentication}->{Password} )
|
||||
)
|
||||
{
|
||||
$LogData->{Config}->{Requester}->{Transport}->{Config}->{Authentication}->{Password} = $PasswordMask;
|
||||
}
|
||||
elsif (
|
||||
!IsHashRefWithData( $LogData->{Config}->{Requester}->{Transport}->{Config}->{Authentication} )
|
||||
)
|
||||
{
|
||||
delete $LogData->{Config}->{Requester}->{Transport}->{Config}->{Authentication};
|
||||
}
|
||||
if (
|
||||
IsStringWithData( $LogData->{Config}->{Requester}->{Transport}->{Config}->{SSL}->{SSLProxyPassword} )
|
||||
)
|
||||
{
|
||||
$LogData->{Config}->{Requester}->{Transport}->{Config}->{SSL}->{SSLProxyPassword} = $PasswordMask;
|
||||
}
|
||||
if (
|
||||
IsStringWithData( $LogData->{Config}->{Requester}->{Transport}->{Config}->{SSL}->{SSLP12Password} )
|
||||
)
|
||||
{
|
||||
$LogData->{Config}->{Requester}->{Transport}->{Config}->{SSL}->{SSLP12Password} = $PasswordMask;
|
||||
}
|
||||
|
||||
# Remove structure added by auto-vivification.
|
||||
if (
|
||||
!IsHashRefWithData( $LogData->{Config}->{Requester}->{Transport}->{Config}->{Authentication} )
|
||||
)
|
||||
{
|
||||
delete $LogData->{Config}->{Requester}->{Transport}->{Config}->{Authentication};
|
||||
}
|
||||
if (
|
||||
!IsHashRefWithData( $LogData->{Config}->{Requester}->{Transport}->{Config}->{Proxy} )
|
||||
)
|
||||
{
|
||||
delete $LogData->{Config}->{Requester}->{Transport}->{Config}->{Proxy};
|
||||
}
|
||||
if (
|
||||
!IsHashRefWithData( $LogData->{Config}->{Requester}->{Transport}->{Config}->{SSL} )
|
||||
)
|
||||
{
|
||||
delete $LogData->{Config}->{Requester}->{Transport}->{Config}->{SSL};
|
||||
}
|
||||
|
||||
# Dump config.
|
||||
$LogData->{Config} = $Kernel::OM->Get('Kernel::System::YAML')->Dump(
|
||||
Data => $LogData->{Config},
|
||||
);
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
# Build JSON output.
|
||||
my $JSON = $LayoutObject->JSONEncode(
|
||||
Data => {
|
||||
LogData => $LogData,
|
||||
},
|
||||
);
|
||||
|
||||
# Send JSON response.
|
||||
return $LayoutObject->Attachment(
|
||||
ContentType => 'application/json; charset=' . $LayoutObject->{Charset},
|
||||
Content => $JSON,
|
||||
Type => 'inline',
|
||||
NoCache => 1,
|
||||
);
|
||||
}
|
||||
|
||||
sub _ExportWebserviceHistory {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
if ( !$Param{WebserviceHistoryID} ) {
|
||||
$LayoutObject->FatalError(
|
||||
Message => Translatable('Got no WebserviceHistoryID!'),
|
||||
);
|
||||
}
|
||||
|
||||
my $WebserviceHistoryID = $Param{WebserviceHistoryID};
|
||||
|
||||
my $WebserviceHistoryData
|
||||
= $Kernel::OM->Get('Kernel::System::GenericInterface::WebserviceHistory')->WebserviceHistoryGet(
|
||||
ID => $WebserviceHistoryID,
|
||||
);
|
||||
|
||||
# Check for valid web service configuration.
|
||||
if ( !IsHashRefWithData($WebserviceHistoryData) ) {
|
||||
return $LayoutObject->ErrorScreen(
|
||||
Message =>
|
||||
$LayoutObject->{LanguageObject}
|
||||
->Translate( 'Could not get history data for WebserviceHistoryID %s', $WebserviceHistoryID ),
|
||||
);
|
||||
}
|
||||
|
||||
# Dump configuration into a YAML structure.
|
||||
my $YAMLContent = $Kernel::OM->Get('Kernel::System::YAML')->Dump(
|
||||
Data => $WebserviceHistoryData->{Config},
|
||||
);
|
||||
|
||||
# Return YAML to download.
|
||||
my $YAMLFile = $Param{WebserviceData}->{Name} || 'yamlfile';
|
||||
return $LayoutObject->Attachment(
|
||||
Filename => $YAMLFile . '.yml',
|
||||
ContentType => "text/plain; charset=" . $LayoutObject->{UserCharset},
|
||||
Content => $YAMLContent,
|
||||
);
|
||||
}
|
||||
|
||||
sub _RollbackWebserviceHistory {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
if ( !$Param{WebserviceHistoryID} ) {
|
||||
$LayoutObject->FatalError(
|
||||
Message => Translatable('Got no WebserviceHistoryID!'),
|
||||
);
|
||||
}
|
||||
|
||||
my $WebserviceID = $Param{WebserviceID};
|
||||
my $WebserviceHistoryID = $Param{WebserviceHistoryID};
|
||||
|
||||
my $WebserviceHistoryData
|
||||
= $Kernel::OM->Get('Kernel::System::GenericInterface::WebserviceHistory')->WebserviceHistoryGet(
|
||||
ID => $WebserviceHistoryID,
|
||||
);
|
||||
|
||||
my $Success = $Kernel::OM->Get('Kernel::System::GenericInterface::Webservice')->WebserviceUpdate(
|
||||
ID => $WebserviceID,
|
||||
Name => $Param{WebserviceData}->{Name},
|
||||
Config => $WebserviceHistoryData->{Config},
|
||||
ValidID => $Param{WebserviceData}->{ValidID},
|
||||
UserID => $Self->{UserID},
|
||||
);
|
||||
|
||||
return $LayoutObject->Redirect(
|
||||
OP => "Action=AdminGenericInterfaceWebservice;Subaction=Change;WebserviceID=$WebserviceID",
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user