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
84 lines
1.7 KiB
4 years ago
|
#!/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"
|
||
|
);
|
||
|
}
|
||
|
}
|