HylaFAX The world's most advanced open source fax server

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

[hylafax-users] pythonutils.hylafaxutil



Hello,
I am using the object pythonutils.hylafaxutil generated in python language.

I have found a little bug in it:
jobid's are generated in two digit basis; so we  can only have jobids
between 1 and 99.

I have fixed the source code: hfaxlib.py   specially I have modify how the
job id is generated in the job_new method:

Regards

Victor M. Moreno


The new code follow:

#!/usr/bin/env python

# Author: Harald Holzer
# 5.4.2000: Initial release

# 6.5.2000: Harald Holzer
# added logging support

# 12.6.2000: Victor M. Moreno   vmoreno@germinus.com
#         support jobid longer than 2 digits.
#         job_new method modified

import string,sys
from socket import *


class hfax:
    s=None
    sf=None
    d=None
    df=None
    user=""
    pw=""
    host=""
    port=4559
    debuglevel=0
    logfile="c:\w2hfax.log"

    def readline(self):
 data=self.sf.readline()
 self.loginfo("read: " + data)
 return data

    def writeline(self,line):
 self.loginfo("write: " + line)
 self.s.send(line)

    def connect(self,host,user,pw):
 self.host=host
 self.user=user
 self.pw=pw
 self.s=socket(AF_INET,SOCK_STREAM)
 try:
     self.s.connect(host,self.port)
     self.sf=self.s.makefile("rw")
     line=self.readline()
     self.writeline("USER " + user + "\n")
     line=self.readline()
     if line[:3]=="230":
  rc=0
     else:
  rc=1
 except error,detail:
     self.loginfo("error: " + str(detail))
     rc=2
 return rc

    def job_new(self):
 self.writeline("JOB default\n")
 self.readline()
 self.writeline("JNEW\n")
 data=self.readline()
 #Victor: 200 New job created: jobid: 2 groupid: 2.
 jobid=string.atoi(
                           data[
                                 string.find(data,"jobid:")+6 :
string.find(data,"groupid:")
                               ]
                         )
 return jobid

    def job_select(self,jobid):
 self.writeline("JOB " + str(jobid) + "\n")
 self.readline()

    def job_kill(self):
 self.writeline("JKILL\n")
 self.readline()

    def job_delete(self):
 self.writeline("JDELE\n")
 self.readline()

    def job_param_getall(self):
 self.writeline("JPARM\n")
 self.readline()
 data=""
 while 1:
     line=self.readline()
     if line[:4]=="217 ": break
     data=data + line
 return data

    def job_param_get(self,pname):
 self.writeline("JPARM " + pname + "\n")
 data=""
 while 1:
     line = self.readline()
     data = data + line[4:]
     if line[3]==" ": break
 return string.strip(data)

    def job_param_set(self,pname,pvalue):
 self.writeline("JPARM " + pname + " " + pvalue +"\n")
 self.readline()

    def getfolder(self,folder):
 self.writeline("PASV\n")
 data=self.readline()
 #print data
 data=data[string.find(data,"(")+1:string.find(data,")")]
 a1,a2,a3,a4,p1,p2=string.split(data,",")
 addr=a1 + "." + a2 + "." + a3 + "." + a4
 port=string.atoi(p1)*256 + string.atoi(p2)
 self.d=socket(AF_INET,SOCK_STREAM)
 self.d.connect(addr,port)
 self.df=self.d.makefile()
 self.writeline("list "+folder+"\n")
 fdata=""
 while 1:
     line=self.df.readline()
     if not line: break
     fdata=fdata + line
 self.df.close()
 self.d.close()
 self.readline()
 self.readline()
 return fdata

    def storefile(self,filename):
 self.writeline("PASV\n")
 data=self.readline()
 #print data
 data=data[string.find(data,"(")+1:string.find(data,")")]
 a1,a2,a3,a4,p1,p2=string.split(data,",")
 addr=a1 + "." + a2 + "." + a3 + "." + a4
 port=string.atoi(p1)*256 + string.atoi(p2)
 self.d=socket(AF_INET,SOCK_STREAM)
 self.d.connect(addr,port)
 self.df=self.d.makefile("w")

 self.writeline("STOT\n")
 reply=self.readline()
 sfile=open(filename,"r")
 while 1:
     line=sfile.readline()
     if not line: break
     self.df.write(line)
 sfile.close()
 self.df.close()
 self.d.close()
 self.readline()
 filename=string.split(reply," ")[2]
 return filename

    def retrfile(self,filename,tmpfilename):
 self.writeline("PASV\n")
 data=self.readline()
 #print data
 data=data[string.find(data,"(")+1:string.find(data,")")]
 a1,a2,a3,a4,p1,p2=string.split(data,",")
 addr=a1 + "." + a2 + "." + a3 + "." + a4
 port=string.atoi(p1)*256 + string.atoi(p2)
 self.d=socket(AF_INET,SOCK_STREAM)
 self.d.connect(addr,port)
 self.df=self.d.makefile("rb")

 self.writeline("RETR " + filename + "\n")
 reply=self.readline()
 sfile=open(tmpfilename,"wb")
 line=self.df.read()
 #while 1:
 #    line=self.df.readline()
 #    if not line: break
 #    sfile.write(line)
 sfile.write(line)
 sfile.close()
 self.df.close()
 self.d.close()
 self.readline()
 return reply

    def deletefile(self,name):
 self.writeline("DELE " + name + "\n")
 self.readline()

    def jobparam(self,param):
 self.writeline("JPARM " + param+"\n")
 self.readline()

    def submitjob(self):
 self.writeline("JSUBM\n")
 self.readline()

    def docmd(self,cmd):
 self.writeline(cmd+"\n")
 self.readline()

    def close(self):
 self.sf.close()
 self.s.close()

    def setdebuginfo(self,dbglevel,logfile):
 self.debuglevel=dbglevel
 self.logfile=logfile

    def loginfo(self,info):
 if self.debuglevel>0:
     f=open(self.logfile,"a")
     f.write(info+"\r\n")
     f.close

if __name__=="__main__":
    host="127.0.0.1"
    if len(sys.argv)>1:
 listdir=sys.argv[1]
    else:
 listdir="/"
    test=hfax()
    test.connect(host,"root")
    print test.getfolder(listdir)
    test.close()






____________________ HylaFAX(tm) Users Mailing List _______________________
 To unsub: mail -s unsubscribe hylafax-users-request@hylafax.org < /dev/null




Project hosted by iFAX Solutions