1996-05-04 11:50:46 +04:00
/*
Unix SMB / Netbios implementation .
Version 1.9 .
Test validity of smb . conf
1998-01-22 16:27:43 +03:00
Copyright ( C ) Karl Auer 1993 , 1994 - 1998
1996-05-04 11:50:46 +04:00
Extensively modified by Andrew Tridgell , 1995
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 0213 9 , USA .
*/
/*
* Testbed for loadparm . c / params . c
*
* This module simply loads a specified configuration file and
* if successful , dumps it ' s contents to stdout . Note that the
* operation is performed with DEBUGLEVEL at 3.
*
* Useful for a quick ' syntax check ' of a configuration file .
*
*/
# include "includes.h"
# include "smb.h"
/* these live in util.c */
extern FILE * dbf ;
extern int DEBUGLEVEL ;
1998-02-24 20:59:34 +03:00
extern pstring myhostname ;
1996-05-04 11:50:46 +04:00
1998-05-22 05:51:14 +04:00
/***********************************************
Here we do a set of ' hard coded ' checks for bad
configuration settings .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1998-09-05 09:07:05 +04:00
static void do_global_checks ( void )
1998-05-22 05:51:14 +04:00
{
1998-09-02 00:11:54 +04:00
SMB_STRUCT_STAT st ;
1998-08-20 07:11:46 +04:00
if ( lp_security ( ) > SEC_SHARE & & lp_revalidate ( - 1 ) ) {
printf ( " WARNING: the 'revalidate' parameter is ignored in all but \
1998-05-22 05:51:14 +04:00
' security = share ' mode . \ n " );
1998-08-20 07:11:46 +04:00
}
1998-05-22 05:51:14 +04:00
1998-08-20 07:11:46 +04:00
if ( lp_wins_support ( ) & & * lp_wins_server ( ) ) {
printf ( " ERROR: both 'wins support = true' and 'wins server = <server>' \
1998-05-22 05:51:14 +04:00
cannot be set in the smb . conf file . nmbd will abort with this setting . \ n " );
1998-08-20 07:11:46 +04:00
}
if ( ! directory_exist ( lp_lockdir ( ) , & st ) ) {
printf ( " ERROR: lock directory %s does not exist \n " ,
lp_lockdir ( ) ) ;
1998-08-21 11:25:57 +04:00
} else if ( ( st . st_mode & 0777 ) ! = 0755 ) {
1998-08-21 11:29:42 +04:00
printf ( " WARNING: lock directory %s should have permissions 0755 for browsing to work \n " ,
1998-08-20 07:11:46 +04:00
lp_lockdir ( ) ) ;
}
1998-05-22 05:51:14 +04:00
}
1996-06-04 10:42:03 +04:00
int main ( int argc , char * argv [ ] )
1996-05-04 11:50:46 +04:00
{
pstring configfile ;
int s ;
1996-05-31 19:13:29 +04:00
TimeInit ( ) ;
1996-05-04 11:50:46 +04:00
setup_logging ( argv [ 0 ] , True ) ;
1997-07-19 00:21:32 +04:00
charset_initialise ( ) ;
1996-05-04 11:50:46 +04:00
if ( argc < 2 )
1998-05-12 04:55:32 +04:00
pstrcpy ( configfile , CONFIGFILE ) ;
1996-05-04 11:50:46 +04:00
else
1998-05-12 04:55:32 +04:00
pstrcpy ( configfile , argv [ 1 ] ) ;
1996-05-04 11:50:46 +04:00
dbf = stdout ;
DEBUGLEVEL = 2 ;
printf ( " Load smb config files from %s \n " , configfile ) ;
1998-02-24 20:59:34 +03:00
if ( ! get_myname ( myhostname , NULL ) )
{
printf ( " Failed to get my hostname. \n " ) ;
return ( 1 ) ;
}
1998-03-14 11:27:41 +03:00
if ( ! lp_load ( configfile , False , True , False ) )
1996-05-04 11:50:46 +04:00
{
printf ( " Error loading services. \n " ) ;
return ( 1 ) ;
}
printf ( " Loaded services file OK. \n " ) ;
1998-05-22 05:51:14 +04:00
do_global_checks ( ) ;
1996-05-04 11:50:46 +04:00
for ( s = 0 ; s < 1000 ; s + + )
if ( VALID_SNUM ( s ) )
if ( strlen ( lp_servicename ( s ) ) > 8 ) {
printf ( " WARNING: You have some share names that are longer than 8 chars \n " ) ;
printf ( " These may give errors while browsing or may not be accessible \n to some older clients \n " ) ;
break ;
}
if ( argc < 4 )
{
printf ( " Press enter to see a dump of your service definitions \n " ) ;
fflush ( stdout ) ;
getc ( stdin ) ;
1998-08-13 20:32:20 +04:00
lp_dump ( stdout , True ) ;
1996-05-04 11:50:46 +04:00
}
if ( argc = = 4 )
{
1996-10-05 14:41:13 +04:00
char * cname = argv [ 2 ] ;
char * caddr = argv [ 3 ] ;
1996-05-04 11:50:46 +04:00
/* this is totally ugly, a real `quick' hack */
for ( s = 0 ; s < 1000 ; s + + )
if ( VALID_SNUM ( s ) )
{
1996-10-05 14:41:13 +04:00
if ( allow_access ( lp_hostsdeny ( s ) , lp_hostsallow ( s ) , cname , caddr ) )
1996-05-04 11:50:46 +04:00
{
printf ( " Allow connection from %s (%s) to %s \n " ,
1996-10-05 14:41:13 +04:00
cname , caddr , lp_servicename ( s ) ) ;
1996-05-04 11:50:46 +04:00
}
else
{
printf ( " Deny connection from %s (%s) to %s \n " ,
1996-10-05 14:41:13 +04:00
cname , caddr , lp_servicename ( s ) ) ;
1996-05-04 11:50:46 +04:00
}
}
}
return ( 0 ) ;
}