[freeside-commits] freeside/FS/bin freeside-fetch,NONE,1.1.2.1

Jeff Finucane,420,, jeff at wavetail.420.am
Tue Mar 20 18:35:34 PDT 2007


Update of /home/cvs/cvsroot/freeside/FS/bin
In directory wavetail:/tmp/cvs-serv26255/FS/bin

Added Files:
      Tag: FREESIDE_1_7_BRANCH
	freeside-fetch 
Log Message:
ticket 1427, automatically email excel a/r report (backport)

--- NEW FILE: freeside-fetch ---
#!/usr/bin/perl -Tw

use strict;
use LWP::UserAgent;
use FS::UID qw(adminsuidsetup);
use FS::Record qw(qsearchs);
use FS::Misc qw(send_email);

my $user = shift or die &usage;
my $employeelist = shift or die &usage;
my $url = shift or die &usage;
adminsuidsetup $user;

my @employees = split ',', $employeelist;

foreach my $employee (@employees) {

  $employee =~ /^(\w+)$/;

  my $access_user = qsearchs( 'access_user', { 'username' => $1 } );
  unless ($access_user) {
    warn "Can't find employee $employee... skipping";
    next;
  }

  my $email_address = $access_user->option('email_address');
  unless ($email_address) {
    warn "No email address for $employee... skipping";
    next;
  }

  no warnings 'redefine';
  local *LWP::UserAgent::get_basic_credentials = sub {
    return ($access_user->username, $access_user->_password);
  };

  my $ua = new LWP::UserAgent;
  $ua->agent("FreesideFetcher/0.1 " . $ua->agent);

  my $req = new HTTP::Request GET => $url;
  my $res = $ua->request($req);

  my %options = ( 'from'             => $email_address,
                  'to'               => $email_address,
                  'subject'          => 'subject',
                  'body'             => $res->content,
                );

  $options{'content-type'} = $res->content_type
    if $res->content_type;
  $options{'content-encoding'} = $res->content_encoding
    if $res->content_encoding;

  if ($res->is_success) {
    send_email %options;
  }else{
    warn "fetching $url failed for $employee: " . $res->status_line;
  }
}

sub usage {
  die "Usage:\n\n  freeside-fetch user employee[,employee ...] url\n\n";
}

=head1 NAME

freeside-fetch - Send a freeside page to a list of employees.

=head1 SYNOPSIS

  freeside-fetch user employee[,employee ...] url

=head1 DESCRIPTION

  Fetches a web page specified by url as if employee and emails it to
  employee.  Useful when run out of cron to send freeside web pages.

  user: From the mapsecrets file - a user with access to the freeside database

  employee: the username of an employee to receive the emailed page.  May be a comma separated list

  url: the web page to be received

=head1 BUGS

  Can leak employee usernames and passwords if requested to access inappropriate urls.

=cut




More information about the freeside-commits mailing list