Esempio n. 1
0
NTSTATUS gpo_sync_directories(TALLOC_CTX *mem_ctx,
			      struct smbcli_state *cli,
			      const char *nt_path,
			      const char *local_path)
{
	struct sync_context ctx;

	ctx.mem_ctx 	= mem_ctx;
	ctx.cli 	= cli;
	ctx.remote_path	= discard_const_p(char, nt_path);
	ctx.local_path	= discard_const_p(char, local_path);
	ctx.attribute 	= (FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY);

	ctx.mask = talloc_asprintf(mem_ctx,
				"%s\\*",
				nt_path);
	if (!ctx.mask) {
		return NT_STATUS_NO_MEMORY;
	}

	if (!gpo_sync_files(&ctx)) {
		return NT_STATUS_NO_SUCH_FILE;
	}

	return NT_STATUS_OK;
}
Esempio n. 2
0
NTSTATUS gpo_sync_directories(TALLOC_CTX *mem_ctx, 
			      struct cli_state *cli, 
			      const char *nt_path, 
			      const char *local_path)
{
	struct sync_context ctx;

	ctx.mem_ctx 	= mem_ctx;
	ctx.cli 	= cli;
	ctx.remote_path	= CONST_DISCARD(char *, nt_path);
	ctx.local_path	= CONST_DISCARD(char *, local_path);
	ctx.attribute 	= (aSYSTEM | aHIDDEN | aDIR);

	pstrcpy(ctx.mask, nt_path);
	pstrcat(ctx.mask, "\\*");

	if (!gpo_sync_files(&ctx)) {
		return NT_STATUS_NO_SUCH_FILE;
	}

	return NT_STATUS_OK;
}
Esempio n. 3
0
static void gpo_sync_func(const char *mnt,
			  file_info *info,
			  const char *mask,
			  void *state)
{
	NTSTATUS result;
	struct sync_context *ctx;
	fstring nt_filename, unix_filename;
	fstring nt_dir, unix_dir;
	char *old_nt_dir, *old_unix_dir;

	ctx = (struct sync_context *)state;

	if (strequal(info->name, ".") || strequal(info->name, "..")) {
		return;
	}

	DEBUG(5,("gpo_sync_func: got mask: [%s], name: [%s]\n", 
		mask, info->name));

	if (info->mode & aDIR) {

		DEBUG(3,("got dir: [%s]\n", info->name));

		fstrcpy(nt_dir, ctx->remote_path);
		fstrcat(nt_dir, "\\");
		fstrcat(nt_dir, info->name);

		fstrcpy(unix_dir, ctx->local_path);
		fstrcat(unix_dir, "/");
		fstrcat(unix_dir, info->name);

		result = gpo_copy_dir(unix_dir);
		if (!NT_STATUS_IS_OK(result)) {
			DEBUG(1,("failed to copy dir: %s\n", nt_errstr(result)));
		}

		old_nt_dir = ctx->remote_path;
		ctx->remote_path = nt_dir;
		
		old_unix_dir = ctx->local_path;
		ctx->local_path = talloc_strdup(ctx->mem_ctx, unix_dir);

		pstrcpy(ctx->mask, nt_dir);
		pstrcat(ctx->mask, "\\*");

		if (!gpo_sync_files(ctx)) {
			DEBUG(0,("could not sync files\n"));
		}

		ctx->remote_path = old_nt_dir;
		ctx->local_path = old_unix_dir;
		return;
	}

	DEBUG(3,("got file: [%s]\n", info->name));

	fstrcpy(nt_filename, ctx->remote_path);
	fstrcat(nt_filename, "\\");
	fstrcat(nt_filename, info->name);

	fstrcpy(unix_filename, ctx->local_path);
	fstrcat(unix_filename, "/");
	fstrcat(unix_filename, info->name);

	result = gpo_copy_file(ctx->mem_ctx, ctx->cli, nt_filename, unix_filename);
	if (!NT_STATUS_IS_OK(result)) {
		DEBUG(1,("failed to copy file: %s\n", nt_errstr(result)));
	}
}
Esempio n. 4
0
static NTSTATUS gpo_sync_func(const char *mnt,
			  struct file_info *info,
			  const char *mask,
			  void *state)
{
	NTSTATUS result;
	struct sync_context *ctx;
	fstring nt_filename, unix_filename;
	fstring nt_dir, unix_dir;
	char *old_nt_dir, *old_unix_dir;

	ctx = (struct sync_context *)state;

	if (strequal(info->name, ".") || strequal(info->name, "..")) {
		return NT_STATUS_OK;
	}

	DEBUG(5,("gpo_sync_func: got mask: [%s], name: [%s]\n",
		mask, info->name));

	if (info->mode & FILE_ATTRIBUTE_DIRECTORY) {

		DEBUG(3,("got dir: [%s]\n", info->name));

		fstrcpy(nt_dir, ctx->remote_path);
		fstrcat(nt_dir, "\\");
		fstrcat(nt_dir, info->name);

		fstrcpy(unix_dir, ctx->local_path);
		fstrcat(unix_dir, "/");
		fstrcat(unix_dir, info->name);

		result = gpo_copy_dir(unix_dir);
		if (!NT_STATUS_IS_OK(result)) {
			DEBUG(1,("failed to copy dir: %s\n",
				nt_errstr(result)));
			return result;
		}

		old_nt_dir = ctx->remote_path;
		ctx->remote_path = talloc_strdup(ctx->mem_ctx, nt_dir);

		old_unix_dir = ctx->local_path;
		ctx->local_path = talloc_strdup(ctx->mem_ctx, unix_dir);

		ctx->mask = talloc_asprintf(ctx->mem_ctx,
					"%s\\*",
					nt_dir);
		if (!ctx->local_path || !ctx->mask || !ctx->remote_path) {
			DEBUG(0,("gpo_sync_func: ENOMEM\n"));
			return NT_STATUS_NO_MEMORY;
		}
		result = gpo_sync_files(ctx);
		if (!NT_STATUS_IS_OK(result)) {
			DEBUG(0,("could not sync files\n"));
			return result;
		}

		ctx->remote_path = old_nt_dir;
		ctx->local_path = old_unix_dir;
		return NT_STATUS_OK;
	}

	DEBUG(3,("got file: [%s]\n", info->name));

	fstrcpy(nt_filename, ctx->remote_path);
	fstrcat(nt_filename, "\\");
	fstrcat(nt_filename, info->name);

	fstrcpy(unix_filename, ctx->local_path);
	fstrcat(unix_filename, "/");
	fstrcat(unix_filename, info->name);

	result = gpo_copy_file(ctx->mem_ctx, ctx->cli,
			       nt_filename, unix_filename);
	if (!NT_STATUS_IS_OK(result)) {
		DEBUG(1,("failed to copy file: %s\n",
			nt_errstr(result)));
	}
	return result;
}
Esempio n. 5
0
static void gpo_sync_func(struct clilist_file_info *info,
			  const char *mask,
			  void *state)
{
	NTSTATUS result;
	struct sync_context *ctx;
	char *nt_filename, *unix_filename;
	char *nt_dir, *unix_dir;
	char *old_nt_dir, *old_unix_dir;

	ctx = (struct sync_context *)state;

	if (strequal(info->name, ".") || strequal(info->name, "..")) {
		return;
	}

	DEBUG(5,("gpo_sync_func: got mask: [%s], name: [%s]\n",
		mask, info->name));

	if (info->attrib & FILE_ATTRIBUTE_DIRECTORY) {

		DEBUG(3,("got dir: [%s]\n", info->name));

		nt_dir = talloc_asprintf(ctx->mem_ctx, "%s\\%s",
				ctx->remote_path,
				info->name);

		unix_dir = talloc_asprintf(ctx->mem_ctx, "%s/%s",
				ctx->local_path,
				info->name);

		result = gpo_copy_dir(nt_dir, unix_dir);
		if (!NT_STATUS_IS_OK(result)) {
			DEBUG(1,("failed to copy dir: %s\n",
				nt_errstr(result)));
		}

		old_nt_dir = ctx->remote_path;
		ctx->remote_path = talloc_strdup(ctx->mem_ctx, nt_dir);

		old_unix_dir = ctx->local_path;
		ctx->local_path = talloc_strdup(ctx->mem_ctx, unix_dir);

		ctx->mask = talloc_asprintf(ctx->mem_ctx,
					"%s\\*",
					nt_dir);
		if (!ctx->local_path || !ctx->mask || !ctx->remote_path) {
			DEBUG(0,("gpo_sync_func: ENOMEM\n"));
			return;
		}
		if (!gpo_sync_files(ctx)) {
			DEBUG(0,("could not sync files\n"));
		}

		ctx->remote_path = old_nt_dir;
		ctx->local_path = old_unix_dir;
		return;
	}

	DEBUG(3,("got file: [%s]\n", info->name));

	nt_filename = talloc_asprintf(ctx->mem_ctx, "%s\\%s",
			ctx->remote_path,
			info->name);

	unix_filename = talloc_asprintf(ctx->mem_ctx, "%s/%s",
			ctx->local_path,
			info->name);

	result = gpo_copy_file(ctx->mem_ctx, ctx->cli,
			       nt_filename, unix_filename);
	if (!NT_STATUS_IS_OK(result)) {
		DEBUG(1,("failed to copy file: %s\n",
			nt_errstr(result)));
	}
}