Ansible roles
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
1.7 KiB

#!/usr/bin/perl -w
use strict;
use warnings;
use JSON;
use YAML::Tiny;
use Getopt::Long;
use Email::MIME;
use Email::Sender::Simple qw(sendmail);
use File::Basename;
use utf8;
my $conf = {};
my $opt = {
config => '{{ jitsi_root_dir }}/etc/jibri/finilize.yml'
};
GetOptions(
"config=s" => \$opt->{config}
);
sub send_mail {
my ($subject, $dest, $body) = @_;
my $mail = Email::MIME->create(
header_str => [
From => $conf->{from},
To => $dest,
Subject => $subject
],
attributes => {
charset => 'utf-8',
encoding => 'base64'
},
body_str => $body
);
sendmail($mail);
}
# Read config file
if (-e $opt->{config}){
my $yaml = YAML::Tiny->read( $opt->{config} )
or die "Config file " . $opt->{config} . " is invalid\n";
if ( not $yaml->[0] ) {
die "Config file " . $opt->{config} . " is invalid\n";
}
$conf = $yaml->[0];
}
$conf->{notify} || [];
my $recording = $ARGV[0];
my $metadata = {};
if (-e "$recording/metadata.json"){
open(my $jst, "$recording/metadata.json") or die "$!";
local $/;
$metadata = from_json(<$jst>);
}
my $video = undef;
opendir ( DIR, $recording ) || die "Error in opening dir $recording\n";
while( (my $filename = readdir(DIR))) {
if ($filename =~ m/\.mp4$/){
$video = basename($filename);
last;
}
}
closedir(DIR);
foreach my $participant (@{$metadata->{participants}}){
push @{$conf->{notify}}, $participant->{user}->{id};
}
if (defined $video){
foreach my $dest (@{$conf->{notify}}){
send_mail(
"Enregistrement Jitsi Meet",
$dest,
"L'enregistrement vidéo est disponible à l'adresse $conf->{base_url}/" .
basename($recording) . "/$video\n"
);
}
}