summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2004-04-29 05:36:28 +0000
committerGerald Carter <jerry@samba.org>2004-04-29 05:36:28 +0000
commit59ee0c387c7eded9068997128eedbf985855198d (patch)
treeed8fb755e486fb9dae32b731229f95c86e1916eb
parent984fc11a4763b867eedcab975e5e8881798551ff (diff)
downloadsamba-59ee0c387c7eded9068997128eedbf985855198d.tar.gz
r396: * Merges from 3.0:
svn merge -r 299:316 $SVN_3_0 svn merge -r 316:319 $SVN_3_0 svn merge -r 328:329 $SVN_3_0 svn merge -r 329:333 $SVN_3_0 svn merge -r 333:340 $SVN_3_0 svn merge -r 370:376 $SVN_3_0 svn merge -r 378:379 $SVN_3_0 svn merge -r 379:384 $SVN_3_0 svn merge -r 384:393 $SVN_3_0 svn merge -r 393:395 $SVN_3_0 * Setting version to 3.0.3
-rw-r--r--examples/pdb/mysql/mysql.dump2
-rw-r--r--source/Makefile.in6
-rw-r--r--source/VERSION2
-rw-r--r--source/configure.in5
-rw-r--r--source/lib/util_sid.c22
-rw-r--r--source/modules/vfs_shadow_copy.c227
-rw-r--r--source/nsswitch/winbindd.h2
-rw-r--r--source/nsswitch/winbindd_group.c6
-rw-r--r--source/nsswitch/winbindd_pam.c18
-rw-r--r--source/nsswitch/winbindd_user.c6
-rw-r--r--source/nsswitch/wins.c4
-rw-r--r--source/passdb/login_cache.c4
-rw-r--r--source/passdb/passdb.c13
-rw-r--r--source/python/py_tdb.c32
-rw-r--r--source/python/py_tdb.h24
15 files changed, 313 insertions, 60 deletions
diff --git a/examples/pdb/mysql/mysql.dump b/examples/pdb/mysql/mysql.dump
index 5da75f5745c..89013521543 100644
--- a/examples/pdb/mysql/mysql.dump
+++ b/examples/pdb/mysql/mysql.dump
@@ -33,5 +33,5 @@ CREATE TABLE user (
unknown_5 int(9),
unknown_6 int(9),
bad_password_count int(9),
- logon_count(9)
+ logon_count int(9)
);
diff --git a/source/Makefile.in b/source/Makefile.in
index de7ee10bb40..2203af089bc 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -320,6 +320,7 @@ VFS_DEFAULT_QUOTA_OBJ = modules/vfs_default_quota.o
VFS_READONLY_OBJ = modules/vfs_readonly.o modules/getdate.o
VFS_CAP_OBJ = modules/vfs_cap.o
VFS_EXPAND_MSDFS_OBJ = modules/vfs_expand_msdfs.o
+VFS_SHADOW_COPY_OBJ = modules/vfs_shadow_copy.o
PLAINTEXT_AUTH_OBJ = auth/pampass.o auth/pass_check.o
@@ -1169,6 +1170,11 @@ bin/readonly.@SHLIBEXT@: $(VFS_READONLY_OBJ:.o=.@PICSUFFIX@)
@$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_READONLY_OBJ:.o=.@PICSUFFIX@) \
@SONAMEFLAG@`basename $@`
+bin/shadow_copy.@SHLIBEXT@: $(VFS_SHADOW_COPY_OBJ:.o=.@PICSUFFIX@)
+ @echo "Building plugin $@"
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_SHADOW_COPY_OBJ:.o=.@PICSUFFIX@) \
+ @SONAMEFLAG@`basename $@`
+
bin/cap.@SHLIBEXT@: $(VFS_CAP_OBJ:.o=.@PICSUFFIX@)
@echo "Building plugin $@"
@$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_CAP_OBJ:.o=.@PICSUFFIX@) \
diff --git a/source/VERSION b/source/VERSION
index 7e1f8bda027..0136dd27e13 100644
--- a/source/VERSION
+++ b/source/VERSION
@@ -51,7 +51,7 @@ SAMBA_VERSION_PRE_RELEASE=
# e.g. SAMBA_VERSION_RC_RELEASE=1 #
# -> "3.0.0rc1" #
########################################################
-SAMBA_VERSION_RC_RELEASE=1
+SAMBA_VERSION_RC_RELEASE=
########################################################
# To mark SVN snapshots this should be set to 'yes' #
diff --git a/source/configure.in b/source/configure.in
index a03b37dd77b..bf8aa771b5c 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -360,7 +360,7 @@ dnl These have to be built static:
default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_lsa_ds rpc_wks rpc_net rpc_dfs rpc_srv rpc_spoolss auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin"
dnl These are preferably build shared, and static if dlopen() is not available
-default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs charset_CP850 charset_CP437"
+default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy charset_CP850 charset_CP437"
if test "x$developer" = xyes; then
default_static_modules="$default_static_modules rpc_echo"
@@ -4079,6 +4079,8 @@ case "$host_os" in
# the Linux version.
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
nsswitch/winbind_nss_linux.o"
+ WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
+ WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
;;
*irix*)
# IRIX has differently named shared libraries
@@ -4333,6 +4335,7 @@ SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHL
SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
+SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
SMB_SUBSYSTEM(VFS,smbd/vfs.o)
AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
diff --git a/source/lib/util_sid.c b/source/lib/util_sid.c
index e4043c4e927..6b27fc84ddb 100644
--- a/source/lib/util_sid.c
+++ b/source/lib/util_sid.c
@@ -174,6 +174,19 @@ NT_USER_TOKEN *get_system_token(void)
return &system_token;
}
+/******************************************************************
+ get the default domain/netbios name to be used when dealing
+ with our passdb list of accounts
+******************************************************************/
+
+const char *get_global_sam_name(void)
+{
+ if ((lp_server_role() == ROLE_DOMAIN_PDC) || (lp_server_role() == ROLE_DOMAIN_BDC)) {
+ return lp_workgroup();
+ }
+ return global_myname();
+}
+
/**************************************************************************
Splits a name of format \DOMAIN\name or name into its two components.
Sets the DOMAIN name to global_myname() if it has not been specified.
@@ -201,14 +214,7 @@ void split_domain_name(const char *fullname, char *domain, char *name)
fstrcpy(domain, full_name);
fstrcpy(name, p+1);
} else {
- if(!lp_domain_logons()) {
- fstrcpy(domain, global_myname());
- fstrcpy(name, full_name);
- } else {
- fstrcpy(domain, lp_workgroup());
- fstrcpy(name, full_name);
- }
- fstrcpy(domain, global_myname());
+ fstrcpy(domain, get_global_sam_name());
fstrcpy(name, full_name);
}
diff --git a/source/modules/vfs_shadow_copy.c b/source/modules/vfs_shadow_copy.c
new file mode 100644
index 00000000000..7ad7b1f7b14
--- /dev/null
+++ b/source/modules/vfs_shadow_copy.c
@@ -0,0 +1,227 @@
+/*
+ * implementation of an Shadow Copy module
+ *
+ * Copyright (C) Stefan Metzmacher 2003-2004
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "includes.h"
+
+/*
+ Please read the VFS module Samba-HowTo-Collection.
+ there's a chapter about this module
+
+ For this share
+ Z:\
+
+ the ShadowCopies are in this directories
+
+ Z:\@GMT-2003.08.05-12.00.00\
+ Z:\@GMT-2003.08.05-12.01.00\
+ Z:\@GMT-2003.08.05-12.02.00\
+
+ e.g.
+
+ Z:\testfile.txt
+ Z:\@GMT-2003.08.05-12.02.00\testfile.txt
+
+ or:
+
+ Z:\testdir\testfile.txt
+ Z:\@GMT-2003.08.05-12.02.00\testdir\testfile.txt
+
+
+ Note: Files must differ to be displayed via Windows Explorer!
+ Directories are always displayed...
+*/
+
+static int vfs_shadow_copy_debug_level = DBGC_VFS;
+
+#undef DBGC_CLASS
+#define DBGC_CLASS vfs_shadow_copy_debug_level
+
+#define SHADOW_COPY_PREFIX "@GMT-"
+#define SHADOW_COPY_SAMPLE "@GMT-2004.02.18-15.44.00"
+
+typedef struct {
+ int pos;
+ int num;
+ struct dirent *dirs;
+} shadow_copy_Dir;
+
+static BOOL shadow_copy_match_name(const char *name)
+{
+ if (strncmp(SHADOW_COPY_PREFIX,name, sizeof(SHADOW_COPY_PREFIX)-1)==0 &&
+ (strlen(SHADOW_COPY_SAMPLE) == strlen(name))) {
+ return True;
+ }
+
+ return False;
+}
+
+static DIR *shadow_copy_opendir(vfs_handle_struct *handle, connection_struct *conn, const char *fname)
+{
+ shadow_copy_Dir *dirp;
+ DIR *p = SMB_VFS_NEXT_OPENDIR(handle,conn,fname);
+
+ if (!p) {
+ DEBUG(0,("shadow_copy_opendir: SMB_VFS_NEXT_OPENDIR() failed for [%s]\n",fname));
+ return NULL;
+ }
+
+ dirp = (shadow_copy_Dir *)malloc(sizeof(shadow_copy_Dir));
+ if (!dirp) {
+ DEBUG(0,("shadow_copy_opendir: Out of memory\n"));
+ SMB_VFS_NEXT_CLOSEDIR(handle,conn,p);
+ return NULL;
+ }
+
+ ZERO_STRUCTP(dirp);
+
+ while (True) {
+ struct dirent *d;
+ struct dirent *r;
+
+
+ d = SMB_VFS_NEXT_READDIR(handle, conn, p);
+ if (d == NULL) {
+ break;
+ }
+
+ if (shadow_copy_match_name(d->d_name)) {
+ DEBUG(8,("shadow_copy_opendir: hide [%s]\n",d->d_name));
+ continue;
+ }
+
+ DEBUG(10,("shadow_copy_opendir: not hide [%s]\n",d->d_name));
+
+ r = (struct dirent *)Realloc(dirp->dirs,(dirp->num+1)*sizeof(struct dirent));
+ if (!r) {
+ DEBUG(0,("shadow_copy_opendir: Out of memory\n"));
+ break;
+ }
+
+ dirp->dirs = r;
+ dirp->dirs[dirp->num++] = *d;
+ }
+
+ SMB_VFS_NEXT_CLOSEDIR(handle,conn,p);
+ return((DIR *)dirp);
+}
+
+struct dirent *shadow_copy_readdir(vfs_handle_struct *handle, connection_struct *conn, DIR *_dirp)
+{
+ shadow_copy_Dir *dirp = (shadow_copy_Dir *)_dirp;
+
+ if (dirp->pos < dirp->num) {
+ return &(dirp->dirs[dirp->pos++]);
+ }
+
+ return NULL;
+}
+
+int shadow_copy_closedir(vfs_handle_struct *handle, connection_struct *conn, DIR *_dirp)
+{
+ shadow_copy_Dir *dirp = (shadow_copy_Dir *)_dirp;
+
+ SAFE_FREE(dirp);
+
+ return 0;
+}
+
+static int shadow_copy_get_shadow_copy_data(vfs_handle_struct *handle, files_struct *fsp, SHADOW_COPY_DATA *shadow_copy_data, BOOL labels)
+{
+ DIR *p = SMB_VFS_NEXT_OPENDIR(handle,fsp->conn,fsp->conn->connectpath);
+
+ shadow_copy_data->num_volumes = 0;
+ shadow_copy_data->labels = NULL;
+
+ if (!p) {
+ DEBUG(0,("shadow_copy_get_shadow_copy_data: SMB_VFS_NEXT_OPENDIR() failed for [%s]\n",fsp->conn->connectpath));
+ return -1;
+ }
+
+ while (True) {
+ SHADOW_COPY_LABEL *tlabels;
+ struct dirent *d;
+
+ d = SMB_VFS_NEXT_READDIR(handle, fsp->conn, p);
+ if (d == NULL) {
+ break;
+ }
+
+ /* */
+ if (!shadow_copy_match_name(d->d_name)) {
+ DEBUG(10,("shadow_copy_get_shadow_copy_data: ignore [%s]\n",d->d_name));
+ continue;
+ }
+
+ DEBUG(7,("shadow_copy_get_shadow_copy_data: not ignore [%s]\n",d->d_name));
+
+ if (!labels) {
+ shadow_copy_data->num_volumes++;
+ continue;
+ }
+
+ tlabels = (SHADOW_COPY_LABEL *)talloc_realloc(shadow_copy_data->mem_ctx,
+ shadow_copy_data->labels,
+ (shadow_copy_data->num_volumes+1)*sizeof(SHADOW_COPY_LABEL));
+ if (tlabels == NULL) {
+ DEBUG(0,("shadow_copy_get_shadow_copy_data: Out of memory\n"));
+ SMB_VFS_NEXT_CLOSEDIR(handle,fsp->conn,p);
+ return -1;
+ }
+
+ snprintf(tlabels[shadow_copy_data->num_volumes++], sizeof(*tlabels), "%s",d->d_name);
+
+ shadow_copy_data->labels = tlabels;
+ }
+
+ SMB_VFS_NEXT_CLOSEDIR(handle,fsp->conn,p);
+ return 0;
+}
+
+/* VFS operations structure */
+
+static vfs_op_tuple shadow_copy_ops[] = {
+ {SMB_VFS_OP(shadow_copy_opendir), SMB_VFS_OP_OPENDIR, SMB_VFS_LAYER_TRANSPARENT},
+ {SMB_VFS_OP(shadow_copy_readdir), SMB_VFS_OP_READDIR, SMB_VFS_LAYER_TRANSPARENT},
+ {SMB_VFS_OP(shadow_copy_closedir), SMB_VFS_OP_CLOSEDIR, SMB_VFS_LAYER_TRANSPARENT},
+
+ {SMB_VFS_OP(shadow_copy_get_shadow_copy_data), SMB_VFS_OP_GET_SHADOW_COPY_DATA,SMB_VFS_LAYER_OPAQUE},
+
+ {SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
+};
+
+NTSTATUS vfs_shadow_copy_init(void)
+{
+ NTSTATUS ret = smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "shadow_copy", shadow_copy_ops);
+
+ if (!NT_STATUS_IS_OK(ret))
+ return ret;
+
+ vfs_shadow_copy_debug_level = debug_add_class("shadow_copy");
+ if (vfs_shadow_copy_debug_level == -1) {
+ vfs_shadow_copy_debug_level = DBGC_VFS;
+ DEBUG(0, ("%s: Couldn't register custom debugging class!\n",
+ "vfs_shadow_copy_init"));
+ } else {
+ DEBUG(10, ("%s: Debug class number of '%s': %d\n",
+ "vfs_shadow_copy_init","shadow_copy",vfs_shadow_copy_debug_level));
+ }
+
+ return ret;
+}
diff --git a/source/nsswitch/winbindd.h b/source/nsswitch/winbindd.h
index e884ea83800..751f6f3700f 100644
--- a/source/nsswitch/winbindd.h
+++ b/source/nsswitch/winbindd.h
@@ -46,6 +46,8 @@ struct winbindd_cli_state {
struct winbindd_request request; /* Request from client */
struct winbindd_response response; /* Respose to client */
+ BOOL getpwent_initialized; /* Has getpwent_state been initialized? */
+ BOOL getgrent_initialized; /* Has getgrent_state been initialized? */
struct getent_state *getpwent_state; /* State for getpwent() */
struct getent_state *getgrent_state; /* State for getgrent() */
};
diff --git a/source/nsswitch/winbindd_group.c b/source/nsswitch/winbindd_group.c
index ec77d2db343..4800ab20cfa 100644
--- a/source/nsswitch/winbindd_group.c
+++ b/source/nsswitch/winbindd_group.c
@@ -472,6 +472,8 @@ enum winbindd_result winbindd_setgrent(struct winbindd_cli_state *state)
DLIST_ADD(state->getgrent_state, domain_state);
}
+ state->getgrent_initialized = True;
+
return WINBINDD_OK;
}
@@ -482,6 +484,7 @@ enum winbindd_result winbindd_endgrent(struct winbindd_cli_state *state)
DEBUG(3, ("[%5lu]: endgrent\n", (unsigned long)state->pid));
free_getent_state(state->getgrent_state);
+ state->getgrent_initialized = False;
state->getgrent_state = NULL;
return WINBINDD_OK;
@@ -632,6 +635,9 @@ enum winbindd_result winbindd_getgrent(struct winbindd_cli_state *state)
group_list = (struct winbindd_gr *)state->response.extra_data;
+ if (!state->getgrent_initialized)
+ winbindd_setgrent(state);
+
if (!(ent = state->getgrent_state))
return WINBINDD_ERROR;
diff --git a/source/nsswitch/winbindd_pam.c b/source/nsswitch/winbindd_pam.c
index a2ebe0ddbc8..c1840b60533 100644
--- a/source/nsswitch/winbindd_pam.c
+++ b/source/nsswitch/winbindd_pam.c
@@ -71,7 +71,7 @@ static NTSTATUS check_info3_in_group(TALLOC_CTX *mem_ctx,
}
if (!string_to_sid(&required_membership_sid, group_sid)) {
- DEBUG(0, ("winbindd_pam_auth: could not parse %s as a SID!",
+ DEBUG(0, ("check_info3_in_group: could not parse %s as a SID!",
group_sid));
return NT_STATUS_INVALID_PARAMETER;
@@ -274,8 +274,12 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state)
}
} while ( (attempts < 2) && retry );
-
- clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds);
+
+ if (cli != NULL) {
+ /* We might have come out of the loop above with cli == NULL,
+ so don't dereference that. */
+ clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds);
+ }
if (NT_STATUS_IS_OK(result)) {
netsamlogon_cache_store( cli->mem_ctx, &info3 );
@@ -526,8 +530,12 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state)
} while ( (attempts < 2) && retry );
- clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds);
-
+ if (cli != NULL) {
+ /* We might have come out of the loop above with cli == NULL,
+ so don't dereference that. */
+ clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds);
+ }
+
if (NT_STATUS_IS_OK(result)) {
netsamlogon_cache_store( cli->mem_ctx, &info3 );
wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3);
diff --git a/source/nsswitch/winbindd_user.c b/source/nsswitch/winbindd_user.c
index d10fd5664ba..40c398755d1 100644
--- a/source/nsswitch/winbindd_user.c
+++ b/source/nsswitch/winbindd_user.c
@@ -360,6 +360,8 @@ enum winbindd_result winbindd_setpwent(struct winbindd_cli_state *state)
DLIST_ADD(state->getpwent_state, domain_state);
}
+ state->getpwent_initialized = True;
+
return WINBINDD_OK;
}
@@ -370,6 +372,7 @@ enum winbindd_result winbindd_endpwent(struct winbindd_cli_state *state)
DEBUG(3, ("[%5lu]: endpwent\n", (unsigned long)state->pid));
free_getent_state(state->getpwent_state);
+ state->getpwent_initialized = False;
state->getpwent_state = NULL;
return WINBINDD_OK;
@@ -501,6 +504,9 @@ enum winbindd_result winbindd_getpwent(struct winbindd_cli_state *state)
sizeof(struct winbindd_pw));
user_list = (struct winbindd_pw *)state->response.extra_data;
+
+ if (!state->getpwent_initialized)
+ winbindd_setpwent(state);
if (!(ent = state->getpwent_state))
return WINBINDD_ERROR;
diff --git a/source/nsswitch/wins.c b/source/nsswitch/wins.c
index 88c65b767f5..b71995998f5 100644
--- a/source/nsswitch/wins.c
+++ b/source/nsswitch/wins.c
@@ -100,7 +100,7 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
*count = 0;
/* always try with wins first */
- if (resolve_wins(name,0x20,&address,count)) {
+ if (resolve_wins(name,0x00,&address,count)) {
if ( (ret = (struct in_addr *)malloc(sizeof(struct in_addr))) == NULL ) {
free( address );
return NULL;
@@ -118,7 +118,7 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
/* uggh, we have to broadcast to each interface in turn */
for (j=iface_count() - 1;j >= 0;j--) {
struct in_addr *bcast = iface_n_bcast(j);
- ret = name_query(fd,name,0x20,True,True,*bcast,count, &flags, NULL);
+ ret = name_query(fd,name,0x00,True,True,*bcast,count, &flags, NULL);
if (ret) break;
}
diff --git a/source/passdb/login_cache.c b/source/passdb/login_cache.c
index 5acec64573b..fc05122ccaf 100644
--- a/source/passdb/login_cache.c
+++ b/source/passdb/login_cache.c
@@ -110,7 +110,9 @@ BOOL login_cache_write(const SAM_ACCOUNT *sampass, LOGIN_CACHE entry)
TDB_DATA keybuf, databuf;
BOOL ret;
-
+
+ if (!login_cache_init())
+ return False;
keybuf.dptr = strdup(pdb_get_nt_username(sampass));
if (!keybuf.dptr || !strlen(keybuf.dptr)) {
diff --git a/source/passdb/passdb.c b/source/passdb/passdb.c
index 04e41b79707..7ccb35c3f4b 100644
--- a/source/passdb/passdb.c
+++ b/source/passdb/passdb.c
@@ -46,19 +46,6 @@ const char *get_default_sam_name(void)
return lp_workgroup();
}
-/******************************************************************
- get the default domain/netbios name to be used when dealing
- with our passdb list of accounts
-******************************************************************/
-
-const char *get_global_sam_name(void)
-{
- if ((lp_server_role() == ROLE_DOMAIN_PDC) || (lp_server_role() == ROLE_DOMAIN_BDC)) {
- return lp_workgroup();
- }
- return global_myname();
-}
-
/************************************************************
Fill the SAM_ACCOUNT with default values.
***********************************************************/
diff --git a/source/python/py_tdb.c b/source/python/py_tdb.c
index 37f64ce7802..6796469759b 100644
--- a/source/python/py_tdb.c
+++ b/source/python/py_tdb.c
@@ -3,27 +3,23 @@
Copyright (C) Tim Potter, 2002-2003
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
+ ** NOTE! The following LGPL license applies to the tdb python
+ ** scripting library. This does NOT imply that all of Samba is
+ ** released under the LGPL
- This program is distributed in the hope that it will be useful,
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/*
- NOTE: Since tdb is licenced under the GPL any program that uses these bindings
- must be distributed under the GPL license terms since this is what
- the GPL requires.
-
- http://www.gnu.org/licenses/gpl-faq.html#IfInterpreterIsGPL
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "includes.h"
diff --git a/source/python/py_tdb.h b/source/python/py_tdb.h
index 69f251c8c1f..5134d2ff968 100644
--- a/source/python/py_tdb.h
+++ b/source/python/py_tdb.h
@@ -3,19 +3,23 @@
Copyright (C) Tim Potter, 2002
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
+ ** NOTE! The following LGPL license applies to the tdb python
+ ** scripting library. This does NOT imply that all of Samba is
+ ** released under the LGPL
- This program is distributed in the hope that it will be useful,
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _PY_TDB_H