summaryrefslogtreecommitdiff
path: root/script/fax_new
diff options
context:
space:
mode:
Diffstat (limited to 'script/fax_new')
-rwxr-xr-xscript/fax_new111
1 files changed, 111 insertions, 0 deletions
diff --git a/script/fax_new b/script/fax_new
new file mode 100755
index 0000000..8015da8
--- /dev/null
+++ b/script/fax_new
@@ -0,0 +1,111 @@
+#! /usr/bin/env ruby
+
+begin
+
+if !ARGV[0] or ARGV[0] == '' or !ARGV[10] or ARGV[10] == ''
+ $stderr.puts "usage: fax_new <fax_account_id> \
+<result_code> \
+<document_total_pages> \
+<document_transferred_pages> \
+<ecm_requested> \
+<ecm_used> \
+<image_resolution> \
+<remote_station_id> \
+<transfer_rate> \
+<transmission_time> \
+<document> \
+<caller_id_number> \
+<caller_id_name>"
+ exit 1
+end
+
+fax_arguments = {
+ :fax_account_id => ARGV[0],
+ :result_code => ARGV[1],
+ :document_total_pages => ARGV[2],
+ :document_transferred_pages => ARGV[3],
+ :ecm_requested => ARGV[4],
+ :ecm_used => ARGV[5],
+ :image_resolution => ARGV[6],
+ :remote_station_id => ARGV[7],
+ :transfer_rate => ARGV[8],
+ :transmission_time => ARGV[9],
+ :document => ARGV[10],
+ :caller_id_number => ARGV[11],
+ :caller_id_name => ARGV[12],
+}
+
+APP_PATH = File.expand_path('../../config/application', __FILE__)
+require File.expand_path('../../config/boot', __FILE__)
+require APP_PATH
+
+begin
+ Rails.application.require_environment!
+rescue ActiveRecord::AdapterNotSpecified => e
+ error "No such Rails environment: \"#{Rails.env}\"."
+ exit 1
+end
+
+TIFF_FUFFIX = ".tiff"
+PDF_SUFFIX = ".pdf"
+
+tiff_file = fax_arguments[:document]
+
+if !tiff_file or !File.exists?( tiff_file )
+ $stderr.puts "File \"#{tiff_file}\" does not exist"
+ exit 1
+end
+
+paper_size = "letter"
+pdf_file = "#{File.dirname(tiff_file)}/#{File.basename(tiff_file, TIFF_FUFFIX)}#{PDF_SUFFIX}"
+
+system "tiff2pdf \\
+ -o \"#{pdf_file}\" \\
+ -p #{paper_size} \\
+ -a \"#{fax_arguments[:remote_station_id]}\" \\
+ -c \"AMOOMA Gemeinschaft version #{GEMEINSCHAFT_VERSION}\" \\
+ -t \"#{fax_arguments[:remote_station_id]}\" \"#{tiff_file}\""
+
+if !File.exists?( pdf_file )
+ $stderr.puts "File \"#{pdf_file}\" does not exist"
+ exit 1
+end
+
+fax_account = FaxAccount.find(fax_arguments[:fax_account_id])
+if !fax_account
+ $stderr.puts "Fax account \"#{fax_arguments[:fax_account_id]}\" does not exist"
+ exit 1
+end
+
+fax_arguments[:document] = nil
+fax_arguments[:success] = true
+fax_arguments[:inbound] = true
+fax_arguments[:sent_at] = Time.now
+fax_arguments[:local_station_id] = fax_account.station_id
+fax_arguments[:retry_counter] = 0
+fax_arguments[:fax_resolution_id] = FaxResolution.first.id
+fax_arguments[:image_size] = File.size(tiff_file)
+fax_arguments[:ecm_used] = fax_arguments[:ecm_used] == "on" ? true : false
+fax_document = fax_account.fax_documents.build(fax_arguments)
+fax_document.document = File.open(pdf_file)
+
+if ! fax_document.save
+ $stderr.puts "Error(s) creating fax document:"
+ $stderr.puts fax_document.errors.inspect
+ exit 1
+end
+
+fax_document.mark_as_inbound!
+
+Notifications.new_fax(fax_document).deliver
+
+exit 0
+
+rescue SignalException => e
+ $stderr.print "#{e.class.to_s}"
+ $stderr.print " (Signal #{e.signo.to_s})" if e.respond_to?(:signo) && e.signo
+ $stderr.puts ""
+ exit 130
+end
+
+exit 0