HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [hylafax-users] Web faxing



On Wednesday 01 Feb 2006 01:21, Paul Daly wrote:
> Hi all, just wondering if anybody has tried my scenario and if there is an
> easy fix.
>
> I have 2 servers, one which has just been set up as a fax server that we
> are trialling HylaFax with, the other is a web server at a different
> location but on the same WAN.
>
> We have a php based application that has been developed in-house that we
> wish to add fax capability to, at the moment we have them printing from a
> pdf produced from the program and then manually faxing it.
>
> Has anybody tried this or can anyone think of any way to do this, both
> machines are running linux.

Yes, it's very easy to do this.  You just need to know about the `backtick` 
operator syntax.  If you do something like

$files = `ls`;

then "ls" will be passed to a shell; and when the command is finished the PHP 
variable $files will contain whatever the command sent to STDOUT.  Note that, 
exactly like "speech marks", variables within `backticks` will be 
substituted.  So you can do things like

$files = `ls $dir`

Note that if an error occurs with the command, then the error messages will go 
to STDERR  {which goes nowhere when you use the `backticks` operator}  and 
not STDOUT  {when you are using a terminal, of course, STDOUT and STDERR both 
go to the screen};  so you probably want to append 2>&1 just to make sure you 
will get the text of the error message in the returned value.

So all you need to do  {assuming you have already created a PDF file, $pdf is 
the filename and $fax_no is the number to send it to}  is something like

$fax_output = `sendfax -d $fax_no $pdf 2>&1`;

and then do a preg_match() to find any error messages.


I don't know where your PDFs are coming from; but if you're generating them 
on-the-fly, don't forget you can use html2ps to render an existing HTML file  
{or one you just created .....}  into PostScript -- sendfax also accepts this 
format.  The syntax would be something like

$fax_output = `html2ps $html_file | sendfax -d $fax_no - 2>&1`;

i.e.  you pipe the output of html2ps directly into sendfax, using - as a 
filename just means take input from STDIN.


There's one thing to beware of.  If you just make the `sendfax` unconditional, 
then refreshing the page in the browser will cause the fax to be re-sent!  
You probably do not want this behaviour, so you will have to keep track of 
what has been faxed recently from where.  You can do this by setting cookies 
or using session variables {which automatically ties the list of sent faxes 
to the browser instance},  or through a file or database on the server.  A 
database might actually be easier, since you can do a query like

SELECT COUNT(*) FROM webfaxdb WHERE ip='$ip` AND n='$fax_no' AND 
t>=$ten_mins_ago

where $ip = $_SERVER["REMOTE_ADDR"], t is a UNIX timestamp field  {you can 
fill it in from time()} and $ten_mins_ago = time() - 600

rather than having to parse a long text file.


Good luck with it and feel free to ask if you have any specific questions!

--
AJS

____________________ HylaFAX(tm) Users Mailing List _______________________
  To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi
 On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null
  *To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*




Project hosted by iFAX Solutions