svn commit: samba r26036 - in branches/4.0-python: .
source/lib/registry source/scripting/python/samba
jelmer at samba.org
jelmer at samba.org
Mon Nov 19 18:20:41 GMT 2007
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)
More information about the samba-cvs
mailing list