Added the handler of the macro password (thanks to denis mourier <denis.mourier2@gmail.com>). Advanced to version 0.8.
This commit is contained in:
		
							
								
								
									
										31
									
								
								bin/obasync
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								bin/obasync
									
									
									
									
									
								
							| @@ -102,6 +102,7 @@ LIBRARY         The name of the Basic library.  Default to the same | |||||||
|  |  | ||||||
| from __future__ import print_function | from __future__ import print_function | ||||||
| import argparse | import argparse | ||||||
|  | import getpass | ||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import time | import time | ||||||
| @@ -220,7 +221,7 @@ def parse_args(): | |||||||
|               " an \"Untitied 1\" (in your language) if it is a new" |               " an \"Untitied 1\" (in your language) if it is a new" | ||||||
|               " file.")) |               " file.")) | ||||||
|     parser.add_argument( |     parser.add_argument( | ||||||
|         "-v", "--version", action="version", version="%(prog)s 0.7") |         "-v", "--version", action="version", version="%(prog)s 0.8") | ||||||
|     args = parser.parse_args() |     args = parser.parse_args() | ||||||
|  |  | ||||||
|     # Obtain the absolute path |     # Obtain the absolute path | ||||||
| @@ -304,8 +305,8 @@ def find_doc(oo, target): | |||||||
|     if target is None: |     if target is None: | ||||||
|         if len(opened) == 1: |         if len(opened) == 1: | ||||||
|             return opened[0] |             return opened[0] | ||||||
|         print("ERROR: There are more than one opened documens." |         print("ERROR: There are more than one opened documens.  " | ||||||
|               "  Please specify the file path.", |               "Please specify the file path.", | ||||||
|               file=sys.stderr) |               file=sys.stderr) | ||||||
|         for path in get_doc_paths(opened, file_content_provider): |         for path in get_doc_paths(opened, file_content_provider): | ||||||
|             print("* %s" % path, file=sys.stderr) |             print("* %s" % path, file=sys.stderr) | ||||||
| @@ -443,6 +444,7 @@ def read_basic_modules(storage, libname): | |||||||
|     modules = {} |     modules = {} | ||||||
|     if not storage.libs.hasByName(libname): |     if not storage.libs.hasByName(libname): | ||||||
|         return modules |         return modules | ||||||
|  |     verify_library_password(storage, libname) | ||||||
|     storage.libs.loadLibrary(libname) |     storage.libs.loadLibrary(libname) | ||||||
|     library = storage.libs.getByName(libname) |     library = storage.libs.getByName(libname) | ||||||
|     for modname in library.getElementNames(): |     for modname in library.getElementNames(): | ||||||
| @@ -464,11 +466,13 @@ def update_basic_modules(storage, libname, modules): | |||||||
|         storage.libs.createLibrary(libname) |         storage.libs.createLibrary(libname) | ||||||
|         print("Script library %s created." % libname, file=sys.stderr) |         print("Script library %s created." % libname, file=sys.stderr) | ||||||
|         create_dialog_library(storage, libname) |         create_dialog_library(storage, libname) | ||||||
|  |         verify_library_password(storage, libname) | ||||||
|         library = storage.libs.getByName(libname) |         library = storage.libs.getByName(libname) | ||||||
|         for modname in sorted(modules.keys()): |         for modname in sorted(modules.keys()): | ||||||
|             library.insertByName(modname, modules[modname]) |             library.insertByName(modname, modules[modname]) | ||||||
|             print("Module %s added." % modname, file=sys.stderr) |             print("Module %s added." % modname, file=sys.stderr) | ||||||
|     else: |     else: | ||||||
|  |         verify_library_password(storage, libname) | ||||||
|         storage.libs.loadLibrary(libname) |         storage.libs.loadLibrary(libname) | ||||||
|         library = storage.libs.getByName(libname) |         library = storage.libs.getByName(libname) | ||||||
|         # As of OpenOffice 4.1.3, when there is no modules in the |         # As of OpenOffice 4.1.3, when there is no modules in the | ||||||
| @@ -514,6 +518,27 @@ def create_dialog_library(storage, libname): | |||||||
|     libraries.storeLibraries() |     libraries.storeLibraries() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def verify_library_password(storage, libname): | ||||||
|  |     """Verify the password for the library. | ||||||
|  |  | ||||||
|  |     Arguments: | ||||||
|  |         storage: The Basic macro storage, as a Storage object. | ||||||
|  |         libname: The name of the dialog library. | ||||||
|  |         password: The password for the library. | ||||||
|  |     """ | ||||||
|  |     if not storage.libs.isLibraryPasswordProtected(libname): | ||||||
|  |         return | ||||||
|  |     if storage.libs.isLibraryPasswordVerified(libname): | ||||||
|  |         return | ||||||
|  |     while True: | ||||||
|  |         password = getpass.getpass("Password: ") | ||||||
|  |         if storage.libs.verifyLibraryPassword(libname, password): | ||||||
|  |             return | ||||||
|  |         print("ERROR: Failed password for library %s." % libname, | ||||||
|  |               file=sys.stderr) | ||||||
|  |     return | ||||||
|  |  | ||||||
|  |  | ||||||
| def run_macro(storage, libname, macro): | def run_macro(storage, libname, macro): | ||||||
|     """Run a Basic macro. |     """Run a Basic macro. | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								setup.py
									
									
									
									
									
								
							| @@ -29,7 +29,7 @@ if os.path.basename(sys.executable) == "python.bin": | |||||||
|         os.path.dirname(sys.executable), "python") |         os.path.dirname(sys.executable), "python") | ||||||
|  |  | ||||||
| setup(name="obasync", | setup(name="obasync", | ||||||
|       version="0.7", |       version="0.8", | ||||||
|       description="Office Basic macro source synchronizer", |       description="Office Basic macro source synchronizer", | ||||||
|       url="https://pypi.python.org/pypi/obasync", |       url="https://pypi.python.org/pypi/obasync", | ||||||
|       author="imacat", |       author="imacat", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user