#include "includes.h"
#include "system/filesys.h"
#include "../libgpo/gpo.h"
+#include "../libgpo/gpo_ini.h"
-#if _SAMBA_BUILD_ == 4
-#include "param/param.h"
-#include "libcli/resolve/resolve.h"
-#include "../lib/tevent/tevent.h"
-#include "libcli/libcli.h"
-#include "libcli/raw/libcliraw.h"
-#include "libcli/libcli_proto.h"
-#include "libgpo/ads_convenience.h"
-#include "libgpo/gpo.h"
-#endif
+#include "libgpo/gpo_proto.h"
+#include "libsmb/libsmb.h"
/****************************************************************
explode the GPO CIFS URI into their components
****************************************************************/
NTSTATUS gpo_explode_filesyspath(TALLOC_CTX *mem_ctx,
- const char *cache_path,
+ const char *cache_dir,
const char *file_sys_path,
char **server,
char **service,
if ((path = talloc_asprintf(mem_ctx,
"%s/%s",
- cache_path,
+ cache_dir,
file_sys_path)) == NULL) {
return NT_STATUS_NO_MEMORY;
}
-#if _SAMBA_BUILD_ == 4
- path = string_sub_talloc(mem_ctx, path, "\\", "/");
-#else
path = talloc_string_sub(mem_ctx, path, "\\", "/");
-#endif
if (!path) {
return NT_STATUS_NO_MEMORY;
}
****************************************************************/
static NTSTATUS gpo_prepare_local_store(TALLOC_CTX *mem_ctx,
- const char *cache_path,
+ const char *cache_dir,
const char *unix_path)
{
char *current_dir;
char *tok;
- current_dir = talloc_strdup(mem_ctx, cache_path);
+ current_dir = talloc_strdup(mem_ctx, cache_dir);
NT_STATUS_HAVE_NO_MEMORY(current_dir);
- if ((mkdir(cache_path, 0644)) < 0 && errno != EEXIST) {
+ if ((mkdir(cache_dir, 0644)) < 0 && errno != EEXIST) {
return NT_STATUS_ACCESS_DENIED;
}
return NT_STATUS_OK;
}
-static NTSTATUS gpo_connect_server(ADS_STRUCT *ads, struct loadparm_context *lp_ctx,
+static NTSTATUS gpo_connect_server(ADS_STRUCT *ads,
const char *server, const char *service, void *ret_cli)
{
NTSTATUS result;
-#if _SAMBA_BUILD_ == 3
struct cli_state *cli;
-
result = cli_full_connection(&cli,
- global_myname(),
+ lp_netbios_name(),
server,
NULL, 0,
service, "A:",
ads->auth.password,
CLI_FULL_CONNECTION_USE_KERBEROS |
CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS,
- Undefined, NULL);
+ SMB_SIGNING_REQUIRED);
if (!NT_STATUS_IS_OK(result)) {
DEBUG(10,("check_refresh_gpo: "
"failed to connect: %s\n",
nt_errstr(result)));
- return result;
- }
- }
- *(struct cli_state **) ret_cli = cli;
-#else
- struct smbcli_state *cli = NULL;
- struct smbcli_options options;
- struct smbcli_session_options session_options;
-
- lp_smbcli_options(lp_ctx, &options);
- lp_smbcli_session_options(lp_ctx, &session_options);
-
- result = smbcli_full_connection(NULL, &cli,
- server,
- NULL, service,
- NULL /*devtype*/, NULL /* socket options */,
- ads->credentials,
- lp_resolve_context(lp_ctx),
- tevent_context_init(ads),
- &options,
- &session_options,
- lp_iconv_convenience(lp_ctx),
- lp_gensec_settings(ads, lp_ctx));
- if (!NT_STATUS_IS_OK(result)) {
- DEBUG(10,("failed to connect: %s\n",
- nt_errstr(result)));
return result;
}
- *(struct smbcli_state **) ret_cli = cli;
-#endif
+ *(struct cli_state **) ret_cli = cli;
return NT_STATUS_OK;
}
NTSTATUS gpo_fetch_files(TALLOC_CTX *mem_ctx,
ADS_STRUCT *ads,
- struct loadparm_context *lp_ctx,
- const char *cache_path,
- struct GROUP_POLICY_OBJECT *gpo)
+ const char *cache_dir,
+ const struct GROUP_POLICY_OBJECT *gpo)
{
NTSTATUS result;
char *server, *service, *nt_path, *unix_path;
char *nt_ini_path, *unix_ini_path;
-#if _SAMBA_BUILD_ == 3
- struct cli_state *cli;
-#else
- struct smbcli_state *cli;
-#endif
+ struct cli_state *cli = NULL;
- result = gpo_explode_filesyspath(mem_ctx, cache_path, gpo->file_sys_path,
+ result = gpo_explode_filesyspath(mem_ctx, cache_dir, gpo->file_sys_path,
&server, &service, &nt_path,
&unix_path);
NT_STATUS_NOT_OK_RETURN(result);
+ /* for now reuse the existing ds connection */
- result = gpo_connect_server(ads, lp_ctx, server, service, &cli);
-
+ result = gpo_connect_server(ads, server, service, &cli);
+ NT_STATUS_NOT_OK_RETURN(result);
- result = gpo_prepare_local_store(mem_ctx, cache_path, unix_path);
+ result = gpo_prepare_local_store(mem_ctx, cache_dir, unix_path);
NT_STATUS_NOT_OK_RETURN(result);
unix_ini_path = talloc_asprintf(mem_ctx, "%s/%s", unix_path, GPT_INI);