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))