This commit was manufactured by cvs2svn to create branch 'SAMBA_3_0'.(This used to...
authorcvs2svn Import User <samba-bugs@samba.org>
Thu, 31 Oct 2002 04:17:30 +0000 (04:17 +0000)
committercvs2svn Import User <samba-bugs@samba.org>
Thu, 31 Oct 2002 04:17:30 +0000 (04:17 +0000)
110 files changed:
docs/docbook/devdoc/unix-smb.sgml
docs/docbook/manpages/smbclient.1.sgml
docs/docbook/projdoc/Bugs.sgml
docs/docbook/projdoc/Integrating-with-Windows.sgml
docs/docbook/projdoc/security_level.sgml
docs/docbook/projdoc/winbind.sgml
docs/docs-status
examples/LDAP/README
examples/printing/smbprint.old [deleted file]
examples/sam/Makefile.in [deleted file]
examples/sam/README [deleted file]
examples/sam/sam_skel.c [deleted file]
packaging/Caldera/OpenLinux/samba3.spec.tmpl
packaging/Mandrake/README
packaging/Mandrake/makerpms.sh.tmpl
packaging/Mandrake/samba.log
packaging/Mandrake/samba.xinetd
packaging/Mandrake/samba2.spec.tmpl
packaging/Mandrake/smb.conf
packaging/Mandrake/smb.init
packaging/RedHat/README
packaging/RedHat/findsmb [deleted file]
packaging/RedHat/makerpms.sh.tmpl
packaging/RedHat/samba2.spec.tmpl
packaging/RedHat/smb.init
packaging/RedHat/winbind.init [new file with mode: 0644]
source3/Makefile.in
source3/auth/auth_unix.c
source3/auth/auth_util.c
source3/client/client.c
source3/configure
source3/configure.in
source3/groupdb/mapping.c
source3/include/config.h.in
source3/include/gums.h [deleted file]
source3/include/includes.h
source3/include/mapping.h
source3/include/passdb.h
source3/include/rpc_client_proto.h [deleted file]
source3/include/rpc_samr.h
source3/include/rpc_secdes.h
source3/include/sam.h [deleted file]
source3/include/smb.h
source3/include/version.h
source3/lib/bitmap.c
source3/lib/domain_namemap.c [deleted file]
source3/lib/module.c [deleted file]
source3/lib/replace.c
source3/lib/util_seaccess.c
source3/libads/ads_utils.c
source3/libads/kerberos_verify.c
source3/nsswitch/winbindd.c
source3/nsswitch/winbindd_cm.c
source3/nsswitch/winbindd_misc.c
source3/nsswitch/winbindd_util.c
source3/passdb/passdb.c
source3/passdb/pdb_compat.c
source3/passdb/pdb_get_set.c
source3/passdb/pdb_interface.c
source3/passdb/pdb_ldap.c
source3/passdb/pdb_nisplus.c
source3/passdb/pdb_smbpasswd.c
source3/passdb/pdb_tdb.c
source3/passdb/pdb_unix.c
source3/python/examples/tdbpack/test_tdbpack.py
source3/python/py_common.c
source3/python/py_common_proto.h
source3/python/py_lsa.c
source3/python/py_samr.c
source3/python/py_smb.c
source3/python/py_spoolss_drivers.c
source3/python/py_spoolss_ports.c
source3/python/py_spoolss_printers.c
source3/python/py_tdbpack.c
source3/python/setup.py
source3/rpc_parse/parse_samr.c
source3/rpc_server/srv_lsa_nt.c
source3/rpc_server/srv_netlog_nt.c
source3/rpc_server/srv_reg_nt.c
source3/rpc_server/srv_samr.c
source3/rpc_server/srv_samr_nt.c
source3/rpc_server/srv_samr_util.c
source3/rpc_server/srv_util.c
source3/sam/SAM-interface_handles.txt [deleted file]
source3/sam/account.c [deleted file]
source3/sam/get_set_account.c [deleted file]
source3/sam/get_set_domain.c [deleted file]
source3/sam/get_set_group.c [deleted file]
source3/sam/group.c [deleted file]
source3/sam/gumm_tdb.c [deleted file]
source3/sam/gums.c [deleted file]
source3/sam/gums_api.c [deleted file]
source3/sam/gums_helper.c [deleted file]
source3/sam/interface.c [deleted file]
source3/sam/sam_ads.c [deleted file]
source3/sam/sam_plugin.c [deleted file]
source3/sam/sam_skel.c [deleted file]
source3/smbd/chgpasswd.c
source3/smbd/lanman.c
source3/smbd/password.c
source3/smbd/uid.c
source3/torture/cmd_sam.c [deleted file]
source3/torture/samtest.c [deleted file]
source3/utils/net.c
source3/utils/net_rpc.c
source3/utils/net_rpc_samsync.c
source3/utils/pdbedit.c
source3/utils/smbgroupedit.c
source3/web/swat.c
swat/help/welcome.html

index 73da12758d3d5fe915960c2b6a741a773edcd876..be7969885726e2861d406b32f0db506ae20c3903 100644 (file)
@@ -143,13 +143,6 @@ details.
 
 <sect1>
 <title>Locking</title>
-<para>
-<note>
-Since samba 2.2, samba supports other types of locking as well. This 
-section is outdated.
-</note>
-</para>
-
 <para>
 The locking calls available under a DOS/Windows environment are much
 richer than those available in unix. This means a unix server (like
index 43994a4529f399a56d3c02dc17774d2c8106809a..31031dafc46c03e48279f8acea911d73877cb3b6 100644 (file)
@@ -30,7 +30,7 @@
                <arg choice="opt">-l logfile</arg>
                <arg choice="opt">-L &lt;netbios name&gt;</arg>
                <arg choice="opt">-I destinationIP</arg>
-               <arg choice="opt">-E</arg>
+               <arg choice="opt">-E &lt;terminal code&gt;</arg>
                <arg choice="opt">-c &lt;command string&gt;</arg>
                <arg choice="opt">-i scope</arg>
                <arg choice="opt">-O &lt;socket options&gt;</arg>
index a9493b07d4ce3f10fff820a60347b5e432ee0d34..5a24458e080e1a0ec1a3079937153b33f5fa0020 100644 (file)
@@ -15,8 +15,7 @@
 <title>Introduction</title>
 
 <para>
-The email address for bug reports for stable releases is <ulink url="samba@samba.org">samba@samba.org</ulink>. 
-Bug reports for alpha releases should go to <ulink url="mailto:samba-technical@samba.org">samba-technical@samba.org</ulink>.
+The email address for bug reports is samba@samba.org
 </para>
 
 <para>
@@ -45,7 +44,7 @@ that list that may be able to help you.
 <para>
 You may also like to look though the recent mailing list archives,
 which are conveniently accessible on the Samba web pages
-at <ulink url="http://samba.org/samba/">http://samba.org/samba/</ulink>.
+at http://samba.org/samba/ 
 </para>
 
 </sect1>
index 3b0faf81af90613a152fa6eeaeca572ce3d50e8d..701e48678c3afc5f1e4474fa8ec07ff0bd0eddbf 100644 (file)
@@ -253,7 +253,7 @@ principal of speaking only when necessary.
 </para>
 
 <para>
-Starting with version 2.2.0 samba has Linux support for extensions to 
+Samba version 2.2.0 will add Linux support for extensions to 
 the name service switch infrastructure so that linux clients will 
 be able to obtain resolution of MS Windows NetBIOS names to IP 
 Addresses. To gain this functionality Samba needs to be compiled 
index 2f9a92d87236f520220d3649a68c9f9c6f5c5c8c..efe2b6eaf3dff4043d79ddf863baec21551df014 100644 (file)
@@ -20,7 +20,7 @@ Samba supports the following options to the global smb.conf parameter
 
 <para><programlisting>
 [global]
-<ulink url="smb.conf.5.html#SECURITY"><parameter>security</parameter></ulink> = [share|user(default)|server|domain|ads]
+<ulink url="smb.conf.5.html#SECURITY"><parameter>security</parameter></ulink> = [share|user(default)|domain|ads]
 </programlisting></para>
 
 <para>
index d2bfb8ab679c1855c69991a633afbca17d74a165..b045a26db695ca69f741416a15dc9d812c6387dd 100644 (file)
@@ -412,7 +412,7 @@ you get frustrated with the way things are going.  ;-)
 </para>
 
 <para>
-The latest version of SAMBA (version 3.0 as of this writing), now 
+The latest version of SAMBA (version 2.2.2 as of this writing), now 
 includes a functioning winbindd daemon.  Please refer to the 
 <ulink url="http://samba.org/">main SAMBA web page</ulink> or, 
 better yet, your closest SAMBA mirror site for instructions on 
index a3a3075adcccd0c85c75ee074023ad320028b2e6..e6a25c40a24f6bc7e72f83ce4f96509ad7616cd1 100644 (file)
@@ -1,8 +1,10 @@
 If you'd like to work on any of these, please contact jerry@samba.org or jelmer@samba.org.
 
 Outdated docs:
-docs/announce - needs updating before we release 3.0
-docs/history - needs updating (is current up to 1998 - merge with 10year.html)
+docs/OID/allocated-arcs.txt - does this file really belong here?
+docs/OID/samba-oid.mail - does this file really belong here?
+docs/announce - out of date (announces 2.2.0) - should it go away?
+docs/history - needs updating (is current up to 1998 - merge with 10year.html ?)
 docs/docbook/devdoc/* - most of these docs are outdated and need updates...
 docs/docbook/manpages/net.8.sgml - Still not finished
 docs/docbook/manpages/rpcclient.1.sgml - Command documentation might be outdated
index 42cf4ff33a27b6a8e7d668aefd1e21de21f16b19..281a66e65aa2a95fe8b33f97e510a39cef0d9001 100644 (file)
@@ -5,7 +5,7 @@
 !==
 
 This is a quick and dirty means of storing smbpasswd entries
-in LDAP.  Samba 2.2.x does not have any ability to grab
+in smbpasswd.  Samba 2.2.x does not have any ability to grab
 this information directly from LDAP so you will need to
 periodically generate an smbpasswd from an ldapsearch
 "(objectclass=smbPasswordEntry)".
diff --git a/examples/printing/smbprint.old b/examples/printing/smbprint.old
deleted file mode 100755 (executable)
index 5a00a2a..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/sh 
-
-# This script is an input filter for printcap printing on a unix machine. It
-# uses the smbclient program to print the file to the specified smb-based 
-# server and service.
-# For example you could have a printcap entry like this
-#
-# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
-#
-# which would create a unix printer called "smb" that will print via this 
-# script. You will need to create the spool directory /usr/spool/smb with
-# appropriate permissions and ownerships for your system.
-
-# Set these to the server and service you wish to print to 
-# In this example I have a WfWg PC called "lapland" that has a printer 
-# exported called "printer" with no password.
-
-#
-# Script further altered by hamiltom@ecnz.co.nz (Michael Hamilton)
-# so that the server, service, and password can be read from 
-# a /usr/var/spool/lpd/PRINTNAME/.config file.
-#
-# Script further modified by Richard Sharpe to fix some things.
-# Get rid of the -x on the first line, and add parameters
-#
-#    -t  now causes translate to be used when sending files
-#
-# In order for this to work the /etc/printcap entry must include an 
-# accounting file (af=...):
-#
-#   cdcolour:\
-#      :cm=CD IBM Colorjet on 6th:\
-#      :sd=/var/spool/lpd/cdcolour:\
-#      :af=/var/spool/lpd/cdcolour/acct:\
-#      :if=/usr/local/etc/smbprint:\
-#      :mx=0:\
-#      :lp=/dev/null:
-#
-# The /usr/var/spool/lpd/PRINTNAME/.config file should contain:
-#   server=PC_SERVER
-#   service=PR_SHARENAME
-#   password="password"
-#
-# E.g.
-#   server=PAULS_PC
-#   service=CJET_371
-#   password=""
-
-#
-# Debugging log file, change to /dev/null if you like.
-#
-logfile=/tmp/smb-print.log
-# logfile=/dev/null
-
-
-#
-# The last parameter to the filter is the accounting file name.
-#   Extract the directory name from the file name.
-#   Concat this with /.config to get the config file.
-#
-TRANS=0
-eval acct_file=\${$#}
-spool_dir=`dirname $acct_file` 
-config_file=$spool_dir/.config
-
-# Should read the following variables set in the config file:
-#   server
-#   service
-#   password
-eval `cat $config_file`
-
-while getopts t c; do
-  case $c in
-    t)
-       TRANS=1
-       ;;
-
-    '?')  # Bad parameters, ignore it ...
-       ;;
-  esac
-done
-#
-# Some debugging help, change the >> to > if you want to same space.
-#
-echo "server $server, service $service" >> $logfile
-
-(
-# NOTE You may wish to add the line `echo translate' if you want automatic
-# CR/LF translation when printing.
-       if [ $TRANS -eq 1 ]; then
-          echo translate
-        fi
-       echo "print -"
-       cat
-) | /usr/local/samba/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $logfile
diff --git a/examples/sam/Makefile.in b/examples/sam/Makefile.in
deleted file mode 100644 (file)
index d5df346..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-CC             = @CC@
-CFLAGS         = @CFLAGS@
-CPPFLAGS       = @CPPFLAGS@
-LDFLAGS                = @LDFLAGS@
-LDSHFLAGS      = -shared
-srcdir         = @builddir@
-FLAGS          =  $(CFLAGS) -Iinclude -I$(srcdir)/include -I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper  -I. $(CPPFLAGS) -I$(srcdir)
-
-SAM_OBJS       = sam_skel.so
-
-# Default target
-
-default: $(SAM_OBJS)
-
-# Pattern rules
-
-%.so: %.o
-       $(CC) $(LDSHFLAGS) $(LDFLAGS) -o $@ $<
-
-%.o: %.c
-       $(CC) $(FLAGS) -c $<
-
-# Misc targets
-
-clean:
-       rm -rf .libs
-       rm -f core *~ *% *.bak \
-       $(SAM_OBJ) $(SAM_OBJS)
diff --git a/examples/sam/README b/examples/sam/README
deleted file mode 100644 (file)
index 9e9fbb2..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-README for Samba SAM Database examples
-====================================================
-26-08-2002 Stefan (metze) Metzmacher <metze@metzemix.de>
-
-Every module MUST have a sam_version() function.
-
-this is defined in include/sam.h:
-#define SAM_MODULE_VERSIONING_MAGIC \
-int sam_version(void)\
-{\
-       return SAM_INTERFACE_VERSION;\
-}
-
-You MUST add this line inside a module:
-SAM_MODULE_VERSIONING_MAGIC
-
-
-The sam_skel.c file in this directory contains a very basic example of 
-a SAM plugin. It just prints the name of the function that is executed using
-DEBUG. Maybe it's nice to include some of the arguments to the function in the 
-future too..
-
-New SAM plugins should go into the samba lib directory, (/usr/lib/samba/ 
-for most distributions) and should be prefixed with 'sam_' and should go into the 
-subdir sam/. The SAM subsystem will search in /usr/lib/samba/sam and fall back to 
-/usr/lib/samba/ . 
-An example path would be: 
-/usr/lib/samba/sam/sam_skel.so
-
diff --git a/examples/sam/sam_skel.c b/examples/sam/sam_skel.c
deleted file mode 100644 (file)
index da3a375..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   this is a skeleton for SAM backend modules.
-       
-   Copyright (C) Stefan (metze) Metzmacher             2002
-   Copyright (C) Jelmer Vernooij                               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.
-
-   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"
-
-static int sam_skel_debug_level = DBGC_SAM;
-
-#undef DBGC_CLASS
-#define DBGC_CLASS sam_skel_debug_level
-
-/* define the version of the SAM interface */ 
-SAM_MODULE_VERSIONING_MAGIC
-
-/* General API */
-
-NTSTATUS sam_skel_get_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_set_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-       
-NTSTATUS sam_skel_lookup_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, char **name, uint32 *type)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_lookup_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const char *name, DOM_SID **sid, uint32 *type)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-       
-/* Domain API */
-
-NTSTATUS sam_skel_update_domain(const SAM_METHODS *sam_methods, const SAM_DOMAIN_HANDLE *domain)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_domain_handle(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Account API */
-
-NTSTATUS sam_skel_create_account(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_add_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_update_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_delete_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_enum_accounts(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_get_account_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_account_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Group API */
-
-NTSTATUS sam_skel_create_group(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_add_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_update_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_delete_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_enum_groups(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_group_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_group_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_add_member_to_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_delete_member_from_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_enum_groupmembers(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_get_groups_of_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
-{
-       DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_init(SAM_METHODS *sam_methods, const char *module_params)
-{
-       /* Functions your SAM module doesn't provide should be set 
-        * to NULL */
-
-       sam_methods->sam_get_sec_desc = sam_skel_get_sec_desc;
-       sam_methods->sam_set_sec_desc = sam_skel_set_sec_desc;
-       
-       sam_methods->sam_lookup_sid = sam_skel_lookup_sid;
-       sam_methods->sam_lookup_name = sam_skel_lookup_name;
-       
-       /* Domain API */
-
-       sam_methods->sam_update_domain = sam_skel_update_domain;
-       sam_methods->sam_get_domain_handle = sam_skel_get_domain_handle;
-
-       /* Account API */
-
-       sam_methods->sam_create_account = sam_skel_create_account;
-       sam_methods->sam_add_account = sam_skel_add_account;
-       sam_methods->sam_update_account = sam_skel_update_account;
-       sam_methods->sam_delete_account = sam_skel_delete_account;
-       sam_methods->sam_enum_accounts = sam_skel_enum_accounts;
-
-       sam_methods->sam_get_account_by_sid = sam_skel_get_account_by_sid;
-       sam_methods->sam_get_account_by_name = sam_skel_get_account_by_name;
-
-       /* Group API */
-
-       sam_methods->sam_create_group = sam_skel_create_group;
-       sam_methods->sam_add_group = sam_skel_add_group;
-       sam_methods->sam_update_group = sam_skel_update_group;
-       sam_methods->sam_delete_group = sam_skel_delete_group;
-       sam_methods->sam_enum_groups = sam_skel_enum_groups;
-       sam_methods->sam_get_group_by_sid = sam_skel_get_group_by_sid;
-       sam_methods->sam_get_group_by_name = sam_skel_get_group_by_name;
-
-       sam_methods->sam_add_member_to_group = sam_skel_add_member_to_group;
-       sam_methods->sam_delete_member_from_group = sam_skel_delete_member_from_group;
-       sam_methods->sam_enum_groupmembers = sam_skel_enum_groupmembers;
-
-       sam_methods->sam_get_groups_of_sid = sam_skel_get_groups_of_sid;
-
-       sam_methods->free_private_data = NULL;
-
-
-       sam_skel_debug_level = debug_add_class("sam_skel");
-       if (sam_skel_debug_level == -1) {
-               sam_skel_debug_level = DBGC_SAM;
-               DEBUG(0, ("sam_skel: Couldn't register custom debugging class!\n"));
-       } else DEBUG(2, ("sam_skel: Debug class number of 'sam_skel': %d\n", sam_skel_debug_level));
-    
-       if(module_params)
-               DEBUG(0, ("Starting 'sam_skel' with parameters '%s' for domain %s\n", module_params, sam_methods->domain_name));
-       else
-               DEBUG(0, ("Starting 'sam_skel' for domain %s without paramters\n", sam_methods->domain_name));
-
-       return NT_STATUS_OK;
-}
index 8bdc4eb0d79f08bbb6ffcd30712b59c097e92d31..43e60a2ac09aff90f4c2c168bf02230bcb924f06 100644 (file)
@@ -22,6 +22,10 @@ Requires     : libpam >= 0.66, SysVinit-scripts >= 1.04-6
 BuildRoot      : /tmp/%{Name}-%{Version}
 
 Source: ftp://ftp.samba.org/pub/samba/%{Name}-%{Version}.tar.gz
+#Patch0: %{Name}-%{Version}-smbmount.patch
+#Patch1: %{Name}-%{Version}-install.patch
+#Patch2: %{Name}-%{Version}-smbconf.patch
+
 
 %Package doc
 Group          : Server/Network
@@ -169,7 +173,21 @@ a clean and stable API for SMB client application development.
 
 %Prep
 %setup
-
+#%patch0 -p1
+#%patch1 -p1
+#%patch2 -p1
+
+# The commented out fixUP below should be best known as screwUP!
+# instead of patch (to help configuration) ...   ;^)
+#%{fixUP} -vbT source/Makefile.in -e '
+#  s:we don.t use sbindir because we want:if you want : +
+#  s:(the previous releases of Samba):$1, please use: +
+#  s:(SBINDIR\s*=\s*\@)b:# ./configure --sbindir=\\\$(BINDIR)\n${1}sb: +
+#  s:/log\.(\S+):/log/samba.d/${1}d: +
+#  s:(PASSWD_PROGRAM\s*=\s*)(/bin):$1/usr$2: +
+#  s:^(LIBS\s*=):AUTH_$1: +
+#  s:((SMBD|SWAT|RPCCLIENT|SMBPASSWD)_OBJ\) )(\$\(LDF):$1\$(AUTH_LIBS) $3:
+#'
 
 for i in {cvs.,change-}log; do [ ! -f ../$i ] || mv ../$i source; done
 
@@ -191,6 +209,10 @@ for i in docs/*/smb.conf.5*; do
     s:/usr/local/:/usr/:g;
   '
 done
+%{fixUP} -vT docs/textdocs/Faxing.txt -e '
+  s:/usr/local/etc/:/etc/: +
+  s:/usr/local/:/usr/:;
+'
 # End of DirtyHack(TM)
 
 
@@ -267,7 +289,7 @@ strip $DESTDIR/usr/bin/smb{mount,mnt,umount}
        ln -s /usr/bin/smbumount umount.smbfs )
 
 # First install /usr/bin progs
-for i in smbfilter debug2html
+for i in smbfilter make_printerdef debug2html
 do
        install -m 755 source/bin/$i $DESTDIR/usr/bin
 done
index 5ccfb1d22b3651a822ef1277cb8daa8fb390dc39..1c5bb30edc0e4c4844e3fe288bd8ab36bc028581 100644 (file)
@@ -1,7 +1,7 @@
 Preparation Date: Sat Apr 14 2001
-Preparer:      Gerald Carter <jerry@samba.org>
+Preparer:        John H Terpstra <jht@samba.org>
 
-Instructions:  Preparing Samba Packages for Mandrake Linux 8.x
+Instructions:  Preparing Samba Packages for Mandrake Linux 7.2
 ===============================================================
 
 We provide support only for current versions of Mandrake Linux.
index ba4eff0e2b10cc21bdd830c4e6195694a176b1d8..c4ad9c6b5811b9941d3f0aca7cb5ac73d509af6d 100644 (file)
@@ -1,77 +1,16 @@
 #!/bin/sh
-# Copyright (C) John H Terpstra 1998-2002
-# Updated for RPM 3 by Jochen Wiedmann, joe@ispsoft.de
-# Changed for a generic tar file rebuild by abartlet@pcug.org.au
-# Taken from Red Hat build area by JHT
-# Changed by John H Terpstra to build on RH8.1 - should also work for earlier versions jht@samba.org
-# Changes from Buchan Milne <bgmilne@cae.co.za>
-
-# The following allows environment variables to override the target directories
-#   the alternative is to have a file in your home directory calles .rpmmacros
-#   containing the following:
-#   %_topdir  /home/mylogin/RPM
+# Copyright (C) 1998 John H Terpstra, 1999 K Spoon
 #
-
-# rpm --eval should always give a correct answer for this
-SPECDIR=`rpm --eval "%{_specdir}"`
-SRCDIR=`rpm --eval "%{_sourcedir}"`
-
-# At this point the (SPECDIR and) SRCDIR vaiables must have a value!
-
+SPECDIR=/usr/src/RPM/SPECS
+SRCDIR=/usr/src/RPM/SOURCES
 USERID=`id -u`
 GRPID=`id -g`
 VERSION='PVERSION'
 
-RPMVER=`rpm --version | awk '{print $3}'`
-echo The RPM Version on this machine is: $RPMVER
-
-case $RPMVER in
-    2*)
-       echo Building for RPM v2.x
-       sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2.spec > samba.spec
-       ;;
-    3*)
-       echo Building for RPM v3.x
-       sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2.spec > samba.spec
-       ;;
-    4*)
-       echo Building for RPM v4.x
-       sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2.spec > samba.spec
-       ;;
-    *)
-       echo "Unknown RPM version: `rpm --version`"
-       exit 1
-       ;;
-esac
-
-( cd ../../source; if [ -f Makefile ]; then make distclean; fi )
-( cd ../../.. ; chown -R ${USERID}.${GRPID} samba-${VERSION} )
-echo "Compressing the source as bzip2, may take a while ..."
-( cd ../../.. ; tar --exclude=CVS -cjf ${SRCDIR}/samba-${VERSION}.tar.bz2 samba-${VERSION} )
-
-cp -av samba.spec ${SPECDIR}
-# cp -a *.patch.bz2 *.xpm.bz2 smb.* samba.xinetd samba.log $SRCDIR
-# Prepare to allow straight patches synced from Mandrake cvs:
-# Updating of sources and patches can be done more easily and accurately
-# by using info in the spec file. It won't work for files that use an rpm
-# macro in their name, but that shouldn't be a problem.
-
-SOURCES=`awk '/^Source/ {print $2}' samba.spec |grep -v "%{"`
-PATCHES=`awk  '/^Patch/ {print $2}' samba.spec`
-
-for i in $PATCHES $SOURCES;do
-       # We have two cases to fix, one where it's bzip2'ed
-       # in the spec and not in CVS, one where it's bzip2'ed 
-       # in CVS but not in the spec
-       [ -e $i ] && cp -av $i $SRCDIR
-       i_nobz2=`echo $i|sed -e 's/.bz2$//'`
-       i_bz2=$i.bz2
-       [ -e $i_nobz2 ] && bzip2 -kf $i_nobz2  && mv -fv $i $SRCDIR
-       [ -e $i_bz2 ] && bunzip2 -kf $i_bz2 && mv -fv $i $SRCDIR
-done
-
-echo Getting Ready to build release package
-cd ${SPECDIR}
-rpm -ba -v --clean --rmsource samba.spec $@
-
-echo Done.
+( cd ../../.. ; mv samba samba-$VERSION; chown -R ${USERID}.${GRPID} ${SRCDIR}/samba-$VERSION )
+( cd ../../.. ; tar --exclude=CVS -czvf ${SRCDIR}/samba-$VERSION.tar.gz samba-$VERSION )
+( cd ../../.. ; mv samba-$VERSION samba )
+cp -a *.spec $SPECDIR
+cp -a *.patch smb.* samba.log $SRCDIR
+cd $SPECDIR
+rpm -ba -v samba2.spec
index 4e8b44b60e78f3c334d951c68d5e9a2b9fb469ed..7dc1667bafe30d2c901a11ac4e36904520d2da8a 100644 (file)
@@ -1,4 +1,4 @@
-/var/log/samba/log.nmb {
+/var/log/samba/log.nmbd {
     notifempty
     missingok
     postrotate
@@ -6,7 +6,7 @@
     endscript
 }
 
-/var/log/samba/log.smb {
+/var/log/samba/log.smbd {
     notifempty
     missingok
     postrotate
index 59910336bbac72d03d1e88c49f0ddb40b80a5666..a6dea1f7405b4550df0abf4fda6d25578ec1436e 100644 (file)
@@ -7,7 +7,7 @@ service swat
        port    = 901
        socket_type     = stream
        wait    = no
-       only_from = 127.0.0.1
+       only_from = localhost
        user    = root
        server  = /usr/sbin/swat
        log_on_failure  += USERID
index ffec867ce3e39659c5af44665643b06c26585c78..5bc92535f80c5b5aa54a664fe9607c1376ed5cf5 100644 (file)
-%define pkg_name samba
-%define ver 2.2.5
-%define rel 17mdk
-%define vscanver 0.2.5c
-
-# Determine whether this is the system samba or not.
-%define build_system   0
-%if %build_system
-%define samba_major    %{null}
-%else
-%define samba_major    3
-%global _iconsdir      %{_datadir}/icons/
-%global _miconsdir     %{_datadir}/icons/mini
-%global _liconsdir     %{_datadir}/icons/large
-%global _menudir       %{_libdir}/menu
-#%%%%global __prefix           /opt/samba%{samba_major}
-
-%global _mandir                %{_datadir}/man
-%endif
-
-# 2.2.4 and 1 replace by samba-team at release
-%define pversion PVERSION
-%define prelease PRELEASE
-# For testing this setup:
-#%define pversion1 2.2.5
-#%define prelease1 %(date +%Y%m%d)
-
-#Check to see if p(version|release) has been replaced (1 if replaced)
-%define have_pversion %(if [ "%pversion" = `echo "pversion" |tr '[:lower:]' '[:upper:]'` ];then echo 0; else echo 1; fi)
-%define have_prelease %(if [ "%prelease" = `echo "prelease" |tr '[:lower:]' '[:upper:]'` ];then echo 0; else echo 1; fi)
-
-# We might have a prerelease:
-%define have_pre %(echo %pversion|awk '{p=0} /[a-z,A-Z][a-z,A-Z]/ {p=1} {print p}')
-%if %have_pre
-%define pre_ver %(perl -e '$name="%pversion"; print ($name =~ /(.*?)[a-z]/);')
-%define pre_pre %(echo %pversion|sed -e 's/%pre_ver//g')
-%endif
-
-
-# Check to see if we are running a build from a tarball release from samba.org
-# (%have_pversion) If so, disable vscan, unless explicitly requested
-# (--with vscan).
-%define build_vscan 1
-%if %have_pversion
-%define build_vscan 0
-%{?_with_vscan: %define build_vscan 1}
-%endif
-
-# We now do detection of the Mandrake release we are building on:
-#%define build_cooker %(if [ `awk '{print $3}' /etc/mandrake-release` = "Cooker" ];then echo 1; else echo 0; fi)
-#%define build_cooker %(if [[ `cat /etc/mandrake-release|grep Cooker` ]];then echo 1; else echo 0; fi)
-%define build_mdk91 %(if [ `awk '{print $4}' /etc/mandrake-release` = 9.1 ];then echo 1; else echo 0; fi)
-%define build_mdk90 %(if [ `awk '{print $4}' /etc/mandrake-release` = 9.0 ];then echo 1; else echo 0; fi)
-%define build_mdk83 %(if [ `awk '{print $4}' /etc/mandrake-release` = 8.3 ];then echo 1; else echo 0; fi)
-%define build_mdk82 %(if [ `awk '{print $4}' /etc/mandrake-release` = 8.2 ];then echo 1; else echo 0; fi)
-%define build_mdk81 %(if [ `awk '{print $4}' /etc/mandrake-release` = 8.1 ];then echo 1; else echo 0; fi)
-%define build_mdk80 %(if [ `awk '{print $4}' /etc/mandrake-release` = 8.0 ];then echo 1; else echo 0; fi)
-%define build_mdk72 %(if [ `awk '{print $4}' /etc/mandrake-release` = 7.2 ];then echo 1; else echo 0; fi)
-%define build_non_default 0
-
-# Default options
-%define build_acl      1
-%define build_winbind  1
-%define build_wins     1
-%define build_ldap     1
-%define build_ads      1
-
-# Set defaults for each version
-%if %build_mdk91
-%endif
-
-%if %build_mdk90
-%endif
-
-%if %build_mdk83
-%endif
-
-%if %build_mdk82
-%endif
-
-%if %build_mdk81
-%define build_winbind  0
-%define build_wins     0
-%endif
-
-%if %build_mdk80
-%define build_acl      0
-%define build_winbind  0
-%define build_wins     0
-%endif
-
-%if %build_mdk72
-%define build_acl      0
-%define build_winbind  0
-%define build_wins     0
-%endif
-
-# Allow commandline option overrides (borrowed from Vince's qmail srpm):
-# To use it, do rpm [-ba|--rebuild] --with 'xxx'
-# Check if the rpm was built with the defaults, otherwise we inform the user
-%define build_non_default 0
-%{?_with_acl: %{expand: %%define build_acl 1}}
-%{?_with_acl: %{expand: %%define build_non_default 1}}
-%{?_without_acl: %{expand: %%define build_acl 0}}
-%{?_without_acl: %{expand: %%define build_non_default 1}}
-%{?_with_winbind: %{expand: %%global build_winbind 1}}
-%{?_with_winbind: %{expand: %%define build_non_default 1}}
-%{?_without_winbind: %{expand: %%define build_winbind 0}}
-%{?_without_winbind: %{expand: %%define build_non_default 1}}
-%{?_with_wins: %{expand: %%global build_wins 1}}
-%{?_with_wins: %{expand: %%define build_non_default 1}}
-%{?_without_wins: %{expand: %%global build_wins 0}}
-%{?_without_wins: %{expand: %%define build_non_default 1}}
-%{?_with_ldap: %{expand: %%global build_ldap 1}}
-%{?_with_ldap: %{expand: %%define build_non_default 1}}
-%{?_without_ldap: %{expand: %%global build_ldap 0}}
-%{?_without_ldap: %{expand: %%define build_non_default 1}}
-%{?_with_ads: %{expand: %%define build_ads 1}}
-%{?_with_ads: %{expand: %%define build_non_default 1}}
-%{?_without_ads: %{expand: %%define build_ads 0}}
-%{?_without_ads: %{expand: %%define build_non_default 1}}
-
-# As if that weren't enough, we're going to try building with antivirus
-# support as an option also
-%define build_fprot 0
-%define build_kaspersky 0
-%define build_mks 0
-%define build_openantivirus 0
-%define build_sophos 0
-%define build_symantec 0
-%define build_trend 0
-%if %build_vscan
-%{?_with_fprot: %{expand: %%global build_fprot 1}}
-%{?_with_kaspersky: %{expand: %%global build_kaspersky 1}}
-%{?_with_mks: %{expand: %%global build_mks 1}}
-%{?_with_openav: %{expand: %%global build_openantivirus 1}}
-%{?_with_sophos: %{expand: %%global build_sophos 1}}
-%{?_with_symantec: %{expand: %%global build_symantec 1}}
-%{?_with_trend: %{expand: %%global build_trend 1}}
-%define vscandir "samba-vscan-%{vscanver}"
-%endif
-%define vfsdir "examples.bin/VFS"
-
-#Workaround missing macros in 8.x:
-%{!?perl_vendorlib: %{expand: %%global perl_vendorlib %{perl_sitearch}/../}}
-
-Summary: Samba SMB server.
-Name: %{pkg_name}%{samba_major}
-%if %have_pversion && %have_pre
-Version: %{pre_ver}
-%define source_ver %{pversion}
-%endif
-%if %have_pversion && !%have_pre
-Version: %{pversion}
-%define source_ver %{pversion}
-%endif
-%if !%have_pversion
-Version: %{ver}
-%define source_ver %{ver}
-%endif
-%if %have_prelease && !%have_pre
-Release: 1.%{prelease}mdk
-%endif
-%if %have_prelease && %have_pre
-Release: 0.%{pre_pre}.%{prelease}mdk
-%endif
-%if !%have_prelease
-Release: %{rel}
-%endif
-License: GPL
-Group: System/Servers
-Source: ftp://samba.org/pub/samba/samba-%{source_ver}.tar.bz2
-URL:   http://www.samba.org
-Source1: samba.log
-Source3: samba.xinetd
-Source4: swat_48.xpm.bz2
-Source5: swat_32.xpm.bz2
-Source6: swat_16.xpm.bz2
-Source7: README.%{name}-mandrake-rpm
-%if %build_vscan
-Source8: samba-vscan-%{vscanver}.tar.bz2
-%endif
-Source10: samba-print-pdf.sh.bz2
-Patch1: smbw.patch.bz2
-Patch5: samba-2.2.0-gawk.patch.bz2
-Patch12: samba-2.2.0-buildroot.patch.bz2
-Patch17: samba-3.0-smbmount-sbin.patch.bz2
-Requires: pam >= 0.64, samba-common = %{version}
-BuildRequires: pam-devel autoconf readline-devel
-%if %build_acl
-BuildRequires: libacl-devel
-%endif
-%if %build_mdk72
-BuildRequires: cups-devel
-%else
-BuildRequires: libcups-devel
-%endif
-%if %build_ldap
-BuildRequires: libldap-devel
-%endif
-%if %build_ads
-BuildRequires: libldap-devel krb5-devel
-%endif
-BuildRoot: %{_tmppath}/%{name}-root
+Summary: Samba SMB client and server
+Name: samba
+Version: PVERSION
+Release: PRELEASE
+Copyright: GNU GPL version 2
+Group: Networking
+Source: ftp://samba.org/pub/samba/samba-%{version}.tar.gz
+Packager: Gerald (Jerry) Carter [Samba-Team] <jerry@samba.org>
+Requires: pam >= 0.72 kernel >= 2.2.1 glibc >= 2.1.2
+Prereq: chkconfig fileutils
+BuildRoot: /var/tmp/samba
 Prefix: /usr
-Prereq: /sbin/chkconfig /bin/mktemp /usr/bin/killall
-Prereq: fileutils sed /bin/grep
 
 %description
 Samba provides an SMB server which can be used to provide
@@ -216,57 +21,16 @@ in Linux. Samba uses NetBIOS over TCP/IP (NetBT) protocols
 and does NOT need NetBEUI (Microsoft Raw NetBIOS frame)
 protocol.
 
-Samba-3.0 features working NT Domain Control capability and
-includes the SWAT (Samba Web Administration Tool) that
-allows samba's smb.conf file to be remotely managed using your
+Samba-2.2 features working NT Domain Control capability and 
+includes the SWAT (Samba Web Administration Tool) that 
+allows samba's smb.conf file to be remotely managed using your 
 favourite web browser. For the time being this is being
-enabled on TCP port 901 via xinetd. SWAT is now included in
-it's own subpackage, samba-swat.
+enabled on TCP port 901 via inetd.
 
-Please refer to the WHATSNEW.txt document for fixup information.
-This binary release includes encrypted password support.
-
-Please read the smb.conf file and ENCRYPTION.txt in the
-docs directory for implementation details.
-
-%if !%build_system
-NOTE: This is a prerelease of samba-%{samba_major}, not intended
-for production use. If something breaks, file a bug report.
-%endif
-
-%if %build_non_default
-WARNING: This RPM was built with command-line options. Please
-see README.%{name}-mandrake-rpm in the documentation for
-more information.
-%endif
-
-%package server
-URL:   http://www.samba.org
-Summary: Samba (SMB) server programs.
-Requires: %{name}-common = %{version}
-Group: Networking/Other
-Provides: samba
-Obsoletes: samba
-%if %build_system
-Obsoletes: samba-server-ldap
-Obsoletes: samba3-server
-%else
-Provides: samba-server
-%endif
-
-%description server
-Samba-server provides a SMB server which can be used to provide
-network services to SMB (sometimes called "Lan Manager")
-clients. Samba uses NetBIOS over TCP/IP (NetBT) protocols
-and does NOT need NetBEUI (Microsoft Raw NetBIOS frame)
-protocol.
-
-Samba-3.0 features working NT Domain Control capability and
-includes the SWAT (Samba Web Administration Tool) that
-allows samba's smb.conf file to be remotely managed using your
-favourite web browser. For the time being this is being
-enabled on TCP port 901 via xinetd. SWAT is now included in
-it's own subpackage, samba-swat.
+Users are advised to use Samba-2.2 as a Windows NT4
+Domain Controller only on networks that do NOT have a Windows
+NT Domain Controller. This release does NOT as yet have
+Backup Domain control ability.
 
 Please refer to the WHATSNEW.txt document for fixup information.
 This binary release includes encrypted password support.
@@ -274,1419 +38,263 @@ This binary release includes encrypted password support.
 Please read the smb.conf file and ENCRYPTION.txt in the
 docs directory for implementation details.
 
-%if %build_ldap
-This package was compiled with LDAP support, which means that 
-passwords can be stored in LDAP or in smbpasswd files.
-To migrate your passwords from smbpasswd into LDAP, try
-examples/LDAP/import_smbpasswd.pl using:
-%{_datadir}/%{name}/scripts/import_smbpasswd.pl </etc/%{name}/smbpasswd
-
-Scripts for managing users in LDAP have been added to 
-%{_datadir}/%{name}/scripts, configuration is in /etc/%{name}/smbldap_conf.pm
-%endif
-
-%if !%build_system
-NOTE: This is a prerelease of samba-%{samba_major}, not intended
-for production use. If something breaks, file a bug report.
-%endif
-
-%package client
-URL:   http://www.samba.org
-Summary: Samba (SMB) client programs.
-Group: Networking/Other
-Requires: %{name}-common = %{version}
-Obsoletes: smbfs
-%if %build_system
-Obsoletes: samba3-client
-%else
-Provides: samba-client
-%endif
-
-%description client
-Samba-client provides some SMB clients, which complement the built-in
-SMB filesystem in Linux. These allow the accessing of SMB shares, and
-printing to SMB printers.
-
-%if !%build_system
-NOTE: This is a prerelease of samba-%{samba_major}, not intended
-for production use. If something breaks, file a bug report.
-%endif
-
-%package common
-URL:   http://www.samba.org
-Summary: Files used by both Samba servers and clients.
-Group: System/Servers
-%if %build_system
-Obsoletes: samba-common-ldap
-Obsoletes: samba3-common
-%else
-Provides: samba-common
-%endif
-
-%description common
-Samba-common provides files necessary for both the server and client
-packages of Samba.
-
-%if !%build_system
-NOTE: This is a prerelease of samba-%{samba_major}, not intended
-for production use. If something breaks, file a bug report.
-%endif
-
-%package doc
-URL:   http://www.samba.org
-Summary: Documentation for Samba servers and clients.
-Group: System/Servers
-Requires: %{name}-common = %{version}
-%if %build_system
-Obsoletes: samba3-doc
-%else
-Provides: samba-doc
-%endif
-
-%description doc
-Samba-doc provides documentation files for both the server and client
-packages of Samba.
-
-%if !%build_system
-NOTE: This is a prerelease of samba-%{samba_major}, not intended
-for production use. If something breaks, file a bug report.
-%endif
-
-%package swat
-URL:   http://www.samba.org
-Summary: The Samba Web Administration Tool.
-Requires: %{name}-server = %{version}
-Requires: xinetd
-Group: System/Servers
-%if %build_system
-Obsoletes: samba-swat-ldap
-Obsoletes: samba3-swat
-%else
-Provides: samba-swat
-%endif
-
-%description swat
-SWAT (the Samba Web Administration Tool) allows samba's smb.conf file
-to be remotely managed using your favourite web browser. For the time
-being this is being enabled on TCP port 901 via xinetd. Note that
-SWAT does not use SSL encryption, nor does it preserve comments in
-your smb.conf file. Webmin uses SSL encryption by default, and
-preserves comments in configuration files, even if it does not display
-them, and is therefore the preferred method for remotely managing
-Samba.
-
-%if !%build_system
-NOTE: This is a prerelease of samba-%{samba_major}, not intended
-for production use. If something breaks, file a bug report.
-%endif
-
-%if %build_winbind
-%package winbind
-URL:   http://www.samba.org
-Summary: Samba-winbind daemon, utilities and documentation
-Group: System/Servers
-Requires: %{name}-common = %{version}
-%description winbind
-Provides the winbind daemon and testing tools to allow authentication 
-and group/user enumeration from a Windows or Samba domain controller.
-%endif
-
-%if !%build_system
-NOTE: This is a prerelease of samba-%{samba_major}, not intended
-for production use. If something breaks, file a bug report.
-%endif
-
-%if %build_wins
-%package -n nss_wins%{samba_major}
-URL:   http://www.samba.org
-Summary: Name Service Switch service for WINS
-Group: System/Servers
-Requires: %{name}-common = %{version}
-PreReq: glibc
-%description -n nss_wins%{samba_major}
-Provides the libnss_wins shared library which resolves NetBIOS names to 
-IP addresses.
-%endif
-
-%if !%build_system
-NOTE: This is a prerelease of samba-%{samba_major}, not intended
-for production use. If something breaks, file a bug report.
-%endif
-
-#Antivirus packages:
-%if %build_fprot
-%package vscan-fprot
-Summary: On-access virus scanning for samba using FPROT
-Group: System/Servers
-Requires: %{name}-server = %{version}
-Autoreq: 0
-%description vscan-fprot
-A vfs-module for samba to implement on-access scanning using the
-FPROT antivirus software (which must be installed to use this).
-%endif
-
-%if %build_kaspersky
-%package vscan-kaspersky
-Summary: On-access virus scanning for samba using Kaspersky
-Group: System/Servers
-Requires: %{name}-server = %{version}
-Autoreq: 0
-%description vscan-kaspersky
-A vfs-module for samba to implement on-access scanning using the
-Kaspersky antivirus software (which must be installed to use this).
-%endif
-
-%if %build_mks
-%package vscan-mks
-Summary: On-access virus scanning for samba using MKS
-Group: System/Servers
-Requires: %{name}-server = %{version}
-Autoreq: 0
-%description vscan-mks
-A vfs-module for samba to implement on-access scanning using the
-MKS antivirus software (which must be installed to use this).
-%endif
-
-%if %build_openantivirus
-%package vscan-openantivirus
-Summary: On-access virus scanning for samba using OpenAntivirus
-Group: System/Servers
-Requires: %{name}-server = %{version}
-Autoreq: 0
-%description vscan-openantivirus
-A vfs-module for samba to implement on-access scanning using the
-OpenAntivirus antivirus software (which must be installed to use this).
-%endif
-
-%if %build_sophos
-%package vscan-sophos
-Summary: On-access virus scanning for samba using Sophos
-Group: System/Servers
-Requires: %{name}-server = %{version}
-Autoreq: 0
-%description vscan-sophos
-A vfs-module for samba to implement on-access scanning using the
-Sophos antivirus software (which must be installed to use this).
-%endif
+%changelog
+* Mon May 21 2001 Gerald (Jerry) Carter <jerry@samba.org>
+  - removed docs/htmldocs and docs/manpages from /usr/share/docs
+    These het installed in /usr/share/swat already
+  - Fix for codepages and src not getting installed in the RPM
+  - Fixed minor typos
 
-%if %build_symantec
-%package vscan-symantec
-Summary: On-access virus scanning for samba using Symantec
-Group: System/Servers
-Requires: %{name}-server = %{version}
-Autoreq: 0
-%description vscan-symantec
-A vfs-module for samba to implement on-access scanning using the
-Symantec antivirus software (which must be installed to use this).
-%endif
+* Mon Apr 23 2001 Gerald (Jerry) Carter <jerry@samba.org>
+  - Added a few bug fixes to release the first Mandrake RPMS
 
-%if %build_trend
-%package vscan-trend
-Summary: On-access virus scanning for samba using Trend
-Group: System/Servers
-Requires: %{name}-server = %{version}
-Autoreq: 0
-%description vscan-trend
-A vfs-module for samba to implement on-access scanning using the
-Trend antivirus software (which must be installed to use this).
-%endif
+* Sat Apr 14 2001 John H Terpstra <jht@samba.org>
+  - Added official samba-team support for Mandrakesoft
+       - We get a lot of requests for this!
 
 %prep
-# Build a summary of how this RPM was built:
-%if %build_acl
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --with acl"
-%else
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --without acl"
-%endif
-%if %build_winbind
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --with winbind"
-%else
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --without winbind"
-%endif
-%if %build_wins
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --with wins"
-%else
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --without wins"
-%endif
-%if %build_ldap
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --with ldap"
-%else
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --without ldap"
-%endif 
-%if %build_ads
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --with ads"
-%else
-RPM_EXTRA_OPTIONS="$RPM_EXTRA_OPTIONS --without ads"
-%endif
-
-%if %build_non_default
-echo "Building a non-default rpm with the following command-line arguments:"
-echo "$RPM_EXTRA_OPTIONS"
-echo "This rpm was built with non-default options, thus, to build ">%{SOURCE7}
-echo "an identical rpm, you need to supply the following options">>%{SOURCE7}
-echo "at build time: $RPM_EXTRA_OPTIONS">>%{SOURCE7}
-echo -e "\n%{name}-%{version}-%{release}\n">>%{SOURCE7}
-%else 
-echo "This rpm was built with default options">%{SOURCE7}
-echo -e "\n%{name}-%{version}-%{release}\n">>%{SOURCE7}
-%endif
-
-%if %build_vscan
-%setup -q -a 8 -n %{pkg_name}-%{source_ver}
-%else
-%setup -q -n %{pkg_name}-%{source_ver}
-%endif
-%patch1 -p1 -b .smbw
-%patch5 -p1 -b .gawk
-%patch12 -p1 -b .buildroot
-%patch17 -p1 -b .sbin
-cp %{SOURCE7} .
-
-# Make a copy of examples so that we have a clean one for doc:
-cp -a examples examples.bin
-
-%if %build_vscan
-# put antivirus files in examples.bin/VFS/
-for av in fprot kaspersky mks openantivirus sophos symantec trend; do
-       cp -a %{vscandir}/$av %{vfsdir}
-done
-%endif
-
-# Edit some files when not building system samba:
-%if !%build_system
-perl -pi -e 's/%{pkg_name}/%{name}/g' source/auth/pampass.c
-%endif
+%setup
 
 %build
-#%serverbuild
-(cd source
-autoconf
-CPPFLAGS="-I/usr/include/openssl"; export CPPFLAGS
-CFLAGS="$RPM_OPT_FLAGS"
-%configure      --prefix=%{_prefix} \
-                --with-fhs \
-                --libdir=/etc/%{name} \
-                --sysconfdir=/etc/%{name} \
-                --localstatedir=/var \
-                --with-configdir=/etc/%{name} \
-                --with-codepagedir=/var/lib/%{name}/codepages \
-                --with-privatedir=/etc/%{name} \
-                --with-swatdir=%{_datadir}/swat%{samba_major} \
-                --with-smbmount \
-                --with-syslog \
-                --with-automount \
-                --with-pam \
-                --with-vfs \
-                --with-utmp \
-                --with-msdfs \
-                --with-smbwrapper \
-               --with-manpages-langs=en        \
-               --with-logfilebase=/var/log/%{name} \
-               --with-lockdir=/var/cache/%{name} \
-               --with-piddir=/var/run/%{name} \
-%if !%build_system
-               --program-suffix=%{samba_major} \
-%endif         
-%if %build_acl
-               --with-acl-support      \
-%endif
-%if !%build_ldap
-               --with-ldap=no          \
-%endif
-%if !%build_ads
-               --with-ads=no   \
-%endif
-                --with-quotas
-#                --with-pam_smbpass \
-#              --with-manpages-langs=en,ja,pl  \
-
-#make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE" all
-make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" \
-       all smbfilter smbwrapper smbcacls pam_smbpass nsswitch nsswitch/libnss_wins.so debug2html
-# Build VFS modules (experimental)
-cd ../%vfsdir
-%configure     --prefix=%{prefix} \
-               --mandir=%{prefix}/share/man
-make
-#make CFLAGS="$RPM_OPT_FLAGS -I../../source -I../../source/include -I../../source/ubiqx \
-#      -I../../source/smbwrapper -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
-)
+cd source
 
-# Build mkntpasswd in examples/LDAP/ for smbldaptools
-(
-cd examples.bin/LDAP/smbldap-tools/mkntpwd
-make
-)
-
-# Build antivirus vfs objects:
-%if %build_fprot
-echo "Building fprot"
-%endif
-%if %build_kaspersky
-echo "Building Kaspersky"
-(cd %{vfsdir}/kaspersky;make)
-%endif
-%if %build_mks
-echo "Building mks"
-(cd %{vfsdir}/mks;make)
-%endif
-%if %build_openantivirus
-echo "Building OpenAntivirus"
-(cd %{vfsdir}/openantivirus;make)
-%endif
-%if %build_sophos
-echo "building sophos"
-(cd %{vfsdir}/sophos;make)
-%endif
-%if %build_symantec
-echo "Building symantec"
-(cd %{vfsdir}/symantec;make)
-%endif
-%if %build_trend
-echo "Building Trend"
-(cd %{vfsdir}/trend;make)
-%endif
+%ifarch ia64
+libtoolize --copy --force     # get it to recognize IA-64
+autoconf
+autoheader
+EXTRA="-D_LARGEFILE64_SOURCE"
+%endif
+
+NUMCPU=`grep processor /proc/cpuinfo | wc -l`
+
+CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \
+       --prefix=%{prefix} \
+       --with-fhs \
+       --libdir=/etc/samba \
+       --localstatedir=/var \
+       --with-codepagedir=%{prefix}/share/samba/codepages \
+       --with-configdir=/etc/samba \
+       --with-lockdir=/var/lock/samba \
+       --with-swatdir=%{prefix}/share/swat \
+       --with-quotas \
+       --with-smbmount \
+       --with-pam \
+       --with-pam_smbpass \
+       --with-syslog \
+       --with-utmp \
+       --with-netatalk \
+       --with-sambabook=%{prefix}/share/swat/using_samba
+
+make -j${NUMCPU} proto
+make -j${NUMCPU} all smbfilter nsswitch/libnss_wins.so debug2html
 
 %install
 rm -rf $RPM_BUILD_ROOT
 mkdir -p $RPM_BUILD_ROOT
-
-# Any entries here mean samba makefile is *really* broken:
-mkdir -p $RPM_BUILD_ROOT/etc/%{name}
-mkdir -p $RPM_BUILD_ROOT/%{_datadir}
-
-(cd source
-make DESTDIR=$RPM_BUILD_ROOT install)
-
-#need to stay
-mkdir -p $RPM_BUILD_ROOT/sbin
-mkdir -p $RPM_BUILD_ROOT/etc/{logrotate.d,pam.d,xinetd.d}
+mkdir -p $RPM_BUILD_ROOT/etc/{logrotate.d,pam.d,samba,xinetd.d}
+mkdir -p $RPM_BUILD_ROOT/etc/samba/security
 mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
-mkdir -p $RPM_BUILD_ROOT/var/cache/%{name}
-mkdir -p $RPM_BUILD_ROOT/var/log/%{name}
-mkdir -p $RPM_BUILD_ROOT/var/run/%{name}
-mkdir -p $RPM_BUILD_ROOT/var/spool/%{name}
-mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/{netlogon,profiles,printers}
-mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/printers/{W32X86,WIN40,W32ALPHA,W32MIPS,W32PPC}
-mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/codepages/src
 mkdir -p $RPM_BUILD_ROOT/lib/security
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib
-mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name}/vfs
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/scripts
-
-#smbwrapper and pam_winbind not handled by make, pam_smbpass.so doesn't build
-install -m 755 source/bin/smbwrapper.so $RPM_BUILD_ROOT%{_libdir}/smbwrapper%{samba_major}.so
-#install -m 755 source/bin/pam_smbpass.so $RPM_BUILD_ROOT/lib/security/pam_smbpass.so
-install -m 755 source/nsswitch/pam_winbind.so $RPM_BUILD_ROOT/lib/security/pam_winbind%{samba_major}.so
-
-# Install VFS modules
-#install -m755 %vfsdir/audit.so $RPM_BUILD_ROOT/%{_libdir}/samba/vfs
-#for i in block recycle
-#do
-# install -m755 %vfsdir/$i/$i.so $RPM_BUILD_ROOT/%{_libdir}/samba/vfs
-#done
-
-# Antivirus support:
-#      mkdir -p $RPM_BUILD_ROOT%{_libdir}/samba/vfs/vscan
-       for av in fprotd kavp mksd oav sophos symantec trend; do
-               if [ -d %{vfsdir}/$av -a -e %{vfsdir}/$av/vscan-$av.so ];then
-                       cp %{vfsdir}/$av/vscan-$av.so \
-                               $RPM_BUILD_ROOT%{_libdir}/samba/vfs/
-               fi
-       done
-       
-#These scripts are not handled by make:
-#for i in addtosmbpass mksmbpasswd.sh smbtar convert_smbpasswd
-for i in addtosmbpass mksmbpasswd.sh convert_smbpasswd
+mkdir -p $RPM_BUILD_ROOT%{prefix}/{bin,sbin}
+mkdir -p $RPM_BUILD_ROOT/home/samba
+mkdir -p $RPM_BUILD_ROOT/sbin
+mkdir -p $RPM_BUILD_ROOT%{prefix}/share/swat/{images,help,include}
+mkdir -p $RPM_BUILD_ROOT%{prefix}/share/samba/codepages/src 
+mkdir -p $RPM_BUILD_ROOT%{prefix}/share/swat/using_samba/{figs,gifs}
+mkdir -p $RPM_BUILD_ROOT%{prefix}/share/man/{man1,man5,man7,man8}
+mkdir -p $RPM_BUILD_ROOT/var/lock/samba
+mkdir -p $RPM_BUILD_ROOT/var/log/samba
+mkdir -p $RPM_BUILD_ROOT/var/spool/samba
+
+# Install standard binary files
+for i in nmblookup smbclient smbpasswd smbstatus testparm testprns \
+   make_smbcodepage make_unicodemap make_printerdef rpcclient smbspool \
+   smbmount smbumount smbmnt
 do
-  install -m755 source/script/$i $RPM_BUILD_ROOT/%{_bindir}
+       install -m755 -s source/bin/$i $RPM_BUILD_ROOT%{prefix}/bin
 done
-
-#libnss_* not handled by make:
-# Install the nsswitch library extension file
-for i in wins winbind; do
-  install -m755 source/nsswitch/libnss_${i}.so $RPM_BUILD_ROOT/lib/libnss_${i}%{samba_major}.so
+for i in smbtar
+do
+       install -m755 source/script/$i $RPM_BUILD_ROOT%{prefix}/bin
 done
-# Make link for wins and winbind resolvers
-( cd $RPM_BUILD_ROOT/lib; ln -s libnss_wins%{samba_major}.so libnss_wins%{samba_major}.so.2; ln -s libnss_winbind%{samba_major}.so libnss_winbind%{samba_major}.so.2)
-
-# Install other stuff
-
-#        install -m644 examples/VFS/recycle/recycle.conf $RPM_BUILD_ROOT/etc/samba/
-        install -m644 packaging/Mandrake/smb.conf $RPM_BUILD_ROOT/etc/%{name}/smb.conf
-        install -m644 packaging/Mandrake/smbusers $RPM_BUILD_ROOT/etc/%{name}/smbusers
-        install -m755 packaging/Mandrake/smbprint $RPM_BUILD_ROOT/%{_bindir}
-        #install -m755 packaging/RedHat/smbadduser $RPM_BUILD_ROOT/usr/bin
-        install -m755 packaging/Mandrake/findsmb $RPM_BUILD_ROOT/%{_bindir}
-        install -m755 packaging/Mandrake/smb.init $RPM_BUILD_ROOT/etc/rc.d/init.d/smb%{samba_major}
-        install -m755 packaging/Mandrake/smb.init $RPM_BUILD_ROOT/%{_sbindir}/%{name}
-       install -m755 packaging/Mandrake/winbind.init $RPM_BUILD_ROOT/etc/rc.d/init.d/winbind%{samba_major}
-       install -m755 packaging/Mandrake/winbind.init $RPM_BUILD_ROOT/%{_sbindir}/winbind%{samba_major}
-        install -m644 packaging/Mandrake/samba.pamd $RPM_BUILD_ROOT/etc/pam.d/%{name}
-       install -m644 packaging/Mandrake/system-auth-winbind.pamd $RPM_BUILD_ROOT/etc/pam.d/system-auth-winbind%{samba_major}
-#
-        install -m644 $RPM_SOURCE_DIR/samba.log $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
-#      install -m644 packaging/Mandrake/samba-slapd-include.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/samba-slapd.include
-
-# Install smbldap-tools scripts:
-#for i in examples/LDAP/smbldap-tools/*.pl; do
-#      install -m 750 $i $RPM_BUILD_ROOT/%{_datadir}/%{name}/scripts/
-#done
-
-#install -m 750 examples/LDAP/smbldap-tools/smbldap_tools.pm $RPM_BUILD_ROOT/%{_datadir}/%{name}/scripts/
-
-# The conf file        
-#install -m 640 examples/LDAP/smbldap-tools/smbldap_conf.pm $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}
-
-# Link both smbldap*.pm into vendor-perl (any better ideas?)
-#mkdir -p %{buildroot}/%{perl_vendorlib}
-#ln -s %{_sysconfdir}/%{name}/smbldap_conf.pm $RPM_BUILD_ROOT/%{perl_vendorlib}
-#ln -s %{_datadir}/%{name}/scripts/smbldap_tools.pm $RPM_BUILD_ROOT/%{perl_vendorlib}
-
-#mkntpwd
-#install -m750 examples.bin/LDAP/smbldap-tools/mkntpwd/mkntpwd %{buildroot}/%{_sbindir}
-
-# Samba smbpasswd migration script:
-install -m700 examples/LDAP/export_smbpasswd.pl $RPM_BUILD_ROOT/%{_datadir}/%{name}/scripts/
-install -m700 examples/LDAP/import_smbpasswd.pl $RPM_BUILD_ROOT/%{_datadir}/%{name}/scripts/
-
-
-
-# make a conf file for winbind from the default one:
-       cat packaging/Mandrake/smb.conf|sed -e  's/^;  winbind/  winbind/g;s/^;  obey pam/  obey pam/g; s/^;   printer admin = @"D/   printer admin = @"D/g;s/^;   password server = \*/   password server = \*/g;s/^;  template/  template/g; s/^   security = user/   security = domain/g' > packaging/Mandrake/smb-winbind.conf
-        install -m644 packaging/Mandrake/smb-winbind.conf $RPM_BUILD_ROOT/etc/%{name}/smb-winbind.conf
 
-# Link smbmount to /sbin/mount.smb and /sbin/mount.smbfs
-#I don't think it's possible for make to do this ...
-        ln -s $RPM_BUILD_ROOT/%{_bindir}/smbmount%{samba_major} $RPM_BUILD_ROOT/sbin/mount.smb%{samba_major}
-        ln -s $RPM_BUILD_ROOT/%{_bindir}/smbmount%{samba_major} $RPM_BUILD_ROOT/sbin/mount.smbfs%{samba_major}
-        echo 127.0.0.1 localhost > $RPM_BUILD_ROOT/etc/%{name}/lmhosts
-
-# Link smbspool to CUPS (does not require installed CUPS)
-
-        mkdir -p $RPM_BUILD_ROOT/%{_libdir}/cups/backend
-        ln -s %{_bindir}/smbspool $RPM_BUILD_ROOT/%{_libdir}/cups/backend/smb%{samba_major}
-
-# xinetd support
-
-        mkdir -p $RPM_BUILD_ROOT/etc/xinetd.d
-        install -m644 %{SOURCE3} $RPM_BUILD_ROOT/etc/xinetd.d/swat%{samba_major}
+# Install secure binary files
+for i in smbd nmbd swat debug2html smbfilter
+do
+       install -m755 -s source/bin/$i $RPM_BUILD_ROOT%{prefix}/sbin
+done
 
-# menu support
+# we need a symlink for mount to recognise the smb and smbfs filesystem types
+ln -sf %{prefix}/bin/smbmount $RPM_BUILD_ROOT/sbin/mount.smbfs
+ln -sf %{prefix}/bin/smbmount $RPM_BUILD_ROOT/sbin/mount.smb
 
-mkdir -p $RPM_BUILD_ROOT%{_menudir}
-cat > $RPM_BUILD_ROOT%{_menudir}/%{name} << EOF
-?package(%{name}):command="gnome-moz-remote http://localhost:901/" needs="gnome" \
-icon="swat%{samba_major}.xpm" section="Configuration/Networking" title="Samba Configuration" \
-longtitle="The Swat Samba Administration Tool"
-?package(%{name}):command="sh -c '\$BROWSER http://localhost:901/'" needs="x11" \
-icon="swat%{samba_major}.xpm" section="Configuration/Networking" title="Samba Configuration" \
-longtitle="The Swat Samba Administration Tool"
-EOF
+# Install codepage source files
+for i in 437 737 775 850 852 861 866 932 936 949 950 1251; do
+       install -m644 source/codepages/codepage_def.$i $RPM_BUILD_ROOT%{prefix}/share/samba/codepages/src
+done
+for i in 437 737 850 852 861 866 932 936 949 950 ISO8859-1 ISO8859-2 ISO8859-5 ISO8859-7 KOI8-R; do
+       install -m644 source/codepages/CP$i.TXT $RPM_BUILD_ROOT%{prefix}/share/samba/codepages/src
+done
 
-mkdir -p $RPM_BUILD_ROOT%{_liconsdir} $RPM_BUILD_ROOT%{_iconsdir} $RPM_BUILD_ROOT%{_miconsdir}
+# Install the nsswitch library extenstion file
+install -m755 source/nsswitch/libnss_wins.so $RPM_BUILD_ROOT/lib
+# Make link for wins resolver
+( cd $RPM_BUILD_ROOT/lib; ln -s libnss_wins.so libnss_wins.so.2; )
 
-bzcat %{SOURCE4} > $RPM_BUILD_ROOT%{_liconsdir}/swat%{samba_major}.xpm
-bzcat %{SOURCE5} > $RPM_BUILD_ROOT%{_iconsdir}/swat%{samba_major}.xpm
-bzcat %{SOURCE6} > $RPM_BUILD_ROOT%{_miconsdir}/swat%{samba_major}.xpm
+# PAM Authentication file
+install -m755 source/bin/pam_smbpass.so $RPM_BUILD_ROOT/lib/security
 
-bzcat %{SOURCE10}> $RPM_BUILD_ROOT%{_datadir}/%{name}/scripts/print-pdf
+# Install SWAT helper files
+for i in swat/help/*.html docs/htmldocs/*.html; do
+       install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/help
+done
+for i in swat/images/*.gif; do
+       install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/images
+done
+for i in swat/include/*.html; do
+       install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/include
+done
 
-# Fix configs when not building system samba:
-%if !%build_system
-# Work around non-existent but claimed --program-suffix support :-(
-for dir in %{_sbindir} %{_bindir};do
-    FILES=`find %{buildroot}$dir -type f |grep -v "\."|grep -v %{samba_major}$`
-    for OLD in $FILES; do
-        NEW=`echo ${OLD}%{samba_major}`
-        mv $OLD $NEW
-    done
+# This is the O'Reily Samba Book - on-line
+for i in docs/htmldocs/using_samba/*.html; do
+       install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/using_samba
 done
-# And the man pages too:
-FILES=`find %{buildroot}%{_mandir} -type f `
-for OLD in $FILES; do
-    BASE=`perl -e '$name="'${OLD}'"; print "",($name =~ /(.*?)\.[0-9]/), "\n";'`
-    EXT=`echo $OLD|sed -e 's,'${BASE}',,g'`
-    NEW=`echo ${BASE}%{samba_major}${EXT}`
-    mv $OLD $NEW
-done           
-# Replace paths in config files and init scripts:
-for i in smb winbind;do
-       perl -pi -e 's,/subsys/'$i',/subsys/'$i'%{samba_major},g' $RPM_BUILD_ROOT/etc/rc.d/init.d/${i}%{samba_major}
+for i in docs/htmldocs/using_samba/figs/*.gif; do
+       install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/using_samba/figs
 done
-for i in /etc/%{name}/smb.conf /etc/rc.d/init.d/smb%{samba_major} %{_sbindir}/%{name} /etc/rc.d/init.d/winbind%{samba_major} %{_sbindir}/winbind%{samba_major} /etc/logrotate.d/%{name} /etc/xinetd.d/swat%{samba_major}; do
-       perl -pi -e 's,/%{pkg_name},/%{name},g; s,smbd,%{_sbindir}/smbd%{samba_major},g; s,nmbd,%{_sbindir}/nmbd%{samba_major},g; s,winbindd,%{_sbindir}/winbindd%{samba_major},g; s,/usr/sbin/swat,%{_sbindir}/swat%{samba_major},g' $RPM_BUILD_ROOT/$i;
+for i in docs/htmldocs/using_samba/gifs/*.gif; do
+       install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/using_samba/gifs
 done
-# Fix pam files
-perl -pi -e 's/winbind/winbind%{samba_major}/g' $RPM_BUILD_ROOT/etc/pam.d/system-auth-winbind%{samba_major}
-# Fix xinetd file for swat:
-perl -pi -e 's,/usr/sbin,%{_sbindir},g' $RPM_BUILD_ROOT/etc/xinetd.d/swat%{samba_major}
-%endif
 
-%clean
-rm -rf $RPM_BUILD_ROOT
+# Install the miscellany
+install -m644 swat/README $RPM_BUILD_ROOT%{prefix}/share/swat
+# Install level 1 man pages
+for i in *.1; do
+       install -m644 docs/manpages/$i $RPM_BUILD_ROOT%{prefix}/share/man/man1
+done
+install -m644 docs/manpages/smb.conf.5 $RPM_BUILD_ROOT%{prefix}/share/man/man5
+install -m644 docs/manpages/lmhosts.5 $RPM_BUILD_ROOT%{prefix}/share/man/man5
+install -m644 docs/manpages/smbpasswd.5 $RPM_BUILD_ROOT%{prefix}/share/man/man5
+
+install -m644 docs/manpages/samba.7 $RPM_BUILD_ROOT%{prefix}/share/man/man7
+
+install -m644 docs/manpages/smbd.8 $RPM_BUILD_ROOT%{prefix}/share/man/man8
+install -m644 docs/manpages/nmbd.8 $RPM_BUILD_ROOT%{prefix}/share/man/man8
+install -m644 docs/manpages/smbpasswd.8 $RPM_BUILD_ROOT%{prefix}/share/man/man8
+install -m644 docs/manpages/swat.8 $RPM_BUILD_ROOT%{prefix}/share/man/man8
+install -m644 docs/manpages/smbmount.8 $RPM_BUILD_ROOT%{prefix}/share/man/man8
+install -m644 docs/manpages/smbmnt.8 $RPM_BUILD_ROOT%{prefix}/share/man/man8
+install -m644 docs/manpages/smbumount.8 $RPM_BUILD_ROOT%{prefix}/share/man/man8
+install -m644 docs/manpages/smbspool.8 $RPM_BUILD_ROOT%{prefix}/share/man/man8
+
+install -m644 swat/README $RPM_BUILD_ROOT%{prefix}/share/swat
+
+install -m644 packaging/Mandrake/smb.con* $RPM_BUILD_ROOT/etc/samba/
+install -m644 packaging/Mandrake/smbusers $RPM_BUILD_ROOT/etc/samba/smbusers
+install -m755 packaging/Mandrake/smbprint $RPM_BUILD_ROOT%{prefix}/bin
+install -m755 packaging/Mandrake/findsmb $RPM_BUILD_ROOT%{prefix}/bin
+install -m755 packaging/Mandrake/smb.init $RPM_BUILD_ROOT/etc/rc.d/init.d/smb
+install -m755 packaging/Mandrake/smb.init $RPM_BUILD_ROOT%{prefix}/sbin/samba
+install -m644 packaging/Mandrake/samba.pamd $RPM_BUILD_ROOT/etc/pam.d/samba
+install -m644 packaging/Mandrake/samba.log $RPM_BUILD_ROOT/etc/logrotate.d/samba
+install -m644 packaging/Mandrake/samba.xinetd $RPM_BUILD_ROOT/etc/xinetd.d/swat
+echo 127.0.0.1 localhost > $RPM_BUILD_ROOT/etc/samba/lmhosts
+
+##
+## remove these directories so they don't get installed twice
+##
+/bin/rm -rf docs/htmldocs
+/bin/rm -rf docs/manpages
 
-%post server
 
-/sbin/chkconfig --level 35 smb%{samba_major} on
+%clean
+rm -rf $RPM_BUILD_ROOT
 
-# Add a unix group for samba machine accounts
-groupadd -frg 421 machines
+%post
+/sbin/chkconfig --add smb
+/sbin/chkconfig smb off
 
-# Migrate tdb's from /var/lock/samba (taken from official samba spec file):
-for i in /var/lock/samba/*.tdb
+# Build codepage load files
+cd %{prefix}/share/samba/codepages
+for i in 437 737 775 850 852 861 866 932 936 949 950 1251
 do
-if [ -f $i ]; then
-       newname=`echo $i | sed -e's|var\/lock\/samba|var\/cache\/samba|'`
-       echo "Moving $i to $newname"
-       mv $i $newname
-fi
+%{prefix}/bin/make_smbcodepage c $i %{prefix}/share/samba/codepages/src/codepage_def.$i %{prefix}/share/samba/codepages/codepage.$i
 done
-
-# Remove the transient tdb files (modified from version in off. samba spec:
-for TDB in brlock unexpected locking messages; do
-        if [ -e /var/cache/%{name}/$TDB.tdb ]; then
-                rm -f /var/cache/%{name}/$TDB.tdb;
-        fi;
+for i in 437 737 850 852 861 866 932 936 949 950 ISO8859-1 ISO8859-2 ISO8859-5 ISO8859-7 KOI8-R
+do
+%{prefix}/bin/make_unicodemap $i %{prefix}/share/samba/codepages/src/CP$i.TXT %{prefix}/share/samba/codepages/unicode_map.$i
 done
 
-if [ -d /var/lock/samba ]; then
-        rm -rf /var/lock/samba
-fi
-
-%post common
-# Basic migration script for pre-2.2.1 users,
-# since smb config moved from /etc to /etc/samba
-
-# Let's create a proper /etc/samba/smbpasswd file
-[ -f /etc/%{name}/smbpasswd ] || {
-       echo "Creating password file for samba..."
-       touch /etc/%{name}/smbpasswd
-}
-
-# And this too, in case we don't have smbd to create it for us
-[ -f /var/cache/%{name}/unexpected.tdb ] || {
-       touch /var/cache/%{name}/unexpected.tdb
-}
-
-# Let's define the proper paths for config files
-perl -pi -e 's/(\/etc\/)(smb)/\1%{name}\/\2/' /etc/%{name}/smb.conf
-
-# Fix the logrotate.d file from smb and nmb to smbd and nmbd
-if [ -f /etc/logrotate.d/samba ]; then
-        perl -pi -e 's/smb /smbd /' /etc/logrotate.d/samba
-        perl -pi -e 's/nmb /nmbd /' /etc/logrotate.d/samba
+# Add swat entry to /etc/services if not already there
+if !( grep ^[:space:]*swat /etc/services > /dev/null ) then
+       echo 'swat              901/tcp                         # Add swat service used via inetd' >> /etc/services
 fi
 
-# And not loose our machine account SID
-[ -f /etc/MACHINE.SID ] && mv -f /etc/MACHINE.SID /etc/%{name}/ ||:
-
-%if %build_winbind
-%post winbind
-if [ $1 = 1 ]; then
-    /sbin/chkconfig winbind%{samba_major} on
-    cp -af /etc/nsswitch.conf /etc/nsswitch.conf.rpmsave
-    cp -af /etc/nsswitch.conf /etc/nsswitch.conf.rpmtemp
-    for i in passwd group;do
-        grep ^$i /etc/nsswitch.conf |grep -v 'winbind%{samba_major}' >/dev/null
-        if [ $? = 0 ];then
-            echo "Adding a winbind%{samba_major} entry to the $i section of /etc/nsswitch.conf"
-            awk '/^'$i'/ {print $0 " winbind%{samba_major}"};!/^'$i'/ {print}' /etc/nsswitch.conf.rpmtemp >/etc/nsswitch.conf;
-           cp -af /etc/nsswitch.conf /etc/nsswitch.conf.rpmtemp
-        else
-            echo "$i entry found in /etc/nsswitch.conf"
-        fi
-    done
-    if [ -f /etc/nsswitch.conf.rpmtemp ];then rm -f /etc/nsswitch.conf.rpmtemp;fi
-fi
-
-%preun winbind
-if [ $1 = 0 ]; then
-       echo "Removing winbind%{samba_major} entries from /etc/nsswitch.conf"
-       perl -pi -e 's/ winbind%{samba_major}//' /etc/nsswitch.conf
-
-       /sbin/chkconfig winbind%{samba_major} reset
-fi
-%endif %build_winbind
+%preun
+if [ $1 = 0 ] ; then
+    /sbin/chkconfig --del smb
 
-%if %build_wins
-%post -n nss_wins%{samba_major}
-if [ $1 = 1 ]; then
-    cp -af /etc/nsswitch.conf /etc/nsswitch.conf.rpmsave
-    grep '^hosts' /etc/nsswitch.conf |grep -v 'wins%{samba_major}' >/dev/null
-    if [ $? = 0 ];then
-        echo "Adding a wins entry to the hosts section of /etc/nsswitch.conf"
-        awk '/^hosts/ {print $0 " wins%{samba_major}"};!/^hosts/ {print}' /etc/nsswitch.conf.rpmsave >/etc/nsswitch.conf;
-    else
-        echo "wins entry found in /etc/nsswitch.conf"
+    # We want to remove the browse.dat file
+    if [ -e /var/lock/samba/browse.dat ]; then
+           rm -f /var/lock/samba/browse.dat
     fi
-#    else
-#        echo "Upgrade, leaving nsswitch.conf intact"
-fi
-
-%preun -n nss_wins%{samba_major}
-if [ $1 = 0 ]; then
-       echo "Removing wins entry from /etc/nsswitch.conf"
-       perl -pi -e 's/ wins%{samba_major}//' /etc/nsswitch.conf
-#else
-#      echo "Leaving /etc/nsswitch.conf intact"
 fi
-%endif %build_wins
-
-%preun
-
-/sbin/chkconfig --level 35 smb%{samba_major} reset
 
+%postun
+# Only delete remnants of samba if this is the final deletion.
 if [ $1 = 0 ] ; then
-%_preun_service smb%{samba_major}
-#    /sbin/chkconfig --level 35 smb reset
-# Let's not loose /var/cache/samba
-
-#    for i in browse.dat wins.dat brlock.tdb unexpected.tdb connections.tdb \
-#locking.tdb messages.tdb;do
-#        if [ -e /var/cache/samba/$i ]; then
-#                mv -f /var/cache/samba/$i /var/cache/samba/$i.BAK
-#        fi;
-#    done
-    if [ -d /var/log/%{name} ]; then
-      rm -rf /var/log/%{name}/*
+    if [ -x /etc/pam.d/samba ]; then
+      rm -f /etc/pam.d/samba
     fi
-    if [ -d /var/cache/%{name} ]; then
-      mv -f /var/cache/%{name} /var/cache/%{name}.BAK
+    if [ -e /var/log/samba ]; then
+      rm -rf /var/log/samba
+    fi
+    if [ -e /var/lock/samba ]; then
+      rm -rf /var/lock/samba
     fi
-fi
-
-%post swat
-if [ -f /var/lock/subsys/xinetd ]; then
-        service xinetd reload >/dev/null 2>&1 || :
-fi
-%update_menus
-
-%postun swat
 
-# Remove swat entry from xinetd
-if [ $1 = 0 -a -f /etc/xinetd.conf ] ; then
-rm -f /etc/xinetd.d/swat%{samba_major}
-       service xinetd reload &>/dev/null || :
+    # Remove swat entries from /etc/inetd.conf and /etc/services
+    cd /etc
+    tmpfile=/etc/tmp.$$
+    sed -e '/^[:space:]*swat.*$/d' /etc/services > $tmpfile
+    mv $tmpfile services
 fi
 
-if [ "$1" = "0" -a -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi
-
-%clean_menus
-
-%triggerpostun -- samba < 1.9.18p7
-
-if [ $1 != 0 ]; then
-    /sbin/chkconfig --level 35 smb on
+%triggerpostun -- samba < samba-2.0.0
+if [ $0 != 0 ]; then
+    /sbin/chkconfig --add smb
 fi
 
-%triggerpostun -- samba < 2.0.5a-3, samba >= 2.0.0
-
-if [ $1 != 0 ]; then
-        [ ! -d /var/lock/samba ] && mkdir -m 0755 /var/lock/samba ||:
-        [ ! -d /var/spool/samba ] && mkdir -m 1777 /var/spool/samba ||:
-        [ -f /etc/inetd.conf ] && chmod 644 /etc/services /etc/inetd.conf ||:
-fi
-
-%files server
-%defattr(-,root,root)
-#%attr(-,root,root) /sbin/*
-%{_sbindir}/%{name}
-%{_sbindir}/smbd%{samba_major}
-%{_sbindir}/nmbd%{samba_major}
-#%{_sbindir}/smbcontrol
-#%{_sbindir}/mkntpwd
-#%{prefix}/bin/addtosmbpass
-%{_bindir}/mksmbpasswd.sh
-%{_bindir}/smbstatus%{samba_major}
-%{_bindir}/convert_smbpasswd%{samba_major}
-%{_bindir}/pdbedit%{samba_major}
-%{_bindir}/smbgroupedit%{samba_major}
-#%attr(755,root,root) /lib/security/pam_smbpass*
-#/usr/share/swat
-%attr(-,root,root) %config(noreplace) /etc/%{name}/smbusers
-%attr(-,root,root) %config /etc/rc.d/init.d/smb%{samba_major}
-%attr(-,root,root) %config(noreplace) /etc/logrotate.d/%{name}
-%attr(-,root,root) %config(noreplace) /etc/pam.d/%{name}
-#%attr(-,root,root) %config(noreplace) /etc/%{name}/samba-slapd.include
-%{_mandir}/man1/smbstatus*.1*
-%{_mandir}/man5/smbpasswd*.5*
-%{_mandir}/man7/samba*.7*
-%{_mandir}/man8/smbd*.8*
-%{_mandir}/man8/nmbd*.8*
-%{_mandir}/man1/smbcontrol*.1*
-%{_mandir}/man5/lmhosts*.5*
-%{_mandir}/man5/smb.conf*.5*
-%attr(775,root,root) %dir /var/lib/%{name}/netlogon
-%attr(775,root,root) %dir /var/lib/%{name}/profiles
-%attr(775,root,root) %dir /var/lib/%{name}/printers/*
-%dir /var/cache/%{name}
-%dir /var/log/%{name}
-%attr(1777,root,root) %dir /var/spool/%{name}
-%dir %{_datadir}/%{name}/scripts
-%attr(0755,root,root) %{_datadir}/%{name}/scripts/print-pdf
-#%attr(0750,root,root) %{_datadir}/%{name}/scripts/smbldap*.pl
-#%attr(0640,root,root) %config(noreplace) %{_sysconfdir}/%{name}/smbldap_conf.pm
-#%attr(0644,root,root) %{_datadir}/%{name}/scripts/smbldap_tools.pm
-#%{perl_vendorlib}/*.pm
-%attr(0700,root,root) %{_datadir}/%{name}/scripts/*port_smbpasswd.pl
-
-
-%files doc
-%defattr(-,root,root)
+%files
 %doc README COPYING Manifest Read-Manifest-Now
 %doc WHATSNEW.txt Roadmap
-%doc README.%{name}-mandrake-rpm
 %doc docs
-%doc examples
 %doc swat/README
-%attr(-,root,root) %{_datadir}/swat%{samba_major}/using_samba/*
-
-%files swat
-%defattr(-,root,root)
-%config(noreplace) /etc/xinetd.d/swat%{samba_major}
-#%attr(-,root,root) /sbin/*
-%{_sbindir}/swat%{samba_major}
-%{_menudir}/%{name}
-%{_miconsdir}/*.xpm
-%{_liconsdir}/*.xpm
-%{_iconsdir}/*.xpm
-%attr(-,root,root) %{_datadir}/swat%{samba_major}/help/*
-%attr(-,root,root) %{_datadir}/swat%{samba_major}/images/*
-%attr(-,root,root) %{_datadir}/swat%{samba_major}/include/*
-%{_mandir}/man8/swat*.8*
-
-%files client
-%defattr(-,root,root)
-%ifnarch alpha
-/sbin/mount.smb%{samba_major}
-/sbin/mount.smbfs%{samba_major}
-%attr(755,root,root) %{_bindir}/smbmount%{samba_major}
-%attr(4755,root,root) %{_bindir}/smbumount%{samba_major}
-#%attr(4755,root,root) %{_sbindir}/smbmnt
-%{_mandir}/man8/smbmnt*.8*
-%{_mandir}/man8/smbmount*.8*
-%{_mandir}/man8/smbumount*.8*
-%endif
-%{_bindir}/nmblookup%{samba_major}
-%{_bindir}/findsmb%{samba_major}
-%{_bindir}/smbclient%{samba_major}
-%{_bindir}/smbprint%{samba_major}
-%{_bindir}/smbtar%{samba_major}
-%{_bindir}/smbspool%{samba_major}
-# Link of smbspool to CUPS
-/%{_libdir}/cups/backend/smb%{samba_major}
-/%{_mandir}/man1/nmblookup*.1*
-/%{_mandir}/man1/findsmb*.1*
-/%{_mandir}/man1/smbclient*.1*
-/%{_mandir}/man1/smbtar*.1*
-
-%files common
-%defattr(-,root,root)
-%dir /var/cache/%{name}
-%dir /var/log/%{name}
-%dir /var/run/%{name}
-%{_bindir}/testparm%{samba_major}
-%{_bindir}/testprns%{samba_major}
-%{_bindir}/rpcclient%{samba_major}
-%{_bindir}/smbsh%{samba_major}
-%{_bindir}/smbpasswd%{samba_major}
-%{_bindir}/net%{samba_major}
-%{_bindir}/smbtree%{samba_major}
-%{_libdir}/smbwrapper%{samba_major}.so
-%attr(-,root,root) %config(noreplace) /etc/%{name}/smb.conf
-%attr(-,root,root) %config(noreplace) /etc/%{name}/smb-winbind.conf
-%attr(-,root,root) %config(noreplace) /etc/%{name}/lmhosts
-%attr(-,root,root) /var/lib/%{name}/codepages
-%{_mandir}/man1/testparm*.1*
-%{_mandir}/man1/smbsh*.1*
-%{_mandir}/man1/testprns*.1*
-%{_mandir}/man5/smb.conf*.5*
-%{_mandir}/man5/lmhosts*.5*
-%{_mandir}/man8/smbpasswd*.8*
-/%{_mandir}/man1/smbcacls*.1*
-
-%if %build_winbind
-%files winbind
-%defattr(-,root,root)
-%{_sbindir}/winbindd%{samba_major}
-%{_bindir}/wbinfo%{samba_major}
-%attr(755,root,root) /lib/security/pam_winbind*
-%attr(755,root,root) /lib/libnss_winbind%{samba_major}*
-%attr(-,root,root) %config /etc/rc.d/init.d/winbind%{samba_major}
-%attr(-,root,root) %config(noreplace) /etc/pam.d/system-auth-winbind*
-%{_mandir}/man8/winbindd*.8*
-%{_mandir}/man1/wbinfo*.1*
-%endif
-
-%if %build_wins
-%files -n nss_wins%{samba_major}
-%defattr(-,root,root)
-%attr(755,root,root) /lib/libnss_wins%{samba_major}.so*
-%endif
-
-#Files for antivirus support:
-%if %build_fprot
-%files vscan-fprot
-%defattr(-,root,root)
-%{_libdir}/%{name}/vfs/vscan-fprotd.so
-%doc examples.bin/VFS/fprot/INSTALL
-%endif
-
-%if %build_kaspersky
-%files vscan-kaspersky
-%defattr(-,root,root)
-%{_libdir}/%{name}/vfs/vscan-kavp.so
-%doc examples.bin/VFS/kaspersky/INSTALL
-%endif
-
-%if %build_mks
-%files vscan-mks
-%defattr(-,root,root)
-%{_libdir}/%{name}/vfs/vscan-mksd.so
-%doc examples.bin/VFS/mks/INSTALL
-%endif
-
-%if %build_openantivirus
-%files vscan-openantivirus
-%defattr(-,root,root)
-%{_libdir}/%{name}/vfs/vscan-oav.so
-%doc examples.bin/VFS/openantivirus/INSTALL
-%endif
-
-%if %build_sophos
-%files vscan-sophos
-%defattr(-,root,root)
-%{_libdir}/%{name}/vfs/vscan-sophos.so
-%doc examples.bin/VFS/sophos/INSTALL
-%endif
-
-%if %build_symantec
-%files vscan-symantec
-%defattr(-,root,root)
-%{_libdir}/%{name}/vfs/vscan-symantec.so
-%doc examples.bin/VFS/symantec/INSTALL
-%endif
-
-%if %build_trend
-%files vscan-trend
-%defattr(-,root,root)
-%{_libdir}/%{name}/vfs/vscan-trend.so
-%doc examples.bin/VFS/trend/INSTALL
-%endif
-
-%changelog
-* Mon Oct 28 2002 Buchan Milne <bgmilne@linux-mandrake.com> 3.0-0.alpha20.3mdk
-- Fix mount.smbfs3 pointing to smbmount not in package
-- Remove unnecessary lines from install (now done by make)
-- Build with ldap and ads on all releases by default
-- Put av-stuff back
-
-* Mon Oct 21 2002 Buchan Milne <bgmilne@linux-mandrake.com> 3.0-0.alpha20.2mdk
-- When not building as system samba, avoid conflicting with system samba
-- Macro-ize as much as possible for above (aka finish cleanups)
-- Fix paths in init scripts and logrotate and xinetd
-- Fix provides and obsoletes so as to provide samba, but not obsolete
-  current stable until we have a stable release (when it's the system samba).
-- Add warnings to descriptions when not system samba.
-- This is now parallel installable with the normal samba release, for easy
-  testing. It shouldn't touch existing installations. Of course, only
-  one samba at a time on the same interface!
-
-* Sat Sep 28 2002 Buchan Milne <bgmilne@linux-mandrake.com> 3.0-0.alpha20.1mdk
-- Merge with 2.2.6pre2.2mdk
-- Detect alpha- and beta-, along with pre-releases
-
-* Tue Feb 05 2002 Buchan Milne <bgmilne@cae.co.za> 3.0-alpha14-0.1mdk
-- Sync with 2.2.3-2mdk (new --without options, detect when 
-  building for a different distribution.
-
-* Mon Feb 04 2002 Buchan Milne <bgmilne@cae.co.za> 3.0-alpha14-0.0mdk
-- Sync with 2.2.2-10mdk, which added build-time options --with ldap,
-  winbind, acl, wins, mdk72, mdk80, mdk81, mdk82, cooker. Added
-  warning in description if built with these options.
-
-* Wed Jan 23 2002 Buchan Milne <bgmilne@cae.co.za> 3.0-alpha13-0.2mdk
-- Added %%if's for build_ads, which hopefully will add Active Directory
-  Support (by request).
-
-* Thu Jan 17 2002 Buchan Milne <bgmilne@cae.co.za> 3.0-alpha13-0.1mdk
-- More syncing with 2.2 rpm (post and postun scripts)
-- Testing without ldap
-
-* Thu Jan 17 2002 Buchan Milne <bgmilne@cae.co.za> 3.0-alpha13-0.0mdk
-- 3.0-alpha13
-- Fixed installman.sh patch.
-
-* Wed Jan 09 2002 Buchan Milne <bgmilne@cae.co.za> 3.0-alpha12-0.1mdk
-- Fixed %post and %preun for nss_wins, added %post and %preun for
-  samba-winbind (chkconfig and winbind entries in nsswitch.conf)
-
-* Sun Dec 23 2001 Buchan Milne <bgmilne@cae.co.za> 3.0-alpha12-0.0mdk
-- 3.0-alpha12
-- Sync up with changes made in 2.2.2 to support Mandrake 8.0, 7.2
-- Added new subpackage for swat
-- More %if's for ldap.
-
-* Thu Dec 20 2001 Buchan Milne <bgmilne@cae.co.za> 3.0-alpha11-0.0mdk
-- 3.0-alpha11
-
-* Wed Dec 19 2001 Buchan Milne <bgmilne@cae.co.za> 3.0alpha10-0.0mdk
-- 3.0-alpha10
-
-* Tue Dec 18 2001 Buchan Milne <bgmilne@cae.co.za> 3.0alpha9-0.0mdk
-- 3.0-alpha9
-
-* Mon Dec 17 2001 Buchan Milne <bgmilne@cae.co.za> 3.0alpha8-0.1mdk
-- Added net command to %files common, pdbedit and smbgroupedit to
-  %files, s/%{prefix}\/bin/%{_bindir}/ (the big cleanup).
-  Added patch to smb.init from 2.2.2 (got missed with 3.0-alpha1 patches)
-
-* Sun Dec 16 2001 Buchan Milne <bgmilne@cae.co.za> 3.0alpha8-0.0mdk
-- Patch for installman.sh to handle lang=en correctly (p24)
-- added --with-manpages-langs=en,ja,pl (translated manpages), but there
-  aren't any manpages for these languages yet ... so we still
-  need %dir and %doc entries for them ...
-- patch (p25) to configure.in to support more than 2 languages.
-- addtosmbpass seems to have returned for now, but make_* have disappeared!
-
-* Fri Dec 14 2001 Buchan Milne <bgmilne@cae.co.za> 3.0alpha6-0.0mdk
-- DESTDIR patch for Makefile.in (p23), remove a lot of %install scripts
-  this forces move of smbcontrol and smbmnt to %{prefix}/bin
-  removed --with-pam_smbpass as it doesn't compile.
-
-* Thu Dec 06 2001 Buchan Milne <bgmilne@cae.co.za> 3.0-0.0alpha1mdk
-- Samba 3.0alpha1 released (we missed Samba 3.0alpha0!)
-- Redid smbmount-sbin patch and smb.conf patch (20), removed xfs quota patch 
-  (applied upstream), removed ook-patch (codepage directory totally different).
-- Added winbind.init (21) and system-auth-winbind.pamd (22). Patches 20-23 
-  should be applied upstream before 3.0 ships ...
-
-* Wed Dec 05 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.2-6mdk
-- fixed typo in system-auth-winbind.pamd (--Thanks J. Gluck).
-- fixed %post xxx problem (smb not started in chkconfig --Thanks Viet & B. Kenworthy).
-
-* Fri Nov 23 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.2-5mdk
-- Had to remove the network recycle bin patch: it seems to mess up 
-  file deletion from windows (files appear to be "already in use")
-
-* Tue Nov 13 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.2-4mdk
-- added network recycle bin patch:
-  <http://www.amherst.edu/~bbstone/howto/samba.html>
-- added "recycle bin = .recycled" parameter in smb.conf [homes].
-- fixed winbind/nss_wins perms (oh no I don't own that stuff ;o)
-
-* Mon Nov 12 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.2-3mdk
-- added %build 8.0 and 7.2, for tweakers to play around.
-- changed configure options:
-  . removed --with-mmap, --with-netatalk (obsolete).
-  . added --with-msdfs, --with-vfs (seems stable, but still need testing).
-
-* Mon Nov 12 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.2-2mdk
-- rebuilt with winbind and nss_wins enabled.
-
-* Wed Oct 31 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.2-1mdk
-- Rebuilt on cooker.
-
-* Wed Oct 31 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.2-0.992mdk
-- Patch for smb.conf to fix incorrect lpq command, typo in winbind,
-  and add sample linpopup command. Added print driver directories.
-- New XFS quota patch (untested!, samba runs, but do quotas work? We
-  can't check yet since the kernel doesn't seem to support XFS quotas!)
-
-* Fri Oct 19 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.2-0.99mdk
-- New samba.spec, almost ready for winbind operations. OLA for Buchan Milne
-  Who did a tremendous integration work on 2.2.2.
-  Rebuild on cooker, please test XFS (ACLs and quotas) again...
-  
-* Mon Oct 15 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.2-0.9mdk
-- Samba-2.2.2. released! Use %defines to determine which subpackages
-  are built and which Mandrake release we are buiding on/for (hint: define 
-  build_mdk81 1 for Mandrake 8.1 updates)
-
-* Sun Oct 14 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.2-0.20011014mdk
-- %post and %postun for nss_wins
-
-* Wed Oct 10 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.2-0.20011010mdk
-- New CVS snapshot, /etc/pam.d/system-auth-winbind added
-  with configuration to allow easy winbind setup.
-  
-* Sun Oct 7 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.2-0.20011007mdk
-- Added new package nss_wins and moved smbpasswd to common (required by
-  winbind).
-
-* Sat Oct 6 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.2-0.20011006mdk
-- Added new package winbind.
-
-* Mon Oct 1 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.2-0.20011001mdk
-- Removed patch to smb init.d file (applied in cvs)
-
-* Sun Sep 30 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.2-0.20010930mdk
-- Added winbind init script, which still needs to check for running nmbd.
-
-* Thu Sep 27 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.2-0.20010927mdk
-- Built from samba-2.2.2-pre cvs, added winbindd, wbinfo, nss_winbind and 
-  pam_winbind, moved pam_smbpass from samba-common to samba. We still
-  need a start-up script for winbind, or need to modify existing one.
-  
-* Mon Sep 10 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1a-15mdk
-- Enabled acl support (XFS acls now supported by kernel-2.4.8-21mdk thx Chmou)
-  Added smbd patch to support XFS quota (Nathan Scott)
-  
-* Mon Sep 10 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1a-14mdk
-- Oops! smbpasswd created in wrong directory...
-
-* Tue Sep 06 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1a-13mdk
-- Removed a wrong comment in smb.conf.
-  Added creation of smbpasswd during install.
-
-* Mon Aug 27 2001 Pixel <pixel@mandrakesoft.com> 2.2.1a-12mdk
-- really less verbose %%post
-
-* Sat Aug 25 2001 Geoffrey Lee <snailtalk@mandrakesoft.com> 2.2.1a-11mdk
-- Fix shared libs in /usr/bin silliness.
-
-* Thu Aug 23 2001 Pixel <pixel@mandrakesoft.com> 2.2.1a-10mdk
-- less verbose %%post
-
-* Wed Aug 22 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.1a-9mdk
-- Added smbcacls (missing in %files), modification to smb.conf: ([printers]
-  is still needed, even with point-and-print!, user add script should
-  use name and not gid, since we may not get the gid . New script for
-  putting manpages in place (still need to be added in %files!). Moved
-  smbcontrol to sbin and added it and its man page to %files.
-
-* Wed Aug 22 2001 Pixel <pixel@mandrakesoft.com> 2.2.1a-8mdk
-- cleanup /var/lib/samba/codepage/src
-
-* Tue Aug 21 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1a-7mdk
-- moved codepage generation to %install and codepage dir to /var/lib/samba
-
-* Tue Aug 21 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1a-6mdk
-- /lib/* was in both samba and samba-common
-  Introducing samba-doc: "alas, for the sake of thy modem, shalt thou remember
-  when Samba was under the Megabyte..."
-
-* Fri Aug 03 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1a-5mdk
-- Added "the gc touch" to smbinit through the use of killall -0 instead of
-  grep cupsd | grep -v grep (too many greps :o)
-
-* Wed Jul 18 2001 Stefan van der Eijk <stefan@eijk.nu> 2.2.1a-4mdk
-- BuildRequires: libcups-devel
-- Removed BuildRequires: openssl-devel
-
-* Fri Jul 13 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1a-3mdk
-- replace chkconfig --add/del with --level 35 on/reset.
-
-* Fri Jul 13 2001 Geoffrey Lee <snailtalk@mandrakesoft.cm> 2.2.1a-2mdk
-- Replace discription s/inetd/xinetd/, we all love xinetd, blah.
-
-* Thu Jul 12 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.1a-1mdk
-- Bugfix release. Fixed add user script, added print$ share and printer admin
-  We need to test interaction of new print support with CUPS, but printer
-  driver uploads should work.
-
-* Wed Jul 11 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-17mdk
-- fixed smb.conf a bit, rebuilt on cooker.
-
-* Tue Jul 10 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.1-16mdk
-- Finally, samba 2.2.1 has actually been release. At least we were ready!
-  Cleaned up smb.conf, and added some useful entries for domain controlling.
-  Migrated changes made in samba's samba2.spec for 2.2.1  to this file.
-  Added groupadd command in post to create a group for samba machine accounts.
-  (We should still check the postun, samba removes pam, logs and cache)
-
-* Tue Jun 26 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-15mdk
-- fixed smbwrapper compile options.
-
-* Tue Jun 26 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-14mdk
-- added LFS support.
-  added smbwrapper support (smbsh)
-
-* Wed Jun 20 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-13mdk
-- /sbin/mount.smb and /sbin/mount.smbfs now point to the correct location
-  of smbmount (/usr/bin/smbmount)
-
-* Tue Jun 19 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-12mdk
-- smbmount and smbumount are now in /usr/bin and SUID.
-  added ||: to triggerpostun son you don't get error 1 anymore when rpm -e
-  Checked the .bz2 sources with file *: everything is OK now (I'm so stupid ;o)!
-
-* Tue Jun 19 2001 Geoffrey Lee <snailtalk@mandrakesoft.com> 2.2.1-11mdk
-- s/Copyright/License/;
-- Stop Sylvester from pretending .gz source to be .bz2 source via filename
-  aka really bzip2 the source.
-
-* Mon Jun 18 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-10mdk
-- changed Till's startup script modifications: now samba is being reloaded
-  automatically 1 minute after it has started (same reasons as below in 9mdk)
-  added _post_ and _preun_ for service smb
-  fixed creation of /var/lib/samba/{netlogon,profiles} (%dir was missing)
-
-* Thu Jun 14 2001 Till Kamppeter <till@mandrakesoft.com> 2.2.1-9mdk
-- Modified the Samba startup script so that in case of CUPS being used as
-  printing system Samba only starts when the CUPS daemon is ready to accept
-  requests. Otherwise the CUPS queues would not appear as Samba shares.
-
-* Mon Jun 11 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-8mdk
-- patched smbmount.c to have it call smbmnt in sbin (thanks Seb).
-
-* Wed May 30 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-7mdk
-- put SWAT menu icons back in place.
-
-* Mon May 28 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-6mdk
-- OOPS! fixed smbmount symlinks
-
-* Mon May 28 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-5mdk
-- removed inetd postun script, replaced with xinetd.
-  updated binary list (smbcacls...)
-  cleaned samba.spec
-
-* Mon May 28 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.1-4mdk
-- Changed configure options to point to correct log and codepage directories,
-  added crude script to fix logrotate file for new log file names, updated
-  patches to work with current CVS.
-
-* Thu May 24 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-3mdk
-- Cleaned and updated the %files section.
-
-* Sat May 19 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.1-2mdk
-- Moved all samba files from /etc to /etc/samba (Thanks DomS!).
-  Fixed fixinit patch (/etc/samba/smb.conf)
-
-* Fri May 18 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.1-1mdk
-- Now use packaging/Mandrake/smb.conf, removed unused and obsolete
-  patches, moved netlogon and profile shares to /var/lib/samba in the
-  smb.conf to match the spec file. Added configuration for ntlogon to
-  smb.conf. Removed pam-foo, fixinit and makefilepath patches. Removed
-  symlink I introduced in 2.2.0-1mdk
-
-* Thu May 3 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.0-5mdk
-- Added more configure options. Changed Description field (thx John T).
-
-* Wed Apr 25 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.0-4mdk
-- moved netlogon and profiles to /var/lib/samba by popular demand ;o)
-
-* Tue Apr 24 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.0-3mdk
-- moved netlogon and profiles back to /home.
-
-* Fri Apr 20 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.2.0-2mdk
-- fixed post inetd/xinetd script&
-
-* Thu Apr 19 2001 Buchan Milne <bgmilne@cae.co.za> 2.2.0-1mdk
-- Upgrade to 2.2.0. Merged most of 2.0.7-25mdk's patches (beware
-  nasty "ln -sf samba-%{ver} ../samba-2.0.7" hack to force some patches
-  to take. smbadduser and addtosmbpass seem to have disappeared. Moved
-  all Mandrake-specific files to packaging/Mandrake and made patches
-  from those shipped with samba. Moved netlogon to /home/samba and added
-  /home/samba/profiles. Added winbind,smbfilter and debug2html to make command.
-
-* Thu Apr 12 2001 Frederic Crozat <fcrozat@mandrakesoft.com> 2.0.7-25mdk
-- Fix menu entry and provide separate menu entry for GNOME
-  (nautilus doesn't support HTTP authentication yet)
-- Add icons in package
-
-* Fri Mar 30 2001 Frederic Lepied <flepied@mandrakesoft.com> 2.0.7-24mdk
-- use new server macros
-
-* Wed Mar 21 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-23mdk
-- check whether /etc/inetd.conf exists (upgrade) or not (fresh install).
-
-* Thu Mar 15 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-22mdk
-- spec cosmetics, added '-r' option to lpr-cups command line so files are
-  removed from /var/spool/samba after printing.
-
-* Tue Mar 06 2001 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-21mdk
-- merged last rh patches.
-
-* Thu Nov 23 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-20mdk
-- removed dependencies on cups and cups-devel so one can install samba without using cups
-- added /home/netlogon
-
-* Mon Nov 20 2000 Till Kamppeter <till@mandrakesoft.com> 2.0.7-19mdk
-- Changed default print command in /etc/smb.conf, so that the Windows
-  driver of the printer has to be used on the client.
-- Fixed bug in smbspool which prevented from printing from a
-  Linux-Samba-CUPS client to a Windows server through the guest account.
-
-* Mon Oct 16 2000 Till Kamppeter <till@mandrakesoft.com> 2.0.7-18mdk
-- Moved "smbspool" (Samba client of CUPS) to the samba-client package
-
-* Sat Oct 7 2000 Stefan van der Eijk <s.vandereijk@chello.nl> 2.0.7-17mdk
-- Added RedHat's "quota" patch to samba-glibc21.patch.bz2, this fixes
-  quota related compile problems on the alpha.
-
-* Wed Oct 4 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-16mdk
-- Fixed 'guest ok = ok' flag in smb.conf
-
-* Tue Oct 3 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-15mdk
-- Allowed guest account to print in smb.conf
-- added swat icon in menu
-
-* Tue Oct 3 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-14mdk
-- Removed rh ssl patch and --with-ssl flag: not appropriate for 7.2
-
-* Tue Oct 3 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-13mdk
-- Changed fixinit patch.
-- Changed smb.conf for better CUPS configuration.
-- Thanks Fred for doing this ---vvv.
-
-* Tue Oct  3 2000 Frederic Lepied <flepied@mandrakesoft.com> 2.0.7-12mdk
-- menu entry for web configuration tool.
-- merge with rh: xinetd + ssl + pam_stack.
-- Added smbadduser rh-bugfix w/o relocation of config-files.
-
-* Mon Oct  2 2000 Frederic Lepied <flepied@mandrakesoft.com> 2.0.7-11mdk
-- added build requires on cups-devel and pam-devel.
-
-* Mon Oct  2 2000 Till Kamppeter <till@mandrakesoft.com> 2.0.7-10mdk
-- Fixed smb.conf entry for CUPS: "printcap name = lpstat", "lpstats" was
-  wrong.
-
-* Mon Sep 25 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-9mdk
-- Cosmetic changes to make rpmlint more happy
-
-* Wed Sep 11 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-8mdk
-- added linkage to the using_samba book in swat
-
-* Fri Sep 01 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-7mdk
-- Added CUPS support to smb.conf
-- Added internationalization options to smb.conf [Global]
-
-* Wed Aug 30 2000 Till Kamppeter <till@mandrakesoft.com> 2.0.7-6mdk
-- Put "smbspool" to the files to install
-
-* Wed Aug 30 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-5mdk
-- Did some cleaning in the patches
-
-* Fri Jul 28 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-4mdk
-- relocated man pages from /usr/man to /usr/share/man for compatibility reasons
-
-* Fri Jul 28 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-3mdk
-- added make_unicodemap and build of unicode_map.$i in the spec file
-
-* Fri Jul 28 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-2mdk
-- renamed /etc/codepage/codepage.$i into /etc/codepage/unicode_map.$i to fix smbmount bug.
-
-* Fri Jul 07 2000 Sylvestre Taburet <staburet@mandrakesoft.com> 2.0.7-1mdk
-- 2.0.7
-
-* Wed Apr 05 2000 Francis Galiegue <fg@mandrakesoft.com> 2.0.6-4mdk
-
-- Titi sucks, does not put versions in changelog
-- Fixed groups for -common and -client
-- /usr/sbin/samba is no config file
-
-* Thu Mar 23 2000 Thierry Vignaud <tvignaud@mandrakesoft.com>
-- fix buggy post install script (pixel)
-
-* Fri Mar 17 2000 Francis Galiegue <francis@mandrakesoft.com> 2.0.6-2mdk
-
-- Changed group according to 7.1 specs
-- Some spec file changes
-- Let spec-helper do its job
-
-* Thu Nov 25 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-- 2.0.6.
-
-* Tue Nov  2 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-- Merge with rh changes.
-- Split in 3 packages.
-
-* Fri Aug 13 1999 Pablo Saratxaga <pablo@@mandrakesoft.com>
-- corrected a bug with %post (the $1 parameter is "1" in case of
-  a first install, not "0". That parameter is the number of packages
-  of the same name that will exist after running all the steps if nothing
-  is removed; so it is "1" after first isntall, "2" for a second install
-  or an upgrade, and "0" for a removal)
-
-* Wed Jul 28 1999 Pablo Saratxaga <pablo@@mandrakesoft.com>
-- made smbmnt and smbumount suid root, and only executable by group 'smb'
-  add to 'smb' group any user that should be allowed to mount/unmount
-  SMB shared directories
-
-* Fri Jul 23 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-- 2.0.5a (bug security fix).
-
-* Wed Jul 21 1999 Axalon Bloodstone <axalon@linux-mandrake.com>
-- 2.0.5
-- cs/da/de/fi/fr/it/tr descriptions/summaries
-
-* Sun Jun 13 1999 Bernhard Rosenkr√§nzer <bero@mandrakesoft.com>
-- 2.0.4b
-- recompile on a system that works ;)
-
-* Wed Apr 21 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-- Mandrake adaptations.
-- Bzip2 man-pages.
-
-* Fri Mar 26 1999 Bill Nottingham <notting@redhat.com>
-- add a mount.smb to make smb mounting a little easier.
-- smb filesystems apparently do not work on alpha. Oops.
-
-* Thu Mar 25 1999 Bill Nottingham <notting@redhat.com>
-- always create codepages
-
-* Tue Mar 23 1999 Bill Nottingham <notting@redhat.com>
-- logrotate changes
-
-* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com>
-- auto rebuild in the new build environment (release 3)
-
-* Fri Mar 19 1999 Preston Brown <pbrown@redhat.com>
-- updated init script to use graceful restart (not stop/start)
-
-* Tue Mar  9 1999 Bill Nottingham <notting@redhat.com>
-- update to 2.0.3
-
-* Thu Feb 18 1999 Bill Nottingham <notting@redhat.com>
-- update to 2.0.2
-
-* Mon Feb 15 1999 Bill Nottingham <notting@redhat.com>
-- swat swat
-
-* Tue Feb  9 1999 Bill Nottingham <notting@redhat.com>
-- fix bash2 breakage in post script
-
-* Fri Feb  5 1999 Bill Nottingham <notting@redhat.com>
-- update to 2.0.0
-
-* Mon Oct 12 1998 Cristian Gafton <gafton@redhat.com>
-- make sure all binaries are stripped
-
-* Thu Sep 17 1998 Jeff Johnson <jbj@redhat.com>
-- update to 1.9.18p10.
-- fix %triggerpostun.
-
-* Tue Jul 07 1998 Erik Troan <ewt@redhat.com>
-- updated postun triggerscript to check $0
-- clear /etc/codepages from %preun instead of %postun
-
-* Mon Jun 08 1998 Erik Troan <ewt@redhat.com>
-- made the %postun script a tad less agressive; no reason to remove
-  the logs or lock file (after all, if the lock file is still there,
-  samba is still running)
-- the %postun and %preun should only exectute if this is the final
-  removal
-- migrated %triggerpostun from Red Hat's samba package to work around
-  packaging problems in some Red Hat samba releases
+%doc examples
+%attr(-,root,root) %{prefix}/sbin/*
+%attr(-,root,root) /sbin/*
+%attr(-,root,root) %{prefix}/bin/*
+%attr(755,root,root) /lib/*
+%attr(-,root,root) %{prefix}/share/swat/help/*
+%attr(-,root,root) %{prefix}/share/swat/images/*
+%attr(-,root,root) %{prefix}/share/swat/include/*
+%attr(-,root,root) %{prefix}/share/swat/using_samba/*
+%attr(-,root,root) %config(noreplace) /etc/samba/lmhosts
+%attr(-,root,root) %config(noreplace) /etc/samba/smb.conf
+%attr(-,root,root) %config(noreplace) /etc/samba/smbusers
+%attr(-,root,root) /etc/rc.d/init.d/smb
+%attr(-,root,root) /etc/logrotate.d/samba
+%attr(-,root,root) %config(noreplace) /etc/pam.d/samba
+%attr(-,root,root) %{prefix}/share/man/man1/*
+%attr(-,root,root) %{prefix}/share/man/man5/*
+%attr(-,root,root) %{prefix}/share/man/man7/*
+%attr(-,root,root) %{prefix}/share/man/man8/*
+%attr(-,root,root) %dir /etc/samba/
+%attr(-,root,root) %dir /usr/share/samba/codepages/*
+%attr(-,root,root) %dir /usr/share/samba/codepages/src/*
+%attr(-,root,root) %dir /var/lock/samba
+%attr(-,root,root) %dir /var/log/samba
+%attr(1777,root,root) %dir /var/spool/samba
 
-* Sun Apr 26 1998 John H Terpstra <jht@samba.anu.edu.au>
-- minor tidy up in preparation for release of 1.9.18p5
-- added findsmb utility from SGI package
 
-* Wed Mar 18 1998 John H Terpstra <jht@samba.anu.edu.au>
-- Updated version and codepage info.
-- Release to test name resolve order
 
-* Sat Jan 24 1998 John H Terpstra <jht@samba.anu.edu.au>
-- Many optimisations (some suggested by Manoj Kasichainula <manojk@io.com>
-- Use of chkconfig in place of individual symlinks to /etc/rc.d/init/smb
-- Compounded make line
-- Updated smb.init restart mechanism
-- Use compound mkdir -p line instead of individual calls to mkdir
-- Fixed smb.conf file path for log files
-- Fixed smb.conf file path for incoming smb print spool directory
-- Added a number of options to smb.conf file
-- Added smbadduser command (missed from all previous RPMs) - Doooh!
-- Added smbuser file and smb.conf file updates for username map
index f68d48cb4b3c2dfea297c82104b124ef964546bb..a14e90ec16b2758da8dc71f23dc74b4b6836f68e 100644 (file)
@@ -1,4 +1,3 @@
-
 # This is the main Samba configuration file. You should read the
 # smb.conf(5) manual page in order to understand the options listed
 # here. Samba has a huge number of configurable options (perhaps too
 #======================= Global Settings =====================================
 [global]
 
-# 1. Server Naming Options:
 # workgroup = NT-Domain-Name or Workgroup-Name
    workgroup = MDKGROUP
 
-# netbios name is the name you will see in "Network Neighbourhood",
-# but defaults to your hostname
-;  netbios name = <name_of_this_server>
-
 # server string is the equivalent of the NT Description field
    server string = Samba Server %v
 
-# Message command is run by samba when a "popup" message is sent to it.
-# The example below is for use with LinPopUp:
-; message command = /usr/bin/linpopup "%f" "%m" %s; rm %s
+# This option is important for security. It allows you to restrict
+# connections to machines which are on your local network. The
+# following example restricts access to two C class networks and
+# the "loopback" interface. For more examples of the syntax see
+# the smb.conf man page
+;   hosts allow = 192.168.1. 192.168.2. 127.
+
+# Enabling internationalization:
+# you can match a Windows code page with a UNIX character set.
+# Windows: 437 (US), 737 (GREEK), 850 (Latin1 - Western European),
+# 852 (Eastern Eu.), 861 (Icelandic), 932 (Cyrillic - Russian),
+# 936 (Japanese - Shift-JIS), 936 (Simpl. Chinese), 949 (Korean Hangul),
+# 950 (Trad. Chin.).
+# UNIX: ISO8859-1 (Western European), ISO8859-2 (Eastern Eu.),
+# ISO8859-5 (Russian Cyrillic), KOI8-R (Alt-Russ. Cyril.)
+# This is an example for french users:
+;   client code page = 850
+;   character set = ISO8859-1
+
 
-# 2. Printing Options:
 # CHANGES TO ENABLE PRINTING ON ALL CUPS PRINTERS IN THE NETWORK
 # (as cups is now used in linux-mandrake 7.2 by default)
 # if you want to automatically load your printer list rather
 # bsd, sysv, plp, lprng, aix, hpux, qnx, cups
    printing = cups
 
-# Samba 2.2 supports the Windows NT-style point-and-print feature. To
-# use this, you need to be able to upload print drivers to the samba
-# server. The printer admins (or root) may install drivers onto samba.
-# Note that this feature uses the print$ share, so you will need to 
-# enable it below.
-# This parameter works like domain admin group:
-# printer admin = @<group> <user>
-;   printer admin = @adm
-# This should work well for winbind:
-;   printer admin = @"Domain Admins"
-
-# 3. Logging Options:
+
+# Uncomment this if you want a guest account, you must add this to /etc/passwd
+# otherwise the user "nobody" is used
+;  guest account = pcguest
+
 # this tells Samba to use a separate log file for each machine
 # that connects
    log file = /var/log/samba/log.%m
 # Put a capping on the size of the log files (in Kb).
    max log size = 50
 
-# Set the log (verbosity) level (0 <= log level <= 10)
-; log level = 3
-
-# 4. Security and Domain Membership Options:
-# This option is important for security. It allows you to restrict
-# connections to machines which are on your local network. The
-# following example restricts access to two C class networks and
-# the "loopback" interface. For more examples of the syntax see
-# the smb.conf man page. Do not enable this if (tcp/ip) name resolution does
-# not work for all the hosts in your network.
-;   hosts allow = 192.168.1. 192.168.2. 127.
-
-# Uncomment this if you want a guest account, you must add this to /etc/passwd
-# otherwise the user "nobody" is used
-;  guest account = pcguest
-
 # Security mode. Most people will want user level security. See
 # security_level.txt for details.
    security = user
-# Use password server option only with security = server or security = domain
-# When using security = domain, you should use password server = *
+# Use password server option only with security = server
 ;   password server = <NT-Server-Name>
-;   password server = *
 
 # Password Level allows matching of _n_ characters of the password for
 # all combinations of upper and lower case.
 # You may wish to use password encryption. Please read
 # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
 # Do not enable this option unless you have read those documents
-# Encrypted passwords are required for any use of samba in a Windows NT domain
-# The smbpasswd file is only required by a server doing authentication, thus
-# members of a domain do not need one.
-  encrypt passwords = yes
-  smb passwd file = /etc/samba/smbpasswd
+;  encrypt passwords = yes
+;  smb passwd file = /etc/samba/private/smbpasswd
 
 # The following are needed to allow password changing from Windows to
-# also update the Linux system password.
+# update the Linux sytsem password also.
 # NOTE: Use these with 'encrypt passwords' and 'smb passwd file' above.
 # NOTE2: You do NOT need these to allow workstations to change only
 #        the encrypted SMB passwords. They allow the Unix password
 #        to be kept in sync with the SMB password.
 ;  unix password sync = Yes
-# You either need to setup a passwd program and passwd chat, or
-# enable pam password change
-;  pam password change = yes
 ;  passwd program = /usr/bin/passwd %u
-;  passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n
-;*passwd:*all*authentication*tokens*updated*successfully*
+;  passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
 
 # Unix users can map to different SMB User names
-;  username map = /etc/samba/smbusers
+;  username map = /etc/smbusers
 
 # Using the following line enables you to customise your configuration
 # on a per machine basis. The %m gets replaced with the netbios name
 # of the machine that is connecting
-;   include = /etc/samba/smb.conf.%m
-
-# Options for using winbind. Winbind allows you to do all account and
-# authentication from a Windows or samba domain controller, creating
-# accounts on the fly, and maintaining a mapping of Windows RIDs to unix uid's 
-# and gid's. winbind uid and winbind gid are the only required parameters.
-#
-# winbind uid is the range of uid's winbind can use when mapping RIDs to uid's
-;  winbind uid = 10000-20000
-#
-# winbind gid is the range of uid's winbind can use when mapping RIDs to gid's
-;  winbind gid = 10000-20000
-#
-# winbind separator is the character a user must use between their domain
-# name and username, defaults to "\"
-;  winbind separator = +
-#
-# winbind use default domain allows you to have winbind return usernames
-# in the form user instead of DOMAIN+user for the domain listed in the
-# workgroup parameter.
-;  winbind use default domain = yes
-#
-# template homedir determines the home directory for winbind users, with 
-# %D expanding to their domain name and %U expanding to their username:
-;  template homedir = /home/%D/%U
-
-# When using winbind, you may want to have samba create home directories
-# on the fly for authenticated users. Ensure that /etc/pam.d/samba is
-# using 'service=system-auth-winbind' in pam_stack modules, and then
-# enable obedience of pam restrictions below:
-;  obey pam restrictions = yes
-
-#
-# template shell determines the shell users authenticated by winbind get
-;  template shell = /bin/bash
+;   include = /etc/smb.conf.%m
 
-# 5. Browser Control and Networking Options:
 # Most people will find that this option gives better performance.
 # See speed.txt and the manual pages for details
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
 
 # Configure remote browse list synchronisation here
 #  request announcement to, or browse list sync from:
-#       a specific host or from / to a whole subnet (see below)
+#      a specific host or from / to a whole subnet (see below)
 ;   remote browse sync = 192.168.3.25 192.168.5.255
 # Cause this host to announce itself to local subnets here
 ;   remote announce = 192.168.1.255 192.168.2.44
 
+# Browser Control Options:
 # set local master to no if you don't want Samba to become a master
 # browser on your network. Otherwise the normal election rules apply
 ;   local master = no
 # and gives it a slightly higher chance of winning the election
 ;   preferred master = yes
 
-# 6. Domain Control Options:
 # Enable this if you want Samba to be a domain logon server for 
-# Windows95 workstations or Primary Domain Controller for WinNT and Win2k
+# Windows95 workstations
 ;   domain logons = yes
 
 # if you enable domain logons then you may want a per-machine or
 # run a specific logon batch file per username
 ;   logon script = %U.bat
 
-# Where to store roaming profiles for WinNT and Win2k
+# Where to store roving profiles (only for Win95 and WinNT)
 #        %L substitutes for this servers netbios name, %U is username
 #        You must uncomment the [Profiles] share below
 ;   logon path = \\%L\Profiles\%U
 
-# Where to store roaming profiles for Win9x. Be careful with this as it also
-# impacts where Win2k finds it's /HOME share
-; logon home = \\%L\%U\.profile
-
-# The add user script is used by a domain member to add local user accounts
-# that have been authenticated by the domain controller, or by the domain
-# controller to add local machine accounts when adding machines to the domain.
-# The script must work from the command line when replacing the macros,
-# or the operation will fail. Check that groups exist if forcing a group.
-# Script for domain controller for adding machines:
-; add user script = /usr/sbin/useradd -d /dev/null -g machines -c 'Machine Account' -s /bin/false -M %u
-# Script for domain controller with LDAP backend for adding machines (please
-# configure in /etc/samba/smbldap_conf.pm first):
-; add user script = /usr/share/samba/scripts/smbldap-useradd.pl -w -d /dev/null -g machines -c 'Machine Account' -s /bin/false %u
-# Script for domain member for adding local accounts for authenticated users:
-; add user script = /usr/sbin/useradd -s /bin/false %u
-
-# Domain groups:
-# domain admin group is a list of unix users or groups who are made members
-# of the Domain Admin group
-; domain admin group = root @wheel
-#
-# domain guest groups is a list of unix users or groups who are made members
-# of the Domain Guests group
-; domain guest group = nobody @guest
-
-# LDAP configuration for Domain Controlling:
-# The account (dn) that samba uses to access the LDAP server
-# This account needs to have write access to the LDAP tree
-# You will need to give samba the password for this dn, by 
-# running 'smbpasswd -w mypassword'
-; ldap admin dn = cn=root,dc=mydomain,dc=com
-; ldap ssl = start_tls
-# start_tls should run on 389, but samba defaults incorrectly to 636
-; ldap port = 389
-; ldap suffix = dc=mydomain,dc=com
-; ldap server = ldap.mydomain.com
-
-
-# 7. Name Resolution Options:
 # All NetBIOS names must be resolved to IP Addresses
 # 'Name Resolve Order' allows the named resolution mechanism to be specified
 # the default order is "host lmhosts wins bcast". "host" means use the unix
 ;   wins support = yes
 
 # WINS Server - Tells the NMBD components of Samba to be a WINS Client
-#       Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
+#      Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
 ;   wins server = w.x.y.z
 
 # WINS Proxy - Tells Samba to answer name resolution queries on
 # behalf of a non WINS capable client, for this to work there must be
-# at least one  WINS Server on the network. The default is NO.
+# at least one WINS Server on the network. The default is NO.
 ;   wins proxy = yes
 
 # DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
 # this has been changed in version 1.9.18 to no.
    dns proxy = no 
 
-# 8. File Naming Options:
 # Case Preservation can be handy - system default is _no_
 # NOTE: These can be set on a per share basis
 ;  preserve case = no
 # Be very careful with case sensitivity - it can break things!
 ;  case sensitive = no
 
-# Enabling internationalization:
-# you can match a Windows code page with a UNIX character set.
-# Windows: 437 (US), 737 (GREEK), 850 (Latin1 - Western European),
-# 852 (Eastern Eu.), 861 (Icelandic), 932 (Cyrillic - Russian),
-# 936 (Japanese - Shift-JIS), 936 (Simpl. Chinese), 949 (Korean Hangul),
-# 950 (Trad. Chin.).
-# UNIX: ISO8859-1 (Western European), ISO8859-2 (Eastern Eu.),
-# ISO8859-5 (Russian Cyrillic), KOI8-R (Alt-Russ. Cyril.)
-# This is an example for french users:
-;   client code page = 850
-;   character set = ISO8859-1
-
-
 #============================ Share Definitions ==============================
 [homes]
    comment = Home Directories
    browseable = no
    writable = yes
-# You can enable VFS recycle bin on a per share basis:
-# Uncomment the next 2 lines (make sure you create a
-# .recycle folder in the base of the share and ensure
-# all users will have write access to it. See
-# examples/VFS/recycle/REAME in samba-doc for details
-;   vfs object = /usr/lib/samba/vfs/recycle.so
-;   vfs options= /etc/samba/recycle.conf
 
 # Un-comment the following and create the netlogon directory for Domain Logons
 ; [netlogon]
 ;   path = /var/lib/samba/netlogon
 ;   guest ok = yes
 ;   writable = no
+;   share modes = no
 
 #Uncomment the following 2 lines if you would like your login scripts to
 #be created dynamically by ntlogon (check that you have it in the correct
-#location (the default of the ntlogon rpm available in contribs)
+#locationn (the default of the ntlogon rpm available in contribs)
 ;root preexec = /usr/bin/ntlogon -u %U -g %G -o %a -d /var/lib/samba/netlogon
 ;root postexec = rm -f /var/lib/samba/netlogon/%U.bat
 
 # =====================================
 # print command: see above for details.
 # =====================================
-   print command = lpr-cups -P %p -o raw %s -r   # using client side printer drivers.
+   print command = lpr-cups -P %p -o raw %s -r  # using client side printer drivers.
 ;   print command = lpr-cups -P %p %s # using cups own drivers (use generic PostScript on clients).
-# The following two commands are the samba defaults for printing=cups
-# change them only if you need different options:
-;   lpq command = lpq -P %p
-;   lprm command = cancel %p-%j
-
-# This share is used for Windows NT-style point-and-print support.
-# To be able to install drivers, you need to be either root, or listed
-# in the printer admin parameter above. Note that you also need write access
-# to the directory and share definition to be able to upload the drivers.
-# For more information on this, please see the Printing Support Section of
-# /usr/share/doc/samba-<version>/docs/Samba-HOWTO-Collection.pdf 
-[print$]
-   path = /var/lib/samba/printers
-   browseable = yes
-   read only = yes
-   write list = @adm root
-
-# A useful application of samba is to make a PDF-generation service
-# To streamline this, install windows postscript drivers (preferably colour)
-# on the samba server, so that clients can automatically install them.
-
-[pdf-generator]
-   path = /var/tmp
-   guest ok = No
-   printable = Yes
-   comment = PDF Generator (only valid users)
-   #print command = /usr/share/samba/scripts/print-pdf file path win_path recipient IP &
-   print command = /usr/share/samba/scripts/print-pdf %s ~%u \\\\\\\\%L\\\\%u %m %I &
+   lpq command = lpstat -o %p
+   lprm command = cancel %p-%j
 
 # This one is useful for people to share files
 ;[tmp]
 ;   public = yes
 ;   writable = no
 ;   write list = @staff
-# Audited directory through experimental VFS audit.so module:
-# Uncomment next line.
-;   vfs object = /usr/lib/samba/vfs/audit.so
 
 # Other examples. 
 #
-# A private printer, usable only by Fred. Spool data will be placed in Fred's
+# A private printer, usable only by fred. Spool data will be placed in fred's
 # home directory. Note that fred must have write access to the spool directory,
 # wherever it is.
 ;[fredsprn]
 ;   writable = no
 ;   printable = yes
 
-# A private directory, usable only by Fred. Note that Fred requires write
+# A private directory, usable only by fred. Note that fred requires write
 # access to the directory.
 ;[fredsdir]
 ;   comment = Fred's Service
 ;   printable = no
 ;   create mask = 0765
 
+
index bdc151870950908970d01fecf8b85a05af100de9..8855f04efba95f5efaa312a34f0c73823159bf44 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# chkconfig: 35 91 9
+# chkconfig: - 91 35
 # description: Starts and stops the Samba smbd and nmbd daemons \
 #             used to provide SMB network services.
 
@@ -26,12 +26,6 @@ RETVAL=0
 
 
 start() {
-       # If CUPS is used as printing system, reload smb after a 1 minute delay
-       # to allow the printers to appear properly as samba shares.
-        if killall -0 cupsd 2>/dev/null; then
-         ( sleep 60 && killproc smbd -HUP ) &
-       fi
-       export TMPDIR="/var/tmp"
        echo -n "Starting SMB services: "
        daemon smbd -D  
        RETVAL=$?
@@ -61,7 +55,6 @@ restart() {
        start
 }      
 reload() {
-       export TMPDIR="/var/tmp"
         echo -n "Reloading smb.conf file: "
        killproc smbd -HUP
        RETVAL=$?
index 210248fa35a9c2df7084de5ca5d482557912a9c4..646b10dbbbfbe368c506455c65188b779f44970d 100644 (file)
@@ -1,11 +1,13 @@
-Preparation Date: Fri Aug 21, 1998
-Preparer:        John H Terpstra <jht@samba.org>
+Preparer:      Gerald Carter <jerry@samba.org>
 
-Instructions:  Preparing Samba Packages for Red Hat Linux 5.X
+Instructions:  Preparing Samba Packages for Red Hat Linux
 ===============================================================
 
-We provide support only for current versions of Red Hat Linux.
+We provide support only for the latest stable release of major 
+branches (e.g 6.2, 7.3, and 8.0).  The makerpms.sh script
+supports rpm  version 2.x, 3.x, and 4.x
 
 To produce the RPMS simply type:
-       sh makerpms.sh
+
+       root# sh makerpms.sh
 
diff --git a/packaging/RedHat/findsmb b/packaging/RedHat/findsmb
deleted file mode 100755 (executable)
index 04bc608..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/usr/bin/perl
-#
-# Prints info on all smb responding machines on a subnet.
-# This script needs to be run on a machine without nmbd running and be
-# run as root to get correct info from WIN95 clients.
-#
-# syntax:
-#    findsmb [subnet broadcast address]
-#
-# with no agrument it will list machines on the current subnet
-#
-# There will be a "+" in front of the workgroup name for machines that are
-# local master browsers for that workgroup. There will be an "*" in front
-# of the workgroup name for machines that are the domain master browser for
-# that workgroup.
-#
-
-$SAMBABIN = "/usr/bin";
-
-for ($i = 0; $i < 2; $i++) {   # test for -d option and broadcast address
-  $_ = shift;
-  if (m/-d|-D/) {
-    $DEBUG = 1;
-  } else  {
-    if ($_) {
-      $BCAST = "-B $_";
-    }
-  }
-}
-
-sub ipsort                     # do numeric sort on last field of IP address
-{
-  @t1 = split(/\./,$a);
-  @t2 = split(/\./,$b);
-  @t1[3] <=> @t2[3];
-}
-
-# look for all machines that respond to a name lookup
-
-open(NMBLOOKUP,"$SAMBABIN/nmblookup $BCAST '*'|") || 
-  die("Can't run nmblookup '*'.\n");
-
-# get rid of all lines that are not a response IP address,
-# strip everything but IP address and sort by last field in address
-
-@ipaddrs = sort ipsort grep(s/ \*<00>.*$//,<NMBLOOKUP>);
-
-# print header info
-
-print "\nIP ADDR         NETBIOS NAME   WORKGROUP/OS/VERSION $BCAST\n";
-print "---------------------------------------------------------------------\n";
-
-foreach $ip (@ipaddrs)         # loop through each IP address found
-{
-  $ip =~ s/\n//;               # strip newline from IP address
-
-# find the netbios names registered by each machine
-
-  open(NMBLOOKUP,"$SAMBABIN/nmblookup -r -A $ip|") || 
-       die("Can't get nmb name list.\n");
-  @nmblookup = <NMBLOOKUP>;
-  close NMBLOOKUP;
-
-# get the first <00> name
-
-  @name = grep(/<00>/,@nmblookup);
-  $_ = @name[0];
-  if ($_) {                     # we have a netbios name
-    if (/GROUP/) {             # is it a group name
-       ($name, $aliases, $type, $length, @addresses) = 
-       gethostbyaddr(pack('C4',split('\.',$ip)),2);
-       if (! $name) {                  # could not get name
-           $name = "unknown nis name";
-       }
-    } else {
-# The Netbios name can contain lot of characters also '<' '>'
-# and spaces. The follwing cure inside name space but not
-# names starting or ending with spaces
-       /(.{1,15})\s+<00>\s+/;
-       $name = $1;
-    }
-
-# do an smbclient command on the netbios name.
-
-    open(SMB,"$SAMBABIN/smbclient -N -L $name -I $ip -U% |") ||
-       die("Can't do smbclient command.\n");
-    @smb = <SMB>;
-    close SMB;
-
-    if ($DEBUG) {              # if -d flag print results of nmblookup and smbclient
-      print "===============================================================\n";
-      print @nmblookup;
-      print @smb;
-    }
-
-# look for the OS= string
-
-    @info = grep(/OS=/,@smb);
-    $_ = @info[0];
-    if ($_) {                          # we found response
-      s/Domain=|OS=|Server=|\n//g;     # strip out descriptions to make line shorter
-
-    } else {                           # no OS= string in response (WIN95 client)
-
-# for WIN95 clients get workgroup name from nmblookup response
-      @name = grep(/<00> - <GROUP>/,@nmblookup);
-      $_ = @name[0];
-      if ($_) {
-# Same as before for space and characters
-        /(.{1,15})\s+<00>\s+/;
-        $_ = "[$1]";
-      } else {
-       $_ = "Unknown Workgroup";
-      }
-    }
-
-# see if machine registered a local master browser name
-    if (grep(/<1d>/,@nmblookup)) {
-      $master = '+';                   # indicate local master browser
-      if (grep(/<1b>/,@nmblookup)) {   # how about domain master browser?
-        $master = '*';                 # indicate domain master browser
-      }
-    } else {
-      $master = ' ';                   # not a browse master
-    }
-
-# line up info in 3 columns
-
-    print "$ip".' 'x(16-length($ip))."$name".' 'x(14-length($name))."$master"."$_\n";
-
-  } else {                             # no netbios name found
-# try getting the host name
-    ($name, $aliases, $type, $length, @addresses) = 
-      gethostbyaddr(pack('C4',split('\.',$ip)),2);
-    if (! $name) {                     # could not get name
-      $name = "unknown nis name";
-    }
-    if ($DEBUG) {                      # if -d flag print results of nmblookup
-      print "===============================================================\n";
-      print @nmblookup;
-    }
-    print "$ip".' 'x(16-length($ip))."$name\n";
-  }
-} 
-
index 44b89a45ec8eb2dec6334dc69677e8cdac4b4574..4b01e13df36edb63754a8ecc4fbad3909f643e6b 100644 (file)
@@ -1,25 +1,59 @@
 #!/bin/sh
-# Copyright (C) John H Terpstra 1998
+# Copyright (C) John H Terpstra 1998-2002
 # Updated for RPM 3 by Jochen Wiedmann, joe@ispsoft.de
 # Changed for a generic tar file rebuild by abartlet@pcug.org.au
+# Changed by John H Terpstra to build on RH7.2 - should also work for earlier versions jht@samba.org
+
+# The following allows environment variables to override the target directories
+#   the alternative is to have a file in your home directory calles .rpmmacros
+#   containing the following:
+#   %_topdir  /home/mylogin/redhat
+#
+# Note: Under this directory rpm expects to find the same directories that are under the
+#   /usr/src/redhat directory
+#
+if [ -x ~/.rpmmacros ]; then
+       TOPDIR=`awk '/topdir/ {print $2}' < ~/.rpmmacros`
+       if [ z$TOPDIR <> "z" ]; then
+               SPECDIR=${TOPDIR}/SPECS
+               SRCDIR=${TOPDIR}/SOURCES
+       fi
+fi
+
+SPECDIR=${SPECDIR:-/usr/src/redhat/SPECS}
+SRCDIR=${SRCDIR:-/usr/src/redhat/SOURCES}
+
+# At this point the SPECDIR and SRCDIR vaiables must have a value!
+
 USERID=`id -u`
 GRPID=`id -g`
 VERSION='PVERSION'
 
-rm -f ../../samba2.*.spec
+RPMVER=`rpm --version | awk '{print $3}'`
+RPM="rpm"
+echo The RPM Version on this machine is: $RPMVER
 
-case `rpm --version | awk '{print $3}'` in
-    2.*)
-       sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2.spec > samba2.rpm2.spec
-       cp samba2.rpm2.spec ../../
+case $RPMVER in
+    2*)
+       echo Building for RPM v2.x
+       sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2.spec > samba.spec
+       sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2-devel.spec > samba-devel.spec
+       ;;
+    3*)
+       echo Building for RPM v3.x
+       sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2.spec > samba.spec
+       sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2-devel.spec > samba-devel.spec
        ;;
-    3.*)
-       sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2.spec > samba2.rpm3.spec
-       cp samba2.rpm3.spec ../../
+    4.1*)
+       echo Building for RPM v4.1
+       RPM="rpmbuild"
+       sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2.spec > samba.spec
+       sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2-devel.spec > samba-devel.spec
        ;;
-    4.*)
-       sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2.spec > samba2.rpm4.spec
-       cp samba2.rpm4.spec ../../
+    4*)
+       echo Building for RPM v4.x
+       sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2.spec > samba.spec
+       sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2-devel.spec > samba-devel.spec
        ;;
     *)
        echo "Unknown RPM version: `rpm --version`"
@@ -29,10 +63,28 @@ esac
 
 ( cd ../../source; if [ -f Makefile ]; then make distclean; fi )
 ( cd ../../.. ; chown -R ${USERID}.${GRPID} samba-${VERSION} )
-( cd ../../.. ; tar --exclude=CVS -czvf samba-${VERSION}.tar.gz samba-${VERSION}/samba2.*.spec samba-${VERSION} )
 
-rpm -ta -v ../../../samba-${VERSION}.tar.gz
+# We do this to make sure that the package always has the current version in it''s name
+if [ z$1 = z"devel" ]; then
+       (cd ../../.. ; mv samba samba-${VERSION} )
+fi
+
+( cd ../../.. ; tar --exclude=CVS -cf - samba-${VERSION} | bzip2 > ${SRCDIR}/samba-${VERSION}.tar.bz2 )
 
+cp -av samba.spec ${SPECDIR}
+cp -av samba-devel.spec ${SPECDIR}
 
+if [ z$1 = "zdevel" ]; then
+       echo Restoring source samba directory name
+       ( cd ../../.. ; mv samba-${VERSION} samba )
+       echo Getting Ready to build Developmental Build
+       cd ${SPECDIR}
+       rpm -ba -v samba-devel.spec
+else
+       echo Getting Ready to build release package
+       cd ${SPECDIR}
+       rpm -ba -v --clean --rmsource samba.spec
+fi
 
+echo Done.
 
index 0766653c2342d5d9be28f321e69499595ca2b0d6..4e38e66517317042f31881bc8e36958ef6b0c2ac 100644 (file)
@@ -4,46 +4,35 @@ Version: PVERSION
 Release: PRELEASE
 Copyright: GNU GPL version 2
 Group: Networking
-Source: ftp://samba.org/pub/samba/samba-%{version}.tar.gz
-Packager: John H Terpstra [Samba-Team] <jht@samba.org>
+Source: http://download.samba.org/samba/ftp/samba-%{version}.tar.bz2
+Packager: Gerald Carter [Samba-Team] <jerry@samba.org>
 Requires: pam >= 0.72 kernel >= 2.2.1 glibc >= 2.1.2
 Prereq: chkconfig fileutils
-Provides: samba = %{version}, samba-common = %{version}, samba-client = %{version}, samba-swat = %{version}
+Provides: samba = %{version}
+Obsoletes: samba-common, samba-client, samba-swat
 BuildRoot: /var/tmp/samba
 Prefix: /usr
 
 %description
-Samba provides an SMB server which can be used to provide
-network services to SMB (sometimes called "Lan Manager")
-clients, including various versions of MS Windows, OS/2,
-and other Linux machines. Samba also provides some SMB
-clients, which complement the built-in SMB filesystem
-in Linux. Samba uses NetBIOS over TCP/IP (NetBT) protocols
-and does NOT need NetBEUI (Microsoft Raw NetBIOS frame)
-protocol.
-
-Samba-2.2 features working NT Domain Control capability and 
-includes the SWAT (Samba Web Administration Tool) that 
-allows samba's smb.conf file to be remotely managed using your 
-favourite web browser. For the time being this is being
-enabled on TCP port 901 via inetd.
-
 Users are advised to use Samba-2.2 as a Windows NT4
-Domain Controller only on networks that do NOT have a Windows
-NT Domain Controller. This release does NOT as yet have
-Backup Domain control ability.
+Samba provides an SMB/CIFS server which can be used to provide
+network file and print services to SMB/CIFS clients, including 
+various versions of MS Windows, OS/2, and other Linux machines. 
+Samba also provides some SMB clients, which complement the 
+built-in SMB filesystem in Linux. Samba uses NetBIOS over TCP/IP 
+(NetBT) protocols and does NOT need NetBEUI (Microsoft Raw NetBIOS 
+frame) protocol.
 
 Please refer to the WHATSNEW.txt document for fixup information.
-This binary release includes encrypted password support.
 
-Please read the smb.conf file and ENCRYPTION.txt in the
-docs directory for implementation details.
+%changelog
+* Thu Jun 6 2002 Gerald Carter <jerry@samba.org>
+  - add separate winbindd init script
+  - build and install libsmbclient
 
-NOTE: Red Hat Linux uses PAM which has integrated support
-for Shadow passwords and quotas. Do NOT recompile with the
-SHADOW_PWD option enabled
+* Sun Jun 2 2002 Gerald Carter <jerry@samba.org>
+  - include audit and recycle VFS modules in /usr/lib/samba
 
-%changelog
 * Mon May 6 2002 Gerald Carter <jerry@samba.org>
   - moved findsmb to a standard component in samba's 
     "make install".  Removed from specfile.
@@ -150,6 +139,7 @@ SHADOW_PWD option enabled
 %setup
 
 %build
+## Build main Samba source
 cd source
 
 %ifarch ia64
@@ -169,15 +159,22 @@ CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \
        --with-msdfs \
        --with-smbmount \
        --with-pam \
+       --with-pam_smbpass \
        --with-syslog \
        --with-utmp \
        --with-sambabook=%{prefix}/share/swat/using_samba \
-       --with-swatdir=%{prefix}/share/swat
+       --with-swatdir=%{prefix}/share/swat \
+       --with-libsmbclient 
 make -j${NUMCPU} proto
 make -j${NUMCPU} all nsswitch/libnss_wins.so
 make -j${NUMCPU} debug2html
 make -j${NUMCPU} bin/smbspool
 
+## Build VFS modules
+cd ../examples/VFS
+make
+
+
 
 %install
 rm -rf $RPM_BUILD_ROOT
@@ -194,22 +191,25 @@ mkdir -p $RPM_BUILD_ROOT/var/cache/samba
 mkdir -p $RPM_BUILD_ROOT/var/{log,run}/samba
 mkdir -p $RPM_BUILD_ROOT/var/spool/samba
 mkdir -p $RPM_BUILD_ROOT/lib/security
+mkdir -p $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+mkdir -p $RPM_BUILD_ROOT%{prefix}/{lib,include}
 
 # Install standard binary files
 for i in nmblookup smbclient smbpasswd smbstatus testparm testprns \
-      make_printerdef rpcclient smbspool smbcacls smbcontrol wbinfo
+      rpcclient smbspool smbcacls smbcontrol wbinfo smbmnt
 do
-install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/bin
+       install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/bin
 done
-for i in mksmbpasswd.sh smbtar 
+
+for i in mksmbpasswd.sh smbtar findsmb
 do
-install -m755 source/script/$i $RPM_BUILD_ROOT%{prefix}/bin
+       install -m755 source/script/$i $RPM_BUILD_ROOT%{prefix}/bin
 done
 
 # Install secure binary files
-for i in smbd nmbd swat smbmount smbumount smbmnt debug2html winbindd
+for i in smbd nmbd swat smbmount smbumount debug2html winbindd
 do
-install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/sbin
+       install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/sbin
 done
 
 # we need a symlink for mount to recognise the smb and smbfs filesystem types
@@ -221,15 +221,16 @@ ln -sf %{prefix}/sbin/smbmount $RPM_BUILD_ROOT/sbin/mount.smb
 cd source
 make BASEDIR=$RPM_BUILD_ROOT/usr \
        LIBDIR=$RPM_BUILD_ROOT/etc/samba \
+       VARDIR=$RPM_BUILD_ROOT/var \
        SBINDIR=$RPM_BUILD_ROOT%{prefix}/sbin \
        BINDIR=$RPM_BUILD_ROOT%{prefix}/bin \
        MANDIR=$RPM_BUILD_ROOTMANDIR_MACRO \
        SWATDIR=$RPM_BUILD_ROOT/usr/share/swat \
        SAMBABOOK=$RPM_BUILD_ROOT/usr/share/swat/using_samba \
-       installman installcp installswat
+       installman installswat
 cd ..
 
-# Install the nsswitch library extension file
+# Install the nsswitch wins library
 install -m755 source/nsswitch/libnss_wins.so $RPM_BUILD_ROOT/lib
 
 # Make link for wins resolver
@@ -239,24 +240,41 @@ install -m755 source/nsswitch/libnss_wins.so $RPM_BUILD_ROOT/lib
 install -m755 source/nsswitch/libnss_winbind.so $RPM_BUILD_ROOT/lib
 install -m755 source/nsswitch/pam_winbind.so $RPM_BUILD_ROOT/lib/security
 
+# Install pam_smbpass.so
+install -m755 source/bin/pam_smbpass.so $RPM_BUILD_ROOT/lib/security
+
+# Install the VFS modules
+install -m755 examples/VFS/recycle.so $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+install -m755 examples/VFS/audit.so $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+install -m755 examples/VFS/netatalk.so $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+
+# clean out VFS directory since it will get installed as documentation later
+(cd examples/VFS; make clean)
+
+# libsmbclient
+install -m 755 source/bin/libsmbclient.so $RPM_BUILD_ROOT%{prefix}/lib/
+install -m 755 source/bin/libsmbclient.a $RPM_BUILD_ROOT%{prefix}/lib/
+install -m 644 source/include/libsmbclient.h $RPM_BUILD_ROOT%{prefix}/include/
+
 # Install SWAT helper files
 for i in swat/help/*.html docs/htmldocs/*.html
 do
-install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/help
+       install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/help
 done
 for i in swat/images/*.gif
 do
-install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/images
+       install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/images
 done
 for i in swat/include/*.html
 do
-install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/include
+       install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/include
 done
 
 # Install the miscellany
 install -m644 swat/README $RPM_BUILD_ROOT%{prefix}/share/swat
 install -m755 packaging/RedHat/smbprint $RPM_BUILD_ROOT%{prefix}/bin
 install -m755 packaging/RedHat/smb.init $RPM_BUILD_ROOT/etc/rc.d/init.d/smb
+install -m755 packaging/RedHat/winbind.init $RPM_BUILD_ROOT/etc/rc.d/init.d/winbind
 install -m755 packaging/RedHat/smb.init $RPM_BUILD_ROOT%{prefix}/sbin/samba
 install -m644 packaging/RedHat/samba.log $RPM_BUILD_ROOT/etc/logrotate.d/samba
 install -m644 packaging/RedHat/smb.conf $RPM_BUILD_ROOT/etc/samba/smb.conf
@@ -271,7 +289,9 @@ rm -rf $RPM_BUILD_ROOT
 
 %post
 /sbin/chkconfig --add smb
+/sbin/chkconfig --add winbind
 /sbin/chkconfig smb off
+/sbin/chkconfig winbind off
 
 echo "Looking for old /etc/smb.conf..."
 if [ -f /etc/smb.conf -a ! -f /etc/samba/smb.conf ]; then
@@ -465,7 +485,7 @@ fi
 %{prefix}/sbin/smbd
 %{prefix}/sbin/nmbd
 %{prefix}/sbin/swat
-%{prefix}/sbin/smbmnt
+%{prefix}/bin/smbmnt
 %{prefix}/sbin/smbmount
 %{prefix}/sbin/smbumount
 %{prefix}/sbin/winbindd
@@ -480,9 +500,6 @@ fi
 %{prefix}/bin/findsmb
 %{prefix}/bin/smbstatus
 %{prefix}/bin/nmblookup
-%{prefix}/bin/make_smbcodepage
-%{prefix}/bin/make_unicodemap
-%{prefix}/bin/make_printerdef
 %{prefix}/bin/smbpasswd
 %{prefix}/bin/smbtar
 %{prefix}/bin/smbprint
@@ -490,6 +507,10 @@ fi
 %{prefix}/bin/smbcacls
 %{prefix}/bin/wbinfo
 %attr(755,root,root) /lib/libnss_wins.s*
+%attr(755,root,root) %{prefix}/lib/samba/vfs/*.so
+%{prefix}/include/libsmbclient.h
+%{prefix}/lib/libsmbclient.a
+%{prefix}/lib/libsmbclient.so
 %{prefix}/share/swat/help/*
 %{prefix}/share/swat/images/*
 %{prefix}/share/swat/include/header.html
@@ -501,16 +522,17 @@ fi
 /etc/samba/samba.stack
 /etc/samba/samba.xinetd
 /etc/rc.d/init.d/smb
+/etc/rc.d/init.d/winbind
 /etc/logrotate.d/samba
 %config(noreplace) /etc/pam.d/samba
 MANDIR_MACRO/man1/*
 MANDIR_MACRO/man5/*
 MANDIR_MACRO/man7/*
 MANDIR_MACRO/man8/*
-%dir /etc/codepages/*
 %attr(755,root,root) %dir /var/cache/samba
 %dir /var/log/samba
 %dir /var/run/samba
 %attr(1777,root,root) %dir /var/spool/samba
 %attr(-,root,root) /lib/libnss_winbind.so
 %attr(-,root,root) /lib/security/pam_winbind.so
+%attr(-,root,root) /lib/security/pam_smbpass.so
index 5419b2b9c6e3d2301d547464b9a51a0ed7e7e390..f50da2c6b2a86f801a3d28527cc19147a2552a1e 100755 (executable)
@@ -24,26 +24,27 @@ case "$1" in
        echo -n "Starting SMB services: "
        daemon smbd -D  
        daemon nmbd -D 
-       if [ "`grep -i 'winbind uid' /etc/samba/smb.conf | egrep -v [\#\;]`" ]; then
-               daemon winbindd 
-       fi
        echo
        touch /var/lock/subsys/smb
        ;;
   stop)
        echo -n "Shutting down SMB services: "
-       killproc smbd -TERM
+
+       ## we have to get all the smbd process here instead of just the
+       ## main parent (i.e. killproc) because it can take a long time
+       ## for an individual process to process a TERM signal
+       smbdpids=`ps guax | grep smbd | grep -v grep | awk '{print $2}'`
+       for pid in $smbdpids; do
+               kill -TERM $pid
+       done
+       ## nmbd is ok to kill using killproc()
        killproc nmbd -TERM
-       if [ "`ps -ef | grep winbind | grep -v grep`" ]; then
-               killproc winbindd
-       fi
        rm -f /var/lock/subsys/smb
        echo ""
        ;;
   status)
        status smbd
        status nmbd
-       status winbindd
        ;;
   restart)
        echo -n "Restarting SMB services: "
diff --git a/packaging/RedHat/winbind.init b/packaging/RedHat/winbind.init
new file mode 100644 (file)
index 0000000..291c351
--- /dev/null
@@ -0,0 +1,91 @@
+#!/bin/sh
+#
+# chkconfig: 345 81 45
+# description: Starts and stops the Samba winbind daemon to provide \
+# user and group information from a domain controller to linux.
+
+# Source function library.
+if [ -f /etc/init.d/functions ] ; then
+  . /etc/init.d/functions
+elif [ -f /etc/rc.d/init.d/functions ] ; then
+  . /etc/rc.d/init.d/functions
+else
+  exit 0
+fi
+
+# Source networking configuration.
+. /etc/sysconfig/network
+
+# Check that networking is up.
+[ ${NETWORKING} = "no" ] && exit 0
+
+# Check that smb.conf exists.
+[ -f /etc/samba/smb.conf ] || exit 0
+
+RETVAL=0
+
+
+start() {
+       echo -n "Starting Winbind services: "
+       RETVAL=1
+       if [ "`grep -i 'winbind uid' /etc/samba/smb.conf | egrep -v [\#\;]`" ]; then
+               daemon winbindd
+               RETVAL=$?
+       fi
+       echo
+       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/winbind || \
+          RETVAL=1
+       return $RETVAL
+}      
+stop() {
+       echo -n "Shutting down Winbind services: "
+       RETVAL=1
+       if [ "`grep -i 'winbind uid' /etc/samba/smb.conf | egrep -v [\#\;]`" ]; then
+               killproc winbindd
+               RETVAL=$?
+       fi
+       echo
+       [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/winbind
+       return $RETVAL
+}      
+restart() {
+       stop
+       start
+}      
+reload() {
+       export TMPDIR="/var/tmp"
+        echo -n "Checking domain trusts: "
+       killproc winbindd -HUP
+       RETVAL=$?
+       echo
+       return $RETVAL
+}      
+mdkstatus() {
+       status winbindd
+}      
+
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart)
+       restart
+       ;;
+  reload)
+       reload
+       ;;
+  status)
+       mdkstatus
+       ;;
+  condrestart)
+       [ -f /var/lock/subsys/winbindd ] && restart || :
+       ;;
+  *)
+       echo "Usage: $0 {start|stop|restart|status|condrestart}"
+       exit 1
+esac
+
+exit $?
index 589b1a602b8027bc3056c0019565c8431892ce26..0fae3e4667c0e3f6905f3c039f72117680dfeebe 100644 (file)
@@ -23,7 +23,6 @@ PYTHON=@PYTHON@
 TERMLDFLAGS=@TERMLDFLAGS@
 TERMLIBS=@TERMLIBS@
 PRINTLIBS=@PRINTLIBS@
-AUTHLIBS=@AUTHLIBS@
 
 LINK=$(CC) $(FLAGS) $(LDFLAGS)
 
@@ -141,8 +140,7 @@ LIB_OBJ = lib/charcnv.o lib/debug.o lib/fault.o \
          lib/md5.o lib/hmacmd5.o lib/iconv.o lib/smbpasswd.o \
          nsswitch/wb_client.o nsswitch/wb_common.o \
          lib/pam_errors.o intl/lang_tdb.o lib/account_pol.o \
-         lib/adt_tree.o lib/popt_common.o lib/gencache.o $(TDB_OBJ) \
-         lib/module.o
+         lib/adt_tree.o lib/popt_common.o lib/gencache.o $(TDB_OBJ) 
 
 LIB_SMBD_OBJ = lib/system_smbd.o lib/util_smbd.o
 
@@ -224,13 +222,6 @@ PASSDB_OBJ = $(PASSDB_GET_SET_OBJ) passdb/passdb.o passdb/pdb_interface.o \
                passdb/pdb_unix.o passdb/util_sam_sid.o \
                passdb/pdb_compat.o passdb/pdb_nisplus.o
 
-SAM_STATIC_MODULES = sam/sam_plugin.o sam/sam_skel.o sam/sam_ads.o
-
-SAM_OBJ = sam/account.o sam/get_set_account.o sam/get_set_group.o \
-               sam/get_set_domain.o sam/interface.o $(SAM_STATIC_MODULES)
-
-SAMTEST_OBJ = torture/samtest.o torture/cmd_sam.o $(SAM_OBJ) $(LIB_OBJ) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(READLINE_OBJ) lib/util_seaccess.o $(LIBADS_OBJ) $(PASSDB_OBJ) $(SECRETS_OBJ) $(GROUPDB_OBJ)
-
 GROUPDB_OBJ = groupdb/mapping.o
 
 # passdb/smbpass.o passdb/ldap.o passdb/nispass.o 
@@ -459,7 +450,7 @@ PROTO_OBJ = $(SMBD_OBJ_MAIN) \
            $(PRINTING_OBJ) $(PRINTBACKEND_OBJ) $(OPLOCK_OBJ) $(NOTIFY_OBJ) \
            $(QUOTAOBJS) $(PASSDB_OBJ) $(GROUPDB_OBJ) $(MSDFS_OBJ) \
            $(READLINE_OBJ) $(PROFILE_OBJ) $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) \
-           $(LIB_SMBD_OBJ) $(SAM_OBJ) $(REGISTRY_OBJ)
+           $(LIB_SMBD_OBJ) $(REGISTRY_OBJ)
 
 NSS_OBJ_0 = nsswitch/wins.o $(PARAM_OBJ) $(UBIQX_OBJ) $(LIBSMB_OBJ) \
            $(LIB_OBJ) $(NSSWINS_OBJ)
@@ -618,8 +609,7 @@ bin/.dummy:
 
 bin/smbd: $(SMBD_OBJ) bin/.dummy
        @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) \
-         $(AUTHLIBS) $(LIBS) 
+       @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) $(LIBS) 
 
 bin/nmbd: $(NMBD_OBJ) bin/.dummy
        @echo Linking $@
@@ -631,8 +621,7 @@ bin/wrepld: $(WREPL_OBJ) bin/.dummy
 
 bin/swat: $(SWAT_OBJ) bin/.dummy
        @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) \
-         $(AUTHLIBS) $(LIBS) 
+       @$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) $(LIBS) 
 
 bin/rpcclient: $(RPCCLIENT_OBJ) @BUILD_POPT@ bin/.dummy
        @echo Linking $@
@@ -690,10 +679,6 @@ bin/pdbedit: $(PDBEDIT_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(PDBEDIT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @BUILD_POPT@
 
-bin/samtest: $(SAMTEST_OBJ) bin/.dummy
-       @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(SAMTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(LIBS) @BUILD_POPT@
-
 bin/smbgroupedit: $(SMBGROUPEDIT_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(SMBGROUPEDIT_OBJ) $(LDFLAGS) $(LIBS)
@@ -732,7 +717,7 @@ bin/nsstest: $(NSSTEST_OBJ) bin/.dummy
 
 bin/vfstest: $(VFSTEST_OBJ) bin/.dummy
        @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(VFSTEST_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(PRINTLIBS) $(AUTHLIBS) $(LIBS) @BUILD_POPT@
+       @$(CC) $(FLAGS) -o $@ $(VFSTEST_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(PRINTLIBS) $(LIBS) @BUILD_POPT@
 
 bin/locktest2: $(LOCKTEST2_OBJ) bin/.dummy
        @echo Linking $@
@@ -779,12 +764,8 @@ bin/libsmbclient.a: $(LIBSMBCLIENT_PICOBJS)
 
 libsmbclient: bin/libsmbclient.a bin/libsmbclient.@SHLIBEXT@
 
-bin/pdb_mysql.@SHLIBEXT@: $(PDB_MYSQL_OBJ)
-       echo "Building plugin $@"
-       $(SHLD) $(LDSHFLAGS) -o $@ $(PDB_MYSQL_OBJ) @MYSQL_LIBS@ \
-               @SONAMEFLAG@`basename $@`
 
-nsswitch/libnss_wins.@SHLIBEXT@: $(NSS_OBJ)
+nsswitch/libnss_wins.so: $(NSS_OBJ)
        @echo "Linking $@"
        @$(SHLD) $(LDSHFLAGS) -o $@ $(NSS_OBJ) -lc \
                @SONAMEFLAG@`basename $@`
@@ -828,28 +809,28 @@ bin/tdbbackup: $(TDBBACKUP_OBJ) bin/.dummy
 install: installbin installman installscripts installdat installswat 
 
 installdirs:
-       @$(SHELL) $(srcdir)/script/installdirs.sh $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(PRIVATEDIR)
+       @$(SHELL) $(srcdir)/script/installdirs.sh $(BASEDIR) $(BINDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(PRIVATEDIR)
 
 installservers: all installdirs
-       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SPROGS)
+       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(BASEDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(SPROGS)
 
 installbin: all installdirs
-       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SPROGS)
-       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(PROGS)
+       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(BASEDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(SPROGS)
+       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(BASEDIR) $(BINDIR) $(LIBDIR) $(VARDIR) $(PROGS)
 
 installscripts: installdirs
-       @$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS)
+       @$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS) $(BINDIR) $(SCRIPTS)
 
 installdat: installdirs
-       @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(LIBDIR) $(srcdir)
+       @$(SHELL) $(srcdir)/script/installdat.sh $(LIBDIR) $(srcdir)
 
 installswat: installdirs
-       @$(SHELL) $(srcdir)/script/installswat.sh $(DESTDIR)$(SWATDIR) $(srcdir)
+       @$(SHELL) $(srcdir)/script/installswat.sh $(SWATDIR) $(srcdir)
 
 installclientlib:
-       -$(INSTALLCMD) bin/libsmbclient.@SHLIBEXT@ $(DESTDIR)${prefix}/lib
-       -$(INSTALLCMD) -d $(DESTDIR)${prefix}/include
-       -$(INSTALLCMD) include/libsmbclient.h $(DESTDIR)${prefix}/include
+       -$(INSTALLCMD) bin/libsmbclient.@SHLIBEXT@ ${prefix}/lib
+       -$(INSTALLCMD) -d ${prefix}/include
+       -$(INSTALLCMD) include/libsmbclient.h ${prefix}/include
 
 # Python extensions
 
@@ -904,7 +885,7 @@ revert:
        @$(SHELL) $(srcdir)/script/revert.sh $(BINDIR) $(PROGS) $(SCRIPTS)
 
 installman:
-       @$(SHELL) $(srcdir)/script/installman.sh $(DESTDIR)$(MANDIR) $(srcdir) $(man_langs) "@ROFF@"
+       @$(SHELL) $(srcdir)/script/installman.sh $(MANDIR) $(srcdir) $(man_langs) "@ROFF@"
 
 .PHONY: showlayout
 
@@ -921,14 +902,14 @@ showlayout:
 uninstall: uninstallman uninstallbin uninstallscripts
 
 uninstallman:
-       @$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(MANDIR) $(srcdir) $(man_langs)
+       @$(SHELL) $(srcdir)/script/uninstallman.sh $(MANDIR) $(srcdir) $(man_langs)
 
 uninstallbin:
-       @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(SPROGS)
-       @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(PROGS)
+       @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(BASEDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(SPROGS)
+       @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(BASEDIR) $(BINDIR) $(LIBDIR) $(VARDIR) $(PROGS)
 
 uninstallscripts:
-       @$(SHELL) $(srcdir)/script/uninstallscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS)
+       @$(SHELL) $(srcdir)/script/uninstallscripts.sh $(INSTALLPERMS) $(BINDIR) $(SCRIPTS)
 
 # Toplevel clean files
 TOPFILES=dynconfig.o dynconfig.po
index 1251432b871462ebb187ea8991e54f85761fda10..6f4b3f8b15bb95ac98161f45ce470ba39af4fc7e 100644 (file)
@@ -49,7 +49,7 @@ static BOOL update_smbpassword_file(const char *user, const char *password)
         * Remove the account disabled flag - we are updating the
         * users password from a login.
         */
-       if (!pdb_set_acct_ctrl(sampass, pdb_get_acct_ctrl(sampass) & ~ACB_DISABLED, PDB_CHANGED)) {
+       if (!pdb_set_acct_ctrl(sampass, pdb_get_acct_ctrl(sampass) & ~ACB_DISABLED)) {
                pdb_free_sam(&sampass);
                return False;
        }
index b14344ef50f4fe2103c1ea32d8a72271f300b886..ce5fd32337b0891217130c1083c1f5b31ed8f1b1 100644 (file)
@@ -931,47 +931,47 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
                return nt_status;
        }
                
-       if (!pdb_set_user_sid(sam_account, &user_sid, PDB_CHANGED)) {
+       if (!pdb_set_user_sid(sam_account, &user_sid)) {
                pdb_free_sam(&sam_account);
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       if (!pdb_set_group_sid(sam_account, &group_sid, PDB_CHANGED)) {
+       if (!pdb_set_group_sid(sam_account, &group_sid)) {
                pdb_free_sam(&sam_account);
                return NT_STATUS_UNSUCCESSFUL;
        }
                
-       if (!pdb_set_nt_username(sam_account, nt_username, PDB_CHANGED)) {
+       if (!pdb_set_nt_username(sam_account, nt_username)) {
                pdb_free_sam(&sam_account);
                return NT_STATUS_NO_MEMORY;
        }
 
-       if (!pdb_set_domain(sam_account, nt_domain, PDB_CHANGED)) {
+       if (!pdb_set_domain(sam_account, nt_domain)) {
                pdb_free_sam(&sam_account);
                return NT_STATUS_NO_MEMORY;
        }
 
-       if (!pdb_set_fullname(sam_account, pdb_unistr2_convert(&(info3->uni_full_name)), PDB_CHANGED)) {
+       if (!pdb_set_fullname(sam_account, pdb_unistr2_convert(&(info3->uni_full_name)))) {
                pdb_free_sam(&sam_account);
                return NT_STATUS_NO_MEMORY;
        }
 
-       if (!pdb_set_logon_script(sam_account, pdb_unistr2_convert(&(info3->uni_logon_script)), PDB_CHANGED)) {
+       if (!pdb_set_logon_script(sam_account, pdb_unistr2_convert(&(info3->uni_logon_script)), True)) {
                pdb_free_sam(&sam_account);
                return NT_STATUS_NO_MEMORY;
        }
 
-       if (!pdb_set_profile_path(sam_account, pdb_unistr2_convert(&(info3->uni_profile_path)), PDB_CHANGED)) {
+       if (!pdb_set_profile_path(sam_account, pdb_unistr2_convert(&(info3->uni_profile_path)), True)) {
                pdb_free_sam(&sam_account);
                return NT_STATUS_NO_MEMORY;
        }
 
-       if (!pdb_set_homedir(sam_account, pdb_unistr2_convert(&(info3->uni_home_dir)), PDB_CHANGED)) {
+       if (!pdb_set_homedir(sam_account, pdb_unistr2_convert(&(info3->uni_home_dir)), True)) {
                pdb_free_sam(&sam_account);
                return NT_STATUS_NO_MEMORY;
        }
 
-       if (!pdb_set_dir_drive(sam_account, pdb_unistr2_convert(&(info3->uni_dir_drive)), PDB_CHANGED)) {
+       if (!pdb_set_dir_drive(sam_account, pdb_unistr2_convert(&(info3->uni_dir_drive)), True)) {
                pdb_free_sam(&sam_account);
                return NT_STATUS_NO_MEMORY;
        }
index 96b9837fef10884091b684458016095a9002228b..0b10a9fa0a842a113c282dafcda817097e883b8d 100644 (file)
@@ -94,10 +94,10 @@ static pstring fileselection = "";
 extern file_info def_finfo;
 
 /* timing globals */
-SMB_BIG_UINT get_total_size = 0;
-unsigned int get_total_time_ms = 0;
-static SMB_BIG_UINT put_total_size = 0;
-static unsigned int put_total_time_ms = 0;
+int get_total_size = 0;
+int get_total_time_ms = 0;
+static int put_total_size = 0;
+static int put_total_time_ms = 0;
 
 /* totals globals */
 static double dir_total;
index 3c1b4f5a280064175db311a9fecc4cec628bd651..57263e77b79e72da251a175d90592a4010f3af2b 100755 (executable)
@@ -870,7 +870,6 @@ Optional Packages:
   --with-smbmount         Include SMBMOUNT (Linux only) support (default=no)
   --with-pam              Include PAM support (default=no)
   --with-pam_smbpass      Build a PAM module to allow other applications to use our smbpasswd file (default=no)
-  --with-sam              Build new (experimental) SAM database (default=no)
   --with-ldapsam           Include LDAP SAM 2.2 compatible configuration (default=no)
   --with-tdbsam           Include experimental TDB SAM support (default=no)
   --with-nisplussam       Include NISPLUS SAM support (default=no)
@@ -11526,8 +11525,7 @@ done
 
 
 
-
-for ac_func in syslog vsyslog getgrouplist timegm
+for ac_func in syslog vsyslog getgrouplist
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -20536,36 +20534,6 @@ _ACEOF
 fi
 fi
 
-# New experimental SAM system
-
-echo "$as_me:$LINENO: checking whether to build the new (experimental) SAM database" >&5
-echo $ECHO_N "checking whether to build the new (experimental) SAM database... $ECHO_C" >&6
-
-# Check whether --with-sam or --without-sam was given.
-if test "${with_sam+set}" = set; then
-  withval="$with_sam"
-   case "$withval" in
-  yes)
-    echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-cat >>confdefs.h <<\_ACEOF
-#define WITH_SAM 1
-_ACEOF
-
-    ;;
-  *)
-    echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-    ;;
-  esac
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-
-fi;
-
-
 ########################################################################################
 ##
 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
@@ -22725,7 +22693,7 @@ builddir=`pwd`
 # I added make files that are outside /source directory.
 # I know this is not a good solution, will work out a better
 # solution soon.                       --simo
-                                                                      ac_config_files="$ac_config_files include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/pdb/mysql/Makefile ../examples/pdb/xml/Makefile ../examples/sam/Makefile"
+                                                            ac_config_files="$ac_config_files include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/pdb/mysql/Makefile ../examples/pdb/xml/Makefile"
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -23236,7 +23204,6 @@ do
   "../examples/VFS/Makefile" ) CONFIG_FILES="$CONFIG_FILES ../examples/VFS/Makefile" ;;
   "../examples/pdb/mysql/Makefile" ) CONFIG_FILES="$CONFIG_FILES ../examples/pdb/mysql/Makefile" ;;
   "../examples/pdb/xml/Makefile" ) CONFIG_FILES="$CONFIG_FILES ../examples/pdb/xml/Makefile" ;;
-  "../examples/sam/Makefile" ) CONFIG_FILES="$CONFIG_FILES ../examples/sam/Makefile" ;;
   "include/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;;
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
index 906bf5f348e6c267503a2468ca1c6322123ea080..0275c7b318c9faa4d6beec82ec982ab851e707a2 100644 (file)
@@ -749,7 +749,7 @@ AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate
 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
-AC_CHECK_FUNCS(syslog vsyslog getgrouplist timegm)
+AC_CHECK_FUNCS(syslog vsyslog getgrouplist)
 # setbuffer is needed for smbtorture
 AC_CHECK_FUNCS(setbuffer)
 
@@ -2195,24 +2195,6 @@ if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
 fi
 fi
 
-# New experimental SAM system
-
-AC_MSG_CHECKING([whether to build the new (experimental) SAM database])
-AC_ARG_WITH(sam,
-[  --with-sam              Build new (experimental) SAM database (default=no)],
-[ case "$withval" in
-  yes)
-    AC_MSG_RESULT(yes)
-    AC_DEFINE(WITH_SAM,1,[Whether to build the new (experimental) SAM database])
-    ;;
-  *)
-    AC_MSG_RESULT(no)
-    ;;
-  esac ],
-  AC_MSG_RESULT(no)
-)
-
-
 ########################################################################################
 ##
 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
@@ -2403,7 +2385,7 @@ AC_ARG_WITH(manpages-langs,
   esac
 
   AC_MSG_RESULT($manlangs)
-  manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
+  manlangs=`echo $manlangs | sed "s/,/ /"`   # replacing commas with spaces to produce a list
   AC_SUBST(manlangs)],
 
   [manlangs="en"
@@ -3149,7 +3131,7 @@ AC_SUBST(builddir)
 # I added make files that are outside /source directory.
 # I know this is not a good solution, will work out a better
 # solution soon.                       --simo
-AC_OUTPUT(include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/pdb/mysql/Makefile ../examples/pdb/xml/Makefile ../examples/sam/Makefile)
+AC_OUTPUT(include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/pdb/mysql/Makefile ../examples/pdb/xml/Makefile)
 
 #################################################
 # Print very concise instructions on building/use
index f1f9fdafc126813cef3c4ac1cec52cc45d241047..0f05316949a1894b75a7a5ada4689cd1cd15f4e7 100644 (file)
@@ -313,7 +313,7 @@ BOOL add_initial_entry(gid_t gid, fstring sid, enum SID_NAME_USE sid_name_use,
        map.priv_set.count=priv_set.count;
        map.priv_set.set=priv_set.set;
 
-       pdb_add_group_mapping_entry(&map);
+       add_mapping_entry(&map, TDB_INSERT);
 
        return True;
 }
@@ -915,7 +915,7 @@ BOOL get_domain_group_from_sid(DOM_SID sid, GROUP_MAP *map, BOOL with_priv)
        DEBUG(10, ("get_domain_group_from_sid\n"));
 
        /* if the group is NOT in the database, it CAN NOT be a domain group */
-       if(!pdb_getgrsid(map, sid, with_priv))
+       if(!get_group_map_from_sid(sid, map, with_priv))
                return False;
 
        DEBUG(10, ("get_domain_group_from_sid: SID found in the TDB\n"));
@@ -962,7 +962,7 @@ BOOL get_local_group_from_sid(DOM_SID sid, GROUP_MAP *map, BOOL with_priv)
        }
 
        /* The group is in the mapping table */
-       if(pdb_getgrsid(map, sid, with_priv)) {
+       if(get_group_map_from_sid(sid, map, with_priv)) {
                if (map->sid_name_use!=SID_NAME_ALIAS) {
                        if (with_priv)
                                free_privilege(&map->priv_set);
@@ -1016,7 +1016,7 @@ BOOL get_builtin_group_from_sid(DOM_SID sid, GROUP_MAP *map, BOOL with_priv)
                return(False);
        }
 
-       if(!pdb_getgrsid(map, sid, with_priv))
+       if(!get_group_map_from_sid(sid, map, with_priv))
                return False;
 
        if (map->sid_name_use!=SID_NAME_WKN_GRP) {
@@ -1060,7 +1060,7 @@ BOOL get_group_from_gid(gid_t gid, GROUP_MAP *map, BOOL with_priv)
        /*
         * make a group map from scratch if doesn't exist.
         */
-       if (!pdb_getgrgid(map, gid, with_priv)) {
+       if (!get_group_map_from_gid(gid, map, with_priv)) {
                map->gid=gid;
                map->sid_name_use=SID_NAME_ALIAS;
                map->systemaccount=PR_ACCESS_FROM_NETWORK;
index 0895a783d4dcd4118ba57ea0f01e44b2ccb76b86..384bee8760f482580793ce0012f584395d729318 100644 (file)
 /* Define to 1 if you have the <termio.h> header file. */
 #undef HAVE_TERMIO_H
 
-/* Define to 1 if you have the `timegm' function. */
-#undef HAVE_TIMEGM
-
 /* Whether Tru64 ACLs are available */
 #undef HAVE_TRU64_ACLS
 
 /* Whether to include experimental quota support */
 #undef WITH_QUOTAS
 
-/* Whether to build the new (experimental) SAM database */
-#undef WITH_SAM
-
 /* Whether to include sendfile() support */
 #undef WITH_SENDFILE
 
diff --git a/source3/include/gums.h b/source3/include/gums.h
deleted file mode 100644 (file)
index d1799f3..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   GUMS structures
-   Copyright (C) Simo Sorce 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.
-   
-   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.
-*/
-
-#ifndef _GUMS_H
-#define _GUMS_H
-
-#define GUMS_VERSION_MAJOR 0
-#define GUMS_VERSION_MINOR 1
-
-#define GUMS_OBJ_NORMAL_USER           1
-#define GUMS_OBJ_GROUP                 2
-#define GUMS_OBJ_DOMAIN                        3
-#define GUMS_OBJ_ALIAS                 4
-#define GUMS_OBJ_WORKSTATION_TRUST     5
-#define GUMS_OBJ_SERVER_TRUST          6
-#define GUMS_OBJ_DOMAIN_TRUST          7
-
-typedef struct gums_object
-{
-       TALLOC_CTX *mem_ctx;
-
-       uint32 type;                    /* Object Type */
-       uint32 version;                 /* Object Version */
-       uint32 seq_num;                 /* Object Sequence Number */
-
-       SEC_DESC *sec_desc;             /* Security Descriptor */
-
-       DOM_SID *sid;                   /* Object Sid */
-       char *name;                     /* Object Name */
-       char *description;              /* Object Description */
-
-       void *data;                     /* Object Specific data */
-
-} GUMS_OBJECT;
-
-typedef struct gums_user
-{
-       DOM_SID *group_sid;             /* Primary Group SID */
-
-       NTTIME *logon_time;             /* logon time */
-       NTTIME *logoff_time;            /* logoff time */
-       NTTIME *kickoff_time;           /* kickoff time */
-       NTTIME *pass_last_set_time;     /* password last set time */
-       NTTIME *pass_can_change_time;   /* password can change time */
-       NTTIME *pass_must_change_time;  /* password must change time */
-
-       char *full_name;                /* user's full name string */
-       char *home_dir;                 /* home directory string */
-       char *dir_drive;                /* home directory drive string */
-       char *logon_script;             /* logon script string */
-       char *profile_path;             /* profile path string */
-       char *workstations;             /* login from workstations string */
-       char *unknown_str;              /* don't know what this is, yet. */
-       char *munged_dial;              /* munged path name and dial-back tel number */
-               
-       DATA_BLOB *lm_pw;               /* .data is Null if no password */
-       DATA_BLOB *nt_pw;               /* .data is Null if no password */
-               
-       uint32 unknown_3;               /* 0x00ff ffff */
-               
-       uint16 logon_divs;              /* 168 - number of hours in a week */
-       uint32 hours_len;               /* normally 21 bytes */
-       uint8 hours[MAX_HOURS_LEN];
-               
-       uint32 unknown_5;               /* 0x0002 0000 */
-       uint32 unknown_6;               /* 0x0000 04ec */
-
-} GUMS_USER;
-
-typedef struct gums_group
-{
-       uint32 count;                   /* Number of SIDs */
-       DOM_SID *members;               /* SID array */
-
-} GUMS_GROUP;
-
-typedef struct gums_data_set
-{
-       int type; /* GUMS_SET_xxx */
-       void *data;
-
-} GUMS_DATA_SET;
-
-typedef struct gums_commit_set
-{
-       TALLOC_CTX *mem_ctx;
-
-       uint32 type;                    /* Object type */
-       DOM_SID sid;                    /* Object Sid */
-       uint32 count;                   /* number of changes */
-       GUMS_DATA_SET *data;
-} GUMS_COMMIT_SET;
-
-typedef struct gums_privilege
-{
-       TALLOC_CTX *mem_ctx;
-
-       uint32 type;                    /* Object Type */
-       uint32 version;                 /* Object Version */
-       uint32 seq_num;                 /* Object Sequence Number */
-
-       LUID_ATTR *privilege;           /* Privilege Type */
-       char *name;                     /* Object Name */
-       char *description;              /* Object Description */
-
-       uint32 count;
-       DOM_SID *members;
-
-} GUMS_PRIVILEGE;
-
-
-typedef struct gums_functions
-{
-       /* Generic object functions */
-
-       NTSTATUS (*get_domain_sid) (DOM_SID **sid, const char* name);
-       NTSTATUS (*set_domain_sid) (const DOM_SID *sid);
-
-       NTSTATUS (*get_sequence_number) (void);
-
-       NTSTATUS (*new_object) (DOM_SID **sid, const char *name, const int obj_type);
-       NTSTATUS (*delete_object) (const DOM_SID *sid);
-
-       NTSTATUS (*get_object_from_sid) (GUMS_OBJECT **object, const DOM_SID *sid, const int obj_type);
-       NTSTATUS (*get_sid_from_name) (GUMS_OBJECT **object, const char *name);
-       /* This function is used to get the list of all objects changed since b_time, it is
-          used to support PDC<->BDC synchronization */
-       NTSTATUS (*get_updated_objects) (GUMS_OBJECT **objects, const NTTIME base_time);
-
-       NTSTATUS (*enumerate_objects_start) (void *handle, const DOM_SID *sid, const int obj_type);
-       NTSTATUS (*enumerate_objects_get_next) (GUMS_OBJECT **object, void *handle);
-       NTSTATUS (*enumerate_objects_stop) (void *handle);
-
-       /* This function MUST be used ONLY by PDC<->BDC replication code or recovery tools.
-          Never use this function to update an object in the database, use set_object_values() */
-       NTSTATUS (*set_object) (const GUMS_OBJECT *object);
-
-       /* set object values function */
-       NTSTATUS (*set_object_values) (DOM_SID *sid, uint32 count, GUMS_DATA_SET *data_set);
-
-       /* Group related functions */
-       NTSTATUS (*add_memberss_to_group) (const DOM_SID *group, const DOM_SID **members);
-       NTSTATUS (*delete_members_from_group) (const DOM_SID *group, const DOM_SID **members);
-       NTSTATUS (*enumerate_group_members) (DOM_SID **members, const DOM_SID *sid, const int type);
-
-       NTSTATUS (*get_sid_groups) (DOM_SID **groups, const DOM_SID *sid);
-
-       NTSTATUS (*lock_sid) (const DOM_SID *sid);
-       NTSTATUS (*unlock_sid) (const DOM_SID *sid);
-
-       /* privileges related functions */
-
-       NTSTATUS (*add_members_to_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
-       NTSTATUS (*delete_members_from_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
-       NTSTATUS (*enumerate_privilege_members) (DOM_SID **members, const LUID_ATTR *priv);
-       NTSTATUS (*get_sid_privileges) (DOM_SID **privs, const DOM_SID *sid);
-       /* warning!: set_privilege will overwrite a prior existing privilege if such exist */
-       NTSTATUS (*set_privilege) (GUMS_PRIVILEGE *priv);
-
-} GUMS_FUNCTIONS;
-
-/* define value types */
-
-#define GUMS_SET_PRIMARY_GROUP         1
-#define GUMS_SET_SEC_DESC              2
-
-/* user specific type values */
-#define GUMS_SET_LOGON_TIME            10  /* keep NTTIME consecutive */
-#define GUMS_SET_LOGOFF_TIME           11 /* too ease checking */
-#define GUMS_SET_KICKOFF_TIME          13
-#define GUMS_SET_PASS_LAST_SET_TIME    14
-#define GUMS_SET_PASS_CAN_CHANGE_TIME  15
-#define GUMS_SET_PASS_MUST_CHANGE_TIME 16 /* NTTIME end */
-
-#define GUMS_SET_NAME                  20 /* keep strings consecutive */
-#define GUMS_SET_DESCRIPTION           21 /* too ease checking */
-#define GUMS_SET_FULL_NAME             22
-#define GUMS_SET_HOME_DIRECTORY                23
-#define GUMS_SET_DRIVE                 24
-#define GUMS_SET_LOGON_SCRIPT          25
-#define GUMS_SET_PROFILE_PATH          26
-#define GUMS_SET_WORKSTATIONS          27
-#define GUMS_SET_UNKNOWN_STRING                28
-#define GUMS_SET_MUNGED_DIAL           29 /* strings end */
-
-#define GUMS_SET_LM_PASSWORD           40
-#define GUMS_SET_NT_PASSWORD           41
-#define GUMS_SET_PLAINTEXT_PASSWORD    42
-#define GUMS_SET_UNKNOWN_3             43
-#define GUMS_SET_LOGON_DIVS            44
-#define GUMS_SET_HOURS_LEN             45
-#define GUMS_SET_HOURS                 46
-#define GUMS_SET_UNKNOWN_5             47
-#define GUMS_SET_UNKNOWN_6             48
-
-#define GUMS_SET_MUST_CHANGE_PASS      50
-#define GUMS_SET_CANNOT_CHANGE_PASS    51
-#define GUMS_SET_PASS_NEVER_EXPIRE     52
-#define GUMS_SET_ACCOUNT_DISABLED      53
-#define GUMS_SET_ACCOUNT_LOCKOUT       54
-
-/*group specific type values */
-#define GUMS_ADD_SID_LIST              60
-#define GUMS_DEL_SID_LIST              61
-#define GUMS_SET_SID_LIST              62
-
-#endif /* _GUMS_H */
index a7dd967bf3456cafae1ec426f25fbf895f198e40..7d8f44727a23a599107a1c607360d557f1f3a6f9 100644 (file)
@@ -752,8 +752,6 @@ extern int errno;
 
 #include "passdb.h"
 
-#include "sam.h"
-
 #include "session.h"
 
 #include "asn_1.h"
@@ -1165,9 +1163,5 @@ int asprintf(char **,const char *, ...) PRINTF_ATTRIBUTE(2,3);
 #define VA_COPY(dest, src) (dest) = (src)
 #endif
 
-#ifndef HAVE_TIMEGM
-time_t timegm(struct tm *tm);
-#endif
-
 #endif /* _INCLUDES_H */
 
index d2fb89d1de7b3d0b454ea8cbf67b61daf9cc2a63..5ef5c19dd271670be3d1cb218262ad78cf3d82d9 100644 (file)
@@ -43,7 +43,6 @@
 
 
 typedef struct _GROUP_MAP {
-       struct pdb_methods *methods;
        gid_t gid;
        DOM_SID sid;
        enum SID_NAME_USE sid_name_use;
index f63fd52e84cc6413604816dc62d4bf866ee80e90..0c694987fe5292269baabdbcc9f81a2bd6824d14 100644 (file)
@@ -32,7 +32,7 @@
  * this SAMBA will load. Increment this if *ANY* changes are made to the interface. 
  */
 
-#define PASSDB_INTERFACE_VERSION 4
+#define PASSDB_INTERFACE_VERSION 2
 
 /* use this inside a passdb module */
 #define PDB_MODULE_VERSIONING_MAGIC \
@@ -64,30 +64,7 @@ typedef struct pdb_context
        NTSTATUS (*pdb_update_sam_account)(struct pdb_context *, SAM_ACCOUNT *sampass);
        
        NTSTATUS (*pdb_delete_sam_account)(struct pdb_context *, SAM_ACCOUNT *username);
-
-       NTSTATUS (*pdb_getgrsid)(struct pdb_context *context, GROUP_MAP *map,
-                                DOM_SID sid, BOOL with_priv);
-       
-       NTSTATUS (*pdb_getgrgid)(struct pdb_context *context, GROUP_MAP *map,
-                                gid_t gid, BOOL with_priv);
-       
-       NTSTATUS (*pdb_getgrnam)(struct pdb_context *context, GROUP_MAP *map,
-                                char *name, BOOL with_priv);
-       
-       NTSTATUS (*pdb_add_group_mapping_entry)(struct pdb_context *context,
-                                               GROUP_MAP *map);
        
-       NTSTATUS (*pdb_update_group_mapping_entry)(struct pdb_context *context,
-                                                  GROUP_MAP *map);
-       
-       NTSTATUS (*pdb_delete_group_mapping_entry)(struct pdb_context *context,
-                                                  DOM_SID sid);
-       
-       NTSTATUS (*pdb_enum_group_mapping)(struct pdb_context *context,
-                                          enum SID_NAME_USE sid_name_use,
-                                          GROUP_MAP **rmap, int *num_entries,
-                                          BOOL unix_only, BOOL with_priv);
-
        void (*free_fn)(struct pdb_context **);
        
        TALLOC_CTX *mem_ctx;
@@ -119,29 +96,6 @@ typedef struct pdb_methods
        
        NTSTATUS (*delete_sam_account)(struct pdb_methods *, SAM_ACCOUNT *username);
        
-       NTSTATUS (*getgrsid)(struct pdb_methods *methods, GROUP_MAP *map,
-                            DOM_SID sid, BOOL with_priv);
-
-       NTSTATUS (*getgrgid)(struct pdb_methods *methods, GROUP_MAP *map,
-                            gid_t gid, BOOL with_priv);
-
-       NTSTATUS (*getgrnam)(struct pdb_methods *methods, GROUP_MAP *map,
-                            char *name, BOOL with_priv);
-
-       NTSTATUS (*add_group_mapping_entry)(struct pdb_methods *methods,
-                                           GROUP_MAP *map);
-
-       NTSTATUS (*update_group_mapping_entry)(struct pdb_methods *methods,
-                                              GROUP_MAP *map);
-
-       NTSTATUS (*delete_group_mapping_entry)(struct pdb_methods *methods,
-                                              DOM_SID sid);
-
-       NTSTATUS (*enum_group_mapping)(struct pdb_methods *methods,
-                                      enum SID_NAME_USE sid_name_use,
-                                      GROUP_MAP **rmap, int *num_entries,
-                                      BOOL unix_only, BOOL with_priv);
-
        void *private_data;  /* Private data of some kind */
        
        void (*free_private_data)(void **);
diff --git a/source3/include/rpc_client_proto.h b/source3/include/rpc_client_proto.h
deleted file mode 100644 (file)
index 0ecb195..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-#ifndef _RPC_CLIENT_PROTO_H_
-#define _RPC_CLIENT_PROTO_H_
-/* This file is automatically generated with "make proto". DO NOT EDIT */
-
-
-/*The following definitions come from  lib/util_list.c  */
-
-BOOL copy_policy_hnd (POLICY_HND *dest, const POLICY_HND *src);
-BOOL compare_rpc_hnd_node(const RPC_HND_NODE *x, 
-                         const RPC_HND_NODE *y);
-BOOL RpcHndList_set_connection(const POLICY_HND *hnd, 
-                              struct cli_connection *con);
-BOOL RpcHndList_del_connection(const POLICY_HND *hnd);
-struct cli_connection* RpcHndList_get_connection(const POLICY_HND *hnd);
-
-/*The following definitions come from  rpc_client/cli_connect.c  */
-
-void init_connections(void);
-void free_connections(void);
-void cli_connection_free(struct cli_connection *con);
-void cli_connection_unlink(struct cli_connection *con);
-BOOL cli_connection_init(const char *srv_name, char *pipe_name,
-                         struct cli_connection **con);
-BOOL cli_connection_init_auth(const char *srv_name, char *pipe_name,
-                              struct cli_connection **con,
-                              cli_auth_fns * auth, void *auth_creds);
-struct _cli_auth_fns *cli_conn_get_authfns(struct cli_connection *con);
-void *cli_conn_get_auth_creds(struct cli_connection *con);
-BOOL rpc_hnd_pipe_req(const POLICY_HND * hnd, uint8 op_num,
-                      prs_struct * data, prs_struct * rdata);
-BOOL rpc_con_pipe_req(struct cli_connection *con, uint8 op_num,
-                      prs_struct * data, prs_struct * rdata);
-BOOL rpc_con_ok(struct cli_connection *con);
-
-/*The following definitions come from  rpc_client/cli_login.c  */
-
-BOOL cli_nt_setup_creds(struct cli_state *cli, unsigned char mach_pwd[16]);
-BOOL cli_nt_srv_pwset(struct cli_state *cli, unsigned char *new_hashof_mach_pwd);
-BOOL cli_nt_login_interactive(struct cli_state *cli, char *domain, char *username, 
-                              uint32 smb_userid_low, char *password,
-                              NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_login_network(struct cli_state *cli, char *domain, char *username, 
-                          uint32 smb_userid_low, char lm_chal[8], 
-                         char *lm_chal_resp, char *nt_chal_resp,
-                          NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
-
-/*The following definitions come from  rpc_client/cli_lsarpc.c  */
-
-BOOL do_lsa_open_policy(struct cli_state *cli,
-                       char *system_name, POLICY_HND *hnd,
-                       BOOL sec_qos);
-BOOL do_lsa_query_info_pol(struct cli_state *cli,
-                       POLICY_HND *hnd, uint16 info_class,
-                       fstring domain_name, DOM_SID *domain_sid);
-BOOL do_lsa_close(struct cli_state *cli, POLICY_HND *hnd);
-BOOL cli_lsa_get_domain_sid(struct cli_state *cli, char *server);
-uint32 lsa_open_policy(const char *system_name, POLICY_HND *hnd,
-                      BOOL sec_qos, uint32 des_access);
-uint32 lsa_lookup_sids(POLICY_HND *hnd, int num_sids, DOM_SID *sids,
-                      char ***names, uint32 **types, int *num_names);
-uint32 lsa_lookup_names(POLICY_HND *hnd, int num_names, char **names,
-                       DOM_SID **sids, uint32 **types, int *num_sids);
-
-/*The following definitions come from  rpc_client/cli_netlogon.c  */
-
-BOOL cli_net_logon_ctrl2(struct cli_state *cli, uint32 status_level);
-BOOL cli_net_auth2(struct cli_state *cli, uint16 sec_chan, 
-                   uint32 neg_flags, DOM_CHAL *srv_chal);
-BOOL cli_net_req_chal(struct cli_state *cli, DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal);
-BOOL cli_net_srv_pwset(struct cli_state *cli, uint8 hashed_mach_pwd[16]);
-BOOL cli_net_sam_logon(struct cli_state *cli, NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_net_sam_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
-BOOL change_trust_account_password( char *domain, char *remote_machine_list);
-
-/*The following definitions come from  rpc_client/cli_pipe.c  */
-
-BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num,
-                      prs_struct *data, prs_struct *rdata);
-BOOL rpc_pipe_bind(struct cli_state *cli, char *pipe_name, char *my_name);
-void cli_nt_set_ntlmssp_flgs(struct cli_state *cli, uint32 ntlmssp_flgs);
-BOOL cli_nt_session_open(struct cli_state *cli, char *pipe_name);
-void cli_nt_session_close(struct cli_state *cli);
-
-/*The following definitions come from  rpc_client/cli_reg.c  */
-
-BOOL do_reg_connect(struct cli_state *cli, char *full_keyname, char *key_name,
-                               POLICY_HND *reg_hnd);
-BOOL do_reg_open_hklm(struct cli_state *cli, uint16 unknown_0, uint32 level,
-                               POLICY_HND *hnd);
-BOOL do_reg_open_hku(struct cli_state *cli, uint16 unknown_0, uint32 level,
-                               POLICY_HND *hnd);
-BOOL do_reg_flush_key(struct cli_state *cli, POLICY_HND *hnd);
-BOOL do_reg_query_key(struct cli_state *cli, POLICY_HND *hnd,
-                               char *class, uint32 *class_len,
-                               uint32 *num_subkeys, uint32 *max_subkeylen,
-                               uint32 *max_subkeysize, uint32 *num_values,
-                               uint32 *max_valnamelen, uint32 *max_valbufsize,
-                               uint32 *sec_desc, NTTIME *mod_time);
-BOOL do_reg_unknown_1a(struct cli_state *cli, POLICY_HND *hnd, uint32 *unk);
-BOOL do_reg_query_info(struct cli_state *cli, POLICY_HND *hnd,
-                               char *key_value, uint32* key_type);
-BOOL do_reg_set_key_sec(struct cli_state *cli, POLICY_HND *hnd, SEC_DESC_BUF *sec_desc_buf);
-BOOL do_reg_get_key_sec(struct cli_state *cli, POLICY_HND *hnd, uint32 *sec_buf_size, SEC_DESC_BUF **ppsec_desc_buf);
-BOOL do_reg_delete_val(struct cli_state *cli, POLICY_HND *hnd, char *val_name);
-BOOL do_reg_delete_key(struct cli_state *cli, POLICY_HND *hnd, char *key_name);
-BOOL do_reg_create_key(struct cli_state *cli, POLICY_HND *hnd,
-                               char *key_name, char *key_class,
-                               SEC_ACCESS *sam_access,
-                               POLICY_HND *key);
-BOOL do_reg_enum_key(struct cli_state *cli, POLICY_HND *hnd,
-                               int key_index, char *key_name,
-                               uint32 *unk_1, uint32 *unk_2,
-                               time_t *mod_time);
-BOOL do_reg_create_val(struct cli_state *cli, POLICY_HND *hnd,
-                               char *val_name, uint32 type, BUFFER3 *data);
-BOOL do_reg_enum_val(struct cli_state *cli, POLICY_HND *hnd,
-                               int val_index, int max_valnamelen, int max_valbufsize,
-                               fstring val_name,
-                               uint32 *val_type, BUFFER2 *value);
-BOOL do_reg_open_entry(struct cli_state *cli, POLICY_HND *hnd,
-                               char *key_name, uint32 unk_0,
-                               POLICY_HND *key_hnd);
-BOOL do_reg_close(struct cli_state *cli, POLICY_HND *hnd);
-
-/*The following definitions come from  rpc_client/cli_samr.c  */
-
-BOOL get_samr_query_usergroups(struct cli_state *cli, 
-                               POLICY_HND *pol_open_domain, uint32 user_rid,
-                               uint32 *num_groups, DOM_GID *gid);
-BOOL get_samr_query_userinfo(struct cli_state *cli, 
-                               POLICY_HND *pol_open_domain,
-                               uint32 info_level,
-                               uint32 user_rid, SAM_USER_INFO_21 *usr);
-BOOL do_samr_chgpasswd_user(struct cli_state *cli,
-               char *srv_name, char *user_name,
-               char nt_newpass[516], uchar nt_oldhash[16],
-               char lm_newpass[516], uchar lm_oldhash[16]);
-BOOL do_samr_unknown_38(struct cli_state *cli, char *srv_name);
-BOOL do_samr_query_dom_info(struct cli_state *cli, 
-                               POLICY_HND *domain_pol, uint16 switch_value);
-BOOL do_samr_enum_dom_users(struct cli_state *cli, 
-                               POLICY_HND *pol, uint16 num_entries, uint16 unk_0,
-                               uint16 acb_mask, uint16 unk_1, uint32 size,
-                               struct acct_info **sam,
-                               int *num_sam_users);
-BOOL do_samr_connect(struct cli_state *cli, 
-                               char *srv_name, uint32 unknown_0,
-                               POLICY_HND *connect_pol);
-BOOL do_samr_open_user(struct cli_state *cli, 
-                               POLICY_HND *pol, uint32 unk_0, uint32 rid, 
-                               POLICY_HND *user_pol);
-BOOL do_samr_open_domain(struct cli_state *cli, 
-                               POLICY_HND *connect_pol, uint32 rid, DOM_SID *sid,
-                               POLICY_HND *domain_pol);
-BOOL do_samr_query_unknown_12(struct cli_state *cli, 
-                               POLICY_HND *pol, uint32 rid, uint32 num_gids, uint32 *gids,
-                               uint32 *num_aliases,
-                               fstring als_names    [MAX_LOOKUP_SIDS],
-                               uint32  num_als_users[MAX_LOOKUP_SIDS]);
-BOOL do_samr_query_usergroups(struct cli_state *cli, 
-                               POLICY_HND *pol, uint32 *num_groups, DOM_GID *gid);
-BOOL do_samr_query_userinfo(struct cli_state *cli, 
-                               POLICY_HND *pol, uint16 switch_value, void* usr);
-BOOL do_samr_close(struct cli_state *cli, POLICY_HND *hnd);
-
-/*The following definitions come from  rpc_client/cli_spoolss_notify.c  */
-
-BOOL spoolss_disconnect_from_client( struct cli_state *cli);
-BOOL spoolss_connect_to_client( struct cli_state *cli, char *remote_machine);
-BOOL cli_spoolss_reply_open_printer(struct cli_state *cli, char *printer, uint32 localprinter, uint32 type, uint32 *status, POLICY_HND *handle);
-BOOL cli_spoolss_reply_rrpcn(struct cli_state *cli, POLICY_HND *handle, 
-                            uint32 change_low, uint32 change_high, uint32 *status);
-BOOL cli_spoolss_reply_close_printer(struct cli_state *cli, POLICY_HND *handle, uint32 *status);
-
-/*The following definitions come from  rpc_client/cli_srvsvc.c  */
-
-BOOL do_srv_net_srv_conn_enum(struct cli_state *cli,
-                       char *server_name, char *qual_name,
-                       uint32 switch_value, SRV_CONN_INFO_CTR *ctr,
-                       uint32 preferred_len,
-                       ENUM_HND *hnd);
-BOOL do_srv_net_srv_sess_enum(struct cli_state *cli,
-                       char *server_name, char *qual_name,
-                       uint32 switch_value, SRV_SESS_INFO_CTR *ctr,
-                       uint32 preferred_len,
-                       ENUM_HND *hnd);
-BOOL do_srv_net_srv_share_enum(struct cli_state *cli,
-                       char *server_name, 
-                       uint32 switch_value, SRV_R_NET_SHARE_ENUM *r_o,
-                       uint32 preferred_len, ENUM_HND *hnd);
-BOOL do_srv_net_srv_file_enum(struct cli_state *cli,
-                       char *server_name, char *qual_name,
-                       uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
-                       uint32 preferred_len,
-                       ENUM_HND *hnd);
-BOOL do_srv_net_srv_get_info(struct cli_state *cli,
-                       char *server_name, uint32 switch_value, SRV_INFO_CTR *ctr);
-
-/*The following definitions come from  rpc_client/cli_use.c  */
-
-void init_cli_use(void);
-void free_cli_use(void);
-struct cli_state *cli_net_use_add(const char *srv_name,
-                                 const struct ntuser_creds *usr_creds,
-                                 BOOL reuse, BOOL *is_new);
-BOOL cli_net_use_del(const char *srv_name,
-                    const struct ntuser_creds *usr_creds,
-                    BOOL force_close, BOOL *connection_closed);
-void cli_net_use_enum(uint32 *num_cons, struct use_info ***use);
-void cli_use_wait_keyboard(void);
-
-/*The following definitions come from  rpc_client/cli_wkssvc.c  */
-
-BOOL do_wks_query_info(struct cli_state *cli, 
-                       char *server_name, uint32 switch_value,
-                       WKS_INFO_100 *wks100);
-
-/*The following definitions come from  rpc_client/ncacn_np_use.c  */
-
-BOOL ncacn_np_use_del(const char *srv_name, const char *pipe_name,
-                      const vuser_key * key,
-                      BOOL force_close, BOOL *connection_closed);
-struct ncacn_np *ncacn_np_initialise(struct ncacn_np *msrpc,
-                                     const vuser_key * key);
-struct ncacn_np *ncacn_np_use_add(const char *pipe_name,
-                                  const vuser_key * key,
-                                  const char *srv_name,
-                                  const struct ntuser_creds *ntc,
-                                  BOOL reuse, BOOL *is_new_connection);
-#endif /* _PROTO_H_ */
index e1fa9c06bc7f30ceb07183fdffdf8ad91c112368..6b537715b8cb9dba44c93c896fbfc49bafb97a16 100644 (file)
@@ -147,6 +147,172 @@ SamrTestPrivateFunctionsUser
 #define SAMR_SET_USERINFO      0x3A
 #define SAMR_CONNECT4          0x3E
 
+/* Access bits to the SAM-object */
+
+#define SAMR_ACCESS_UNKNOWN_1        0x00000001
+#define SAMR_ACCESS_SHUTDOWN_SERVER  0x00000002
+#define SAMR_ACCESS_UNKNOWN_4        0x00000004
+#define SAMR_ACCESS_UNKNOWN_8        0x00000008
+#define SAMR_ACCESS_ENUM_DOMAINS     0x00000010
+#define SAMR_ACCESS_OPEN_DOMAIN      0x00000020
+
+#define SAMR_ALL_ACCESS  ( STANDARD_RIGHTS_REQUIRED_ACCESS | \
+                           SAMR_ACCESS_OPEN_DOMAIN         | \
+                          SAMR_ACCESS_ENUM_DOMAINS        | \
+                          SAMR_ACCESS_UNKNOWN_8           | \
+                          SAMR_ACCESS_UNKNOWN_4           | \
+                          SAMR_ACCESS_SHUTDOWN_SERVER     | \
+                          SAMR_ACCESS_UNKNOWN_1 )
+                          
+#define SAMR_READ        ( STANDARD_RIGHTS_READ_ACCESS     | \
+                           SAMR_ACCESS_ENUM_DOMAINS )
+
+#define SAMR_WRITE       ( STANDARD_RIGHTS_WRITE_ACCESS    | \
+                           SAMR_ACCESS_UNKNOWN_8           | \
+                          SAMR_ACCESS_UNKNOWN_4           | \
+                          SAMR_ACCESS_SHUTDOWN_SERVER )
+
+#define SAMR_EXECUTE     ( STANDARD_RIGHTS_EXECUTE_ACCESS  | \
+                           SAMR_ACCESS_OPEN_DOMAIN         | \
+                          SAMR_ACCESS_UNKNOWN_1 )            
+
+/* Access bits to Domain-objects */
+  
+#define DOMAIN_ACCESS_LOOKUP_INFO_1        0x000000001
+#define DOMAIN_ACCESS_SET_INFO_1           0x000000002
+#define DOMAIN_ACCESS_LOOKUP_INFO_2        0x000000004
+#define DOMAIN_ACCESS_SET_INFO_2           0x000000008
+#define DOMAIN_ACCESS_CREATE_USER          0x000000010
+#define DOMAIN_ACCESS_CREATE_GROUP         0x000000020
+#define DOMAIN_ACCESS_CREATE_ALIAS         0x000000040
+#define DOMAIN_ACCESS_LOOKUP_ALIAS_BY_MEM  0x000000080
+#define DOMAIN_ACCESS_ENUM_ACCOUNTS        0x000000100
+#define DOMAIN_ACCESS_OPEN_ACCOUNT         0x000000200
+#define DOMAIN_ACCESS_SET_INFO_3           0x000000400
+#define DOMAIN_ALL_ACCESS  ( STANDARD_RIGHTS_REQUIRED_ACCESS   | \
+                             DOMAIN_ACCESS_SET_INFO_3          | \
+                            DOMAIN_ACCESS_OPEN_ACCOUNT        | \
+                            DOMAIN_ACCESS_ENUM_ACCOUNTS       | \
+                            DOMAIN_ACCESS_LOOKUP_ALIAS_BY_MEM | \
+                            DOMAIN_ACCESS_CREATE_ALIAS        | \
+                            DOMAIN_ACCESS_CREATE_GROUP        | \
+                            DOMAIN_ACCESS_CREATE_USER         | \
+                            DOMAIN_ACCESS_SET_INFO_2          | \
+                            DOMAIN_ACCESS_LOOKUP_INFO_2       | \
+                            DOMAIN_ACCESS_SET_INFO_1          | \
+                            DOMAIN_ACCESS_LOOKUP_INFO_1 )
+                          
+#define DOMAIN_READ        ( STANDARD_RIGHTS_READ_ACCESS       | \
+                             DOMAIN_ACCESS_LOOKUP_ALIAS_BY_MEM | \
+                            DOMAIN_ACCESS_LOOKUP_INFO_2 )
+  
+#define DOMAIN_WRITE       ( STANDARD_RIGHTS_WRITE_ACCESS      | \
+                             DOMAIN_ACCESS_SET_INFO_3          | \
+                            DOMAIN_ACCESS_CREATE_ALIAS        | \
+                            DOMAIN_ACCESS_CREATE_GROUP        | \
+                            DOMAIN_ACCESS_CREATE_USER         | \
+                            DOMAIN_ACCESS_SET_INFO_2          | \
+                            DOMAIN_ACCESS_SET_INFO_1 )
+  
+#define DOMAIN_EXECUTE     ( STANDARD_RIGHTS_EXECUTE_ACCESS    | \
+                             DOMAIN_ACCESS_OPEN_ACCOUNT        | \
+                            DOMAIN_ACCESS_ENUM_ACCOUNTS       | \
+                            DOMAIN_ACCESS_LOOKUP_INFO_1 )            
+  
+/* Access bits to User-objects */
+
+#define USER_ACCESS_GET_NAME_ETC     0x00000001
+#define USER_ACCESS_GET_LOCALE       0x00000002
+#define USER_ACCESS_SET_LOC_COM      0x00000004
+#define USER_ACCESS_GET_LOGONINFO    0x00000008
+#define USER_ACCESS_UNKNOWN_10       0x00000010
+#define USER_ACCESS_SET_ATTRIBUTES   0x00000020
+#define USER_ACCESS_CHANGE_PASSWORD  0x00000040
+#define USER_ACCESS_SET_PASSWORD     0x00000080
+#define USER_ACCESS_GET_GROUPS       0x00000100
+#define USER_ACCESS_UNKNOWN_200      0x00000200
+#define USER_ACCESS_UNKNOWN_400      0x00000400
+
+#define USER_ALL_ACCESS    ( STANDARD_RIGHTS_REQUIRED_ACCESS | \
+                             USER_ACCESS_UNKNOWN_400       | \
+                            USER_ACCESS_UNKNOWN_200       | \
+                            USER_ACCESS_GET_GROUPS        | \
+                            USER_ACCESS_SET_PASSWORD      | \
+                            USER_ACCESS_CHANGE_PASSWORD   | \
+                            USER_ACCESS_SET_ATTRIBUTES    | \
+                            USER_ACCESS_UNKNOWN_10        | \
+                            USER_ACCESS_GET_LOGONINFO     | \
+                            USER_ACCESS_SET_LOC_COM       | \
+                            USER_ACCESS_GET_LOCALE        | \
+                            USER_ACCESS_GET_NAME_ETC )
+                          
+#define USER_READ          ( STANDARD_RIGHTS_READ_ACCESS     | \
+                             USER_ACCESS_UNKNOWN_200         | \
+                            USER_ACCESS_GET_GROUPS          | \
+                            USER_ACCESS_UNKNOWN_10          | \
+                            USER_ACCESS_GET_LOGONINFO       | \
+                            USER_ACCESS_GET_LOCALE )
+
+#define USER_WRITE         ( STANDARD_RIGHTS_WRITE_ACCESS    | \
+                             USER_ACCESS_CHANGE_PASSWORD     | \
+                            USER_ACCESS_SET_LOC_COM )
+                            
+#define USER_EXECUTE       ( STANDARD_RIGHTS_EXECUTE_ACCESS  | \
+                             USER_ACCESS_CHANGE_PASSWORD     | \
+                            USER_ACCESS_GET_NAME_ETC )
+
+/* Access bits to Group-objects */
+
+#define GROUP_ACCESS_LOOKUP_INFO     0x00000001
+#define GROUP_ACCESS_SET_INFO        0x00000002
+#define GROUP_ACCESS_ADD_MEMBER      0x00000004
+#define GROUP_ACCESS_REMOVE_MEMBER   0x00000008
+#define GROUP_ACCESS_GET_MEMBERS     0x00000010
+
+#define GROUP_ALL_ACCESS   ( STANDARD_RIGHTS_REQUIRED_ACCESS | \
+                             GROUP_ACCESS_GET_MEMBERS        | \
+                            GROUP_ACCESS_REMOVE_MEMBER      | \
+                            GROUP_ACCESS_ADD_MEMBER         | \
+                            GROUP_ACCESS_SET_INFO           | \
+                            GROUP_ACCESS_LOOKUP_INFO )
+                          
+#define GROUP_READ         ( STANDARD_RIGHTS_READ_ACCESS     | \
+                             GROUP_ACCESS_GET_MEMBERS )
+
+#define GROUP_WRITE        ( STANDARD_RIGHTS_WRITE_ACCESS    | \
+                             GROUP_ACCESS_REMOVE_MEMBER      | \
+                            GROUP_ACCESS_ADD_MEMBER         | \
+                            GROUP_ACCESS_SET_INFO )
+                            
+#define GROUP_EXECUTE      ( STANDARD_RIGHTS_EXECUTE_ACCESS  | \
+                             GROUP_ACCESS_LOOKUP_INFO )
+                            
+/* Access bits to Alias-objects */
+
+#define ALIAS_ACCESS_ADD_MEMBER      0x00000001
+#define ALIAS_ACCESS_REMOVE_MEMBER   0x00000002
+#define ALIAS_ACCESS_GET_MEMBERS     0x00000004
+#define ALIAS_ACCESS_LOOKUP_INFO     0x00000008
+#define ALIAS_ACCESS_SET_INFO        0x00000010
+
+#define ALIAS_ALL_ACCESS   ( STANDARD_RIGHTS_REQUIRED_ACCESS | \
+                             ALIAS_ACCESS_GET_MEMBERS        | \
+                            ALIAS_ACCESS_REMOVE_MEMBER      | \
+                            ALIAS_ACCESS_ADD_MEMBER         | \
+                            ALIAS_ACCESS_SET_INFO           | \
+                            ALIAS_ACCESS_LOOKUP_INFO )
+                          
+#define ALIAS_READ         ( STANDARD_RIGHTS_READ_ACCESS     | \
+                             ALIAS_ACCESS_GET_MEMBERS )
+
+#define ALIAS_WRITE        ( STANDARD_RIGHTS_WRITE_ACCESS    | \
+                             ALIAS_ACCESS_REMOVE_MEMBER      | \
+                            ALIAS_ACCESS_ADD_MEMBER         | \
+                            ALIAS_ACCESS_SET_INFO )
+                            
+#define ALIAS_EXECUTE      ( STANDARD_RIGHTS_EXECUTE_ACCESS  | \
+                             ALIAS_ACCESS_LOOKUP_INFO )
 
 typedef struct _DISP_USER_INFO {
        SAM_ACCOUNT *sam;
index 1bb25e8651151bef83366417c2d59c17eae2af4c..e51a5fd2f8fc44d0584a7ed56f14ac3e72a6a44f 100644 (file)
@@ -31,7 +31,6 @@
 #define SEC_RIGHTS_READ                        0x00020019
 #define SEC_RIGHTS_FULL_CONTROL                0x000f003f
 #define SEC_RIGHTS_MAXIMUM_ALLOWED     0x02000000
-
 /* for ADS */
 #define        SEC_RIGHTS_LIST_CONTENTS        0x4
 #define SEC_RIGHTS_LIST_OBJECT         0x80
@@ -212,250 +211,4 @@ typedef struct standard_mapping {
        uint32 std_all;
 } STANDARD_MAPPING;
 
-
-/* Security Access Masks Rights */
-
-#define SPECIFIC_RIGHTS_MASK   0x0000FFFF
-#define STANDARD_RIGHTS_MASK   0x00FF0000
-#define GENERIC_RIGHTS_MASK    0xF0000000
-
-#define SEC_RIGHT_SYSTEM_SECURITY      0x01000000
-#define SEC_RIGHT_MAXIMUM_ALLOWED      0x02000000
-
-/* Generic access rights */
-
-#define GENERIC_RIGHT_ALL_ACCESS       0x10000000
-#define GENERIC_RIGHT_EXECUTE_ACCESS   0x20000000
-#define GENERIC_RIGHT_WRITE_ACCESS     0x40000000
-#define GENERIC_RIGHT_READ_ACCESS      0x80000000
-
-/* Standard access rights. */
-
-#define STD_RIGHT_DELETE_ACCESS                0x00010000
-#define STD_RIGHT_READ_CONTROL_ACCESS  0x00020000
-#define STD_RIGHT_WRITE_DAC_ACCESS     0x00040000
-#define STD_RIGHT_WRITE_OWNER_ACCESS   0x00080000
-#define STD_RIGHT_SYNCHRONIZE_ACCESS   0x00100000
-
-#define STD_RIGHT_ALL_ACCESS           0x001F0000
-
-/* Combinations of standard masks. */
-#define STANDARD_RIGHTS_ALL_ACCESS     STD_RIGHT_ALL_ACCESS /* 0x001f0000 */
-#define STANDARD_RIGHTS_EXECUTE_ACCESS STD_RIGHT_READ_CONTROL_ACCESS /* 0x00020000 */
-#define STANDARD_RIGHTS_READ_ACCESS    STD_RIGHT_READ_CONTROL_ACCESS /* 0x00020000 */
-#define STANDARD_RIGHTS_WRITE_ACCESS   STD_RIGHT_READ_CONTROL_ACCESS /* 0x00020000 */
-#define STANDARD_RIGHTS_REQUIRED_ACCESS \
-               (STD_RIGHT_DELETE_ACCESS        | \
-               STD_RIGHT_READ_CONTROL_ACCESS   | \
-               STD_RIGHT_WRITE_DAC_ACCESS      | \
-               STD_RIGHT_WRITE_OWNER_ACCESS)   /* 0x000f0000 */
-
-/* File Object specific access rights */
-
-#define SA_RIGHT_FILE_READ_DATA                0x00000001
-#define SA_RIGHT_FILE_WRITE_DATA       0x00000002
-#define SA_RIGHT_FILE_APPEND_DATA      0x00000004
-#define SA_RIGHT_FILE_READ_EA          0x00000008
-#define SA_RIGHT_FILE_WRITE_EA         0x00000010
-#define SA_RIGHT_FILE_EXECUTE          0x00000020
-#define SA_RIGHT_FILE_DELETE_CHILD     0x00000040
-#define SA_RIGHT_FILE_READ_ATTRIBUTES  0x00000080
-#define SA_RIGHT_FILE_WRITE_ATTRIBUTES 0x00000100
-
-#define SA_RIGHT_FILE_ALL_ACCESS       0x000001FF
-
-#define GENERIC_RIGHTS_FILE_ALL_ACCESS \
-               (STANDARD_RIGHTS_REQUIRED_ACCESS| \
-               STD_RIGHT_SYNCHRONIZE_ACCESS    | \
-               SA_RIGHT_FILE_ALL_ACCESS)
-
-#define GENERIC_RIGHTS_FILE_READ       \
-               (STANDARD_RIGHTS_READ_ACCESS    | \
-               STD_RIGHT_SYNCHRONIZE_ACCESS    | \
-               SA_RIGHT_FILE_READ_DATA         | \
-               SA_RIGHT_FILE_READ_ATTRIBUTES   | \
-               SA_RIGHT_FILE_READ_EA)
-
-#define GENERIC_RIGHTS_FILE_WRITE \
-               (STANDARD_RIGHTS_WRITE_ACCESS   | \
-               STD_RIGHT_SYNCHRONIZE_ACCESS    | \
-               SA_RIGHT_FILE_WRITE_DATA        | \
-               SA_RIGHT_FILE_WRITE_ATTRIBUTES  | \
-               SA_RIGHT_FILE_WRITE_EA          | \
-               SA_RIGHT_FILE_APPEND_DATA)
-
-#define GENERIC_RIGHTS_FILE_EXECUTE \
-               (STANDARD_RIGHTS_EXECUTE_ACCESS | \
-               SA_RIGHT_FILE_READ_ATTRIBUTES   | \
-               SA_RIGHT_FILE_EXECUTE)            
-
-               
-/* SAM Object specific access rights */
-
-#define SA_RIGHT_SAM_UNKNOWN_1         0x00000001
-#define SA_RIGHT_SAM_SHUTDOWN_SERVER   0x00000002
-#define SA_RIGHT_SAM_UNKNOWN_4         0x00000004
-#define SA_RIGHT_SAM_UNKNOWN_8         0x00000008
-#define SA_RIGHT_SAM_ENUM_DOMAINS      0x00000010
-#define SA_RIGHT_SAM_OPEN_DOMAIN       0x00000020
-
-#define SA_RIGHT_SAM_ALL_ACCESS                0x0000003F
-
-#define GENERIC_RIGHTS_SAM_ALL_ACCESS \
-               (STANDARD_RIGHTS_REQUIRED_ACCESS| \
-               SA_RIGHT_SAM_ALL_ACCESS)
-
-#define GENERIC_RIGHTS_SAM_READ        \
-               (STANDARD_RIGHTS_READ_ACCESS    | \
-               SA_RIGHT_SAM_ENUM_DOMAINS)
-
-#define GENERIC_RIGHTS_SAM_WRITE \
-               (STANDARD_RIGHTS_WRITE_ACCESS   | \
-               SA_RIGHT_SAM_UNKNOWN_8          | \
-               SA_RIGHT_SAM_UNKNOWN_4          | \
-               SA_RIGHT_SAM_SHUTDOWN_SERVER)
-
-#define GENERIC_RIGHTS_SAM_EXECUTE \
-               (STANDARD_RIGHTS_EXECUTE_ACCESS | \
-               SA_RIGHT_SAM_OPEN_DOMAIN        | \
-               SA_RIGHT_SAM_UNKNOWN_1)            
-
-
-/* Domain Object specific access rights */
-
-#define SA_RIGHT_DOMAIN_LOOKUP_INFO_1          0x00000001
-#define SA_RIGHT_DOMAIN_SET_INFO_1             0x00000002
-#define SA_RIGHT_DOMAIN_LOOKUP_INFO_2          0x00000004
-#define SA_RIGHT_DOMAIN_SET_INFO_2             0x00000008
-#define SA_RIGHT_DOMAIN_CREATE_USER            0x00000010
-#define SA_RIGHT_DOMAIN_CREATE_GROUP           0x00000020
-#define SA_RIGHT_DOMAIN_CREATE_ALIAS           0x00000040
-#define SA_RIGHT_DOMAIN_LOOKUP_ALIAS_BY_MEM    0x00000080
-#define SA_RIGHT_DOMAIN_ENUM_ACCOUNTS          0x00000100
-#define SA_RIGHT_DOMAIN_OPEN_ACCOUNT           0x00000200
-#define SA_RIGHT_DOMAIN_SET_INFO_3             0x00000400
-
-#define SA_RIGHT_DOMAIN_ALL_ACCESS             0x000007FF
-
-#define GENERIC_RIGHTS_DOMAIN_ALL_ACCESS \
-               (STANDARD_RIGHTS_REQUIRED_ACCESS| \
-               SA_RIGHT_DOMAIN_ALL_ACCESS)
-
-#define GENERIC_RIGHTS_DOMAIN_READ \
-               (STANDARD_RIGHTS_READ_ACCESS            | \
-               SA_RIGHT_DOMAIN_LOOKUP_ALIAS_BY_MEM     | \
-               SA_RIGHT_DOMAIN_LOOKUP_INFO_2)
-
-#define GENERIC_RIGHTS_DOMAIN_WRITE \
-               (STANDARD_RIGHTS_WRITE_ACCESS   | \
-               SA_RIGHT_DOMAIN_SET_INFO_3      | \
-               SA_RIGHT_DOMAIN_CREATE_ALIAS    | \
-               SA_RIGHT_DOMAIN_CREATE_GROUP    | \
-               SA_RIGHT_DOMAIN_CREATE_USER     | \
-               SA_RIGHT_DOMAIN_SET_INFO_2      | \
-               SA_RIGHT_DOMAIN_SET_INFO_1)
-
-#define GENERIC_RIGHTS_DOMAIN_EXECUTE \
-               (STANDARD_RIGHTS_EXECUTE_ACCESS | \
-               SA_RIGHT_DOMAIN_OPEN_ACCOUNT    | \
-               SA_RIGHT_DOMAIN_ENUM_ACCOUNTS   | \
-               SA_RIGHT_DOMAIN_LOOKUP_INFO_1)            
-
-
-/* User Object specific access rights */
-
-#define SA_RIGHT_USER_GET_NAME_ETC     0x00000001
-#define SA_RIGHT_USER_GET_LOCALE       0x00000002
-#define SA_RIGHT_USER_SET_LOC_COM      0x00000004
-#define SA_RIGHT_USER_GET_LOGONINFO    0x00000008
-#define SA_RIGHT_USER_ACCT_FLAGS_EXPIRY        0x00000010
-#define SA_RIGHT_USER_SET_ATTRIBUTES   0x00000020
-#define SA_RIGHT_USER_CHANGE_PASSWORD  0x00000040
-#define SA_RIGHT_USER_SET_PASSWORD     0x00000080
-#define SA_RIGHT_USER_GET_GROUPS       0x00000100
-#define SA_RIGHT_USER_UNKNOWN_200      0x00000200
-#define SA_RIGHT_USER_UNKNOWN_400      0x00000400
-
-#define SA_RIGHT_USER_ALL_ACCESS       0x000007FF
-
-#define GENERIC_RIGHTS_USER_ALL_ACCESS \
-               (STANDARD_RIGHTS_REQUIRED_ACCESS| \
-               SA_RIGHT_USER_ALL_ACCESS)       /* 0x000f07ff */
-
-#define GENERIC_RIGHTS_USER_READ \
-               (STANDARD_RIGHTS_READ_ACCESS    | \
-               SA_RIGHT_USER_UNKNOWN_200       | \
-               SA_RIGHT_USER_GET_GROUPS        | \
-               SA_RIGHT_USER_ACCT_FLAGS_EXPIRY | \
-               SA_RIGHT_USER_GET_LOGONINFO     | \
-               SA_RIGHT_USER_GET_LOCALE)       /* 0x0002031a */
-
-#define GENERIC_RIGHTS_USER_WRITE \
-               (STANDARD_RIGHTS_WRITE_ACCESS   | \
-               SA_RIGHT_USER_CHANGE_PASSWORD   | \
-               SA_RIGHT_USER_SET_LOC_COM)      /* 0x00020044 */
-
-#define GENERIC_RIGHTS_USER_EXECUTE \
-               (STANDARD_RIGHTS_EXECUTE_ACCESS | \
-               SA_RIGHT_USER_CHANGE_PASSWORD   | \
-               SA_RIGHT_USER_GET_NAME_ETC )    /* 0x00020041 */
-
-
-/* Group Object specific access rights */
-
-#define SA_RIGHT_GROUP_LOOKUP_INFO     0x00000001
-#define SA_RIGHT_GROUP_SET_INFO                0x00000002
-#define SA_RIGHT_GROUP_ADD_MEMBER      0x00000004
-#define SA_RIGHT_GROUP_REMOVE_MEMBER   0x00000008
-#define SA_RIGHT_GROUP_GET_MEMBERS     0x00000010
-
-#define SA_RIGHT_GROUP_ALL_ACCESS      0x0000001F
-
-#define GENERIC_RIGHTS_GROUP_ALL_ACCESS \
-               (STANDARD_RIGHTS_REQUIRED_ACCESS| \
-               SA_RIGHT_GROUP_ALL_ACCESS)      /* 0x000f001f */
-
-#define GENERIC_RIGHTS_GROUP_READ \
-               (STANDARD_RIGHTS_READ_ACCESS    | \
-               SA_RIGHT_GROUP_GET_MEMBERS)     /* 0x00020010 */
-
-#define GENERIC_RIGHTS_GROUP_WRITE \
-               (STANDARD_RIGHTS_WRITE_ACCESS   | \
-               SA_RIGHT_GROUP_REMOVE_MEMBER    | \
-               SA_RIGHT_GROUP_ADD_MEMBER       | \
-               SA_RIGHT_GROUP_SET_INFO )       /* 0x0002000e */
-
-#define GENERIC_RIGHTS_GROUP_EXECUTE \
-               (STANDARD_RIGHTS_EXECUTE_ACCESS | \
-               SA_RIGHT_GROUP_LOOKUP_INFO)     /* 0x00020001 */
-
-
-/* Alias Object specific access rights */
-
-#define SA_RIGHT_ALIAS_ADD_MEMBER      0x00000001
-#define SA_RIGHT_ALIAS_REMOVE_MEMBER   0x00000002
-#define SA_RIGHT_ALIAS_GET_MEMBERS     0x00000004
-#define SA_RIGHT_ALIAS_LOOKUP_INFO     0x00000008
-#define SA_RIGHT_ALIAS_SET_INFO                0x00000010
-
-#define SA_RIGHT_ALIAS_ALL_ACCESS      0x0000001F
-
-#define GENERIC_RIGHTS_ALIAS_ALL_ACCESS \
-               (STANDARD_RIGHTS_REQUIRED_ACCESS| \
-               SA_RIGHT_ALIAS_ALL_ACCESS)      /* 0x000f001f */
-
-#define GENERIC_RIGHTS_ALIAS_READ \
-               (STANDARD_RIGHTS_READ_ACCESS    | \
-               SA_RIGHT_ALIAS_GET_MEMBERS )    /* 0x00020004 */
-
-#define GENERIC_RIGHTS_ALIAS_WRITE \
-               (STANDARD_RIGHTS_WRITE_ACCESS   | \
-               SA_RIGHT_ALIAS_REMOVE_MEMBER    | \
-               SA_RIGHT_ALIAS_ADD_MEMBER       | \
-               SA_RIGHT_ALIAS_SET_INFO )       /* 0x00020013 */
-
-#define GENERIC_RIGHTS_ALIAS_EXECUTE \
-               (STANDARD_RIGHTS_EXECUTE_ACCESS | \
-               SA_RIGHT_ALIAS_LOOKUP_INFO )    /* 0x00020008 */
-
 #endif /* _RPC_SECDES_H */
diff --git a/source3/include/sam.h b/source3/include/sam.h
deleted file mode 100644 (file)
index f46a6e7..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   SAM structures
-   Copyright (C) Kai Krueger 2002
-   Copyright (C) Stefan (metze) Metzmacher 2002
-   Copyright (C) Simo Sorce 2002
-   Copyright (C) Andrew Bartlett 2002
-   Copyright (C) Jelmer Vernooij 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.
-   
-   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.
-*/
-
-#ifndef _SAM_H
-#define _SAM_H
-
-/* We want to track down bugs early */
-#if 1
-#define SAM_ASSERT(x) SMB_ASSERT(x)
-#else
-#define SAM_ASSERT(x) while (0) { \
-       if (!(x)) {
-               DEBUG(0, ("SAM_ASSERT failed!\n"))
-               return NT_STATUS_FAIL_CHECK;\
-       } \
-    }
-#endif
-
-
-/* let it be 0 until we have a stable interface --metze */
-#define SAM_INTERFACE_VERSION 0
-
-/* use this inside a passdb module */
-#define SAM_MODULE_VERSIONING_MAGIC \
-int sam_version(void)\
-{\
-       return SAM_INTERFACE_VERSION;\
-}
-
-/* Backend to use by default when no backend was specified */
-#define SAM_DEFAULT_BACKEND "plugin"
-
-typedef struct sam_domain_handle {
-       TALLOC_CTX *mem_ctx;
-       uint32 access_granted;
-       const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
-       void (*free_fn)(struct sam_domain_handle **);
-       struct domain_data {
-               DOM_SID sid; /*SID of the domain. Should not be changed */
-               char *name; /* Name of the domain */
-               char *servername; /* */
-               NTTIME max_passwordage; /* time till next password expiration */
-               NTTIME min_passwordage; /* time till password can be changed again */
-               NTTIME lockout_duration; /* time till login is allowed again after lockout*/
-               NTTIME reset_count; /* time till bad login counter is reset */
-               uint16 min_passwordlength; /* minimum number of characters for a password */
-               uint16 password_history; /* number of passwords stored in history */
-               uint16 lockout_count; /* number of bad login attempts before lockout */
-               BOOL force_logoff; /* force logoff after logon hours have expired */
-               BOOL login_pwdchange; /* Users need to logon to change their password */
-               uint32 num_accounts; /* number of accounts in the domain */
-               uint32 num_groups; /* number of global groups */
-               uint32 num_aliases; /* number of local groups */
-               uint32 sam_sequence_number; /* global sequence number */
-       } private;
-} SAM_DOMAIN_HANDLE;
-
-typedef struct sam_account_handle {
-       TALLOC_CTX *mem_ctx;
-       uint32 access_granted;
-       const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
-       void (*free_fn)(struct sam_account_handle **);
-       struct sam_account_data {
-               uint32 init_flag;
-               NTTIME logon_time; /* logon time */
-               NTTIME logoff_time; /* logoff time */
-               NTTIME kickoff_time; /* kickoff time */
-               NTTIME pass_last_set_time; /* password last set time */
-               NTTIME pass_can_change_time; /* password can change time */
-               NTTIME pass_must_change_time; /* password must change time */
-               char * account_name; /* account_name string */
-               SAM_DOMAIN_HANDLE * domain; /* domain of account */
-               char *full_name; /* account's full name string */
-               char *unix_home_dir; /* UNIX home directory string */
-               char *home_dir; /* home directory string */
-               char *dir_drive; /* home directory drive string */
-               char *logon_script; /* logon script string */
-               char *profile_path; /* profile path string */
-               char *acct_desc; /* account description string */
-               char *workstations; /* login from workstations string */
-               char *unknown_str; /* don't know what this is, yet. */
-               char *munged_dial; /* munged path name and dial-back tel number */
-               DOM_SID account_sid; /* Primary Account SID */
-               DOM_SID group_sid; /* Primary Group SID */
-               DATA_BLOB lm_pw; /* .data is Null if no password */
-               DATA_BLOB nt_pw; /* .data is Null if no password */
-               char *plaintext_pw; /* if Null not available */
-               uint16 acct_ctrl; /* account info (ACB_xxxx bit-mask) */
-               uint32 unknown_1; /* 0x00ff ffff */
-               uint16 logon_divs; /* 168 - number of hours in a week */
-               uint32 hours_len; /* normally 21 bytes */
-               uint8 hours[MAX_HOURS_LEN];
-               uint32 unknown_2; /* 0x0002 0000 */
-               uint32 unknown_3; /* 0x0000 04ec */
-       } private;
-} SAM_ACCOUNT_HANDLE;
-
-typedef struct sam_group_handle {
-       TALLOC_CTX *mem_ctx;
-       uint32 access_granted;
-       const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
-       void (*free_fn)(struct sam_group_handle **);
-       struct sam_group_data {
-               char *group_name;
-               char *group_desc;
-               DOM_SID sid;
-               uint16 group_ctrl; /* specifies if the group is a local group or a global group */
-               uint32 num_members;
-       } private;
-} SAM_GROUP_HANDLE;
-
-
-typedef struct sam_group_member {
-       DOM_SID sid; 
-       BOOL group; /* specifies if it is a group or a account */ 
-} SAM_GROUP_MEMBER;
-
-typedef struct sam_account_enum {
-       DOM_SID sid; 
-       char *account_name; 
-       char *full_name; 
-       char *account_desc; 
-       uint16 acct_ctrl; 
-} SAM_ACCOUNT_ENUM;
-
-typedef struct sam_group_enum {
-       DOM_SID sid;
-       char *group_name;
-       char *group_desc;
-       uint16 group_ctrl;
-} SAM_GROUP_ENUM;
-
-
-/* bits for group_ctrl: to spezify if the group is global group or alias */
-#define GCB_LOCAL_GROUP                0x0001
-#define GCB_ALIAS_GROUP                (GCB_LOCAL_GROUP |GCB_BUILTIN)
-#define GCB_GLOBAL_GROUP       0x0002
-#define GCB_BUILTIN            0x1000
-
-typedef struct sam_context 
-{
-       struct sam_methods *methods;
-       TALLOC_CTX *mem_ctx;
-       
-       void (*free_fn)(struct sam_context **);
-} SAM_CONTEXT;
-
-typedef struct sam_methods 
-{
-       struct sam_context              *parent;
-       struct sam_methods              *next;
-       struct sam_methods              *prev;
-       const char                      *backendname;
-       const char                      *domain_name;
-       DOM_SID                         domain_sid;
-       void                            *private_data;
-       
-       /* General API */
-       
-       NTSTATUS (*sam_get_sec_desc) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd);
-       NTSTATUS (*sam_set_sec_desc) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd);
-       
-       NTSTATUS (*sam_lookup_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **name, uint32 *type);
-       NTSTATUS (*sam_lookup_name) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const char *name, DOM_SID *sid, uint32 *type);
-       
-       /* Domain API */
-
-       NTSTATUS (*sam_update_domain) (const struct sam_methods *, const SAM_DOMAIN_HANDLE *domain);
-       NTSTATUS (*sam_get_domain_handle) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain);
-
-       /* Account API */
-
-       NTSTATUS (*sam_create_account) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account);
-       NTSTATUS (*sam_add_account) (const struct sam_methods *, const SAM_ACCOUNT_HANDLE *account);
-       NTSTATUS (*sam_update_account) (const struct sam_methods *, const SAM_ACCOUNT_HANDLE *account);
-       NTSTATUS (*sam_delete_account) (const struct sam_methods *, const SAM_ACCOUNT_HANDLE *account);
-       NTSTATUS (*sam_enum_accounts) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts);
-
-       NTSTATUS (*sam_get_account_by_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account);
-       NTSTATUS (*sam_get_account_by_name) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account);
-
-       /* Group API */
-
-       NTSTATUS (*sam_create_group) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group);
-       NTSTATUS (*sam_add_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group);
-       NTSTATUS (*sam_update_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group);
-       NTSTATUS (*sam_delete_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group);
-       NTSTATUS (*sam_enum_groups) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups);
-       NTSTATUS (*sam_get_group_by_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group);
-       NTSTATUS (*sam_get_group_by_name) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group);
-
-       NTSTATUS (*sam_add_member_to_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member);
-       NTSTATUS (*sam_delete_member_from_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member);
-       NTSTATUS (*sam_enum_groupmembers) (const struct sam_methods *, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members);
-
-       NTSTATUS (*sam_get_groups_of_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups);
-
-       void (*free_private_data)(void **);
-} SAM_METHODS;
-
-typedef NTSTATUS (*sam_init_function)(SAM_METHODS *, const char *);
-
-struct sam_init_function_entry {
-       char *module_name;
-       /* Function to create a member of the sam_methods list */
-       sam_init_function init;
-};
-
-typedef struct sam_backend_entry {
-       char    *module_name;
-       char    *module_params;
-       char    *domain_name;
-       DOM_SID *domain_sid;
-} SAM_BACKEND_ENTRY;
-
-
-#endif /* _SAM_H */
index 42b8113e5904c32831ae5f33c0b695bf6096afee..1ef69c5fc998ce630776369489cfa56575ae3126 100644 (file)
@@ -569,59 +569,25 @@ typedef struct {
 /*
  * bit flags representing initialized fields in SAM_ACCOUNT
  */
-enum pdb_elements {
-       PDB_UNINIT,
-       PDB_UID,
-       PDB_GID,
-       PDB_SMBHOME,
-       PDB_PROFILE,
-       PDB_DRIVE,
-       PDB_LOGONSCRIPT,
-       PDB_LOGONTIME,
-       PDB_LOGOFFTIME,
-       PDB_KICKOFFTIME,
-       PDB_CANCHANGETIME,
-       PDB_MUSTCHANGETIME,
-       PDB_PLAINTEXT_PW,
-       PDB_USERNAME,
-       PDB_FULLNAME,
-       PDB_DOMAIN,
-       PDB_NTUSERNAME,
-       PDB_HOURSLEN,
-       PDB_LOGONDIVS,
-       PDB_USERSID,
-       PDB_GROUPSID,
-       PDB_ACCTCTRL,
-       PDB_PASSLASTSET,
-       PDB_UNIXHOMEDIR,
-       PDB_ACCTDESC,
-       PDB_WORKSTATIONS,
-       PDB_UNKNOWNSTR,
-       PDB_MUNGEDDIAL,
-       PDB_HOURS,
-       PDB_UNKNOWN3,
-       PDB_UNKNOWN5,
-       PDB_UNKNOWN6,
-       PDB_LMPASSWD,
-       PDB_NTPASSWD,
-
-       /* this must be the last element */
-       PDB_COUNT,
-};
-
-enum pdb_value_state {
-       PDB_DEFAULT=0,
-       PDB_SET,
-       PDB_CHANGED
-};
+#define FLAG_SAM_UNINIT                0x00000000
+#define FLAG_SAM_UID           0x00000001
+#define FLAG_SAM_GID           0x00000002
+#define FLAG_SAM_SMBHOME       0x00000004
+#define FLAG_SAM_PROFILE       0x00000008
+#define FLAG_SAM_DRIVE          0x00000010
+#define FLAG_SAM_LOGONSCRIPT   0x00000020
+#define FLAG_SAM_LOGONTIME     0x00000040
+#define FLAG_SAM_LOGOFFTIME    0x00000080
+#define FLAG_SAM_KICKOFFTIME   0x00000100
+#define FLAG_SAM_CANCHANGETIME 0x00000200
+#define FLAG_SAM_MUSTCHANGETIME        0x00000400
+#define FLAG_SAM_PLAINTEXT_PW   0x00000800
 
 #define IS_SAM_UNIX_USER(x) \
-       (( pdb_get_init_flags(x, PDB_UID) != PDB_DEFAULT ) \
-        && ( pdb_get_init_flags(x,PDB_GID) != PDB_DEFAULT ))
+       ((pdb_get_init_flag(x) & FLAG_SAM_UID) \
+        && (pdb_get_init_flag(x) & FLAG_SAM_GID))
 
-#define IS_SAM_SET(x, flag)    (pdb_get_init_flags(x, flag) == PDB_SET)
-#define IS_SAM_CHANGED(x, flag)        (pdb_get_init_flags(x, flag) == PDB_CHANGED)
-#define IS_SAM_DEFAULT(x, flag)        (pdb_get_init_flags(x, flag) == PDB_DEFAULT)
+#define IS_SAM_SET(x, flag)    ((x)->private.init_flag & (flag))
                
 typedef struct sam_passwd
 {
@@ -633,9 +599,8 @@ typedef struct sam_passwd
 
        struct user_data {
                /* initiailization flags */
-               struct bitmap *change_flags;
-               struct bitmap *set_flags;
-
+               uint32 init_flag;
+               
                time_t logon_time;            /* logon time */
                time_t logoff_time;           /* logoff time */
                time_t kickoff_time;          /* kickoff time */
@@ -1099,14 +1064,23 @@ struct bitmap {
 #define DESIRED_ACCESS_PIPE 0x2019f
  
 /* Generic access masks & rights. */
+#define SPECIFIC_RIGHTS_MASK 0x00FFFFL
+#define STANDARD_RIGHTS_MASK 0xFF0000L
 #define DELETE_ACCESS        (1L<<16) /* 0x00010000 */
 #define READ_CONTROL_ACCESS  (1L<<17) /* 0x00020000 */
 #define WRITE_DAC_ACCESS     (1L<<18) /* 0x00040000 */
 #define WRITE_OWNER_ACCESS   (1L<<19) /* 0x00080000 */
 #define SYNCHRONIZE_ACCESS   (1L<<20) /* 0x00100000 */
 
-#define SYSTEM_SECURITY_ACCESS (1L<<24)           /* 0x01000000 */
-#define MAXIMUM_ALLOWED_ACCESS (1L<<25)           /* 0x02000000 */
+/* Combinations of standard masks. */
+#define STANDARD_RIGHTS_ALL_ACCESS (DELETE_ACCESS|READ_CONTROL_ACCESS|WRITE_DAC_ACCESS|WRITE_OWNER_ACCESS|SYNCHRONIZE_ACCESS) /* 0x001f0000 */
+#define STANDARD_RIGHTS_EXECUTE_ACCESS (READ_CONTROL_ACCESS) /* 0x00020000 */
+#define STANDARD_RIGHTS_READ_ACCESS (READ_CONTROL_ACCESS) /* 0x00200000 */
+#define STANDARD_RIGHTS_REQUIRED_ACCESS (DELETE_ACCESS|READ_CONTROL_ACCESS|WRITE_DAC_ACCESS|WRITE_OWNER_ACCESS) /* 0x000f0000 */
+#define STANDARD_RIGHTS_WRITE_ACCESS (READ_CONTROL_ACCESS) /* 0x00020000 */
+
+#define SYSTEM_SECURITY_ACCESS (1L<<24)                  /* 0x01000000 */
+#define MAXIMUM_ALLOWED_ACCESS (1L<<25)                  /* 0x02000000 */
 #define GENERIC_ALL_ACCESS     (1<<28)            /* 0x10000000 */
 #define GENERIC_EXECUTE_ACCESS (1<<29)            /* 0x20000000 */
 #define GENERIC_WRITE_ACCESS   (1<<30)            /* 0x40000000 */
@@ -1697,7 +1671,4 @@ typedef struct {
 extern struct poptOption popt_common_debug[];
 extern struct poptOption popt_common_configfile[];
 
-/* Module support */
-typedef NTSTATUS (init_module_function) (void);
-
 #endif /* _SMB_H */
index c0a1c702f294e6b9f48b738ccb600e3736365474..415b456aac2ab917ffed5b09f9fa15d2ae2936c0 100644 (file)
@@ -1 +1 @@
-#define VERSION "post3.0-HEAD"
+#define VERSION "3.0alpha21cvs"
index 26d21d085f685111ed804cc6c3deb6852f4b8139..8121c38bd5b1b0baa788b89faf7674b72f30bd82 100644 (file)
@@ -59,30 +59,6 @@ void bitmap_free(struct bitmap *bm)
        SAFE_FREE(bm);
 }
 
-/****************************************************************************
-talloc a bitmap
-****************************************************************************/
-struct bitmap *bitmap_talloc(TALLOC_CTX *mem_ctx, int n)
-{
-       struct bitmap *bm;
-
-       if (!mem_ctx) return NULL;
-
-       bm = (struct bitmap *)talloc(mem_ctx, sizeof(*bm));
-
-       if (!bm) return NULL;
-       
-       bm->n = n;
-       bm->b = (uint32 *)talloc(mem_ctx, sizeof(bm->b[0])*(n+31)/32);
-       if (!bm->b) {
-               return NULL;
-       }
-
-       memset(bm->b, 0, sizeof(bm->b[0])*(n+31)/32);
-
-       return bm;
-}
-
 /****************************************************************************
 set a bit in a bitmap
 ****************************************************************************/
diff --git a/source3/lib/domain_namemap.c b/source3/lib/domain_namemap.c
deleted file mode 100644 (file)
index 988f5e5..0000000
+++ /dev/null
@@ -1,1317 +0,0 @@
-/* 
-   Unix SMB/Netbios implementation.
-   Version 1.9.
-   Groupname handling
-   Copyright (C) Jeremy Allison 1998.
-   
-   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.
-*/
-
-/* 
- * UNIX gid and Local or Domain SID resolution.  This module resolves
- * only those entries in the map files, it is *NOT* responsible for
- * resolving UNIX groups not listed: that is an entirely different
- * matter, altogether...
- */
-
-/*
- *
- *
-
- format of the file is:
-
- unixname      NT Group name
- unixname      Domain Admins (well-known Domain Group)
- unixname      DOMAIN_NAME\NT Group name
- unixname      OTHER_DOMAIN_NAME\NT Group name
- unixname      DOMAIN_NAME\Domain Admins (well-known Domain Group)
- ....
-
- if the DOMAIN_NAME\ component is left off, then your own domain is assumed.
-
- *
- *
- */
-
-
-#include "includes.h"
-extern int DEBUGLEVEL;
-
-extern fstring global_myworkgroup;
-extern DOM_SID global_member_sid;
-extern fstring global_sam_name;
-extern DOM_SID global_sam_sid;
-extern DOM_SID global_sid_S_1_5_20;
-
-/*******************************************************************
- converts UNIX uid to an NT User RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uid_t pwdb_user_rid_to_uid(uint32 user_rid)
-{
-       return ((user_rid & (~RID_TYPE_USER))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Group RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_group_rid_to_gid(uint32 group_rid)
-{
-       return ((group_rid & (~RID_TYPE_GROUP))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Alias RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_alias_rid_to_gid(uint32 alias_rid)
-{
-       return ((alias_rid & (~RID_TYPE_ALIAS))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Group RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_gid_to_group_rid(uint32 gid)
-{
-       uint32 grp_rid = ((((gid)*RID_MULTIPLIER) + 1000) | RID_TYPE_GROUP);
-       return grp_rid;
-}
-
-/******************************************************************
- converts UNIX gid to an NT Alias RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_gid_to_alias_rid(uint32 gid)
-{
-       uint32 alias_rid = ((((gid)*RID_MULTIPLIER) + 1000) | RID_TYPE_ALIAS);
-       return alias_rid;
-}
-
-/*******************************************************************
- converts UNIX uid to an NT User RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_uid_to_user_rid(uint32 uid)
-{
-       uint32 user_rid = ((((uid)*RID_MULTIPLIER) + 1000) | RID_TYPE_USER);
-       return user_rid;
-}
-
-/******************************************************************
- converts SID + SID_NAME_USE type to a UNIX id.  the Domain SID is,
- and can only be, our own SID.
- ********************************************************************/
-static BOOL pwdb_sam_sid_to_unixid(DOM_SID *sid, uint8 type, uint32 *id)
-{
-       DOM_SID tmp_sid;
-       uint32 rid;
-
-       sid_copy(&tmp_sid, sid);
-       sid_split_rid(&tmp_sid, &rid);
-       if (!sid_equal(&global_sam_sid, &tmp_sid))
-       {
-               return False;
-       }
-
-       switch (type)
-       {
-               case SID_NAME_USER:
-               {
-                       *id = pwdb_user_rid_to_uid(rid);
-                       return True;
-               }
-               case SID_NAME_ALIAS:
-               {
-                       *id = pwdb_alias_rid_to_gid(rid);
-                       return True;
-               }
-               case SID_NAME_DOM_GRP:
-               case SID_NAME_WKN_GRP:
-               {
-                       *id = pwdb_group_rid_to_gid(rid);
-                       return True;
-               }
-       }
-       return False;
-}
-
-/******************************************************************
- converts UNIX gid + SID_NAME_USE type to a SID.  the Domain SID is,
- and can only be, our own SID.
- ********************************************************************/
-static BOOL pwdb_unixid_to_sam_sid(uint32 id, uint8 type, DOM_SID *sid)
-{
-       sid_copy(sid, &global_sam_sid);
-       switch (type)
-       {
-               case SID_NAME_USER:
-               {
-                       sid_append_rid(sid, pwdb_uid_to_user_rid(id));
-                       return True;
-               }
-               case SID_NAME_ALIAS:
-               {
-                       sid_append_rid(sid, pwdb_gid_to_alias_rid(id));
-                       return True;
-               }
-               case SID_NAME_DOM_GRP:
-               case SID_NAME_WKN_GRP:
-               {
-                       sid_append_rid(sid, pwdb_gid_to_group_rid(id));
-                       return True;
-               }
-       }
-       return False;
-}
-
-/*******************************************************************
- Decides if a RID is a well known RID.
- ********************************************************************/
-static BOOL pwdb_rid_is_well_known(uint32 rid)
-{
-       return (rid < 1000);
-}
-
-/*******************************************************************
- determines a rid's type.  NOTE: THIS IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_rid_type(uint32 rid)
-{
-       /* lkcl i understand that NT attaches an enumeration to a RID
-        * such that it can be identified as either a user, group etc
-        * type: SID_ENUM_TYPE.
-        */
-       if (pwdb_rid_is_well_known(rid))
-       {
-               /*
-                * The only well known user RIDs are DOMAIN_USER_RID_ADMIN
-                * and DOMAIN_USER_RID_GUEST.
-                */
-               if (rid == DOMAIN_USER_RID_ADMIN || rid == DOMAIN_USER_RID_GUEST)
-               {
-                       return RID_TYPE_USER;
-               }
-               if (DOMAIN_GROUP_RID_ADMINS <= rid && rid <= DOMAIN_GROUP_RID_GUESTS)
-               {
-                       return RID_TYPE_GROUP;
-               }
-               if (BUILTIN_ALIAS_RID_ADMINS <= rid && rid <= BUILTIN_ALIAS_RID_REPLICATOR)
-               {
-                       return RID_TYPE_ALIAS;
-               }
-       }
-       return (rid & RID_TYPE_MASK);
-}
-
-/*******************************************************************
- checks whether rid is a user rid.  NOTE: THIS IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-BOOL pwdb_rid_is_user(uint32 rid)
-{
-       return pwdb_rid_type(rid) == RID_TYPE_USER;
-}
-
-/**************************************************************************
- Groupname map functionality. The code loads a groupname map file and
- (currently) loads it into a linked list. This is slow and memory
- hungry, but can be changed into a more efficient storage format
- if the demands on it become excessive.
-***************************************************************************/
-
-typedef struct name_map
-{
-       ubi_slNode next;
-       DOM_NAME_MAP grp;
-
-} name_map_entry;
-
-static ubi_slList groupname_map_list;
-static ubi_slList aliasname_map_list;
-static ubi_slList ntusrname_map_list;
-
-static void delete_name_entry(name_map_entry *gmep)
-{
-       if (gmep->grp.nt_name)
-       {
-               free(gmep->grp.nt_name);
-       }
-       if (gmep->grp.nt_domain)
-       {
-               free(gmep->grp.nt_domain);
-       }
-       if (gmep->grp.unix_name)
-       {
-               free(gmep->grp.unix_name);
-       }
-       free((char*)gmep);
-}
-
-/**************************************************************************
- Delete all the entries in the name map list.
-***************************************************************************/
-
-static void delete_map_list(ubi_slList *map_list)
-{
-       name_map_entry *gmep;
-
-       while ((gmep = (name_map_entry *)ubi_slRemHead(map_list )) != NULL)
-       {
-               delete_name_entry(gmep);
-       }
-}
-
-
-/**************************************************************************
- makes a group sid out of a domain sid and a _unix_ gid.
-***************************************************************************/
-static BOOL make_mydomain_sid(DOM_NAME_MAP *grp, DOM_MAP_TYPE type)
-{
-       int ret = False;
-       fstring sid_str;
-
-       if (!map_domain_name_to_sid(&grp->sid, &(grp->nt_domain)))
-       {
-               DEBUG(0,("make_mydomain_sid: unknown domain %s\n",
-                         grp->nt_domain));
-               return False;
-       }
-
-       if (sid_equal(&grp->sid, &global_sid_S_1_5_20))
-       {
-               /*
-                * only builtin aliases are recognised in S-1-5-20
-                */
-               DEBUG(10,("make_mydomain_sid: group %s in builtin domain\n",
-                          grp->nt_name));
-
-               if (lookup_builtin_alias_name(grp->nt_name, "BUILTIN", &grp->sid, &grp->type) != 0x0)
-               {
-                       DEBUG(0,("unix group %s mapped to an unrecognised BUILTIN domain name %s\n",
-                                 grp->unix_name, grp->nt_name));
-                       return False;
-               }
-               ret = True;
-       }
-       else if (lookup_wk_user_name(grp->nt_name, grp->nt_domain, &grp->sid, &grp->type) == 0x0)
-       {
-               if (type != DOM_MAP_USER)
-               {
-                       DEBUG(0,("well-known NT user %s\\%s listed in wrong map file\n",
-                                 grp->nt_domain, grp->nt_name));
-                       return False;
-               }
-               ret = True;
-       }
-       else if (lookup_wk_group_name(grp->nt_name, grp->nt_domain, &grp->sid, &grp->type) == 0x0)
-       {
-               if (type != DOM_MAP_DOMAIN)
-               {
-                       DEBUG(0,("well-known NT group %s\\%s listed in wrong map file\n",
-                                 grp->nt_domain, grp->nt_name));
-                       return False;
-               }
-               ret = True;
-       }
-       else
-       {
-               switch (type)
-               {
-                       case DOM_MAP_USER:
-                       {
-                               grp->type = SID_NAME_USER;
-                               break;
-                       }
-                       case DOM_MAP_DOMAIN:
-                       {
-                               grp->type = SID_NAME_DOM_GRP;
-                               break;
-                       }
-                       case DOM_MAP_LOCAL:
-                       {
-                               grp->type = SID_NAME_ALIAS;
-                               break;
-                       }
-               }
-
-               ret = pwdb_unixid_to_sam_sid(grp->unix_id, grp->type, &grp->sid);
-       }
-
-       sid_to_string(sid_str, &grp->sid);
-       DEBUG(10,("nt name %s\\%s gid %d mapped to %s\n",
-                  grp->nt_domain, grp->nt_name, grp->unix_id, sid_str));
-       return ret;
-}
-
-/**************************************************************************
- makes a group sid out of an nt domain, nt group name or a unix group name.
-***************************************************************************/
-static BOOL unix_name_to_nt_name_info(DOM_NAME_MAP *map, DOM_MAP_TYPE type)
-{
-       /*
-        * Attempt to get the unix gid_t for this name.
-        */
-
-       DEBUG(5,("unix_name_to_nt_name_info: unix_name:%s\n", map->unix_name));
-
-       if (type == DOM_MAP_USER)
-       {
-               const struct passwd *pwptr = Get_Pwnam(map->unix_name, False);
-               if (pwptr == NULL)
-               {
-                       DEBUG(0,("unix_name_to_nt_name_info: Get_Pwnam for user %s\
-failed. Error was %s.\n", map->unix_name, strerror(errno) ));
-                       return False;
-               }
-
-               map->unix_id = (uint32)pwptr->pw_uid;
-       }
-       else
-       {
-               struct group *gptr = getgrnam(map->unix_name);
-               if (gptr == NULL)
-               {
-                       DEBUG(0,("unix_name_to_nt_name_info: getgrnam for group %s\
-failed. Error was %s.\n", map->unix_name, strerror(errno) ));
-                       return False;
-               }
-
-               map->unix_id = (uint32)gptr->gr_gid;
-       }
-
-       DEBUG(5,("unix_name_to_nt_name_info: unix gid:%d\n", map->unix_id));
-
-       /*
-        * Now map the name to an NT SID+RID.
-        */
-
-       if (map->nt_domain != NULL && !strequal(map->nt_domain, global_sam_name))
-       {
-               /* Must add client-call lookup code here, to 
-                * resolve remote domain's sid and the group's rid,
-                * in that domain.
-                *
-                * NOTE: it is _incorrect_ to put code here that assumes
-                * we are responsible for lookups for foriegn domains' RIDs.
-                *
-                * for foriegn domains for which we are *NOT* the PDC, all
-                * we can be responsible for is the unix gid_t to which
-                * the foriegn SID+rid maps to, on this _local_ machine.  
-                * we *CANNOT* make any short-cuts or assumptions about
-                * RIDs in a foriegn domain.
-                */
-
-               if (!map_domain_name_to_sid(&map->sid, &(map->nt_domain)))
-               {
-                       DEBUG(0,("unix_name_to_nt_name_info: no known sid for %s\n",
-                                 map->nt_domain));
-                       return False;
-               }
-       }
-
-       return make_mydomain_sid(map, type);
-}
-
-static BOOL make_name_entry(name_map_entry **new_ep,
-               char *nt_domain, char *nt_group, char *unix_group,
-               DOM_MAP_TYPE type)
-{
-       /*
-        * Create the list entry and add it onto the list.
-        */
-
-       DEBUG(5,("make_name_entry:%s,%s,%s\n", nt_domain, nt_group, unix_group));
-
-       (*new_ep) = (name_map_entry *)malloc(sizeof(name_map_entry));
-       if ((*new_ep) == NULL)
-       {
-               DEBUG(0,("make_name_entry: malloc fail for name_map_entry.\n"));
-               return False;
-       } 
-
-       ZERO_STRUCTP(*new_ep);
-
-       (*new_ep)->grp.nt_name   = strdup(nt_group  );
-       (*new_ep)->grp.nt_domain = strdup(nt_domain );
-       (*new_ep)->grp.unix_name = strdup(unix_group);
-
-       if ((*new_ep)->grp.nt_name   == NULL ||
-           (*new_ep)->grp.unix_name == NULL)
-       {
-               DEBUG(0,("make_name_entry: malloc fail for names in name_map_entry.\n"));
-               delete_name_entry((*new_ep));
-               return False;
-       }
-
-       /*
-        * look up the group names, make the Group-SID and unix gid
-        */
-       if (!unix_name_to_nt_name_info(&(*new_ep)->grp, type))
-       {
-               delete_name_entry((*new_ep));
-               return False;
-       }
-
-       return True;
-}
-
-/**************************************************************************
- Load a name map file. Sets last accessed timestamp.
-***************************************************************************/
-static ubi_slList *load_name_map(DOM_MAP_TYPE type)
-{
-       static time_t groupmap_file_last_modified = (time_t)0;
-       static time_t aliasmap_file_last_modified = (time_t)0;
-       static time_t ntusrmap_file_last_modified  = (time_t)0;
-       static BOOL initialised_group = False;
-       static BOOL initialised_alias = False;
-       static BOOL initialised_ntusr  = False;
-       char *groupname_map_file = lp_groupname_map();
-       char *aliasname_map_file = lp_aliasname_map();
-       char *ntusrname_map_file = lp_ntusrname_map();
-
-       FILE *fp;
-       char *s;
-       pstring buf;
-       name_map_entry *new_ep;
-
-       time_t *file_last_modified = NULL;
-       int    *initialised = NULL;
-       char   *map_file = NULL;
-       ubi_slList *map_list = NULL;
-
-       switch (type)
-       {
-               case DOM_MAP_DOMAIN:
-               {
-                       file_last_modified = &groupmap_file_last_modified;
-                       initialised        = &initialised_group;
-                       map_file           = groupname_map_file;
-                       map_list           = &groupname_map_list;
-
-                       break;
-               }
-               case DOM_MAP_LOCAL:
-               {
-                       file_last_modified = &aliasmap_file_last_modified;
-                       initialised        = &initialised_alias;
-                       map_file           = aliasname_map_file;
-                       map_list           = &aliasname_map_list;
-
-                       break;
-               }
-               case DOM_MAP_USER:
-               {
-                       file_last_modified = &ntusrmap_file_last_modified;
-                       initialised        = &initialised_ntusr;
-                       map_file           = ntusrname_map_file;
-                       map_list           = &ntusrname_map_list;
-
-                       break;
-               }
-       }
-
-       if (!(*initialised))
-       {
-               DEBUG(10,("initialising map %s\n", map_file));
-               ubi_slInitList(map_list);
-               (*initialised) = True;
-       }
-
-       if (!*map_file)
-       {
-               return map_list;
-       }
-
-       /*
-        * Load the file.
-        */
-
-       fp = open_file_if_modified(map_file, "r", file_last_modified);
-       if (!fp)
-       {
-               return map_list;
-       }
-
-       /*
-        * Throw away any previous list.
-        */
-       delete_map_list(map_list);
-
-       DEBUG(4,("load_name_map: Scanning name map %s\n",map_file));
-
-       while ((s = fgets_slash(buf, sizeof(buf), fp)) != NULL)
-       {
-               pstring unixname;
-               pstring nt_name;
-               fstring nt_domain;
-               fstring ntname;
-               char *p;
-
-               DEBUG(10,("Read line |%s|\n", s));
-
-               memset(nt_name, 0, sizeof(nt_name));
-
-               if (!*s || strchr("#;",*s))
-                       continue;
-
-               if (!next_token(&s,unixname, "\t\n\r=", sizeof(unixname)))
-                       continue;
-
-               if (!next_token(&s,nt_name, "\t\n\r=", sizeof(nt_name)))
-                       continue;
-
-               trim_string(unixname, " ", " ");
-               trim_string(nt_name, " ", " ");
-
-               if (!*nt_name)
-                       continue;
-
-               if (!*unixname)
-                       continue;
-
-               p = strchr(nt_name, '\\');
-
-               if (p == NULL)
-               {
-                       memset(nt_domain, 0, sizeof(nt_domain));
-                       fstrcpy(ntname, nt_name);
-               }
-               else
-               {
-                       *p = 0;
-                       p++;
-                       fstrcpy(nt_domain, nt_name);
-                       fstrcpy(ntname , p);
-               }
-
-               if (make_name_entry(&new_ep, nt_domain, ntname, unixname, type))
-               {
-                       ubi_slAddTail(map_list, (ubi_slNode *)new_ep);
-                       DEBUG(5,("unixname = %s, ntname = %s\\%s type = %d\n",
-                                 new_ep->grp.unix_name,
-                                 new_ep->grp.nt_domain,
-                                 new_ep->grp.nt_name,
-                                 new_ep->grp.type));
-               }
-       }
-
-       DEBUG(10,("load_name_map: Added %ld entries to name map.\n",
-                  ubi_slCount(map_list)));
-
-       fclose(fp);
-
-       return map_list;
-}
-
-static void copy_grp_map_entry(DOM_NAME_MAP *grp, const DOM_NAME_MAP *from)
-{
-       sid_copy(&grp->sid, &from->sid);
-       grp->unix_id   = from->unix_id;
-       grp->nt_name   = from->nt_name;
-       grp->nt_domain = from->nt_domain;
-       grp->unix_name = from->unix_name;
-       grp->type      = from->type;
-}
-
-#if 0
-/***********************************************************
- Lookup unix name.
-************************************************************/
-static BOOL map_unixname(DOM_MAP_TYPE type,
-               char *unixname, DOM_NAME_MAP *grp_info)
-{
-       name_map_entry *gmep;
-       ubi_slList *map_list;
-
-       /*
-        * Initialise and load if not already loaded.
-        */
-       map_list = load_name_map(type);
-
-       for (gmep = (name_map_entry *)ubi_slFirst(map_list);
-            gmep != NULL;
-            gmep = (name_map_entry *)ubi_slNext(gmep ))
-       {
-               if (strequal(gmep->grp.unix_name, unixname))
-               {
-                       copy_grp_map_entry(grp_info, &gmep->grp);
-                       DEBUG(7,("map_unixname: Mapping unix name %s to nt group %s.\n",
-                              gmep->grp.unix_name, gmep->grp.nt_name ));
-                       return True;
-               }
-       }
-
-       return False;
-}
-
-#endif
-
-/***********************************************************
- Lookup nt name.
-************************************************************/
-static BOOL map_ntname(DOM_MAP_TYPE type, char *ntname, char *ntdomain,
-                               DOM_NAME_MAP *grp_info)
-{
-       name_map_entry *gmep;
-       ubi_slList *map_list;
-
-       /*
-        * Initialise and load if not already loaded.
-        */
-       map_list = load_name_map(type);
-
-       for (gmep = (name_map_entry *)ubi_slFirst(map_list);
-            gmep != NULL;
-            gmep = (name_map_entry *)ubi_slNext(gmep ))
-       {
-               if (strequal(gmep->grp.nt_name  , ntname) &&
-                   strequal(gmep->grp.nt_domain, ntdomain))
-               {
-                       copy_grp_map_entry(grp_info, &gmep->grp);
-                       DEBUG(7,("map_ntname: Mapping unix name %s to nt name %s.\n",
-                              gmep->grp.unix_name, gmep->grp.nt_name ));
-                       return True;
-               }
-       }
-
-       return False;
-}
-
-
-/***********************************************************
- Lookup by SID
-************************************************************/
-static BOOL map_sid(DOM_MAP_TYPE type,
-               DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
-       name_map_entry *gmep;
-       ubi_slList *map_list;
-
-       /*
-        * Initialise and load if not already loaded.
-        */
-       map_list = load_name_map(type);
-
-       for (gmep = (name_map_entry *)ubi_slFirst(map_list);
-            gmep != NULL;
-            gmep = (name_map_entry *)ubi_slNext(gmep ))
-       {
-               if (sid_equal(&gmep->grp.sid, psid))
-               {
-                       copy_grp_map_entry(grp_info, &gmep->grp);
-                       DEBUG(7,("map_sid: Mapping unix name %s to nt name %s.\n",
-                              gmep->grp.unix_name, gmep->grp.nt_name ));
-                       return True;
-               }
-       }
-
-       return False;
-}
-
-/***********************************************************
- Lookup by gid_t.
-************************************************************/
-static BOOL map_unixid(DOM_MAP_TYPE type, uint32 unix_id, DOM_NAME_MAP *grp_info)
-{
-       name_map_entry *gmep;
-       ubi_slList *map_list;
-
-       /*
-        * Initialise and load if not already loaded.
-        */
-       map_list = load_name_map(type);
-
-       for (gmep = (name_map_entry *)ubi_slFirst(map_list);
-            gmep != NULL;
-            gmep = (name_map_entry *)ubi_slNext(gmep ))
-       {
-               fstring sid_str;
-               sid_to_string(sid_str, &gmep->grp.sid);
-               DEBUG(10,("map_unixid: enum entry unix group %s %d nt %s %s\n",
-                              gmep->grp.unix_name, gmep->grp.unix_id, gmep->grp.nt_name, sid_str));
-               if (gmep->grp.unix_id == unix_id)
-               {
-                       copy_grp_map_entry(grp_info, &gmep->grp);
-                       DEBUG(7,("map_unixid: Mapping unix name %s to nt name %s type %d\n",
-                              gmep->grp.unix_name, gmep->grp.nt_name, gmep->grp.type));
-                       return True;
-               }
-       }
-
-       return False;
-}
-
-/***********************************************************
- *
- * Call four functions to resolve unix group ids and either
- * local group SIDs or domain group SIDs listed in the local group
- * or domain group map files.
- *
- * Note that it is *NOT* the responsibility of these functions to
- * resolve entries that are not in the map files.
- *
- * Any SID can be in the map files (i.e from any Domain).
- *
- ***********************************************************/
-
-#if 0
-
-/***********************************************************
- Lookup a UNIX Group entry by name.
-************************************************************/
-BOOL map_unix_group_name(char *group_name, DOM_NAME_MAP *grp_info)
-{
-       return map_unixname(DOM_MAP_DOMAIN, group_name, grp_info);
-}
-
-/***********************************************************
- Lookup a UNIX Alias entry by name.
-************************************************************/
-BOOL map_unix_alias_name(char *alias_name, DOM_NAME_MAP *grp_info)
-{
-       return map_unixname(DOM_MAP_LOCAL, alias_name, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias name entry 
-************************************************************/
-BOOL map_nt_alias_name(char *ntalias_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
-       return map_ntname(DOM_MAP_LOCAL, ntalias_name, nt_domain, grp_info);
-}
-
-/***********************************************************
- Lookup a Group entry
-************************************************************/
-BOOL map_nt_group_name(char *ntgroup_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
-       return map_ntname(DOM_MAP_DOMAIN, ntgroup_name, nt_domain, grp_info);
-}
-
-#endif
-
-/***********************************************************
- Lookup a Username entry by name.
-************************************************************/
-static BOOL map_nt_username(char *nt_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
-       return map_ntname(DOM_MAP_USER, nt_name, nt_domain, grp_info);
-}
-
-/***********************************************************
- Lookup a Username entry by SID.
-************************************************************/
-static BOOL map_username_sid(DOM_SID *sid, DOM_NAME_MAP *grp_info)
-{
-       return map_sid(DOM_MAP_USER, sid, grp_info);
-}
-
-/***********************************************************
- Lookup a Username SID entry by uid.
-************************************************************/
-static BOOL map_username_uid(uid_t gid, DOM_NAME_MAP *grp_info)
-{
-       return map_unixid(DOM_MAP_USER, (uint32)gid, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias SID entry by name.
-************************************************************/
-BOOL map_alias_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
-       return map_sid(DOM_MAP_LOCAL, psid, grp_info);
-}
-
-/***********************************************************
- Lookup a Group entry by sid.
-************************************************************/
-BOOL map_group_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
-       return map_sid(DOM_MAP_DOMAIN, psid, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias SID entry by gid_t.
-************************************************************/
-static BOOL map_alias_gid(gid_t gid, DOM_NAME_MAP *grp_info)
-{
-       return map_unixid(DOM_MAP_LOCAL, (uint32)gid, grp_info);
-}
-
-/***********************************************************
- Lookup a Group SID entry by gid_t.
-************************************************************/
-static BOOL map_group_gid( gid_t gid, DOM_NAME_MAP *grp_info)
-{
-       return map_unixid(DOM_MAP_DOMAIN, (uint32)gid, grp_info);
-}
-
-
-/************************************************************************
- Routine to look up User details by UNIX name
-*************************************************************************/
-BOOL lookupsmbpwnam(const char *unix_usr_name, DOM_NAME_MAP *grp)
-{
-       uid_t uid;
-       DEBUG(10,("lookupsmbpwnam: unix user name %s\n", unix_usr_name));
-       if (nametouid(unix_usr_name, &uid))
-       {
-               return lookupsmbpwuid(uid, grp);
-       }
-       else
-       {
-               return False;
-       }
-}
-
-/************************************************************************
- Routine to look up a remote nt name
-*************************************************************************/
-static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
-{
-       struct cli_state cli;
-       POLICY_HND lsa_pol;
-       fstring srv_name;
-       extern struct ntuser_creds *usr_creds;
-       struct ntuser_creds usr;
-
-       BOOL res3 = True;
-       BOOL res4 = True;
-       uint32 num_sids;
-       DOM_SID *sids;
-       uint8 *types;
-       char *names[1];
-
-       usr_creds = &usr;
-
-       ZERO_STRUCT(usr);
-       pwd_set_nullpwd(&usr.pwd);
-
-       DEBUG(5,("lookup_remote_ntname: %s\n", ntname));
-
-       if (!cli_connect_serverlist(&cli, lp_passwordserver()))
-       {
-               return False;
-       }
-
-       names[0] = ntname;
-
-       fstrcpy(srv_name, "\\\\");
-       fstrcat(srv_name, cli.desthost);
-       strupper(srv_name);
-
-       /* lookup domain controller; receive a policy handle */
-       res3 = res3 ? lsa_open_policy( srv_name,
-                               &lsa_pol, True) : False;
-
-       /* send lsa lookup sids call */
-       res4 = res3 ? lsa_lookup_names( &lsa_pol,
-                                      1, names, 
-                                      &sids, &types, &num_sids) : False;
-
-       res3 = res3 ? lsa_close(&lsa_pol) : False;
-
-       if (res4 && res3 && sids != NULL && types != NULL)
-       {
-               sid_copy(sid, &sids[0]);
-               *type = types[0];
-       }
-       else
-       {
-               res3 = False;
-       }
-       if (types != NULL)
-       {
-               free(types);
-       }
-       
-       if (sids != NULL)
-       {
-               free(sids);
-       }
-       
-       return res3 && res4;
-}
-
-/************************************************************************
- Routine to look up a remote nt name
-*************************************************************************/
-static BOOL get_sid_and_type(const char *fullntname, uint8 expected_type,
-                               DOM_NAME_MAP *gmep)
-{
-       /*
-        * check with the PDC to see if it owns the name.  if so,
-        * the SID is resolved with the PDC database.
-        */
-
-       if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-       {
-               if (lookup_remote_ntname(fullntname, &gmep->sid, &gmep->type))
-               {
-                       if (sid_front_equal(&gmep->sid, &global_member_sid) &&
-                           strequal(gmep->nt_domain, global_myworkgroup) &&
-                           gmep->type == expected_type)
-                       {
-                               return True;
-                       }
-                       return False;
-               }
-       }
-
-       /*
-        * ... otherwise, it's one of ours.  map the sid ourselves,
-        * which can only happen in our own SAM database.
-        */
-
-       if (!strequal(gmep->nt_domain, global_sam_name))
-       {
-               return False;
-       }
-       if (!pwdb_unixid_to_sam_sid(gmep->unix_id, gmep->type, &gmep->sid))
-       {
-               return False;
-       }
-
-       return True;
-}
-
-/*
- * used by lookup functions below
- */
-
-static fstring nt_name;
-static fstring unix_name;
-static fstring nt_domain;
-
-/*************************************************************************
- looks up a uid, returns User Information.  
-*************************************************************************/
-BOOL lookupsmbpwuid(uid_t uid, DOM_NAME_MAP *gmep)
-{
-       DEBUG(10,("lookupsmbpwuid: unix uid %d\n", uid));
-       if (map_username_uid(uid, gmep))
-       {
-               return True;
-       }
-#if 0
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-#endif
-       {
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               gmep->unix_id = (uint32)uid;
-
-               /*
-                * ok, assume it's one of ours.  then double-check it
-                * if we are a member of a domain
-                */
-
-               gmep->type = SID_NAME_USER;
-               fstrcpy(gmep->nt_name, uidtoname(uid));
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-
-               /*
-                * here we should do a LsaLookupNames() call
-                * to check the status of the name with the PDC.
-                * if the PDC know nothing of the name, it's ours.
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-#if 0
-                       lsa_lookup_names(global_myworkgroup, gmep->nt_name, &gmep->sid...);
-#endif
-               }
-
-               /*
-                * ok, it's one of ours.
-                */
-
-               gmep->nt_domain = global_sam_name;
-               pwdb_unixid_to_sam_sid(gmep->unix_id, gmep->type, &gmep->sid);
-
-               return True;
-       }
-
-       /* oops. */
-
-       return False;
-}
-
-/*************************************************************************
- looks up by NT name, returns User Information.  
-*************************************************************************/
-BOOL lookupsmbpwntnam(const char *fullntname, DOM_NAME_MAP *gmep)
-{
-       DEBUG(10,("lookupsmbpwntnam: nt user name %s\n", fullntname));
-
-       if (!split_domain_name(fullntname, nt_domain, nt_name))
-       {
-               return False;
-       }
-
-       if (map_nt_username(nt_name, nt_domain, gmep))
-       {
-               return True;
-       }
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-       {
-               uid_t uid;
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               /*
-                * ok, it's one of ours.  we therefore "create" an nt user named
-                * after the unix user.  this is the point where "appliance mode"
-                * should get its teeth in, as unix users won't really exist,
-                * they will only be numbers...
-                */
-
-               gmep->type = SID_NAME_USER;
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-               if (!nametouid(gmep->unix_name, &uid))
-               {
-                       return False;
-               }
-               gmep->unix_id = (uint32)uid;
-
-               return get_sid_and_type(fullntname, gmep->type, gmep);
-       }
-
-       /* oops. */
-
-       return False;
-}
-
-/*************************************************************************
- looks up by RID, returns User Information.  
-*************************************************************************/
-BOOL lookupsmbpwsid(DOM_SID *sid, DOM_NAME_MAP *gmep)
-{
-       fstring sid_str;
-       sid_to_string(sid_str, sid);
-       DEBUG(10,("lookupsmbpwsid: nt sid %s\n", sid_str));
-
-       if (map_username_sid(sid, gmep))
-       {
-               return True;
-       }
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-       {
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               /*
-                * here we should do a LsaLookupNames() call
-                * to check the status of the name with the PDC.
-                * if the PDC know nothing of the name, it's ours.
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-#if 0
-                       if (lookup_remote_sid(global_myworkgroup, gmep->sid, gmep->nt_name, gmep->nt_domain...);
-#endif
-               }
-
-               /*
-                * ok, it's one of ours.  we therefore "create" an nt user named
-                * after the unix user.  this is the point where "appliance mode"
-                * should get its teeth in, as unix users won't really exist,
-                * they will only be numbers...
-                */
-
-               gmep->type = SID_NAME_USER;
-               sid_copy(&gmep->sid, sid);
-               if (!pwdb_sam_sid_to_unixid(&gmep->sid, gmep->type, &gmep->unix_id))
-               {
-                       return False;
-               }
-               fstrcpy(gmep->nt_name, uidtoname((uid_t)gmep->unix_id));
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-               gmep->nt_domain = global_sam_name;
-
-               return True;
-       }
-
-       /* oops. */
-
-       return False;
-}
-
-/************************************************************************
- Routine to look up group / alias / well-known group RID by UNIX name
-*************************************************************************/
-BOOL lookupsmbgrpnam(const char *unix_grp_name, DOM_NAME_MAP *grp)
-{
-       gid_t gid;
-       DEBUG(10,("lookupsmbgrpnam: unix user group %s\n", unix_grp_name));
-       if (nametogid(unix_grp_name, &gid))
-       {
-               return lookupsmbgrpgid(gid, grp);
-       }
-       else
-       {
-               return False;
-       }
-}
-
-/*************************************************************************
- looks up a SID, returns name map entry
-*************************************************************************/
-BOOL lookupsmbgrpsid(DOM_SID *sid, DOM_NAME_MAP *gmep)
-{
-       fstring sid_str;
-       sid_to_string(sid_str, sid);
-       DEBUG(10,("lookupsmbgrpsid: nt sid %s\n", sid_str));
-
-       if (map_alias_sid(sid, gmep))
-       {
-               return True;
-       }
-       if (map_group_sid(sid, gmep))
-       {
-               return True;
-       }
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-       {
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               /*
-                * here we should do a LsaLookupNames() call
-                * to check the status of the name with the PDC.
-                * if the PDC know nothing of the name, it's ours.
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-#if 0
-                       lsa_lookup_sids(global_myworkgroup, gmep->sid, gmep->nt_name, gmep->nt_domain...);
-#endif
-               }
-
-               /*
-                * ok, it's one of ours.  we therefore "create" an nt group or
-                * alias name named after the unix group.  this is the point
-                * where "appliance mode" should get its teeth in, as unix
-                * groups won't really exist, they will only be numbers...
-                */
-
-               /* name is not explicitly mapped
-                * with map files or the PDC
-                * so we are responsible for it...
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-                       /* ... as a LOCAL group. */
-                       gmep->type = SID_NAME_ALIAS;
-               }
-               else
-               {
-                       /* ... as a DOMAIN group. */
-                       gmep->type = SID_NAME_DOM_GRP;
-               }
-
-               sid_copy(&gmep->sid, sid);
-               if (!pwdb_sam_sid_to_unixid(&gmep->sid, gmep->type, &gmep->unix_id))
-               {
-                       return False;
-               }
-               fstrcpy(gmep->nt_name, gidtoname((gid_t)gmep->unix_id));
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-               gmep->nt_domain = global_sam_name;
-
-               return True;
-       }
-
-       /* oops */
-       return False;
-}
-
-/*************************************************************************
- looks up a gid, returns RID and type local, domain or well-known domain group
-*************************************************************************/
-BOOL lookupsmbgrpgid(gid_t gid, DOM_NAME_MAP *gmep)
-{
-       DEBUG(10,("lookupsmbgrpgid: unix gid %d\n", (int)gid));
-       if (map_alias_gid(gid, gmep))
-       {
-               return True;
-       }
-       if (map_group_gid(gid, gmep))
-       {
-               return True;
-       }
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-       {
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               gmep->unix_id = (uint32)gid;
-
-               /*
-                * here we should do a LsaLookupNames() call
-                * to check the status of the name with the PDC.
-                * if the PDC know nothing of the name, it's ours.
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-#if 0
-                       if (lsa_lookup_names(global_myworkgroup, gmep->nt_name, &gmep->sid...);
-                       {
-                               return True;
-                       }
-#endif
-               }
-
-               /*
-                * ok, it's one of ours.  we therefore "create" an nt group or
-                * alias name named after the unix group.  this is the point
-                * where "appliance mode" should get its teeth in, as unix
-                * groups won't really exist, they will only be numbers...
-                */
-
-               /* name is not explicitly mapped
-                * with map files or the PDC
-                * so we are responsible for it...
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-                       /* ... as a LOCAL group. */
-                       gmep->type = SID_NAME_ALIAS;
-               }
-               else
-               {
-                       /* ... as a DOMAIN group. */
-                       gmep->type = SID_NAME_DOM_GRP;
-               }
-               fstrcpy(gmep->nt_name, gidtoname(gid));
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-
-               return get_sid_and_type(gmep->nt_name, gmep->type, gmep);
-       }
-
-       /* oops */
-       return False;
-}
-
diff --git a/source3/lib/module.c b/source3/lib/module.c
deleted file mode 100644 (file)
index f05a68b..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   module loading system
-
-   Copyright (C) Jelmer Vernooij 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.
-   
-   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"
-
-#ifdef HAVE_DLOPEN
-NTSTATUS smb_load_module(const char *module_name)
-{
-       void *handle;
-       init_module_function *init;
-       NTSTATUS nt_status;
-
-       /* Always try to use LAZY symbol resolving; if the plugin has 
-        * backwards compatibility, there might be symbols in the 
-        * plugin referencing to old (removed) functions
-        */
-       handle = sys_dlopen(module_name, RTLD_LAZY);
-
-       if(!handle) {
-               DEBUG(0, ("Error loading module '%s': %s\n", module_name, sys_dlerror()));
-               return NT_STATUS_UNSUCCESSFUL;
-       }
-
-       init = sys_dlsym(handle, "init_module");
-
-       if(!init) {
-               DEBUG(0, ("Error trying to resolve symbol 'init_module' in %s: %s\n", module_name, sys_dlerror()));
-               return NT_STATUS_UNSUCCESSFUL;
-       }
-
-       nt_status = init();
-
-       DEBUG(2, ("Module '%s' loaded\n", module_name));
-
-       return nt_status;
-}
-
-#else /* HAVE_DLOPEN */
-
-NTSTATUS smb_load_module(const char *module_name)
-{
-       DEBUG(0,("This samba executable has not been build with plugin support"));
-       return NT_STATUS_NOT_SUPPORTED;
-}
-
-#endif /* HAVE_DLOPEN */
index dfc88e70281fb82139286a30b2f899546f64b9f3..fd7b2cf7f016cb27ee8da91e5111ad98fa9903d1 100644 (file)
@@ -430,28 +430,3 @@ char *rep_inet_ntoa(struct in_addr ip)
 #endif /* HAVE_VSYSLOG */
 
 
-#ifndef HAVE_TIMEGM
-/*
-  see the timegm man page on linux
-*/
- time_t timegm(struct tm *tm) 
-{
-       time_t ret;
-       char *tz;
-       char *tzvar;
-       
-       tz = getenv("TZ");
-       putenv("TZ=");
-       tzset();
-       ret = mktime(tm);
-       if (tz) {
-               asprintf(&tzvar, "TZ=%s", tz);
-               putenv(tzvar);
-               safe_free(tzvar);
-       } else {
-               putenv("TZ");
-       }
-       tzset();
-       return ret;
-}
-#endif
index 21d7fe85995dbe28b3b10675147ee11b37011eae..456d7ba9e295e45f1ef8c8e37d28060ba44eada4 100644 (file)
@@ -468,11 +468,11 @@ NTSTATUS samr_make_sam_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd_size)
        sid_append_rid(&act_sid, BUILTIN_ALIAS_RID_ACCOUNT_OPS);
 
        /*basic access for every one*/
-       init_sec_access(&mask, GENERIC_RIGHTS_SAM_EXECUTE | GENERIC_RIGHTS_SAM_READ);
+       init_sec_access(&mask, SAMR_EXECUTE | SAMR_READ);
        init_sec_ace(&ace[0], &global_sid_World, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
 
        /*full access for builtin aliases Administrators and Account Operators*/
-       init_sec_access(&mask, GENERIC_RIGHTS_SAM_ALL_ACCESS);
+       init_sec_access(&mask, SAMR_ALL_ACCESS);
        init_sec_ace(&ace[1], &adm_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
        init_sec_ace(&ace[2], &act_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
 
index 626c1779266c9a2f31b35bae8ddcf6a70f7ebd46..750940e336b45fe8012a8db606e1aee2007c6561 100644 (file)
@@ -88,52 +88,6 @@ uint32 ads_uf2atype(uint32 uf)
        return atype;
 } 
 
-/* 
-translated the GROUP_CTRL Flags to GroupType (groupType) 
-*/ 
-uint32 ads_gcb2gtype(uint16 gcb)
-{
-       uint32 gtype = 0x00000000;
-
-       if (gcb & GCB_ALIAS_GROUP)      gtype |= GTYPE_SECURITY_BUILTIN_LOCAL_GROUP;
-       else if(gcb & GCB_LOCAL_GROUP)  gtype |= GTYPE_SECURITY_DOMAIN_LOCAL_GROUP;
-       if (gcb & GCB_GLOBAL_GROUP)     gtype |= GTYPE_SECURITY_GLOBAL_GROUP;
-               
-       return gtype;
-}
-
-/*
-translated the GroupType (groupType) to GROUP_CTRL Flags
-*/
-uint16 ads_gtype2gcb(uint32 gtype)
-{
-       uint16 gcb = 0x0000;
-
-       switch(gtype) {
-               case GTYPE_SECURITY_BUILTIN_LOCAL_GROUP:
-                       gcb = GCB_ALIAS_GROUP;
-                       break;
-               case GTYPE_SECURITY_DOMAIN_LOCAL_GROUP:
-                       gcb = GCB_LOCAL_GROUP;
-                       break;
-               case GTYPE_SECURITY_GLOBAL_GROUP:
-                       gcb = GCB_GLOBAL_GROUP;
-                       break;
-
-               case GTYPE_DISTRIBUTION_GLOBAL_GROUP:
-                       gcb = GCB_GLOBAL_GROUP;
-                       break;
-               case GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP:
-                       gcb = GCB_LOCAL_GROUP;
-                       break;
-               case GTYPE_DISTRIBUTION_UNIVERSAL_GROUP:
-                       gcb = GCB_GLOBAL_GROUP;
-                       break;
-       }
-       
-       return gcb;
-}
-
 /* 
 get the accountType from the groupType
 */
index 52fd2e686284a37bb180614761c481ea7ff7ffc0..22b58f47dd90ed646b6515f035b1faf9af1c5345 100644 (file)
@@ -38,7 +38,7 @@ NTSTATUS ads_verify_ticket(ADS_STRUCT *ads, const DATA_BLOB *ticket,
        krb5_ticket *tkt = NULL;
        krb5_data salt;
        krb5_encrypt_block eblock;
-       int ret, i;
+       int ret;
        krb5_keyblock * key;
        krb5_principal host_princ;
        char *host_princ_s;
@@ -46,7 +46,6 @@ NTSTATUS ads_verify_ticket(ADS_STRUCT *ads, const DATA_BLOB *ticket,
        fstring myname;
        char *password_s;
        krb5_data password;
-       krb5_enctype *enctypes = NULL;
 
        if (!secrets_init()) {
                DEBUG(1,("secrets_init failed\n"));
@@ -71,6 +70,7 @@ NTSTATUS ads_verify_ticket(ADS_STRUCT *ads, const DATA_BLOB *ticket,
        ret = krb5_set_default_realm(context, ads->auth.realm);
        if (ret) {
                DEBUG(1,("krb5_set_default_realm failed (%s)\n", error_message(ret)));
+               ads_destroy(&ads);
                return NT_STATUS_LOGON_FAILURE;
        }
 
@@ -102,44 +102,30 @@ NTSTATUS ads_verify_ticket(ADS_STRUCT *ads, const DATA_BLOB *ticket,
                return NT_STATUS_NO_MEMORY;
        }
        
-       if ((ret = krb5_get_permitted_enctypes(context, &enctypes))) {
-               DEBUG(1,("krb5_get_permitted_enctypes failed (%s)\n", 
-                        error_message(ret)));
+       krb5_use_enctype(context, &eblock, ENCTYPE_DES_CBC_MD5);
+       
+       ret = krb5_string_to_key(context, &eblock, key, &password, &salt);
+       if (ret) {
+               DEBUG(1,("krb5_string_to_key failed (%s)\n", error_message(ret)));
                return NT_STATUS_LOGON_FAILURE;
        }
 
-       /* we need to setup a auth context with each possible encoding type in turn */
-       for (i=0;enctypes[i];i++) {
-               krb5_use_enctype(context, &eblock, enctypes[i]);
-
-               ret = krb5_string_to_key(context, &eblock, key, &password, &salt);
-               if (ret) {
-                       continue;
-               }
+       krb5_auth_con_setuseruserkey(context, auth_context, key);
 
-               krb5_auth_con_setuseruserkey(context, auth_context, key);
+       packet.length = ticket->length;
+       packet.data = (krb5_pointer)ticket->data;
 
-               packet.length = ticket->length;
-               packet.data = (krb5_pointer)ticket->data;
-
-               if (!(ret = krb5_rd_req(context, &auth_context, &packet, 
-                                      NULL, keytab, NULL, &tkt))) {
-                       krb5_free_ktypes(context, enctypes);
-                       break;
-               }
-       }
+#if 0
+       file_save("/tmp/ticket.dat", ticket->data, ticket->length);
+#endif
 
-       if (!enctypes[i]) {
+       if ((ret = krb5_rd_req(context, &auth_context, &packet, 
+                              NULL, keytab, NULL, &tkt))) {
                DEBUG(3,("krb5_rd_req with auth failed (%s)\n", 
                         error_message(ret)));
                return NT_STATUS_LOGON_FAILURE;
        }
 
-#if 0
-       file_save("/tmp/ticket.dat", ticket->data, ticket->length);
-#endif
-
-
        if (tkt->enc_part2) {
                *auth_data = data_blob(tkt->enc_part2->authorization_data[0]->contents,
                                       tkt->enc_part2->authorization_data[0]->length);
index 5b9c5418a17305bd40f0c4be03a0ed16c3575312..d394a57837d45868c972d0c65d78ac4fe0d0073b 100644 (file)
@@ -521,10 +521,6 @@ static void process_loop(int accept_sock)
 
                message_dispatch();
 
-               /* rescan the trusted domains list. This must be done
-                  regularly to cope with transitive trusts */
-               rescan_trusted_domains();
-
                /* Free up temporary memory */
 
                lp_talloc_free();
index 3b83fde95b944fef607356ce8d2af40f163d6b59..5f477c78f79c3d7ab3cc97191313d6f4c2427564 100644 (file)
@@ -140,31 +140,80 @@ static BOOL cm_ads_find_dc(const char *domain, struct in_addr *dc_ip, fstring sr
 */
 static BOOL cm_rpc_find_dc(const char *domain, struct in_addr *dc_ip, fstring srv_name)
 {
-       struct in_addr *ip_list = NULL;
+       struct in_addr *ip_list = NULL, exclude_ip;
        int count, i;
 
-       if (!get_dc_list(False, domain, &ip_list, &count) && 
-           !get_dc_list(True, domain, &ip_list, &count)) {
+       zero_ip(&exclude_ip);
+
+       /* Lookup domain controller name. Try the real PDC first to avoid
+          SAM sync delays */
+
+       if (get_dc_list(True, domain, &ip_list, &count)) {
+               if (name_status_find(domain, 0x1c, 0x20, ip_list[0], srv_name)) {
+                       *dc_ip = ip_list[0];
+                       SAFE_FREE(ip_list);
+                       return True;
+               }
+               /* Didn't get name, remember not to talk to this DC. */
+               exclude_ip = ip_list[0];
+               SAFE_FREE(ip_list);
+       }
+
+       if (!get_dc_list(False, domain, &ip_list, &count)) {
                DEBUG(3, ("Could not look up dc's for domain %s\n", domain));
                return False;
        }
 
-       /* Pick a nice close server */
-       if (count > 1) {
-               qsort(ip_list, count, sizeof(struct in_addr), QSORT_CAST ip_compare);
+       /* Remove the entry we've already failed with (should be the PDC). */
+       for (i = 0; i < count; i++) {
+               if (ip_equal( exclude_ip, ip_list[i]))
+                       zero_ip(&ip_list[i]);
        }
 
+       /* Pick a nice close server */
+       /* Look for DC on local net */
        for (i = 0; i < count; i++) {
                if (is_zero_ip(ip_list[i]))
                        continue;
 
+               if (!is_local_net(ip_list[i]))
+                       continue;
+               
                if (name_status_find(domain, 0x1c, 0x20, ip_list[i], srv_name)) {
                        *dc_ip = ip_list[i];
                        SAFE_FREE(ip_list);
                        return True;
                }
+               zero_ip(&ip_list[i]);
+       }
+
+       /*
+        * Secondly try and contact a random PDC/BDC.
+        */
+
+       i = (sys_random() % count);
+
+       if (!is_zero_ip(ip_list[i]) &&
+           name_status_find(domain, 0x1c, 0x20,
+                            ip_list[i], srv_name)) {
+               *dc_ip = ip_list[i];
+               SAFE_FREE(ip_list);
+               return True;
        }
+       zero_ip(&ip_list[i]); /* Tried and failed. */
+
+       /* Finally return first DC that we can contact using a node
+          status */
+       for (i = 0; i < count; i++) {
+               if (is_zero_ip(ip_list[i]))
+                       continue;
 
+               if (name_status_find(domain, 0x1c, 0x20, ip_list[i], srv_name)) {
+                       *dc_ip = ip_list[i];
+                       SAFE_FREE(ip_list);
+                       return True;
+               }
+       }
 
        SAFE_FREE(ip_list);
 
index c2e744c0a7ea51ec3dcd8c386c9750346c24b430..45f2d42f980ae6b51cb91837b5d85c0558bebf13 100644 (file)
@@ -182,8 +182,7 @@ enum winbindd_result winbindd_show_sequence(struct winbindd_cli_state *state)
        }
 
        state->response.extra_data = extra_data;
-       /* must add one to length to copy the 0 for string termination */
-       state->response.length += strlen(extra_data) + 1;
+       state->response.length += strlen(extra_data);
 
        return WINBINDD_OK;
 }
index fd3e547afb0c9bf2119dd31af93522824e62ba9f..00354187aa64ef0c9ff7c8229c8edacb0760196e 100644 (file)
@@ -153,17 +153,12 @@ void rescan_trusted_domains(void)
        static time_t last_scan;
        time_t t = time(NULL);
 
-       /* trusted domains might be disabled */
-       if (!lp_allow_trusted_domains()) {
-               return;
-       }
-       
        /* ony rescan every few minutes */
        if ((unsigned)(t - last_scan) < WINBINDD_RESCAN_FREQ) {
                return;
        }
-       last_scan = t;
-
+       last_scan = time(NULL);
+       
        DEBUG(1, ("scanning trusted domain list\n"));
 
        if (!(mem_ctx = talloc_init_named("init_domain_list")))
index 04786b59e53d35149a3fcd1822809e003a1c76ac..2d8ea858aa411e35ea4506c6d1817986e3569724 100644 (file)
@@ -45,6 +45,7 @@ static void pdb_fill_default_sam(SAM_ACCOUNT *user)
         /* Don't change these timestamp settings without a good reason.
            They are important for NT member server compatibility. */
 
+       user->private.init_flag             = FLAG_SAM_UNINIT;
        user->private.uid = user->private.gid       = -1;
 
        user->private.logon_time            = (time_t)0;
@@ -176,15 +177,15 @@ NTSTATUS pdb_fill_sam_pw(SAM_ACCOUNT *sam_account, const struct passwd *pwd)
 
        pdb_fill_default_sam(sam_account);
 
-       pdb_set_username(sam_account, pwd->pw_name, PDB_SET);
-       pdb_set_fullname(sam_account, pwd->pw_gecos, PDB_SET);
+       pdb_set_username(sam_account, pwd->pw_name);
+       pdb_set_fullname(sam_account, pwd->pw_gecos);
 
-       pdb_set_unix_homedir(sam_account, pwd->pw_dir, PDB_SET);
+       pdb_set_unix_homedir(sam_account, pwd->pw_dir);
 
-       pdb_set_domain (sam_account, lp_workgroup(), PDB_DEFAULT);
+       pdb_set_domain (sam_account, lp_workgroup());
 
-       pdb_set_uid(sam_account, pwd->pw_uid, PDB_SET);
-       pdb_set_gid(sam_account, pwd->pw_gid, PDB_SET);
+       pdb_set_uid(sam_account, pwd->pw_uid);
+       pdb_set_gid(sam_account, pwd->pw_gid);
        
        /* When we get a proper uid -> SID and SID -> uid allocation
           mechinism, we should call it here.  
@@ -199,29 +200,29 @@ NTSTATUS pdb_fill_sam_pw(SAM_ACCOUNT *sam_account, const struct passwd *pwd)
 
        /* Ensure this *must* be set right */
        if (strcmp(pwd->pw_name, guest_account) == 0) {
-               if (!pdb_set_user_sid_from_rid(sam_account, DOMAIN_USER_RID_GUEST, PDB_DEFAULT)) {
+               if (!pdb_set_user_sid_from_rid(sam_account, DOMAIN_USER_RID_GUEST)) {
                        return NT_STATUS_UNSUCCESSFUL;
                }
-               if (!pdb_set_group_sid_from_rid(sam_account, DOMAIN_GROUP_RID_GUESTS, PDB_DEFAULT)) {
+               if (!pdb_set_group_sid_from_rid(sam_account, DOMAIN_GROUP_RID_GUESTS)) {
                        return NT_STATUS_UNSUCCESSFUL;
                }
        } else {
 
                if (!pdb_set_user_sid_from_rid(sam_account, 
-                                              fallback_pdb_uid_to_user_rid(pwd->pw_uid), PDB_SET)) {
+                                              fallback_pdb_uid_to_user_rid(pwd->pw_uid))) {
                        DEBUG(0,("Can't set User SID from RID!\n"));
                        return NT_STATUS_INVALID_PARAMETER;
                }
                
                /* call the mapping code here */
-               if(pdb_getgrgid(&map, pwd->pw_gid, MAPPING_WITHOUT_PRIV)) {
-                       if (!pdb_set_group_sid(sam_account,&map.sid, PDB_SET)){
+               if(get_group_map_from_gid(pwd->pw_gid, &map, MAPPING_WITHOUT_PRIV)) {
+                       if (!pdb_set_group_sid(sam_account,&map.sid)){
                                DEBUG(0,("Can't set Group SID!\n"));
                                return NT_STATUS_INVALID_PARAMETER;
                        }
                } 
                else {
-                       if (!pdb_set_group_sid_from_rid(sam_account,pdb_gid_to_group_rid(pwd->pw_gid), PDB_SET)) {
+                       if (!pdb_set_group_sid_from_rid(sam_account,pdb_gid_to_group_rid(pwd->pw_gid))) {
                                DEBUG(0,("Can't set Group SID\n"));
                                return NT_STATUS_INVALID_PARAMETER;
                        }
@@ -236,34 +237,34 @@ NTSTATUS pdb_fill_sam_pw(SAM_ACCOUNT *sam_account, const struct passwd *pwd)
                                                            lp_logon_path(), 
                                                            pwd->pw_name, global_myname, 
                                                            pwd->pw_uid, pwd->pw_gid), 
-                                    PDB_DEFAULT);
+                                    False);
                
                pdb_set_homedir(sam_account, 
                                talloc_sub_specified((sam_account)->mem_ctx, 
                                                       lp_logon_home(),
                                                       pwd->pw_name, global_myname, 
                                                       pwd->pw_uid, pwd->pw_gid),
-                               PDB_DEFAULT);
+                               False);
                
                pdb_set_dir_drive(sam_account, 
                                  talloc_sub_specified((sam_account)->mem_ctx, 
                                                         lp_logon_drive(),
                                                         pwd->pw_name, global_myname, 
                                                         pwd->pw_uid, pwd->pw_gid),
-                                 PDB_DEFAULT);
+                                 False);
                
                pdb_set_logon_script(sam_account, 
                                     talloc_sub_specified((sam_account)->mem_ctx, 
                                                            lp_logon_script(),
                                                            pwd->pw_name, global_myname, 
                                                            pwd->pw_uid, pwd->pw_gid), 
-                                    PDB_DEFAULT);
-               if (!pdb_set_acct_ctrl(sam_account, ACB_NORMAL, PDB_DEFAULT)) {
+                                    False);
+               if (!pdb_set_acct_ctrl(sam_account, ACB_NORMAL)) {
                        DEBUG(1, ("Failed to set 'normal account' flags for user %s.\n", pwd->pw_name));
                        return NT_STATUS_UNSUCCESSFUL;
                }
        } else {
-               if (!pdb_set_acct_ctrl(sam_account, ACB_WSTRUST, PDB_DEFAULT)) {
+               if (!pdb_set_acct_ctrl(sam_account, ACB_WSTRUST)) {
                        DEBUG(1, ("Failed to set 'trusted workstation account' flags for user %s.\n", pwd->pw_name));
                        return NT_STATUS_UNSUCCESSFUL;
                }
@@ -636,7 +637,7 @@ BOOL local_lookup_sid(DOM_SID *sid, char *name, enum SID_NAME_USE *psid_name_use
 
        pdb_free_sam(&sam_account);
                
-       if (pdb_getgrsid(&map, *sid, MAPPING_WITHOUT_PRIV)) {
+       if (get_group_map_from_sid(*sid, &map, MAPPING_WITHOUT_PRIV)) {
                if (map.gid!=-1) {
                        DEBUG(5,("local_lookup_sid: mapped group %s to gid %u\n", map.nt_name, (unsigned int)map.gid));
                } else {
@@ -746,7 +747,7 @@ BOOL local_lookup_name(const char *c_user, DOM_SID *psid, enum SID_NAME_USE *psi
         */
 
        /* check if it's a mapped group */
-       if (pdb_getgrnam(&map, user, MAPPING_WITHOUT_PRIV)) {
+       if (get_group_map_from_ntname(user, &map, MAPPING_WITHOUT_PRIV)) {
                /* yes it's a mapped group */
                sid_copy(&local_sid, &map.sid);
                *psid_name_use = map.sid_name_use;
@@ -768,7 +769,7 @@ BOOL local_lookup_name(const char *c_user, DOM_SID *psid, enum SID_NAME_USE *psi
                 * JFM, 30/11/2001
                 */
                
-               if (pdb_getgrgid(&map, grp->gr_gid, MAPPING_WITHOUT_PRIV)){
+               if (get_group_map_from_gid(grp->gr_gid, &map, MAPPING_WITHOUT_PRIV)){
                        return False;
                }
                
@@ -841,7 +842,7 @@ BOOL local_sid_to_uid(uid_t *puid, const DOM_SID *psid, enum SID_NAME_USE *name_
        
        if (pdb_getsampwsid(sam_user, psid)) {
                
-               if (!IS_SAM_SET(sam_user,PDB_UID)&&!IS_SAM_CHANGED(sam_user,PDB_UID)) {
+               if (!(pdb_get_init_flag(sam_user) & FLAG_SAM_UID)) { 
                        pdb_free_sam(&sam_user);
                        return False;
                }
@@ -859,7 +860,7 @@ BOOL local_sid_to_uid(uid_t *puid, const DOM_SID *psid, enum SID_NAME_USE *name_
 
                pdb_free_sam(&sam_user);  
 
-               if (pdb_getgrsid(&map, *psid, MAPPING_WITHOUT_PRIV)) {
+               if (get_group_map_from_sid(*psid, &map, MAPPING_WITHOUT_PRIV)) {
                        DEBUG(3, ("local_sid_to_uid: SID '%s' is a group, not a user... \n", sid_to_string(str, psid)));
                        /* It's a group, not a user... */
                        return False;
@@ -897,7 +898,7 @@ DOM_SID *local_gid_to_sid(DOM_SID *psid, gid_t gid)
 
        sid_copy(psid, get_global_sam_sid());
        
-       if (pdb_getgrgid(&map, gid, MAPPING_WITHOUT_PRIV)) {
+       if (get_group_map_from_gid(gid, &map, MAPPING_WITHOUT_PRIV)) {
                sid_copy(psid, &map.sid);
        } 
        else {
@@ -925,7 +926,7 @@ BOOL local_sid_to_gid(gid_t *pgid, const DOM_SID *psid, enum SID_NAME_USE *name_
         * Or in the Builtin SID too. JFM, 11/30/2001
         */
 
-       if (pdb_getgrsid(&map, *psid, MAPPING_WITHOUT_PRIV)) {
+       if (get_group_map_from_sid(*psid, &map, MAPPING_WITHOUT_PRIV)) {
                
                /* the SID is in the mapping table but not mapped */
                if (map.gid==-1)
@@ -1036,7 +1037,7 @@ BOOL local_password_change(const char *user_name, int local_flags,
                                return False;
                        }
 
-                       if (!pdb_set_username(sam_pass, user_name, PDB_CHANGED)) {
+                       if (!pdb_set_username(sam_pass, user_name)) {
                                slprintf(err_str, err_str_len - 1, "Failed to set username for user %s.\n", user_name);
                                pdb_free_sam(&sam_pass);
                                return False;
@@ -1050,19 +1051,19 @@ BOOL local_password_change(const char *user_name, int local_flags,
        /* the 'other' acb bits not being changed here */
        other_acb =  (pdb_get_acct_ctrl(sam_pass) & (!(ACB_WSTRUST|ACB_DOMTRUST|ACB_SVRTRUST|ACB_NORMAL)));
        if (local_flags & LOCAL_TRUST_ACCOUNT) {
-               if (!pdb_set_acct_ctrl(sam_pass, ACB_WSTRUST | other_acb, PDB_CHANGED) ) {
+               if (!pdb_set_acct_ctrl(sam_pass, ACB_WSTRUST | other_acb) ) {
                        slprintf(err_str, err_str_len - 1, "Failed to set 'trusted workstation account' flags for user %s.\n", user_name);
                        pdb_free_sam(&sam_pass);
                        return False;
                }
        } else if (local_flags & LOCAL_INTERDOM_ACCOUNT) {
-               if (!pdb_set_acct_ctrl(sam_pass, ACB_DOMTRUST | other_acb, PDB_CHANGED)) {
+               if (!pdb_set_acct_ctrl(sam_pass, ACB_DOMTRUST | other_acb)) {
                        slprintf(err_str, err_str_len - 1, "Failed to set 'domain trust account' flags for user %s.\n", user_name);
                        pdb_free_sam(&sam_pass);
                        return False;
                }
        } else {
-               if (!pdb_set_acct_ctrl(sam_pass, ACB_NORMAL | other_acb, PDB_CHANGED)) {
+               if (!pdb_set_acct_ctrl(sam_pass, ACB_NORMAL | other_acb)) {
                        slprintf(err_str, err_str_len - 1, "Failed to set 'normal account' flags for user %s.\n", user_name);
                        pdb_free_sam(&sam_pass);
                        return False;
@@ -1075,13 +1076,13 @@ BOOL local_password_change(const char *user_name, int local_flags,
         */
 
        if (local_flags & LOCAL_DISABLE_USER) {
-               if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)|ACB_DISABLED, PDB_CHANGED)) {
+               if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)|ACB_DISABLED)) {
                        slprintf(err_str, err_str_len-1, "Failed to set 'disabled' flag for user %s.\n", user_name);
                        pdb_free_sam(&sam_pass);
                        return False;
                }
        } else if (local_flags & LOCAL_ENABLE_USER) {
-               if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)&(~ACB_DISABLED), PDB_CHANGED)) {
+               if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)&(~ACB_DISABLED))) {
                        slprintf(err_str, err_str_len-1, "Failed to unset 'disabled' flag for user %s.\n", user_name);
                        pdb_free_sam(&sam_pass);
                        return False;
@@ -1089,7 +1090,7 @@ BOOL local_password_change(const char *user_name, int local_flags,
        }
        
        if (local_flags & LOCAL_SET_NO_PASSWORD) {
-               if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)|ACB_PWNOTREQ, PDB_CHANGED)) {
+               if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)|ACB_PWNOTREQ)) {
                        slprintf(err_str, err_str_len-1, "Failed to set 'no password required' flag for user %s.\n", user_name);
                        pdb_free_sam(&sam_pass);
                        return False;
@@ -1105,13 +1106,13 @@ BOOL local_password_change(const char *user_name, int local_flags,
                 * don't create them disabled). JRA.
                 */
                if ((pdb_get_lanman_passwd(sam_pass)==NULL) && (pdb_get_acct_ctrl(sam_pass)&ACB_DISABLED)) {
-                       if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)&(~ACB_DISABLED), PDB_CHANGED)) {
+                       if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)&(~ACB_DISABLED))) {
                                slprintf(err_str, err_str_len-1, "Failed to unset 'disabled' flag for user %s.\n", user_name);
                                pdb_free_sam(&sam_pass);
                                return False;
                        }
                }
-               if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)&(~ACB_PWNOTREQ), PDB_CHANGED)) {
+               if (!pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)&(~ACB_PWNOTREQ))) {
                        slprintf(err_str, err_str_len-1, "Failed to unset 'no password required' flag for user %s.\n", user_name);
                        pdb_free_sam(&sam_pass);
                        return False;
index abd572a7c1452c8cf308db35fc0634c2563fdf63..713c92e3ac0a929063e3cae55914ef747c31c1c0 100644 (file)
@@ -48,7 +48,7 @@ uint32 pdb_get_group_rid (const SAM_ACCOUNT *sampass)
        return (0);
 }
 
-BOOL pdb_set_user_sid_from_rid (SAM_ACCOUNT *sampass, uint32 rid, enum pdb_value_state flag)
+BOOL pdb_set_user_sid_from_rid (SAM_ACCOUNT *sampass, uint32 rid)
 {
        DOM_SID u_sid;
        const DOM_SID *global_sam_sid;
@@ -66,7 +66,7 @@ BOOL pdb_set_user_sid_from_rid (SAM_ACCOUNT *sampass, uint32 rid, enum pdb_value
        if (!sid_append_rid(&u_sid, rid))
                return False;
 
-       if (!pdb_set_user_sid(sampass, &u_sid, flag))
+       if (!pdb_set_user_sid(sampass, &u_sid))
                return False;
 
        DEBUG(10, ("pdb_set_user_sid_from_rid:\n\tsetting user sid %s from rid %d\n", 
@@ -75,7 +75,7 @@ BOOL pdb_set_user_sid_from_rid (SAM_ACCOUNT *sampass, uint32 rid, enum pdb_value
        return True;
 }
 
-BOOL pdb_set_group_sid_from_rid (SAM_ACCOUNT *sampass, uint32 grid, enum pdb_value_state flag)
+BOOL pdb_set_group_sid_from_rid (SAM_ACCOUNT *sampass, uint32 grid)
 {
        DOM_SID g_sid;
        const DOM_SID *global_sam_sid;
@@ -93,7 +93,7 @@ BOOL pdb_set_group_sid_from_rid (SAM_ACCOUNT *sampass, uint32 grid, enum pdb_val
        if (!sid_append_rid(&g_sid, grid))
                return False;
 
-       if (!pdb_set_group_sid(sampass, &g_sid, flag))
+       if (!pdb_set_group_sid(sampass, &g_sid))
                return False;
 
        DEBUG(10, ("pdb_set_group_sid_from_rid:\n\tsetting group sid %s from rid %d\n", 
index 5dfa8667feca8914756324759a84fcee7cf18b55..07474693ddf2bbefbbb95d736452ea5b2d0df2b1 100644 (file)
@@ -37,7 +37,7 @@
 #define PDB_NOT_QUITE_NULL ""
 
 /*********************************************************************
- Collection of get...() functions for SAM_ACCOUNT.
+ Collection of get...() functions for SAM_ACCOUNT_INFO.
  ********************************************************************/
 
 uint16 pdb_get_acct_ctrl (const SAM_ACCOUNT *sampass)
@@ -178,28 +178,12 @@ const DOM_SID *pdb_get_group_sid(const SAM_ACCOUNT *sampass)
  * @return the flags indicating the members initialised in the struct.
  **/
  
-enum pdb_value_state pdb_get_init_flags (const SAM_ACCOUNT *sampass, enum pdb_elements element)
+uint32 pdb_get_init_flag (const SAM_ACCOUNT *sampass)
 {
-       enum pdb_value_state ret = PDB_DEFAULT;
-       
-        if (!sampass || !sampass->private.change_flags || !sampass->private.set_flags)
-               return ret;
-               
-        if (bitmap_query(sampass->private.set_flags, element)) {
-               DEBUG(10, ("element %d: SET\n", element)); 
-               ret = PDB_SET;
-       }
-               
-        if (bitmap_query(sampass->private.change_flags, element)) {
-               DEBUG(10, ("element %d: CHANGED\n", element)); 
-               ret = PDB_CHANGED;
-       }
-
-       if (ret == PDB_DEFAULT) {
-               DEBUG(10, ("element %d: DEFAULT\n", element)); 
-       }
-
-        return ret;
+        if (sampass)
+               return sampass->private.init_flag;
+       else 
+                return FLAG_SAM_UNINIT;
 }
 
 uid_t pdb_get_uid (const SAM_ACCOUNT *sampass)
@@ -322,7 +306,7 @@ const char* pdb_get_munged_dial (const SAM_ACCOUNT *sampass)
                return (NULL);
 }
 
-uint32 pdb_get_unknown_3 (const SAM_ACCOUNT *sampass)
+uint32 pdb_get_unknown3 (const SAM_ACCOUNT *sampass)
 {
        if (sampass)
                return (sampass->private.unknown_3);
@@ -330,7 +314,7 @@ uint32 pdb_get_unknown_3 (const SAM_ACCOUNT *sampass)
                return (-1);
 }
 
-uint32 pdb_get_unknown_5 (const SAM_ACCOUNT *sampass)
+uint32 pdb_get_unknown5 (const SAM_ACCOUNT *sampass)
 {
        if (sampass)
                return (sampass->private.unknown_5);
@@ -338,7 +322,7 @@ uint32 pdb_get_unknown_5 (const SAM_ACCOUNT *sampass)
                return (-1);
 }
 
-uint32 pdb_get_unknown_6 (const SAM_ACCOUNT *sampass)
+uint32 pdb_get_unknown6 (const SAM_ACCOUNT *sampass)
 {
        if (sampass)
                return (sampass->private.unknown_6);
@@ -347,97 +331,113 @@ uint32 pdb_get_unknown_6 (const SAM_ACCOUNT *sampass)
 }
 
 /*********************************************************************
- Collection of set...() functions for SAM_ACCOUNT.
+ Collection of set...() functions for SAM_ACCOUNT_INFO.
  ********************************************************************/
 
-BOOL pdb_set_acct_ctrl (SAM_ACCOUNT *sampass, uint16 acct_ctrl, enum pdb_value_state flag)
+BOOL pdb_set_acct_ctrl (SAM_ACCOUNT *sampass, uint16 flags)
 {
        if (!sampass)
                return False;
                
-       sampass->private.acct_ctrl = acct_ctrl;
-
-       return pdb_set_init_flags(sampass, PDB_ACCTCTRL, flag);
+       if (sampass) {
+               sampass->private.acct_ctrl = flags;
+               return True;
+       }
+       
+       return False;
 }
 
-BOOL pdb_set_logon_time (SAM_ACCOUNT *sampass, time_t mytime, enum pdb_value_state flag)
+BOOL pdb_set_logon_time (SAM_ACCOUNT *sampass, time_t mytime, BOOL store)
 {
        if (!sampass)
                return False;
 
        sampass->private.logon_time = mytime;
 
-       return pdb_set_init_flags(sampass, PDB_LOGONTIME, flag);
+       if (store)
+               pdb_set_init_flag(sampass, FLAG_SAM_LOGONTIME); 
+
+       return True;
 }
 
-BOOL pdb_set_logoff_time (SAM_ACCOUNT *sampass, time_t mytime, enum pdb_value_state flag)
+BOOL pdb_set_logoff_time (SAM_ACCOUNT *sampass, time_t mytime, BOOL store)
 {
        if (!sampass)
                return False;
 
        sampass->private.logoff_time = mytime;
 
-       return pdb_set_init_flags(sampass, PDB_LOGOFFTIME, flag);
+       if (store)
+               pdb_set_init_flag(sampass, FLAG_SAM_LOGOFFTIME); 
+
+       return True;
 }
 
-BOOL pdb_set_kickoff_time (SAM_ACCOUNT *sampass, time_t mytime, enum pdb_value_state flag)
+BOOL pdb_set_kickoff_time (SAM_ACCOUNT *sampass, time_t mytime, BOOL store)
 {
        if (!sampass)
                return False;
 
        sampass->private.kickoff_time = mytime;
 
-       return pdb_set_init_flags(sampass, PDB_KICKOFFTIME, flag);
+       if (store)
+               pdb_set_init_flag(sampass, FLAG_SAM_KICKOFFTIME); 
+
+       return True;
 }
 
-BOOL pdb_set_pass_can_change_time&nbs