OSDial
view release on metacpan or search on metacpan
lib/OSDial.pm view on Meta::CPAN
=over 4
=item B<media_delete_filedata( $filename )>
Removes all entries in the C<osdial_media_data> table associated with I<$filename>.
=back
=cut
sub media_delete_filedata {
my ($self, $filename) = @_;
$self->debug(3,'media_delete_filedata'," Deleting Filedata:%s", $filename);
$self->sql_execute( sprintf('DELETE FROM osdial_media_data WHERE filename=%s;', $self->quote($filename) ),'MDFD' );
$self->sql_disconnect('MDFD');
}
=over 4
=item B<media_get_filedata( $filename )>
Combines all of the entries in the C<osdial_media_data> table associated with I<$filename> and returns the binary data.
=back
=cut
sub media_get_filedata {
my ($self, $filename) = @_;
$self->debug(3,'media_get_filedata'," Get Filedata:%s", $filename);
my $filedata;
while (my $sret = $self->sql_query( sprintf("SELECT filedata FROM osdial_media_data WHERE filename=%s;", $self->quote($filename) ), 'MGFD' ) ) {
$filedata .= $sret->{filedata};
}
$self->sql_disconnect('MGFD');
return $filedata;
}
=over 4
=item B<media_save_file( $directory, $filename, [$overwrite] )>
Export entry matching I<$filename> and save into the given I<$directory>.
File is skipped and is not overwitten unless I<$overwrite> is true.
=back
=cut
sub media_save_file {
my ($self,$dir,$filename,$overwrite) = @_;
$dir = '.' unless ($dir);
$overwrite = 0 unless ($overwrite);
unless (-e $dir) {
mkdir($dir,oct('0777'));
my ($login,$pass,$uid,$gid) = getpwnam('asterisk');
chown($uid,$gid,$dir);
}
chmod(oct('0777'),$dir);
my $file = $dir.'/'.$filename;
$self->debug(3,'media_save_file'," Adding File:%s Dir:%s Name:%s Overwrite:%s", $file, $dir, $filename, $overwrite);
return '*'.$filename if (-e $file and $overwrite==0);
my $filedata = $self->media_get_filedata($filename);
return '!'.$filename unless ($filedata);
open(MSF, '>'.$file);
binmode(MSF);
print MSF $filedata;
close(MSF);
my ($login,$pass,$uid,$gid) = getpwnam('asterisk');
chown($uid,$gid,$file);
chmod(oct('0666'),$file);
return '='.$filename if ($overwrite);
return '+'.$filename;
}
=over 4
=item B<media_save_files( $directory, [$pattern], [$overwrite] )>
All files matching the regex I<$patten> are exported and saved into the given I<$directory>.
The default I<$pattern> is C<.*>. Files are skipped and not overwitten unless I<$overwrite> is true.
=back
=cut
sub media_save_files {
my ($self,$dir,$pattern,$overwrite) = @_;
$dir = '.' unless ($dir);
$overwrite = 0 unless ($overwrite);
$pattern = '.*' unless ($pattern);
$self->debug(3,'media_save_files',"Adding Files:%s Pattern:%s Overwrite:%s", $dir, $pattern, $overwrite);
unless (-e $dir) {
mkdir($dir,oct('0777'));
my ($login,$pass,$uid,$gid) = getpwnam('asterisk');
chown($uid,$gid,$dir);
}
chmod(oct('0777'),$dir);
my @files;
while (my $sret = $self->sql_query("SELECT * FROM osdial_media;", "MSF")) {
if ($sret->{filename} =~ /$pattern/) {
push @files, $self->media_save_file($dir, $sret->{filename}, $overwrite);
chmod(oct('0666'),$dir.'/'.$sret->{filename});
}
}
$self->sql_disconnect('MSF');
return @files;
}
=over 4
=item B<send_email( $host, $port, $user, $pass, $to, $from, $subject, $html, $text )>
=item B<send_email({ host=>$host, port=>$port, user=>$user, pass=>$pass, to=>$to, from=>$from, subject=>$subject, $html=>$html, text=>$text })>
Sends out an email using the given parameters. Returns 1 on success, 0 on failure.
=back
=cut
sub send_email {
my ($self, $opt1, $port, $user, $pass, $to, $from, $subject, $html, $text) = @_;
my $host='';
if (ref($opt1) =~ /HASH/) {
$host = $opt1->{'host'} if (exists($opt1->{'host'}));
$port = $opt1->{'port'} if (exists($opt1->{'port'}));
$user = $opt1->{'user'} if (exists($opt1->{'user'}));
$pass = $opt1->{'pass'} if (exists($opt1->{'pass'}));
$to = $opt1->{'to'} if (exists($opt1->{'to'}));
$from = $opt1->{'from'} if (exists($opt1->{'from'}));
$subject = $opt1->{'subject'} if (exists($opt1->{'subject'}));
if (exists($opt1->{'message'})) {
$text=$opt1->{'message'};
$html="<pre style=\"font-family:'DejaVu Sans mono','Lucida Console',monospace;\">".$text.'</pre>';
} else {
$html = $opt1->{'html'} if (exists($opt1->{'html'}));
$text = $opt1->{'text'} if (exists($opt1->{'text'}));
}
} else {
$host = $opt1;
}
$host='localhost' if (!defined($host) or $host eq '');
$port='25' if (!defined($port) or $port eq '');
my $transparams = { 'host' => $host, 'port' => $port };
if (defined($user) and $user ne '') {
$transparams->{'sasl_username'} = $user;
$transparams->{'sasl_password'} = $pass;
}
( run in 1.458 second using v1.01-cache-2.11-cpan-71847e10f99 )