mirror of https://git.48k.eu/ogclient
live: add cache contents to the /refresh payload
Add the list of images in the client's cache partition in the payload sent to the server. The information sent is a list of {image_name, img_size, checksum} elements where img_size is the size of the respective image in bytes. Resquest response structure: { ... 'cache': [ {'name': 'windows.img', 'size': 2432370213, checksum: '5d4dcc677bc19f40a647d0002f4ade90'}, {'name': 'linux.img', 'size': 243234534213, checksum: '3eb22f888f88a55ad954f55644e1192e'} ] ... }master
parent
03d33d4fa9
commit
e2d48ba3a0
|
@ -29,7 +29,7 @@ from src.utils.menu import generate_menu
|
|||
from src.utils.fs import *
|
||||
from src.utils.probe import os_probe, get_cache_dev_path
|
||||
from src.utils.disk import *
|
||||
from src.utils.cache import generate_cache_txt, umount_cache, init_cache
|
||||
from src.utils.cache import *
|
||||
from src.utils.tiptorrent import *
|
||||
from src.utils.uefi import *
|
||||
from src.utils.boot import *
|
||||
|
@ -111,6 +111,44 @@ class OgLiveOperations:
|
|||
part_setup['filesystem'] = 'CACHE'
|
||||
part_setup['code'] = 'ca'
|
||||
|
||||
def _get_cache_contents(self):
|
||||
cache_contents = []
|
||||
|
||||
if not mount_cache():
|
||||
return cache_contents
|
||||
|
||||
img_dir = OG_CACHE_IMAGE_PATH
|
||||
|
||||
if not os.path.isdir(img_dir):
|
||||
return cache_contents
|
||||
|
||||
for file_name in os.listdir(img_dir):
|
||||
file_path = os.path.join(img_dir, file_name)
|
||||
|
||||
if not os.path.isfile(file_path):
|
||||
continue
|
||||
if not file_name.endswith('.img'):
|
||||
continue
|
||||
|
||||
checksum_file_path = file_path + '.full.sum'
|
||||
image_checksum = ''
|
||||
|
||||
try:
|
||||
with open(checksum_file_path, 'r') as f:
|
||||
image_checksum = f.read()
|
||||
except (FileNotFoundError, PermissionError, OSError) as e:
|
||||
logging.info(f'Error reading file at {checksum_file_path}: {e}')
|
||||
|
||||
if not image_checksum:
|
||||
logging.info(f'Warning: empty checksum for image {file_name}')
|
||||
|
||||
image_size = os.stat(file_path).st_size
|
||||
cache_contents.append({
|
||||
'name': file_name,
|
||||
'size': image_size,
|
||||
'checksum': image_checksum})
|
||||
return cache_contents
|
||||
|
||||
def _compute_md5(self, path, bs=2**20):
|
||||
m = hashlib.md5()
|
||||
with open(path, 'rb') as f:
|
||||
|
@ -568,6 +606,8 @@ class OgLiveOperations:
|
|||
self._refresh_part_setup_cache(cxt, pa, part_setup, cache)
|
||||
json_body['partition_setup'].append(part_setup)
|
||||
|
||||
json_body['cache'] = self._get_cache_contents()
|
||||
|
||||
generate_menu(json_body['partition_setup'])
|
||||
generate_cache_txt()
|
||||
self._restartBrowser(self._url)
|
||||
|
|
Loading…
Reference in New Issue