[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-2529-gf7d0903

Kai Blin kai at samba.org
Tue May 20 12:32:17 GMT 2008


The branch, v3-3-test has been updated
       via  f7d0903a58b0b0fc248a613937a101f15baa5311 (commit)
       via  d26681b169a533f838f74d48af072b57afc9f8df (commit)
       via  2ee3d1aefab8dada5bd05a92b72776554617b7f9 (commit)
       via  25d4c6f692cf50d675a1de7c6eaeed271f349289 (commit)
       via  3f10527f79dddff703d31588cad3e9f37176565b (commit)
       via  0f5ebdf0bc5610bf93a4db67c9f9513683306c66 (commit)
       via  84a116be9c849900678e6e0a4b012e819e697c78 (commit)
       via  3ddd9c09e3b51df01ac34a9a1537e8954d2b1167 (commit)
       via  4ca08a5acc90c77d56f8f3e38443f23f43f034e8 (commit)
       via  d0237a736858a48494583ce7f960ea980768aa6c (commit)
       via  efc863e3758501a4c62dc9762eb0aded2dad01ff (commit)
       via  1813e545a99545575babe126386c8caca00aab8f (commit)
       via  a8b567aac3b0e39cfe67fb97167b10312ca5e73a (commit)
      from  48bf0b42a7d3829d476a50b4f6f80022279b4e49 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit f7d0903a58b0b0fc248a613937a101f15baa5311
Author: Kai Blin <kai at samba.org>
Date:   Thu May 15 10:14:41 2008 +0200

    net: The top level help function for net cmd is always net_cmd_usage

commit d26681b169a533f838f74d48af072b57afc9f8df
Author: Kai Blin <kai at samba.org>
Date:   Wed May 14 15:09:29 2008 +0200

    net: Move help for "net status" to net_status.c

commit 2ee3d1aefab8dada5bd05a92b72776554617b7f9
Author: Kai Blin <kai at samba.org>
Date:   Wed May 14 14:29:52 2008 +0200

    net: Move printer help to net_rpc where it's used.

commit 25d4c6f692cf50d675a1de7c6eaeed271f349289
Author: Kai Blin <kai at samba.org>
Date:   Wed May 14 14:24:21 2008 +0200

    net: Split out "net share"

commit 3f10527f79dddff703d31588cad3e9f37176565b
Author: Kai Blin <kai at samba.org>
Date:   Wed May 14 09:01:53 2008 +0200

    net: Split out "net afs"

commit 0f5ebdf0bc5610bf93a4db67c9f9513683306c66
Author: Kai Blin <kai at samba.org>
Date:   Tue May 13 21:18:09 2008 +0200

    net: Move more utility functions into net_util.c

commit 84a116be9c849900678e6e0a4b012e819e697c78
Author: Kai Blin <kai at samba.org>
Date:   Tue May 13 13:52:58 2008 +0200

    net: Split out "net file"

commit 3ddd9c09e3b51df01ac34a9a1537e8954d2b1167
Author: Kai Blin <kai at samba.org>
Date:   Tue May 13 13:44:28 2008 +0200

    net: Split out "net group"

commit 4ca08a5acc90c77d56f8f3e38443f23f43f034e8
Author: Kai Blin <kai at samba.org>
Date:   Tue May 13 12:51:09 2008 +0200

    net: Split out "net user"

commit d0237a736858a48494583ce7f960ea980768aa6c
Author: Kai Blin <kai at samba.org>
Date:   Tue May 13 11:11:35 2008 +0200

    net: Move "net join" handling into a separate file.

commit efc863e3758501a4c62dc9762eb0aded2dad01ff
Author: Kai Blin <kai at samba.org>
Date:   Mon May 12 14:38:21 2008 +0200

    net: Split out common help functions.

commit 1813e545a99545575babe126386c8caca00aab8f
Author: Kai Blin <kai at samba.org>
Date:   Mon May 12 11:56:18 2008 +0200

    net: more whitespace cleanup

commit a8b567aac3b0e39cfe67fb97167b10312ca5e73a
Author: Kai Blin <kai at samba.org>
Date:   Mon May 12 11:53:23 2008 +0200

    net: Use true/false instead of True/False.

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

Summary of changes:
 source/Makefile.in              |   10 +-
 source/configure.in             |    3 +
 source/utils/net.c              |  610 +--------------------------------------
 source/utils/net.h              |    1 +
 source/utils/net_ads.c          |   38 ++--
 source/utils/net_afs.c          |  101 +++++++
 source/utils/net_afs.h          |   29 ++
 source/utils/net_dom.c          |   20 +-
 source/utils/net_file.c         |   57 ++++
 source/utils/net_group.c        |   65 ++++
 source/utils/net_groupmap.c     |   26 +-
 source/utils/net_help.c         |  220 ++-------------
 source/utils/net_help_common.c  |   54 ++++
 source/utils/net_help_common.h  |   49 +++
 source/utils/net_join.c         |   54 ++++
 source/utils/net_proto.h        |  131 +++++----
 source/utils/net_rap.c          |   18 +-
 source/utils/net_rpc.c          |  139 ++++++----
 source/utils/net_rpc_join.c     |    2 +-
 source/utils/net_rpc_printer.c  |  148 +++++-----
 source/utils/net_rpc_registry.c |    8 +-
 source/utils/net_rpc_rights.c   |   10 +-
 source/utils/net_rpc_samsync.c  |   26 +-
 source/utils/net_rpc_shell.c    |   18 +-
 source/utils/net_sam.c          |    6 +-
 source/utils/net_share.c        |   77 +++++
 source/utils/net_status.c       |   24 +-
 source/utils/net_user.c         |   67 +++++
 source/utils/net_usershare.c    |   18 +-
 source/utils/net_util.c         |  468 ++++++++++++++++++++++++++++++-
 source/utils/netlookup.c        |    8 +-
 31 files changed, 1393 insertions(+), 1112 deletions(-)
 create mode 100644 source/utils/net_afs.c
 create mode 100644 source/utils/net_afs.h
 create mode 100644 source/utils/net_file.c
 create mode 100644 source/utils/net_group.c
 create mode 100644 source/utils/net_help_common.c
 create mode 100644 source/utils/net_help_common.h
 create mode 100644 source/utils/net_join.c
 create mode 100644 source/utils/net_share.c
 create mode 100644 source/utils/net_user.c


Changeset truncated at 500 lines:

diff --git a/source/Makefile.in b/source/Makefile.in
index e22f965..85385f6 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -880,15 +880,15 @@ NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_help.o \
 	   utils/netlookup.o utils/net_sam.o utils/net_rpc_shell.o \
 	   utils/net_util.o utils/net_rpc_sh_acct.o utils/net_rpc_audit.o \
 	   $(PASSWD_UTIL_OBJ) utils/net_dns.o utils/net_ads_gpo.o \
-	   utils/net_conf.o \
-	   utils/net_registry.o \
-	   auth/token_util.o utils/net_dom.o
+	   utils/net_conf.o utils/net_join.o utils/net_user.o \
+	   utils/net_group.o utils/net_file.o utils/net_registry.o \
+	   auth/token_util.o utils/net_dom.o utils/net_share.o
 
 # these are not processed by make proto
-NET_OBJ2 = utils/net_registry_util.o
+NET_OBJ2 = utils/net_registry_util.o utils/net_help_common.o
 
 NET_OBJ = $(NET_OBJ1) \
-	  $(NET_OBJ2) \
+	  $(NET_OBJ2) @FAKE_KASERVER_OBJ@\
 	  $(PARAM_WITHOUT_REG_OBJ) $(LIBSMB_OBJ) \
 	  $(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
 	  $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(LIBADDNS_OBJ0) \
diff --git a/source/configure.in b/source/configure.in
index 9c9d06f..f2691c4 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -2883,9 +2883,12 @@ if test x"$samba_cv_WITH_AFS" != x"no" ||
     fi
 fi
 
+FAKE_KASERVER_OBJ=""
 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
+    FAKE_KASERVER_OBJ="utils/net_afs.o"
 fi
+AC_SUBST(FAKE_KASERVER_OBJ)
 
 #################################################
 # check whether to compile AFS/NT ACL mapping module
diff --git a/source/utils/net.c b/source/utils/net.c
index db7f6c0..99e1e0c 100644
--- a/source/utils/net.c
+++ b/source/utils/net.c
@@ -43,6 +43,10 @@
 #include "includes.h"
 #include "utils/net.h"
 
+#ifdef WITH_FAKE_KASERVER
+#include "utils/net_afs.h"
+#endif
+
 /***********************************************************************/
 /* Beginning of internationalization section.  Translatable constants  */
 /* should be kept in this area and referenced in the rest of the code. */
@@ -125,478 +129,6 @@ int net_run_function2(struct net_context *c, int argc, const char **argv,
 	return -1;
 }
 
-/****************************************************************************
- Connect to \\server\service.
-****************************************************************************/
-
-NTSTATUS connect_to_service(struct net_context *c,
-					struct cli_state **cli_ctx,
-					struct sockaddr_storage *server_ss,
-					const char *server_name,
-					const char *service_name,
-					const char *service_type)
-{
-	NTSTATUS nt_status;
-
-	c->opt_password = net_prompt_pass(c, c->opt_user_name);
-	if (!c->opt_password) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	nt_status = cli_full_connection(cli_ctx, NULL, server_name,
-					server_ss, c->opt_port,
-					service_name, service_type,
-					c->opt_user_name, c->opt_workgroup,
-					c->opt_password, 0, Undefined, NULL);
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		d_fprintf(stderr, "Could not connect to server %s\n", server_name);
-
-		/* Display a nicer message depending on the result */
-
-		if (NT_STATUS_V(nt_status) ==
-		    NT_STATUS_V(NT_STATUS_LOGON_FAILURE))
-			d_fprintf(stderr, "The username or password was not correct.\n");
-
-		if (NT_STATUS_V(nt_status) ==
-		    NT_STATUS_V(NT_STATUS_ACCOUNT_LOCKED_OUT))
-			d_fprintf(stderr, "The account was locked out.\n");
-
-		if (NT_STATUS_V(nt_status) ==
-		    NT_STATUS_V(NT_STATUS_ACCOUNT_DISABLED))
-			d_fprintf(stderr, "The account was disabled.\n");
-		return nt_status;
-	}
-
-	if (c->smb_encrypt) {
-		nt_status = cli_force_encryption(*cli_ctx,
-					c->opt_user_name,
-					c->opt_password,
-					c->opt_workgroup);
-
-		if (NT_STATUS_EQUAL(nt_status,NT_STATUS_NOT_SUPPORTED)) {
-			d_printf("Encryption required and "
-				"server that doesn't support "
-				"UNIX extensions - failing connect\n");
-		} else if (NT_STATUS_EQUAL(nt_status,NT_STATUS_UNKNOWN_REVISION)) {
-			d_printf("Encryption required and "
-				"can't get UNIX CIFS extensions "
-				"version from server.\n");
-		} else if (NT_STATUS_EQUAL(nt_status,NT_STATUS_UNSUPPORTED_COMPRESSION)) {
-			d_printf("Encryption required and "
-				"share %s doesn't support "
-				"encryption.\n", service_name);
-		} else if (!NT_STATUS_IS_OK(nt_status)) {
-			d_printf("Encryption required and "
-				"setup failed with error %s.\n",
-				nt_errstr(nt_status));
-		}
-
-		if (!NT_STATUS_IS_OK(nt_status)) {
-			cli_shutdown(*cli_ctx);
-			*cli_ctx = NULL;
-		}
-	}
-
-	return nt_status;
-}
-
-/****************************************************************************
- Connect to \\server\ipc$.
-****************************************************************************/
-
-NTSTATUS connect_to_ipc(struct net_context *c,
-			struct cli_state **cli_ctx,
-			struct sockaddr_storage *server_ss,
-			const char *server_name)
-{
-	return connect_to_service(c, cli_ctx, server_ss, server_name, "IPC$",
-				  "IPC");
-}
-
-/****************************************************************************
- Connect to \\server\ipc$ anonymously.
-****************************************************************************/
-
-NTSTATUS connect_to_ipc_anonymous(struct net_context *c,
-				struct cli_state **cli_ctx,
-				struct sockaddr_storage *server_ss,
-				const char *server_name)
-{
-	NTSTATUS nt_status;
-
-	nt_status = cli_full_connection(cli_ctx, c->opt_requester_name,
-					server_name, server_ss, c->opt_port,
-					"IPC$", "IPC",
-					"", "",
-					"", 0, Undefined, NULL);
-
-	if (NT_STATUS_IS_OK(nt_status)) {
-		return nt_status;
-	} else {
-		DEBUG(1,("Cannot connect to server (anonymously).  Error was %s\n", nt_errstr(nt_status)));
-		return nt_status;
-	}
-}
-
-/****************************************************************************
- Return malloced user at realm for krb5 login.
-****************************************************************************/
-
-static char *get_user_and_realm(const char *username)
-{
-	char *user_and_realm = NULL;
-
-	if (!username) {
-		return NULL;
-	}
-	if (strchr_m(username, '@')) {
-		user_and_realm = SMB_STRDUP(username);
-	} else {
-		if (asprintf(&user_and_realm, "%s@%s", username, lp_realm()) == -1) {
-			user_and_realm = NULL;
-		}
-	}
-	return user_and_realm;
-}
-
-/****************************************************************************
- Connect to \\server\ipc$ using KRB5.
-****************************************************************************/
-
-NTSTATUS connect_to_ipc_krb5(struct net_context *c,
-			struct cli_state **cli_ctx,
-			struct sockaddr_storage *server_ss,
-			const char *server_name)
-{
-	NTSTATUS nt_status;
-	char *user_and_realm = NULL;
-
-	/* FIXME: Should get existing kerberos ticket if possible. */
-	c->opt_password = net_prompt_pass(c, c->opt_user_name);
-	if (!c->opt_password) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	user_and_realm = get_user_and_realm(c->opt_user_name);
-	if (!user_and_realm) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	nt_status = cli_full_connection(cli_ctx, NULL, server_name,
-					server_ss, c->opt_port,
-					"IPC$", "IPC",
-					user_and_realm, c->opt_workgroup,
-					c->opt_password,
-					CLI_FULL_CONNECTION_USE_KERBEROS,
-					Undefined, NULL);
-
-	SAFE_FREE(user_and_realm);
-
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(1,("Cannot connect to server using kerberos.  Error was %s\n", nt_errstr(nt_status)));
-		return nt_status;
-	}
-
-        if (c->smb_encrypt) {
-		nt_status = cli_cm_force_encryption(*cli_ctx,
-					user_and_realm,
-					c->opt_password,
-					c->opt_workgroup,
-                                        "IPC$");
-		if (!NT_STATUS_IS_OK(nt_status)) {
-			cli_shutdown(*cli_ctx);
-			*cli_ctx = NULL;
-		}
-	}
-
-	return nt_status;
-}
-
-/**
- * Connect a server and open a given pipe
- *
- * @param cli_dst		A cli_state
- * @param pipe			The pipe to open
- * @param got_pipe		boolean that stores if we got a pipe
- *
- * @return Normal NTSTATUS return.
- **/
-NTSTATUS connect_dst_pipe(struct net_context *c, struct cli_state **cli_dst,
-			  struct rpc_pipe_client **pp_pipe_hnd, int pipe_num)
-{
-	NTSTATUS nt_status;
-	char *server_name = SMB_STRDUP("127.0.0.1");
-	struct cli_state *cli_tmp = NULL;
-	struct rpc_pipe_client *pipe_hnd = NULL;
-
-	if (server_name == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	if (c->opt_destination) {
-		SAFE_FREE(server_name);
-		if ((server_name = SMB_STRDUP(c->opt_destination)) == NULL) {
-			return NT_STATUS_NO_MEMORY;
-		}
-	}
-
-	/* make a connection to a named pipe */
-	nt_status = connect_to_ipc(c, &cli_tmp, NULL, server_name);
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		SAFE_FREE(server_name);
-		return nt_status;
-	}
-
-	pipe_hnd = cli_rpc_pipe_open_noauth(cli_tmp, pipe_num, &nt_status);
-	if (!pipe_hnd) {
-		DEBUG(0, ("couldn't not initialize pipe\n"));
-		cli_shutdown(cli_tmp);
-		SAFE_FREE(server_name);
-		return nt_status;
-	}
-
-	*cli_dst = cli_tmp;
-	*pp_pipe_hnd = pipe_hnd;
-	SAFE_FREE(server_name);
-
-	return nt_status;
-}
-
-/****************************************************************************
- Use the local machine account (krb) and password for this session.
-****************************************************************************/
-
-int net_use_krb_machine_account(struct net_context *c)
-{
-	char *user_name = NULL;
-
-	if (!secrets_init()) {
-		d_fprintf(stderr, "ERROR: Unable to open secrets database\n");
-		exit(1);
-	}
-
-	c->opt_password = secrets_fetch_machine_password(
-				c->opt_target_workgroup, NULL, NULL);
-	if (asprintf(&user_name, "%s$@%s", global_myname(), lp_realm()) == -1) {
-		return -1;
-	}
-	c->opt_user_name = user_name;
-	return 0;
-}
-
-/****************************************************************************
- Use the machine account name and password for this session.
-****************************************************************************/
-
-int net_use_machine_account(struct net_context *c)
-{
-	char *user_name = NULL;
-
-	if (!secrets_init()) {
-		d_fprintf(stderr, "ERROR: Unable to open secrets database\n");
-		exit(1);
-	}
-
-	c->opt_password = secrets_fetch_machine_password(
-				c->opt_target_workgroup, NULL, NULL);
-	if (asprintf(&user_name, "%s$", global_myname()) == -1) {
-		return -1;
-	}
-	c->opt_user_name = user_name;
-	return 0;
-}
-
-bool net_find_server(struct net_context *c,
-			const char *domain,
-			unsigned flags,
-			struct sockaddr_storage *server_ss,
-			char **server_name)
-{
-	const char *d = domain ? domain : c->opt_target_workgroup;
-
-	if (c->opt_host) {
-		*server_name = SMB_STRDUP(c->opt_host);
-	}
-
-	if (c->opt_have_ip) {
-		*server_ss = c->opt_dest_ip;
-		if (!*server_name) {
-			char addr[INET6_ADDRSTRLEN];
-			print_sockaddr(addr, sizeof(addr), &c->opt_dest_ip);
-			*server_name = SMB_STRDUP(addr);
-		}
-	} else if (*server_name) {
-		/* resolve the IP address */
-		if (!resolve_name(*server_name, server_ss, 0x20))  {
-			DEBUG(1,("Unable to resolve server name\n"));
-			return false;
-		}
-	} else if (flags & NET_FLAGS_PDC) {
-		fstring dc_name;
-		struct sockaddr_storage pdc_ss;
-
-		if (!get_pdc_ip(d, &pdc_ss)) {
-			DEBUG(1,("Unable to resolve PDC server address\n"));
-			return false;
-		}
-
-		if (is_zero_addr(&pdc_ss)) {
-			return false;
-		}
-
-		if (!name_status_find(d, 0x1b, 0x20, &pdc_ss, dc_name)) {
-			return False;
-		}
-
-		*server_name = SMB_STRDUP(dc_name);
-		*server_ss = pdc_ss;
-	} else if (flags & NET_FLAGS_DMB) {
-		struct sockaddr_storage msbrow_ss;
-		char addr[INET6_ADDRSTRLEN];
-
-		/*  if (!resolve_name(MSBROWSE, &msbrow_ip, 1)) */
-		if (!resolve_name(d, &msbrow_ss, 0x1B))  {
-			DEBUG(1,("Unable to resolve domain browser via name lookup\n"));
-			return false;
-		}
-		*server_ss = msbrow_ss;
-		print_sockaddr(addr, sizeof(addr), server_ss);
-		*server_name = SMB_STRDUP(addr);
-	} else if (flags & NET_FLAGS_MASTER) {
-		struct sockaddr_storage brow_ss;
-		char addr[INET6_ADDRSTRLEN];
-		if (!resolve_name(d, &brow_ss, 0x1D))  {
-				/* go looking for workgroups */
-			DEBUG(1,("Unable to resolve master browser via name lookup\n"));
-			return false;
-		}
-		*server_ss = brow_ss;
-		print_sockaddr(addr, sizeof(addr), server_ss);
-		*server_name = SMB_STRDUP(addr);
-	} else if (!(flags & NET_FLAGS_LOCALHOST_DEFAULT_INSANE)) {
-		if (!interpret_string_addr(server_ss,
-					"127.0.0.1", AI_NUMERICHOST)) {
-			DEBUG(1,("Unable to resolve 127.0.0.1\n"));
-			return false;
-		}
-		*server_name = SMB_STRDUP("127.0.0.1");
-	}
-
-	if (!*server_name) {
-		DEBUG(1,("no server to connect to\n"));
-		return False;
-	}
-
-	return True;
-}
-
-bool net_find_pdc(struct sockaddr_storage *server_ss,
-		fstring server_name,
-		const char *domain_name)
-{
-	if (!get_pdc_ip(domain_name, server_ss)) {
-		return false;
-	}
-	if (is_zero_addr(server_ss)) {
-		return false;
-	}
-
-	if (!name_status_find(domain_name, 0x1b, 0x20, server_ss, server_name)) {
-		return false;
-	}
-
-	return true;
-}
-
-NTSTATUS net_make_ipc_connection(struct net_context *c, unsigned flags,
-				 struct cli_state **pcli)
-{
-	return net_make_ipc_connection_ex(c, NULL, NULL, NULL, flags, pcli);
-}
-
-NTSTATUS net_make_ipc_connection_ex(struct net_context *c ,const char *domain,
-				    const char *server,
-				    struct sockaddr_storage *pss,
-				    unsigned flags, struct cli_state **pcli)
-{
-	char *server_name = NULL;
-	struct sockaddr_storage server_ss;
-	struct cli_state *cli = NULL;
-	NTSTATUS nt_status;
-
-	if ( !server || !pss ) {
-		if (!net_find_server(c, domain, flags, &server_ss,
-				     &server_name)) {
-			d_fprintf(stderr, "Unable to find a suitable server\n");
-			nt_status = NT_STATUS_UNSUCCESSFUL;
-			goto done;
-		}
-	} else {
-		server_name = SMB_STRDUP( server );
-		server_ss = *pss;
-	}
-
-	if (flags & NET_FLAGS_ANONYMOUS) {
-		nt_status = connect_to_ipc_anonymous(c, &cli, &server_ss,
-						     server_name);
-	} else {
-		nt_status = connect_to_ipc(c, &cli, &server_ss,
-					   server_name);
-	}
-
-	/* store the server in the affinity cache if it was a PDC */
-
-	if ( (flags & NET_FLAGS_PDC) && NT_STATUS_IS_OK(nt_status) )
-		saf_store( cli->server_domain, cli->desthost );
-
-	SAFE_FREE(server_name);
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		d_fprintf(stderr, "Connection failed: %s\n",
-			  nt_errstr(nt_status));
-		cli = NULL;
-	}
-
-done:
-	if (pcli != NULL) {
-		*pcli = cli;
-	}
-	return nt_status;
-}
-
-static int net_user(struct net_context *c, int argc, const char **argv)


-- 
Samba Shared Repository


More information about the samba-cvs mailing list