##
####
Result: <% result %>
####
#!/usr/bin/env perl
package Op;
use strict;
no warnings;
use Win32::Process;
##use Net::LDAP;
use REST::Client;
use JSON::Parse ':all';
use MIME::Base64;
use Term::ReadKey;
use Data::Dumper;
use MIME::Lite;
use Net::SMTP;
use Spreadsheet::XLSX;
use Spreadsheet::ParseXLSX;
use Excel::Writer::XLSX;
use Config::Properties;
use Data::Dumper;
use List::Compare;
use Array::Compare;
use Storable qw/freeze/;
use Data::Validate::IP;
use Data::Table::Excel;
use Excel::Writer::XLSX::Chart;
use Win32::OLE::Const;
use Spreadsheet::WriteExcel::Utility qw( xl_range_formula );
use Win32::OLE;
use POSIX 'strftime';
use POSIX qw(strftime);
use DateTime;
use DateTime::Format::Strptime;
use Try::Tiny;
use feature qw{ say };
open my $fh, '<', "C:/PERL/" . "config.properties" or die "unable to open configuration file";
my $properties = Config::Properties->new();
$properties->load($fh);
my $value = $properties->getProperty('dev.token');
my $baseurl = $properties->getProperty('dev.baseURL');
sub result {
my ($args) = @_;
my $appID = $args->{APPID};
my $datver = $args->{datetime};
my $email = $args->{Email};
my $date3 = strftime '%Y-%m-%d' , localtime(time() - $datver*60*60);
my $date4 = strftime '%Y-%m-%d' , localtime(time() - 24*60*60);
my $apiurllog = $baseurl ."/users/sys/logs?";
my $client = REST::Client->new();
my @responsetext;
my @responsetextall;
my $sortor = "filter=eventType+eq+%22";
my $filter = "all.auth.sso";
my @$responsalter;
sub api_call {
$client->addHeader('Authorization',"SSWS $value");
$client->addHeader('Accept','application/json');
$client->addHeader('Content-type','application/json');
$client->GET($_[0]);
}
my $date2 = "%22&since=" . $date3 . "T00%3A00%3A00.000-04%3A00&until=" . $date4 . "T23%3A59%3A59.000-04%3A00";
my $urlstringlog = $apiurllog . $sortor . $filter . $target . $appID . $date2;
run_api_call($urlstringlog);
@responsetext = parse_json ($client->responseContent());
push @responsetextall, @responsetext;
for my $i (0..$#responsetextall) {
for my $j (0..$#{$responsetextall[$i]}) {
my $responseid = $responsetextall[$i][$j]{act}{UID};
my $responsdisp = $responsetextall[$i][$j]{act}{Name};
push @$responsalter, $responseid ;
}
}
my $workbook = Excel::Writer::XLSX->new( $strExcelFilename );
my $format_bold = $workbook->add_format( bold => 1, size => 10, top=> 1, bottom=> 1 );
my $format2 = $workbook->add_format(%header1);
my $worksheet = $workbook->add_worksheet('UserSSO-Data');
my $r = 1;
my $r2 = 1;
my $r3 = 1;
foreach my $j (0..$#responsalter ) {
$worksheet->write(0, 0, 'UserSSO-Total-Users' );
$worksheet->write($r2, 0, $responsalter[$j]);
$r2 += 1;
}
$workbook->close;
print "Spreadsheet saved.\n";
## Mail Functionality
my $msg = MIME::Lite->new (
From => $from_address,
To => $to_address,
Subject => $subject,
Type =>'multipart/mixed'
) or die "Error creating multipart container: $!\n";
$msg->attach (
Type => 'text/csv',
Encoding => 'base64',
Path => $my_file_zip,
Filename => $your_file_zip,
Disposition => 'attachment'
) or die "Error adding $your_file_zip: $!\n";
MIME::Lite->send('smtp', $mail_host, Timeout=>60,Auth=>'LOGIN',AuthUser=>$from_address,AuthPass=>$pass,Port => 25, Debug => 1);
}
__PACKAGE__