9
9
from collections import defaultdict
10
10
import re
11
11
12
+ SPECIAL_SYMBOLS = '/":*|\\ ?%<>\x7f '
13
+
12
14
def db_connect ():
13
15
base_dir = os .path .dirname (os .path .abspath (__file__ ))
14
16
config_path = os .path .join (base_dir , 'mysql_config.json' )
@@ -158,7 +160,6 @@ def insert_file(file, detection, src, conn):
158
160
detection = 0
159
161
detection_type = f"{ checktype } -{ checksize } " if checktype != "None" else f"{ checktype } "
160
162
if punycode_need_encode (file ['name' ]):
161
- print (encode_punycode (file ['name' ]))
162
163
query = f"INSERT INTO file (name, size, checksum, fileset, detection, detection_type, `timestamp`) VALUES ('{ encode_punycode (file ['name' ])} ', '{ file ['size' ]} ', '{ checksum } ', @fileset_last, { detection } , '{ detection_type } ', NOW())"
163
164
else :
164
165
query = f"INSERT INTO file (name, size, checksum, fileset, detection, detection_type, `timestamp`) VALUES ('{ escape_string (file ['name' ])} ', '{ file ['size' ]} ', '{ checksum } ', @fileset_last, { detection } , '{ detection_type } ', NOW())"
@@ -204,7 +205,7 @@ def my_escape_string(s: str) -> str:
204
205
new_name += "\x81 " + chr (0x80 + ord (char ))
205
206
else :
206
207
new_name += char
207
- return new_name
208
+ return escape_string ( new_name )
208
209
209
210
210
211
def encode_punycode (orig ):
@@ -232,7 +233,9 @@ def punycode_need_encode(orig):
232
233
- contains a char that should be escaped or
233
234
- ends with a dot or a space.
234
235
"""
235
- if orig != escape_string (orig ):
236
+ if not all (
237
+ (0x20 <= ord (c ) < 0x80 ) and
238
+ c not in SPECIAL_SYMBOLS for c in orig ):
236
239
return True
237
240
if orig [- 1 ] in " ." :
238
241
return True
@@ -990,4 +993,4 @@ def add_usercount(fileset, conn):
990
993
cursor .execute (f"SELECT user_count from fileset WHERE id = { fileset } " )
991
994
count = cursor .fetchone ()['user_count' ]
992
995
if count >= 3 :
993
- cursor .execute (f"UPDATE fileset SET status = 'ReadyForReview' WHERE id = { fileset } " )
996
+ cursor .execute (f"UPDATE fileset SET status = 'ReadyForReview' WHERE id = { fileset } " )
0 commit comments