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