[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Fri Jun 12 04:40:04 MDT 2015


The branch, master has been updated
       via  b73121f docs: Add missing SRVSVC entries in rpcclient manpage
       via  ec608ca rpcclient: Add netsharesetdfsflags command
       via  b0ccfa0 rpcclient: Add info level 1005 for netsharegetinfo
       via  a90beeb rpcclient: Add netsharedel command
       via  ffa415f rpcclient: Add netshareadd command
      from  eef3dab KCC: use python 2.6 compatible dictonary comprehensions

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit b73121f383bdabf7645dacb7ba055f7d3181f8a8
Author: Christof Schmitt <cs at samba.org>
Date:   Thu Jun 11 15:21:17 2015 -0700

    docs: Add missing SRVSVC entries in rpcclient manpage
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    
    Autobuild-User(master): Volker Lendecke <vl at samba.org>
    Autobuild-Date(master): Fri Jun 12 12:39:08 CEST 2015 on sn-devel-104

commit ec608cab0ae1b275f988735c2de42ec48f238186
Author: Christof Schmitt <cs at samba.org>
Date:   Thu Jun 11 15:03:41 2015 -0700

    rpcclient: Add netsharesetdfsflags command
    
    This allows setting the DFS flags through a NetShareSetInfo with info
    level 1005.
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>

commit b0ccfa0c3888d9d0796bbcc05b6a89f8f6202bb3
Author: Christof Schmitt <cs at samba.org>
Date:   Thu Jun 11 13:55:15 2015 -0700

    rpcclient: Add info level 1005 for netsharegetinfo
    
    This allows querying the DFS flags and the csc policy. Also update the
    usage info that ths share name is not optional and print the supported
    info levels.
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>

commit a90beeb6a6f98fd484aae8e6676e78e45cc34fe1
Author: Christof Schmitt <cs at samba.org>
Date:   Thu Jun 11 12:06:33 2015 -0700

    rpcclient: Add netsharedel command
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>

commit ffa415fbcec05484fdea79ba0b23409de4ca581a
Author: Christof Schmitt <cs at samba.org>
Date:   Thu Jun 11 11:53:43 2015 -0700

    rpcclient: Add netshareadd command
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 docs-xml/manpages/rpcclient.1.xml |  16 +++--
 source3/rpcclient/cmd_srvsvc.c    | 144 +++++++++++++++++++++++++++++++++++++-
 2 files changed, 155 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/manpages/rpcclient.1.xml b/docs-xml/manpages/rpcclient.1.xml
index cbe1bb8..aae55d2 100644
--- a/docs-xml/manpages/rpcclient.1.xml
+++ b/docs-xml/manpages/rpcclient.1.xml
@@ -178,13 +178,21 @@
 
 	<variablelist>
 		<varlistentry><term>srvinfo</term><listitem><para>Server query info</para></listitem></varlistentry>
-		
 		<varlistentry><term>netshareenum</term><listitem><para>Enumerate shares</para></listitem></varlistentry>
-
+		<varlistentry><term>netshareenumall</term><listitem><para>Enumerate all shares</para></listitem></varlistentry>
+		<varlistentry><term>netsharegetinfo</term><listitem><para>Get Share Info</para></listitem></varlistentry>
+		<varlistentry><term>netsharesetinfo</term><listitem><para>Set Share Info</para></listitem></varlistentry>
+		<varlistentry><term>netsharesetdfsflags</term><listitem><para>Set DFS flags</para></listitem></varlistentry>
 		<varlistentry><term>netfileenum</term><listitem><para>Enumerate open files</para></listitem></varlistentry>
-		
 		<varlistentry><term>netremotetod</term><listitem><para>Fetch remote time of day</para></listitem></varlistentry>
-		
+		<varlistentry><term>netnamevalidate</term><listitem><para>Validate sharename</para></listitem></varlistentry>
+		<varlistentry><term>netfilegetsec</term><listitem><para>Get File security</para></listitem></varlistentry>
+		<varlistentry><term>netsessdel</term><listitem><para>Delete Session</para></listitem></varlistentry>
+		<varlistentry><term>netsessenum</term><listitem><para>Enumerate Sessions</para></listitem></varlistentry>
+		<varlistentry><term>netdiskenum</term><listitem><para>Enumerate Disks</para></listitem></varlistentry>
+		<varlistentry><term>netconnenum</term><listitem><para>Enumerate Connections</para></listitem></varlistentry>
+		<varlistentry><term>netshareadd</term><listitem><para>Add share</para></listitem></varlistentry>
+		<varlistentry><term>netsharedel</term><listitem><para>Delete share</para></listitem></varlistentry>
 	</variablelist>
 
 	</refsect2>
diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c
index 6ad03d1..0174002 100644
--- a/source3/rpcclient/cmd_srvsvc.c
+++ b/source3/rpcclient/cmd_srvsvc.c
@@ -253,6 +253,14 @@ static void display_share_info_502(struct srvsvc_NetShareInfo502 *r)
 
 }
 
+static void display_share_info_1005(struct srvsvc_NetShareInfo1005 *r)
+{
+	printf("flags: 0x%x\n", r->dfs_flags);
+	printf("csc caching: %u\n",
+	       (r->dfs_flags & SHARE_1005_CSC_POLICY_MASK) >>
+	       SHARE_1005_CSC_POLICY_SHIFT);
+}
+
 static WERROR cmd_srvsvc_net_share_enum_int(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    int argc, const char **argv,
@@ -427,7 +435,8 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
 	struct dcerpc_binding_handle *b = cli->binding_handle;
 
 	if (argc < 2 || argc > 3) {
-		printf("Usage: %s [sharename] [infolevel]\n", argv[0]);
+		printf("Usage: %s sharename [infolevel 1|2|502|1005]\n",
+		       argv[0]);
 		return WERR_OK;
 	}
 
@@ -461,6 +470,9 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
 	case 502:
 		display_share_info_502(info.info502);
 		break;
+	case 1005:
+		display_share_info_1005(info.info1005);
+		break;
 	default:
 		printf("unsupported info level %d\n", info_level);
 		break;
@@ -542,6 +554,61 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli,
 	return result;
 }
 
+static WERROR cmd_srvsvc_net_share_set_dfs_flags(struct rpc_pipe_client *cli,
+					    TALLOC_CTX *mem_ctx,
+					    int argc, const char **argv)
+{
+	struct srvsvc_NetShareInfo1005 info1005 = { 0 };
+	union srvsvc_NetShareInfo info = { .info1005 = &info1005 };
+	WERROR result;
+	NTSTATUS status;
+	uint32_t parm_err = 0;
+	struct dcerpc_binding_handle *b = cli->binding_handle;
+
+	if (argc > 3) {
+		printf("Usage: %s [sharename] [dfsflags]\n", argv[0]);
+		return WERR_OK;
+	}
+
+	if (argc > 2) {
+		info.info1005->dfs_flags = strtol(argv[2], NULL, 0);
+	}
+
+	/* set share info */
+	status = dcerpc_srvsvc_NetShareSetInfo(b, mem_ctx,
+					       cli->desthost,
+					       argv[1],
+					       1005,
+					       &info,
+					       &parm_err,
+					       &result);
+
+	if (!NT_STATUS_IS_OK(status)) {
+		return ntstatus_to_werror(status);
+	}
+	if (!W_ERROR_IS_OK(result)) {
+		return result;
+	}
+
+	/* re-retrieve share info and display */
+	status = dcerpc_srvsvc_NetShareGetInfo(b, mem_ctx,
+					       cli->desthost,
+					       argv[1],
+					       1005,
+					       &info,
+					       &result);
+	if (!NT_STATUS_IS_OK(status)) {
+		return ntstatus_to_werror(status);
+	}
+	if (!W_ERROR_IS_OK(result)) {
+		return result;
+	}
+
+	display_share_info_1005(info.info1005);
+
+	return result;
+}
+
 static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, 
                                           TALLOC_CTX *mem_ctx,
                                           int argc, const char **argv)
@@ -941,6 +1008,78 @@ static WERROR cmd_srvsvc_net_conn_enum(struct rpc_pipe_client *cli,
 	return result;
 }
 
+static WERROR cmd_srvsvc_net_share_add(struct rpc_pipe_client *cli,
+				       TALLOC_CTX *mem_ctx,
+				       int argc, const char **argv)
+{
+	struct srvsvc_NetShareInfo502 info502 = { 0 };
+	union srvsvc_NetShareInfo info = { .info502 = &info502 };
+	WERROR result;
+	NTSTATUS status;
+	uint32_t max_users = -1, parm_error;
+	struct sec_desc_buf sd_buf = { 0 };
+	const char *path, *share_name, *comment = NULL;
+	struct dcerpc_binding_handle *b = cli->binding_handle;
+
+	if (argc < 3 || argc > 5) {
+		printf("Usage: %s path share_name [max_users] [comment]\n",
+		       argv[0]);
+		return WERR_OK;
+	}
+
+	path = argv[1];
+	share_name = argv[2];
+
+	if (argc >= 4) {
+		max_users = atoi(argv[3]);
+	}
+
+	if (argc >= 5) {
+		comment = argv[4];
+	}
+
+	info.info502->name = share_name;
+	info.info502->type = STYPE_DISKTREE;
+	info.info502->comment = comment;
+	info.info502->max_users = max_users;
+	info.info502->path = path;
+	info.info502->sd_buf = sd_buf;
+
+	status = dcerpc_srvsvc_NetShareAdd(b, mem_ctx, cli->desthost,
+					   502, &info, &parm_error, &result);
+	if (!NT_STATUS_IS_OK(status)) {
+		result = ntstatus_to_werror(status);
+	}
+
+	return result;
+}
+
+static WERROR cmd_srvsvc_net_share_del(struct rpc_pipe_client *cli,
+				       TALLOC_CTX *mem_ctx,
+				       int argc, const char **argv)
+{
+	const char *share_name;
+	WERROR result;
+	NTSTATUS status;
+	struct dcerpc_binding_handle *b = cli->binding_handle;
+
+	if (argc < 2) {
+		printf("Usage: %s share_name\n", argv[0]);
+		return WERR_OK;
+	}
+
+	share_name = argv[1];
+
+	status = dcerpc_srvsvc_NetShareDel(b, mem_ctx, cli->desthost,
+					   share_name, 0, &result);
+
+	if (!NT_STATUS_IS_OK(status)) {
+		result = ntstatus_to_werror(status);
+	}
+
+	return result;
+}
+
 
 /* List of commands exported by this module */
 
@@ -953,6 +1092,7 @@ struct cmd_set srvsvc_commands[] = {
 	{ "netshareenumall",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum_all, &ndr_table_srvsvc, NULL, "Enumerate all shares", "" },
 	{ "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, &ndr_table_srvsvc, NULL, "Get Share Info", "" },
 	{ "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, &ndr_table_srvsvc, NULL, "Set Share Info", "" },
+	{ "netsharesetdfsflags",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_dfs_flags, &ndr_table_srvsvc, NULL, "Set DFS flags", "" },
 	{ "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum,  &ndr_table_srvsvc, NULL, "Enumerate open files", "" },
 	{ "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, &ndr_table_srvsvc, NULL, "Fetch remote time of day", "" },
 	{ "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, &ndr_table_srvsvc, NULL, "Validate sharename", "" },
@@ -961,6 +1101,8 @@ struct cmd_set srvsvc_commands[] = {
 	{ "netsessenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_enum, &ndr_table_srvsvc, NULL, "Enumerate Sessions", "" },
 	{ "netdiskenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_disk_enum, &ndr_table_srvsvc, NULL, "Enumerate Disks", "" },
 	{ "netconnenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_conn_enum, &ndr_table_srvsvc, NULL, "Enumerate Connections", "" },
+	{ "netshareadd", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_add, &ndr_table_srvsvc, NULL, "Add share", "" },
+	{ "netsharedel", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_del, &ndr_table_srvsvc, NULL, "Delete share", "" },
 
 	{ NULL }
 };


-- 
Samba Shared Repository


More information about the samba-cvs mailing list