svn commit: samba r12251 - in trunk/source: lib param rpc_server smbd utils

jra at samba.org jra at samba.org
Thu Dec 15 01:52:58 GMT 2005


Author: jra
Date: 2005-12-15 01:52:56 +0000 (Thu, 15 Dec 2005)
New Revision: 12251

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12251

Log:
Make bin/net usershare delete <sharename> work.
Jeremy.

Modified:
   trunk/source/lib/dummysmbd.c
   trunk/source/lib/util_str.c
   trunk/source/param/loadparm.c
   trunk/source/rpc_server/srv_srvsvc_nt.c
   trunk/source/smbd/server.c
   trunk/source/utils/net_usershare.c


Changeset:
Modified: trunk/source/lib/dummysmbd.c
===================================================================
--- trunk/source/lib/dummysmbd.c	2005-12-14 23:52:58 UTC (rev 12250)
+++ trunk/source/lib/dummysmbd.c	2005-12-15 01:52:56 UTC (rev 12251)
@@ -53,8 +53,3 @@
 {
 	return False;
 }
-
-BOOL validate_net_name( const char *name, const char *invalid_chars, int max_len )
-{
-	return False;
-}

Modified: trunk/source/lib/util_str.c
===================================================================
--- trunk/source/lib/util_str.c	2005-12-14 23:52:58 UTC (rev 12250)
+++ trunk/source/lib/util_str.c	2005-12-15 01:52:56 UTC (rev 12251)
@@ -2245,3 +2245,23 @@
 	temp3[len-1] = '\0';
 	return temp3;
 }
+
+/********************************************************************
+ Check a string for any occurrences of a specified list of invalid
+ characters.
+********************************************************************/
+
+BOOL validate_net_name( const char *name, const char *invalid_chars, int max_len )
+{
+	int i;
+
+	for ( i=0; i<max_len && name[i]; i++ ) {
+		/* fail if strchr_m() finds one of the invalid characters */
+		if ( name[i] && strchr_m( invalid_chars, name[i] ) ) {
+			return False;
+		}
+	}
+
+	return True;
+}
+

Modified: trunk/source/param/loadparm.c
===================================================================
--- trunk/source/param/loadparm.c	2005-12-14 23:52:58 UTC (rev 12250)
+++ trunk/source/param/loadparm.c	2005-12-15 01:52:56 UTC (rev 12251)
@@ -54,6 +54,7 @@
 #include "includes.h"
 
 BOOL in_client = False;		/* Not in the client by default */
+BOOL in_server = False;		/* Not in the server by default */
 BOOL bLoaded = False;
 
 extern userdom_struct current_user_info;
@@ -1827,6 +1828,7 @@
 FN_GLOBAL_STRING(lp_add_share_cmd, &Globals.szAddShareCommand)
 FN_GLOBAL_STRING(lp_change_share_cmd, &Globals.szChangeShareCommand)
 FN_GLOBAL_STRING(lp_delete_share_cmd, &Globals.szDeleteShareCommand)
+FN_GLOBAL_STRING(lp_usershare_path, &Globals.szUsersharePath)
 
 FN_GLOBAL_LIST(lp_eventlog_list, &Globals.szEventLogs)
 
@@ -4729,7 +4731,8 @@
 
 	init_iconv();
 
-	if (!in_client && Globals.iUsershareMaxShares > 0 && Globals.szUsersharePath[0]) {
+	/* Only load usershares in the smbd server if we're told to. */
+	if (in_server && Globals.iUsershareMaxShares > 0 && Globals.szUsersharePath[0]) {
 		process_usershare_directory(Globals.szUsersharePath, Globals.iUsershareMaxShares);
 	}
 

Modified: trunk/source/rpc_server/srv_srvsvc_nt.c
===================================================================
--- trunk/source/rpc_server/srv_srvsvc_nt.c	2005-12-14 23:52:58 UTC (rev 12250)
+++ trunk/source/rpc_server/srv_srvsvc_nt.c	2005-12-15 01:52:56 UTC (rev 12251)
@@ -29,24 +29,6 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV
 
-/********************************************************************
- Check a string for any occurrences of a specified list of invalid 
- characters.
-********************************************************************/
-
-BOOL validate_net_name( const char *name, const char *invalid_chars, int max_len )
-{
-	int i;
-
-	for ( i=0; i<max_len && name[i]; i++ ) {
-		/* fail if strchr_m() finds one of the invalid characters */
-		if ( name[i] && strchr_m( invalid_chars, name[i] ) )
-			return False;
-	}
-
-	return True;
-}
-
 /*******************************************************************
  Utility function to get the 'type' of a share from an snum.
  ********************************************************************/

Modified: trunk/source/smbd/server.c
===================================================================
--- trunk/source/smbd/server.c	2005-12-14 23:52:58 UTC (rev 12250)
+++ trunk/source/smbd/server.c	2005-12-15 01:52:56 UTC (rev 12251)
@@ -697,6 +697,7 @@
 
  int main(int argc,const char *argv[])
 {
+	extern BOOL in_server;
 	/* shall I run as a daemon */
 	static BOOL is_daemon = False;
 	static BOOL interactive = False;
@@ -718,6 +719,8 @@
 	{ NULL }
 	};
 
+	in_server = True;
+
 #ifdef HAVE_SET_AUTH_PARAMETERS
 	set_auth_parameters(argc,argv);
 #endif

Modified: trunk/source/utils/net_usershare.c
===================================================================
--- trunk/source/utils/net_usershare.c	2005-12-14 23:52:58 UTC (rev 12250)
+++ trunk/source/utils/net_usershare.c	2005-12-15 01:52:56 UTC (rev 12251)
@@ -21,31 +21,6 @@
 #include "includes.h"
 #include "utils/net.h"
 
-static int net_usershare_add(int argc, const char **argv)
-{
-	return -1;
-}
-
-static int net_usershare_delete(int argc, const char **argv)
-{
-	return -1;
-}
-
-static int net_usershare_info(int argc, const char **argv)
-{
-	return -1;
-}
-
-static int net_usershare_list(int argc, const char **argv)
-{
-	return -1;
-}
-
-static int net_usershare_listall(int argc, const char **argv)
-{
-	return -1;
-}
-
 /* The help subsystem for the USERSHARE subcommand */
 
 static int net_usershare_add_usage(int argc, const char **argv)
@@ -109,6 +84,54 @@
 	return -1;
 }
 
+static int net_usershare_add(int argc, const char **argv)
+{
+	return -1;
+}
+
+static int net_usershare_delete(int argc, const char **argv)
+{
+	pstring us_path;
+
+	if (argc != 1) {
+		return net_usershare_delete_usage(argc, argv);
+	}
+
+	if (!validate_net_name(argv[0], INVALID_SHARENAME_CHARS, strlen(argv[0]))) {
+		d_printf("net usershare delete: share name %s contains "
+                        "invalid characters (any of %s)\n",
+                        argv[0], INVALID_SHARENAME_CHARS);
+		return -1;
+	}
+
+	pstrcpy(us_path, lp_usershare_path());
+	pstrcat(us_path, "/");
+	pstrcat(us_path, argv[0]);
+
+	if (unlink(us_path) != 0) {
+		d_printf("net usershare delete: unable to remove usershare %s. "
+			"Error was %s\n",
+                        us_path, strerror(errno));
+		return -1;
+	}
+	return 0;
+}
+
+static int net_usershare_info(int argc, const char **argv)
+{
+	return -1;
+}
+
+static int net_usershare_list(int argc, const char **argv)
+{
+	return -1;
+}
+
+static int net_usershare_listall(int argc, const char **argv)
+{
+	return -1;
+}
+
 /*
   handle "net usershare help *" subcommands
 */
@@ -129,6 +152,8 @@
 
 int net_usershare(int argc, const char **argv)
 {
+	SMB_STRUCT_DIR *dp;
+
 	struct functable func[] = {
 		{"ADD", net_usershare_add},
 		{"DELETE", net_usershare_delete},
@@ -139,5 +164,18 @@
 		{NULL, NULL}
 	};
 	
+	if (lp_usershare_max_shares() == 0) {
+		d_printf("net usershare: usershares are currently disabled\n");
+		return -1;
+	}
+
+	dp = sys_opendir(lp_usershare_path());
+	if (!dp) {
+		d_printf("net usershare: cannot open usershare directory %s. Error %s\n",
+			lp_usershare_path(), strerror(errno) );
+		return -1;
+	}
+	sys_closedir(dp);
+
 	return net_run_function(argc, argv, func, net_usershare_usage);
 }



More information about the samba-cvs mailing list