Zdravím,
snažím se vzhledem k makro whitelistingu podepsat certifikátem makra v rámci libreoffice, ale nějak se mi to nedaří.
Problém je asi někde s knihovnami co k tomu používám, nicméně se mi to nedaří vyřešit. Neřešil někdo stejný problém ?
Díky
import uno
import os
LIBREOFFICE_PATH = “soffice”
ODS_FOLDER = “C:\Users\michal.speta\Documents\LibreOffice”
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext)
context = resolver.resolve(“uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext”)
desktop = context.ServiceManager.createInstanceWithContext(“com.sun.star.frame.Desktop”, context)
def sign_macros(file_path):
try:
print(f"Podepisování maker v souboru: {file_path}")
url = uno.systemPathToFileUrl(file_path)
doc = desktop.loadComponentFromURL(url, "_blank", 0, ())
if doc.BasicLibraries.hasByName("Standard"):
print("Knihovna 'Standard' nalezena.")
library = doc.BasicLibraries.getByName("Standard")
modules = library.getElementNames()
print("Dostupné moduly:", modules)
for module_name in modules:
if library.hasByName(module_name):
module = library.getByName(module_name)
print(f"Modul '{module_name}' nalezen, typ: {type(module)}")
try:
script_provider = module.getScriptProvider()
for script_name in script_provider.getElementNames():
print(f"Makro '{script_name}' v modulu '{module_name}' nalezeno a podepsáno.")
except AttributeError:
print(f"Varování: Modul '{module_name}' nemá metodu 'getScriptProvider'.")
else:
print(f"Varování: Modul '{module_name}' nebyl nalezen v knihovně.")
else:
print("Knihovna 'Standard' nebyla nalezena.")
doc.store()
doc.close(True)
print(f"Makra podepsána: {file_path}")
except Exception as e:
print(f"Chyba při podepisování maker v {file_path}: {e}")
for file in os.listdir(ODS_FOLDER):
if file.endswith(".ods"):
sign_macros(os.path.join(ODS_FOLDER, file))