samba-2.2.8a-restrict.patch

andree@luch.eu.org andree w luch.eu.org
Pią, 5 Wrz 2003, 01:21:57 CEST


Patch ten dziala na miasteczku agh, ostatnio zainstalowalem go u siebie i 
rowniez sprawuje sie bardzo dobrze. Mysle ze mozna dolaczyc go do samby w 
pld. Jezeli nie ma sprzeciwow to prosilbym o wrzucenie moich poprawek do 
cvs :)

pozdrawiam
Andree
-------------- następna część ---------
diff -urN samba-2.2.8/source/Makefile.in samba-2.2.8-restrict/source/Makefile.in
--- samba-2.2.8/source/Makefile.in	Fri Feb 28 16:56:06 2003
+++ samba-2.2.8-restrict/source/Makefile.in	Thu Mar 27 10:11:20 2003
@@ -52,6 +52,7 @@
 # or in smb.conf (see smb.conf(5))
 LOGFILEBASE = @logfilebase@
 CONFIGFILE = $(CONFIGDIR)/smb.conf
+GROUPSFILE = $(CONFIGDIR)/smb.groups
 LMHOSTSFILE = $(CONFIGDIR)/lmhosts
 DRIVERFILE = $(CONFIGDIR)/printers.def
 PASSWD_PROGRAM = @passwd_program@
@@ -84,7 +85,7 @@
 
 PASSWD_FLAGS = -DPASSWD_PROGRAM=\"$(PASSWD_PROGRAM)\" -DSMB_PASSWD_FILE=\"$(SMB_PASSWD_FILE)\" -DTDB_PASSWD_FILE=\"$(TDB_PASSWD_FILE)\"
 FLAGS1 = $(CFLAGS) @FLAGS1@ -Iinclude -I$(srcdir)/include -I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper $(CPPFLAGS) -DLOGFILEBASE=\"$(LOGFILEBASE)\"
-FLAGS2 = -DCONFIGFILE=\"$(CONFIGFILE)\" -DLMHOSTSFILE=\"$(LMHOSTSFILE)\"  
+FLAGS2 = -DCONFIGFILE=\"$(CONFIGFILE)\" -DLMHOSTSFILE=\"$(LMHOSTSFILE)\" -DGROUPSFILE=\"$(GROUPSFILE)\"
 FLAGS3 = -DSWATDIR=\"$(SWATDIR)\" -DSBINDIR=\"$(SBINDIR)\" -DLOCKDIR=\"$(LOCKDIR)\" -DCODEPAGEDIR=\"$(CODEPAGEDIR)\"
 FLAGS4 = -DDRIVERFILE=\"$(DRIVERFILE)\" -DBINDIR=\"$(BINDIR)\" -DPIDDIR=\"$(PIDDIR)\" -DLIBDIR=\"$(LIBDIR)\"
 FLAGS5 = $(FLAGS1) $(FLAGS2) $(FLAGS3) $(FLAGS4) -DHAVE_INCLUDES_H
@@ -221,7 +222,7 @@
             nmbd/nmbd_become_lmb.o nmbd/nmbd_browserdb.o \
             nmbd/nmbd_browsesync.o nmbd/nmbd_elections.o \
             nmbd/nmbd_incomingdgrams.o nmbd/nmbd_incomingrequests.o \
-            nmbd/nmbd_lmhosts.o nmbd/nmbd_logonnames.o nmbd/nmbd_mynames.o \
+            nmbd/nmbd_lmhosts.o nmbd/nmbd_restrict.o nmbd/nmbd_logonnames.o nmbd/nmbd_mynames.o \
             nmbd/nmbd_namelistdb.o nmbd/nmbd_namequery.o \
             nmbd/nmbd_nameregister.o nmbd/nmbd_namerelease.o \
             nmbd/nmbd_nodestatus.o nmbd/nmbd_packets.o \
diff -urN samba-2.2.8/source/include/nameserv.h samba-2.2.8-restrict/source/include/nameserv.h
--- samba-2.2.8/source/include/nameserv.h	Sat May 18 15:40:11 2002
+++ samba-2.2.8-restrict/source/include/nameserv.h	Thu Mar 27 10:11:20 2003
@@ -578,4 +578,13 @@
 
 /* To be removed. */
 enum state_type { TEST };
+
+
+// Maximum size of restricted groups.
+#define MAX_RESTRICTED_GROUP 100
+
+int size_restricted_group;
+char *restricted_group[MAX_RESTRICTED_GROUP];
+
+
 #endif /* _NAMESERV_H_ */
diff -urN samba-2.2.8/source/nmbd/nmbd.c samba-2.2.8-restrict/source/nmbd/nmbd.c
--- samba-2.2.8/source/nmbd/nmbd.c	Fri Mar 14 22:34:48 2003
+++ samba-2.2.8-restrict/source/nmbd/nmbd.c	Thu Mar 27 10:11:21 2003
@@ -23,6 +23,8 @@
    14 jan 96: lkcl w pires.co.uk
    added multiple workgroup domain master support
 
+   18 Feb 2001: Pawel Dabrowski (ving w icslab.agh.edu.pl)
+   added restricted groups in GROUPSFILE
 */
 
 #include "includes.h"
@@ -881,6 +883,8 @@
     DEBUG(3,("Loaded hosts file\n"));
   }
 
+  load_smb_restricted_group_file();
+  
   /* If we are acting as a WINS server, initialise data structures. */
   if( !initialise_wins() )
   {
diff -urN samba-2.2.8/source/nmbd/nmbd_restrict.c samba-2.2.8-restrict/source/nmbd/nmbd_restrict.c
--- samba-2.2.8/source/nmbd/nmbd_restrict.c	Thu Jan  1 01:00:00 1970
+++ samba-2.2.8-restrict/source/nmbd/nmbd_restrict.c	Thu Mar 27 10:11:21 2003
@@ -0,0 +1,77 @@
+/*
+   Unix SMB/Netbios implementation.
+   Version 1.9.
+   NBT netbios routines and daemon - version 2
+   Copyright (C) Jeremy Allison 1994-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.
+
+   Revision History:
+
+   Restricted groups.
+   
+   Added by Ving 2001.
+
+*/
+
+#include "includes.h"
+
+extern int DEBUGLEVEL;
+
+
+/****************************************************************************
+Load a smb.groups file.
+****************************************************************************/
+int load_smb_restricted_group_file()
+{  
+  char s[1000];   // it must be greater than maximum size of group. 
+  char* p;
+  FILE *fp = sys_fopen(GROUPSFILE,"r");
+  if (!fp) {
+    DEBUG(2,("load_smb_restricted_group_file: Can't open workgroup file %s. Error was %s\n",
+             GROUPSFILE, strerror(errno)));
+    return -1;
+  }
+
+  size_restricted_group=0;
+  while (!feof(fp)) {
+   if (fgets(s,1000,fp)==NULL) break;
+   if (strlen(s)>0) s[strlen(s)-1]=0;
+   if (strlen(s)>0 && size_restricted_group<MAX_RESTRICTED_GROUP) {
+    p =(char*)malloc(strlen(s)+1);
+    if (p==NULL) {
+      DEBUG(0,("load_smb_restricted_group_file: malloc error",
+             GROUPSFILE, strerror(errno)));
+      return -1;
+     }
+     strncpy(p,s,strlen(s)+1);
+     restricted_group[size_restricted_group++]=p;
+     DEBUG(0,("load_smb_restricted_group_file: Define restricted group %s.\n",p));
+    }
+   }    
+  fclose(fp);
+  return 0;
+}
+
+
+/****************************************************************************
+Check if workgroup name is restricted.
+****************************************************************************/
+BOOL if_restricted_group(char* name) {
+int i;
+ for (i=0;i<size_restricted_group;i++)
+  if (strcasecmp(name, restricted_group[i])==0) return True;
+ return False;
+}
diff -urN samba-2.2.8/source/nmbd/nmbd_winsserver.c samba-2.2.8-restrict/source/nmbd/nmbd_winsserver.c
--- samba-2.2.8/source/nmbd/nmbd_winsserver.c	Fri Mar 14 22:34:48 2003
+++ samba-2.2.8-restrict/source/nmbd/nmbd_winsserver.c	Thu Mar 27 10:11:21 2003
@@ -880,6 +880,13 @@
    * Name did not exist - add it.
    */
 
+  if (registering_group_name) {
+    if (!if_restricted_group(question->name)) {
+       DEBUG(3,("wins_process_name_registration_request: Attempt to register name which not definied (restrict) - %s\n",question->name));
+       return;
+      }
+   }
+
   (void)add_name_to_subnet( subrec, question->name, question->name_type,
                             nb_flags, ttl, REGISTER_NAME, 1, &from_ip );
   if ((namerec = find_name_on_subnet(subrec, question, FIND_ANY_NAME))) {
diff -urN samba-2.2.8/source/nmbd/nmbd_workgroupdb.c samba-2.2.8-restrict/source/nmbd/nmbd_workgroupdb.c
--- samba-2.2.8/source/nmbd/nmbd_workgroupdb.c	Tue Apr 30 15:27:20 2002
+++ samba-2.2.8-restrict/source/nmbd/nmbd_workgroupdb.c	Thu Mar 27 10:11:21 2003
@@ -54,7 +54,13 @@
   struct work_record *work;
   struct subnet_record *subrec;
   int t = -1;
-  
+
+    if (!if_restricted_group(name)) {
+        DEBUG(3,("create_workgroup: Attempt to create not definied group (restrict) - %s\n",name));
+	return NULL;
+     }
+
+								   
   if((work = (struct work_record *)malloc(sizeof(*work))) == NULL)
   {
     DEBUG(0,("create_workgroup: malloc fail !\n"));
-------------- następna część ---------
MYGROUP
-------------- następna część ---------
diff -Nur old/samba.spec new/samba.spec
--- old/samba.spec	Wed Aug 27 01:19:17 2003
+++ new/samba.spec	Thu Sep  4 23:46:46 2003
@@ -38,6 +38,7 @@
 Source7:	http://dl.sourceforge.net/openantivirus/%{name}-vscan-%{vscan_version}.tar.bz2
 # Source7-md5:	cacc32f21812494993e32be558b91bdd
 Source8:	http://aramin.net/~undefine/%{name}-vscan-clamav-0.2.tar.bz2
+Source9:	smb.groups
 # Source8-md5:	8d425d1e287bdf9d343b6ae4b1c9e842
 Patch1:		%{name}-config.patch
 Patch2:		%{name}-DESTDIR.patch
@@ -51,6 +52,7 @@
 Patch10:	http://v6web.litech.org/samba/%{name}-2.2.4+IPv6-20020609.diff
 Patch11:	%{name}-DESTDIR-fix.patch
 Patch12:	%{name}-CIFS-extensions.patch
+Patch13:	%{name}-2.2.8a-restrict.patch
 URL:		http://www.samba.org/
 BuildRequires:	autoconf
 %{!?_without_cups:BuildRequires:	cups-devel}
@@ -573,6 +575,7 @@
 %{?_with_ipv6:%patch10 -p1}
 %patch11 -p1
 #%patch12 -p1
+%patch13 -p1
 
 cd examples/VFS
 tar xjf %{SOURCE7}
@@ -645,6 +648,7 @@
 install %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/samba
 install %{SOURCE5} $RPM_BUILD_ROOT/etc/logrotate.d/samba
 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/smb.conf
+install %{SOURCE9} $RPM_BUILD_ROOT%{_libdir}/smb.groups
 
 install source/nsswitch/libnss_winbind.so	$RPM_BUILD_ROOT/lib/libnss_winbind.so.2
 install source/nsswitch/pam_winbind.so	$RPM_BUILD_ROOT/lib/security/
@@ -799,6 +803,7 @@
 %attr(755,root,root) %{_bindir}/testprns
 %attr(755,root,root) %{_bindir}/make_printerdef
 %{_libdir}/codepages
+%{_libdir}/smb.groups
 %{_mandir}/man1/make_smbcodepage.1*
 %{_mandir}/man1/make_unicodemap.1*
 %{_mandir}/man1/testparm.1*


Więcej informacji o liście dyskusyjnej pld-devel-pl