Merge ~sylvain-pineau/checkbox-support:fix-1837350 into checkbox-support:master
- Git
- lp:~sylvain-pineau/checkbox-support
- fix-1837350
- Merge into master
Status: | Merged |
---|---|
Approved by: | Sylvain Pineau |
Approved revision: | e4b7ad7f3a3110d94b52c12eb3ed1ee6b902a892 |
Merged at revision: | 66ec4c055327bbb9ada36e33111dc59724173fb9 |
Proposed branch: | ~sylvain-pineau/checkbox-support:fix-1837350 |
Merge into: | checkbox-support:master |
Diff against target: |
368 lines (+171/-91) 2 files modified
checkbox_support/vendor/aioblescan/aioblescan.py (+168/-87) checkbox_support/vendor/aioblescan/eddystone.py (+3/-4) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Devices Certification Bot | Needs Fixing | ||
Sylvain Pineau (community) | Approve | ||
Review via email: mp+376054@code.launchpad.net |
Commit message
Description of the change
Update aioblescan to include You-Sheng Yang fixes (See https:/
Devices Certification Bot (ce-certification-qa) wrote : | # |
The merge was fine but running tests failed.
[xenial] [09:05:42] starting container
Device project added to xenial-testing
[bionic] [09:05:45] starting container
Device project added to bionic-testing
[xenial] [09:05:50] provisioning container
[bionic] [09:05:56] provisioning container
[xenial] [09:06:12] Starting tests...
[xenial] Found a test script: ./requirements/
[bionic] [09:06:12] Starting tests...
[bionic] Found a test script: ./requirements/
[xenial] [09:06:13] container-
[xenial] output: https:/
[xenial] [09:06:15] Fixing file permissions in source directory
[xenial] [09:06:15] Destroying container
[bionic] [09:06:41] container-
[bionic] [09:06:41] Fixing file permissions in source directory
[bionic] [09:06:41] Destroying container
Preview Diff
1 | diff --git a/checkbox_support/vendor/aioblescan/aioblescan.py b/checkbox_support/vendor/aioblescan/aioblescan.py | |||
2 | index b0d9d0d..745686f 100644 | |||
3 | --- a/checkbox_support/vendor/aioblescan/aioblescan.py | |||
4 | +++ b/checkbox_support/vendor/aioblescan/aioblescan.py | |||
5 | @@ -25,7 +25,7 @@ | |||
6 | 25 | # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR | 25 | # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR |
7 | 26 | # IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE | 26 | # IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE |
8 | 27 | 27 | ||
10 | 28 | import socket, asyncio, sys | 28 | import socket, asyncio |
11 | 29 | from struct import pack, unpack, calcsize | 29 | from struct import pack, unpack, calcsize |
12 | 30 | 30 | ||
13 | 31 | 31 | ||
14 | @@ -106,15 +106,14 @@ class Bool: | |||
15 | 106 | 106 | ||
16 | 107 | """ | 107 | """ |
17 | 108 | def __init__(self,name,val=True): | 108 | def __init__(self,name,val=True): |
20 | 109 | self.name=name | 109 | self.name = name |
21 | 110 | self.val=val | 110 | self.val = val |
22 | 111 | 111 | ||
23 | 112 | def encode (self): | 112 | def encode (self): |
26 | 113 | val=(self.val and b'\x01') or b'\x00' | 113 | return b'\x01' if self.val else b'\x00' |
25 | 114 | return val | ||
27 | 115 | 114 | ||
28 | 116 | def decode(self,data): | 115 | def decode(self,data): |
30 | 117 | self.val= data[:1]==b"\x01" | 116 | self.val = (data[:1] == b"\x01") |
31 | 118 | return data[1:] | 117 | return data[1:] |
32 | 119 | 118 | ||
33 | 120 | def __len__(self): | 119 | def __len__(self): |
34 | @@ -769,7 +768,7 @@ class HCI_Cmd_LE_Scan_Enable(HCI_Command): | |||
35 | 769 | 768 | ||
36 | 770 | """ | 769 | """ |
37 | 771 | 770 | ||
39 | 772 | def __init__(self,enable=True,filter_dups=True): | 771 | def __init__(self,enable=True,filter_dups=False): |
40 | 773 | super(self.__class__, self).__init__(b"\x08",b"\x0c") | 772 | super(self.__class__, self).__init__(b"\x08",b"\x0c") |
41 | 774 | self.payload.append(Bool("enable",enable)) | 773 | self.payload.append(Bool("enable",enable)) |
42 | 775 | self.payload.append(Bool("filter",filter_dups)) | 774 | self.payload.append(Bool("filter",filter_dups)) |
43 | @@ -803,7 +802,7 @@ class HCI_Cmd_LE_Set_Scan_Params(HCI_Command): | |||
44 | 803 | 802 | ||
45 | 804 | """ | 803 | """ |
46 | 805 | 804 | ||
48 | 806 | def __init__(self,scan_type=0x0,interval=10, window=750, oaddr_type=0,filter=0): | 805 | def __init__(self,scan_type=0x1,interval=10, window=750, oaddr_type=0,filter=0): |
49 | 807 | 806 | ||
50 | 808 | super(self.__class__, self).__init__(b"\x08",b"\x0b") | 807 | super(self.__class__, self).__init__(b"\x08",b"\x0b") |
51 | 809 | self.payload.append(EnumByte("scan type",scan_type, | 808 | self.payload.append(EnumByte("scan type",scan_type, |
52 | @@ -1000,7 +999,11 @@ class HCI_LE_Meta_Event(Packet): | |||
53 | 1000 | data=x.decode(data) | 999 | data=x.decode(data) |
54 | 1001 | code=self.payload[0] | 1000 | code=self.payload[0] |
55 | 1002 | if code.val==b"\x02": | 1001 | if code.val==b"\x02": |
57 | 1003 | ev=HCI_LEM_Adv_Report() | 1002 | ev=RepeatedField("Reports", HCI_LEM_Adv_Report) |
58 | 1003 | data=ev.decode(data) | ||
59 | 1004 | self.payload.append(ev) | ||
60 | 1005 | elif code.val==b"\x0d": | ||
61 | 1006 | ev=RepeatedField("Ext Adv Report", HCI_LEM_Ext_Adv_Report) | ||
62 | 1004 | data=ev.decode(data) | 1007 | data=ev.decode(data) |
63 | 1005 | self.payload.append(ev) | 1008 | self.payload.append(ev) |
64 | 1006 | else: | 1009 | else: |
65 | @@ -1014,12 +1017,50 @@ class HCI_LE_Meta_Event(Packet): | |||
66 | 1014 | for x in self.payload: | 1017 | for x in self.payload: |
67 | 1015 | x.show(depth+1) | 1018 | x.show(depth+1) |
68 | 1016 | 1019 | ||
69 | 1020 | class ManufacturerSpecificData(Packet): | ||
70 | 1021 | def __init__(self, name="Manufacturer Specific Data"): | ||
71 | 1022 | self.name = name | ||
72 | 1023 | self.payload = [UShortInt("Manufacturer ID", endian="little"), Itself("Payload")] | ||
73 | 1024 | |||
74 | 1025 | def decode(self, data): | ||
75 | 1026 | # Warning: Will consume all the data you give it! | ||
76 | 1027 | for p in self.payload: | ||
77 | 1028 | data = p.decode(data) | ||
78 | 1029 | return data | ||
79 | 1030 | |||
80 | 1031 | def show(self, depth=0): | ||
81 | 1032 | print("{}{}:".format(PRINT_INDENT*depth,self.name)) | ||
82 | 1033 | for x in self.payload: | ||
83 | 1034 | x.show(depth+1) | ||
84 | 1035 | |||
85 | 1036 | |||
86 | 1037 | class RepeatedField(Packet): | ||
87 | 1038 | def __init__(self, name, subfield_cls, length_field_cls=UIntByte): | ||
88 | 1039 | self.name = name | ||
89 | 1040 | self.subfield_cls = subfield_cls | ||
90 | 1041 | self.length_field = length_field_cls("count of " + name) | ||
91 | 1042 | self.payload = [] | ||
92 | 1043 | |||
93 | 1044 | def decode(self, data): | ||
94 | 1045 | self.payload = [] | ||
95 | 1046 | data = self.length_field.decode(data) | ||
96 | 1047 | for x in range(self.length_field.val): | ||
97 | 1048 | field = self.subfield_cls() | ||
98 | 1049 | data = field.decode(data) | ||
99 | 1050 | self.payload.append(field) | ||
100 | 1051 | |||
101 | 1052 | return data | ||
102 | 1053 | |||
103 | 1054 | def show(self, depth=0): | ||
104 | 1055 | print("{}{}: {}".format(PRINT_INDENT*depth, self.name, self.length_field.val)) | ||
105 | 1056 | for field in self.payload: | ||
106 | 1057 | field.show(depth+1) | ||
107 | 1058 | |||
108 | 1017 | 1059 | ||
109 | 1018 | class HCI_LEM_Adv_Report(Packet): | 1060 | class HCI_LEM_Adv_Report(Packet): |
110 | 1019 | def __init__(self): | 1061 | def __init__(self): |
111 | 1020 | self.name="Adv Report" | 1062 | self.name="Adv Report" |
114 | 1021 | self.payload=[UIntByte("num reports"), | 1063 | self.payload=[EnumByte("ev type",0,{0:"generic adv", 3:"no connection adv", 4:"scan rsp"}), |
113 | 1022 | EnumByte("ev type",0,{0:"generic adv", 3:"no connection adv", 4:"scan rsp"}), | ||
115 | 1023 | EnumByte("addr type",0,{0:"public", 1:"random"}), | 1064 | EnumByte("addr type",0,{0:"public", 1:"random"}), |
116 | 1024 | MACAddr("peer"),UIntByte("length")] | 1065 | MACAddr("peer"),UIntByte("length")] |
117 | 1025 | 1066 | ||
118 | @@ -1029,80 +1070,15 @@ class HCI_LEM_Adv_Report(Packet): | |||
119 | 1029 | for x in self.payload: | 1070 | for x in self.payload: |
120 | 1030 | data=x.decode(data) | 1071 | data=x.decode(data) |
121 | 1031 | #Now we have a sequence of len, type data with possibly a RSSI byte at the end | 1072 | #Now we have a sequence of len, type data with possibly a RSSI byte at the end |
196 | 1032 | while len(data) > 1: | 1073 | datalength = self.payload[-1].val |
197 | 1033 | length=UIntByte("sublen") | 1074 | |
198 | 1034 | data=length.decode(data) | 1075 | while datalength > 0: |
199 | 1035 | code=EIR_Hdr() | 1076 | ad=AD_Structure() |
200 | 1036 | data=code.decode(data) | 1077 | data=ad.decode(data) |
201 | 1037 | 1078 | self.payload.append(ad) | |
202 | 1038 | if code.val == 0x01: | 1079 | |
203 | 1039 | #Flag | 1080 | datalength -= len(ad) |
204 | 1040 | myinfo=BitFieldByte("flags",0,["Undef","Undef","Simul LE - BR/EDR (Host)","Simul LE - BR/EDR (Control.)","BR/EDR Not Supported", | 1081 | |
131 | 1041 | "LE General Disc.","LE Limited Disc."]) | ||
132 | 1042 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
133 | 1043 | self.payload.append(myinfo) | ||
134 | 1044 | elif code.val == 0x02: | ||
135 | 1045 | myinfo=NBytes_List("Incomplete uuids",2) | ||
136 | 1046 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
137 | 1047 | self.payload.append(myinfo) | ||
138 | 1048 | elif code.val == 0x03: | ||
139 | 1049 | myinfo=NBytes_List("Complete uuids",2) | ||
140 | 1050 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
141 | 1051 | self.payload.append(myinfo) | ||
142 | 1052 | elif code.val == 0x04: | ||
143 | 1053 | myinfo=NBytes_List("Incomplete uuids",4) | ||
144 | 1054 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
145 | 1055 | self.payload.append(myinfo) | ||
146 | 1056 | elif code.val == 0x05: | ||
147 | 1057 | myinfo=NBytes_List("Complete uuids",4) | ||
148 | 1058 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
149 | 1059 | self.payload.append(myinfo) | ||
150 | 1060 | elif code.val == 0x06: | ||
151 | 1061 | myinfo=NBytes_List("Incomplete uuids",16) | ||
152 | 1062 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
153 | 1063 | self.payload.append(myinfo) | ||
154 | 1064 | elif code.val == 0x07: | ||
155 | 1065 | myinfo=NBytes_List("Complete uuids",16) | ||
156 | 1066 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
157 | 1067 | self.payload.append(myinfo) | ||
158 | 1068 | elif code.val == 0x14: | ||
159 | 1069 | myinfo=NBytes_List("Service Solicitation uuid",2) | ||
160 | 1070 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
161 | 1071 | self.payload.append(myinfo) | ||
162 | 1072 | elif code.val == 0x16: | ||
163 | 1073 | myinfo=Adv_Data("Advertised Data",2) | ||
164 | 1074 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
165 | 1075 | self.payload.append(myinfo) | ||
166 | 1076 | elif code.val == 0x1f: | ||
167 | 1077 | myinfo=NBytes_List("Service Solicitation uuid",4) | ||
168 | 1078 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
169 | 1079 | self.payload.append(myinfo) | ||
170 | 1080 | elif code.val == 0x20: | ||
171 | 1081 | myinfo=Adv_Data("Advertised Data",4) | ||
172 | 1082 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
173 | 1083 | self.payload.append(myinfo) | ||
174 | 1084 | elif code.val == 0x15: | ||
175 | 1085 | myinfo=NBytes_List("Service Solicitation uuid",16) | ||
176 | 1086 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
177 | 1087 | self.payload.append(myinfo) | ||
178 | 1088 | elif code.val == 0x21: | ||
179 | 1089 | myinfo=Adv_Data("Advertised Data",16) | ||
180 | 1090 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
181 | 1091 | self.payload.append(myinfo) | ||
182 | 1092 | elif code.val == 0x08: | ||
183 | 1093 | myinfo=String("Short Name") | ||
184 | 1094 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
185 | 1095 | self.payload.append(myinfo) | ||
186 | 1096 | elif code.val == 0x09: | ||
187 | 1097 | myinfo=String("Complete Name") | ||
188 | 1098 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
189 | 1099 | self.payload.append(myinfo) | ||
190 | 1100 | else: | ||
191 | 1101 | myinfo=Itself("Payload for %s"%code.strval) | ||
192 | 1102 | xx=myinfo.decode(data[:length.val-len(code)]) | ||
193 | 1103 | self.payload.append(myinfo) | ||
194 | 1104 | |||
195 | 1105 | data=data[length.val-len(code):] | ||
205 | 1106 | if data: | 1082 | if data: |
206 | 1107 | myinfo=IntByte("rssi") | 1083 | myinfo=IntByte("rssi") |
207 | 1108 | data=myinfo.decode(data) | 1084 | data=myinfo.decode(data) |
208 | @@ -1114,6 +1090,43 @@ class HCI_LEM_Adv_Report(Packet): | |||
209 | 1114 | for x in self.payload: | 1090 | for x in self.payload: |
210 | 1115 | x.show(depth+1) | 1091 | x.show(depth+1) |
211 | 1116 | 1092 | ||
212 | 1093 | |||
213 | 1094 | class HCI_LEM_Ext_Adv_Report(Packet): | ||
214 | 1095 | def __init__(self): | ||
215 | 1096 | self.name="Ext Adv Report" | ||
216 | 1097 | self.payload=[BitFieldByte("ev type",0,["Connectable", "Scannable", "Directed", "Scan Response", "Legacy", "Incomplete/more", "Incomplete/truncated", "RFU"]), | ||
217 | 1098 | UIntByte("unused"), | ||
218 | 1099 | EnumByte("addr type",0,{0:"public device", 1:"random device", 2:"public identity", 3:"random identity", 0xFF:"anonymous"}), | ||
219 | 1100 | MACAddr("peer"), | ||
220 | 1101 | EnumByte("primary phy",1,{1:"LE 1M", 3:"LE Coded"}), | ||
221 | 1102 | EnumByte("secondary phy",0,{0:"N/A", 1:"LE 1M", 2:"LE 2M", 3:"LE Coded"}), | ||
222 | 1103 | EnumByte("adv sid",255,{0:"0x00", 1:"0x01", 2:"0x02", 3:"0x03", 4:"0x04", 5:"0x05", 6:"0x06", 7:"0x07", 8:"0x08", 9:"0x09", 10:"0x0A", 11:"0x0B", 12:"0x0C", 13:"0x0D", 14:"0x0E", 15:"0x0F", 0xFF:"N/A"}), | ||
223 | 1104 | IntByte("tx power"), | ||
224 | 1105 | IntByte("rssi"), | ||
225 | 1106 | UShortInt("adv interval", endian="little"), | ||
226 | 1107 | EnumByte("direct addr type",0,{0:"public device", 1:"random device", 2:"public identity", 3:"random identity", 0xFE:"random device"}), | ||
227 | 1108 | MACAddr("direct addr"), | ||
228 | 1109 | UIntByte("data len")] | ||
229 | 1110 | |||
230 | 1111 | |||
231 | 1112 | def decode(self,data): | ||
232 | 1113 | |||
233 | 1114 | for x in self.payload: | ||
234 | 1115 | data=x.decode(data) | ||
235 | 1116 | |||
236 | 1117 | datalength = self.payload[-1].val | ||
237 | 1118 | while datalength > 0: | ||
238 | 1119 | ad=AD_Structure() | ||
239 | 1120 | data=ad.decode(data) | ||
240 | 1121 | self.payload.append(ad) | ||
241 | 1122 | |||
242 | 1123 | datalength -= len(ad) | ||
243 | 1124 | |||
244 | 1125 | def show(self,depth=0): | ||
245 | 1126 | print("{}{}:".format(PRINT_INDENT*depth,self.name)) | ||
246 | 1127 | for x in self.payload: | ||
247 | 1128 | x.show(depth+1) | ||
248 | 1129 | |||
249 | 1117 | class EIR_Hdr(Packet): | 1130 | class EIR_Hdr(Packet): |
250 | 1118 | def __init__(self): | 1131 | def __init__(self): |
251 | 1119 | self.type= EnumByte("type", 0, { | 1132 | self.type= EnumByte("type", 0, { |
252 | @@ -1154,8 +1167,8 @@ class EIR_Hdr(Packet): | |||
253 | 1154 | def decode(self,data): | 1167 | def decode(self,data): |
254 | 1155 | return self.type.decode(data) | 1168 | return self.type.decode(data) |
255 | 1156 | 1169 | ||
258 | 1157 | def show(self): | 1170 | def show(self,depth=0): |
259 | 1158 | return self.type.show() | 1171 | return self.type.show(depth) |
260 | 1159 | 1172 | ||
261 | 1160 | @property | 1173 | @property |
262 | 1161 | def val(self): | 1174 | def val(self): |
263 | @@ -1195,7 +1208,75 @@ class Adv_Data(Packet): | |||
264 | 1195 | resu+=len(x) | 1208 | resu+=len(x) |
265 | 1196 | return resu | 1209 | return resu |
266 | 1197 | 1210 | ||
267 | 1211 | class AD_Structure(Packet): | ||
268 | 1212 | def __init__(self): | ||
269 | 1213 | self.name="" | ||
270 | 1214 | self.length=0 | ||
271 | 1215 | self.payload=[] | ||
272 | 1216 | |||
273 | 1217 | def __len__(self): | ||
274 | 1218 | return self.length | ||
275 | 1219 | |||
276 | 1220 | def decode(self,data): | ||
277 | 1221 | length=UIntByte("sublen") | ||
278 | 1222 | data=length.decode(data) | ||
279 | 1223 | self.length=len(length)+length.val | ||
280 | 1224 | self.payload=[] | ||
281 | 1225 | if length.val == 0: | ||
282 | 1226 | return data | ||
283 | 1227 | |||
284 | 1228 | type=EIR_Hdr() | ||
285 | 1229 | data=type.decode(data) | ||
286 | 1230 | |||
287 | 1231 | val = None | ||
288 | 1232 | if type.val == 0x01: | ||
289 | 1233 | val=BitFieldByte("flags",0,["Undef","Undef","Simul LE - BR/EDR (Host)","Simul LE - BR/EDR (Control.)","BR/EDR Not Supported", | ||
290 | 1234 | "LE General Disc.","LE Limited Disc."]) | ||
291 | 1235 | elif type.val == 0x02: | ||
292 | 1236 | val=NBytes_List("Incomplete uuids",2) | ||
293 | 1237 | elif type.val == 0x03: | ||
294 | 1238 | val=NBytes_List("Complete uuids",2) | ||
295 | 1239 | elif type.val == 0x04: | ||
296 | 1240 | val=NBytes_List("Incomplete uuids",4) | ||
297 | 1241 | elif type.val == 0x05: | ||
298 | 1242 | val=NBytes_List("Complete uuids",4) | ||
299 | 1243 | elif type.val == 0x06: | ||
300 | 1244 | val=NBytes_List("Incomplete uuids",16) | ||
301 | 1245 | elif type.val == 0x07: | ||
302 | 1246 | val=NBytes_List("Complete uuids",16) | ||
303 | 1247 | elif type.val == 0x08: | ||
304 | 1248 | val=String("Short Name") | ||
305 | 1249 | elif type.val == 0x09: | ||
306 | 1250 | val=String("Complete Name") | ||
307 | 1251 | elif type.val == 0x14: | ||
308 | 1252 | val=NBytes_List("Service Solicitation uuid",2) | ||
309 | 1253 | elif type.val == 0x15: | ||
310 | 1254 | val=NBytes_List("Service Solicitation uuid",16) | ||
311 | 1255 | elif type.val == 0x16: | ||
312 | 1256 | val=Adv_Data("Advertised Data",2) | ||
313 | 1257 | elif type.val == 0x1f: | ||
314 | 1258 | val=NBytes_List("Service Solicitation uuid",4) | ||
315 | 1259 | elif type.val == 0x20: | ||
316 | 1260 | val=Adv_Data("Advertised Data",4) | ||
317 | 1261 | elif type.val == 0x21: | ||
318 | 1262 | val=Adv_Data("Advertised Data",16) | ||
319 | 1263 | elif type.val == 0xff: | ||
320 | 1264 | val=ManufacturerSpecificData() | ||
321 | 1265 | else: | ||
322 | 1266 | val=Itself("Payload for %s"%type.strval) | ||
323 | 1267 | |||
324 | 1268 | # Some data type may consume all input data, therefore an copy | ||
325 | 1269 | # is passed instead. | ||
326 | 1270 | val.decode(data[:length.val-len(type)]) | ||
327 | 1271 | |||
328 | 1272 | self.payload.append(type) | ||
329 | 1273 | self.payload.append(val) | ||
330 | 1274 | |||
331 | 1275 | return data[length.val-len(type):] | ||
332 | 1198 | 1276 | ||
333 | 1277 | def show(self,depth=0): | ||
334 | 1278 | for x in self.payload: | ||
335 | 1279 | x.show(depth+1) | ||
336 | 1199 | 1280 | ||
337 | 1200 | # | 1281 | # |
338 | 1201 | # The defs are over. Now the realstuffs | 1282 | # The defs are over. Now the realstuffs |
339 | diff --git a/checkbox_support/vendor/aioblescan/eddystone.py b/checkbox_support/vendor/aioblescan/eddystone.py | |||
340 | index 3cc0d2c..1ee0217 100644 | |||
341 | --- a/checkbox_support/vendor/aioblescan/eddystone.py | |||
342 | +++ b/checkbox_support/vendor/aioblescan/eddystone.py | |||
343 | @@ -114,22 +114,21 @@ class EddyStone(object): | |||
344 | 114 | url_schemes.index((myurl.scheme,myhostname.startswith("www."))))) | 114 | url_schemes.index((myurl.scheme,myhostname.startswith("www."))))) |
345 | 115 | if myhostname.startswith("www."): | 115 | if myhostname.startswith("www."): |
346 | 116 | myhostname = myhostname[4:] | 116 | myhostname = myhostname[4:] |
347 | 117 | |||
348 | 118 | extval=None | 117 | extval=None |
349 | 119 | if myhostname.split(".")[-1] in url_domain: | 118 | if myhostname.split(".")[-1] in url_domain: |
350 | 120 | extval = url_domain.index(myhostname.split(".")[-1]) | 119 | extval = url_domain.index(myhostname.split(".")[-1]) |
351 | 121 | myhostname = ".".join(myhostname.split(".")[:-1]) | 120 | myhostname = ".".join(myhostname.split(".")[:-1]) |
353 | 122 | if extval and not mypath.startswith("/"): | 121 | if extval is not None and not mypath.startswith("/"): |
354 | 123 | extval+=7 | 122 | extval+=7 |
355 | 124 | else: | 123 | else: |
356 | 125 | if myurl.port is None: | 124 | if myurl.port is None: |
358 | 126 | if extval: | 125 | if extval is not None: |
359 | 127 | mypath = mypath[1:] | 126 | mypath = mypath[1:] |
360 | 128 | else: | 127 | else: |
361 | 129 | extval += 7 | 128 | extval += 7 |
362 | 130 | encodedurl.append(aios.String("URL string")) | 129 | encodedurl.append(aios.String("URL string")) |
363 | 131 | encodedurl[-1].val = myhostname | 130 | encodedurl[-1].val = myhostname |
365 | 132 | if extval: | 131 | if extval is not None: |
366 | 133 | encodedurl.append(aios.IntByte("URL Extention",extval)) | 132 | encodedurl.append(aios.IntByte("URL Extention",extval)) |
367 | 134 | 133 | ||
368 | 135 | if myurl.port: | 134 | if myurl.port: |
self-approved