#!/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/finalize.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" ); } }