Author: jelmer Date: 2007-11-19 18:20:40 +0000 (Mon, 19 Nov 2007) New Revision: 26036
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26036 Log: Allow opening registry files from python, add some constants. Modified: branches/4.0-python/ branches/4.0-python/source/lib/registry/registry.i branches/4.0-python/source/scripting/python/samba/provision.py Changeset: Property changes on: branches/4.0-python ___________________________________________________________________ Name: bzr:revision-info ...skipped... Name: bzr:revision-id:v3-trunk0 ...skipped... Modified: branches/4.0-python/source/lib/registry/registry.i =================================================================== --- branches/4.0-python/source/lib/registry/registry.i 2007-11-19 18:20:36 UTC (rev 26035) +++ branches/4.0-python/source/lib/registry/registry.i 2007-11-19 18:20:40 UTC (rev 26036) @@ -27,34 +27,98 @@ #include "registry.h" typedef struct registry_context reg; +typedef struct hive_key hive; %} -%include "stdint.i" +/* FIXME: This should be in another file */ +%typemap(default) struct auth_session_info * { + $1 = NULL; +} -WERROR reg_open_local(TALLOC_CTX *mem_ctx, - struct registry_context **ctx, - struct auth_session_info *session_info, - struct cli_credentials *credentials); +%import "stdint.i" +%import "../../scripting/swig/talloc.i" +%import "../../auth/credentials/credentials.i" +%import "../../libcli/util/errors.i" -WERROR reg_open_samba(TALLOC_CTX *mem_ctx, - struct registry_context **ctx, - struct auth_session_info *session_info, - struct cli_credentials *credentials); +/* Utility functions */ -WERROR reg_open_remote(struct registry_context **ctx, - struct auth_session_info *session_info, - struct cli_credentials *credentials, - const char *location, struct event_context *ev); - const char *reg_get_predef_name(uint32_t hkey); const char *str_regtype(int type); -%rename(Registry) reg; +/* Registry contexts */ +%typemap(in,numinputs=0) struct registry_context ** (struct registry_context *tmp) { + $1 = &tmp; +} + +%typemap(argout) struct registry_context ** { + Py_XDECREF($result); + $result = SWIG_NewPointerObj(*$1, SWIGTYPE_p_registry_context, 0); +} + +%rename(Registry) reg_open_local; +WERROR reg_open_local(TALLOC_CTX *parent_ctx, struct registry_context **ctx, + struct auth_session_info *session_info, + struct cli_credentials *credentials); + typedef struct registry_context { %extend { + + ~reg() { talloc_free($self); } WERROR get_predefined_key_by_name(const char *name, struct registry_key **key); WERROR get_predefined_key(uint32_t hkey, struct registry_key **key); + WERROR apply_patchfile(const char *filename) + { + return reg_diff_apply(filename, $self); } + + WERROR mount_hive(struct hive_key *hive_key, uint32_t key_id, + const char **elements=NULL); + } + + %pythoncode { + def mount(self, path, key_id, elements=[]): + self.mount_hive(Hive(path), key_id, elements) + } } reg; + +/* Hives */ +%typemap(in,numinputs=0) struct hive_key ** (struct hive_key *tmp) { + $1 = &tmp; +} + +%typemap(argout) struct hive_key ** { + Py_XDECREF($result); + $result = SWIG_NewPointerObj(*$1, SWIGTYPE_p_hive_key, 0); +} + +%rename(Hive) reg_open_hive; +WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *location, + struct auth_session_info *session_info, + struct cli_credentials *credentials, + struct hive_key **root); + +typedef struct hive_key { + %extend { + ~hive() { talloc_free($self); } + } +} hive; + +%rename(open_samba) reg_open_samba; + +WERROR reg_open_samba(TALLOC_CTX *mem_ctx, + struct registry_context **ctx, + struct auth_session_info *session_info, + struct cli_credentials *credentials); + +/* Constants */ +%constant uint32_t HKEY_CLASSES_ROOT = HKEY_CLASSES_ROOT; +%constant uint32_t HKEY_CURRENT_USER = HKEY_CURRENT_USER; +%constant uint32_t HKEY_LOCAL_MACHINE = HKEY_LOCAL_MACHINE; +%constant uint32_t HKEY_USERS = HKEY_USERS; +%constant uint32_t HKEY_PERFORMANCE_DATA = HKEY_PERFORMANCE_DATA; +%constant uint32_t HKEY_CURRENT_CONFIG = HKEY_CURRENT_CONFIG; +%constant uint32_t HKEY_DYN_DATA = HKEY_DYN_DATA; +%constant uint32_t HKEY_PERFORMANCE_TEXT = HKEY_PERFORMANCE_TEXT; +%constant uint32_t HKEY_PERFORMANCE_NLSTEXT = HKEY_PERFORMANCE_NLSTEXT; Modified: branches/4.0-python/source/scripting/python/samba/provision.py =================================================================== --- branches/4.0-python/source/scripting/python/samba/provision.py 2007-11-19 18:20:36 UTC (rev 26035) +++ branches/4.0-python/source/scripting/python/samba/provision.py 2007-11-19 18:20:40 UTC (rev 26036) @@ -352,6 +352,7 @@ paths.ldap_schema_basedn_ldif = os.path.join(private_dir, subobj.dnsdomain + "-schema.ldif") paths.s4_ldapi_path = os.path.join(private_dir, "ldapi") paths.phpldapadminconfig = os.path.join(private_dir, "phpldapadmin-config.php") + paths.hklm = os.path.join(private_dir, "hklm.ldb") return paths @@ -464,7 +465,10 @@ setup_ldb(setup_dir, "secrets.ldif", session_info, credentials, subobj, paths.secrets, False) message("Setting up registry") - message("# FIXME") + import registry + reg = registry.Registry() + reg.mount(paths.hklm, registry.HKEY_LOCAL_MACHINE) + reg.apply_patchfile(os.path.join(setup_dir, "provision.reg")) message("Setting up templates into %s" % paths.templates) setup_ldb(setup_dir, "provision_templates.ldif", session_info, credentials, subobj, paths.templates)
