MCPcopy Create free account
hub / github.com/R4be1/PuppetMaster / load_file

Method load_file

qqwry.py:96–175  ·  view source on GitHub ↗

加载qqwry.dat文件。成功返回True,失败返回False。 参数filename可以是qqwry.dat的文件名(str类型),也可以是bytes类型的文件内容。

(self, filename: Union[str, bytes], loadindex: bool=False)

Source from the content-addressed store, hash-verified

94 self.__fun = None
95
96 def load_file(self, filename: Union[str, bytes], loadindex: bool=False) -> bool:
97 '''加载qqwry.dat文件。成功返回True,失败返回False。
98 参数filename可以是qqwry.dat的文件名(str类型),也可以是bytes类型的文件内容。'''
99 self.clear()
100
101 if type(filename) == bytes:
102 self.data = buffer = filename
103 filename = 'memory data'
104 elif type(filename) == str:
105 # read file
106 try:
107 with open(filename, 'br') as f:
108 self.data = buffer = f.read()
109 except Exception as e:
110 logger.error('%s open failed:%s' % (filename, str(e)))
111 self.clear()
112 return False
113
114 if self.data == None:
115 logger.error('%s load failed' % filename)
116 self.clear()
117 return False
118 else:
119 self.clear()
120 return False
121
122 if len(buffer) < 8:
123 logger.error('%s load failed, file only %d bytes' %
124 (filename, len(buffer))
125 )
126 self.clear()
127 return False
128
129 # index range
130 index_begin = int4(buffer, 0)
131 index_end = int4(buffer, 4)
132 if index_begin > index_end or \
133 (index_end - index_begin) % 7 != 0 or \
134 index_end + 7 > len(buffer):
135 logger.error('%s index error' % filename)
136 self.clear()
137 return False
138
139 self.index_begin = index_begin
140 self.index_end = index_end
141 self.index_count = (index_end - index_begin) // 7 + 1
142
143 if not loadindex:
144 logger.info('%s %s bytes, %d segments. without index.' %
145 (filename, format(len(buffer),','), self.index_count)
146 )
147 self.__fun = self.__raw_search
148 return True
149
150 # load index
151 self.idx1 = array.array('L')
152 self.idx2 = array.array('L')
153 self.idxo = array.array('L')

Callers 2

Master.pyFile · 0.80
qqwry.pyFile · 0.80

Calls 3

clearMethod · 0.95
int4Function · 0.85
int3Function · 0.85

Tested by

no test coverage detected