[Freeswitch-svn] [commit] r5353 - freeswitch/trunk/scripts/contrib/trixter

Freeswitch SVN trixter at freeswitch.org
Wed Jun 13 18:14:10 EDT 2007


Author: trixter
Date: Wed Jun 13 18:14:09 2007
New Revision: 5353

Added:
   freeswitch/trunk/scripts/contrib/trixter/faxlib.jm

Log:
faxlib is an object based faxing library for rapid javascript development



Added: freeswitch/trunk/scripts/contrib/trixter/faxlib.jm
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/trixter/faxlib.jm	Wed Jun 13 18:14:09 2007
@@ -0,0 +1,134 @@
+//  -*- mode:c; tab-width:4; c-basic-offset:4; c-indent-level:4; indent-tabs-mode:nil;  -*-
+/*
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH[tm] Spidermonkey Fax Manipulation Library
+ *
+ * The Initial Developer of the Original Code is
+ *
+ * Bret McDanel <bret AT 0xdecafbad dot com>
+ *
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ *
+ * faxlib.jm
+ *
+ * This is a library to do fax manipulation from within Javascript in FreeSWITCH[tm]
+ * The goal of this library is to make it easier to send and receive faxes
+ *
+ *
+ * REQUIREMENTS:
+ *
+ * - A working install of socket2me from the FreeSWITCH[tm] src
+ * - tiff2pdf from libtiff tools, in your PATH [optional]
+ */
+
+
+function fax(session,socketaddr,faxFilePrefix,faxFile) {
+    this.socketaddr=socketaddr;
+    this.session=session;
+    this.faxDetect=false;
+    this.faxFilePrefix="/tmp";
+    this.faxFile=session.uuid+".tiff";
+    this.gotFax=false;
+
+    if(typeof faxFilePrefix != 'undefined') {
+        this.faxFilePrefix = faxFilePrefix;
+    }
+
+    if(typeof faxFile != 'undefined') {
+        this.faxFile = faxFile;
+    }
+
+
+
+    // disable fax cng detection
+    this.stopFaxDetect = function () {
+        if(this.faxDetect == true) {
+            this.session.execute("stop_fax_detect","");
+            this.faxDetect=false;
+        }
+    }
+
+
+    // enable fax cng detection
+    this.startFaxDetect = function () {
+        if(this.faxDetect == false) {
+            this.session.execute("fax_detect","");
+            this.faxDetect=true;
+        }
+    }
+
+
+    this.getFaxFile = function () {
+        return this.faxFilePrefix + "/" + this.faxFile;
+    }
+
+
+    // receive a fax
+    this.rxFax = function() {
+        if(typeof this.socketaddr != 'undefined') {
+            this.stopFaxDetect();
+            this.session.execute("set","fax_mode=recv"); // not needed at this time, future proofing
+            this.session.execute("set","fax_file_name=" + this.getFaxFile());
+            this.session.execute("socket",this.socketAddr);
+            fd = new File(this.getFaxFile());
+            if(fd.exists) {
+                this.gotFax=true;
+            }
+        } else {
+            console_log("SocketAddr is not set, unable to receive a fax\n");
+        }
+    }
+
+
+
+    // send a fax
+    this.txFax = function() {
+        if(typeof this.socketaddr != 'undefined') {
+            this.session.execute("set","fax_mode=send");
+            this.session.execute("set","fax_file_name=" + this.getFaxFile());
+            this.session.execute("socket",this.socketAddr);
+        } else {
+            console_log("SocketAddr is not set, unable to transmit a fax\n");
+        }
+    }
+
+
+    this.fax2pdf = function() {
+        fd = new File(this.getFaxFile());
+        if(fd.exists) {
+            outfile = this.faxFile.replace(/tiff$/i,"pdf");
+
+            if(outfile == this.faxFile) {
+                outfile = this.faxFile + ".pdf";
+            }
+            system("tiff2pdf -z -p letter -t 'FreeSWITCH FAX' -s 'Fax from " + this.session.caller_id_num + "' " +
+                   "-c FreeSWITCH -a FreeSWITCH -f -o " + this.faxFilePrefix + "/" + outfile + " " + 
+                   this.getFaxFile());
+            var pdf = new File(this.faxFilePrefix + "/" + outfile);
+            if(pdf.exists) {
+                fd.remove(); // remove the tiff file
+                this.faxFile = outfile;
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+
+}



More information about the Freeswitch-svn mailing list