2 * Unix SMB/CIFS implementation.
3 * Group Policy Object Support
4 * Copyright (C) Guenther Deschner 2005
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #define GPT_INI_SECTION_GENERAL "General"
24 #define GPT_INI_PARAMETER_VERSION "Version"
25 #define GPT_INI_PARAMETER_DISPLAYNAME "displayName"
29 const char *display_name
;
32 static uint32 version
;
34 static BOOL
do_section(const char *section
)
36 DEBUG(10,("do_section: %s\n", section
));
41 static BOOL
do_parameter(const char *parameter
, const char *value
)
43 DEBUG(10,("do_parameter: %s, %s\n", parameter
, value
));
45 if (strequal(parameter
, GPT_INI_PARAMETER_VERSION
)) {
46 version
= atoi(value
);
51 NTSTATUS
ads_gpo_get_sysvol_gpt_version(ADS_STRUCT
*ads
,
53 const char *filesyspath
,
54 uint32
*sysvol_version
)
58 struct cli_state
*cli
;
61 static int io_bufsize
= 64512;
62 int read_size
= io_bufsize
;
67 const char *local_file
;
71 next_token(&filesyspath
, tok
, "\\", sizeof(tok
));
72 next_token(&filesyspath
, tok
, "\\", sizeof(tok
));
74 path
= talloc_asprintf(mem_ctx
, "\\%s\\gpt.ini", filesyspath
);
76 return NT_STATUS_NO_MEMORY
;
79 local_file
= talloc_asprintf(mem_ctx
, "%s/%s", lock_path("gpo_cache"), "gpt.ini");
80 if (local_file
== NULL
) {
81 return NT_STATUS_NO_MEMORY
;
84 /* FIXME: walk down the dfs tree instead */
85 status
= cli_full_connection(&cli
, global_myname(),
86 ads
->config
.ldap_server_name
,
89 ads
->auth
.user_name
, NULL
, ads
->auth
.password
,
90 CLI_FULL_CONNECTION_USE_KERBEROS
,
92 if (!NT_STATUS_IS_OK(status
)) {
96 fnum
= cli_open(cli
, path
, O_RDONLY
, DENY_NONE
);
98 return NT_STATUS_NO_SUCH_FILE
;
102 data
= (char *)SMB_MALLOC(read_size
);
104 return NT_STATUS_NO_MEMORY
;
107 handle
= sys_open(local_file
, O_WRONLY
|O_CREAT
|O_TRUNC
, 0644);
110 return NT_STATUS_NO_SUCH_FILE
;
115 int n
= cli_read(cli
, fnum
, data
, nread
+ start
, read_size
);
120 if (write(handle
, data
, n
) != n
) {
127 cli_close(cli
, fnum
);
129 if (!pm_process(local_file
, do_section
, do_parameter
)) {
130 return NT_STATUS_INVALID_PARAMETER
;
133 *sysvol_version
= version
;
144 perfectly parseable with pm_process() :))
149 MinimumPasswordAge = 1
150 MaximumPasswordAge = 42
151 MinimumPasswordLength = 7
152 PasswordComplexity = 1
153 PasswordHistorySize = 24
155 RequireLogonToChangePassword = 0
156 ForceLogoffWhenHourExpire = 0
157 ClearTextPassword = 0
163 TicketValidateClient = 1
165 signature="$CHICAGO$"