1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
# --
# Copyright (C) 2001-2021 OTRS AG, https://otrs.com/
# Copyright (C) 2021 Znuny GmbH, https://znuny.org/
# --
# 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 scripts::test::sample::GenericAgent::TestGenericAgent;
use strict;
use warnings;
our @ObjectDependencies = (
);
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
if ( !$Param{New}->{Location} ) {
print STDERR "Need Location!\n";
return;
}
# filename clean up
$Param{New}->{Location} =~ s/\/\//\//g;
# set open mode (if file exists, lock it on open, done by '+<')
my $Exists;
if ( -f $Param{New}->{Location} ) {
$Exists = 1;
}
my $Mode = '>';
if ($Exists) {
$Mode = '+<';
}
if ( $Param{New}->{Mode} && $Param{New}->{Mode} =~ /^(utf8|utf\-8)/i ) {
$Mode = '>:utf8';
if ($Exists) {
$Mode = '+<:utf8';
}
}
# return if file can not open
my $FH;
if ( !open $FH, $Mode, $Param{New}->{Location} ) { ## no critic
print STDERR "Can't write '$Param{New}->{Location}': $!",
return;
}
# lock file (Exclusive Lock)
if ( !flock $FH, 2 ) {
print STDERR "Can't lock '$Param{New}->{Location}': $!";
}
# empty file first (needed if file is open by '+<')
truncate $FH, 0;
# write file if content is not undef
if ( defined ${ $Param{New}->{Content} } ) {
print $FH ${ $Param{New}->{Content} };
}
# write empty file if content is undef
else {
print $FH '';
}
# close the file handle
close $FH;
return $Param{New}->{Location};
}
1;
|