0.0.9
fix upload_file and delete_file to return boolean as it did before switching the ftps client module for A1/P1 devices
This commit is contained in:
parent
3d92d73879
commit
ef969d3d3b
@ -125,7 +125,7 @@ class IoTFTPSClient:
|
|||||||
with open(dest, "wb") as file:
|
with open(dest, "wb") as file:
|
||||||
self.ftps_session.retrbinary(f"RETR {source}", file.write)
|
self.ftps_session.retrbinary(f"RETR {source}", file.write)
|
||||||
|
|
||||||
def upload_file(self, source: str, dest: str, callback=None):
|
def upload_file(self, source: str, dest: str, callback=None) -> bool:
|
||||||
"""upload a file to a path inside the FTPS server"""
|
"""upload a file to a path inside the FTPS server"""
|
||||||
|
|
||||||
file_size = os.path.getsize(source)
|
file_size = os.path.getsize(source)
|
||||||
@ -133,43 +133,50 @@ class IoTFTPSClient:
|
|||||||
block_size = max(file_size // 100, 8192)
|
block_size = max(file_size // 100, 8192)
|
||||||
rest = None
|
rest = None
|
||||||
|
|
||||||
# Taken from ftplib.storbinary but with custom ssl handling
|
try:
|
||||||
# due to the shitty bambu p1p ftps server TODO fix properly.
|
# Taken from ftplib.storbinary but with custom ssl handling
|
||||||
with open(source, "rb") as fp:
|
# due to the shitty bambu p1p ftps server TODO fix properly.
|
||||||
self.ftps_session.voidcmd('TYPE I')
|
with open(source, "rb") as fp:
|
||||||
|
self.ftps_session.voidcmd('TYPE I')
|
||||||
|
|
||||||
with self.ftps_session.transfercmd(f"STOR {dest}", rest) as conn:
|
with self.ftps_session.transfercmd(f"STOR {dest}", rest) as conn:
|
||||||
while 1:
|
while 1:
|
||||||
buf = fp.read(block_size)
|
buf = fp.read(block_size)
|
||||||
|
|
||||||
if not buf:
|
if not buf:
|
||||||
break
|
break
|
||||||
|
|
||||||
conn.sendall(buf)
|
conn.sendall(buf)
|
||||||
|
|
||||||
if callback:
|
if callback:
|
||||||
callback(buf)
|
callback(buf)
|
||||||
|
|
||||||
# shutdown ssl layer
|
# shutdown ssl layer
|
||||||
if ftplib._SSLSocket is not None and isinstance(conn, ftplib._SSLSocket):
|
if ftplib._SSLSocket is not None and isinstance(conn, ftplib._SSLSocket):
|
||||||
# Yeah this is suposed to be conn.unwrap
|
# Yeah this is suposed to be conn.unwrap
|
||||||
# But since we operate in prot p mode
|
# But since we operate in prot p mode
|
||||||
# we can close the connection always.
|
# we can close the connection always.
|
||||||
# This is cursed but it works.
|
# This is cursed but it works.
|
||||||
if "vsFTPd" in self.welcome:
|
if "vsFTPd" in self.welcome:
|
||||||
conn.unwrap()
|
conn.unwrap()
|
||||||
else:
|
else:
|
||||||
conn.shutdown(socket.SHUT_RDWR)
|
conn.shutdown(socket.SHUT_RDWR)
|
||||||
|
|
||||||
return self.ftps_session.voidresp()
|
return True
|
||||||
|
except Exception as ex:
|
||||||
|
print(f"unexpected exception occurred: {ex}")
|
||||||
|
pass
|
||||||
|
return False
|
||||||
|
|
||||||
# Old api call.
|
def delete_file(self, path: str) -> bool:
|
||||||
# self.ftps_session.storbinary(
|
|
||||||
# f"STOR {dest}", file, blocksize=block_size, callback=callback)
|
|
||||||
|
|
||||||
def delete_file(self, path: str):
|
|
||||||
"""delete a file from under a path inside the FTPS server"""
|
"""delete a file from under a path inside the FTPS server"""
|
||||||
self.ftps_session.delete(path)
|
try:
|
||||||
|
self.ftps_session.delete(path)
|
||||||
|
return True
|
||||||
|
except Exception as ex:
|
||||||
|
print(f"unexpected exception occurred: {ex}")
|
||||||
|
pass
|
||||||
|
return False
|
||||||
|
|
||||||
def move_file(self, source: str, dest: str):
|
def move_file(self, source: str, dest: str):
|
||||||
"""move a file inside the FTPS server to another path inside the FTPS server"""
|
"""move a file inside the FTPS server to another path inside the FTPS server"""
|
||||||
|
2
setup.py
2
setup.py
@ -14,7 +14,7 @@ plugin_package = "octoprint_bambu_printer"
|
|||||||
plugin_name = "OctoPrint-BambuPrinter"
|
plugin_name = "OctoPrint-BambuPrinter"
|
||||||
|
|
||||||
# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module
|
# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module
|
||||||
plugin_version = "0.0.8"
|
plugin_version = "0.0.9"
|
||||||
|
|
||||||
# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
|
# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
|
||||||
# module
|
# module
|
||||||
|
Loading…
x
Reference in New Issue
Block a user