10573:c4f503f40caf | 10574:622e59b51640 |
---|---|
11 import contextlib | 11 import contextlib |
12 | 12 |
13 from PyQt6.QtCore import QEventLoop, QObject | 13 from PyQt6.QtCore import QEventLoop, QObject |
14 | 14 |
15 from eric7.RemoteServer.EricRequestCategory import EricRequestCategory | 15 from eric7.RemoteServer.EricRequestCategory import EricRequestCategory |
16 from eric7.SystemUtilities import FileSystemUtilities | |
16 | 17 |
17 | 18 |
18 # TODO: sanitize all file names with FileSystemUtilities.plainFileName() | 19 # TODO: sanitize all file names with FileSystemUtilities.plainFileName() |
19 class EricServerFileSystemInterface(QObject): | 20 class EricServerFileSystemInterface(QObject): |
20 """ | 21 """ |
98 loop.quit() | 99 loop.quit() |
99 | 100 |
100 self.__serverInterface.sendJson( | 101 self.__serverInterface.sendJson( |
101 category=EricRequestCategory.FileSystem, | 102 category=EricRequestCategory.FileSystem, |
102 request="Chdir", | 103 request="Chdir", |
103 params={"directory": directory}, | 104 params={"directory": FileSystemUtilities.plainFileName(directory)}, |
104 callback=callback, | 105 callback=callback, |
105 ) | 106 ) |
106 | 107 |
107 loop.exec() | 108 loop.exec() |
108 return ok, error | 109 return ok, error |
153 loop.quit() | 154 loop.quit() |
154 | 155 |
155 self.__serverInterface.sendJson( | 156 self.__serverInterface.sendJson( |
156 category=EricRequestCategory.FileSystem, | 157 category=EricRequestCategory.FileSystem, |
157 request="Listdir", | 158 request="Listdir", |
158 params={"directory": directory}, | 159 params={"directory": FileSystemUtilities.plainFileName(directory)}, |
159 callback=callback, | 160 callback=callback, |
160 ) | 161 ) |
161 | 162 |
162 loop.exec() | 163 loop.exec() |
163 if not ok: | 164 if not ok: |
202 loop.quit() | 203 loop.quit() |
203 | 204 |
204 self.__serverInterface.sendJson( | 205 self.__serverInterface.sendJson( |
205 category=EricRequestCategory.FileSystem, | 206 category=EricRequestCategory.FileSystem, |
206 request="Stat", | 207 request="Stat", |
207 params={"filename": filename, "st_names": stNames}, | 208 params={ |
209 "filename": FileSystemUtilities.plainFileName(filename), | |
210 "st_names": stNames, | |
211 }, | |
208 callback=callback, | 212 callback=callback, |
209 ) | 213 ) |
210 | 214 |
211 loop.exec() | 215 loop.exec() |
212 if not ok: | 216 if not ok: |
242 loop.quit() | 246 loop.quit() |
243 | 247 |
244 self.__serverInterface.sendJson( | 248 self.__serverInterface.sendJson( |
245 category=EricRequestCategory.FileSystem, | 249 category=EricRequestCategory.FileSystem, |
246 request="Exists", | 250 request="Exists", |
247 params={"name": name}, | 251 params={"name": FileSystemUtilities.plainFileName(name)}, |
248 callback=callback, | 252 callback=callback, |
249 ) | 253 ) |
250 | 254 |
251 loop.exec() | 255 loop.exec() |
252 return nameExists | 256 return nameExists |
293 loop.quit() | 297 loop.quit() |
294 | 298 |
295 self.__serverInterface.sendJson( | 299 self.__serverInterface.sendJson( |
296 category=EricRequestCategory.FileSystem, | 300 category=EricRequestCategory.FileSystem, |
297 request="Access", | 301 request="Access", |
298 params={"name": name, "modes": modes}, | 302 params={"name": FileSystemUtilities.plainFileName(name), "modes": modes}, |
299 callback=callback, | 303 callback=callback, |
300 ) | 304 ) |
301 | 305 |
302 loop.exec() | 306 loop.exec() |
303 return accessOK | 307 return accessOK |
333 loop.quit() | 337 loop.quit() |
334 | 338 |
335 self.__serverInterface.sendJson( | 339 self.__serverInterface.sendJson( |
336 category=EricRequestCategory.FileSystem, | 340 category=EricRequestCategory.FileSystem, |
337 request="Mkdir", | 341 request="Mkdir", |
338 params={"directory": directory}, | 342 params={"directory": FileSystemUtilities.plainFileName(directory)}, |
339 callback=callback, | 343 callback=callback, |
340 ) | 344 ) |
341 | 345 |
342 loop.exec() | 346 loop.exec() |
343 return ok, error | 347 return ok, error |
373 loop.quit() | 377 loop.quit() |
374 | 378 |
375 self.__serverInterface.sendJson( | 379 self.__serverInterface.sendJson( |
376 category=EricRequestCategory.FileSystem, | 380 category=EricRequestCategory.FileSystem, |
377 request="Rmdir", | 381 request="Rmdir", |
378 params={"directory": directory}, | 382 params={"directory": FileSystemUtilities.plainFileName(directory)}, |
379 callback=callback, | 383 callback=callback, |
380 ) | 384 ) |
381 | 385 |
382 loop.exec() | 386 loop.exec() |
383 return ok, error | 387 return ok, error |
415 loop.quit() | 419 loop.quit() |
416 | 420 |
417 self.__serverInterface.sendJson( | 421 self.__serverInterface.sendJson( |
418 category=EricRequestCategory.FileSystem, | 422 category=EricRequestCategory.FileSystem, |
419 request="Replace", | 423 request="Replace", |
420 params={"old_name": oldName, "new_name": newName}, | 424 params={ |
425 "old_name": FileSystemUtilities.plainFileName(oldName), | |
426 "new_name": FileSystemUtilities.plainFileName(newName), | |
427 }, | |
421 callback=callback, | 428 callback=callback, |
422 ) | 429 ) |
423 | 430 |
424 loop.exec() | 431 loop.exec() |
425 return ok, error | 432 return ok, error |
455 loop.quit() | 462 loop.quit() |
456 | 463 |
457 self.__serverInterface.sendJson( | 464 self.__serverInterface.sendJson( |
458 category=EricRequestCategory.FileSystem, | 465 category=EricRequestCategory.FileSystem, |
459 request="Remove", | 466 request="Remove", |
460 params={"filename": filename}, | 467 params={"filename": FileSystemUtilities.plainFileName(filename)}, |
461 callback=callback, | 468 callback=callback, |
462 ) | 469 ) |
463 | 470 |
464 loop.exec() | 471 loop.exec() |
465 return ok, error | 472 return ok, error |
508 loop.quit() | 515 loop.quit() |
509 | 516 |
510 self.__serverInterface.sendJson( | 517 self.__serverInterface.sendJson( |
511 category=EricRequestCategory.FileSystem, | 518 category=EricRequestCategory.FileSystem, |
512 request="ReadFile", | 519 request="ReadFile", |
513 params={"filename": filename, "create": create}, | 520 params={ |
521 "filename": FileSystemUtilities.plainFileName(filename), | |
522 "create": create, | |
523 }, | |
514 callback=callback, | 524 callback=callback, |
515 ) | 525 ) |
516 | 526 |
517 loop.exec() | 527 loop.exec() |
518 if not ok: | 528 if not ok: |
556 | 566 |
557 self.__serverInterface.sendJson( | 567 self.__serverInterface.sendJson( |
558 category=EricRequestCategory.FileSystem, | 568 category=EricRequestCategory.FileSystem, |
559 request="WriteFile", | 569 request="WriteFile", |
560 params={ | 570 params={ |
561 "filename": filename, | 571 "filename": FileSystemUtilities.plainFileName(filename), |
562 "filedata": str(base64.b85encode(data), encoding="ascii"), | 572 "filedata": str(base64.b85encode(data), encoding="ascii"), |
563 "with_backup": withBackup, | 573 "with_backup": withBackup, |
564 }, | 574 }, |
565 callback=callback, | 575 callback=callback, |
566 ) | 576 ) |