Job / Praca

    Hylafax i wiele modemów oraz ró?ni odbiorcy.

    Mój system faksowy rozrasta si?, aktualnie obs?uguje 5 numerów a w planach s? kolejne dwa. Jak na razie w dwa miesi?ce odebra? ponad 1500 faksów i dzia?a bez zarzutu.

    Dok?adaj?c modemy oczywi?cie modyfikacji uleg? plik z konfiguracjami FaxDispatch i skrypty konstruuj?ce maile z faksami w formacie png.

    Skrypt z tego wpisu teraz jest w osobnych plikach, ka?dy dla innego numeru. Ka?dy z tych skryptów wykorzystuje te? osobny katalog tymczasowy (/tmp/faxX) aby w przypadku odbierania faksów jednocze?nie pliki z obrazkami nie pomiesza?y si?, lub nie zosta?y nadpisane. Eksportowanie zmiennych $SENDER i $FILE jest tak?e uzupe?nione o kolejny numer aby nie by?o niejasno?ci i b??dów w dostarczeniu.

    Teraz najciekawsza zmiana – instrukcja CASE w pliku FaxDispatch.
    FILETYPE=pdf;
    SENDTO=fax_pdf@***.pl;
    TEMPLATE=pl;
    case "$DEVICE" in
    tty00)  echo $FILE > /tmp/FILE; echo $SENDER > /tmp/SENDER; /tmp/convertmime.sh;         SENDTO=fax_pdf@***.pl;;
    ttyU0)  echo $FILE > /tmp/FILE2; echo $SENDER > /tmp/SENDER2; /tmp/convertmime2.sh;      SENDTO=;;
    ttyU1)  echo $FILE > /tmp/FILE3; echo $SENDER > /tmp/SENDER3; /tmp/convertmime3.sh;      SENDTO=;;
    ttyU2)  echo $FILE > /tmp/FILE4; echo $SENDER > /tmp/SENDER4; /tmp/convertmime4.sh;      SENDTO=;;
    ttyU3)  echo $FILE > /tmp/FILE5; echo $SENDER > /tmp/SENDER5; /tmp/convertmime5.sh;      SENDTO=;;
    esac

    Pierwsze 3 linijki to standardowa konfiguracja je?li nie zachodzi ?aden CASE, co w?a?ciwie nie powinno si? zdarzy?, ale w razie jakby co (np nieoczekiwana zmiana nazwy portu) fax zostanie dostarczony na mail fax_pdf@**.pl jako pdf.

    Nast?pnie CASE dzia?aj?cy na zmiennej $DEVICE, która odpowiada portowi RS232 w NetBSD. Ka?dy CASE wyrzuca nazwe pliku oraz nadawce do w?a?ciwego pliku, z którego pó?niej korzysta convertmimeX.sh do skonstruowania maila. Dodatkowo modem na tty00 oprócz dostarczenia faksu w formie obrazka wysy?a ten sam faks w formacie pdf.

    System dzia?a bardzo stabilnie, du?e znaczenie ma zapewne jako?? modemów oraz u?ytych przej?ciówek USB-RS232. W moim przypadku kable USB wpi?te obok siebie, blokowa?y losowo który? modem. Kiedy wpi?te s? co drugi port USB wolny – wszystko dzia?a bez zak?óce?.

    Na razie pó?ka modemowa wygl?da jak na zdj?ciu poni?ej, ale kiedy dojd? dodatkowe dwa modemy trzeba b?dzie pomy?le? o ?adniejszej organizacji :)

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Internet

    Ju? nie taki brzydki hack na hylafax i png

    W poprzednim wpisie – http://maciejewski.org/2012/05/16/hack-na-hylafax-i-faksy-w-png-lub-innym/ opisa?em jak przerabia? tiffy generowane przez hylafax na png i wysy?a? je ludziom na mail.

    Skrypt w FaxDispatch co prawda dzia?a? bardzo dobrze ale by? do?? brzydki i toporny (tworzenie headerów przez echo >> do plików itp).

    Pozatym okaza?o si? ?e mia? jedn? zasadnicz? wad?. Nie da?o si? przekaza? wiadomo?ci z za??cznikami inline. Po naci?ni?ciu FORWARD wiadomo?? wygl?da?a mniej wi?cej tak:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Dlatego zrezygnowa?em z sendmaila i uuencode na rzecz mime-construct

    Poprzedni skrypt wygl?da teraz tak:

    convert /var/spool/hylafax/`cat /tmp/FILE` /tmp/fax/fax.png
    for D in /tmp/fax/*png
    do
    echo -n "--file-attach " >> /tmp/fax/faxy
    echo $D >> /tmp/fax/faxy
    done
    mime-construct --header 'From: Serwer faxów ' --to fax@***.pl --subject "Odebrano fax od $SENDER" `cat /tmp/fax/faxy`
    rm -rf /tmp/fax/*

    Teraz p?tla for tworzy list? plików które mime-construct ma za??czy? do wiadomo?ci.

    Po zmianie skryptu dostarczanie faksów dzia?a jak dotychczas, natomiast po przekazaniu mamy eleganckie za??czniki tam gdzie powinny by? :)

     

    Job / Praca

    Hack na hylafax i faksy w png (lub innym formacie graficznym)

    Na pocz?tku by?a euforia. B?dziemy mieli firmowy wirtualny faks z pi?cioma numerami! Notabene „paczk?” dziesi?ciu kolejnych numerów od Netii dostali?my za darmo, a my?la?em, ?e za darmo nikt ju? nic nie daje. Zatem, serwer faksów stan?? na nogi do?? szybko i co równie? wa?ne, pierwszy numer uda?o si? uruchomi? bez wi?kszych problemów. Serwer to hylafax 4.4.7.

    $ faxstat
    HylaFAX scheduler on nidhog.***.pl: Running
    Modem tty00 (+48616******): Running and idle

    Po pocz?tkowym (moim) zachwycie jak to dobrze dzia?a i jak stabilnie, zacz??y nap?ywa? pytania i pro?by o zmian? formatu dostarczania faksów. Tutaj ma?e wtr?cenie jak wygl?da u nas dostarczanie faksów. Na jeden numer do ksi?gowo?ci kontrahenci wysy?aj? faks, który nast?pnie jest dystrybuowany do wszystkich osób którym mo?e by? to przydatne. Te kilkadziesi?t osób patrzy sobie w swoje Thunderbirdy a niektóre wybitnie oporne jednostki w Outlooki i im szybciej po ?ypni?ciu okiem mo?na stwierdzi?, ?e ten faks jest potrzebny lub nie tym lepiej.

    I tu w?a?nie zaczynaj? si? schody bowiem hylafax po odebraniu faksu umie go dostarczy? jako postscript (domy?lnie) lub wielostronicowy tiff lub pdf. Niby mamy wszystko co potrzeba, orygina?, obrazek, pdf. Niestety problem tkwi poniek?d w klientach pocztowych, które bez zag??biania si? w szczegó?y nie mog? wy?wietli? podgl?du za??cznika w pdf lub tiff.

    Domy?lnie hylafax nie ma tak?e opcji dla png, jpg czy gif poniewa? w/g twórców hylafax’a formaty te nie nadaj? si? do odwzorowywania czarno-bia?ych faksów oraz maj? problem z wielostronicowymi faksami.

    Po kilkudniowych (naprawd?) poszukiwaniach jakich? pluginów i patchy okaza?o si?, ?e s? co prawda jakie? patche na /var/spool/hylafax/bin/faxrcvd , który jest odpowiedzialny za przyjmowanie faksów istniej? na forum hylafax ale posty s? datowane mi?dzy 1999 a 2004 i teraz ten plik wygl?da zupe?nie inaczej. Oczywi?cie przy ka?dym po?cie akademicka dyskusja dlaczego nie u?ywa? png czy jpg…

    Jak ju? pisa?em, w modelu odbioru faksów, który u nas z powodzeniem funkcjonuje liczy si? szybko?? – dostajemy kilkana?cie/kilkadziesi?t faksów dziennie, który to faks mo?e dotyczy? jednej lub kilku osób z kiludziesi?ciu. Musi by? obrazek dost?pny w podgl?dzie dla programów pocztowych, koniec, kropka.

    Zamiast próbowa? zaimplementowa? obs?ug? png do faxrcvd, który dla mnie jest zbyt pokr?cony, poszed?em inn? drog?. Hylafax u?ywa pliku /var/spool/hylafax/etc/FaxDispatch do dostosowywania dostarczania faksów. Mo?na tam oprócz predefiniowanych pól dokonywa? modyfikacji np przy pomocy CASE (gdy numer taki, dostarcz gdzie?) itp. Mi natomiast rzuci? si? w oczy przedostatni przyk?ad z jakiego? FaxDispatcha w cvsie hylafaxa:

    ## To make each received fax saved outside hylafax
    ## ( Don't forget to chown uucp /some/place )

    /bin/cp $FILE /some/place

    Czysty skrypt shellowy w pliku konfiguracyjnym :)

    Po kilkunastu wys?anych faksach testowych i poprawieniu kilku b??dów oraz praw urodzi?o si? co? takiego:

    FILETYPE=pdf;
    SENDTO=fax@***.pl;
    TEMPLATE=pl;

    convert $FILE /tmp/fax/fax.png
    echo "To: fax@***.pl" > /tmp/fax/mail_fax
    echo "From: Serwer fax??w *** Sp. z o.o. " >> /tmp/fax/mail_fax
    echo "Subject: Odebrano fax od $SENDER" >> /tmp/fax/mail_fax
    echo "MIME-Version: 1.0" >> /tmp/fax/mail_fax
    echo "Content-Type: text" >> /tmp/fax/mail_fax
    echo "Content-Disposition: inline" >> /tmp/fax/mail_fax
    for D in /tmp/fax/*png
    do
    uuencode $D $D >> /tmp/zalaczniki
    done
    cat /tmp/zalaczniki >> /tmp/fax/mail_fax
    sendmail "fax@***.pl" < /tmp/fax/mail_fax rm -rf /tmp/fax/* rm -rf /tmp/zalaczniki

    Do dzia?ania potrzebny jest ImageMagic.

    Krótkie obja?nienie

    - pierwsze trzy linijki to najbardziej podstawowa konfiguracja, odbiorca, format i szablon wiadomo?ci. Zostawi?em podczas testowania jak przychodzi? faks aby przez wadliwy skrypt poni?ej nie zosta? pozbawionym faksów :)

    - nast?pnie konwertujemy plik tiff który tworzy hylafax w /var/spool/hylafax/recvq na png. Konkretny plik hylafax przechowuje w zmiennej $FILE wi?c nie musimy nawet szuka? tego o którego nam chodzi. Wielostronicowy tiff konwertowany jest na wiele plików png w/g schematu - je?li dajemy nazw? fax.png jako pliku wyj?ciowego dostajemy fax-1.png, fax-2.png itd.

    - kolejne 6 linijek tworzy nag?ówek maila, bez tego te? zadzia?a, ale odbiorca dostanie fax bez tematu od UNIX-to-UNIX Copy (uucp@domena), za?o?? si?, ?e to si? nie spodoba ludziom z poza IT :) Mamy zatem ?adnie od kogo dla kogo, z numerem telefonu który do nas wysy?a? w temacie.

    - nast?pne 4 linijki to p?tla dzia?aj?ca na katalogu gdzie s? nasze skonwertowane pliki png. Ka?dy plik png trzeba zakodowa? do ascii i doklei? do wcze?niej stworzonego pliku z nag?ówkiem.

    - ostatecznie wysy?amy mail sendmailem do??czaj?c nag?ówki i za??czniki z pliku.

    - ostatnie dwie linijki - sprz?tamy oczekuj?c nast?pnego faksu :)

    Trzeba pami?ta?, aby wszystkie polecenia i katalogi u?yte w tym skrypcie mog?y by? wykonane przez u?ytkownika uucp.

    Je?li wszystko gra, adresat maila powinien otrzyma? mniej wi?cej tak? wiadomo??:

    Related Posts with Thumbnails
    Add your widget here