diff --git a/zk/base.py b/zk/base.py index d6b125d..f901c6b 100644 --- a/zk/base.py +++ b/zk/base.py @@ -94,7 +94,7 @@ class ZK_helper(object): class ZK(object): """ Clase ZK """ - def __init__(self, ip, port=4370, timeout=60, password=0, force_udp=False, ommit_ping=False, verbose=False): + def __init__(self, ip, port=4370, timeout=60, password=0, force_udp=False, ommit_ping=False, verbose=False, encoding='UTF-8'): """ initialize instance """ self.is_connect = False self.is_enabled = True #let's asume @@ -108,6 +108,7 @@ class ZK(object): self.force_udp = force_udp self.ommit_ping = ommit_ping self.verbose = verbose + self.encoding = encoding self.tcp = False self.users = 0 self.fingers = 0 @@ -194,7 +195,7 @@ class ZK(object): def __test_tcp_top(self, packet): """ return size!""" - if len(packet)<=8: + if len(packet)<=8: return 0 # invalid packet tcp_header = unpack('= 28: uid, privilege, password, name, card, group_id, timezone, user_id = unpack(' max_uid: max_uid = uid - password = (password.split(b'\x00')[0]).decode(errors='ignore') - name = (name.split(b'\x00')[0]).decode(errors='ignore').strip() + password = (password.split(b'\x00')[0]).decode(self.encoding, errors='ignore') + name = (name.split(b'\x00')[0]).decode(self.encoding, errors='ignore').strip() #card = unpack('I', card)[0] #or hex value? group_id = str(group_id) user_id = str(user_id) - #TODO: check card value and find in ver8 + #TODO: check card value and find in ver8 if not name: name = "NN-%s" % user_id user = User(uid, name, privilege, password, group_id, user_id, card) @@ -1023,10 +1027,10 @@ class ZK(object): #u2 = int(uid[1].encode("hex"), 16) #uid = u1 + (u2 * 256) #privilege = int(privilege.encode("hex"), 16) - password = (password.split(b'\x00')[0]).decode(errors='ignore') - name = (name.split(b'\x00')[0]).decode(errors='ignore').strip() - group_id = (group_id.split(b'\x00')[0]).decode(errors='ignore').strip() - user_id = (user_id.split(b'\x00')[0]).decode(errors='ignore') + password = (password.split(b'\x00')[0]).decode(self.encoding, errors='ignore') + name = (name.split(b'\x00')[0]).decode(self.encoding, errors='ignore').strip() + group_id = (group_id.split(b'\x00')[0]).decode(self.encoding, errors='ignore').strip() + user_id = (user_id.split(b'\x00')[0]).decode(self.encoding, errors='ignore') if uid > max_uid: max_uid = uid #card = int(unpack('I', separator)[0]) if not name: @@ -1074,7 +1078,7 @@ class ZK(object): cmd_response = self.__send_command(command, command_string) if not cmd_response.get('status'): raise ZKErrorResponse("cant' reg events %i" % flags) - + def set_sdk_build_1(self): """ """ command = const.CMD_OPTIONS_WRQ @@ -1210,7 +1214,7 @@ class ZK(object): if self.verbose: print ("empty") continue """if len (data) == 5: - + continue""" if len(data) == 12: #class 1 attendance #TODO: RETEST ZK6 user_id, status, punch, timehex = unpack('