From c424c2b857fe08587eb81a5c5e3625545119d1c2 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 4 Apr 2004 16:24:08 +0000 Subject: r20: Add the registry library. Still needs a lot of work, see source/lib/registry/TODO for details. (This used to be commit 7cab3a00d7b4b1d95a3bfa6b28f318b4aaa5d493) --- source4/rpc_server/config.m4 | 1 + source4/rpc_server/winreg/rpc_winreg.c | 389 +++++++++++++++++++++++++++++++++ 2 files changed, 390 insertions(+) create mode 100644 source4/rpc_server/winreg/rpc_winreg.c (limited to 'source4/rpc_server') diff --git a/source4/rpc_server/config.m4 b/source4/rpc_server/config.m4 index 8de6d273b9..388208c09d 100644 --- a/source4/rpc_server/config.m4 +++ b/source4/rpc_server/config.m4 @@ -3,6 +3,7 @@ dnl # DCERPC Server subsystem SMB_MODULE(dcerpc_rpcecho,DCERPC,STATIC,[rpc_server/echo/rpc_echo.o]) SMB_MODULE(dcerpc_epmapper,DCERPC,STATIC,[rpc_server/epmapper/rpc_epmapper.o]) SMB_MODULE(dcerpc_remote,DCERPC,STATIC,[rpc_server/remote/dcesrv_remote.o]) +SMB_MODULE(dcerpc_winreg,DCERPC,STATIC,[rpc_server/winreg/rpc_winreg.o \$(REG_OBJS)],[],[\$(REG_LIBS)]) SMB_SUBSYSTEM(DCERPC,rpc_server/dcerpc_server.o, [rpc_server/dcerpc_tcp.o rpc_server/dcesrv_auth.o rpc_server/handles.o], diff --git a/source4/rpc_server/winreg/rpc_winreg.c b/source4/rpc_server/winreg/rpc_winreg.c new file mode 100644 index 0000000000..2dc6dcd741 --- /dev/null +++ b/source4/rpc_server/winreg/rpc_winreg.c @@ -0,0 +1,389 @@ +/* + Unix SMB/CIFS implementation. + + endpoint server for the winreg pipe + + Copyright (C) Jelmer Vernooij 2004 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" + +REG_HANDLE *get_registry_handle() { + return reg_open("nt4", "/home/aurelia/jelmer/NTUSER.dat", False); +} + +/* + winreg_OpenHKCR +*/ +static NTSTATUS winreg_OpenHKCR(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenHKCR *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_OpenHKCU +*/ +static NTSTATUS winreg_OpenHKCU(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenHKCU *r) +{ + REG_KEY *hkcu = reg_open_key(get_registry_handle(), "\\HKEY_CURRENT_USER"); + + if(!hkcu) { + r->out.result = WERR_NO_MORE_ITEMS; + return NT_STATUS_OK; + } + + r->out.result = WERR_OK; + + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_OpenHKLM +*/ +static NTSTATUS winreg_OpenHKLM(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenHKLM *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_OpenHKPD +*/ +static NTSTATUS winreg_OpenHKPD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenHKPD *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_OpenHKU +*/ +static NTSTATUS winreg_OpenHKU(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenHKU *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_CloseKey +*/ +static NTSTATUS winreg_CloseKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_CloseKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_CreateKey +*/ +static NTSTATUS winreg_CreateKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_CreateKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_DeleteKey +*/ +static NTSTATUS winreg_DeleteKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_DeleteKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_DeleteValue +*/ +static NTSTATUS winreg_DeleteValue(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_DeleteValue *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_EnumKey +*/ +static NTSTATUS winreg_EnumKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_EnumKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_EnumValue +*/ +static NTSTATUS winreg_EnumValue(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_EnumValue *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_FlushKey +*/ +static NTSTATUS winreg_FlushKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_FlushKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_GetKeySecurity +*/ +static NTSTATUS winreg_GetKeySecurity(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_GetKeySecurity *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_LoadKey +*/ +static NTSTATUS winreg_LoadKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_LoadKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_NotifyChangeKeyValue +*/ +static NTSTATUS winreg_NotifyChangeKeyValue(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_NotifyChangeKeyValue *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_OpenKey +*/ +static NTSTATUS winreg_OpenKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_QueryInfoKey +*/ +static NTSTATUS winreg_QueryInfoKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_QueryInfoKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_QueryValue +*/ +static NTSTATUS winreg_QueryValue(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_QueryValue *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_ReplaceKey +*/ +static NTSTATUS winreg_ReplaceKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_ReplaceKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_RestoreKey +*/ +static NTSTATUS winreg_RestoreKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_RestoreKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_SaveKey +*/ +static NTSTATUS winreg_SaveKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_SaveKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_SetKeySecurity +*/ +static NTSTATUS winreg_SetKeySecurity(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_SetKeySecurity *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_SetValue +*/ +static NTSTATUS winreg_SetValue(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_SetValue *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_UnLoadKey +*/ +static NTSTATUS winreg_UnLoadKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_UnLoadKey *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_InitiateSystemShutdown +*/ +static NTSTATUS winreg_InitiateSystemShutdown(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_InitiateSystemShutdown *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_AbortSystemShutdown +*/ +static NTSTATUS winreg_AbortSystemShutdown(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_AbortSystemShutdown *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_GetVersion +*/ +static NTSTATUS winreg_GetVersion(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_GetVersion *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_OpenHKCC +*/ +static NTSTATUS winreg_OpenHKCC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenHKCC *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_OpenHKDD +*/ +static NTSTATUS winreg_OpenHKDD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenHKDD *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_QueryMultipleValues +*/ +static NTSTATUS winreg_QueryMultipleValues(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_QueryMultipleValues *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_InitiateSystemShutdownEx +*/ +static NTSTATUS winreg_InitiateSystemShutdownEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_InitiateSystemShutdownEx *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_SaveKeyEx +*/ +static NTSTATUS winreg_SaveKeyEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_SaveKeyEx *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_OpenHKPT +*/ +static NTSTATUS winreg_OpenHKPT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenHKPT *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_OpenHKPN +*/ +static NTSTATUS winreg_OpenHKPN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_OpenHKPN *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* + winreg_QueryMultipleValues2 +*/ +static NTSTATUS winreg_QueryMultipleValues2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct winreg_QueryMultipleValues2 *r) +{ + return NT_STATUS_NOT_IMPLEMENTED; +} + + +/* include the generated boilerplate */ +#include "librpc/gen_ndr/ndr_winreg_s.c" -- cgit