Skip to content
ais_http.py 43.5 KiB
Newer Older
developer8's avatar
developer8 committed
                self.wfile.write("input pass: %s\n" % new_pass)
                self.wfile.write(self.change_password(new_pass))                       

            elif f == 'd':
                self.wfile.write(AISGetDevicesForCheck()) 
          
            elif f == 'f':
                self.wfile.write(ACTIVE_DEV_HEADLINE)
developer8's avatar
developer8 committed
                self.wfile.write(AISGetVersion())
            
            elif f == 'i':
                self.wfile.write(ACTIVE_DEV_HEADLINE)
developer8's avatar
developer8 committed
                self.wfile.write(AISGetVersion())
                self.wfile.write(AISGetTime())
                self.wfile.write(sys_get_timezone_info()+ "\n")
           
            elif f == 'Q': 
                self.wfile.write(ACTIVE_DEV_HEADLINE)
                if device_list == SHOW_DEV_LIST:
                    self.print_available_devices()                
                if device_type:
                     self.edit_device_list(int(device_type),int(device_id))
                else:
                    self.wfile.write("")
                    
           
           
           
           
developer8's avatar
developer8 committed
           
            elif f == 'x':
                self.wfile.write("\nServer stopped !\nClose program !\n")            
developer8's avatar
developer8 committed
                shut_event.set()
                httpd.server_close()                
                if sys.platform.startswith('linux'):
                    os.system('pkill -9 python')
                elif sys.platform.startswith('win'):                    
                    sys.exit(0)
developer8's avatar
developer8 committed
                
        except (Exception) as error_mess:
                self.wfile.write(error_mess)
                self.wfile.write(traceback.print_exc())
developer8's avatar
developer8 committed
        """
        self.send_response(200)  # OK
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        """
       
        return
developer8's avatar
developer8 committed
           
def RunAll():
    global serv   
    serv = threading.Thread(target=handler_server)   
developer8's avatar
developer8 committed
    serv.start()       
    while True:
            if serv.isAlive():            
                serv.join(timeout = SERV_JOIN)                     
developer8's avatar
developer8 committed
        except (KeyboardInterrupt,SystemExit,Exception) as e:
            httpd.server_close()
            print '\nServer stopped\nProgram close',e
developer8's avatar
developer8 committed
            shut_event.set()
            if sys.platform.startswith('linux'):
                os.system('pkill -9 python')
            elif sys.platform.startswith('win'):            
                sys.exit(0)            
developer8's avatar
developer8 committed
            break
            

def handler_server():
    while not shut_event.is_set():        
        my_lock.acquire()                                                         
        httpd.handle_request()
        my_lock.release()
        time.sleep(THD_SLEEP)

def init():   
    print AISGetLibraryVersionStr() 
developer8's avatar
developer8 committed
    global httpd   
    dev_list()     
developer8's avatar
developer8 committed
    httpd = HTTPServer((HTTP_SERVER_NAME,HTTP_SERVER_PORT),GetHandler) 
    httpd.socket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) 
    RunAll() 


def AISGetLibraryVersionStr ():
    dll_ver = mySO.AIS_GetLibraryVersionStr 
developer8's avatar
developer8 committed
    dll_ver.restype = c_char_p
    return dll_ver()
 
 #=========================== helper functions ======================= 
def wr_status(funct_name,dl_status):
    res = funct_name + ': {%d(%s): %s}\n' % (dl_status,hex(dl_status),E_ERROR_CODES[dl_status])
    return res
        
# def dbg_action2str(action_value):    
    # res = '[%d(%s):%s]' % (action_value,hex(action_value),E_CARD_ACTION[action_value])
    # return res
   
# def dl_status2str(status):
    # res = '[%d(%s):%s]' % (status,hex(status),E_ERROR_CODES[status])
    # return res

def dbg_action2str(action_value):
    dbg_a = mySO.dbg_action2str
    dbg_a.argtype = c_int
    dbg_a.restype = c_char_p    
    return dbg_a(action_value)

def dl_status2str(status):
    dl_s = mySO.dl_status2str
    dl_s.argtype = DL_STATUS
    dl_s.restype = c_char_p    
    return dl_s(status)
    
def sys_get_timezone():
    s_tz = mySO.sys_get_timezone
    s_tz.restype = c_long
    return s_tz()

def sys_get_daylight():
    s_dl  = mySO.sys_get_daylight
    s_dl.restype = c_int
    return s_dl()    

def sys_get_dstbias():
    s_dstb = mySO.sys_get_dstbias
    s_dstb.restype = c_long
    return s_dstb()  

def sys_get_timezone_info():
    s_tzinfo = mySO.sys_get_timezone_info
    s_tzinfo.restype = c_char_p
    return s_tzinfo()

#====================================================================== 




mojFormat      = "| {0:3d} | {1:016X} | {2} | {3:7d}  | {4:2d}  | {5}  | {6:7d} | {7:10s} | {8:5d}  | {9:8d}  | {10:9d} |"    

format_grid = ["--------------------------------------------------------------------------------------------------------------------",
               "| indx|  Reader HANDLE   | SerialNm | Type h/d | ID  | FW   | speed   | FTDI: sn   | opened | DevStatus | SysStatus |",
               "--------------------------------------------------------------------------------------------------------------------"
              ]    


rte_list_header=["-----------------------------------------------------------------------------------------------------------------------------------------",
                 "| Idx   |              ACTION              | RD ID | Card ID | JobNr |    NFC [length] : UID    | Time-stamp |       Date - Time        |",
                 "----------------------------------------------------------------------------------------------------------------------------------------"
                ]


rte_format = "| {0:5d} | {1:28s} | {2:5d} | {3:7d} | {4:5d} | {5:24s} | {6:10d} | {7:s} | "

log_format = "| {0:5d} | {1:32s} | {2:5d} | {3:7d} | {4:5d} | {5:24s} | {6:#10d} | {7:s} | "




my_lock = threading.Lock()
shut_event = threading.Event()

if __name__ == '__main__': 
    global httpd 
    global mySO
    mySO = GetPlatformLib() 
    init()