diff options
author | Gerald Carter <jerry@samba.org> | 2003-10-10 18:04:10 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2003-10-10 18:04:10 +0000 |
commit | f0f94187925c5551c68a438dc0424d946447a5e7 (patch) | |
tree | ead63d73fa0096480a05d36fc583d6b4e95d2438 | |
parent | 57e99bfb967ce068308d70cf08ec11598ea9750c (diff) | |
download | samba-f0f94187925c5551c68a438dc0424d946447a5e7.tar.gz samba-f0f94187925c5551c68a438dc0424d946447a5e7.tar.xz samba-f0f94187925c5551c68a438dc0424d946447a5e7.zip |
syncing up for 3.0.1pre1
123 files changed, 4057 insertions, 12656 deletions
diff --git a/packaging/RedHat/samba.spec.tmpl b/packaging/RedHat/samba.spec.tmpl index 063af05dd38..7afb30bb31e 100644 --- a/packaging/RedHat/samba.spec.tmpl +++ b/packaging/RedHat/samba.spec.tmpl @@ -68,10 +68,18 @@ autoheader autoconf EXTRA="-D_LARGEFILE64_SOURCE" %endif + +## Get number of cpu's, default for 1 cpu on error NUMCPU=`grep processor /proc/cpuinfo | wc -l` +if [ $NUMCPU -eq 0 ]; then + NUMCPU=1; +fi + +## run autogen if missing the configure script if [ ! -f "configure" ]; then ./autogen.sh fi + CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \ --prefix=%{prefix} \ --localstatedir=/var \ @@ -88,9 +96,8 @@ CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \ --with-swatdir=%{prefix}/share/swat \ --with-libsmbclient make -j${NUMCPU} proto -make -j${NUMCPU} all nsswitch/libnss_wins.so modules +make -j${NUMCPU} all nsswitch/libnss_wins.so make -j${NUMCPU} debug2html -make -j${NUMCPU} bin/smbspool # Remove some permission bits to avoid to many dependencies find examples docs -type f | xargs -r chmod -x @@ -154,11 +161,11 @@ cd .. # Install the nsswitch wins library install -m755 source/nsswitch/libnss_wins.so $RPM_BUILD_ROOT/lib -( cd $RPM_BUILD_ROOT/lib; ln -sf libnss_wins.so libnss_wins.so.2; ) +( cd $RPM_BUILD_ROOT/lib; ln -sf libnss_wins.so libnss_wins.so.2 ) # Install winbind shared libraries install -m755 source/nsswitch/libnss_winbind.so $RPM_BUILD_ROOT/lib -( cd $RPM_BUILD_ROOT/lib; ln -sf libnss_winbind.so libnss_winbind.so.2; ) +( cd $RPM_BUILD_ROOT/lib; ln -sf libnss_winbind.so libnss_winbind.so.2 ) install -m755 source/nsswitch/pam_winbind.so $RPM_BUILD_ROOT/lib/security # Install pam_smbpass.so @@ -189,6 +196,9 @@ find $RPM_BUILD_ROOT -name "*.old" -exec rm -f {} \; rm -rf $RPM_BUILD_ROOT %post +## +## only needed if this is a new install (not an upgrade) +## if [ "$1" -eq "1" ]; then /sbin/chkconfig --add smb /sbin/chkconfig --add winbind @@ -196,113 +206,119 @@ if [ "$1" -eq "1" ]; then /sbin/chkconfig winbind off fi -echo "Looking for old /etc/smb.conf..." -if [ -f /etc/smb.conf -a ! -f /etc/samba/smb.conf ]; then - echo "Moving old /etc/smb.conf to /etc/samba/smb.conf" - mv /etc/smb.conf /etc/samba/smb.conf -fi +## +## we only have to wory about this if we are upgrading +## +if [ "$1" -eq "2" ]; then + if [ -f /etc/smb.conf -a ! -f /etc/samba/smb.conf ]; then + echo "Moving old /etc/smb.conf to /etc/samba/smb.conf" + mv /etc/smb.conf /etc/samba/smb.conf + fi -echo "Looking for old /etc/smbusers..." -if [ -f /etc/smbusers -a ! -f /etc/samba/smbusers ]; then - echo "Moving old /etc/smbusers to /etc/samba/smbusers" - mv /etc/smbusers /etc/samba/smbusers -fi + if [ -f /etc/smbusers -a ! -f /etc/samba/smbusers ]; then + echo "Moving old /etc/smbusers to /etc/samba/smbusers" + mv /etc/smbusers /etc/samba/smbusers + fi -echo "Looking for old /etc/lmhosts..." -if [ -f /etc/lmhosts -a ! -f /etc/samba/lmhosts ]; then - echo "Moving old /etc/lmhosts to /etc/samba/lmhosts" - mv /etc/lmhosts /etc/samba/lmhosts -fi + if [ -f /etc/lmhosts -a ! -f /etc/samba/lmhosts ]; then + echo "Moving old /etc/lmhosts to /etc/samba/lmhosts" + mv /etc/lmhosts /etc/samba/lmhosts + fi -echo "Looking for old /etc/MACHINE.SID..." -if [ -f /etc/MACHINE.SID -a ! -f /etc/samba/MACHINE.SID ]; then - echo "Moving old /etc/MACHINE.SID to /etc/samba/MACHINE.SID" - mv /etc/MACHINE.SID /etc/samba/MACHINE.SID -fi + if [ -f /etc/MACHINE.SID -a ! -f /etc/samba/MACHINE.SID ]; then + echo "Moving old /etc/MACHINE.SID to /etc/samba/MACHINE.SID" + mv /etc/MACHINE.SID /etc/samba/MACHINE.SID + fi -echo "Looking for old /etc/smbpasswd..." -if [ -f /etc/smbpasswd -a ! -f /etc/samba/smbpasswd ]; then - echo "Moving old /etc/smbpasswd to /etc/samba/smbpasswd" - mv /etc/smbpasswd /etc/samba/smbpasswd -fi + if [ -f /etc/smbpasswd -a ! -f /etc/samba/smbpasswd ]; then + echo "Moving old /etc/smbpasswd to /etc/samba/smbpasswd" + mv /etc/smbpasswd /etc/samba/smbpasswd + fi -# -# For 2.2.1 we move the tdb files from /var/lock/samba to /var/cache/samba -# to preserve across reboots. -# -echo "Moving tdb files in /var/lock/samba/*.tdb to /var/cache/samba/*.tdb" -for i in /var/lock/samba/*.tdb -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 -done + # + # For 2.2.1 we move the tdb files from /var/lock/samba to /var/cache/samba + # to preserve across reboots. + # + for i in /var/lock/samba/*.tdb; 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 + done -# Remove the transient tdb files. -if [ -e /var/cache/samba/brlock.tdb ]; then - rm -f /var/cache/samba/brlock.tdb -fi + # Remove the transient tdb files. + if [ -e /var/cache/samba/brlock.tdb ]; then + rm -f /var/cache/samba/brlock.tdb + fi -if [ -e /var/cache/samba/unexpected.tdb ]; then - rm -f /var/cache/samba/unexpected.tdb -fi + if [ -e /var/cache/samba/unexpected.tdb ]; then + rm -f /var/cache/samba/unexpected.tdb + fi -if [ -e /var/cache/samba/connections.tdb ]; then - rm -f /var/cache/samba/connections.tdb -fi + if [ -e /var/cache/samba/connections.tdb ]; then + rm -f /var/cache/samba/connections.tdb + fi -if [ -e /var/cache/samba/locking.tdb ]; then - rm -f /var/cache/samba/locking.tdb -fi + if [ -e /var/cache/samba/locking.tdb ]; then + rm -f /var/cache/samba/locking.tdb + fi -if [ -e /var/cache/samba/messages.tdb ]; then - rm -f /var/cache/samba/messages.tdb -fi + if [ -e /var/cache/samba/messages.tdb ]; then + rm -f /var/cache/samba/messages.tdb + fi -if [ -d /var/lock/samba ]; then - rm -rf /var/lock/samba + if [ -d /var/lock/samba ]; then + rm -rf /var/lock/samba + fi fi +## +## New things +## + # Add swat entry to /etc/services if not already there. -if !( grep ^[:space:]*swat /etc/services > /dev/null ) then +if [ ! "`grep ^\s**swat /etc/services`" ]; then echo 'swat 901/tcp # Add swat service used via inetd' >> /etc/services fi # Add swat entry to /etc/inetd.conf if needed. if [ -f /etc/inetd.conf ]; then - if !( grep ^[:space:]*swat /etc/inetd.conf > /dev/null ) then + if [ ! "`grep ^\s*swat /etc/inetd.conf`" ]; then echo 'swat stream tcp nowait.400 root %{prefix}/sbin/swat swat' >> /etc/inetd.conf - killall -1 inetd || : + killall -HUP inetd || : fi fi # Add swat entry to xinetd.d if needed. -if [ -d $RPM_BUILD_ROOT/etc/xinetd.d -a ! -f /etc/xinetd.d/swat ]; then +if [ -d /etc/xinetd.d -a ! -f /etc/xinetd.d/swat ]; then mv /etc/samba/samba.xinetd /etc/xinetd.d/swat else rm -f /etc/samba/samba.xinetd fi # Install the correct version of the samba pam file, depending on pam version. -if [ -f /lib/security/pam_stack.so ]; then - echo "Installing stack version of /etc/pam.d/samba..." - mv /etc/samba/samba.stack /etc/pam.d/samba -else - echo "Installing non-stack version of /etc/pam.d/samba..." - rm -f /etc/samba/samba.stack +# (always keep an existing PAM config file) +if [ ! -f /etc/pam.d/samba ]; then + if [ -f /lib/security/pam_stack.so ]; then + echo "Installing stack version of /etc/pam.d/samba..." + mv /etc/samba/samba.stack /etc/pam.d/samba + else + echo "Installing non-stack version of /etc/pam.d/samba..." + rm -f /etc/samba/samba.stack + fi fi ## call ldconfig to create the version symlink for libsmbclient.so /sbin/ldconfig %preun -if [ $1 = 0 ] ; then +if [ "$1" -eq "0" ] ; then /sbin/chkconfig --del smb /sbin/chkconfig --del winbind - # We want to remove the browse.dat and wins.dat files so they can not interfer with a new version of samba! + # We want to remove the browse.dat and wins.dat files + # so they can not interfer with a new version of samba! if [ -e /var/cache/samba/browse.dat ]; then rm -f /var/cache/samba/browse.dat fi @@ -330,45 +346,42 @@ if [ $1 = 0 ] ; then if [ -e /var/cache/samba/messages.tdb ]; then rm -f /var/cache/samba/messages.tdb fi - - # Remove winbind nss client symlink - - if [ -L /lib/libnss_winbind.so.2 ]; then - rm -f /lib/libnss_winbind.so.2 - fi fi %postun # Only delete remnants of samba if this is the final deletion. -if [ $1 = 0 ] ; then +if [ "$1" -eq "0" ] ; then if [ -x /etc/pam.d/samba ]; then rm -f /etc/pam.d/samba fi + if [ -e /var/log/samba ]; then rm -rf /var/log/samba fi - if [ -e /var/cache/samba ]; then - rm -rf /var/cache/samba - fi + + if [ -e /var/cache/samba ]; then + rm -rf /var/cache/samba + fi # Remove swat entries from /etc/inetd.conf and /etc/services cd /etc tmpfile=/etc/tmp.$$ - if [ -f /etc/inetd.conf ]; then + if [ -f /etc/inetd.conf ]; then # preserve inetd.conf permissions. cp -p /etc/inetd.conf $tmpfile sed -e '/^[:space:]*swat.*$/d' /etc/inetd.conf > $tmpfile mv $tmpfile inetd.conf - fi + fi + # preserve services permissions. cp -p /etc/services $tmpfile sed -e '/^[:space:]*swat.*$/d' /etc/services > $tmpfile mv $tmpfile /etc/services - # Remove swat entry from /etc/xinetd.d - if [ -f /etc/xinetd.d/swat ]; then - rm -r /etc/xinetd.d/swat - fi + # Remove swat entry from /etc/xinetd.d + if [ -f /etc/xinetd.d/swat ]; then + rm -r /etc/xinetd.d/swat + fi fi /sbin/ldconfig @@ -427,7 +440,6 @@ fi %{prefix}/share/swat/lang/*/images/* %{prefix}/share/swat/lang/*/include/*.html %{prefix}/share/swat/using_samba/* -%attr(755,root,root) %{prefix}/lib/samba/*.msg %config(noreplace) /etc/samba/lmhosts %config(noreplace) /etc/samba/smb.conf %config(noreplace) /etc/samba/smbusers @@ -445,6 +457,6 @@ MANDIR_MACRO/man8/* %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/libnss_winbind.so* %attr(-,root,root) /lib/security/pam_winbind.so %attr(-,root,root) /lib/security/pam_smbpass.so diff --git a/source/Makefile.in b/source/Makefile.in index 0ea2c4411f8..4769604243b 100644 --- a/source/Makefile.in +++ b/source/Makefile.in @@ -18,6 +18,7 @@ CFLAGS=@CFLAGS@ CPPFLAGS=@CPPFLAGS@ EXEEXT=@EXEEXT@ LDFLAGS=@LDFLAGS@ +AR=@AR@ LDSHFLAGS=@LDSHFLAGS@ @LDFLAGS@ WINBIND_NSS_LDSHFLAGS=@WINBIND_NSS_LDSHFLAGS@ @LDFLAGS@ AWK=@AWK@ @@ -45,6 +46,7 @@ VPATH=@srcdir@ srcdir=@abs_srcdir@ builddir=@abs_builddir@ SHELL=/bin/sh +DESTDIR=/ # XXX: Perhaps this should be @SHELL@ instead -- apparently autoconf # will search for a POSIX-compliant shell, and that might not be @@ -181,7 +183,8 @@ LIB_OBJ = lib/version.o lib/charcnv.o lib/debug.o lib/fault.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/gencache.o $(TDB_OBJ) \ - lib/module.o lib/ldap_escape.o @CHARSET_STATIC@ + lib/module.o lib/ldap_escape.o @CHARSET_STATIC@ \ + lib/privileges.o lib/secdesc.o lib/secace.o lib/secacl.o LIB_SMBD_OBJ = lib/system_smbd.o lib/util_smbd.o @@ -218,7 +221,7 @@ LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \ libsmb/clirap.o libsmb/clierror.o libsmb/climessage.o \ libsmb/clireadwrite.o libsmb/clilist.o libsmb/cliprint.o \ libsmb/clitrans.o libsmb/clisecdesc.o libsmb/clidgram.o \ - libsmb/clistr.o \ + libsmb/clistr.o lib/util_seaccess.o \ libsmb/cliquota.o libsmb/clifsinfo.o \ libsmb/smberr.o libsmb/credentials.o libsmb/pwd_cache.o \ libsmb/clioplock.o libsmb/errormap.o libsmb/clirap2.o \ @@ -345,7 +348,7 @@ SMBD_OBJ_SRV = smbd/files.o smbd/chgpasswd.o smbd/connection.o \ smbd/vfs.o smbd/vfs-wrap.o smbd/statcache.o \ smbd/posix_acls.o lib/sysacls.o lib/server_mutex.o \ smbd/process.o smbd/service.o smbd/error.o \ - printing/printfsp.o lib/util_seaccess.o \ + printing/printfsp.o \ lib/sysquotas.o smbd/change_trust_pw.o smbd/fake_file.o \ smbd/quotas.o smbd/ntquotas.o lib/afs.o \ $(MANGLE_OBJ) @VFS_STATIC@ @@ -1180,8 +1183,8 @@ installservers: all installdirs @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS) installbin: all installdirs - @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS) - @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(BIN_PROGS) + @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS) + @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(BIN_PROGS) installmodules: modules installdirs diff --git a/source/VERSION b/source/VERSION index da17d316eae..5acae18c7d6 100644 --- a/source/VERSION +++ b/source/VERSION @@ -19,7 +19,7 @@ ######################################################## SAMBA_VERSION_MAJOR=3 SAMBA_VERSION_MINOR=0 -SAMBA_VERSION_RELEASE=0 +SAMBA_VERSION_RELEASE=1 ######################################################## # If a official release has a serious bug # @@ -41,7 +41,7 @@ SAMBA_VERSION_REVISION= # e.g. SAMBA_VERSION_PRE_RELEASE=1 # # -> "2.2.9pre1" # ######################################################## -SAMBA_VERSION_PRE_RELEASE= +SAMBA_VERSION_PRE_RELEASE=1 ######################################################## # For 'rc' releases the version will be # diff --git a/source/aclocal.m4 b/source/aclocal.m4 index 52396e56d6c..c7831c58caa 100644 --- a/source/aclocal.m4 +++ b/source/aclocal.m4 @@ -73,7 +73,7 @@ AC_DEFUN(SMB_SUBSYSTEM, AC_SUBST($1_STATIC) AC_SUBST($1_MODULES) AC_DEFINE_UNQUOTED([static_init_]translit([$1], [A-Z], [a-z]), [{$init_static_modules_]translit([$1], [A-Z], [a-z])[}], [Static init functions]) - ifelse([$2], , :, [touch $2]) + ifelse([$2], , :, [rm -f $2]) ]) dnl AC_PROG_CC_FLAG(flag) @@ -179,7 +179,7 @@ AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes], *-l$1*) ;; *) - $2="$$2 -l$1" + $2="-l$1 $$2" ;; esac]) [$6] diff --git a/source/auth/auth_sam.c b/source/auth/auth_sam.c index fb66d53cd4f..ce97bd7df26 100644 --- a/source/auth/auth_sam.c +++ b/source/auth/auth_sam.c @@ -27,8 +27,9 @@ #define DBGC_CLASS DBGC_AUTH /**************************************************************************** -core of smb password checking routine. + Core of smb password checking routine. ****************************************************************************/ + static BOOL smb_pwd_check_ntlmv1(const DATA_BLOB *nt_response, const uchar *part_passwd, const DATA_BLOB *sec_blob, @@ -54,8 +55,7 @@ static BOOL smb_pwd_check_ntlmv1(const DATA_BLOB *nt_response, } SMBOWFencrypt(part_passwd, sec_blob->data, p24); - if (user_sess_key != NULL) - { + if (user_sess_key != NULL) { SMBsesskeygen_ntv1(part_passwd, NULL, user_sess_key); } @@ -74,12 +74,11 @@ static BOOL smb_pwd_check_ntlmv1(const DATA_BLOB *nt_response, return (memcmp(p24, nt_response->data, 24) == 0); } - /**************************************************************************** -core of smb password checking routine. (NTLMv2, LMv2) - -Note: The same code works with both NTLMv2 and LMv2. + Core of smb password checking routine. (NTLMv2, LMv2) + Note: The same code works with both NTLMv2 and LMv2. ****************************************************************************/ + static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB *ntv2_response, const uchar *part_passwd, const DATA_BLOB *sec_blob, @@ -92,8 +91,7 @@ static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB *ntv2_response, uchar client_response[16]; DATA_BLOB client_key_data; - if (part_passwd == NULL) - { + if (part_passwd == NULL) { DEBUG(10,("No password set - DISALLOWING access\n")); /* No password set - always False */ return False; @@ -121,8 +119,7 @@ static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB *ntv2_response, } SMBOWFencrypt_ntv2(kr, sec_blob, &client_key_data, value_from_encryption); - if (user_sess_key != NULL) - { + if (user_sess_key != NULL) { SMBsesskeygen_ntv2(kr, value_from_encryption, user_sess_key); } @@ -142,11 +139,11 @@ static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB *ntv2_response, return (memcmp(value_from_encryption, client_response, 16) == 0); } - /**************************************************************************** Do a specific test for an smb password being correct, given a smb_password and the lanman and NT responses. ****************************************************************************/ + static NTSTATUS sam_password_ok(const struct auth_context *auth_context, TALLOC_CTX *mem_ctx, SAM_ACCOUNT *sampass, @@ -158,15 +155,11 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context, uint32 auth_flags; acct_ctrl = pdb_get_acct_ctrl(sampass); - if (acct_ctrl & ACB_PWNOTREQ) - { - if (lp_null_passwords()) - { + if (acct_ctrl & ACB_PWNOTREQ) { + if (lp_null_passwords()) { DEBUG(3,("Account for user '%s' has no password and null passwords are allowed.\n", pdb_get_username(sampass))); return(NT_STATUS_OK); - } - else - { + } else { DEBUG(3,("Account for user '%s' has no password and null passwords are NOT allowed.\n", pdb_get_username(sampass))); return(NT_STATUS_LOGON_FAILURE); } @@ -191,8 +184,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context, nt_pw, &auth_context->challenge, user_info->smb_name.str, user_info->client_domain.str, - user_sess_key)) - { + user_sess_key)) { return NT_STATUS_OK; } @@ -201,9 +193,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context, nt_pw, &auth_context->challenge, user_info->smb_name.str, "", - user_sess_key)) - - { + user_sess_key)) { return NT_STATUS_OK; } else { DEBUG(3,("sam_password_ok: NTLMv2 password check failed\n")); @@ -218,8 +208,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context, DEBUG(4,("sam_password_ok: Checking NT MD4 password\n")); if (smb_pwd_check_ntlmv1(&user_info->nt_resp, nt_pw, &auth_context->challenge, - user_sess_key)) - { + user_sess_key)) { return NT_STATUS_OK; } else { DEBUG(3,("sam_password_ok: NT MD4 password check failed for user %s\n",pdb_get_username(sampass))); @@ -247,8 +236,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context, DEBUG(4,("sam_password_ok: Checking LM password\n")); if (smb_pwd_check_ntlmv1(&user_info->lm_resp, lm_pw, &auth_context->challenge, - user_sess_key)) - { + user_sess_key)) { return NT_STATUS_OK; } } @@ -268,8 +256,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context, nt_pw, &auth_context->challenge, user_info->smb_name.str, user_info->client_domain.str, - user_sess_key)) - { + user_sess_key)) { return NT_STATUS_OK; } @@ -278,8 +265,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context, nt_pw, &auth_context->challenge, user_info->smb_name.str, "", - user_sess_key)) - { + user_sess_key)) { return NT_STATUS_OK; } @@ -287,12 +273,10 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context, - I think this is related to Win9X pass-though authentication */ DEBUG(4,("sam_password_ok: Checking NT MD4 password in LM field\n")); - if (lp_ntlm_auth()) - { + if (lp_ntlm_auth()) { if (smb_pwd_check_ntlmv1(&user_info->lm_resp, nt_pw, &auth_context->challenge, - user_sess_key)) - { + user_sess_key)) { return NT_STATUS_OK; } DEBUG(3,("sam_password_ok: LM password, NT MD4 password in LM field and LMv2 failed for user %s\n",pdb_get_username(sampass))); @@ -313,6 +297,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context, Do a specific test for a SAM_ACCOUNT being vaild for this connection (ie not disabled, expired and the like). ****************************************************************************/ + static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx, SAM_ACCOUNT *sampass, const auth_usersupplied_info *user_info) @@ -325,16 +310,22 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx, /* Quit if the account was disabled. */ if (acct_ctrl & ACB_DISABLED) { - DEBUG(1,("Account for user '%s' was disabled.\n", pdb_get_username(sampass))); + DEBUG(1,("sam_account_ok: Account for user '%s' was disabled.\n", pdb_get_username(sampass))); return NT_STATUS_ACCOUNT_DISABLED; } + /* Quit if the account was locked out. */ + if (acct_ctrl & ACB_AUTOLOCK) { + DEBUG(1,("sam_account_ok: Account for user %s was locked out.\n", pdb_get_username(sampass))); + return NT_STATUS_ACCOUNT_LOCKED_OUT; + } + /* Test account expire time */ kickoff_time = pdb_get_kickoff_time(sampass); if (kickoff_time != 0 && time(NULL) > kickoff_time) { - DEBUG(1,("Account for user '%s' has expired.\n", pdb_get_username(sampass))); - DEBUG(3,("Account expired at '%ld' unix time.\n", (long)kickoff_time)); + DEBUG(1,("sam_account_ok: Account for user '%s' has expired.\n", pdb_get_username(sampass))); + DEBUG(3,("sam_account_ok: Account expired at '%ld' unix time.\n", (long)kickoff_time)); return NT_STATUS_ACCOUNT_EXPIRED; } @@ -344,14 +335,14 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx, /* check for immediate expiry "must change at next logon" */ if (must_change_time == 0 && last_set_time != 0) { - DEBUG(1,("Account for user '%s' password must change!.\n", pdb_get_username(sampass))); + DEBUG(1,("sam_account_ok: Account for user '%s' password must change!.\n", pdb_get_username(sampass))); return NT_STATUS_PASSWORD_MUST_CHANGE; } /* check for expired password */ if (must_change_time < time(NULL) && must_change_time != 0) { - DEBUG(1,("Account for user '%s' password expired!.\n", pdb_get_username(sampass))); - DEBUG(1,("Password expired at '%s' (%ld) unix time.\n", http_timestring(must_change_time), (long)must_change_time)); + DEBUG(1,("sam_account_ok: Account for user '%s' password expired!.\n", pdb_get_username(sampass))); + DEBUG(1,("sam_account_ok: Password expired at '%s' (%ld) unix time.\n", http_timestring(must_change_time), (long)must_change_time)); return NT_STATUS_PASSWORD_EXPIRED; } } @@ -359,8 +350,8 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx, /* Test workstation. Workstation list is comma separated. */ workstation_list = talloc_strdup(mem_ctx, pdb_get_workstations(sampass)); - - if (!workstation_list) return NT_STATUS_NO_MEMORY; + if (!workstation_list) + return NT_STATUS_NO_MEMORY; if (*workstation_list) { BOOL invalid_ws = True; @@ -369,7 +360,7 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx, fstring tok; while (next_token(&s, tok, ",", sizeof(tok))) { - DEBUG(10,("checking for workstation match %s and %s (len=%d)\n", + DEBUG(10,("sam_account_ok: checking for workstation match %s and %s (len=%d)\n", tok, user_info->wksta_name.str, user_info->wksta_name.len)); if(strequal(tok, user_info->wksta_name.str)) { invalid_ws = False; @@ -399,7 +390,6 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx, return NT_STATUS_OK; } - /**************************************************************************** check if a username/password is OK assuming the password is a 24 byte SMB hash supplied in the user_info structure @@ -434,9 +424,8 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context, ret = pdb_getsampwnam(sampass, user_info->internal_username.str); unbecome_root(); - if (ret == False) - { - DEBUG(3,("Couldn't find user '%s' in passdb file.\n", user_info->internal_username.str)); + if (ret == False) { + DEBUG(3,("check_sam_security: Couldn't find user '%s' in passdb file.\n", user_info->internal_username.str)); pdb_free_sam(&sampass); return NT_STATUS_NO_SUCH_USER; } diff --git a/source/auth/auth_util.c b/source/auth/auth_util.c index 952aa8ba590..38037414661 100644 --- a/source/auth/auth_util.c +++ b/source/auth/auth_util.c @@ -644,6 +644,9 @@ NT_USER_TOKEN *create_nt_token(uid_t uid, gid_t gid, int ngroups, gid_t *groups, * * currently this is a hack, as there is no sam implementation that is capable * of groups. + * + * NOTE!! This function will fail if you pass in a winbind user without + * the domain --jerry ******************************************************************************/ static NTSTATUS get_user_groups(const char *username, uid_t uid, gid_t gid, @@ -926,8 +929,10 @@ static NTSTATUS fill_sam_account(TALLOC_CTX *mem_ctx, with just 'username'. This is need for accessing the server as a trust user that actually maps to a local account */ - if ( !passwd ) - passwd = Get_Pwnam(username); + if ( !passwd ) { + fstrcpy( dom_user, username ); + passwd = Get_Pwnam( dom_user ); + } if (passwd == NULL) return NT_STATUS_NO_SUCH_USER; @@ -935,7 +940,13 @@ static NTSTATUS fill_sam_account(TALLOC_CTX *mem_ctx, *uid = passwd->pw_uid; *gid = passwd->pw_gid; - *found_username = talloc_strdup(mem_ctx, passwd->pw_name); + /* This is pointless -- there is no suport for differeing + unix and windows names. Make sure to always store the + one we actuall looked up and succeeded. Have I mentioned + why I hate the 'winbind use default domain' parameter? + --jerry */ + + *found_username = talloc_strdup(mem_ctx, dom_user); return pdb_init_sam_pw(sam_account, passwd); } diff --git a/source/auth/auth_winbind.c b/source/auth/auth_winbind.c index cae7aadd0c7..d09987ba37a 100644 --- a/source/auth/auth_winbind.c +++ b/source/auth/auth_winbind.c @@ -126,15 +126,15 @@ static NTSTATUS check_winbind_security(const struct auth_context *auth_context, if (result == NSS_STATUS_SUCCESS && response.extra_data) { if (NT_STATUS_IS_OK(nt_status)) { - if (NT_STATUS_IS_OK(nt_status = get_info3_from_ndr(mem_ctx, &response, &info3))) { - nt_status = - make_server_info_info3(mem_ctx, - user_info->internal_username.str, - user_info->smb_name.str, - user_info->domain.str, - server_info, - &info3); + + if (NT_STATUS_IS_OK(nt_status = get_info3_from_ndr(mem_ctx, &response, &info3))) + { + nt_status = make_server_info_info3(mem_ctx, + user_info->internal_username.str, + user_info->smb_name.str, user_info->domain.str, + server_info, &info3); } + } } else if (NT_STATUS_IS_OK(nt_status)) { nt_status = NT_STATUS_NO_LOGON_SERVERS; diff --git a/source/configure.in b/source/configure.in index b981313c9ad..1bb97460ac1 100644 --- a/source/configure.in +++ b/source/configure.in @@ -166,6 +166,7 @@ AC_SUBST(EXTRA_ALL_TARGETS) AC_ARG_ENABLE(debug, [ --enable-debug Turn on compiler debugging information (default=no)], [if eval "test x$enable_debug = xyes"; then + echo "DEBUGGING TURNED ON!!!!" CFLAGS="${CFLAGS} -g" fi]) @@ -192,11 +193,21 @@ then fi dnl Checks for programs. + +## +## for some reason this macro resets the CFLAGS +## so save and restore +## +OLD_CFLAGS=${CFLAGS} AC_PROG_CC +CFLAGS=${OLD_CFLAGS} + AC_PROG_INSTALL AC_PROG_AWK AC_PATH_PROG(PERL, perl) +AC_CHECK_TOOL(AR, ar) + # compile with optimization and without debugging by default, but # allow people to set their own preference. if test "x$CFLAGS" = x @@ -480,7 +491,7 @@ main() { /* Ensure this is kernel 2.4 or higher */ uname(&uts); - release = uts.release; + release = strdup(uts.release); major = atoi(strsep(&release, ".")); minor = atoi(strsep(&release, ".")); @@ -1686,7 +1697,7 @@ done if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then AC_MSG_WARN([Sufficient support for iconv function was not found. Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!]) - AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"CP850",[Default dos charset name]) + AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name]) AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name]) AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name]) fi @@ -2684,12 +2695,12 @@ AC_ARG_WITH(expsam, case "$i" in xml) ## pdb_xml - AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[]) + AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[AC_MSG_ERROR([Can't find XML libraries while XML support is requested])]) CFLAGS="$CFLAGS $XML_CFLAGS" ;; mysql) ## pdb_mysql - AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[]) + AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])]) CFLAGS="$CFLAGS $MYSQL_CFLAGS" ;; no) @@ -3072,7 +3083,7 @@ AC_TRY_RUN_STRICT([ #define HAVE_QUOTACTL_4A 1 #define AUTOCONF_TEST 1 #include "confdefs.h" -#include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS], +#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS], samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)]) if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available]) @@ -3085,7 +3096,7 @@ AC_TRY_RUN_STRICT([ #define HAVE_QUOTACTL_4B 1 #define AUTOCONF_TEST 1 #include "confdefs.h" -#include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS], +#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS], samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)]) if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api" @@ -3099,7 +3110,7 @@ AC_TRY_RUN_STRICT([ #define HAVE_QUOTACTL_3 1 #define AUTOCONF_TEST 1 #include "confdefs.h" -#include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS], +#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS], samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)]) if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api" @@ -4096,7 +4107,7 @@ SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB) SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB) SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB) -SMB_SUBSYSTEM(PDB,passdb/pdb_interface.c) +SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o) SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC) SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC) @@ -4108,16 +4119,16 @@ SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC) SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC) SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC) SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC) -SMB_SUBSYSTEM(RPC,smbd/server.c) +SMB_SUBSYSTEM(RPC,smbd/server.o) SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP) SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP) -SMB_SUBSYSTEM(IDMAP,sam/idmap.c) +SMB_SUBSYSTEM(IDMAP,sam/idmap.o) SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET) SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET) SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET) -SMB_SUBSYSTEM(CHARSET,lib/iconv.c) +SMB_SUBSYSTEM(CHARSET,lib/iconv.o) SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH) SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH) @@ -4126,7 +4137,7 @@ SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH) SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH) SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH) SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH) -SMB_SUBSYSTEM(AUTH,auth/auth.c) +SMB_SUBSYSTEM(AUTH,auth/auth.o) SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS) SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS) @@ -4136,7 +4147,7 @@ SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", V SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS) SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS) SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS) -SMB_SUBSYSTEM(VFS,smbd/vfs.c) +SMB_SUBSYSTEM(VFS,smbd/vfs.o) AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules]) diff --git a/source/include/intl.h b/source/include/intl.h index 5b56d9aa2c9..01fa3bad976 100644 --- a/source/include/intl.h +++ b/source/include/intl.h @@ -22,3 +22,4 @@ /* ideally we would have a static mapping, but that precludes dynamic loading. This is a reasonable compromise */ #define _(x) lang_msg_rotate(x) +#define N_(x) (x) diff --git a/source/include/passdb.h b/source/include/passdb.h index e3077eee70a..a4b2bcff3fd 100644 --- a/source/include/passdb.h +++ b/source/include/passdb.h @@ -57,7 +57,8 @@ enum pdb_elements { PDB_MUNGEDDIAL, PDB_HOURS, PDB_UNKNOWN3, - PDB_UNKNOWN5, + PDB_BAD_PASSWORD_COUNT, + PDB_LOGON_COUNT, PDB_UNKNOWN6, PDB_LMPASSWD, PDB_NTPASSWD, @@ -136,7 +137,10 @@ typedef struct sam_passwd uint32 hours_len; /* normally 21 bytes */ uint8 hours[MAX_HOURS_LEN]; - uint32 unknown_5; /* 0x0002 0000 */ + /* Was unknown_5. */ + uint16 bad_password_count; + uint16 logon_count; + uint32 unknown_6; /* 0x0000 04ec */ /* a tag for who added the private methods */ const struct pdb_methods *backend_private_methods; diff --git a/source/include/privileges.h b/source/include/privileges.h index 67d8a2cbcc1..b7e1b44c2af 100644 --- a/source/include/privileges.h +++ b/source/include/privileges.h @@ -53,6 +53,8 @@ typedef struct LUID_ATTR typedef struct privilege_set { + TALLOC_CTX *mem_ctx; + BOOL ext_ctx; uint32 count; uint32 control; LUID_ATTR *set; diff --git a/source/include/rpc_dce.h b/source/include/rpc_dce.h index 2e4a418bb7d..52fe08d8753 100644 --- a/source/include/rpc_dce.h +++ b/source/include/rpc_dce.h @@ -61,8 +61,14 @@ enum RPC_PKT_TYPE /* Netlogon schannel auth type and level */ #define NETSEC_AUTH_TYPE 0x44 -#define NETSEC_SIGNATURE { 0x77, 0x00, 0x7a, 0x00, 0xff, 0xff, 0x00, 0x00 } +#define NETSEC_SIGN_SIGNATURE { 0x77, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 } +#define NETSEC_SEAL_SIGNATURE { 0x77, 0x00, 0x7a, 0x00, 0xff, 0xff, 0x00, 0x00 } #define RPC_AUTH_NETSEC_CHK_LEN 0x20 + +/* The 7 here seems to be required to get Win2k not to downgrade us + to NT4. Actually, anything other than 1ff would seem to do... */ +#define NETLOGON_NEG_AUTH2_FLAGS 0x000701ff + #define NETLOGON_NEG_SCHANNEL 0x40000000 enum netsec_direction @@ -239,13 +245,14 @@ typedef struct rpc_auth_netsec_chk_info uint8 sig [8]; /* 77 00 7a 00 ff ff 00 00 */ uint8 packet_digest[8]; /* checksum over the packet, MD5'ed with session key */ uint8 seq_num[8]; /* verifier, seq num */ - uint8 data8[8]; /* random 8-byte nonce */ + uint8 confounder[8]; /* random 8-byte nonce */ } RPC_AUTH_NETSEC_CHK; struct netsec_auth_struct { uchar sess_key[16]; uint32 seq_num; + int auth_flags; }; /* RPC_BIND_REQ - ms req bind */ diff --git a/source/include/rpc_lsa.h b/source/include/rpc_lsa.h index fa49d76c885..2064a38056e 100644 --- a/source/include/rpc_lsa.h +++ b/source/include/rpc_lsa.h @@ -657,7 +657,7 @@ typedef struct lsa_r_enumprivsaccount { uint32 ptr; uint32 count; - PRIVILEGE_SET set; + PRIVILEGE_SET *set; NTSTATUS status; } LSA_R_ENUMPRIVSACCOUNT; @@ -703,7 +703,7 @@ typedef struct lsa_q_addprivs { POLICY_HND pol; /* policy handle */ uint32 count; - PRIVILEGE_SET set; + PRIVILEGE_SET *set; } LSA_Q_ADDPRIVS; typedef struct lsa_r_addprivs @@ -718,7 +718,7 @@ typedef struct lsa_q_removeprivs uint32 allrights; uint32 ptr; uint32 count; - PRIVILEGE_SET set; + PRIVILEGE_SET *set; } LSA_Q_REMOVEPRIVS; typedef struct lsa_r_removeprivs @@ -728,5 +728,3 @@ typedef struct lsa_r_removeprivs #endif /* _RPC_LSA_H */ - - diff --git a/source/include/rpc_misc.h b/source/include/rpc_misc.h index a0572a0bfdc..aaaad55c20c 100644 --- a/source/include/rpc_misc.h +++ b/source/include/rpc_misc.h @@ -85,49 +85,42 @@ typedef struct enum_hnd_info { uint32 ptr_hnd; /* pointer to enumeration handle */ uint32 handle; /* enumeration handle */ - } ENUM_HND; /* LOOKUP_LEVEL - switch value */ typedef struct lookup_level_info { - uint16 value; - + uint16 value; } LOOKUP_LEVEL; /* DOM_SID2 - security id */ typedef struct sid_info_2 { uint32 num_auths; /* length, bytes, including length of len :-) */ - DOM_SID sid; - } DOM_SID2; /* STRHDR - string header */ typedef struct header_info { - uint16 str_str_len; - uint16 str_max_len; - uint32 buffer; /* non-zero */ - + uint16 str_str_len; + uint16 str_max_len; + uint32 buffer; /* non-zero */ } STRHDR; /* UNIHDR - unicode string header */ typedef struct unihdr_info { - uint16 uni_str_len; - uint16 uni_max_len; - uint32 buffer; /* usually has a value of 4 */ - + uint16 uni_str_len; + uint16 uni_max_len; + uint32 buffer; /* usually has a value of 4 */ } UNIHDR; /* UNIHDR2 - unicode string header and undocumented buffer */ typedef struct unihdr2_info { - UNIHDR unihdr; - uint32 buffer; /* 32 bit buffer pointer */ - + UNIHDR unihdr; + uint32 buffer; /* 32 bit buffer pointer */ } UNIHDR2; /* clueless as to what maximum length should be */ @@ -138,16 +131,15 @@ typedef struct unihdr2_info /* UNISTR - unicode string size and buffer */ typedef struct unistr_info { - /* unicode characters. ***MUST*** be little-endian. ***MUST*** be null-terminated */ - uint16 *buffer; + /* unicode characters. ***MUST*** be little-endian. ***MUST*** be null-terminated */ + uint16 *buffer; } UNISTR; /* BUFHDR - buffer header */ typedef struct bufhdr_info { - uint32 buf_max_len; - uint32 buf_len; - + uint32 buf_max_len; + uint32 buf_len; } BUFHDR; /* BUFFER2 - unicode string, size (in uint8 ascii chars) and buffer */ @@ -155,51 +147,47 @@ typedef struct bufhdr_info /* of a unicode string different from the other \PIPE\ writers */ typedef struct buffer2_info { - uint32 buf_max_len; - uint32 undoc; - uint32 buf_len; - /* unicode characters. ***MUST*** be little-endian. **NOT** necessarily null-terminated */ - uint16 *buffer; - + uint32 buf_max_len; + uint32 offset; + uint32 buf_len; + /* unicode characters. ***MUST*** be little-endian. **NOT** necessarily null-terminated */ + uint16 *buffer; } BUFFER2; /* BUFFER3 */ typedef struct buffer3_info { - uint32 buf_max_len; - uint8 *buffer; /* Data */ - uint32 buf_len; - + uint32 buf_max_len; + uint8 *buffer; /* Data */ + uint32 buf_len; } BUFFER3; /* BUFFER5 */ typedef struct buffer5_info { - uint32 buf_len; - uint16 *buffer; /* data */ + uint32 buf_len; + uint16 *buffer; /* data */ } BUFFER5; /* UNISTR2 - unicode string size (in uint16 unicode chars) and buffer */ typedef struct unistr2_info { - uint32 uni_max_len; - uint32 undoc; - uint32 uni_str_len; - /* unicode characters. ***MUST*** be little-endian. - **must** be null-terminated and the uni_str_len should include - the NULL character */ - uint16 *buffer; - + uint32 uni_max_len; + uint32 offset; + uint32 uni_str_len; + /* unicode characters. ***MUST*** be little-endian. + **must** be null-terminated and the uni_str_len should include + the NULL character */ + uint16 *buffer; } UNISTR2; /* STRING2 - string size (in uint8 chars) and buffer */ typedef struct string2_info { - uint32 str_max_len; - uint32 undoc; - uint32 str_str_len; - uint8 *buffer; /* uint8 characters. **NOT** necessarily null-terminated */ - + uint32 str_max_len; + uint32 offset; + uint32 str_str_len; + uint8 *buffer; /* uint8 characters. **NOT** necessarily null-terminated */ } STRING2; /* UNISTR3 - XXXX not sure about this structure */ @@ -266,85 +254,77 @@ typedef struct domrid3_info /* DOM_RID4 - rid + user attributes */ typedef struct domrid4_info { - uint32 unknown; - uint16 attr; - uint32 rid; /* user RID */ - + uint32 unknown; + uint16 attr; + uint32 rid; /* user RID */ } DOM_RID4; /* DOM_CLNT_SRV - client / server names */ typedef struct clnt_srv_info { - uint32 undoc_buffer; /* undocumented 32 bit buffer pointer */ - UNISTR2 uni_logon_srv; /* logon server name */ - uint32 undoc_buffer2; /* undocumented 32 bit buffer pointer */ - UNISTR2 uni_comp_name; /* client machine name */ - + uint32 undoc_buffer; /* undocumented 32 bit buffer pointer */ + UNISTR2 uni_logon_srv; /* logon server name */ + uint32 undoc_buffer2; /* undocumented 32 bit buffer pointer */ + UNISTR2 uni_comp_name; /* client machine name */ } DOM_CLNT_SRV; /* DOM_LOG_INFO - login info */ typedef struct log_info { - uint32 undoc_buffer; /* undocumented 32 bit buffer pointer */ - UNISTR2 uni_logon_srv; /* logon server name */ - UNISTR2 uni_acct_name; /* account name */ - uint16 sec_chan; /* secure channel type */ - UNISTR2 uni_comp_name; /* client machine name */ - + uint32 undoc_buffer; /* undocumented 32 bit buffer pointer */ + UNISTR2 uni_logon_srv; /* logon server name */ + UNISTR2 uni_acct_name; /* account name */ + uint16 sec_chan; /* secure channel type */ + UNISTR2 uni_comp_name; /* client machine name */ } DOM_LOG_INFO; /* DOM_CHAL - challenge info */ typedef struct chal_info { - uchar data[8]; /* credentials */ + uchar data[8]; /* credentials */ } DOM_CHAL; /* DOM_CREDs - timestamped client or server credentials */ typedef struct cred_info { - DOM_CHAL challenge; /* credentials */ - UTIME timestamp; /* credential time-stamp */ + DOM_CHAL challenge; /* credentials */ + UTIME timestamp; /* credential time-stamp */ } DOM_CRED; /* DOM_CLNT_INFO - client info */ typedef struct clnt_info { - DOM_LOG_INFO login; - DOM_CRED cred; - + DOM_LOG_INFO login; + DOM_CRED cred; } DOM_CLNT_INFO; /* DOM_CLNT_INFO2 - client info */ typedef struct clnt_info2 { - DOM_CLNT_SRV login; - uint32 ptr_cred; - DOM_CRED cred; - + DOM_CLNT_SRV login; + uint32 ptr_cred; + DOM_CRED cred; } DOM_CLNT_INFO2; /* DOM_LOGON_ID - logon id */ typedef struct logon_info { - uint32 low; - uint32 high; - + uint32 low; + uint32 high; } DOM_LOGON_ID; /* OWF INFO */ typedef struct owf_info { - uint8 data[16]; - + uint8 data[16]; } OWF_INFO; /* DOM_GID - group id + user attributes */ typedef struct gid_info { - uint32 g_rid; /* a group RID */ - uint32 attr; - + uint32 g_rid; /* a group RID */ + uint32 attr; } DOM_GID; /* POLICY_HND */ @@ -355,7 +335,6 @@ typedef struct lsa_policy_info uint16 data3; uint16 data4; uint8 data5[8]; - #ifdef __INSURE__ /* To prevent the leakage of policy handles mallocate a bit of @@ -366,7 +345,6 @@ typedef struct lsa_policy_info char *marker; #endif - } POLICY_HND; /* @@ -425,5 +403,5 @@ typedef struct buffer4_info } BUFFER4; - +enum unistr2_term_codes { UNI_FLAGS_NONE = 0, UNI_STR_TERMINATE = 1, UNI_MAXLEN_TERMINATE = 2 }; #endif /* _RPC_MISC_H */ diff --git a/source/include/rpc_samr.h b/source/include/rpc_samr.h index 4d9ad0b2e18..3b81042df37 100644 --- a/source/include/rpc_samr.h +++ b/source/include/rpc_samr.h @@ -189,7 +189,9 @@ typedef struct sam_user_info_23 /* uint8 pad[2] */ uint32 ptr_logon_hrs; /* pointer to logon hours */ - uint32 unknown_5; /* 0x0001 0000 */ + /* Was unknown_5. */ + uint16 bad_password_count; + uint16 logon_count; uint8 padding1[6]; @@ -312,7 +314,9 @@ typedef struct sam_user_info_21 /* uint8 pad[2] */ uint32 ptr_logon_hrs; /* unknown pointer */ - uint32 unknown_5; /* 0x0002 0000 */ + /* Was unknown_5. */ + uint16 bad_password_count; + uint16 logon_count; uint8 padding1[6]; diff --git a/source/include/smbldap.h b/source/include/smbldap.h index 826fc3c55a1..9765b9fbd60 100644 --- a/source/include/smbldap.h +++ b/source/include/smbldap.h @@ -88,6 +88,8 @@ #define LDAP_ATTR_SID 32 #define LDAP_ATTR_ALGORITHMIC_RID_BASE 33 #define LDAP_ATTR_NEXT_RID 34 +#define LDAP_ATTR_BAD_PASSWORD_COUNT 35 +#define LDAP_ATTR_LOGON_COUNT 36 typedef struct _attrib_map_entry { int attrib; diff --git a/source/include/talloc.h b/source/include/talloc.h index 4badddbb880..433b52ec954 100644 --- a/source/include/talloc.h +++ b/source/include/talloc.h @@ -30,6 +30,27 @@ /** * talloc allocation pool. All allocated blocks can be freed in one go. **/ + +struct talloc_chunk { + struct talloc_chunk *next; + size_t size; + void *ptr; +}; + +struct talloc_ctx { + struct talloc_chunk *list; + size_t total_alloc_size; + + /** The name recorded for this pool, if any. Should describe + * the purpose for which it was allocated. The string is + * allocated within the pool. **/ + char *name; + + /** Pointer to the next allocate talloc pool, so that we can + * summarize all talloc memory usage. **/ + struct talloc_ctx *next_ctx; +}; + typedef struct talloc_ctx TALLOC_CTX; TALLOC_CTX *talloc_init(char const *fmt, ...) PRINTF_ATTRIBUTE(1, 2); diff --git a/source/intl/lang_tdb.c b/source/intl/lang_tdb.c index 5409ce6619d..af70b529ff9 100644 --- a/source/intl/lang_tdb.c +++ b/source/intl/lang_tdb.c @@ -176,16 +176,47 @@ BOOL lang_tdb_init(const char *lang) const char *lang_msg(const char *msgid) { TDB_DATA key, data; + char *p, *q, *msgid_quoted; + int count; lang_tdb_init(NULL); if (!tdb) return msgid; - key.dptr = (char *)msgid; - key.dsize = strlen(msgid)+1; + /* Due to the way quotes in msgids are escaped in the msg file we + must replace " with \" before doing a lookup in the tdb. */ + + count = 0; + + for(p = msgid; *p; p++) { + if (*p == '\"') + count++; + } + + if (!(msgid_quoted = malloc(strlen(msgid) + count + 1))) + return msgid; + + /* string_sub() is unsuitable here as it replaces some punctuation + chars with underscores. */ + + for(p = msgid, q = msgid_quoted; *p; p++) { + if (*p == '\"') { + *q = '\\'; + q++; + } + *q = *p; + q++; + } + + *q = 0; + + key.dptr = (char *)msgid_quoted; + key.dsize = strlen(msgid_quoted)+1; data = tdb_fetch(tdb, key); + free(msgid_quoted); + /* if the message isn't found then we still need to return a pointer that can be freed. Pity. */ if (!data.dptr) diff --git a/source/lib/afs.c b/source/lib/afs.c index faeca3d0c33..882442a79f1 100644 --- a/source/lib/afs.c +++ b/source/lib/afs.c @@ -154,7 +154,7 @@ BOOL afs_login(connection_struct *conn) cell += 1; strlower_m(cell); - DEBUG(10, ("Trying to log into AFS for user %s@%s\n", + DEBUG(10, ("Trying to log into AFS for user %s@%s\n", afs_username, cell)); if (!secrets_init()) diff --git a/source/lib/getsmbpass.c b/source/lib/getsmbpass.c index b6ae09b3181..27cd5e6dfa2 100644 --- a/source/lib/getsmbpass.c +++ b/source/lib/getsmbpass.c @@ -83,71 +83,95 @@ static int tcsetattr(int fd, int flags, struct sgttyb *t) static struct termios t; #endif /* SYSV_TERMIO */ +static SIG_ATOMIC_T gotintr; +static int in_fd = -1; + +/*************************************************************** + Signal function to tell us were ^C'ed. +****************************************************************/ + +static void gotintr_sig(void) +{ + gotintr = 1; + if (in_fd != -1) + close(in_fd); /* Safe way to force a return. */ + in_fd = -1; +} + char *getsmbpass(const char *prompt) { - FILE *in, *out; - int echo_off; - static char buf[256]; - static size_t bufsize = sizeof(buf); - size_t nread; - - /* Catch problematic signals */ - CatchSignal(SIGINT, SIGNAL_CAST SIG_IGN); - - /* Try to write to and read from the terminal if we can. - If we can't open the terminal, use stderr and stdin. */ - - in = fopen ("/dev/tty", "w+"); - if (in == NULL) - { - in = stdin; - out = stderr; - } - else - out = in; - - setvbuf(in, NULL, _IONBF, 0); - - /* Turn echoing off if it is on now. */ - - if (tcgetattr (fileno (in), &t) == 0) - { - if (ECHO_IS_ON(t)) - { - TURN_ECHO_OFF(t); - echo_off = tcsetattr (fileno (in), TCSAFLUSH, &t) == 0; - TURN_ECHO_ON(t); + FILE *in, *out; + int echo_off; + static char buf[256]; + static size_t bufsize = sizeof(buf); + size_t nread; + + /* Catch problematic signals */ + CatchSignal(SIGINT, SIGNAL_CAST gotintr_sig); + + /* Try to write to and read from the terminal if we can. + If we can't open the terminal, use stderr and stdin. */ + + in = fopen ("/dev/tty", "w+"); + if (in == NULL) { + in = stdin; + out = stderr; + } else { + out = in; + } + + setvbuf(in, NULL, _IONBF, 0); + + /* Turn echoing off if it is on now. */ + + if (tcgetattr (fileno (in), &t) == 0) { + if (ECHO_IS_ON(t)) { + TURN_ECHO_OFF(t); + echo_off = tcsetattr (fileno (in), TCSAFLUSH, &t) == 0; + TURN_ECHO_ON(t); + } else { + echo_off = 0; + } + } else { + echo_off = 0; + } + + /* Write the prompt. */ + fputs(prompt, out); + fflush(out); + + /* Read the password. */ + buf[0] = 0; + if (!gotintr) { + in_fd = fileno(in); + fgets(buf, bufsize, in); + } + nread = strlen(buf); + if (buf[nread - 1] == '\n') + buf[nread - 1] = '\0'; + + /* Restore echoing. */ + if (echo_off) { + if (gotintr && in_fd == -1) + in = fopen ("/dev/tty", "w+"); + if (in != NULL) + tcsetattr (fileno (in), TCSANOW, &t); + } + + if (in != stdin) /* We opened the terminal; now close it. */ + fclose(in); + + /* Catch problematic signals */ + CatchSignal(SIGINT, SIGNAL_CAST SIG_DFL); + + printf("\n"); + + if (gotintr) { + printf("Interupted by signal.\n"); + fflush(stdout); + exit(1); } - else - echo_off = 0; - } - else - echo_off = 0; - - /* Write the prompt. */ - fputs (prompt, out); - fflush (out); - - /* Read the password. */ - buf[0] = 0; - fgets(buf, bufsize, in); - nread = strlen(buf); - if (buf[nread - 1] == '\n') - buf[nread - 1] = '\0'; - - /* Restore echoing. */ - if (echo_off) - (void) tcsetattr (fileno (in), TCSANOW, &t); - - if (in != stdin) - /* We opened the terminal; now close it. */ - fclose (in); - - /* Catch problematic signals */ - CatchSignal(SIGINT, SIGNAL_CAST SIG_DFL); - - printf("\n"); - return buf; + return buf; } #else diff --git a/source/lib/iconv.c b/source/lib/iconv.c index 3d26d7e17c9..0326ca70611 100644 --- a/source/lib/iconv.c +++ b/source/lib/iconv.c @@ -136,7 +136,7 @@ static size_t sys_iconv(void *cd, * enough that Samba works on systems that don't have iconv. **/ size_t smb_iconv(smb_iconv_t cd, - const char **inbuf, size_t *inbytesleft, + char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { char cvtbuf[2048]; diff --git a/source/lib/module.c b/source/lib/module.c index 941a6cfbe39..38fcf0f3297 100644 --- a/source/lib/module.c +++ b/source/lib/module.c @@ -210,18 +210,21 @@ void smb_run_idle_events(time_t now) struct smb_idle_list_ent *event = smb_idle_event_list; while (event) { + struct smb_idle_list_ent *next = event->next; time_t interval; - if (event->interval >= SMB_IDLE_EVENT_MIN_INTERVAL) { + if (event->interval <= 0) { + interval = SMB_IDLE_EVENT_DEFAULT_INTERVAL; + } else if (event->interval >= SMB_IDLE_EVENT_MIN_INTERVAL) { interval = event->interval; } else { interval = SMB_IDLE_EVENT_MIN_INTERVAL; } if (now >(event->lastrun+interval)) { - event->fn(&event->data,&event->interval,now); event->lastrun = now; + event->fn(&event->data,&event->interval,now); } - event = event->next; + event = next; } return; diff --git a/source/lib/sysquotas.c b/source/lib/sysquotas.c index 617f624daea..3223ecb580b 100644 --- a/source/lib/sysquotas.c +++ b/source/lib/sysquotas.c @@ -19,8 +19,6 @@ */ -#ifndef AUTOCONF_TEST - #include "includes.h" #ifdef HAVE_SYS_QUOTAS @@ -742,7 +740,7 @@ static int command_get_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t if (lines) { char *line = lines[0]; - DEBUG (3, ("Read output from get_quota, \"r%s\"\n", line)); + DEBUG (3, ("Read output from get_quota, \"%s\"\n", line)); /* we need to deal with long long unsigned here, if supported */ @@ -1011,99 +1009,3 @@ int sys_set_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DI } #endif /* HAVE_SYS_QUOTAS */ -#else /* ! AUTOCONF_TEST */ -/* this is the autoconf driver to test witch quota system we should use */ - -#if defined(HAVE_QUOTACTL_4A) -/* long quotactl(int cmd, char *special, qid_t id, caddr_t addr) */ - -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif - -#ifdef HAVE_ASM_TYPES_H -#include <asm/types.h> -#endif - -#if defined(HAVE_LINUX_QUOTA_H) -# include <linux/quota.h> -# if defined(HAVE_STRUCT_IF_DQBLK) -# define SYS_DQBLK if_dqblk -# elif defined(HAVE_STRUCT_MEM_DQBLK) -# define SYS_DQBLK mem_dqblk -# endif -#elif defined(HAVE_SYS_QUOTA_H) -# include <sys/quota.h> -#endif - -#ifndef SYS_DQBLK -#define SYS_DQBLK dqblk -#endif - - int autoconf_quota(void) -{ - int ret = -1; - struct SYS_DQBLK D; - - ret = quotactl(Q_GETQUOTA,"/dev/hda1",0,(void *)&D); - - return ret; -} - -#elif defined(HAVE_QUOTACTL_4B) -/* int quotactl(const char *path, int cmd, int id, char *addr); */ - -#ifdef HAVE_SYS_QUOTA_H -#include <sys/quota.h> -#else /* *BSD */ -#include <sys/types.h> -#include <ufs/ufs/quota.h> -#include <machine/param.h> -#endif - - int autoconf_quota(void) -{ - int ret = -1; - struct dqblk D; - - ret = quotactl("/",Q_GETQUOTA,0,(char *) &D); - - return ret; -} - -#elif defined(HAVE_QUOTACTL_3) -/* int quotactl (char *spec, int request, char *arg); */ - -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_SYS_QUOTA_H -#include <sys/quota.h> -#endif - - int autoconf_quota(void) -{ - int ret = -1; - struct q_request request; - - ret = quotactl("/", Q_GETQUOTA, &request); - - return ret; -} - -#elif defined(HAVE_QUOTACTL_2) - -#error HAVE_QUOTACTL_2 not implemented - -#else - -#error Unknow QUOTACTL prototype - -#endif - - int main(void) -{ - autoconf_quota(); - return 0; -} -#endif /* AUTOCONF_TEST */ diff --git a/source/lib/system.c b/source/lib/system.c index b020a203730..2e95efec79b 100644 --- a/source/lib/system.c +++ b/source/lib/system.c @@ -693,7 +693,6 @@ int sys_getgroups(int setlen, gid_t *gidset) #endif /* HAVE_BROKEN_GETGROUPS */ } -#ifdef HAVE_SETGROUPS /************************************************************************** Wrapper for setgroups. Deals with broken (int) case. Automatically used @@ -702,6 +701,11 @@ int sys_getgroups(int setlen, gid_t *gidset) int sys_setgroups(int setlen, gid_t *gidset) { +#if !defined(HAVE_SETGROUPS) + errno = ENOSYS; + return -1; +#endif /* HAVE_SETGROUPS */ + #if !defined(HAVE_BROKEN_GETGROUPS) return setgroups(setlen, gidset); #else @@ -742,8 +746,6 @@ int sys_setgroups(int setlen, gid_t *gidset) #endif /* HAVE_BROKEN_GETGROUPS */ } -#endif /* HAVE_SETGROUPS */ - /************************************************************************** Wrappers for setpwent(), getpwent() and endpwent() ****************************************************************************/ diff --git a/source/lib/system_smbd.c b/source/lib/system_smbd.c index bcbc8c61e64..73c910e631d 100644 --- a/source/lib/system_smbd.c +++ b/source/lib/system_smbd.c @@ -92,7 +92,7 @@ static int getgrouplist_internals(const char *user, gid_t gid, gid_t *groups, in restore_re_gid(); - if (setgroups(ngrp_saved, gids_saved) != 0) { + if (sys_setgroups(ngrp_saved, gids_saved) != 0) { /* yikes! */ DEBUG(0,("ERROR: getgrouplist: failed to reset group list!\n")); smb_panic("getgrouplist: failed to reset group list!\n"); diff --git a/source/lib/talloc.c b/source/lib/talloc.c index b6c8b2efdf0..485dc28f31d 100644 --- a/source/lib/talloc.c +++ b/source/lib/talloc.c @@ -54,27 +54,6 @@ #include "includes.h" -struct talloc_chunk { - struct talloc_chunk *next; - size_t size; - void *ptr; -}; - - -struct talloc_ctx { - struct talloc_chunk *list; - size_t total_alloc_size; - - /** The name recorded for this pool, if any. Should describe - * the purpose for which it was allocated. The string is - * allocated within the pool. **/ - char *name; - - /** Pointer to the next allocate talloc pool, so that we can - * summarize all talloc memory usage. **/ - struct talloc_ctx *next_ctx; -}; - /** * Start of linked list of all talloc pools. diff --git a/source/lib/util_seaccess.c b/source/lib/util_seaccess.c index eba8cab7fb8..cb0f46e2f9d 100644 --- a/source/lib/util_seaccess.c +++ b/source/lib/util_seaccess.c @@ -23,22 +23,6 @@ extern DOM_SID global_sid_Builtin; -/********************************************************************************** - Check if this ACE has a SID in common with the token. -**********************************************************************************/ - -static BOOL token_sid_in_ace(const NT_USER_TOKEN *token, const SEC_ACE *ace) -{ - size_t i; - - for (i = 0; i < token->num_sids; i++) { - if (sid_equal(&ace->trustee, &token->user_sids[i])) - return True; - } - - return False; -} - /********************************************************************************* Check an ACE against a SID. We return the remaining needed permission bits not yet granted. Zero means permission allowed (no more needed bits). @@ -332,119 +316,6 @@ BOOL se_access_check(const SEC_DESC *sd, const NT_USER_TOKEN *token, return False; } -/* Create a child security descriptor using another security descriptor as - the parent container. This child object can either be a container or - non-container object. */ - -SEC_DESC_BUF *se_create_child_secdesc(TALLOC_CTX *ctx, SEC_DESC *parent_ctr, - BOOL child_container) -{ - SEC_DESC_BUF *sdb; - SEC_DESC *sd; - SEC_ACL *new_dacl, *the_acl; - SEC_ACE *new_ace_list = NULL; - unsigned int new_ace_list_ndx = 0, i; - size_t size; - - /* Currently we only process the dacl when creating the child. The - sacl should also be processed but this is left out as sacls are - not implemented in Samba at the moment.*/ - - the_acl = parent_ctr->dacl; - - if (!(new_ace_list = talloc(ctx, sizeof(SEC_ACE) * the_acl->num_aces))) - return NULL; - - for (i = 0; the_acl && i < the_acl->num_aces; i++) { - SEC_ACE *ace = &the_acl->ace[i]; - SEC_ACE *new_ace = &new_ace_list[new_ace_list_ndx]; - uint8 new_flags = 0; - BOOL inherit = False; - fstring sid_str; - - /* The OBJECT_INHERIT_ACE flag causes the ACE to be - inherited by non-container children objects. Container - children objects will inherit it as an INHERIT_ONLY - ACE. */ - - if (ace->flags & SEC_ACE_FLAG_OBJECT_INHERIT) { - - if (!child_container) { - new_flags |= SEC_ACE_FLAG_OBJECT_INHERIT; - } else { - new_flags |= SEC_ACE_FLAG_INHERIT_ONLY; - } - - inherit = True; - } - - /* The CONAINER_INHERIT_ACE flag means all child container - objects will inherit and use the ACE. */ - - if (ace->flags & SEC_ACE_FLAG_CONTAINER_INHERIT) { - if (!child_container) { - inherit = False; - } else { - new_flags |= SEC_ACE_FLAG_CONTAINER_INHERIT; - } - } - - /* The INHERIT_ONLY_ACE is not used by the se_access_check() - function for the parent container, but is inherited by - all child objects as a normal ACE. */ - - if (ace->flags & SEC_ACE_FLAG_INHERIT_ONLY) { - /* Move along, nothing to see here */ - } - - /* The SEC_ACE_FLAG_NO_PROPAGATE_INHERIT flag means the ACE - is inherited by child objects but not grandchildren - objects. We clear the object inherit and container - inherit flags in the inherited ACE. */ - - if (ace->flags & SEC_ACE_FLAG_NO_PROPAGATE_INHERIT) { - new_flags &= ~(SEC_ACE_FLAG_OBJECT_INHERIT | - SEC_ACE_FLAG_CONTAINER_INHERIT); - } - - /* Add ACE to ACE list */ - - if (!inherit) - continue; - - init_sec_access(&new_ace->info, ace->info.mask); - init_sec_ace(new_ace, &ace->trustee, ace->type, - new_ace->info, new_flags); - - sid_to_string(sid_str, &ace->trustee); - - DEBUG(5, ("se_create_child_secdesc(): %s:%d/0x%02x/0x%08x " - " inherited as %s:%d/0x%02x/0x%08x\n", sid_str, - ace->type, ace->flags, ace->info.mask, - sid_str, new_ace->type, new_ace->flags, - new_ace->info.mask)); - - new_ace_list_ndx++; - } - - /* Create child security descriptor to return */ - - new_dacl = make_sec_acl(ctx, ACL_REVISION, new_ace_list_ndx, new_ace_list); - - /* Use the existing user and group sids. I don't think this is - correct. Perhaps the user and group should be passed in as - parameters by the caller? */ - - sd = make_sec_desc(ctx, SEC_DESC_REVISION, - parent_ctr->owner_sid, - parent_ctr->grp_sid, - parent_ctr->sacl, - new_dacl, &size); - - sdb = make_sec_desc_buf(ctx, size, sd); - - return sdb; -} /******************************************************************* samr_make_sam_obj_sd @@ -479,7 +350,7 @@ NTSTATUS samr_make_sam_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd_size) if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL) return NT_STATUS_NO_MEMORY; - if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL) + if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL) return NT_STATUS_NO_MEMORY; return NT_STATUS_OK; diff --git a/source/lib/util_sid.c b/source/lib/util_sid.c index fbb393770d5..50bbb4c72c6 100644 --- a/source/lib/util_sid.c +++ b/source/lib/util_sid.c @@ -638,7 +638,7 @@ void print_guid(GUID *guid) Tallocs a duplicate SID. ********************************************************************/ -DOM_SID *sid_dup_talloc(TALLOC_CTX *ctx, DOM_SID *src) +DOM_SID *sid_dup_talloc(TALLOC_CTX *ctx, const DOM_SID *src) { DOM_SID *dst; diff --git a/source/lib/util_unistr.c b/source/lib/util_unistr.c index e7c200218e2..e90a824395c 100644 --- a/source/lib/util_unistr.c +++ b/source/lib/util_unistr.c @@ -819,22 +819,25 @@ UNISTR2* ucs2_to_unistr2(TALLOC_CTX *ctx, UNISTR2* dst, smb_ucs2_t* src) { size_t len; - if (!src) return NULL; + if (!src) + return NULL; len = strlen_w(src); /* allocate UNISTR2 destination if not given */ if (!dst) { dst = (UNISTR2*) talloc(ctx, sizeof(UNISTR2)); - if (!dst) return NULL; + if (!dst) + return NULL; } if (!dst->buffer) { dst->buffer = (uint16*) talloc(ctx, sizeof(uint16) * (len + 1)); - if (!dst->buffer) return NULL; + if (!dst->buffer) + return NULL; } /* set UNISTR2 parameters */ dst->uni_max_len = len + 1; - dst->undoc = 0; + dst->offset = 0; dst->uni_str_len = len; /* copy the actual unicode string */ @@ -842,4 +845,3 @@ UNISTR2* ucs2_to_unistr2(TALLOC_CTX *ctx, UNISTR2* dst, smb_ucs2_t* src) return dst; } - diff --git a/source/libads/ldap.c b/source/libads/ldap.c index 48401cc3d80..8c3185ea5e3 100644 --- a/source/libads/ldap.c +++ b/source/libads/ldap.c @@ -1787,7 +1787,8 @@ ADS_STATUS ads_USN(ADS_STRUCT *ads, uint32 *usn) void *res; status = ads_do_search_retry(ads, "", LDAP_SCOPE_BASE, "(objectclass=*)", attrs, &res); - if (!ADS_ERR_OK(status)) return status; + if (!ADS_ERR_OK(status)) + return status; if (ads_count_replies(ads, res) != 1) { return ADS_ERROR(LDAP_NO_RESULTS_RETURNED); diff --git a/source/libads/ldap_utils.c b/source/libads/ldap_utils.c index 1fa9ebfc975..4142bceabca 100644 --- a/source/libads/ldap_utils.c +++ b/source/libads/ldap_utils.c @@ -54,15 +54,20 @@ ADS_STATUS ads_do_search_retry(ADS_STRUCT *ads, const char *bind_path, int scope return status; } - if (*res) ads_msgfree(ads, *res); + if (*res) + ads_msgfree(ads, *res); *res = NULL; + DEBUG(3,("Reopening ads connection to realm '%s' after error %s\n", ads->config.realm, ads_errstr(status))); + if (ads->ld) { ldap_unbind(ads->ld); } + ads->ld = NULL; status = ads_connect(ads); + if (!ADS_ERR_OK(status)) { DEBUG(1,("ads_search_retry: failed to reconnect (%s)\n", ads_errstr(status))); diff --git a/source/libsmb/errormap.c b/source/libsmb/errormap.c index 3d99e3d5e52..4d9a717e1c0 100644 --- a/source/libsmb/errormap.c +++ b/source/libsmb/errormap.c @@ -1490,7 +1490,7 @@ const struct unix_error_map unix_dos_nt_errmap[] = { { EPERM, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED }, { EACCES, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED }, { ENOENT, ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_NOT_FOUND }, - { ENOTDIR, ERRDOS, ERRbadpath, NT_STATUS_OBJECT_PATH_NOT_FOUND }, + { ENOTDIR, ERRDOS, ERRbadpath, NT_STATUS_NOT_A_DIRECTORY }, { EIO, ERRHRD, ERRgeneral, NT_STATUS_IO_DEVICE_ERROR }, { EBADF, ERRSRV, ERRsrverror, NT_STATUS_INVALID_HANDLE }, { EINVAL, ERRSRV, ERRsrverror, NT_STATUS_INVALID_HANDLE }, diff --git a/source/locking/brlock.c b/source/locking/brlock.c index 20d76c9c792..c51a5a2aac9 100644 --- a/source/locking/brlock.c +++ b/source/locking/brlock.c @@ -172,7 +172,8 @@ static BOOL brl_conflict_other(struct lock_struct *lck1, struct lock_struct *lck } if (lck1->start >= (lck2->start + lck2->size) || - lck2->start >= (lck1->start + lck1->size)) return False; + lck2->start >= (lck1->start + lck1->size)) + return False; return True; } @@ -305,7 +306,7 @@ static int lock_compare(struct lock_struct *lck1, NTSTATUS brl_lock(SMB_DEV_T dev, SMB_INO_T ino, int fnum, uint16 smbpid, pid_t pid, uint16 tid, br_off start, br_off size, - enum brl_type lock_type) + enum brl_type lock_type, BOOL *my_lock_ctx) { TDB_DATA kbuf, dbuf; int count, i; @@ -315,6 +316,7 @@ NTSTATUS brl_lock(SMB_DEV_T dev, SMB_INO_T ino, int fnum, static int last_failed = -1; static br_off last_failed_start; + *my_lock_ctx = False; kbuf = locking_key(dev,ino); dbuf.dptr = NULL; @@ -343,6 +345,9 @@ NTSTATUS brl_lock(SMB_DEV_T dev, SMB_INO_T ino, int fnum, for (i=0; i<count; i++) { if (brl_conflict(&locks[i], &lock)) { status = NT_STATUS_LOCK_NOT_GRANTED; + /* Did we block ourselves ? */ + if (brl_same_context(&locks[i].context, &lock.context)) + *my_lock_ctx = True; goto fail; } #if ZERO_ZERO diff --git a/source/locking/locking.c b/source/locking/locking.c index 4475f1446f9..c3abd638182 100644 --- a/source/locking/locking.c +++ b/source/locking/locking.c @@ -98,7 +98,7 @@ BOOL is_locked(files_struct *fsp,connection_struct *conn, ****************************************************************************/ static NTSTATUS do_lock(files_struct *fsp,connection_struct *conn, uint16 lock_pid, - SMB_BIG_UINT count,SMB_BIG_UINT offset,enum brl_type lock_type) + SMB_BIG_UINT count,SMB_BIG_UINT offset,enum brl_type lock_type, BOOL *my_lock_ctx) { NTSTATUS status = NT_STATUS_LOCK_NOT_GRANTED; @@ -114,7 +114,7 @@ static NTSTATUS do_lock(files_struct *fsp,connection_struct *conn, uint16 lock_p status = brl_lock(fsp->dev, fsp->inode, fsp->fnum, lock_pid, sys_getpid(), conn->cnum, offset, count, - lock_type); + lock_type, my_lock_ctx); if (NT_STATUS_IS_OK(status) && lp_posix_locking(SNUM(conn))) { @@ -153,7 +153,7 @@ static NTSTATUS do_lock(files_struct *fsp,connection_struct *conn, uint16 lock_p ****************************************************************************/ NTSTATUS do_lock_spin(files_struct *fsp,connection_struct *conn, uint16 lock_pid, - SMB_BIG_UINT count,SMB_BIG_UINT offset,enum brl_type lock_type) + SMB_BIG_UINT count,SMB_BIG_UINT offset,enum brl_type lock_type, BOOL *my_lock_ctx) { int j, maxj = lp_lock_spin_count(); int sleeptime = lp_lock_sleep_time(); @@ -165,7 +165,7 @@ NTSTATUS do_lock_spin(files_struct *fsp,connection_struct *conn, uint16 lock_pid ret = NT_STATUS_OK; /* to keep dumb compilers happy */ for (j = 0; j < maxj; j++) { - status = do_lock(fsp, conn, lock_pid, count, offset, lock_type); + status = do_lock(fsp, conn, lock_pid, count, offset, lock_type, my_lock_ctx); if (!NT_STATUS_EQUAL(status, NT_STATUS_LOCK_NOT_GRANTED) && !NT_STATUS_EQUAL(status, NT_STATUS_FILE_LOCK_CONFLICT)) { return status; @@ -173,6 +173,9 @@ NTSTATUS do_lock_spin(files_struct *fsp,connection_struct *conn, uint16 lock_pid /* if we do fail then return the first error code we got */ if (j == 0) { ret = status; + /* Don't spin if we blocked ourselves. */ + if (*my_lock_ctx) + return ret; } if (sleeptime) sys_usleep(sleeptime); @@ -419,10 +422,10 @@ int get_share_modes(connection_struct *conn, struct locking_data *data; int num_share_modes; share_mode_entry *shares = NULL; - + TDB_DATA key = locking_key(dev, inode); *pp_shares = NULL; - dbuf = tdb_fetch(tdb, locking_key(dev, inode)); + dbuf = tdb_fetch(tdb, key); if (!dbuf.dptr) return 0; @@ -469,7 +472,7 @@ int get_share_modes(connection_struct *conn, /* The record has shrunk a bit */ dbuf.dsize -= del_count * sizeof(share_mode_entry); - if (tdb_store(tdb, locking_key(dev, inode), dbuf, TDB_REPLACE) == -1) { + if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1) { SAFE_FREE(shares); SAFE_FREE(dbuf.dptr); return 0; @@ -544,12 +547,13 @@ ssize_t del_share_entry( SMB_DEV_T dev, SMB_INO_T inode, int i, del_count=0; share_mode_entry *shares; ssize_t count = 0; + TDB_DATA key = locking_key(dev, inode); if (ppse) *ppse = NULL; /* read in the existing share modes */ - dbuf = tdb_fetch(tdb, locking_key(dev, inode)); + dbuf = tdb_fetch(tdb, key); if (!dbuf.dptr) return -1; @@ -590,10 +594,10 @@ ssize_t del_share_entry( SMB_DEV_T dev, SMB_INO_T inode, /* store it back in the database */ if (data->u.num_share_mode_entries == 0) { - if (tdb_delete(tdb, locking_key(dev, inode)) == -1) + if (tdb_delete(tdb, key) == -1) count = -1; } else { - if (tdb_store(tdb, locking_key(dev, inode), dbuf, TDB_REPLACE) == -1) + if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1) count = -1; } } @@ -630,10 +634,11 @@ BOOL set_share_mode(files_struct *fsp, uint16 port, uint16 op_type) struct locking_data *data; char *p=NULL; int size; + TDB_DATA key = locking_key_fsp(fsp); BOOL ret = True; /* read in the existing share modes if any */ - dbuf = tdb_fetch(tdb, locking_key_fsp(fsp)); + dbuf = tdb_fetch(tdb, key); if (!dbuf.dptr) { size_t offset; /* we'll need to create a new record */ @@ -658,7 +663,7 @@ BOOL set_share_mode(files_struct *fsp, uint16 port, uint16 op_type) fill_share_mode(p + sizeof(*data), fsp, port, op_type); dbuf.dptr = p; dbuf.dsize = size; - if (tdb_store(tdb, locking_key_fsp(fsp), dbuf, TDB_REPLACE) == -1) + if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1) ret = False; print_share_mode_table((struct locking_data *)p); @@ -688,7 +693,7 @@ BOOL set_share_mode(files_struct *fsp, uint16 port, uint16 op_type) SAFE_FREE(dbuf.dptr); dbuf.dptr = p; dbuf.dsize = size; - if (tdb_store(tdb, locking_key_fsp(fsp), dbuf, TDB_REPLACE) == -1) + if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1) ret = False; print_share_mode_table((struct locking_data *)p); SAFE_FREE(p); @@ -709,9 +714,10 @@ static BOOL mod_share_mode( SMB_DEV_T dev, SMB_INO_T inode, share_mode_entry *en share_mode_entry *shares; BOOL need_store=False; BOOL ret = True; + TDB_DATA key = locking_key(dev, inode); /* read in the existing share modes */ - dbuf = tdb_fetch(tdb, locking_key(dev, inode)); + dbuf = tdb_fetch(tdb, key); if (!dbuf.dptr) return False; @@ -729,10 +735,10 @@ static BOOL mod_share_mode( SMB_DEV_T dev, SMB_INO_T inode, share_mode_entry *en /* if the mod fn was called then store it back */ if (need_store) { if (data->u.num_share_mode_entries == 0) { - if (tdb_delete(tdb, locking_key(dev, inode)) == -1) + if (tdb_delete(tdb, key) == -1) ret = False; } else { - if (tdb_store(tdb, locking_key(dev, inode), dbuf, TDB_REPLACE) == -1) + if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1) ret = False; } } @@ -808,9 +814,10 @@ BOOL modify_delete_flag( SMB_DEV_T dev, SMB_INO_T inode, BOOL delete_on_close) struct locking_data *data; int i; share_mode_entry *shares; + TDB_DATA key = locking_key(dev, inode); /* read in the existing share modes */ - dbuf = tdb_fetch(tdb, locking_key(dev, inode)); + dbuf = tdb_fetch(tdb, key); if (!dbuf.dptr) return False; @@ -826,7 +833,7 @@ BOOL modify_delete_flag( SMB_DEV_T dev, SMB_INO_T inode, BOOL delete_on_close) /* store it back */ if (data->u.num_share_mode_entries) { - if (tdb_store(tdb, locking_key(dev,inode), dbuf, TDB_REPLACE)==-1) { + if (tdb_store(tdb, key, dbuf, TDB_REPLACE)==-1) { SAFE_FREE(dbuf.dptr); return False; } diff --git a/source/modules/vfs_recycle.c b/source/modules/vfs_recycle.c index b1b2ac03538..9b31f6afb95 100644 --- a/source/modules/vfs_recycle.c +++ b/source/modules/vfs_recycle.c @@ -213,7 +213,7 @@ static BOOL recycle_create_dir(vfs_handle_struct *handle, const char *dname) char *tok_str; BOOL ret = False; - mode = S_IREAD | S_IWRITE | S_IEXEC; + mode = S_IRUSR | S_IWUSR | S_IXUSR; tmp_str = strdup(dname); ALLOC_CHECK(tmp_str, done); diff --git a/source/nmbd/nmbd_winsserver.c b/source/nmbd/nmbd_winsserver.c index 484588c6626..36940724207 100644 --- a/source/nmbd/nmbd_winsserver.c +++ b/source/nmbd/nmbd_winsserver.c @@ -107,7 +107,7 @@ static void wins_hook(const char *operation, struct name_record *namerec, int tt { pstring command; char *cmd = lp_wins_hook(); - char *p; + char *p, *namestr; int i; if (!cmd || !*cmd) return; @@ -119,11 +119,17 @@ static void wins_hook(const char *operation, struct name_record *namerec, int tt } } + /* Use the name without the nametype (and scope) appended */ + + namestr = nmb_namestr(&namerec->name); + if ((p = strchr(namestr, '<'))) + *p = 0; + p = command; p += slprintf(p, sizeof(command)-1, "%s %s %s %02x %d", cmd, operation, - nmb_namestr(&namerec->name), + namestr, namerec->name.name_type, ttl); diff --git a/source/nsswitch/winbindd_ads.c b/source/nsswitch/winbindd_ads.c index c64359a2241..ef3f0f8fc20 100644 --- a/source/nsswitch/winbindd_ads.c +++ b/source/nsswitch/winbindd_ads.c @@ -787,9 +787,13 @@ static NTSTATUS sequence_number(struct winbindd_domain *domain, uint32 *seq) } rc = ads_USN(ads, seq); + if (!ADS_ERR_OK(rc)) { - /* its a dead connection */ - ads_destroy(&ads); + + /* its a dead connection ; don't destroy it + through since ads_USN() has already done + that indirectly */ + domain->private = NULL; } return ads_ntstatus(rc); @@ -910,8 +914,11 @@ static NTSTATUS domain_sid(struct winbindd_domain *domain, DOM_SID *sid) rc = ads_domain_sid(ads, sid); if (!ADS_ERR_OK(rc)) { - /* its a dead connection */ - ads_destroy(&ads); + + /* its a dead connection; don't destroy it though + since that has already been done indirectly + by ads_domain_sid() */ + domain->private = NULL; } diff --git a/source/nsswitch/winbindd_pam.c b/source/nsswitch/winbindd_pam.c index ea2868b2cf9..d696428de4c 100644 --- a/source/nsswitch/winbindd_pam.c +++ b/source/nsswitch/winbindd_pam.c @@ -65,7 +65,7 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state) time_t last_change_time; uint32 sec_channel_type; NET_USER_INFO_3 info3; - struct cli_state *cli; + struct cli_state *cli = NULL; uchar chal[8]; TALLOC_CTX *mem_ctx = NULL; DATA_BLOB lm_resp; @@ -128,7 +128,6 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state) do { ZERO_STRUCT(info3); ZERO_STRUCT(ret_creds); - cli = NULL; retry = False; /* Don't shut this down - it belongs to the connection cache code */ @@ -148,8 +147,17 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state) &info3); attempts += 1; + /* We have to try a second time as cm_get_netlogon_cli + might not yet have noticed that the DC has killed + our connection. */ + + if ( cli->fd == -1 ) { + retry = True; + continue; + } + /* if we get access denied, a possible cuase was that we had and open - connection to the DC, but someone changed our machine accoutn password + connection to the DC, but someone changed our machine account password out from underneath us using 'net rpc changetrustpw' */ if ( NT_STATUS_V(result) == NT_STATUS_V(NT_STATUS_ACCESS_DENIED) ) { @@ -158,12 +166,9 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state) name_domain)); winbindd_cm_flush(); retry = True; + cli = NULL; } - /* We have to try a second time as cm_get_netlogon_cli - might not yet have noticed that the DC has killed - our connection. */ - } while ( (attempts < 2) && retry ); clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds); @@ -206,7 +211,7 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state) time_t last_change_time; uint32 sec_channel_type; NET_USER_INFO_3 info3; - struct cli_state *cli; + struct cli_state *cli = NULL; TALLOC_CTX *mem_ctx = NULL; char *user = NULL; const char *domain = NULL; @@ -301,7 +306,6 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state) do { ZERO_STRUCT(info3); ZERO_STRUCT(ret_creds); - cli = NULL; retry = False; /* Don't shut this down - it belongs to the connection cache code */ @@ -323,8 +327,17 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state) attempts += 1; - /* if we get access denied, a possible cuase was that we had and open - connection to the DC, but someone changed our machine accoutn password + /* We have to try a second time as cm_get_netlogon_cli + might not yet have noticed that the DC has killed + our connection. */ + + if ( cli->fd == -1 ) { + retry = True; + continue; + } + + /* if we get access denied, a possible cause was that we had and open + connection to the DC, but someone changed our machine account password out from underneath us using 'net rpc changetrustpw' */ if ( NT_STATUS_V(result) == NT_STATUS_V(NT_STATUS_ACCESS_DENIED) ) { @@ -333,12 +346,9 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state) domain)); winbindd_cm_flush(); retry = True; + cli = NULL; } - /* We have to try a second time as cm_get_netlogon_cli - might not yet have noticed that the DC has killed - our connection. */ - } while ( (attempts < 2) && retry ); clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds); diff --git a/source/param/loadparm.c b/source/param/loadparm.c index 0efa2796c36..5a5ac4a2cc1 100644 --- a/source/param/loadparm.c +++ b/source/param/loadparm.c @@ -185,7 +185,6 @@ typedef struct int mangle_prefix; int max_log_size; char *szLogLevel; - int mangled_stack; int max_xmit; int max_mux; int max_open_files; @@ -753,7 +752,7 @@ static const struct enum_list enum_map_to_guest[] = { */ static struct parm_struct parm_table[] = { - {"Base Options", P_SEP, P_SEPARATOR}, + {N_("Base Options"), P_SEP, P_SEPARATOR}, {"dos charset", P_STRING, P_GLOBAL, &Globals.dos_charset, handle_charset, NULL, FLAG_ADVANCED}, {"unix charset", P_STRING, P_GLOBAL, &Globals.unix_charset, handle_charset, NULL, FLAG_ADVANCED}, @@ -773,7 +772,7 @@ static struct parm_struct parm_table[] = { {"interfaces", P_LIST, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD}, {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD}, - {"Security Options", P_SEP, P_SEPARATOR}, + {N_("Security Options"), P_SEP, P_SEPARATOR}, {"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD}, {"auth methods", P_LIST, P_GLOBAL, &Globals.AuthMethods, NULL, NULL, FLAG_ADVANCED}, @@ -857,7 +856,7 @@ static struct parm_struct parm_table[] = { {"deny hosts", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_HIDE}, {"preload modules", P_LIST, P_GLOBAL, &Globals.szPreloadModules, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL}, - {"Logging Options", P_SEP, P_SEPARATOR}, + {N_("Logging Options"), P_SEP, P_SEPARATOR}, {"log level", P_STRING, P_GLOBAL, &Globals.szLogLevel, handle_debug_list, NULL, FLAG_ADVANCED}, {"debuglevel", P_STRING, P_GLOBAL, &Globals.szLogLevel, handle_debug_list, NULL, FLAG_HIDE}, @@ -872,7 +871,7 @@ static struct parm_struct parm_table[] = { {"debug pid", P_BOOL, P_GLOBAL, &Globals.bDebugPid, NULL, NULL, FLAG_ADVANCED}, {"debug uid", P_BOOL, P_GLOBAL, &Globals.bDebugUid, NULL, NULL, FLAG_ADVANCED}, - {"Protocol Options", P_SEP, P_SEPARATOR}, + {N_("Protocol Options"), P_SEP, P_SEPARATOR}, {"smb ports", P_STRING, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED}, {"protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_ADVANCED}, @@ -909,7 +908,7 @@ static struct parm_struct parm_table[] = { {"server signing", P_ENUM, P_GLOBAL, &Globals.server_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, {"client use spnego", P_BOOL, P_GLOBAL, &Globals.bClientUseSpnego, NULL, NULL, FLAG_ADVANCED}, - {"Tuning Options", P_SEP, P_SEPARATOR}, + {N_("Tuning Options"), P_SEP, P_SEPARATOR}, {"block size", P_INTEGER, P_LOCAL, &sDefault.iBlock_size, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"change notify timeout", P_INTEGER, P_GLOBAL, &Globals.change_notify_timeout, NULL, NULL, FLAG_ADVANCED}, @@ -938,7 +937,7 @@ static struct parm_struct parm_table[] = { {"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED}, - {"Printing Options", P_SEP, P_SEPARATOR}, + {N_("Printing Options"), P_SEP, P_SEPARATOR}, {"max reported print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxReportedPrintJobs, NULL, NULL, FLAG_ADVANCED | FLAG_PRINT}, {"max print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxPrintJobs, NULL, NULL, FLAG_ADVANCED | FLAG_PRINT}, @@ -968,11 +967,10 @@ static struct parm_struct parm_table[] = { {"use client driver", P_BOOL, P_LOCAL, &sDefault.bUseClientDriver, NULL, NULL, FLAG_ADVANCED | FLAG_PRINT}, {"default devmode", P_BOOL, P_LOCAL, &sDefault.bDefaultDevmode, NULL, NULL, FLAG_ADVANCED | FLAG_PRINT}, - {"Filename Handling", P_SEP, P_SEPARATOR}, + {N_("Filename Handling"), P_SEP, P_SEPARATOR}, {"mangling method", P_STRING, P_GLOBAL, &Globals.szManglingMethod, NULL, NULL, FLAG_ADVANCED}, {"mangle prefix", P_INTEGER, P_GLOBAL, &Globals.mangle_prefix, NULL, NULL, FLAG_ADVANCED}, - {"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, FLAG_ADVANCED}, {"default case", P_ENUM, P_LOCAL, &sDefault.iDefaultCase, NULL, enum_case, FLAG_ADVANCED | FLAG_SHARE}, {"case sensitive", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"casesignames", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_HIDE}, @@ -992,14 +990,14 @@ static struct parm_struct parm_table[] = { {"map hidden", P_BOOL, P_LOCAL, &sDefault.bMap_hidden, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"mangled names", P_BOOL, P_LOCAL, &sDefault.bMangledNames, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, - {"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, + {"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL | FLAG_DEPRECATED }, {"stat cache", P_BOOL, P_GLOBAL, &Globals.bStatCache, NULL, NULL, FLAG_ADVANCED}, - {"Domain Options", P_SEP, P_SEPARATOR}, + {N_("Domain Options"), P_SEP, P_SEPARATOR}, {"machine password timeout", P_INTEGER, P_GLOBAL, &Globals.machine_password_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD}, - {"Logon Options", P_SEP, P_SEPARATOR}, + {N_("Logon Options"), P_SEP, P_SEPARATOR}, {"add user script", P_STRING, P_GLOBAL, &Globals.szAddUserScript, NULL, NULL, FLAG_ADVANCED}, {"delete user script", P_STRING, P_GLOBAL, &Globals.szDelUserScript, NULL, NULL, FLAG_ADVANCED}, @@ -1018,7 +1016,7 @@ static struct parm_struct parm_table[] = { {"logon home", P_STRING, P_GLOBAL, &Globals.szLogonHome, NULL, NULL, FLAG_ADVANCED}, {"domain logons", P_BOOL, P_GLOBAL, &Globals.bDomainLogons, NULL, NULL, FLAG_ADVANCED}, - {"Browse Options", P_SEP, P_SEPARATOR}, + {N_("Browse Options"), P_SEP, P_SEPARATOR}, {"os level", P_INTEGER, P_GLOBAL, &Globals.os_level, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED}, {"lm announce", P_ENUM, P_GLOBAL, &Globals.lm_announce, NULL, enum_bool_auto, FLAG_ADVANCED}, @@ -1032,7 +1030,7 @@ static struct parm_struct parm_table[] = { {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE}, {"enhanced browsing", P_BOOL, P_GLOBAL, &Globals.enhanced_browsing, NULL, NULL, FLAG_ADVANCED}, - {"WINS Options", P_SEP, P_SEPARATOR}, + {N_("WINS Options"), P_SEP, P_SEPARATOR}, {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bDNSproxy, NULL, NULL, FLAG_ADVANCED}, {"wins proxy", P_BOOL, P_GLOBAL, &Globals.bWINSproxy, NULL, NULL, FLAG_ADVANCED}, @@ -1042,7 +1040,7 @@ static struct parm_struct parm_table[] = { {"wins hook", P_STRING, P_GLOBAL, &Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED}, {"wins partners", P_STRING, P_GLOBAL, &Globals.szWINSPartners, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD}, - {"Locking Options", P_SEP, P_SEPARATOR}, + {N_("Locking Options"), P_SEP, P_SEPARATOR}, {"blocking locks", P_BOOL, P_LOCAL, &sDefault.bBlockingLocks, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"csc policy", P_ENUM, P_LOCAL, &sDefault.iCSCPolicy, NULL, enum_csc_policy, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, @@ -1060,7 +1058,7 @@ static struct parm_struct parm_table[] = { {"strict locking", P_BOOL, P_LOCAL, &sDefault.bStrictLocking, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, {"share modes", P_BOOL, P_LOCAL, &sDefault.bShareModes, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, - {"Ldap Options", P_SEP, P_SEPARATOR}, + {N_("Ldap Options"), P_SEP, P_SEPARATOR}, #ifdef WITH_LDAP_SAMCONFIG {"ldap server", P_STRING, P_GLOBAL, &Globals.szLdapServer, NULL, NULL, FLAG_ADVANCED}, @@ -1077,7 +1075,7 @@ static struct parm_struct parm_table[] = { {"ldap passwd sync", P_ENUM, P_GLOBAL, &Globals.ldap_passwd_sync, NULL, enum_ldap_passwd_sync, FLAG_ADVANCED}, {"ldap delete dn", P_BOOL, P_GLOBAL, &Globals.ldap_delete_dn, NULL, NULL, FLAG_ADVANCED}, - {"Miscellaneous Options", P_SEP, P_SEPARATOR}, + {N_("Miscellaneous Options"), P_SEP, P_SEPARATOR}, {"add share command", P_STRING, P_GLOBAL, &Globals.szAddShareCommand, NULL, NULL, FLAG_ADVANCED}, {"change share command", P_STRING, P_GLOBAL, &Globals.szChangeShareCommand, NULL, NULL, FLAG_ADVANCED}, {"delete share command", P_STRING, P_GLOBAL, &Globals.szDeleteShareCommand, NULL, NULL, FLAG_ADVANCED}, @@ -1137,7 +1135,7 @@ static struct parm_struct parm_table[] = { {"panic action", P_STRING, P_GLOBAL, &Globals.szPanicAction, NULL, NULL, FLAG_ADVANCED}, {"hide local users", P_BOOL, P_GLOBAL, &Globals.bHideLocalUsers, NULL, NULL, FLAG_ADVANCED}, - {"VFS module options", P_SEP, P_SEPARATOR}, + {N_("VFS module options"), P_SEP, P_SEPARATOR}, {"vfs objects", P_LIST, P_LOCAL, &sDefault.szVfsObjects, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, {"vfs object", P_LIST, P_LOCAL, &sDefault.szVfsObjects, NULL, NULL, FLAG_HIDE}, @@ -1147,7 +1145,7 @@ static struct parm_struct parm_table[] = { {"msdfs proxy", P_STRING, P_LOCAL, &sDefault.szMSDfsProxy, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED}, - {"Winbind options", P_SEP, P_SEPARATOR}, + {N_("Winbind options"), P_SEP, P_SEPARATOR}, {"enable rid algorithm", P_BOOL, P_GLOBAL, &Globals.bEnableRidAlgorithm, NULL, NULL, FLAG_DEPRECATED}, {"idmap backend", P_STRING, P_GLOBAL, &Globals.szIdmapBackend, NULL, NULL, FLAG_ADVANCED}, @@ -1361,7 +1359,6 @@ static void init_globals(void) Globals.AlgorithmicRidBase = BASE_RID; Globals.bLoadPrinters = True; - Globals.mangled_stack = 50; /* Was 65535 (0xFFFF). 0x4101 matches W2K and causes major speed improvements... */ /* Discovered by 2 days of pain by Don McCall @ HP :-). */ Globals.max_xmit = 0x4104; diff --git a/source/passdb/passdb.c b/source/passdb/passdb.c index 78f36eb9b6d..9d8f600eeac 100644 --- a/source/passdb/passdb.c +++ b/source/passdb/passdb.c @@ -83,7 +83,8 @@ void pdb_fill_default_sam(SAM_ACCOUNT *user) user->private.logon_divs = 168; /* hours per week */ user->private.hours_len = 21; /* 21 times 8 bits = 168 */ memset(user->private.hours, 0xff, user->private.hours_len); /* available at all hours */ - user->private.unknown_5 = 0x00000000; /* don't know */ + user->private.bad_password_count = 0; + user->private.logon_count = 0; user->private.unknown_6 = 0x000004ec; /* don't know */ /* Some parts of samba strlen their pdb_get...() returns, @@ -103,6 +104,13 @@ void pdb_fill_default_sam(SAM_ACCOUNT *user) user->private.plaintext_pw = NULL; + /* + Unless we know otherwise have a Account Control Bit + value of 'normal user'. This helps User Manager, which + asks for a filtered list of users. + */ + + user->private.acct_ctrl = ACB_NORMAL; } static void destroy_pdb_talloc(SAM_ACCOUNT **user) @@ -935,7 +943,7 @@ BOOL local_password_change(const char *user_name, int local_flags, if ((local_flags & LOCAL_ADD_USER) || (local_flags & LOCAL_DELETE_USER)) { /* Might not exist in /etc/passwd. Use rid algorithm here */ if (!NT_STATUS_IS_OK(pdb_init_sam_new(&sam_pass, user_name, 0))) { - slprintf(err_str, err_str_len-1, "Failed initialise SAM_ACCOUNT for user %s.\n", user_name); + slprintf(err_str, err_str_len-1, "Failed to initialise SAM_ACCOUNT for user %s.\n", user_name); return False; } } else { @@ -1280,7 +1288,7 @@ BOOL local_sid_to_gid(gid_t *pgid, const DOM_SID *psid, enum SID_NAME_USE *name_ Marshall/unmarshall SAM_ACCOUNT structs. *********************************************************************/ -#define TDB_FORMAT_STRING "ddddddBBBBBBBBBBBBddBBwdwdBdd" +#define TDB_FORMAT_STRING "ddddddBBBBBBBBBBBBddBBwdwdBwwd" /********************************************************************** Intialize a SAM_ACCOUNT struct from a BYTE buffer of size len @@ -1315,8 +1323,9 @@ BOOL init_sam_from_buffer(SAM_ACCOUNT *sampass, uint8 *buf, uint32 buflen) fullname_len, homedir_len, logon_script_len, profile_path_len, acct_desc_len, workstations_len; - uint32 user_rid, group_rid, unknown_3, hours_len, unknown_5, unknown_6; + uint32 user_rid, group_rid, unknown_3, hours_len, unknown_6; uint16 acct_ctrl, logon_divs; + uint16 bad_password_count, logon_count; uint8 *hours; static uint8 *lm_pw_ptr, *nt_pw_ptr; uint32 len = 0; @@ -1357,7 +1366,8 @@ BOOL init_sam_from_buffer(SAM_ACCOUNT *sampass, uint8 *buf, uint32 buflen) &logon_divs, &hours_len, &hourslen, &hours, - &unknown_5, + &bad_password_count, + &logon_count, &unknown_6); if (len == -1) { @@ -1432,7 +1442,8 @@ BOOL init_sam_from_buffer(SAM_ACCOUNT *sampass, uint8 *buf, uint32 buflen) pdb_set_group_sid_from_rid(sampass, group_rid, PDB_SET); pdb_set_unknown_3(sampass, unknown_3, PDB_SET); pdb_set_hours_len(sampass, hours_len, PDB_SET); - pdb_set_unknown_5(sampass, unknown_5, PDB_SET); + pdb_set_bad_password_count(sampass, bad_password_count, PDB_SET); + pdb_set_logon_count(sampass, logon_count, PDB_SET); pdb_set_unknown_6(sampass, unknown_6, PDB_SET); pdb_set_acct_ctrl(sampass, acct_ctrl, PDB_SET); pdb_set_logon_divs(sampass, logon_divs, PDB_SET); @@ -1640,7 +1651,8 @@ uint32 init_buffer_from_sam (uint8 **buf, const SAM_ACCOUNT *sampass, BOOL size_ pdb_get_logon_divs(sampass), pdb_get_hours_len(sampass), MAX_HOURS_LEN, pdb_get_hours(sampass), - pdb_get_unknown_5(sampass), + pdb_get_bad_password_count(sampass), + pdb_get_logon_count(sampass), pdb_get_unknown_6(sampass)); @@ -1682,7 +1694,8 @@ uint32 init_buffer_from_sam (uint8 **buf, const SAM_ACCOUNT *sampass, BOOL size_ pdb_get_logon_divs(sampass), pdb_get_hours_len(sampass), MAX_HOURS_LEN, pdb_get_hours(sampass), - pdb_get_unknown_5(sampass), + pdb_get_bad_password_count(sampass), + pdb_get_logon_count(sampass), pdb_get_unknown_6(sampass)); diff --git a/source/passdb/pdb_get_set.c b/source/passdb/pdb_get_set.c index 15054585512..46c49be8b11 100644 --- a/source/passdb/pdb_get_set.c +++ b/source/passdb/pdb_get_set.c @@ -314,12 +314,20 @@ uint32 pdb_get_unknown_3 (const SAM_ACCOUNT *sampass) return (-1); } -uint32 pdb_get_unknown_5 (const SAM_ACCOUNT *sampass) +uint16 pdb_get_bad_password_count(const SAM_ACCOUNT *sampass) { if (sampass) - return (sampass->private.unknown_5); + return (sampass->private.bad_password_count); else - return (-1); + return 0; +} + +uint16 pdb_get_logon_count(const SAM_ACCOUNT *sampass) +{ + if (sampass) + return (sampass->private.logon_count); + else + return 0; } uint32 pdb_get_unknown_6 (const SAM_ACCOUNT *sampass) @@ -501,7 +509,7 @@ BOOL pdb_set_init_flags (SAM_ACCOUNT *sampass, enum pdb_elements element, enum p return True; } -BOOL pdb_set_user_sid (SAM_ACCOUNT *sampass, DOM_SID *u_sid, enum pdb_value_state flag) +BOOL pdb_set_user_sid (SAM_ACCOUNT *sampass, const DOM_SID *u_sid, enum pdb_value_state flag) { if (!sampass || !u_sid) return False; @@ -537,7 +545,7 @@ BOOL pdb_set_user_sid_from_string (SAM_ACCOUNT *sampass, fstring u_sid, enum pdb return True; } -BOOL pdb_set_group_sid (SAM_ACCOUNT *sampass, DOM_SID *g_sid, enum pdb_value_state flag) +BOOL pdb_set_group_sid (SAM_ACCOUNT *sampass, const DOM_SID *g_sid, enum pdb_value_state flag) { if (!sampass || !g_sid) return False; @@ -984,14 +992,24 @@ BOOL pdb_set_unknown_3 (SAM_ACCOUNT *sampass, uint32 unkn, enum pdb_value_state return pdb_set_init_flags(sampass, PDB_UNKNOWN3, flag); } -BOOL pdb_set_unknown_5 (SAM_ACCOUNT *sampass, uint32 unkn, enum pdb_value_state flag) +BOOL pdb_set_bad_password_count(SAM_ACCOUNT *sampass, uint16 bad_password_count, enum pdb_value_state flag) +{ + if (!sampass) + return False; + + sampass->private.bad_password_count = bad_password_count; + + return pdb_set_init_flags(sampass, PDB_BAD_PASSWORD_COUNT, flag); +} + +BOOL pdb_set_logon_count(SAM_ACCOUNT *sampass, uint16 logon_count, enum pdb_value_state flag) { if (!sampass) return False; - sampass->private.unknown_5 = unkn; + sampass->private.logon_count = logon_count; - return pdb_set_init_flags(sampass, PDB_UNKNOWN5, flag); + return pdb_set_init_flags(sampass, PDB_LOGON_COUNT, flag); } BOOL pdb_set_unknown_6 (SAM_ACCOUNT *sampass, uint32 unkn, enum pdb_value_state flag) diff --git a/source/passdb/pdb_ldap.c b/source/passdb/pdb_ldap.c index e00631fb7dd..5cf1691f0dd 100644 --- a/source/passdb/pdb_ldap.c +++ b/source/passdb/pdb_ldap.c @@ -61,7 +61,7 @@ #if defined(LDAP_EXOP_X_MODIFY_PASSWD) && !defined(LDAP_EXOP_MODIFY_PASSWD) #define LDAP_EXOP_MODIFY_PASSWD LDAP_EXOP_X_MODIFY_PASSWD #elif !defined(LDAP_EXOP_MODIFY_PASSWD) -#define "1.3.6.1.4.1.4203.1.11.1" +#define LDAP_EXOP_MODIFY_PASSWD "1.3.6.1.4.1.4203.1.11.1" #endif #if defined(LDAP_EXOP_X_MODIFY_PASSWD_ID) && !defined(LDAP_EXOP_MODIFY_PASSWD_ID) @@ -422,6 +422,8 @@ static BOOL init_sam_from_ldap (struct ldapsam_privates *ldap_state, smbntpwd[NT_HASH_LEN]; uint16 acct_ctrl = 0, logon_divs; + uint16 bad_password_count = 0, + logon_count = 0; uint32 hours_len; uint8 hours[MAX_HOURS_LEN]; pstring temp; @@ -704,7 +706,23 @@ static BOOL init_sam_from_ldap (struct ldapsam_privates *ldap_state, pdb_set_munged_dial(sampass, munged_dial, PDB_SET); /* pdb_set_unknown_3(sampass, unknown3, PDB_SET); */ - /* pdb_set_unknown_5(sampass, unknown5, PDB_SET); */ + + if (!smbldap_get_single_attribute(ldap_state->smbldap_state->ldap_struct, entry, + get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_BAD_PASSWORD_COUNT), temp)) { + /* leave as default */ + } else { + bad_password_count = (uint32) atol(temp); + pdb_set_bad_password_count(sampass, bad_password_count, PDB_SET); + } + + if (!smbldap_get_single_attribute(ldap_state->smbldap_state->ldap_struct, entry, + get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_LOGON_COUNT), temp)) { + /* leave as default */ + } else { + logon_count = (uint32) atol(temp); + pdb_set_logon_count(sampass, logon_count, PDB_SET); + } + /* pdb_set_unknown_6(sampass, unknown6, PDB_SET); */ pdb_set_hours(sampass, hours, PDB_SET); diff --git a/source/passdb/pdb_mysql.c b/source/passdb/pdb_mysql.c index 6c200be5045..7c2c56e3594 100644 --- a/source/passdb/pdb_mysql.c +++ b/source/passdb/pdb_mysql.c @@ -49,7 +49,8 @@ #define CONFIG_UNKNOWN_3_DEFAULT "unknown_3" #define CONFIG_LOGON_DIVS_DEFAULT "logon_divs" #define CONFIG_HOURS_LEN_DEFAULT "hours_len" -#define CONFIG_UNKNOWN_5_DEFAULT "unknown_5" +#define CONFIG_BAD_PASSWORD_COUNT_DEFAULT "bad_password_count" +#define CONFIG_LOGON_COUNT_DEFAULT "logon_count" #define CONFIG_UNKNOWN_6_DEFAULT "unknown_6" #define CONFIG_HOST_DEFAULT "localhost" #define CONFIG_USER_DEFAULT "samba" @@ -155,7 +156,7 @@ static const char * config_value_write(pdb_mysql_data * data, const char *name, if (!v) return NULL; - swrite = strchr(v, ':'); + swrite = strrchr(v, ':'); /* Default to the same field as read field */ if (!swrite) @@ -181,7 +182,7 @@ static const char * config_value_read(pdb_mysql_data * data, const char *name, c if (!v) return "NULL"; - swrite = strchr(v, ':'); + swrite = strrchr(v, ':'); /* If no write is specified, there are no problems */ if (!swrite) { @@ -240,14 +241,20 @@ static NTSTATUS row_to_sam_account(MYSQL_RES * r, SAM_ACCOUNT * u) pdb_set_unknown_str(u, row[16], PDB_SET); pdb_set_munged_dial(u, row[17], PDB_SET); - if(row[18])string_to_sid(&sid, row[18]); - pdb_set_user_sid(u, &sid, PDB_SET); - if(row[19])string_to_sid(&sid, row[19]); - pdb_set_group_sid(u, &sid, PDB_SET); + if(!row[18] || !string_to_sid(&sid, row[18])) { + DEBUG(0,("No user SID retrieved from database!\n")); + } else { + pdb_set_user_sid(u, &sid, PDB_SET); + } - if (pdb_gethexpwd(row[20], temp), PDB_SET) + if(row[19]) { + string_to_sid(&sid, row[19]); + pdb_set_group_sid(u, &sid, PDB_SET); + } + + if (pdb_gethexpwd(row[20], temp)) pdb_set_lanman_passwd(u, temp, PDB_SET); - if (pdb_gethexpwd(row[21], temp), PDB_SET) + if (pdb_gethexpwd(row[21], temp)) pdb_set_nt_passwd(u, temp, PDB_SET); /* Only use plaintext password storage when lanman and nt are @@ -259,8 +266,9 @@ static NTSTATUS row_to_sam_account(MYSQL_RES * r, SAM_ACCOUNT * u) pdb_set_unknown_3(u, xatol(row[24]), PDB_SET); pdb_set_logon_divs(u, xatol(row[25]), PDB_SET); pdb_set_hours_len(u, xatol(row[26]), PDB_SET); - pdb_set_unknown_5(u, xatol(row[27]), PDB_SET); - pdb_set_unknown_6(u, xatol(row[28]), PDB_SET); + pdb_set_bad_password_count(u, xatol(row[27]), PDB_SET); + pdb_set_logon_count(u, xatol(row[28]), PDB_SET); + pdb_set_unknown_6(u, xatol(row[29]), PDB_SET); return NT_STATUS_OK; } @@ -278,7 +286,7 @@ static NTSTATUS mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update) } asprintf(&query, - "SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s", + "SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s", config_value_read(data, "logon time column", CONFIG_LOGON_TIME_DEFAULT), config_value_read(data, "logoff time column", @@ -333,8 +341,10 @@ static NTSTATUS mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update) CONFIG_LOGON_DIVS_DEFAULT), config_value_read(data, "hours len column", CONFIG_HOURS_LEN_DEFAULT), - config_value_read(data, "unknown 5 column", - CONFIG_UNKNOWN_5_DEFAULT), + config_value_read(data, "bad password count column", + CONFIG_BAD_PASSWORD_COUNT_DEFAULT), + config_value_read(data, "logon count column", + CONFIG_LOGON_COUNT_DEFAULT), config_value_read(data, "unknown 6 column", CONFIG_UNKNOWN_6_DEFAULT), config_value(data, "table", CONFIG_TABLE_DEFAULT) @@ -442,7 +452,7 @@ static NTSTATUS mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOU } asprintf(&query, - "SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s WHERE %s = '%s'", + "SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s WHERE %s = '%s'", config_value_read(data, "logon time column", CONFIG_LOGON_TIME_DEFAULT), config_value_read(data, "logoff time column", @@ -497,8 +507,10 @@ static NTSTATUS mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOU CONFIG_LOGON_DIVS_DEFAULT), config_value_read(data, "hours len column", CONFIG_HOURS_LEN_DEFAULT), - config_value_read(data, "unknown 5 column", - CONFIG_UNKNOWN_5_DEFAULT), + config_value_read(data, "bad password count column", + CONFIG_BAD_PASSWORD_COUNT_DEFAULT), + config_value_read(data, "logon count column", + CONFIG_LOGON_COUNT_DEFAULT), config_value_read(data, "unknown 6 column", CONFIG_UNKNOWN_6_DEFAULT), config_value(data, "table", CONFIG_TABLE_DEFAULT), field, @@ -645,6 +657,7 @@ static NTSTATUS mysqlsam_replace_sam_account(struct pdb_methods *methods, const SAM_ACCOUNT * newpwd, char isupdate) { pstring temp; + char *field; struct pdb_mysql_data *data; pdb_mysql_query query; fstring sid_str; @@ -655,6 +668,7 @@ static NTSTATUS mysqlsam_replace_sam_account(struct pdb_methods *methods, } data = (struct pdb_mysql_data *) methods->private_data; + if (data == NULL || data->handle == NULL) { DEBUG(0, ("invalid handle!\n")); return NT_STATUS_INVALID_HANDLE; @@ -872,6 +886,7 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho { NTSTATUS nt_status; struct pdb_mysql_data *data; + const char *sid_column, *username_column; mysqlsam_debug_level = debug_add_class("mysqlsam"); if (mysqlsam_debug_level == -1) { @@ -880,6 +895,7 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho ("mysqlsam: Couldn't register custom debugging class!\n")); } + if (!pdb_context) { DEBUG(0, ("invalid pdb_methods specified\n")); return NT_STATUS_UNSUCCESSFUL; @@ -927,6 +943,14 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho DEBUG(0, ("Failed to connect to server\n")); return NT_STATUS_UNSUCCESSFUL; } + + sid_column = config_value_read(data, "user sid column", CONFIG_USER_SID_DEFAULT); + username_column = config_value_read(data, "username column", CONFIG_USERNAME_DEFAULT); + if(!strcmp(sid_column,"NULL") || !strcmp(username_column, "NULL")) { + DEBUG(0,("Please specify both a valid 'user sid column' and a valid 'username column' in smb.conf\n")); + return NT_STATUS_UNSUCCESSFUL; + } + /* Process correct entry in $HOME/.my.conf */ if (!mysql_real_connect(data->handle, config_value(data, "mysql host", CONFIG_HOST_DEFAULT), diff --git a/source/passdb/pdb_smbpasswd.c b/source/passdb/pdb_smbpasswd.c index 8171b65adcc..8cdbec9b9d0 100644 --- a/source/passdb/pdb_smbpasswd.c +++ b/source/passdb/pdb_smbpasswd.c @@ -261,7 +261,11 @@ static FILE *startsmbfilepwent(const char *pfile, enum pwf_access_type type, int setvbuf(fp, (char *)NULL, _IOFBF, 1024); /* Make sure it is only rw by the owner */ +#ifdef HAVE_FCHMOD if(fchmod(fileno(fp), S_IRUSR|S_IWUSR) == -1) { +#else + if(chmod(pfile, S_IRUSR|S_IWUSR) == -1) { +#endif DEBUG(0, ("startsmbfilepwent_internal: failed to set 0600 permissions on password file %s. \ Error was %s\n.", pfile, strerror(errno) )); pw_file_unlock(fileno(fp), lock_depth); diff --git a/source/passdb/pdb_xml.c b/source/passdb/pdb_xml.c index 7af2fdd9402..29922bca4f9 100644 --- a/source/passdb/pdb_xml.c +++ b/source/passdb/pdb_xml.c @@ -159,8 +159,13 @@ static BOOL parseUser(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SAM_ACCOUNT * atol(xmlNodeListGetString (doc, cur->xmlChildrenNode, 1)), PDB_SET); - else if (!strcmp(cur->name, "unknown_5") && cur->ns == ns) - pdb_set_unknown_5(u, + else if (!strcmp(cur->name, "bad_password_count") && cur->ns == ns) + pdb_set_bad_password_count(u, + atol(xmlNodeListGetString + (doc, cur->xmlChildrenNode, 1)), PDB_SET); + + else if (!strcmp(cur->name, "logon_count") && cur->ns == ns) + pdb_set_logon_count(u, atol(xmlNodeListGetString (doc, cur->xmlChildrenNode, 1)), PDB_SET); @@ -495,7 +500,8 @@ static NTSTATUS xmlsam_add_sam_account(struct pdb_methods *methods, SAM_ACCOUNT xmlNewChild(user, data->ns, "hours_len", iota(pdb_get_hours_len(u))); - xmlNewChild(user, data->ns, "unknown_5", iota(pdb_get_unknown_5(u))); + xmlNewChild(user, data->ns, "bad_password_count", iota(pdb_get_bad_password_count(u))); + xmlNewChild(user, data->ns, "logon_count", iota(pdb_get_logon_count(u))); xmlNewChild(user, data->ns, "unknown_6", iota(pdb_get_unknown_6(u))); xmlSaveFile(data->location, data->doc); diff --git a/source/po/de.msg b/source/po/de.msg index 6a8da43ae3a..e2294d50871 100644 --- a/source/po/de.msg +++ b/source/po/de.msg @@ -1,1707 +1,593 @@ # German messages for international release of SWAT. # Copyright (C) 2001 Andreas Moroder - +# +# 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. +# msgid "" msgstr "" -"Project-Id-Version: i18n_swat \n" -"POT-Creation-Date: 2001-10-27 14:05+0100\n" +"Project-Id-Version: i18n_swat\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2000-02-08 14:45+0100\n" -"Last-Translator: Andreas Moroder" +"Last-Translator: Andreas Moroder\n" "Language-Team: (Samba Team) <samba-technical@samba.org>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=US-ASCII\n" -"Content-Transfer-Encoding: \n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" -#: web/swat.c:120 +#: ../web/swat.c:117 #, c-format -msgid "ERROR: Can't open %s\n" -msgstr "ERRORE: Kann %s nicht ffnen\n" +msgid "ERROR: Can't open %s" +msgstr "ERRORE: Kann %s nicht ffnen" -#. -#. str = stripspace(parm->label); -#. strlower (str); //monyo -#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A> %s</td><td>", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 +#: ../web/swat.c:200 msgid "Help" msgstr "Hilfe" -#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263 -#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "Setze Standardwerte" -#: web/swat.c:502 +#: ../web/swat.c:408 +#, c-format +msgid "failed to open %s for writing" +msgstr "" + +#: ../web/swat.c:431 #, c-format -msgid "Logged in as <b>%s</b><p>\n" -msgstr "Verbunden als <b>%s</b><p>\n" +msgid "Can't reload %s" +msgstr "" -#: web/swat.c:505 +#: ../web/swat.c:501 +#, c-format +msgid "Logged in as <b>%s</b>" +msgstr "Verbunden als <b>%s</b>" + +#: ../web/swat.c:505 msgid "Home" msgstr "Home" -#: web/swat.c:507 +#: ../web/swat.c:507 msgid "Globals" msgstr "Globals" -#: web/swat.c:508 +#: ../web/swat.c:508 msgid "Shares" msgstr "Freigaben" -#: web/swat.c:509 +#: ../web/swat.c:509 msgid "Printers" msgstr "Drucker" -#: web/swat.c:512 +#: ../web/swat.c:510 +msgid "Wizard" +msgstr "" + +#: ../web/swat.c:513 msgid "Status" msgstr "Status" -#: web/swat.c:513 +#: ../web/swat.c:514 msgid "View Config" msgstr "Zeige Konfiguration" -#: web/swat.c:515 +#: ../web/swat.c:516 msgid "Password Management" msgstr "Passwortverwaltung" -#: web/swat.c:539 +#: ../web/swat.c:526 +msgid "Current View Is" +msgstr "Aktuelle Konfiguration" + +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" +msgstr "Basis Ansicht" + +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" +msgstr "Erweiterte Ansicht" + +#: ../web/swat.c:529 +msgid "Change View To" +msgstr "トndere Passwort" + +#: ../web/swat.c:554 msgid "Current Config" msgstr "Aktuelle Konfiguration" -#: web/swat.c:543 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Normale Ansich" -#: web/swat.c:545 +#: ../web/swat.c:560 msgid "Full View" msgstr "Komplette Ansicht" -#: web/swat.c:561 -msgid "Global Variables" +#. Here we first set and commit all the parameters that were selected +#. in the previous screen. +#: ../web/swat.c:579 +msgid "Wizard Parameter Edit Page" +msgstr "" + +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" +msgstr "" + +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" +msgstr "" + +#: ../web/swat.c:720 +msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." +msgstr "" + +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." +msgstr "" + +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" +msgstr "" + +#: ../web/swat.c:725 +msgid "Commit" +msgstr "Kommentar" + +#: ../web/swat.c:726 +msgid "Edit Parameter Values" +msgstr "Drucker Parameter" + +#: ../web/swat.c:732 +msgid "Server Type" +msgstr "" + +#: ../web/swat.c:733 +msgid "Stand Alone" +msgstr "" + +#: ../web/swat.c:734 +msgid "Domain Member" +msgstr "Dom舅en master" + +#: ../web/swat.c:735 +msgid "Domain Controller" +msgstr "Dom舅en master" + +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" +msgstr "" + +#: ../web/swat.c:740 +msgid "Configure WINS As" +msgstr "" + +#: ../web/swat.c:741 +msgid "Not Used" +msgstr "nicht hinabsteigen" + +#: ../web/swat.c:742 +msgid "Server for client use" +msgstr "" + +#: ../web/swat.c:743 +msgid "Client of another WINS server" +msgstr "" + +#: ../web/swat.c:745 +msgid "Remote WINS Server" +msgstr "" + +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" +msgstr "" + +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." +msgstr "" + +#: ../web/swat.c:759 +msgid "Expose Home Directories" +msgstr "" + +#: ../web/swat.c:774 +msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." +msgstr "" + +#: ../web/swat.c:787 +msgid "Global Parameters" msgstr "Globale Variablen" -#: web/swat.c:575 web/swat.c:671 web/swat.c:1014 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "Speichere トnderungen" -#: web/swat.c:579 web/swat.c:674 web/swat.c:1016 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "Setze Werte zurck" -#: web/swat.c:581 web/swat.c:676 web/swat.c:1018 -msgid "Advanced View" -msgstr "Erweiterte Ansicht" - -#: web/swat.c:583 web/swat.c:678 web/swat.c:1020 -msgid "Basic View" -msgstr "Basis Ansicht" - -#: web/swat.c:613 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Parameter der Freigabe" -#: web/swat.c:642 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "W臧le Freigabe" -#: web/swat.c:656 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Lsche Freigabe" -#: web/swat.c:663 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Erstelle Freigabe" -#: web/swat.c:708 -msgid "password change in demo mode rejected\n" +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" msgstr "トnderung des Passworts im Demo modus nicht aktiv" -#: web/swat.c:747 -msgid " Must specify \"User Name\" \n" -msgstr " \"Benutzername\" muss angegeben werden \n" +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." +msgstr "" + +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " +msgstr " \"Benutzername\" muss angegeben werden " -#: web/swat.c:763 -msgid " Must specify \"Old Password\" \n" -msgstr " \"Altes Passwort\" mu゚ angegeben werden \n" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " +msgstr " \"Altes Passwort\" mu゚ angegeben werden " -#: web/swat.c:769 -msgid " Must specify \"Remote Machine\" \n" -msgstr " \"Remote Maschine\" mu゚ angegeben werden \n" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " +msgstr " \"Remote Maschine\" mu゚ angegeben werden " -#: web/swat.c:776 -msgid " Must specify \"New, and Re-typed Passwords\" \n" -msgstr " "Neues/Best舩ige Passwort" mu゚ angegeben werden \n" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " +msgstr " \"Neues/Best舩ige Passwort\" mu゚ angegeben werden " -#: web/swat.c:782 -msgid " Re-typed password didn't match new password\n" -msgstr " Das best舩igte Passwort stimmt nicht mit dem neuen Passwort berein\n" +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " +msgstr " Das best舩igte Passwort stimmt nicht mit dem neuen Passwort berein" -#: web/swat.c:812 +#: ../web/swat.c:1048 #, c-format -msgid " The passwd for '%s' has been changed. \n" -msgstr " Das Passwort fr '%s' wurde ge舅dert. \n" +msgid " The passwd for '%s' has been changed." +msgstr " Das Passwort fr '%s' wurde ge舅dert." -#: web/swat.c:814 +#: ../web/swat.c:1051 #, c-format -msgid " The passwd for '%s' has NOT been changed. \n" -msgstr " Das Passwort fr '%s' wurde nicht ge舅dert. \n" +msgid " The passwd for '%s' has NOT been changed." +msgstr " Das Passwort fr '%s' wurde nicht ge舅dert." -#: web/swat.c:838 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Verwaltung des Server Passwortes" #. #. * Create all the dialog boxes for data collection #. -#: web/swat.c:847 web/swat.c:894 -msgid " User Name : " -msgstr " Benutzername : " +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" +msgstr "Benutzername" -#: web/swat.c:850 web/swat.c:896 -msgid " Old Password : " -msgstr " Altes Passwort : " +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" +msgstr "Altes Passwort" -#: web/swat.c:853 web/swat.c:898 -msgid " New Password : " -msgstr " Neues Passwort : " +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" +msgstr "Neues Passwort" -#: web/swat.c:855 web/swat.c:900 -msgid " Re-type New Password : " -msgstr " Best舩ige neues Passwort : " +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" +msgstr "Best舩ige neues Passwort" -#: web/swat.c:863 web/swat.c:911 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "トndere Passwort" -#: web/swat.c:866 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "Fge Benutzer hinzu" -#: web/swat.c:868 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Lsche Benutzer" -#: web/swat.c:870 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "Desaktiviere Benutzer" -#: web/swat.c:872 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Aktiviere Benutzer" -#: web/swat.c:885 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "Client/Server Passwort Verwaltung" -#: web/swat.c:902 -msgid " Remote Machine : " -msgstr " Remote Maschine : " +#: ../web/swat.c:1140 +msgid "Remote Machine" +msgstr "Remote Maschine" -#: web/swat.c:940 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "Drucker Parameter" -#: web/swat.c:942 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "Wichtige Hinweise:" -#: web/swat.c:943 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "Mit [*] gekennzeichnete Druckername in der Druckerauswahlliste" -#: web/swat.c:944 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "wurde automatisch geladen von :" -#: web/swat.c:945 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "Printcap Name" -#: web/swat.c:946 -msgid "Attempting to delete these printers from SWAT will have no effect.\n" -msgstr "Der Versuch diese Drucker von SWAT aus zu lschen wird keine Auswirkung haben.\n" +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." +msgstr "Der Versuch diese Drucker von SWAT aus zu lschen wird keine Auswirkung haben." -#: web/swat.c:980 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "W臧le Drucker" -#: web/swat.c:999 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Lsche Drucker" -#: web/swat.c:1006 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Ersteller Drucker" -#: web/statuspage.c:40 -msgid "DENY_NONE" -msgstr "" - -#: web/statuspage.c:41 -msgid "DENY_ALL " -msgstr "" - -#: web/statuspage.c:42 -msgid "DENY_DOS " -msgstr "" - -#: web/statuspage.c:43 -msgid "DENY_READ " -msgstr "" - -#: web/statuspage.c:44 -msgid "DENY_WRITE " -msgstr "" - -#: web/statuspage.c:50 +#: ../web/statuspage.c:123 msgid "RDONLY " msgstr "" -#: web/statuspage.c:51 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "" -#: web/statuspage.c:52 +#: ../web/statuspage.c:125 msgid "RDWR " msgstr "" -#: web/statuspage.c:60 -msgid "EXCLUSIVE+BATCH " -msgstr "" - -#: web/statuspage.c:62 -msgid "EXCLUSIVE " -msgstr "" - -#: web/statuspage.c:64 -msgid "BATCH " -msgstr "" - -#: web/statuspage.c:66 -msgid "LEVEL_II " -msgstr "" - -#: web/statuspage.c:68 -msgid "NONE " -msgstr "" - -#: web/statuspage.c:195 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "Server Status" -#: web/statuspage.c:200 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "Automatische Aktualisierung" -#: web/statuspage.c:201 web/statuspage.c:206 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Aktualisierungsintervall: " -#: web/statuspage.c:205 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Stop Aktualisierung" -#: web/statuspage.c:220 +#: ../web/statuspage.c:334 msgid "version:" msgstr "Version:" -#: web/statuspage.c:223 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "aktiv" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "inaktiv" -#: web/statuspage.c:226 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "Stopp smbd" -#: web/statuspage.c:228 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "Start smbd" -#: web/statuspage.c:230 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Neustart smbd" -#: web/statuspage.c:235 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "" -#: web/statuspage.c:238 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "Stopp nmbd" -#: web/statuspage.c:240 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "Start nmbd" -#: web/statuspage.c:242 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Neustart nmbd" -#: web/statuspage.c:249 +#: ../web/statuspage.c:364 +msgid "winbindd:" +msgstr "" + +#: ../web/statuspage.c:368 +msgid "Stop winbindd" +msgstr "Stopp nmbd" + +#: ../web/statuspage.c:370 +msgid "Start winbindd" +msgstr "Start nmbd" + +#: ../web/statuspage.c:372 +msgid "Restart winbindd" +msgstr "Neustart nmbd" + +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" +msgstr "" + +#: ../web/statuspage.c:382 +msgid "Restart All" +msgstr "Neustart nmbd" + +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" +msgstr "Start nmbd" + +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Aktive Verbindungen" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "" -#: web/statuspage.c:251 web/statuspage.c:264 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "" -#: web/statuspage.c:251 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "IP Adresse" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "Datum" -#: web/statuspage.c:253 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Kill" -#: web/statuspage.c:261 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "Aktive Freigaben" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Freigabe" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "User" msgstr "Benutzer" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Gruppe" -#: web/statuspage.c:270 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "Offene Dateien" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "File" msgstr "" -#: param/loadparm.c:641 -msgid "Base Options" -msgstr "Basisoptionen" - -#: param/loadparm.c:643 -msgid "dos charset" -msgstr "dos Charakterset" - -#: param/loadparm.c:644 -msgid "unix charset" -msgstr "unix Charakterset" - -#: param/loadparm.c:645 -msgid "display charset" -msgstr "Anzeige Charakterset" - -#: param/loadparm.c:646 -msgid "comment" -msgstr "Kommentar" - -#: param/loadparm.c:647 -msgid "path" -msgstr "Pfad" - -#: param/loadparm.c:648 -msgid "directory" -msgstr "Verzeichnis" - -#: param/loadparm.c:649 -msgid "workgroup" -msgstr "Arbeitsgruppe" - -#: param/loadparm.c:650 -msgid "netbios name" -msgstr "netbios name" - -#: param/loadparm.c:651 -msgid "netbios aliases" -msgstr "netbios aliase" - -#: param/loadparm.c:652 -msgid "netbios scope" -msgstr "netbios scope" - -#: param/loadparm.c:653 -msgid "server string" -msgstr "server string" - -#: param/loadparm.c:654 -msgid "interfaces" -msgstr "Schnittstellen" - -#: param/loadparm.c:655 -msgid "bind interfaces only" -msgstr "verwende nur definierte Schnittstellen" - -#: param/loadparm.c:657 -msgid "Security Options" -msgstr "Sicherheitsoptionen" - -#: param/loadparm.c:659 -msgid "security" -msgstr "Sicherheit" - -#: param/loadparm.c:660 -msgid "encrypt passwords" -msgstr "Verschlsselte Passwrter" - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "update Verschlsselte" - -#: param/loadparm.c:662 -msgid "allow trusted domains" -msgstr "Erlaube Vertrauneswrdige Dom舅en" - -#: param/loadparm.c:663 -msgid "alternate permissions" -msgstr "Alternative Berechtigungen" - -#: param/loadparm.c:664 -msgid "hosts equiv" -msgstr "" - -#: param/loadparm.c:665 -msgid "min passwd length" -msgstr "Min. L舅ge Passwort" - -#: param/loadparm.c:666 -msgid "min password length" -msgstr "Min. L舅ge Passwort" - -#: param/loadparm.c:667 -msgid "map to guest" -msgstr "Map nach Gast" - -#: param/loadparm.c:668 -msgid "null passwords" -msgstr "leere Passwrter" - -#: param/loadparm.c:669 -msgid "obey pam restrictions" -msgstr "Folge pam Einschr舅kungen" - -#: param/loadparm.c:670 -msgid "password server" -msgstr "Serverpasswort" - -#: param/loadparm.c:671 -msgid "smb passwd file" -msgstr "smb passwd Datei" - -#: param/loadparm.c:672 -msgid "private dir" -msgstr "Privates Verzeichnis" - -#: param/loadparm.c:673 -msgid "passdb module path" -msgstr "Pfad passdb Modul" - -#: param/loadparm.c:674 -msgid "root directory" -msgstr "" - -#: param/loadparm.c:675 -msgid "root dir" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" msgstr "" -#: param/loadparm.c:676 -msgid "root" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" msgstr "" -#: param/loadparm.c:678 -msgid "pam password change" -msgstr "pam Passwort舅derung" - -#: param/loadparm.c:679 -msgid "passwd program" -msgstr "" - -#: param/loadparm.c:680 -msgid "passwd chat" -msgstr "" - -#: param/loadparm.c:681 -msgid "passwd chat debug" -msgstr "" - -#: param/loadparm.c:682 -msgid "username map" -msgstr "username map" - -#: param/loadparm.c:683 -msgid "password level" -msgstr "Stufe Passwort " - -#: param/loadparm.c:684 -msgid "username level" -msgstr "Stufe Benutzer" - -#: param/loadparm.c:685 -msgid "unix password sync" -msgstr "Synchronisiere unix Passwort " - -#: param/loadparm.c:686 -msgid "restrict anonymous" -msgstr "Beschr舅ke anonymus" - -#: param/loadparm.c:687 -msgid "lanman auth" -msgstr "" - -#: param/loadparm.c:688 -msgid "ntlm auth" -msgstr "" - -#: param/loadparm.c:689 -msgid "plaintext to smbpasswd" -msgstr "plaintext to smbpasswd" - -#: param/loadparm.c:690 -msgid "use rhosts" -msgstr "use rhosts" - -#: param/loadparm.c:692 -msgid "username" -msgstr "Benutzername" - -#: param/loadparm.c:693 -msgid "user" -msgstr "Benutzer" - -#: param/loadparm.c:694 -msgid "users" -msgstr "Benutzer" - -#: param/loadparm.c:696 -msgid "guest account" -msgstr "Gast Account" - -#: param/loadparm.c:697 -msgid "invalid users" -msgstr "Ungltige Benutzer" - -#: param/loadparm.c:698 -msgid "valid users" -msgstr "Gltige Benutzer" - -#: param/loadparm.c:699 -msgid "admin users" -msgstr "Administratoren" - -#: param/loadparm.c:700 -msgid "read list" -msgstr "" - -#: param/loadparm.c:701 -msgid "write list" -msgstr "" - -#: param/loadparm.c:702 -msgid "printer admin" -msgstr "Druckerverwalter" - -#: param/loadparm.c:703 -msgid "force user" -msgstr "" - -#: param/loadparm.c:704 -msgid "force group" -msgstr "" - -#: param/loadparm.c:705 -msgid "group" -msgstr "Gruppe" - -#: param/loadparm.c:707 -msgid "read only" -msgstr "nur lesen" - -#: param/loadparm.c:708 -msgid "write ok" -msgstr "Schreiben zulassen" - -#: param/loadparm.c:709 -msgid "writeable" -msgstr "Beschreibbar" - -#: param/loadparm.c:710 -msgid "writable" -msgstr "Beschreibbar" - -#: param/loadparm.c:712 -msgid "create mask" -msgstr "Erstellungsmaske" - -#: param/loadparm.c:713 -msgid "create mode" -msgstr "Erstellungsmodus" - -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "Erzwinge Erstellungsmodus" - -#: param/loadparm.c:715 -msgid "security mask" -msgstr "" - -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "Erzwinge Sicherheitsmodus" - -#: param/loadparm.c:717 -msgid "directory mask" -msgstr "Verzeichnismaske" - -#: param/loadparm.c:718 -msgid "directory mode" -msgstr "Verzeichnismodus" - -#: param/loadparm.c:719 -msgid "force directory mode" -msgstr "Erzwinge Verzeichnismodus" - -#: param/loadparm.c:720 -msgid "directory security mask" -msgstr "Verzeichnis Sicherheitsmaske" - -#: param/loadparm.c:721 -msgid "force directory security mode" -msgstr "Erzwinge Verzeichnis Sicherheitsmodus" - -#: param/loadparm.c:722 -msgid "inherit permissions" -msgstr "Vererbe Rechte" - -#: param/loadparm.c:723 -msgid "guest only" -msgstr "nur G舖te" - -#: param/loadparm.c:724 -msgid "only guest" -msgstr "nur G舖te" - -#: param/loadparm.c:726 -msgid "guest ok" -msgstr "G舖te erlaubt" - -#: param/loadparm.c:727 -msgid "public" -msgstr "ヨffentlich" - -#: param/loadparm.c:729 -msgid "only user" -msgstr "Nur Benutzer" - -#: param/loadparm.c:730 -msgid "hosts allow" -msgstr "Erlaube hosts" - -#: param/loadparm.c:731 -msgid "allow hosts" -msgstr "Erlaube hosts" - -#: param/loadparm.c:732 -msgid "hosts deny" -msgstr "verbiete hosts" - -#: param/loadparm.c:733 -msgid "deny hosts" -msgstr "verbiete hosts" - -#: param/loadparm.c:736 -msgid "Secure Socket Layer Options" -msgstr "Secure Socket Layer Optionen" - -#: param/loadparm.c:737 -msgid "ssl" -msgstr "" - -#: param/loadparm.c:739 -msgid "ssl hosts" -msgstr "" - -#: param/loadparm.c:740 -msgid "ssl hosts resign" -msgstr "" - -#: param/loadparm.c:741 -msgid "ssl CA certDir" -msgstr "" - -#: param/loadparm.c:742 -msgid "ssl CA certFile" -msgstr "" - -#: param/loadparm.c:743 -msgid "ssl server cert" -msgstr "" - -#: param/loadparm.c:744 -msgid "ssl server key" -msgstr "" - -#: param/loadparm.c:745 -msgid "ssl client cert" -msgstr "" - -#: param/loadparm.c:746 -msgid "ssl client key" -msgstr "" - -#: param/loadparm.c:747 -msgid "ssl require clientcert" -msgstr "ssl bedarf eines Clientzertifikats" - -#: param/loadparm.c:748 -msgid "ssl require servercert" -msgstr "ssl bedarf eines Serverzertifikats" - -#: param/loadparm.c:749 -msgid "ssl ciphers" -msgstr "" - -#: param/loadparm.c:750 -msgid "ssl version" -msgstr "" +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "Basisoptionen" -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "" +#: ../param/loadparm.c:775 +msgid "Security Options" +msgstr "Sicherheitsoptionen" -#: param/loadparm.c:754 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Log Optionen" -#: param/loadparm.c:755 -msgid "log level" -msgstr "Log Stufe" - -#: param/loadparm.c:756 -msgid "debuglevel" -msgstr "Debug Stufe" - -#: param/loadparm.c:757 -msgid "syslog" -msgstr "" - -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "nur syslog" - -#: param/loadparm.c:759 -msgid "log file" -msgstr "Log Datei" - -#: param/loadparm.c:761 -msgid "max log size" -msgstr "max log Grsse" - -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "" - -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "" - -#: param/loadparm.c:764 -msgid "debug hires timestamp" -msgstr "" - -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "" - -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "" - -#: param/loadparm.c:768 +#: ../param/loadparm.c:874 msgid "Protocol Options" -msgstr " Protokoll Optionen" - -#: param/loadparm.c:770 -msgid "protocol" -msgstr "Protokoll" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "" +msgstr "Protokoll Optionen" -#: param/loadparm.c:772 -msgid "max protocol" -msgstr "max Protokoll" - -#: param/loadparm.c:773 -msgid "min protocol" -msgstr "min Protokoll" - -#: param/loadparm.c:774 -msgid "unicode" -msgstr "" - -#: param/loadparm.c:775 -msgid "read bmpx" -msgstr "" - -#: param/loadparm.c:776 -msgid "read raw" -msgstr "" - -#: param/loadparm.c:777 -msgid "write raw" -msgstr "" - -#: param/loadparm.c:779 -msgid "nt smb support" -msgstr "nt smb Untersttzung" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "nt pipe Untersttzung" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "ntacl Untersttzung" - -#: param/loadparm.c:782 -msgid "announce version" -msgstr "Melde Version" - -#: param/loadparm.c:783 -msgid "announce as" -msgstr "Melde als" - -#: param/loadparm.c:784 -msgid "max mux" -msgstr "" - -#: param/loadparm.c:785 -msgid "max xmit" -msgstr "" - -#: param/loadparm.c:787 -msgid "name resolve order" -msgstr "Reihenfolge Namensauflsung" - -#: param/loadparm.c:788 -msgid "max packet" -msgstr "max Paket" - -#: param/loadparm.c:789 -msgid "packet size" -msgstr "Paketgr゚e" - -#: param/loadparm.c:790 -msgid "max ttl" -msgstr "" - -#: param/loadparm.c:791 -msgid "max wins ttl" -msgstr "" - -#: param/loadparm.c:792 -msgid "min wins ttl" -msgstr "wins ttl minimo" - -#: param/loadparm.c:793 -msgid "time server" -msgstr "Zeitserver" - -#: param/loadparm.c:795 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "Optimierungsoptionen" -#: param/loadparm.c:797 -msgid "change notify timeout" -msgstr "" - -#: param/loadparm.c:798 -msgid "deadtime" -msgstr "" - -#: param/loadparm.c:799 -msgid "getwd cache" -msgstr "" - -#: param/loadparm.c:800 -msgid "keepalive" -msgstr "" - -#: param/loadparm.c:802 -msgid "lpq cache time" -msgstr "" - -#: param/loadparm.c:803 -msgid "max smbd processes" -msgstr "Max Anzahl smbd Prozesse" - -#: param/loadparm.c:804 -msgid "max connections" -msgstr "Max. Verbindungen" - -#: param/loadparm.c:805 -msgid "paranoid server security" -msgstr "Paranoide Serversicherheit" - -#: param/loadparm.c:806 -msgid "max disk size" -msgstr "Max. Festplattengr゚e" - -#: param/loadparm.c:807 -msgid "max open files" -msgstr "max Anzahl offener Dateien" - -#: param/loadparm.c:808 -msgid "min print space" -msgstr "" - -#: param/loadparm.c:809 -msgid "read size" -msgstr "" - -#: param/loadparm.c:811 -msgid "socket options" -msgstr "Socket Optionen" - -#: param/loadparm.c:812 -msgid "stat cache size" -msgstr "Grsse stat cache" - -#: param/loadparm.c:813 -msgid "strict allocate" -msgstr "" - -#: param/loadparm.c:814 -msgid "strict sync" -msgstr "" - -#: param/loadparm.c:815 -msgid "sync always" -msgstr "" - -#: param/loadparm.c:816 -msgid "use mmap" -msgstr "verwende mmap" - -#: param/loadparm.c:817 -msgid "hostname lookups" -msgstr "" - -#: param/loadparm.c:818 -msgid "write cache size" -msgstr "gr゚e Schreibpuffer" - -#: param/loadparm.c:820 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "Druckoptionen" -#: param/loadparm.c:822 -msgid "total print jobs" -msgstr "Druckauftr臠e insges." - -#: param/loadparm.c:823 -msgid "max print jobs" -msgstr "Druckauftr臠e max." - -#: param/loadparm.c:824 -msgid "load printers" -msgstr "lade Drucker" - -#: param/loadparm.c:825 -msgid "printcap name" -msgstr "printcap name" - -#: param/loadparm.c:826 -msgid "printcap" -msgstr "" - -#: param/loadparm.c:827 -msgid "printable" -msgstr "Bedruckbar" - -#: param/loadparm.c:828 -msgid "print ok" -msgstr "Druck ok" - -#: param/loadparm.c:829 -msgid "postscript" -msgstr "" - -#: param/loadparm.c:830 -msgid "printing" -msgstr "Druck" - -#: param/loadparm.c:831 -msgid "print command" -msgstr "Druckbefehl" - -#: param/loadparm.c:832 -msgid "disable spoolss" -msgstr "deaktiviere spoolss" - -#: param/loadparm.c:833 -msgid "lpq command" -msgstr "lpq Befehl" - -#: param/loadparm.c:834 -msgid "lprm command" -msgstr "lprm Befehl" - -#: param/loadparm.c:835 -msgid "lppause command" -msgstr "lppause Befehl" - -#: param/loadparm.c:836 -msgid "lpresume command" -msgstr "lpresume Befehl" - -#: param/loadparm.c:837 -msgid "queuepause command" -msgstr "queuepause Befehl" - -#: param/loadparm.c:838 -msgid "queueresume command" -msgstr "queueresume Befehl" - -#: param/loadparm.c:840 -msgid "enumports command" -msgstr "enumports Befehl" - -#: param/loadparm.c:841 -msgid "addprinter command" -msgstr "addprinter Befehl" - -#: param/loadparm.c:842 -msgid "deleteprinter command" -msgstr "deleteprinter Befehl" - -#: param/loadparm.c:843 -msgid "show add printer wizard" -msgstr "Zeige Wizzard zum hinzufgen von Druckern" - -#: param/loadparm.c:844 -msgid "os2 driver map" -msgstr "" - -#: param/loadparm.c:846 -msgid "printer name" -msgstr "Druckername" - -#: param/loadparm.c:847 -msgid "printer" -msgstr "Drucker - -#: param/loadparm.c:848 -msgid "use client driver" -msgstr "Verwende client Treiber" - -#: param/loadparm.c:849 -msgid "printer driver" -msgstr "Druckertreiber" - -#: param/loadparm.c:850 -msgid "printer driver file" -msgstr "Druckertreiber Datei" - -#: param/loadparm.c:851 -msgid "printer driver location" -msgstr "Pfad Druckertreiber" - -#: param/loadparm.c:853 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Verwaltung Dateinamen" -#: param/loadparm.c:854 -msgid "strip dot" -msgstr "Entferne den Punkt" - -#: param/loadparm.c:856 -msgid "mangled stack" -msgstr "" - -#: param/loadparm.c:857 -msgid "default case" -msgstr "" - -#: param/loadparm.c:858 -msgid "case sensitive" -msgstr "" - -#: param/loadparm.c:859 -msgid "casesignames" -msgstr "" - -#: param/loadparm.c:860 -msgid "preserve case" -msgstr "" - -#: param/loadparm.c:861 -msgid "short preserve case" -msgstr "" - -#: param/loadparm.c:862 -msgid "mangle case" -msgstr "" - -#: param/loadparm.c:863 -msgid "mangling char" -msgstr "" - -#: param/loadparm.c:864 -msgid "hide dot files" -msgstr "" - -#: param/loadparm.c:865 -msgid "hide unreadable" -msgstr "" - -#: param/loadparm.c:866 -msgid "delete veto files" -msgstr "" - -#: param/loadparm.c:867 -msgid "veto files" -msgstr "" - -#: param/loadparm.c:868 -msgid "hide files" -msgstr "Verstecke Dateien" - -#: param/loadparm.c:869 -msgid "veto oplock files" -msgstr "" - -#: param/loadparm.c:870 -msgid "map system" -msgstr "" - -#: param/loadparm.c:871 -msgid "map hidden" -msgstr "" - -#: param/loadparm.c:872 -msgid "map archive" -msgstr "" - -#: param/loadparm.c:873 -msgid "mangled names" -msgstr "" - -#: param/loadparm.c:874 -msgid "mangled map" -msgstr "" - -#: param/loadparm.c:875 -msgid "stat cache" -msgstr "" - -#: param/loadparm.c:877 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Dom舅en Optionen" -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "Gruppe Dom舅enadministratoren" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "Dom舅en Gastgruppen" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "Verfall Maschinenpasswort" - -#: param/loadparm.c:888 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Login optionen" -#: param/loadparm.c:890 -msgid "add user script" -msgstr "" - -#: param/loadparm.c:891 -msgid "delete user script" -msgstr "" - -#: param/loadparm.c:892 -msgid "add group script" -msgstr "" - -#: param/loadparm.c:893 -msgid "delete group script" -msgstr "" - -#: param/loadparm.c:894 -msgid "add user to group script" -msgstr "" - -#: param/loadparm.c:895 -msgid "delete user from group script" -msgstr "" - -#: param/loadparm.c:896 -msgid "add machine script" -msgstr "" - -#: param/loadparm.c:897 -msgid "shutdown script" -msgstr "" - -#: param/loadparm.c:898 -msgid "abort shutdown script" -msgstr "" - -#: param/loadparm.c:900 -msgid "logon script" -msgstr "" - -#: param/loadparm.c:901 -msgid "logon path" -msgstr "" - -#: param/loadparm.c:902 -msgid "logon drive" -msgstr "" - -#: param/loadparm.c:903 -msgid "logon home" -msgstr "" - -#: param/loadparm.c:904 -msgid "domain logons" -msgstr "" - -#: param/loadparm.c:906 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Browsing Optionen" -#: param/loadparm.c:908 -msgid "os level" -msgstr "os Stufe" - -#: param/loadparm.c:909 -msgid "lm announce" -msgstr "" - -#: param/loadparm.c:910 -msgid "lm interval" -msgstr "" - -#: param/loadparm.c:911 -msgid "preferred master" -msgstr "Bevorzugter master" - -#: param/loadparm.c:912 -msgid "prefered master" -msgstr "Bevorzugter master" - -#: param/loadparm.c:913 -msgid "local master" -msgstr "Lokaler master" - -#: param/loadparm.c:914 -msgid "domain master" -msgstr "Dom舅en master" - -#: param/loadparm.c:915 -msgid "browse list" -msgstr "browsing Liste" - -#: param/loadparm.c:916 -msgid "browseable" -msgstr "" - -#: param/loadparm.c:917 -msgid "browsable" -msgstr "" - -#: param/loadparm.c:918 -msgid "enhanced browsing" -msgstr "Erweitertes browsing" - -#: param/loadparm.c:920 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "WINS Optionen" -#: param/loadparm.c:921 -msgid "dns proxy" -msgstr "" - -#: param/loadparm.c:922 -msgid "wins proxy" -msgstr "" - -#: param/loadparm.c:924 -msgid "wins server" -msgstr "" - -#: param/loadparm.c:925 -msgid "wins support" -msgstr "" - -#: param/loadparm.c:926 -msgid "wins hook" -msgstr "" - -#: param/loadparm.c:928 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Locking Optionen" -#: param/loadparm.c:930 -msgid "blocking locks" -msgstr "" - -#: param/loadparm.c:931 -msgid "fake oplocks" -msgstr "" - -#: param/loadparm.c:932 -msgid "kernel oplocks" -msgstr "" - -#: param/loadparm.c:933 -msgid "locking" -msgstr "" - -#: param/loadparm.c:935 -msgid "oplocks" -msgstr "" - -#: param/loadparm.c:936 -msgid "level2 oplocks" -msgstr "" - -#: param/loadparm.c:937 -msgid "oplock break wait time" -msgstr "" - -#: param/loadparm.c:938 -msgid "oplock contention limit" -msgstr "" - -#: param/loadparm.c:939 -msgid "posix locking" -msgstr "" - -#: param/loadparm.c:940 -msgid "strict locking" -msgstr "" - -#: param/loadparm.c:941 -msgid "share modes" -msgstr "" - -#: param/loadparm.c:944 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "LDAP Optionen" -#: param/loadparm.c:946 -msgid "ldap server" -msgstr "" - -#: param/loadparm.c:947 -msgid "ldap port" -msgstr "" - -#: param/loadparm.c:948 -msgid "ldap suffix" -msgstr "" - -#: param/loadparm.c:949 -msgid "ldap filter" -msgstr "" - -#: param/loadparm.c:950 -msgid "ldap root" -msgstr "" - -#: param/loadparm.c:951 -msgid "ldap root passwd" -msgstr "" - -#: param/loadparm.c:954 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Verschiedene Optionen" -#: param/loadparm.c:955 -msgid "add share command" -msgstr "" - -#: param/loadparm.c:956 -msgid "change share command" -msgstr "" - -#: param/loadparm.c:957 -msgid "delete share command" -msgstr "" - -#: param/loadparm.c:959 -msgid "config file" -msgstr "Konfigurationsdatei" - -#: param/loadparm.c:960 -msgid "preload" -msgstr "Lade im Voraus" - -#: param/loadparm.c:961 -msgid "auto services" -msgstr "" - -#: param/loadparm.c:962 -msgid "lock dir" -msgstr "Lock Verzeichnis" - -#: param/loadparm.c:963 -msgid "lock directory" -msgstr "Lock Verzeichnis" - -#: param/loadparm.c:965 -msgid "utmp directory" -msgstr "utmp Verzeichnis" - -#: param/loadparm.c:966 -msgid "wtmp directory" -msgstr "wtmp Verzeichnis" - -#: param/loadparm.c:967 -msgid "utmp" -msgstr "" - -#: param/loadparm.c:970 -msgid "default service" -msgstr "" - -#: param/loadparm.c:971 -msgid "default" -msgstr "" - -#: param/loadparm.c:972 -msgid "message command" -msgstr "Message Befehl" - -#: param/loadparm.c:973 -msgid "dfree command" -msgstr "dfree Befehl" - -#: param/loadparm.c:974 -msgid "remote announce" -msgstr "remote announce" - -#: param/loadparm.c:975 -msgid "remote browse sync" -msgstr "" - -#: param/loadparm.c:976 -msgid "socket address" -msgstr "" - -#: param/loadparm.c:977 -msgid "homedir map" -msgstr "" - -#: param/loadparm.c:978 -msgid "time offset" -msgstr "" - -#: param/loadparm.c:979 -msgid "NIS homedir" -msgstr "" - -#: param/loadparm.c:980 -msgid "-valid" -msgstr "" - -#: param/loadparm.c:982 -msgid "copy" -msgstr "Kopie" - -#: param/loadparm.c:983 -msgid "include" -msgstr "include" - -#: param/loadparm.c:984 -msgid "exec" -msgstr "" - -#: param/loadparm.c:985 -msgid "preexec" -msgstr "" - -#: param/loadparm.c:987 -msgid "preexec close" -msgstr "" - -#: param/loadparm.c:988 -msgid "postexec" -msgstr "" - -#: param/loadparm.c:989 -msgid "root preexec" -msgstr "" - -#: param/loadparm.c:990 -msgid "root preexec close" -msgstr "" - -#: param/loadparm.c:991 -msgid "root postexec" -msgstr "" - -#: param/loadparm.c:992 -msgid "available" -msgstr "Verfgbar" - -#: param/loadparm.c:993 -msgid "volume" -msgstr "" - -#: param/loadparm.c:994 -msgid "fstype" -msgstr "Typ Dateisystem" - -#: param/loadparm.c:995 -msgid "set directory" -msgstr "" - -#: param/loadparm.c:996 -msgid "source environment" -msgstr "" - -#: param/loadparm.c:997 -msgid "wide links" -msgstr "" - -#: param/loadparm.c:998 -msgid "follow symlinks" -msgstr "Folge symlinks" - -#: param/loadparm.c:999 -msgid "dont descend" -msgstr "nicht hinabsteigen" - -#: param/loadparm.c:1000 -msgid "magic script" -msgstr "" - -#: param/loadparm.c:1001 -msgid "magic output" -msgstr "" - -#: param/loadparm.c:1002 -msgid "delete readonly" -msgstr "Lsche nur-lesen" - -#: param/loadparm.c:1003 -msgid "dos filemode" -msgstr "" - -#: param/loadparm.c:1004 -msgid "dos filetimes" -msgstr "" - -#: param/loadparm.c:1005 -msgid "dos filetime resolution" -msgstr "" - -#: param/loadparm.c:1007 -msgid "fake directory create times" -msgstr "" - -#: param/loadparm.c:1008 -msgid "panic action" -msgstr "" - -#: param/loadparm.c:1009 -msgid "hide local users" -msgstr "verstecke lokale Benutzer" - -#: param/loadparm.c:1012 -msgid "VFS options" +#: ../param/loadparm.c:1138 +msgid "VFS module options" msgstr "VFS Optionen" -#: param/loadparm.c:1014 -msgid "vfs object" -msgstr "" - -#: param/loadparm.c:1015 -msgid "vfs options" -msgstr "" - -#: param/loadparm.c:1018 -msgid "msdfs root" -msgstr "" - -#: param/loadparm.c:1019 -msgid "host msdfs" -msgstr "" - -#: param/loadparm.c:1021 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Winbind Optionen" - -#: param/loadparm.c:1023 -msgid "winbind uid" -msgstr "" - -#: param/loadparm.c:1024 -msgid "winbind gid" -msgstr "" - -#: param/loadparm.c:1025 -msgid "template homedir" -msgstr "" - -#: param/loadparm.c:1026 -msgid "template shell" -msgstr "" - -#: param/loadparm.c:1027 -msgid "winbind separator" -msgstr "" - -#: param/loadparm.c:1028 -msgid "winbind cache time" -msgstr "" - -#: param/loadparm.c:1029 -msgid "winbind enum users" -msgstr "" - -#: param/loadparm.c:1030 -msgid "winbind enum groups" -msgstr "" diff --git a/source/po/en.msg b/source/po/en.msg index 2f78cb835e7..6a1fcb55bac 100644 --- a/source/po/en.msg +++ b/source/po/en.msg @@ -1,1707 +1,593 @@ # English messages for international release of SWAT. -# Copyright (C) 2001 Free Software Foundation, Inc. -# TAKAHASHI Motonobu <monyo@samba.org>, 2001. +# Copyright (C) 2003 TAKAHASHI Motonobu <monyo@samba.org> +# +# 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. +# msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"POT-Creation-Date: 2001-09-20 20:29+0900\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2000-02-08 12:48+09:00\n" -"Last-Translator: TAKAHASHI Motonobu <monyo@samba.gr.jp>\n" +"Last-Translator: TAKAHASHI Motonobu <monyo@samba.org>\n" "Language-Team: (Samba Team) <samba-technical@samba.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=US-ASCII\n" "Content-Transfer-Encoding: \n" -#: web/swat.c:120 +#: ../web/swat.c:117 #, c-format -msgid "ERROR: Can't open %s\n" +msgid "ERROR: Can't open %s" msgstr "" -#. -#. str = stripspace(parm->label); -#. strlower (str); //monyo -#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A> %s</td><td>", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 +#: ../web/swat.c:200 msgid "Help" msgstr "" -#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263 -#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "" -#: web/swat.c:502 +#: ../web/swat.c:408 #, c-format -msgid "Logged in as <b>%s</b><p>\n" -msgstr "" - -#: web/swat.c:505 -msgid "Home" -msgstr "" - -#: web/swat.c:507 -msgid "Globals" -msgstr "" - -#: web/swat.c:508 -msgid "Shares" -msgstr "" - -#: web/swat.c:509 -msgid "Printers" -msgstr "" - -#: web/swat.c:512 -msgid "Status" -msgstr "" - -#: web/swat.c:513 -msgid "View Config" -msgstr "" - -#: web/swat.c:515 -msgid "Password Management" +msgid "failed to open %s for writing" msgstr "" -#: web/swat.c:539 -msgid "Current Config" -msgstr "" - -#: web/swat.c:543 -msgid "Normal View" -msgstr "" - -#: web/swat.c:545 -msgid "Full View" -msgstr "" - -#: web/swat.c:561 -msgid "Global Variables" -msgstr "" - -#: web/swat.c:575 web/swat.c:671 web/swat.c:1014 -msgid "Commit Changes" -msgstr "" - -#: web/swat.c:579 web/swat.c:674 web/swat.c:1016 -msgid "Reset Values" -msgstr "" - -#: web/swat.c:581 web/swat.c:676 web/swat.c:1018 -msgid "Advanced View" -msgstr "" - -#: web/swat.c:583 web/swat.c:678 web/swat.c:1020 -msgid "Basic View" -msgstr "" - -#: web/swat.c:613 -msgid "Share Parameters" -msgstr "" - -#: web/swat.c:642 -msgid "Choose Share" -msgstr "" - -#: web/swat.c:656 -msgid "Delete Share" -msgstr "" - -#: web/swat.c:663 -msgid "Create Share" -msgstr "" - -#: web/swat.c:708 -msgid "password change in demo mode rejected\n" -msgstr "" - -#: web/swat.c:747 -msgid " Must specify \"User Name\" \n" -msgstr "" - -#: web/swat.c:763 -msgid " Must specify \"Old Password\" \n" -msgstr "" - -#: web/swat.c:769 -msgid " Must specify \"Remote Machine\" \n" -msgstr "" - -#: web/swat.c:776 -msgid " Must specify \"New, and Re-typed Passwords\" \n" -msgstr "" - -#: web/swat.c:782 -msgid " Re-typed password didn't match new password\n" -msgstr "" - -#: web/swat.c:812 +#: ../web/swat.c:431 #, c-format -msgid " The passwd for '%s' has been changed. \n" +msgid "Can't reload %s" msgstr "" -#: web/swat.c:814 +#: ../web/swat.c:501 #, c-format -msgid " The passwd for '%s' has NOT been changed. \n" -msgstr "" - -#: web/swat.c:838 -msgid "Server Password Management" -msgstr "" - -#. -#. * Create all the dialog boxes for data collection -#. -#: web/swat.c:847 web/swat.c:894 -msgid " User Name : " -msgstr "" - -#: web/swat.c:850 web/swat.c:896 -msgid " Old Password : " +msgid "Logged in as <b>%s</b>" msgstr "" -#: web/swat.c:853 web/swat.c:898 -msgid " New Password : " -msgstr "" - -#: web/swat.c:855 web/swat.c:900 -msgid " Re-type New Password : " -msgstr "" - -#: web/swat.c:863 web/swat.c:911 -msgid "Change Password" -msgstr "" - -#: web/swat.c:866 -msgid "Add New User" -msgstr "" - -#: web/swat.c:868 -msgid "Delete User" -msgstr "" - -#: web/swat.c:870 -msgid "Disable User" -msgstr "" - -#: web/swat.c:872 -msgid "Enable User" -msgstr "" - -#: web/swat.c:885 -msgid "Client/Server Password Management" -msgstr "" - -#: web/swat.c:902 -msgid " Remote Machine : " -msgstr "" - -#: web/swat.c:940 -msgid "Printer Parameters" -msgstr "" - -#: web/swat.c:942 -msgid "Important Note:" -msgstr "" - -#: web/swat.c:943 -msgid "Printer names marked with [*] in the Choose Printer drop-down box " -msgstr "" - -#: web/swat.c:944 -msgid "are autoloaded printers from " -msgstr "" - -#: web/swat.c:945 -msgid "Printcap Name" -msgstr "" - -#: web/swat.c:946 -msgid "Attempting to delete these printers from SWAT will have no effect.\n" -msgstr "" - -#: web/swat.c:980 -msgid "Choose Printer" -msgstr "" - -#: web/swat.c:999 -msgid "Delete Printer" -msgstr "" - -#: web/swat.c:1006 -msgid "Create Printer" -msgstr "" - -#: web/statuspage.c:40 -msgid "DENY_NONE" -msgstr "" - -#: web/statuspage.c:41 -msgid "DENY_ALL " -msgstr "" - -#: web/statuspage.c:42 -msgid "DENY_DOS " -msgstr "" - -#: web/statuspage.c:43 -msgid "DENY_READ " -msgstr "" - -#: web/statuspage.c:44 -msgid "DENY_WRITE " -msgstr "" - -#: web/statuspage.c:50 -msgid "RDONLY " -msgstr "" - -#: web/statuspage.c:51 -msgid "WRONLY " -msgstr "" - -#: web/statuspage.c:52 -msgid "RDWR " -msgstr "" - -#: web/statuspage.c:60 -msgid "EXCLUSIVE+BATCH " -msgstr "" - -#: web/statuspage.c:62 -msgid "EXCLUSIVE " -msgstr "" - -#: web/statuspage.c:64 -msgid "BATCH " -msgstr "" - -#: web/statuspage.c:66 -msgid "LEVEL_II " -msgstr "" - -#: web/statuspage.c:68 -msgid "NONE " -msgstr "" - -#: web/statuspage.c:195 -msgid "Server Status" -msgstr "" - -#: web/statuspage.c:200 -msgid "Auto Refresh" -msgstr "" - -#: web/statuspage.c:201 web/statuspage.c:206 -msgid "Refresh Interval: " -msgstr "" - -#: web/statuspage.c:205 -msgid "Stop Refreshing" -msgstr "" - -#: web/statuspage.c:220 -msgid "version:" -msgstr "" - -#: web/statuspage.c:223 -msgid "smbd:" -msgstr "" - -#: web/statuspage.c:223 web/statuspage.c:235 -msgid "running" -msgstr "" - -#: web/statuspage.c:223 web/statuspage.c:235 -msgid "not running" -msgstr "" - -#: web/statuspage.c:226 -msgid "Stop smbd" -msgstr "" - -#: web/statuspage.c:228 -msgid "Start smbd" -msgstr "" - -#: web/statuspage.c:230 -msgid "Restart smbd" +#: ../web/swat.c:505 +msgid "Home" msgstr "" -#: web/statuspage.c:235 -msgid "nmbd:" +#: ../web/swat.c:507 +msgid "Globals" msgstr "" -#: web/statuspage.c:238 -msgid "Stop nmbd" +#: ../web/swat.c:508 +msgid "Shares" msgstr "" -#: web/statuspage.c:240 -msgid "Start nmbd" +#: ../web/swat.c:509 +msgid "Printers" msgstr "" -#: web/statuspage.c:242 -msgid "Restart nmbd" +#: ../web/swat.c:510 +msgid "Wizard" msgstr "" -#: web/statuspage.c:249 -msgid "Active Connections" +#: ../web/swat.c:513 +msgid "Status" msgstr "" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 -msgid "PID" +#: ../web/swat.c:514 +msgid "View Config" msgstr "" -#: web/statuspage.c:251 web/statuspage.c:264 -msgid "Client" +#: ../web/swat.c:516 +msgid "Password Management" msgstr "" -#: web/statuspage.c:251 -msgid "IP address" +#: ../web/swat.c:526 +msgid "Current View Is" msgstr "" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 -msgid "Date" +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" msgstr "" -#: web/statuspage.c:253 -msgid "Kill" +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" msgstr "" -#: web/statuspage.c:261 -msgid "Active Shares" +#: ../web/swat.c:529 +msgid "Change View To" msgstr "" -#: web/statuspage.c:264 -msgid "Share" +#: ../web/swat.c:554 +msgid "Current Config" msgstr "" -#: web/statuspage.c:264 -msgid "User" +#: ../web/swat.c:558 +msgid "Normal View" msgstr "" -#: web/statuspage.c:264 -msgid "Group" +#: ../web/swat.c:560 +msgid "Full View" msgstr "" -#: web/statuspage.c:270 -msgid "Open Files" +#. Here we first set and commit all the parameters that were selected +#. in the previous screen. +#: ../web/swat.c:579 +msgid "Wizard Parameter Edit Page" msgstr "" -#: web/statuspage.c:272 -msgid "Sharing" +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" msgstr "" -#: web/statuspage.c:272 -msgid "R/W" +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" msgstr "" -#: web/statuspage.c:272 -msgid "Oplock" +#: ../web/swat.c:720 +msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." msgstr "" -#: web/statuspage.c:272 -msgid "File" +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." msgstr "" -#: param/loadparm.c:641 -msgid "Base Options" +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" msgstr "" -#: param/loadparm.c:643 -msgid "dos charset" +#: ../web/swat.c:725 +msgid "Commit" msgstr "" -#: param/loadparm.c:644 -msgid "unix charset" +#: ../web/swat.c:726 +msgid "Edit Parameter Values" msgstr "" -#: param/loadparm.c:645 -msgid "display charset" +#: ../web/swat.c:732 +msgid "Server Type" msgstr "" -#: param/loadparm.c:646 -msgid "comment" +#: ../web/swat.c:733 +msgid "Stand Alone" msgstr "" -#: param/loadparm.c:647 -msgid "path" +#: ../web/swat.c:734 +msgid "Domain Member" msgstr "" -#: param/loadparm.c:648 -msgid "directory" +#: ../web/swat.c:735 +msgid "Domain Controller" msgstr "" -#: param/loadparm.c:649 -msgid "workgroup" +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" msgstr "" -#: param/loadparm.c:650 -msgid "netbios name" +#: ../web/swat.c:740 +msgid "Configure WINS As" msgstr "" -#: param/loadparm.c:651 -msgid "netbios aliases" +#: ../web/swat.c:741 +msgid "Not Used" msgstr "" -#: param/loadparm.c:652 -msgid "netbios scope" +#: ../web/swat.c:742 +msgid "Server for client use" msgstr "" -#: param/loadparm.c:653 -msgid "server string" +#: ../web/swat.c:743 +msgid "Client of another WINS server" msgstr "" -#: param/loadparm.c:654 -msgid "interfaces" +#: ../web/swat.c:745 +msgid "Remote WINS Server" msgstr "" -#: param/loadparm.c:655 -msgid "bind interfaces only" +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" msgstr "" -#: param/loadparm.c:657 -msgid "Security Options" +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." msgstr "" -#: param/loadparm.c:659 -msgid "security" +#: ../web/swat.c:759 +msgid "Expose Home Directories" msgstr "" -#: param/loadparm.c:660 -msgid "encrypt passwords" +#: ../web/swat.c:774 +msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." msgstr "" -#: param/loadparm.c:661 -msgid "update encrypted" +#: ../web/swat.c:787 +msgid "Global Parameters" msgstr "" -#: param/loadparm.c:662 -msgid "allow trusted domains" +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 +msgid "Commit Changes" msgstr "" -#: param/loadparm.c:663 -msgid "alternate permissions" +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 +msgid "Reset Values" msgstr "" -#: param/loadparm.c:664 -msgid "hosts equiv" +#: ../web/swat.c:844 +msgid "Share Parameters" msgstr "" -#: param/loadparm.c:665 -msgid "min passwd length" +#: ../web/swat.c:887 +msgid "Choose Share" msgstr "" -#: param/loadparm.c:666 -msgid "min password length" +#: ../web/swat.c:901 +msgid "Delete Share" msgstr "" -#: param/loadparm.c:667 -msgid "map to guest" +#: ../web/swat.c:908 +msgid "Create Share" msgstr "" -#: param/loadparm.c:668 -msgid "null passwords" +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" msgstr "" -#: param/loadparm.c:669 -msgid "obey pam restrictions" +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." msgstr "" -#: param/loadparm.c:670 -msgid "password server" +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " msgstr "" -#: param/loadparm.c:671 -msgid "smb passwd file" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " msgstr "" -#: param/loadparm.c:672 -msgid "private dir" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " msgstr "" -#: param/loadparm.c:673 -msgid "passdb module path" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " msgstr "" -#: param/loadparm.c:674 -msgid "root directory" +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " msgstr "" -#: param/loadparm.c:675 -msgid "root dir" +#: ../web/swat.c:1048 +#, c-format +msgid " The passwd for '%s' has been changed." msgstr "" -#: param/loadparm.c:676 -msgid "root" +#: ../web/swat.c:1051 +#, c-format +msgid " The passwd for '%s' has NOT been changed." msgstr "" -#: param/loadparm.c:678 -msgid "pam password change" +#: ../web/swat.c:1076 +msgid "Server Password Management" msgstr "" -#: param/loadparm.c:679 -msgid "passwd program" +#. +#. * Create all the dialog boxes for data collection +#. +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" msgstr "" -#: param/loadparm.c:680 -msgid "passwd chat" +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" msgstr "" -#: param/loadparm.c:681 -msgid "passwd chat debug" +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" msgstr "" -#: param/loadparm.c:682 -msgid "username map" +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" msgstr "" -#: param/loadparm.c:683 -msgid "password level" +#: ../web/swat.c:1101 ../web/swat.c:1149 +msgid "Change Password" msgstr "" -#: param/loadparm.c:684 -msgid "username level" +#: ../web/swat.c:1104 +msgid "Add New User" msgstr "" -#: param/loadparm.c:685 -msgid "unix password sync" +#: ../web/swat.c:1106 +msgid "Delete User" msgstr "" -#: param/loadparm.c:686 -msgid "restrict anonymous" +#: ../web/swat.c:1108 +msgid "Disable User" msgstr "" -#: param/loadparm.c:687 -msgid "lanman auth" +#: ../web/swat.c:1110 +msgid "Enable User" msgstr "" -#: param/loadparm.c:688 -msgid "ntlm auth" +#: ../web/swat.c:1123 +msgid "Client/Server Password Management" msgstr "" -#: param/loadparm.c:689 -msgid "plaintext to smbpasswd" +#: ../web/swat.c:1140 +msgid "Remote Machine" msgstr "" -#: param/loadparm.c:690 -msgid "use rhosts" +#: ../web/swat.c:1179 +msgid "Printer Parameters" msgstr "" -#: param/loadparm.c:692 -msgid "username" +#: ../web/swat.c:1181 +msgid "Important Note:" msgstr "" -#: param/loadparm.c:693 -msgid "user" +#: ../web/swat.c:1182 +msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "" -#: param/loadparm.c:694 -msgid "users" +#: ../web/swat.c:1183 +msgid "are autoloaded printers from " msgstr "" -#: param/loadparm.c:696 -msgid "guest account" +#: ../web/swat.c:1184 +msgid "Printcap Name" msgstr "" -#: param/loadparm.c:697 -msgid "invalid users" +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "" -#: param/loadparm.c:698 -msgid "valid users" +#: ../web/swat.c:1231 +msgid "Choose Printer" msgstr "" -#: param/loadparm.c:699 -msgid "admin users" +#: ../web/swat.c:1250 +msgid "Delete Printer" msgstr "" -#: param/loadparm.c:700 -msgid "read list" +#: ../web/swat.c:1257 +msgid "Create Printer" msgstr "" -#: param/loadparm.c:701 -msgid "write list" +#: ../web/statuspage.c:123 +msgid "RDONLY " msgstr "" -#: param/loadparm.c:702 -msgid "printer admin" +#: ../web/statuspage.c:124 +msgid "WRONLY " msgstr "" -#: param/loadparm.c:703 -msgid "force user" +#: ../web/statuspage.c:125 +msgid "RDWR " msgstr "" -#: param/loadparm.c:704 -msgid "force group" +#: ../web/statuspage.c:309 +msgid "Server Status" msgstr "" -#: param/loadparm.c:705 -msgid "group" +#: ../web/statuspage.c:314 +msgid "Auto Refresh" msgstr "" -#: param/loadparm.c:707 -msgid "read only" +#: ../web/statuspage.c:315 ../web/statuspage.c:320 +msgid "Refresh Interval: " msgstr "" -#: param/loadparm.c:708 -msgid "write ok" +#: ../web/statuspage.c:319 +msgid "Stop Refreshing" msgstr "" -#: param/loadparm.c:709 -msgid "writeable" +#: ../web/statuspage.c:334 +msgid "version:" msgstr "" -#: param/loadparm.c:710 -msgid "writable" +#: ../web/statuspage.c:337 +msgid "smbd:" msgstr "" -#: param/loadparm.c:712 -msgid "create mask" +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 +msgid "running" msgstr "" -#: param/loadparm.c:713 -msgid "create mode" +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 +msgid "not running" msgstr "" -#: param/loadparm.c:714 -msgid "force create mode" +#: ../web/statuspage.c:341 +msgid "Stop smbd" msgstr "" -#: param/loadparm.c:715 -msgid "security mask" +#: ../web/statuspage.c:343 +msgid "Start smbd" msgstr "" -#: param/loadparm.c:716 -msgid "force security mode" +#: ../web/statuspage.c:345 +msgid "Restart smbd" msgstr "" -#: param/loadparm.c:717 -msgid "directory mask" +#: ../web/statuspage.c:350 +msgid "nmbd:" msgstr "" -#: param/loadparm.c:718 -msgid "directory mode" +#: ../web/statuspage.c:354 +msgid "Stop nmbd" msgstr "" -#: param/loadparm.c:719 -msgid "force directory mode" +#: ../web/statuspage.c:356 +msgid "Start nmbd" msgstr "" -#: param/loadparm.c:720 -msgid "directory security mask" +#: ../web/statuspage.c:358 +msgid "Restart nmbd" msgstr "" -#: param/loadparm.c:721 -msgid "force directory security mode" +#: ../web/statuspage.c:364 +msgid "winbindd:" msgstr "" -#: param/loadparm.c:722 -msgid "inherit permissions" +#: ../web/statuspage.c:368 +msgid "Stop winbindd" msgstr "" -#: param/loadparm.c:723 -msgid "guest only" +#: ../web/statuspage.c:370 +msgid "Start winbindd" msgstr "" -#: param/loadparm.c:724 -msgid "only guest" +#: ../web/statuspage.c:372 +msgid "Restart winbindd" msgstr "" -#: param/loadparm.c:726 -msgid "guest ok" +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" msgstr "" -#: param/loadparm.c:727 -msgid "public" +#: ../web/statuspage.c:382 +msgid "Restart All" msgstr "" -#: param/loadparm.c:729 -msgid "only user" +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" msgstr "" -#: param/loadparm.c:730 -msgid "hosts allow" +#: ../web/statuspage.c:393 +msgid "Active Connections" msgstr "" -#: param/loadparm.c:731 -msgid "allow hosts" +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 +msgid "PID" msgstr "" -#: param/loadparm.c:732 -msgid "hosts deny" +#: ../web/statuspage.c:395 ../web/statuspage.c:408 +msgid "Client" msgstr "" -#: param/loadparm.c:733 -msgid "deny hosts" +#: ../web/statuspage.c:395 +msgid "IP address" msgstr "" -#: param/loadparm.c:736 -msgid "Secure Socket Layer Options" +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 +msgid "Date" msgstr "" -#: param/loadparm.c:737 -msgid "ssl" +#: ../web/statuspage.c:397 +msgid "Kill" msgstr "" -#: param/loadparm.c:739 -msgid "ssl hosts" +#: ../web/statuspage.c:405 +msgid "Active Shares" msgstr "" -#: param/loadparm.c:740 -msgid "ssl hosts resign" +#: ../web/statuspage.c:408 +msgid "Share" msgstr "" -#: param/loadparm.c:741 -msgid "ssl CA certDir" +#: ../web/statuspage.c:408 +msgid "User" msgstr "" -#: param/loadparm.c:742 -msgid "ssl CA certFile" +#: ../web/statuspage.c:408 +msgid "Group" msgstr "" -#: param/loadparm.c:743 -msgid "ssl server cert" +#: ../web/statuspage.c:414 +msgid "Open Files" msgstr "" -#: param/loadparm.c:744 -msgid "ssl server key" +#: ../web/statuspage.c:416 +msgid "Sharing" msgstr "" -#: param/loadparm.c:745 -msgid "ssl client cert" +#: ../web/statuspage.c:416 +msgid "R/W" msgstr "" -#: param/loadparm.c:746 -msgid "ssl client key" +#: ../web/statuspage.c:416 +msgid "Oplock" msgstr "" -#: param/loadparm.c:747 -msgid "ssl require clientcert" +#: ../web/statuspage.c:416 +msgid "File" msgstr "" -#: param/loadparm.c:748 -msgid "ssl require servercert" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" msgstr "" -#: param/loadparm.c:749 -msgid "ssl ciphers" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" msgstr "" -#: param/loadparm.c:750 -msgid "ssl version" +#: ../param/loadparm.c:755 +msgid "Base Options" msgstr "" -#: param/loadparm.c:751 -msgid "ssl compatibility" +#: ../param/loadparm.c:775 +msgid "Security Options" msgstr "" -#: param/loadparm.c:754 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "" -#: param/loadparm.c:755 -msgid "log level" -msgstr "" - -#: param/loadparm.c:756 -msgid "debuglevel" -msgstr "" - -#: param/loadparm.c:757 -msgid "syslog" -msgstr "" - -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "" - -#: param/loadparm.c:759 -msgid "log file" -msgstr "" - -#: param/loadparm.c:761 -msgid "max log size" -msgstr "" - -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "" - -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "" - -#: param/loadparm.c:764 -msgid "debug hires timestamp" -msgstr "" - -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "" - -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "" - -#: param/loadparm.c:768 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "" -#: param/loadparm.c:770 -msgid "protocol" -msgstr "" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "" - -#: param/loadparm.c:772 -msgid "max protocol" -msgstr "" - -#: param/loadparm.c:773 -msgid "min protocol" -msgstr "" - -#: param/loadparm.c:774 -msgid "unicode" -msgstr "" - -#: param/loadparm.c:775 -msgid "read bmpx" -msgstr "" - -#: param/loadparm.c:776 -msgid "read raw" -msgstr "" - -#: param/loadparm.c:777 -msgid "write raw" -msgstr "" - -#: param/loadparm.c:779 -msgid "nt smb support" -msgstr "" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "" - -#: param/loadparm.c:782 -msgid "announce version" -msgstr "" - -#: param/loadparm.c:783 -msgid "announce as" -msgstr "" - -#: param/loadparm.c:784 -msgid "max mux" -msgstr "" - -#: param/loadparm.c:785 -msgid "max xmit" -msgstr "" - -#: param/loadparm.c:787 -msgid "name resolve order" -msgstr "" - -#: param/loadparm.c:788 -msgid "max packet" -msgstr "" - -#: param/loadparm.c:789 -msgid "packet size" -msgstr "" - -#: param/loadparm.c:790 -msgid "max ttl" -msgstr "" - -#: param/loadparm.c:791 -msgid "max wins ttl" -msgstr "" - -#: param/loadparm.c:792 -msgid "min wins ttl" -msgstr "" - -#: param/loadparm.c:793 -msgid "time server" -msgstr "" - -#: param/loadparm.c:795 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "" -#: param/loadparm.c:797 -msgid "change notify timeout" -msgstr "" - -#: param/loadparm.c:798 -msgid "deadtime" -msgstr "" - -#: param/loadparm.c:799 -msgid "getwd cache" -msgstr "" - -#: param/loadparm.c:800 -msgid "keepalive" -msgstr "" - -#: param/loadparm.c:802 -msgid "lpq cache time" -msgstr "" - -#: param/loadparm.c:803 -msgid "max smbd processes" -msgstr "" - -#: param/loadparm.c:804 -msgid "max connections" -msgstr "" - -#: param/loadparm.c:805 -msgid "paranoid server security" -msgstr "" - -#: param/loadparm.c:806 -msgid "max disk size" -msgstr "" - -#: param/loadparm.c:807 -msgid "max open files" -msgstr "" - -#: param/loadparm.c:808 -msgid "min print space" -msgstr "" - -#: param/loadparm.c:809 -msgid "read size" -msgstr "" - -#: param/loadparm.c:811 -msgid "socket options" -msgstr "" - -#: param/loadparm.c:812 -msgid "stat cache size" -msgstr "" - -#: param/loadparm.c:813 -msgid "strict allocate" -msgstr "" - -#: param/loadparm.c:814 -msgid "strict sync" -msgstr "" - -#: param/loadparm.c:815 -msgid "sync always" -msgstr "" - -#: param/loadparm.c:816 -msgid "use mmap" -msgstr "" - -#: param/loadparm.c:817 -msgid "hostname lookups" -msgstr "" - -#: param/loadparm.c:818 -msgid "write cache size" -msgstr "" - -#: param/loadparm.c:820 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "" -#: param/loadparm.c:822 -msgid "total print jobs" -msgstr "" - -#: param/loadparm.c:823 -msgid "max print jobs" -msgstr "" - -#: param/loadparm.c:824 -msgid "load printers" -msgstr "" - -#: param/loadparm.c:825 -msgid "printcap name" -msgstr "" - -#: param/loadparm.c:826 -msgid "printcap" -msgstr "" - -#: param/loadparm.c:827 -msgid "printable" -msgstr "" - -#: param/loadparm.c:828 -msgid "print ok" -msgstr "" - -#: param/loadparm.c:829 -msgid "postscript" -msgstr "" - -#: param/loadparm.c:830 -msgid "printing" -msgstr "" - -#: param/loadparm.c:831 -msgid "print command" -msgstr "" - -#: param/loadparm.c:832 -msgid "disable spoolss" -msgstr "" - -#: param/loadparm.c:833 -msgid "lpq command" -msgstr "" - -#: param/loadparm.c:834 -msgid "lprm command" -msgstr "" - -#: param/loadparm.c:835 -msgid "lppause command" -msgstr "" - -#: param/loadparm.c:836 -msgid "lpresume command" -msgstr "" - -#: param/loadparm.c:837 -msgid "queuepause command" -msgstr "" - -#: param/loadparm.c:838 -msgid "queueresume command" -msgstr "" - -#: param/loadparm.c:840 -msgid "enumports command" -msgstr "" - -#: param/loadparm.c:841 -msgid "addprinter command" -msgstr "" - -#: param/loadparm.c:842 -msgid "deleteprinter command" -msgstr "" - -#: param/loadparm.c:843 -msgid "show add printer wizard" -msgstr "" - -#: param/loadparm.c:844 -msgid "os2 driver map" -msgstr "" - -#: param/loadparm.c:846 -msgid "printer name" -msgstr "" - -#: param/loadparm.c:847 -msgid "printer" -msgstr "" - -#: param/loadparm.c:848 -msgid "use client driver" -msgstr "" - -#: param/loadparm.c:849 -msgid "printer driver" -msgstr "" - -#: param/loadparm.c:850 -msgid "printer driver file" -msgstr "" - -#: param/loadparm.c:851 -msgid "printer driver location" -msgstr "" - -#: param/loadparm.c:853 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "" -#: param/loadparm.c:854 -msgid "strip dot" -msgstr "" - -#: param/loadparm.c:856 -msgid "mangled stack" -msgstr "" - -#: param/loadparm.c:857 -msgid "default case" -msgstr "" - -#: param/loadparm.c:858 -msgid "case sensitive" -msgstr "" - -#: param/loadparm.c:859 -msgid "casesignames" -msgstr "" - -#: param/loadparm.c:860 -msgid "preserve case" -msgstr "" - -#: param/loadparm.c:861 -msgid "short preserve case" -msgstr "" - -#: param/loadparm.c:862 -msgid "mangle case" -msgstr "" - -#: param/loadparm.c:863 -msgid "mangling char" -msgstr "" - -#: param/loadparm.c:864 -msgid "hide dot files" -msgstr "" - -#: param/loadparm.c:865 -msgid "hide unreadable" -msgstr "" - -#: param/loadparm.c:866 -msgid "delete veto files" -msgstr "" - -#: param/loadparm.c:867 -msgid "veto files" -msgstr "" - -#: param/loadparm.c:868 -msgid "hide files" -msgstr "" - -#: param/loadparm.c:869 -msgid "veto oplock files" -msgstr "" - -#: param/loadparm.c:870 -msgid "map system" -msgstr "" - -#: param/loadparm.c:871 -msgid "map hidden" -msgstr "" - -#: param/loadparm.c:872 -msgid "map archive" -msgstr "" - -#: param/loadparm.c:873 -msgid "mangled names" -msgstr "" - -#: param/loadparm.c:874 -msgid "mangled map" -msgstr "" - -#: param/loadparm.c:875 -msgid "stat cache" -msgstr "" - -#: param/loadparm.c:877 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "" -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "" - -#: param/loadparm.c:888 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "" -#: param/loadparm.c:890 -msgid "add user script" -msgstr "" - -#: param/loadparm.c:891 -msgid "delete user script" -msgstr "" - -#: param/loadparm.c:892 -msgid "add group script" -msgstr "" - -#: param/loadparm.c:893 -msgid "delete group script" -msgstr "" - -#: param/loadparm.c:894 -msgid "add user to group script" -msgstr "" - -#: param/loadparm.c:895 -msgid "delete user from group script" -msgstr "" - -#: param/loadparm.c:896 -msgid "add machine script" -msgstr "" - -#: param/loadparm.c:897 -msgid "shutdown script" -msgstr "" - -#: param/loadparm.c:898 -msgid "abort shutdown script" -msgstr "" - -#: param/loadparm.c:900 -msgid "logon script" -msgstr "" - -#: param/loadparm.c:901 -msgid "logon path" -msgstr "" - -#: param/loadparm.c:902 -msgid "logon drive" -msgstr "" - -#: param/loadparm.c:903 -msgid "logon home" -msgstr "" - -#: param/loadparm.c:904 -msgid "domain logons" -msgstr "" - -#: param/loadparm.c:906 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "" -#: param/loadparm.c:908 -msgid "os level" -msgstr "" - -#: param/loadparm.c:909 -msgid "lm announce" -msgstr "" - -#: param/loadparm.c:910 -msgid "lm interval" -msgstr "" - -#: param/loadparm.c:911 -msgid "preferred master" -msgstr "" - -#: param/loadparm.c:912 -msgid "prefered master" -msgstr "" - -#: param/loadparm.c:913 -msgid "local master" -msgstr "" - -#: param/loadparm.c:914 -msgid "domain master" -msgstr "" - -#: param/loadparm.c:915 -msgid "browse list" -msgstr "" - -#: param/loadparm.c:916 -msgid "browseable" -msgstr "" - -#: param/loadparm.c:917 -msgid "browsable" -msgstr "" - -#: param/loadparm.c:918 -msgid "enhanced browsing" -msgstr "" - -#: param/loadparm.c:920 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "" -#: param/loadparm.c:921 -msgid "dns proxy" -msgstr "" - -#: param/loadparm.c:922 -msgid "wins proxy" -msgstr "" - -#: param/loadparm.c:924 -msgid "wins server" -msgstr "" - -#: param/loadparm.c:925 -msgid "wins support" -msgstr "" - -#: param/loadparm.c:926 -msgid "wins hook" -msgstr "" - -#: param/loadparm.c:928 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "" -#: param/loadparm.c:930 -msgid "blocking locks" -msgstr "" - -#: param/loadparm.c:931 -msgid "fake oplocks" -msgstr "" - -#: param/loadparm.c:932 -msgid "kernel oplocks" -msgstr "" - -#: param/loadparm.c:933 -msgid "locking" -msgstr "" - -#: param/loadparm.c:935 -msgid "oplocks" -msgstr "" - -#: param/loadparm.c:936 -msgid "level2 oplocks" -msgstr "" - -#: param/loadparm.c:937 -msgid "oplock break wait time" -msgstr "" - -#: param/loadparm.c:938 -msgid "oplock contention limit" -msgstr "" - -#: param/loadparm.c:939 -msgid "posix locking" -msgstr "" - -#: param/loadparm.c:940 -msgid "strict locking" -msgstr "" - -#: param/loadparm.c:941 -msgid "share modes" -msgstr "" - -#: param/loadparm.c:944 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "" -#: param/loadparm.c:946 -msgid "ldap server" -msgstr "" - -#: param/loadparm.c:947 -msgid "ldap port" -msgstr "" - -#: param/loadparm.c:948 -msgid "ldap suffix" -msgstr "" - -#: param/loadparm.c:949 -msgid "ldap filter" -msgstr "" - -#: param/loadparm.c:950 -msgid "ldap root" -msgstr "" - -#: param/loadparm.c:951 -msgid "ldap root passwd" -msgstr "" - -#: param/loadparm.c:954 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "" -#: param/loadparm.c:955 -msgid "add share command" -msgstr "" - -#: param/loadparm.c:956 -msgid "change share command" -msgstr "" - -#: param/loadparm.c:957 -msgid "delete share command" -msgstr "" - -#: param/loadparm.c:959 -msgid "config file" -msgstr "" - -#: param/loadparm.c:960 -msgid "preload" -msgstr "" - -#: param/loadparm.c:961 -msgid "auto services" -msgstr "" - -#: param/loadparm.c:962 -msgid "lock dir" -msgstr "" - -#: param/loadparm.c:963 -msgid "lock directory" -msgstr "" - -#: param/loadparm.c:965 -msgid "utmp directory" -msgstr "" - -#: param/loadparm.c:966 -msgid "wtmp directory" -msgstr "" - -#: param/loadparm.c:967 -msgid "utmp" -msgstr "" - -#: param/loadparm.c:970 -msgid "default service" -msgstr "" - -#: param/loadparm.c:971 -msgid "default" -msgstr "" - -#: param/loadparm.c:972 -msgid "message command" -msgstr "" - -#: param/loadparm.c:973 -msgid "dfree command" -msgstr "" - -#: param/loadparm.c:974 -msgid "remote announce" -msgstr "" - -#: param/loadparm.c:975 -msgid "remote browse sync" +#: ../param/loadparm.c:1138 +msgid "VFS module options" msgstr "" -#: param/loadparm.c:976 -msgid "socket address" -msgstr "" - -#: param/loadparm.c:977 -msgid "homedir map" -msgstr "" - -#: param/loadparm.c:978 -msgid "time offset" -msgstr "" - -#: param/loadparm.c:979 -msgid "NIS homedir" -msgstr "" - -#: param/loadparm.c:980 -msgid "-valid" -msgstr "" - -#: param/loadparm.c:982 -msgid "copy" -msgstr "" - -#: param/loadparm.c:983 -msgid "include" -msgstr "" - -#: param/loadparm.c:984 -msgid "exec" -msgstr "" - -#: param/loadparm.c:985 -msgid "preexec" -msgstr "" - -#: param/loadparm.c:987 -msgid "preexec close" -msgstr "" - -#: param/loadparm.c:988 -msgid "postexec" -msgstr "" - -#: param/loadparm.c:989 -msgid "root preexec" -msgstr "" - -#: param/loadparm.c:990 -msgid "root preexec close" -msgstr "" - -#: param/loadparm.c:991 -msgid "root postexec" -msgstr "" - -#: param/loadparm.c:992 -msgid "available" -msgstr "" - -#: param/loadparm.c:993 -msgid "volume" -msgstr "" - -#: param/loadparm.c:994 -msgid "fstype" -msgstr "" - -#: param/loadparm.c:995 -msgid "set directory" -msgstr "" - -#: param/loadparm.c:996 -msgid "source environment" -msgstr "" - -#: param/loadparm.c:997 -msgid "wide links" -msgstr "" - -#: param/loadparm.c:998 -msgid "follow symlinks" -msgstr "" - -#: param/loadparm.c:999 -msgid "dont descend" -msgstr "" - -#: param/loadparm.c:1000 -msgid "magic script" -msgstr "" - -#: param/loadparm.c:1001 -msgid "magic output" -msgstr "" - -#: param/loadparm.c:1002 -msgid "delete readonly" -msgstr "" - -#: param/loadparm.c:1003 -msgid "dos filemode" -msgstr "" - -#: param/loadparm.c:1004 -msgid "dos filetimes" -msgstr "" - -#: param/loadparm.c:1005 -msgid "dos filetime resolution" -msgstr "" - -#: param/loadparm.c:1007 -msgid "fake directory create times" -msgstr "" - -#: param/loadparm.c:1008 -msgid "panic action" -msgstr "" - -#: param/loadparm.c:1009 -msgid "hide local users" -msgstr "" - -#: param/loadparm.c:1012 -msgid "VFS options" -msgstr "" - -#: param/loadparm.c:1014 -msgid "vfs object" -msgstr "" - -#: param/loadparm.c:1015 -msgid "vfs options" -msgstr "" - -#: param/loadparm.c:1018 -msgid "msdfs root" -msgstr "" - -#: param/loadparm.c:1019 -msgid "host msdfs" -msgstr "" - -#: param/loadparm.c:1021 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "" - -#: param/loadparm.c:1023 -msgid "winbind uid" -msgstr "" - -#: param/loadparm.c:1024 -msgid "winbind gid" -msgstr "" - -#: param/loadparm.c:1025 -msgid "template homedir" -msgstr "" - -#: param/loadparm.c:1026 -msgid "template shell" -msgstr "" - -#: param/loadparm.c:1027 -msgid "winbind separator" -msgstr "" - -#: param/loadparm.c:1028 -msgid "winbind cache time" -msgstr "" - -#: param/loadparm.c:1029 -msgid "winbind enum users" -msgstr "" - -#: param/loadparm.c:1030 -msgid "winbind enum groups" -msgstr "" diff --git a/source/po/fr.msg b/source/po/fr.msg index 493db659ae6..134f1d6390b 100644 --- a/source/po/fr.msg +++ b/source/po/fr.msg @@ -1,1709 +1,593 @@ # French messages for international release of SWAT. # Copyright (C) 2001 Fran輟is Le Lay <fanch@tuxfamily.org> - +# +# 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. +# msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"POT-Creation-Date: 2001-09-20 14:05+0100\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2000-02-08 14:45+0100\n" "Last-Translator: Fran輟is Le Lay <fanch@tuxfamily.org>\n" "Language-Team: (Samba Team) <samba-technical@samba.org>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=US-ASCII\n" +"Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: \n" -#: web/swat.c:120 +#: ../web/swat.c:117 #, c-format -msgid "ERROR: Can't open %s\n" -msgstr "ERREUR: Impossible d'ouvrir %s\n" +msgid "ERROR: Can't open %s" +msgstr "" -#. -#. str = stripspace(parm->label); -#. strlower (str); //monyo -#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A> %s</td><td>", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 +#: ../web/swat.c:200 msgid "Help" msgstr "Aide" -#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263 -#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "D馭inir par d馭aut" -#: web/swat.c:502 +#: ../web/swat.c:408 #, c-format -msgid "Logged in as <b>%s</b><p>\n" -msgstr "Connect en tant que <b>%s</b><p>\n" +msgid "failed to open %s for writing" +msgstr "" -#: web/swat.c:505 +#: ../web/swat.c:431 +#, c-format +msgid "Can't reload %s" +msgstr "" + +#: ../web/swat.c:501 +#, c-format +msgid "Logged in as <b>%s</b>" +msgstr "Connect en tant que <b>%s</b>" + +#: ../web/swat.c:505 msgid "Home" msgstr "Home" -#: web/swat.c:507 +#: ../web/swat.c:507 msgid "Globals" msgstr "Param鑼res G駭駻aux" -#: web/swat.c:508 +#: ../web/swat.c:508 msgid "Shares" msgstr "Partages" -#: web/swat.c:509 +#: ../web/swat.c:509 msgid "Printers" msgstr "Imprimantes" -#: web/swat.c:512 +#: ../web/swat.c:510 +msgid "Wizard" +msgstr "" + +#: ../web/swat.c:513 msgid "Status" msgstr "Statut" -#: web/swat.c:513 +#: ../web/swat.c:514 msgid "View Config" msgstr "Voir Configuration" -#: web/swat.c:515 +#: ../web/swat.c:516 msgid "Password Management" msgstr "Gestion des mots de passe" -#: web/swat.c:539 +#: ../web/swat.c:526 +msgid "Current View Is" +msgstr "Configuration Actuelle" + +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" +msgstr "Vue Basique" + +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" +msgstr "Vue D騁aill馥" + +#: ../web/swat.c:529 +msgid "Change View To" +msgstr "Modifier le mot de passe" + +#: ../web/swat.c:554 msgid "Current Config" msgstr "Configuration Actuelle" -#: web/swat.c:543 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Vue Normale" -#: web/swat.c:545 +#: ../web/swat.c:560 msgid "Full View" msgstr "Vue Compl鑼e" -#: web/swat.c:561 -msgid "Global Variables" +#. Here we first set and commit all the parameters that were selected +#. in the previous screen. +#: ../web/swat.c:579 +msgid "Wizard Parameter Edit Page" +msgstr "" + +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" +msgstr "" + +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" +msgstr "" + +#: ../web/swat.c:720 +msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." +msgstr "" + +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." +msgstr "" + +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" +msgstr "" + +#: ../web/swat.c:725 +msgid "Commit" +msgstr "commentaire" + +#: ../web/swat.c:726 +msgid "Edit Parameter Values" +msgstr "Param鑼res Imprimantes" + +#: ../web/swat.c:732 +msgid "Server Type" +msgstr "" + +#: ../web/swat.c:733 +msgid "Stand Alone" +msgstr "" + +#: ../web/swat.c:734 +msgid "Domain Member" +msgstr "master de domaine" + +#: ../web/swat.c:735 +msgid "Domain Controller" +msgstr "master de domaine" + +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" +msgstr "" + +#: ../web/swat.c:740 +msgid "Configure WINS As" +msgstr "" + +#: ../web/swat.c:741 +msgid "Not Used" +msgstr "ne pas descendre" + +#: ../web/swat.c:742 +msgid "Server for client use" +msgstr "" + +#: ../web/swat.c:743 +msgid "Client of another WINS server" +msgstr "" + +#: ../web/swat.c:745 +msgid "Remote WINS Server" +msgstr "" + +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" +msgstr "" + +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." +msgstr "" + +#: ../web/swat.c:759 +msgid "Expose Home Directories" +msgstr "" + +#: ../web/swat.c:774 +msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." +msgstr "" + +#: ../web/swat.c:787 +msgid "Global Parameters" msgstr "Variables Globales" -#: web/swat.c:575 web/swat.c:671 web/swat.c:1014 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "Sauver les modifications" -#: web/swat.c:579 web/swat.c:674 web/swat.c:1016 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "R駟nitialiser Valeurs" -#: web/swat.c:581 web/swat.c:676 web/swat.c:1018 -msgid "Advanced View" -msgstr "Vue D騁aill馥" - -#: web/swat.c:583 web/swat.c:678 web/swat.c:1020 -msgid "Basic View" -msgstr "Vue Basique" - -#: web/swat.c:613 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Param鑼res de partage" -#: web/swat.c:642 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "Choisir un partage" -#: web/swat.c:656 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Supprimer un partage" -#: web/swat.c:663 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Cr馥r un partage" -#: web/swat.c:708 -msgid "password change in demo mode rejected\n" +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" msgstr "changement de mot de passe en mode d駑o rejet" -#: web/swat.c:747 -msgid " Must specify \"User Name\" \n" -msgstr " Le champ \"Nom d'utilisateur\" doit 黎re sp馗ifi饅n" +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." +msgstr "" + +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " +msgstr " Le champ \"Nom d'utilisateur\" doit 黎re sp馗ifi" -#: web/swat.c:763 -msgid " Must specify \"Old Password\" \n" -msgstr " Le champ \"Ancien mot de passe\" dot 黎re sp馗ifi饅n" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " +msgstr " Le champ \"Ancien mot de passe\" dot 黎re sp馗ifi" -#: web/swat.c:769 -msgid " Must specify \"Remote Machine\" \n" -msgstr " Le champ \"Machine Distante\" dot 黎re sp馗ifi饅n" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " +msgstr " Le champ \"Machine Distante\" dot 黎re sp馗ifi" -#: web/swat.c:776 -msgid " Must specify \"New, and Re-typed Passwords\" \n" -msgstr " Les champs \"Nouveau mot de passe\" et \"Confirmation du nouveau mot de passe\" doivent 黎re sp馗ifi駸 \n" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " +msgstr "Les champs \"Nouveau mot de passe\" et \"Confirmation du nouveau mot de passe\" doivent 黎re sp馗ifi駸 \n" -#: web/swat.c:782 -msgid " Re-typed password didn't match new password\n" -msgstr " Echec de la confirmation du nouveau mot de passe\n" +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " +msgstr " Echec de la confirmation du nouveau mot de passe" -#: web/swat.c:812 +#: ../web/swat.c:1048 #, c-format -msgid " The passwd for '%s' has been changed. \n" -msgstr " Le mot de passe de '%s' a 騁 modifi. \n" +msgid " The passwd for '%s' has been changed." +msgstr " Le mot de passe de '%s' a 騁 modifi. " -#: web/swat.c:814 +#: ../web/swat.c:1051 #, c-format -msgid " The password for '%s' has NOT been changed. \n" +msgid " The passwd for '%s' has NOT been changed." msgstr " Le mot de passe de '%s' n'a PAS 騁 modifi. \n" -#: web/swat.c:838 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Gestion des mots de passe serveur" #. #. * Create all the dialog boxes for data collection #. -#: web/swat.c:847 web/swat.c:894 -msgid " User Name : " +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" msgstr " Nom d'utilisateur : " -#: web/swat.c:850 web/swat.c:896 -msgid " Old Password : " +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" msgstr " Ancien mot de passe : " -#: web/swat.c:853 web/swat.c:898 -msgid " New Password : " +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" msgstr " Nouveau mot de passe : " -#: web/swat.c:855 web/swat.c:900 -msgid " Re-type New Password : " +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" msgstr " Confirmation du nouveau mot de passe : " -#: web/swat.c:863 web/swat.c:911 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "Modifier le mot de passe" -#: web/swat.c:866 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "Nouvel Utilisateur" -#: web/swat.c:868 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Supprimer Utilisateur" -#: web/swat.c:870 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "D駸activer Utilisateur" -#: web/swat.c:872 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Activer Utilisateur" -#: web/swat.c:885 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "Gestion des mots de passe Client/Serveur" -#: web/swat.c:902 -msgid " Remote Machine : " +#: ../web/swat.c:1140 +msgid "Remote Machine" msgstr " Machine distante : " -#: web/swat.c:940 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "Param鑼res Imprimantes" -#: web/swat.c:942 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "Note Importante:" -#: web/swat.c:943 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "Les Noms d'imprimantes marqu駸 du signe [*] dans le menu d駻oulant Choisir Imprimante" -#: web/swat.c:944 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "d駸ignent des imprimantes automatiquement charg馥s depuis le " -#: web/swat.c:945 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "Nom Printcap" -#: web/swat.c:946 -msgid "Attempting to delete these printers from SWAT will have no effect.\n" -msgstr "Essayer de supprimer ces imprimantes depuis SWAT n'aura aucun effet.\n" +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." +msgstr "Essayer de supprimer ces imprimantes depuis SWAT n'aura aucun effet." -#: web/swat.c:980 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Choisir Imprimante" -#: web/swat.c:999 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Supprimer Imprimante" -#: web/swat.c:1006 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Cr馥r Imprimante" -#: web/statuspage.c:40 -msgid "DENY_NONE" -msgstr "" - -#: web/statuspage.c:41 -msgid "DENY_ALL " -msgstr "" - -#: web/statuspage.c:42 -msgid "DENY_DOS " -msgstr "" - -#: web/statuspage.c:43 -msgid "DENY_READ " -msgstr "" - -#: web/statuspage.c:44 -msgid "DENY_WRITE " -msgstr "" - -#: web/statuspage.c:50 +#: ../web/statuspage.c:123 msgid "RDONLY " msgstr "" -#: web/statuspage.c:51 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "" -#: web/statuspage.c:52 +#: ../web/statuspage.c:125 msgid "RDWR " msgstr "" -#: web/statuspage.c:60 -msgid "EXCLUSIVE+BATCH " -msgstr "" - -#: web/statuspage.c:62 -msgid "EXCLUSIVE " -msgstr "" - -#: web/statuspage.c:64 -msgid "BATCH " -msgstr "" - -#: web/statuspage.c:66 -msgid "LEVEL_II " -msgstr "" - -#: web/statuspage.c:68 -msgid "NONE " -msgstr "" - -#: web/statuspage.c:195 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "Statut du Serveur" -#: web/statuspage.c:200 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "Rafrachissement Automatique" -#: web/statuspage.c:201 web/statuspage.c:206 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Intervalle de rafrachissement: " -#: web/statuspage.c:205 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Stopper Rafrachissement" -#: web/statuspage.c:220 +#: ../web/statuspage.c:334 msgid "version:" msgstr "version:" -#: web/statuspage.c:223 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "actif" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "non actif" -#: web/statuspage.c:226 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "Stopper smbd" -#: web/statuspage.c:228 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "Lancer smbd" -#: web/statuspage.c:230 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Relancer smbd" -#: web/statuspage.c:235 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "" -#: web/statuspage.c:238 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "Stopper nmbd" -#: web/statuspage.c:240 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "Lancer nmbd" -#: web/statuspage.c:242 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Relancer nmbd" -#: web/statuspage.c:249 +#: ../web/statuspage.c:364 +msgid "winbindd:" +msgstr "" + +#: ../web/statuspage.c:368 +msgid "Stop winbindd" +msgstr "Stopper nmbd" + +#: ../web/statuspage.c:370 +msgid "Start winbindd" +msgstr "Lancer nmbd" + +#: ../web/statuspage.c:372 +msgid "Restart winbindd" +msgstr "Relancer nmbd" + +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" +msgstr "" + +#: ../web/statuspage.c:382 +msgid "Restart All" +msgstr "Relancer nmbd" + +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" +msgstr "Lancer nmbd" + +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Connections Actives" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "" -#: web/statuspage.c:251 web/statuspage.c:264 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "" -#: web/statuspage.c:251 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "adresse IP" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "Date" -#: web/statuspage.c:253 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Terminer" -#: web/statuspage.c:261 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "Partages Actifs" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Partager" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "User" msgstr "Utilisateur" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Groupe" -#: web/statuspage.c:270 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "Fichiers Ouverts" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "File" msgstr "Fichier" -#: param/loadparm.c:641 -msgid "Base Options" -msgstr "Options de base" - -#: param/loadparm.c:643 -msgid "dos charset" -msgstr "caract鑽es dos" - -#: param/loadparm.c:644 -msgid "unix charset" -msgstr "caract鑽es unix" - -#: param/loadparm.c:645 -msgid "display charset" -msgstr "caract鑽es display" - -#: param/loadparm.c:646 -msgid "comment" -msgstr "commentaire" - -#: param/loadparm.c:647 -msgid "path" -msgstr "chemin" - -#: param/loadparm.c:648 -msgid "directory" -msgstr "r駱ertoire" - -#: param/loadparm.c:649 -msgid "workgroup" -msgstr "groupe de travail" - -#: param/loadparm.c:650 -msgid "netbios name" -msgstr "nom netbios" - -#: param/loadparm.c:651 -msgid "netbios aliases" -msgstr "alias netbios" - -#: param/loadparm.c:652 -msgid "netbios scope" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" msgstr "" -#: param/loadparm.c:653 -msgid "server string" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" msgstr "" -#: param/loadparm.c:654 -msgid "interfaces" -msgstr "" - -#: param/loadparm.c:655 -msgid "bind interfaces only" -msgstr "lier uniquement les interfaces" +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "Options de base" -#: param/loadparm.c:657 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "Options de S馗urit" -#: param/loadparm.c:659 -msgid "security" -msgstr "s馗urit" - -#: param/loadparm.c:660 -msgid "encrypt passwords" -msgstr "crypter les mots de passe" - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "mise jour crypt駸" - -#: param/loadparm.c:662 -msgid "allow trusted domains" -msgstr "autoriser les domaines de confiance" - -#: param/loadparm.c:663 -msgid "alternate permissions" -msgstr "permissions alternatives" - -#: param/loadparm.c:664 -msgid "hosts equiv" -msgstr "" - -#: param/loadparm.c:665 -msgid "min passwd length" -msgstr "taille minimale des mots de passe" - -#: param/loadparm.c:666 -msgid "min password length" -msgstr "taille minimale des mots de passe" - -#: param/loadparm.c:667 -msgid "map to guest" -msgstr "associer un invit" - -#: param/loadparm.c:668 -msgid "null passwords" -msgstr "mots de passe null" - -#: param/loadparm.c:669 -msgid "obey pam restrictions" -msgstr "utiliser les restrictions pam" - -#: param/loadparm.c:670 -msgid "password server" -msgstr "serveur de mots de passe" - -#: param/loadparm.c:671 -msgid "smb passwd file" -msgstr "fichier passwd de smb" - -#: param/loadparm.c:672 -msgid "private dir" -msgstr "r駱ertoire priv" - -#: param/loadparm.c:673 -msgid "passdb module path" -msgstr "chemin du module passdb" - -#: param/loadparm.c:674 -msgid "root directory" -msgstr "r駱ertoire root" - -#: param/loadparm.c:675 -msgid "root dir" -msgstr "r駱ertoire root" - -#: param/loadparm.c:676 -msgid "root" -msgstr "" - -#: param/loadparm.c:678 -msgid "pam password change" -msgstr "modification de mot de passe pam" - -#: param/loadparm.c:679 -msgid "passwd program" -msgstr "programme passwd" - -#: param/loadparm.c:680 -msgid "passwd chat" -msgstr "" - -#: param/loadparm.c:681 -msgid "passwd chat debug" -msgstr "" - -#: param/loadparm.c:682 -msgid "username map" -msgstr "" - -#: param/loadparm.c:683 -msgid "password level" -msgstr "niveau mot de passe" - -#: param/loadparm.c:684 -msgid "username level" -msgstr "niveau nom d'utilisateur" - -#: param/loadparm.c:685 -msgid "unix password sync" -msgstr "synchroniser avec mots de passe unix" - -#: param/loadparm.c:686 -msgid "restrict anonymous" -msgstr "limiter anonyme" - -#: param/loadparm.c:687 -msgid "lanman auth" -msgstr "" - -#: param/loadparm.c:688 -msgid "ntlm auth" -msgstr "" - -#: param/loadparm.c:689 -msgid "plaintext to smbpasswd" -msgstr "texte brut vers smbpasswd" - -#: param/loadparm.c:690 -msgid "use rhosts" -msgstr "utiliser rhosts" - -#: param/loadparm.c:692 -msgid "username" -msgstr "nom d'utilisateur" - -#: param/loadparm.c:693 -msgid "user" -msgstr "utilisateur" - -#: param/loadparm.c:694 -msgid "users" -msgstr "utilisateurs" - -#: param/loadparm.c:696 -msgid "guest account" -msgstr "compte invit" - -#: param/loadparm.c:697 -msgid "invalid users" -msgstr "utilisateurs non-valides" - -#: param/loadparm.c:698 -msgid "valid users" -msgstr "utilisateurs valides" - -#: param/loadparm.c:699 -msgid "admin users" -msgstr "utilisateurs administrateurs" - -#: param/loadparm.c:700 -msgid "read list" -msgstr "" - -#: param/loadparm.c:701 -msgid "write list" -msgstr "" - -#: param/loadparm.c:702 -msgid "printer admin" -msgstr "administrateur d'imprimante" - -#: param/loadparm.c:703 -msgid "force user" -msgstr "forcer utilisateur" - -#: param/loadparm.c:704 -msgid "force group" -msgstr "forcer le groupe" - -#: param/loadparm.c:705 -msgid "group" -msgstr "groupe" - -#: param/loadparm.c:707 -msgid "read only" -msgstr "lecture seule" - -#: param/loadparm.c:708 -msgid "write ok" -msgstr "馗riture ok" - -#: param/loadparm.c:709 -msgid "writeable" -msgstr "馗riture possible" - -#: param/loadparm.c:710 -msgid "writable" -msgstr "馗riture possible" - -#: param/loadparm.c:712 -msgid "create mask" -msgstr "" - -#: param/loadparm.c:713 -msgid "create mode" -msgstr "mode cr饌tion" - -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "forcer le mode cr饌tion" - -#: param/loadparm.c:715 -msgid "security mask" -msgstr "" - -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "forcer le mode s馗urit" - -#: param/loadparm.c:717 -msgid "directory mask" -msgstr "masque de r駱ertoire" - -#: param/loadparm.c:718 -msgid "directory mode" -msgstr "mode r駱ertoire" - -#: param/loadparm.c:719 -msgid "force directory mode" -msgstr "forcer le mode r駱ertoire" - -#: param/loadparm.c:720 -msgid "directory security mask" -msgstr "masque de s馗urit r駱ertoire" - -#: param/loadparm.c:721 -msgid "force directory security mode" -msgstr "forcer le mode s馗urit r駱ertoire" - -#: param/loadparm.c:722 -msgid "inherit permissions" -msgstr "h駻itage de permissions" - -#: param/loadparm.c:723 -msgid "guest only" -msgstr "invit seulement" - -#: param/loadparm.c:724 -msgid "only guest" -msgstr "invit seulement" - -#: param/loadparm.c:726 -msgid "guest ok" -msgstr "invit ok" - -#: param/loadparm.c:727 -msgid "public" -msgstr "public" - -#: param/loadparm.c:729 -msgid "only user" -msgstr "utilisateur seulement" - -#: param/loadparm.c:730 -msgid "hosts allow" -msgstr "autoriser hosts" - -#: param/loadparm.c:731 -msgid "allow hosts" -msgstr "autoriser hosts" - -#: param/loadparm.c:732 -msgid "hosts deny" -msgstr "refuser hosts" - -#: param/loadparm.c:733 -msgid "deny hosts" -msgstr "refuser hosts" - -#: param/loadparm.c:736 -msgid "Secure Socket Layer Options" -msgstr "Options Secure Socket Layer" - -#: param/loadparm.c:737 -msgid "ssl" -msgstr "" - -#: param/loadparm.c:739 -msgid "ssl hosts" -msgstr "" - -#: param/loadparm.c:740 -msgid "ssl hosts resign" -msgstr "" - -#: param/loadparm.c:741 -msgid "ssl CA certDir" -msgstr "" - -#: param/loadparm.c:742 -msgid "ssl CA certFile" -msgstr "" - -#: param/loadparm.c:743 -msgid "ssl server cert" -msgstr "certificat ssl serveur" - -#: param/loadparm.c:744 -msgid "ssl server key" -msgstr "cl ssl serveur" - -#: param/loadparm.c:745 -msgid "ssl client cert" -msgstr "certificat ssl client" - -#: param/loadparm.c:746 -msgid "ssl client key" -msgstr "cl ssl client" - -#: param/loadparm.c:747 -msgid "ssl require clientcert" -msgstr "ssl requiert un certificat client" - -#: param/loadparm.c:748 -msgid "ssl require servercert" -msgstr "ssl requiert un certificat serveur" - -#: param/loadparm.c:749 -msgid "ssl ciphers" -msgstr "chiffres ssl" - -#: param/loadparm.c:750 -msgid "ssl version" -msgstr "ssl version" - -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "compatibilit ssl" - -#: param/loadparm.c:754 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Options de Logging" -#: param/loadparm.c:755 -msgid "log level" -msgstr "niveau log" - -#: param/loadparm.c:756 -msgid "debuglevel" -msgstr "niveau debug" - -#: param/loadparm.c:757 -msgid "syslog" -msgstr "" - -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "syslog seulement" - -#: param/loadparm.c:759 -msgid "log file" -msgstr "fichier log" - -#: param/loadparm.c:761 -msgid "max log size" -msgstr "taille maxi de la log" - -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "" - -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "" - -#: param/loadparm.c:764 -msgid "debug hires timestamp" -msgstr "" - -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "" - -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "" - -#: param/loadparm.c:768 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "Options de Protocole" -#: param/loadparm.c:770 -msgid "protocol" -msgstr "protocole" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "" - -#: param/loadparm.c:772 -msgid "max protocol" -msgstr "protocole maxi" - -#: param/loadparm.c:773 -msgid "min protocol" -msgstr "protocole mini" - -#: param/loadparm.c:774 -msgid "unicode" -msgstr "" - -#: param/loadparm.c:775 -msgid "read bmpx" -msgstr "" - -#: param/loadparm.c:776 -msgid "read raw" -msgstr "" - -#: param/loadparm.c:777 -msgid "write raw" -msgstr "" - -#: param/loadparm.c:779 -msgid "nt smb support" -msgstr "support smb nt" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "support pipe nt" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "support acl nt" - -#: param/loadparm.c:782 -msgid "announce version" -msgstr "annoncer la version" - -#: param/loadparm.c:783 -msgid "announce as" -msgstr "annoncer comme" - -#: param/loadparm.c:784 -msgid "max mux" -msgstr "mux maxi" - -#: param/loadparm.c:785 -msgid "max xmit" -msgstr "xmit maxi" - -#: param/loadparm.c:787 -msgid "name resolve order" -msgstr "ordre de r駸olution des noms" - -#: param/loadparm.c:788 -msgid "max packet" -msgstr "paquet maxi" - -#: param/loadparm.c:789 -msgid "packet size" -msgstr "taille de paquet" - -#: param/loadparm.c:790 -msgid "max ttl" -msgstr "ttl maxi" - -#: param/loadparm.c:791 -msgid "max wins ttl" -msgstr "wins ttl maxi" - -#: param/loadparm.c:792 -msgid "min wins ttl" -msgstr "wins ttl mini" - -#: param/loadparm.c:793 -msgid "time server" -msgstr "" - -#: param/loadparm.c:795 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "Options de r馮lage" -#: param/loadparm.c:797 -msgid "change notify timeout" -msgstr "" - -#: param/loadparm.c:798 -msgid "deadtime" -msgstr "" - -#: param/loadparm.c:799 -msgid "getwd cache" -msgstr "" - -#: param/loadparm.c:800 -msgid "keepalive" -msgstr "" - -#: param/loadparm.c:802 -msgid "lpq cache time" -msgstr "" - -#: param/loadparm.c:803 -msgid "max smbd processes" -msgstr "nombre maxi de processus smbd" - -#: param/loadparm.c:804 -msgid "max connections" -msgstr "connections maxi" - -#: param/loadparm.c:805 -msgid "paranoid server security" -msgstr "" - -#: param/loadparm.c:806 -msgid "max disk size" -msgstr "taille maxi de disque" - -#: param/loadparm.c:807 -msgid "max open files" -msgstr "nombre maxi de fichiers ouverts" - -#: param/loadparm.c:808 -msgid "min print space" -msgstr "espace d'impression mini" - -#: param/loadparm.c:809 -msgid "read size" -msgstr "" - -#: param/loadparm.c:811 -msgid "socket options" -msgstr "options de socket" - -#: param/loadparm.c:812 -msgid "stat cache size" -msgstr "taille du cache stat" - -#: param/loadparm.c:813 -msgid "strict allocate" -msgstr "allocation stricte" - -#: param/loadparm.c:814 -msgid "strict sync" -msgstr "synchronisation stricte" - -#: param/loadparm.c:815 -msgid "sync always" -msgstr "toujours synchroniser" - -#: param/loadparm.c:816 -msgid "use mmap" -msgstr "utiliser mmap" - -#: param/loadparm.c:817 -msgid "hostname lookups" -msgstr "" - -#: param/loadparm.c:818 -msgid "write cache size" -msgstr "taille du cache d'馗riture" - -#: param/loadparm.c:820 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "Options d'impression" -#: param/loadparm.c:822 -msgid "total print jobs" -msgstr "total jobs d'impression" - -#: param/loadparm.c:823 -msgid "max print jobs" -msgstr "max jobs d'impression" - -#: param/loadparm.c:824 -msgid "load printers" -msgstr "charger imprimantes" - -#: param/loadparm.c:825 -msgid "printcap name" -msgstr "nom printcap" - -#: param/loadparm.c:826 -msgid "printcap" -msgstr "" - -#: param/loadparm.c:827 -msgid "printable" -msgstr "imprimable" - -#: param/loadparm.c:828 -msgid "print ok" -msgstr "imprimante ok" - -#: param/loadparm.c:829 -msgid "postscript" -msgstr "" - -#: param/loadparm.c:830 -msgid "printing" -msgstr "impression" - -#: param/loadparm.c:831 -msgid "print command" -msgstr "commande d'impression" - -#: param/loadparm.c:832 -msgid "disable spoolss" -msgstr "d駸activer spoolss" - -#: param/loadparm.c:833 -msgid "lpq command" -msgstr "commande lpq" - -#: param/loadparm.c:834 -msgid "lprm command" -msgstr "commande lprm" - -#: param/loadparm.c:835 -msgid "lppause command" -msgstr "commande lppause" - -#: param/loadparm.c:836 -msgid "lpresume command" -msgstr "commande lpresume" - -#: param/loadparm.c:837 -msgid "queuepause command" -msgstr "commande queuepause" - -#: param/loadparm.c:838 -msgid "queueresume command" -msgstr "commande queueresume" - -#: param/loadparm.c:840 -msgid "enumports command" -msgstr "commande enumports" - -#: param/loadparm.c:841 -msgid "addprinter command" -msgstr "commande addprinter" - -#: param/loadparm.c:842 -msgid "deleteprinter command" -msgstr "commande deleteprinter" - -#: param/loadparm.c:843 -msgid "show add printer wizard" -msgstr "Voir l'assistant d'ajout d'imprimante" - -#: param/loadparm.c:844 -msgid "os2 driver map" -msgstr "" - -#: param/loadparm.c:846 -msgid "printer name" -msgstr "nom d'imprimante" - -#: param/loadparm.c:847 -msgid "printer" -msgstr "imprimante" - -#: param/loadparm.c:848 -msgid "use client driver" -msgstr "utiliser le pilote client" - -#: param/loadparm.c:849 -msgid "printer driver" -msgstr "pilote d'imprimante" - -#: param/loadparm.c:850 -msgid "printer driver file" -msgstr "fichier de pilote d'imprimante" - -#: param/loadparm.c:851 -msgid "printer driver location" -msgstr "adresse du pilote d'imprimante" - -#: param/loadparm.c:853 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Gestion des noms de fichier" -#: param/loadparm.c:854 -msgid "strip dot" -msgstr "" - -#: param/loadparm.c:856 -msgid "mangled stack" -msgstr "" - -#: param/loadparm.c:857 -msgid "default case" -msgstr "casse par d馭aut" - -#: param/loadparm.c:858 -msgid "case sensitive" -msgstr "sensible la casse" - -#: param/loadparm.c:859 -msgid "casesignames" -msgstr "" - -#: param/loadparm.c:860 -msgid "preserve case" -msgstr "garder la casse" - -#: param/loadparm.c:861 -msgid "short preserve case" -msgstr "" - -#: param/loadparm.c:862 -msgid "mangle case" -msgstr "" - -#: param/loadparm.c:863 -msgid "mangling char" -msgstr "" - -#: param/loadparm.c:864 -msgid "hide dot files" -msgstr "" - -#: param/loadparm.c:865 -msgid "hide unreadable" -msgstr "" - -#: param/loadparm.c:866 -msgid "delete veto files" -msgstr "supprimer les fichiers veto" - -#: param/loadparm.c:867 -msgid "veto files" -msgstr "fichiers veto" - -#: param/loadparm.c:868 -msgid "hide files" -msgstr "cacher les fichiers" - -#: param/loadparm.c:869 -msgid "veto oplock files" -msgstr "" - -#: param/loadparm.c:870 -msgid "map system" -msgstr "map syst鑪e" - -#: param/loadparm.c:871 -msgid "map hidden" -msgstr "map cach" - -#: param/loadparm.c:872 -msgid "map archive" -msgstr "" - -#: param/loadparm.c:873 -msgid "mangled names" -msgstr "" - -#: param/loadparm.c:874 -msgid "mangled map" -msgstr "" - -#: param/loadparm.c:875 -msgid "stat cache" -msgstr "cache stat" - -#: param/loadparm.c:877 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Options de Domaine" -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "groupe d'administration du domaine" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "groupe invit du domaine" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "map noms de groupe" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "" - -#: param/loadparm.c:888 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Options de Logon" -#: param/loadparm.c:890 -msgid "add user script" -msgstr "ajouter script utilisateur" - -#: param/loadparm.c:891 -msgid "delete user script" -msgstr "supprimer script utilisateur" - -#: param/loadparm.c:892 -msgid "add group script" -msgstr "ajouter script de groupe" - -#: param/loadparm.c:893 -msgid "delete group script" -msgstr "supprimer script de groupe" - -#: param/loadparm.c:894 -msgid "add user to group script" -msgstr "ajouter un utilisateur un script de groupe" - -#: param/loadparm.c:895 -msgid "delete user from group script" -msgstr "supprimer un utilisateur d'un script de groupe" - -#: param/loadparm.c:896 -msgid "add machine script" -msgstr "ajouter un script machine" - -#: param/loadparm.c:897 -msgid "shutdown script" -msgstr "script shutdown" - -#: param/loadparm.c:898 -msgid "abort shutdown script" -msgstr "annuler script shutdown" - -#: param/loadparm.c:900 -msgid "logon script" -msgstr "script de logon" - -#: param/loadparm.c:901 -msgid "logon path" -msgstr "" - -#: param/loadparm.c:902 -msgid "logon drive" -msgstr "" - -#: param/loadparm.c:903 -msgid "logon home" -msgstr "" - -#: param/loadparm.c:904 -msgid "domain logons" -msgstr "" - -#: param/loadparm.c:906 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Options de Navigation" -#: param/loadparm.c:908 -msgid "os level" -msgstr "niveau os" - -#: param/loadparm.c:909 -msgid "lm announce" -msgstr "annonce lm" - -#: param/loadparm.c:910 -msgid "lm interval" -msgstr "intervalle lm" - -#: param/loadparm.c:911 -msgid "preferred master" -msgstr "master pr馭駻" - -#: param/loadparm.c:912 -msgid "prefered master" -msgstr "master pr馭駻" - -#: param/loadparm.c:913 -msgid "local master" -msgstr "master local" - -#: param/loadparm.c:914 -msgid "domain master" -msgstr "master de domaine" - -#: param/loadparm.c:915 -msgid "browse list" -msgstr "parcourir la liste" - -#: param/loadparm.c:916 -msgid "browseable" -msgstr "navigable" - -#: param/loadparm.c:917 -msgid "browsable" -msgstr "navigable" - -#: param/loadparm.c:918 -msgid "enhanced browsing" -msgstr "navigation am駘ior馥" - -#: param/loadparm.c:920 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "Options WINS" -#: param/loadparm.c:921 -msgid "dns proxy" -msgstr "" - -#: param/loadparm.c:922 -msgid "wins proxy" -msgstr "" - -#: param/loadparm.c:924 -msgid "wins server" -msgstr "" - -#: param/loadparm.c:925 -msgid "wins support" -msgstr "" - -#: param/loadparm.c:926 -msgid "wins hook" -msgstr "" - -#: param/loadparm.c:928 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Options de Verrouillage" -#: param/loadparm.c:930 -msgid "blocking locks" -msgstr "verrous bloquants" - -#: param/loadparm.c:931 -msgid "fake oplocks" -msgstr "" - -#: param/loadparm.c:932 -msgid "kernel oplocks" -msgstr "" - -#: param/loadparm.c:933 -msgid "locking" -msgstr "verrouillage" - -#: param/loadparm.c:935 -msgid "oplocks" -msgstr "" - -#: param/loadparm.c:936 -msgid "level2 oplocks" -msgstr "" - -#: param/loadparm.c:937 -msgid "oplock break wait time" -msgstr "" - -#: param/loadparm.c:938 -msgid "oplock contention limit" -msgstr "" - -#: param/loadparm.c:939 -msgid "posix locking" -msgstr "verrouillage posix" - -#: param/loadparm.c:940 -msgid "strict locking" -msgstr "verrouillage strict" - -#: param/loadparm.c:941 -msgid "share modes" -msgstr "modes de partage" - -#: param/loadparm.c:944 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "Options Ldap" -#: param/loadparm.c:946 -msgid "ldap server" -msgstr "serveur ldap" - -#: param/loadparm.c:947 -msgid "ldap port" -msgstr "port ldap" - -#: param/loadparm.c:948 -msgid "ldap suffix" -msgstr "suffixe ldap" - -#: param/loadparm.c:949 -msgid "ldap filter" -msgstr "filtre ldap" - -#: param/loadparm.c:950 -msgid "ldap root" -msgstr "" - -#: param/loadparm.c:951 -msgid "ldap root passwd" -msgstr "" - -#: param/loadparm.c:954 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Options Diverses" -#: param/loadparm.c:955 -msgid "add share command" -msgstr "ajouter une commande de partage" - -#: param/loadparm.c:956 -msgid "change share command" -msgstr "modifier une commande de partage" - -#: param/loadparm.c:957 -msgid "delete share command" -msgstr "supprimer une commande de partage" - -#: param/loadparm.c:959 -msgid "config file" -msgstr "fichier de configuration" - -#: param/loadparm.c:960 -msgid "preload" -msgstr "pr-chargement" - -#: param/loadparm.c:961 -msgid "auto services" -msgstr "" - -#: param/loadparm.c:962 -msgid "lock dir" -msgstr "" - -#: param/loadparm.c:963 -msgid "lock directory" -msgstr "" - -#: param/loadparm.c:965 -msgid "utmp directory" -msgstr "" - -#: param/loadparm.c:966 -msgid "wtmp directory" -msgstr "" - -#: param/loadparm.c:967 -msgid "utmp" -msgstr "" - -#: param/loadparm.c:970 -msgid "default service" -msgstr "service par d馭aut" - -#: param/loadparm.c:971 -msgid "default" -msgstr "par d馭aut" - -#: param/loadparm.c:972 -msgid "message command" -msgstr "commande message" - -#: param/loadparm.c:973 -msgid "dfree command" -msgstr "commande dfree" - -#: param/loadparm.c:974 -msgid "remote announce" -msgstr "annonce distante" - -#: param/loadparm.c:975 -msgid "remote browse sync" -msgstr "synchronisation de navigation distante" - -#: param/loadparm.c:976 -msgid "socket address" -msgstr "adresse de socket" - -#: param/loadparm.c:977 -msgid "homedir map" -msgstr "" - -#: param/loadparm.c:978 -msgid "time offset" -msgstr "" - -#: param/loadparm.c:979 -msgid "NIS homedir" -msgstr "" - -#: param/loadparm.c:980 -msgid "-valid" -msgstr "" - -#: param/loadparm.c:982 -msgid "copy" -msgstr "" - -#: param/loadparm.c:983 -msgid "include" -msgstr "" - -#: param/loadparm.c:984 -msgid "exec" -msgstr "" - -#: param/loadparm.c:985 -msgid "preexec" -msgstr "" - -#: param/loadparm.c:987 -msgid "preexec close" -msgstr "" - -#: param/loadparm.c:988 -msgid "postexec" -msgstr "" - -#: param/loadparm.c:989 -msgid "root preexec" -msgstr "" - -#: param/loadparm.c:990 -msgid "root preexec close" -msgstr "" - -#: param/loadparm.c:991 -msgid "root postexec" -msgstr "" - -#: param/loadparm.c:992 -msgid "available" -msgstr "disponible" - -#: param/loadparm.c:993 -msgid "volume" -msgstr "" - -#: param/loadparm.c:994 -msgid "fstype" -msgstr "" - -#: param/loadparm.c:995 -msgid "set directory" -msgstr "" - -#: param/loadparm.c:996 -msgid "source environment" -msgstr "" - -#: param/loadparm.c:997 -msgid "wide links" -msgstr "" - -#: param/loadparm.c:998 -msgid "follow symlinks" -msgstr "" - -#: param/loadparm.c:999 -msgid "dont descend" -msgstr "ne pas descendre" - -#: param/loadparm.c:1000 -msgid "magic script" -msgstr "" - -#: param/loadparm.c:1001 -msgid "magic output" -msgstr "" - -#: param/loadparm.c:1002 -msgid "delete readonly" -msgstr "supprimer lecture seule" - -#: param/loadparm.c:1003 -msgid "dos filemode" -msgstr "" - -#: param/loadparm.c:1004 -msgid "dos filetimes" -msgstr "" - -#: param/loadparm.c:1005 -msgid "dos filetime resolution" -msgstr "" - -#: param/loadparm.c:1007 -msgid "fake directory create times" -msgstr "" - -#: param/loadparm.c:1008 -msgid "panic action" -msgstr "" - -#: param/loadparm.c:1009 -msgid "hide local users" -msgstr "cacher les utilisateurs locaux" - -#: param/loadparm.c:1012 -msgid "VFS options" +#: ../param/loadparm.c:1138 +msgid "VFS module options" msgstr "Options VFS" -#: param/loadparm.c:1014 -msgid "vfs object" -msgstr "" - -#: param/loadparm.c:1015 -msgid "vfs options" -msgstr "" - -#: param/loadparm.c:1018 -msgid "msdfs root" -msgstr "" - -#: param/loadparm.c:1019 -msgid "host msdfs" -msgstr "" - -#: param/loadparm.c:1021 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Options Winbind" - -#: param/loadparm.c:1023 -msgid "winbind uid" -msgstr "" - -#: param/loadparm.c:1024 -msgid "winbind gid" -msgstr "" - -#: param/loadparm.c:1025 -msgid "template homedir" -msgstr "" - -#: param/loadparm.c:1026 -msgid "template shell" -msgstr "" - -#: param/loadparm.c:1027 -msgid "winbind separator" -msgstr "" - -#: param/loadparm.c:1028 -msgid "winbind cache time" -msgstr "" - -#: param/loadparm.c:1029 -msgid "winbind enum users" -msgstr "" - -#: param/loadparm.c:1030 -msgid "winbind enum groups" -msgstr "" - - diff --git a/source/po/it.msg b/source/po/it.msg index 708f2165ee3..be447a84d47 100644 --- a/source/po/it.msg +++ b/source/po/it.msg @@ -1,1707 +1,593 @@ # Italian messages for international release of SWAT. # Copyright (C) 2001 Simo Sorce <idra@samba.org> - +# +# 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. +# msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"POT-Creation-Date: 2001-09-20 14:05+0100\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2000-02-08 14:45+0100\n" "Last-Translator: Simo Sorce <idra@samba.org>\n" "Language-Team: (Samba Team) <samba-technical@samba.org>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=US-ASCII\n" +"Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: \n" -#: web/swat.c:120 +#: ../web/swat.c:117 #, c-format -msgid "ERROR: Can't open %s\n" -msgstr "ERRORE: Impossibile aprire %s\n" +msgid "ERROR: Can't open %s" +msgstr "" -#. -#. str = stripspace(parm->label); -#. strlower (str); //monyo -#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A> %s</td><td>", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 +#: ../web/swat.c:200 msgid "Help" msgstr "Aiuto" -#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263 -#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "Imposta Default" -#: web/swat.c:502 +#: ../web/swat.c:408 +#, c-format +msgid "failed to open %s for writing" +msgstr "" + +#: ../web/swat.c:431 +#, c-format +msgid "Can't reload %s" +msgstr "" + +#: ../web/swat.c:501 #, c-format -msgid "Logged in as <b>%s</b><p>\n" +msgid "Logged in as <b>%s</b>" msgstr "Connesso come <b>%s</b><p>\n" -#: web/swat.c:505 +#: ../web/swat.c:505 msgid "Home" msgstr "Home" -#: web/swat.c:507 +#: ../web/swat.c:507 msgid "Globals" msgstr "Globali" -#: web/swat.c:508 +#: ../web/swat.c:508 msgid "Shares" msgstr "Condivisioni" -#: web/swat.c:509 +#: ../web/swat.c:509 msgid "Printers" msgstr "Stampanti" -#: web/swat.c:512 +#: ../web/swat.c:510 +msgid "Wizard" +msgstr "" + +#: ../web/swat.c:513 msgid "Status" msgstr "Stato" -#: web/swat.c:513 +#: ../web/swat.c:514 msgid "View Config" msgstr "Visualizza Configurazione" -#: web/swat.c:515 +#: ../web/swat.c:516 msgid "Password Management" msgstr "Gestione Password" -#: web/swat.c:539 +#: ../web/swat.c:526 +msgid "Current View Is" +msgstr "Configurazione Attuale" + +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" +msgstr "Vista Semplice" + +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" +msgstr "Vista Avanzata" + +#: ../web/swat.c:529 +msgid "Change View To" +msgstr "Cambia Password" + +#: ../web/swat.c:554 msgid "Current Config" msgstr "Configurazione Attuale" -#: web/swat.c:543 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Vista Normale" -#: web/swat.c:545 +#: ../web/swat.c:560 msgid "Full View" msgstr "Vista Completa" -#: web/swat.c:561 -msgid "Global Variables" +#. Here we first set and commit all the parameters that were selected +#. in the previous screen. +#: ../web/swat.c:579 +msgid "Wizard Parameter Edit Page" +msgstr "" + +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" +msgstr "" + +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" +msgstr "" + +#: ../web/swat.c:720 +msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." +msgstr "" + +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." +msgstr "" + +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" +msgstr "" + +#: ../web/swat.c:725 +msgid "Commit" +msgstr "commento" + +#: ../web/swat.c:726 +msgid "Edit Parameter Values" +msgstr "Parametri Stampante" + +#: ../web/swat.c:732 +msgid "Server Type" +msgstr "" + +#: ../web/swat.c:733 +msgid "Stand Alone" +msgstr "" + +#: ../web/swat.c:734 +msgid "Domain Member" +msgstr "master dominio" + +#: ../web/swat.c:735 +msgid "Domain Controller" +msgstr "master dominio" + +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" +msgstr "" + +#: ../web/swat.c:740 +msgid "Configure WINS As" +msgstr "" + +#: ../web/swat.c:741 +msgid "Not Used" +msgstr "non discendere" + +#: ../web/swat.c:742 +msgid "Server for client use" +msgstr "" + +#: ../web/swat.c:743 +msgid "Client of another WINS server" +msgstr "" + +#: ../web/swat.c:745 +msgid "Remote WINS Server" +msgstr "" + +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" +msgstr "" + +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." +msgstr "" + +#: ../web/swat.c:759 +msgid "Expose Home Directories" +msgstr "" + +#: ../web/swat.c:774 +msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." +msgstr "" + +#: ../web/swat.c:787 +msgid "Global Parameters" msgstr "Variabili Globali" -#: web/swat.c:575 web/swat.c:671 web/swat.c:1014 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "Salva Modifiche" -#: web/swat.c:579 web/swat.c:674 web/swat.c:1016 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "Resetta Valori" -#: web/swat.c:581 web/swat.c:676 web/swat.c:1018 -msgid "Advanced View" -msgstr "Vista Avanzata" - -#: web/swat.c:583 web/swat.c:678 web/swat.c:1020 -msgid "Basic View" -msgstr "Vista Semplice" - -#: web/swat.c:613 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Parametri Condivisioni" -#: web/swat.c:642 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "Scegli Condivisione" -#: web/swat.c:656 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Cancella Condivisione" -#: web/swat.c:663 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Crea Condivisione" -#: web/swat.c:708 -msgid "password change in demo mode rejected\n" +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" msgstr "cambio password in modalita' demo rigettata" -#: web/swat.c:747 -msgid " Must specify \"User Name\" \n" -msgstr " \"Nome Utente\" deve essere specificato \n" +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." +msgstr "" + +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " +msgstr " \"Nome Utente\" deve essere specificato " -#: web/swat.c:763 -msgid " Must specify \"Old Password\" \n" -msgstr " \"Vecchia Password\" deve essere specificato \n" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " +msgstr " \"Vecchia Password\" deve essere specificato " -#: web/swat.c:769 -msgid " Must specify \"Remote Machine\" \n" -msgstr " \"Macchina Remota\" deve essere specificato \n" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " +msgstr " \"Macchina Remota\" deve essere specificato " -#: web/swat.c:776 -msgid " Must specify \"New, and Re-typed Passwords\" \n" -msgstr " "Nuova/Conferma Password" devono essere specificati \n" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " +msgstr " \"Nuova/Conferma Password\" devono essere specificati " -#: web/swat.c:782 -msgid " Re-typed password didn't match new password\n" -msgstr " la password di conferma non e' uguale alla nuova password\n" +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " +msgstr " la password di conferma non e' uguale alla nuova password " -#: web/swat.c:812 +#: ../web/swat.c:1048 #, c-format -msgid " The passwd for '%s' has been changed. \n" -msgstr " La password per '%s' e' stata cambiata. \n" +msgid " The passwd for '%s' has been changed." +msgstr " La password per '%s' e' stata cambiata." -#: web/swat.c:814 +#: ../web/swat.c:1051 #, c-format -msgid " The passwd for '%s' has NOT been changed. \n" -msgstr " La password per '%s' non e' stata cambianta. \n" +msgid " The passwd for '%s' has NOT been changed." +msgstr " La password per '%s' non e' stata cambianta." -#: web/swat.c:838 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Gestione Password del Server" #. #. * Create all the dialog boxes for data collection #. -#: web/swat.c:847 web/swat.c:894 -msgid " User Name : " -msgstr " Nome Utente : " +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" +msgstr " Nome Utente" -#: web/swat.c:850 web/swat.c:896 -msgid " Old Password : " -msgstr " Vecchia Password : " +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" +msgstr " Vecchia Password" -#: web/swat.c:853 web/swat.c:898 -msgid " New Password : " -msgstr " Nuova Password : " +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" +msgstr " Nuova Password" -#: web/swat.c:855 web/swat.c:900 -msgid " Re-type New Password : " -msgstr " Conferma nuova Password : " +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" +msgstr " Conferma nuova Password" -#: web/swat.c:863 web/swat.c:911 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "Cambia Password" -#: web/swat.c:866 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "Aggiungi Nuovo Utente" -#: web/swat.c:868 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Cancella Utente" -#: web/swat.c:870 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "Disabilita Utente" -#: web/swat.c:872 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Abilita Utente" -#: web/swat.c:885 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "Gestione Password Client/Server" -#: web/swat.c:902 -msgid " Remote Machine : " -msgstr " Macchina Remota : " +#: ../web/swat.c:1140 +msgid "Remote Machine" +msgstr " Macchina Remota" -#: web/swat.c:940 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "Parametri Stampante" -#: web/swat.c:942 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "Nota Importante:" -#: web/swat.c:943 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "nomi di stampante marcati con [*] nel riquadro a scomparsa Scegli Stampante" -#: web/swat.c:944 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "sono stampanti caricate automaticamente da " -#: web/swat.c:945 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "Nome Printcap" -#: web/swat.c:946 -msgid "Attempting to delete these printers from SWAT will have no effect.\n" +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "Il tentativo di cancellare queste stampanti da sWAT non avara' effetto.\n" -#: web/swat.c:980 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Scegli Stampante" -#: web/swat.c:999 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Cancella Stampante" -#: web/swat.c:1006 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Crea Stampante" -#: web/statuspage.c:40 -msgid "DENY_NONE" -msgstr "" - -#: web/statuspage.c:41 -msgid "DENY_ALL " -msgstr "" - -#: web/statuspage.c:42 -msgid "DENY_DOS " -msgstr "" - -#: web/statuspage.c:43 -msgid "DENY_READ " -msgstr "" - -#: web/statuspage.c:44 -msgid "DENY_WRITE " -msgstr "" - -#: web/statuspage.c:50 +#: ../web/statuspage.c:123 msgid "RDONLY " msgstr "" -#: web/statuspage.c:51 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "" -#: web/statuspage.c:52 +#: ../web/statuspage.c:125 msgid "RDWR " msgstr "" -#: web/statuspage.c:60 -msgid "EXCLUSIVE+BATCH " -msgstr "" - -#: web/statuspage.c:62 -msgid "EXCLUSIVE " -msgstr "" - -#: web/statuspage.c:64 -msgid "BATCH " -msgstr "" - -#: web/statuspage.c:66 -msgid "LEVEL_II " -msgstr "" - -#: web/statuspage.c:68 -msgid "NONE " -msgstr "" - -#: web/statuspage.c:195 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "Stato del Server" -#: web/statuspage.c:200 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "Rinfresco Automatico" -#: web/statuspage.c:201 web/statuspage.c:206 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Intervallo Rinfresco: " -#: web/statuspage.c:205 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Ferma Rinfresco" -#: web/statuspage.c:220 +#: ../web/statuspage.c:334 msgid "version:" msgstr "versione:" -#: web/statuspage.c:223 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "attivo" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "non attivo" -#: web/statuspage.c:226 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "Ferma smbd" -#: web/statuspage.c:228 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "Lancia smbd" -#: web/statuspage.c:230 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Rilancia smbd" -#: web/statuspage.c:235 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "" -#: web/statuspage.c:238 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "Ferma nmbd" -#: web/statuspage.c:240 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "Lancia nmbd" -#: web/statuspage.c:242 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Rilancia nmbd" -#: web/statuspage.c:249 +#: ../web/statuspage.c:364 +msgid "winbindd:" +msgstr "" + +#: ../web/statuspage.c:368 +msgid "Stop winbindd" +msgstr "Ferma nmbd" + +#: ../web/statuspage.c:370 +msgid "Start winbindd" +msgstr "Lancia nmbd" + +#: ../web/statuspage.c:372 +msgid "Restart winbindd" +msgstr "Rilancia nmbd" + +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" +msgstr "" + +#: ../web/statuspage.c:382 +msgid "Restart All" +msgstr "Rilancia nmbd" + +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" +msgstr "Lancia nmbd" + +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Connessioni Attive" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "" -#: web/statuspage.c:251 web/statuspage.c:264 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "" -#: web/statuspage.c:251 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "indirizzo IP" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "Data" -#: web/statuspage.c:253 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Termina" -#: web/statuspage.c:261 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "Condivisioni Attive" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Condivisione" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "User" msgstr "Utente" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Gruppo" -#: web/statuspage.c:270 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "File Aperti" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "File" msgstr "" -#: param/loadparm.c:641 -msgid "Base Options" -msgstr "Opzioni Basilari" - -#: param/loadparm.c:643 -msgid "dos charset" -msgstr "set caratteri dos" - -#: param/loadparm.c:644 -msgid "unix charset" -msgstr "set caratteri unix" - -#: param/loadparm.c:645 -msgid "display charset" -msgstr "set caratteri display" - -#: param/loadparm.c:646 -msgid "comment" -msgstr "commento" - -#: param/loadparm.c:647 -msgid "path" -msgstr "percorso" - -#: param/loadparm.c:648 -msgid "directory" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" msgstr "" -#: param/loadparm.c:649 -msgid "workgroup" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" msgstr "" -#: param/loadparm.c:650 -msgid "netbios name" -msgstr "nome netbios" - -#: param/loadparm.c:651 -msgid "netbios aliases" -msgstr "alias netbios" - -#: param/loadparm.c:652 -msgid "netbios scope" -msgstr "scope netbios" - -#: param/loadparm.c:653 -msgid "server string" -msgstr "stringa server" - -#: param/loadparm.c:654 -msgid "interfaces" -msgstr "interfacce" - -#: param/loadparm.c:655 -msgid "bind interfaces only" -msgstr "usa solo interfacce definite" +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "Opzioni Basilari" -#: param/loadparm.c:657 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "Opzioni di Sicurezza" -#: param/loadparm.c:659 -msgid "security" -msgstr "sicurezza" - -#: param/loadparm.c:660 -msgid "encrypt passwords" -msgstr "password cryptate" - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "aggiorna criptate" - -#: param/loadparm.c:662 -msgid "allow trusted domains" -msgstr "permetti domini trusted" - -#: param/loadparm.c:663 -msgid "alternate permissions" -msgstr "permessi alternativi" - -#: param/loadparm.c:664 -msgid "hosts equiv" -msgstr "" - -#: param/loadparm.c:665 -msgid "min passwd length" -msgstr "minima lunghezza passwd" - -#: param/loadparm.c:666 -msgid "min password length" -msgstr "minima lunghezza password" - -#: param/loadparm.c:667 -msgid "map to guest" -msgstr "mappa su ospite" - -#: param/loadparm.c:668 -msgid "null passwords" -msgstr "password nulle" - -#: param/loadparm.c:669 -msgid "obey pam restrictions" -msgstr "usa restrizioni pam" - -#: param/loadparm.c:670 -msgid "password server" -msgstr "" - -#: param/loadparm.c:671 -msgid "smb passwd file" -msgstr "" - -#: param/loadparm.c:672 -msgid "private dir" -msgstr "directory privata" - -#: param/loadparm.c:673 -msgid "passdb module path" -msgstr "percorso modulo passdb" - -#: param/loadparm.c:674 -msgid "root directory" -msgstr "" - -#: param/loadparm.c:675 -msgid "root dir" -msgstr "" - -#: param/loadparm.c:676 -msgid "root" -msgstr "" - -#: param/loadparm.c:678 -msgid "pam password change" -msgstr "" - -#: param/loadparm.c:679 -msgid "passwd program" -msgstr "" - -#: param/loadparm.c:680 -msgid "passwd chat" -msgstr "" - -#: param/loadparm.c:681 -msgid "passwd chat debug" -msgstr "" - -#: param/loadparm.c:682 -msgid "username map" -msgstr "mappa nomi utenti" - -#: param/loadparm.c:683 -msgid "password level" -msgstr "livello password" - -#: param/loadparm.c:684 -msgid "username level" -msgstr "livello nome utente" - -#: param/loadparm.c:685 -msgid "unix password sync" -msgstr "sincronizza password unix" - -#: param/loadparm.c:686 -msgid "restrict anonymous" -msgstr "limita anonimo" - -#: param/loadparm.c:687 -msgid "lanman auth" -msgstr "" - -#: param/loadparm.c:688 -msgid "ntlm auth" -msgstr "" - -#: param/loadparm.c:689 -msgid "plaintext to smbpasswd" -msgstr "da plaintext a smbpasswd" - -#: param/loadparm.c:690 -msgid "use rhosts" -msgstr "usa rhosts" - -#: param/loadparm.c:692 -msgid "username" -msgstr "nome utente" - -#: param/loadparm.c:693 -msgid "user" -msgstr "utente" - -#: param/loadparm.c:694 -msgid "users" -msgstr "utenti" - -#: param/loadparm.c:696 -msgid "guest account" -msgstr "account ospite" - -#: param/loadparm.c:697 -msgid "invalid users" -msgstr "utenti non validi" - -#: param/loadparm.c:698 -msgid "valid users" -msgstr "utenti validi" - -#: param/loadparm.c:699 -msgid "admin users" -msgstr "utenti amministratori" - -#: param/loadparm.c:700 -msgid "read list" -msgstr "" - -#: param/loadparm.c:701 -msgid "write list" -msgstr "" - -#: param/loadparm.c:702 -msgid "printer admin" -msgstr "amministratore stmapnati" - -#: param/loadparm.c:703 -msgid "force user" -msgstr "forza utente" - -#: param/loadparm.c:704 -msgid "force group" -msgstr "forza gruppo" - -#: param/loadparm.c:705 -msgid "group" -msgstr "gruppo" - -#: param/loadparm.c:707 -msgid "read only" -msgstr "sola lettura" - -#: param/loadparm.c:708 -msgid "write ok" -msgstr "ok scrittura" - -#: param/loadparm.c:709 -msgid "writeable" -msgstr "scrivibile" - -#: param/loadparm.c:710 -msgid "writable" -msgstr "scrivibile" - -#: param/loadparm.c:712 -msgid "create mask" -msgstr "" - -#: param/loadparm.c:713 -msgid "create mode" -msgstr "" - -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "forza create mode" - -#: param/loadparm.c:715 -msgid "security mask" -msgstr "" - -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "forza security mode" - -#: param/loadparm.c:717 -msgid "directory mask" -msgstr "" - -#: param/loadparm.c:718 -msgid "directory mode" -msgstr "" - -#: param/loadparm.c:719 -msgid "force directory mode" -msgstr "forza directory mode" - -#: param/loadparm.c:720 -msgid "directory security mask" -msgstr "" - -#: param/loadparm.c:721 -msgid "force directory security mode" -msgstr "forza directory security mode" - -#: param/loadparm.c:722 -msgid "inherit permissions" -msgstr "eredita permessi" - -#: param/loadparm.c:723 -msgid "guest only" -msgstr "solo ospite" - -#: param/loadparm.c:724 -msgid "only guest" -msgstr "solo ospite" - -#: param/loadparm.c:726 -msgid "guest ok" -msgstr "ok ospite" - -#: param/loadparm.c:727 -msgid "public" -msgstr "pubblico" - -#: param/loadparm.c:729 -msgid "only user" -msgstr "solo utente" - -#: param/loadparm.c:730 -msgid "hosts allow" -msgstr "permetti hosts" - -#: param/loadparm.c:731 -msgid "allow hosts" -msgstr "permetti hosts" - -#: param/loadparm.c:732 -msgid "hosts deny" -msgstr "vieta hosts" - -#: param/loadparm.c:733 -msgid "deny hosts" -msgstr "vieta hosts" - -#: param/loadparm.c:736 -msgid "Secure Socket Layer Options" -msgstr "Opzioni Secure Socket Layer" - -#: param/loadparm.c:737 -msgid "ssl" -msgstr "" - -#: param/loadparm.c:739 -msgid "ssl hosts" -msgstr "" - -#: param/loadparm.c:740 -msgid "ssl hosts resign" -msgstr "" - -#: param/loadparm.c:741 -msgid "ssl CA certDir" -msgstr "" - -#: param/loadparm.c:742 -msgid "ssl CA certFile" -msgstr "" - -#: param/loadparm.c:743 -msgid "ssl server cert" -msgstr "" - -#: param/loadparm.c:744 -msgid "ssl server key" -msgstr "" - -#: param/loadparm.c:745 -msgid "ssl client cert" -msgstr "" - -#: param/loadparm.c:746 -msgid "ssl client key" -msgstr "" - -#: param/loadparm.c:747 -msgid "ssl require clientcert" -msgstr "ssl richiede certificato client" - -#: param/loadparm.c:748 -msgid "ssl require servercert" -msgstr "ssl richiede certificato server" - -#: param/loadparm.c:749 -msgid "ssl ciphers" -msgstr "" - -#: param/loadparm.c:750 -msgid "ssl version" -msgstr "ssl versione" - -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "" - -#: param/loadparm.c:754 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Opzioni di Log" -#: param/loadparm.c:755 -msgid "log level" -msgstr "livello log" - -#: param/loadparm.c:756 -msgid "debuglevel" -msgstr "livello debug" - -#: param/loadparm.c:757 -msgid "syslog" -msgstr "" - -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "solo syslog" - -#: param/loadparm.c:759 -msgid "log file" -msgstr "file di log" - -#: param/loadparm.c:761 -msgid "max log size" -msgstr "massima dimensione log" - -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "" - -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "" - -#: param/loadparm.c:764 -msgid "debug hires timestamp" -msgstr "" - -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "" - -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "" - -#: param/loadparm.c:768 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "Opzioni Protocollo" -#: param/loadparm.c:770 -msgid "protocol" -msgstr "protocollo" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "" - -#: param/loadparm.c:772 -msgid "max protocol" -msgstr "protocollo massimo" - -#: param/loadparm.c:773 -msgid "min protocol" -msgstr "protocollo minimo" - -#: param/loadparm.c:774 -msgid "unicode" -msgstr "" - -#: param/loadparm.c:775 -msgid "read bmpx" -msgstr "" - -#: param/loadparm.c:776 -msgid "read raw" -msgstr "" - -#: param/loadparm.c:777 -msgid "write raw" -msgstr "" - -#: param/loadparm.c:779 -msgid "nt smb support" -msgstr "supporto smb nt" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "supporto pipe nt" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "supporto acl nt" - -#: param/loadparm.c:782 -msgid "announce version" -msgstr "annuncia versione" - -#: param/loadparm.c:783 -msgid "announce as" -msgstr "annuncia come" - -#: param/loadparm.c:784 -msgid "max mux" -msgstr "mux massimo" - -#: param/loadparm.c:785 -msgid "max xmit" -msgstr "xmit massimo" - -#: param/loadparm.c:787 -msgid "name resolve order" -msgstr "ordine risoluzione nomi" - -#: param/loadparm.c:788 -msgid "max packet" -msgstr "pacchetto massimo" - -#: param/loadparm.c:789 -msgid "packet size" -msgstr "dimensione pacchetto" - -#: param/loadparm.c:790 -msgid "max ttl" -msgstr "ttl massimo" - -#: param/loadparm.c:791 -msgid "max wins ttl" -msgstr "wins ttl massimo" - -#: param/loadparm.c:792 -msgid "min wins ttl" -msgstr "wins ttl minimo" - -#: param/loadparm.c:793 -msgid "time server" -msgstr "" - -#: param/loadparm.c:795 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "Opzioni Tuning" -#: param/loadparm.c:797 -msgid "change notify timeout" -msgstr "" - -#: param/loadparm.c:798 -msgid "deadtime" -msgstr "" - -#: param/loadparm.c:799 -msgid "getwd cache" -msgstr "" - -#: param/loadparm.c:800 -msgid "keepalive" -msgstr "" - -#: param/loadparm.c:802 -msgid "lpq cache time" -msgstr "" - -#: param/loadparm.c:803 -msgid "max smbd processes" -msgstr "massimo n. processi smbd" - -#: param/loadparm.c:804 -msgid "max connections" -msgstr "massimo n. connessioni" - -#: param/loadparm.c:805 -msgid "paranoid server security" -msgstr "" - -#: param/loadparm.c:806 -msgid "max disk size" -msgstr "massima dimensione disco" - -#: param/loadparm.c:807 -msgid "max open files" -msgstr "massimo n. file aperti" - -#: param/loadparm.c:808 -msgid "min print space" -msgstr "spazio stampa minimo" - -#: param/loadparm.c:809 -msgid "read size" -msgstr "" - -#: param/loadparm.c:811 -msgid "socket options" -msgstr "opzioni socket" - -#: param/loadparm.c:812 -msgid "stat cache size" -msgstr "dimensione stat cache" - -#: param/loadparm.c:813 -msgid "strict allocate" -msgstr "allocazione stretta" - -#: param/loadparm.c:814 -msgid "strict sync" -msgstr "sincronizzazione stretta" - -#: param/loadparm.c:815 -msgid "sync always" -msgstr "sincronizza sempre" - -#: param/loadparm.c:816 -msgid "use mmap" -msgstr "usa mmap" - -#: param/loadparm.c:817 -msgid "hostname lookups" -msgstr "" - -#: param/loadparm.c:818 -msgid "write cache size" -msgstr "dimensione write cache" - -#: param/loadparm.c:820 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "Opzioni di Stampa" -#: param/loadparm.c:822 -msgid "total print jobs" -msgstr "job stampa totali" - -#: param/loadparm.c:823 -msgid "max print jobs" -msgstr "massimo n. job stampa" - -#: param/loadparm.c:824 -msgid "load printers" -msgstr "carica stampanti" - -#: param/loadparm.c:825 -msgid "printcap name" -msgstr "nome printcap" - -#: param/loadparm.c:826 -msgid "printcap" -msgstr "" - -#: param/loadparm.c:827 -msgid "printable" -msgstr "stmpabile" - -#: param/loadparm.c:828 -msgid "print ok" -msgstr "ok stampa" - -#: param/loadparm.c:829 -msgid "postscript" -msgstr "" - -#: param/loadparm.c:830 -msgid "printing" -msgstr "stampa" - -#: param/loadparm.c:831 -msgid "print command" -msgstr "comando stampa" - -#: param/loadparm.c:832 -msgid "disable spoolss" -msgstr "disabilita spoolss" - -#: param/loadparm.c:833 -msgid "lpq command" -msgstr "comando lpq" - -#: param/loadparm.c:834 -msgid "lprm command" -msgstr "comando lprm" - -#: param/loadparm.c:835 -msgid "lppause command" -msgstr "comando lppause" - -#: param/loadparm.c:836 -msgid "lpresume command" -msgstr "comando lpresume" - -#: param/loadparm.c:837 -msgid "queuepause command" -msgstr "comando queuepause" - -#: param/loadparm.c:838 -msgid "queueresume command" -msgstr "comando queueresume" - -#: param/loadparm.c:840 -msgid "enumports command" -msgstr "cmando enumports" - -#: param/loadparm.c:841 -msgid "addprinter command" -msgstr "comando addprinter" - -#: param/loadparm.c:842 -msgid "deleteprinter command" -msgstr "comando deleteprinter" - -#: param/loadparm.c:843 -msgid "show add printer wizard" -msgstr "mostra wizard aggiungi stampanti" - -#: param/loadparm.c:844 -msgid "os2 driver map" -msgstr "mappa driver os2" - -#: param/loadparm.c:846 -msgid "printer name" -msgstr "nome stampante" - -#: param/loadparm.c:847 -msgid "printer" -msgstr "stampante" - -#: param/loadparm.c:848 -msgid "use client driver" -msgstr "usa client driver" - -#: param/loadparm.c:849 -msgid "printer driver" -msgstr "driver stampante" - -#: param/loadparm.c:850 -msgid "printer driver file" -msgstr "file driver stampante" - -#: param/loadparm.c:851 -msgid "printer driver location" -msgstr "posizione driver stampante" - -#: param/loadparm.c:853 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Gestione Nomi File" -#: param/loadparm.c:854 -msgid "strip dot" -msgstr "togli il punto" - -#: param/loadparm.c:856 -msgid "mangled stack" -msgstr "" - -#: param/loadparm.c:857 -msgid "default case" -msgstr "" - -#: param/loadparm.c:858 -msgid "case sensitive" -msgstr "" - -#: param/loadparm.c:859 -msgid "casesignames" -msgstr "" - -#: param/loadparm.c:860 -msgid "preserve case" -msgstr "" - -#: param/loadparm.c:861 -msgid "short preserve case" -msgstr "" - -#: param/loadparm.c:862 -msgid "mangle case" -msgstr "" - -#: param/loadparm.c:863 -msgid "mangling char" -msgstr "" - -#: param/loadparm.c:864 -msgid "hide dot files" -msgstr "" - -#: param/loadparm.c:865 -msgid "hide unreadable" -msgstr "" - -#: param/loadparm.c:866 -msgid "delete veto files" -msgstr "" - -#: param/loadparm.c:867 -msgid "veto files" -msgstr "" - -#: param/loadparm.c:868 -msgid "hide files" -msgstr "nascondi file" - -#: param/loadparm.c:869 -msgid "veto oplock files" -msgstr "" - -#: param/loadparm.c:870 -msgid "map system" -msgstr "mappa system" - -#: param/loadparm.c:871 -msgid "map hidden" -msgstr "mappa hidden" - -#: param/loadparm.c:872 -msgid "map archive" -msgstr "mappa archive" - -#: param/loadparm.c:873 -msgid "mangled names" -msgstr "" - -#: param/loadparm.c:874 -msgid "mangled map" -msgstr "" - -#: param/loadparm.c:875 -msgid "stat cache" -msgstr "" - -#: param/loadparm.c:877 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Opzioni Dominio" -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "gruppo amministratori dominio" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "gruppo ospiti dominio" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "mappa nome gruppo" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "" - -#: param/loadparm.c:888 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Opzioni di Logon" -#: param/loadparm.c:890 -msgid "add user script" -msgstr "" - -#: param/loadparm.c:891 -msgid "delete user script" -msgstr "" - -#: param/loadparm.c:892 -msgid "add group script" -msgstr "" - -#: param/loadparm.c:893 -msgid "delete group script" -msgstr "" - -#: param/loadparm.c:894 -msgid "add user to group script" -msgstr "" - -#: param/loadparm.c:895 -msgid "delete user from group script" -msgstr "" - -#: param/loadparm.c:896 -msgid "add machine script" -msgstr "" - -#: param/loadparm.c:897 -msgid "shutdown script" -msgstr "" - -#: param/loadparm.c:898 -msgid "abort shutdown script" -msgstr "" - -#: param/loadparm.c:900 -msgid "logon script" -msgstr "" - -#: param/loadparm.c:901 -msgid "logon path" -msgstr "" - -#: param/loadparm.c:902 -msgid "logon drive" -msgstr "" - -#: param/loadparm.c:903 -msgid "logon home" -msgstr "" - -#: param/loadparm.c:904 -msgid "domain logons" -msgstr "" - -#: param/loadparm.c:906 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Opzioni Browsing" -#: param/loadparm.c:908 -msgid "os level" -msgstr "livello os" - -#: param/loadparm.c:909 -msgid "lm announce" -msgstr "annuncio lm" - -#: param/loadparm.c:910 -msgid "lm interval" -msgstr "intervallo lm" - -#: param/loadparm.c:911 -msgid "preferred master" -msgstr "master preferito" - -#: param/loadparm.c:912 -msgid "prefered master" -msgstr "master preferito" - -#: param/loadparm.c:913 -msgid "local master" -msgstr "master locale" - -#: param/loadparm.c:914 -msgid "domain master" -msgstr "master dominio" - -#: param/loadparm.c:915 -msgid "browse list" -msgstr "lista browsing" - -#: param/loadparm.c:916 -msgid "browseable" -msgstr "" - -#: param/loadparm.c:917 -msgid "browsable" -msgstr "" - -#: param/loadparm.c:918 -msgid "enhanced browsing" -msgstr "" - -#: param/loadparm.c:920 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "opzioni WINS" -#: param/loadparm.c:921 -msgid "dns proxy" -msgstr "" - -#: param/loadparm.c:922 -msgid "wins proxy" -msgstr "" - -#: param/loadparm.c:924 -msgid "wins server" -msgstr "" - -#: param/loadparm.c:925 -msgid "wins support" -msgstr "" - -#: param/loadparm.c:926 -msgid "wins hook" -msgstr "" - -#: param/loadparm.c:928 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Opzioni Locking" -#: param/loadparm.c:930 -msgid "blocking locks" -msgstr "" - -#: param/loadparm.c:931 -msgid "fake oplocks" -msgstr "" - -#: param/loadparm.c:932 -msgid "kernel oplocks" -msgstr "" - -#: param/loadparm.c:933 -msgid "locking" -msgstr "" - -#: param/loadparm.c:935 -msgid "oplocks" -msgstr "" - -#: param/loadparm.c:936 -msgid "level2 oplocks" -msgstr "" - -#: param/loadparm.c:937 -msgid "oplock break wait time" -msgstr "" - -#: param/loadparm.c:938 -msgid "oplock contention limit" -msgstr "" - -#: param/loadparm.c:939 -msgid "posix locking" -msgstr "" - -#: param/loadparm.c:940 -msgid "strict locking" -msgstr "" - -#: param/loadparm.c:941 -msgid "share modes" -msgstr "" - -#: param/loadparm.c:944 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "Opzioni Ldap" -#: param/loadparm.c:946 -msgid "ldap server" -msgstr "" - -#: param/loadparm.c:947 -msgid "ldap port" -msgstr "" - -#: param/loadparm.c:948 -msgid "ldap suffix" -msgstr "" - -#: param/loadparm.c:949 -msgid "ldap filter" -msgstr "" - -#: param/loadparm.c:950 -msgid "ldap root" -msgstr "" - -#: param/loadparm.c:951 -msgid "ldap root passwd" -msgstr "" - -#: param/loadparm.c:954 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Opzioni Generiche" -#: param/loadparm.c:955 -msgid "add share command" -msgstr "" - -#: param/loadparm.c:956 -msgid "change share command" -msgstr "" - -#: param/loadparm.c:957 -msgid "delete share command" -msgstr "" - -#: param/loadparm.c:959 -msgid "config file" -msgstr "file configurazione" - -#: param/loadparm.c:960 -msgid "preload" -msgstr "precarica" - -#: param/loadparm.c:961 -msgid "auto services" -msgstr "" - -#: param/loadparm.c:962 -msgid "lock dir" -msgstr "" - -#: param/loadparm.c:963 -msgid "lock directory" -msgstr "" - -#: param/loadparm.c:965 -msgid "utmp directory" -msgstr "" - -#: param/loadparm.c:966 -msgid "wtmp directory" -msgstr "" - -#: param/loadparm.c:967 -msgid "utmp" -msgstr "" - -#: param/loadparm.c:970 -msgid "default service" -msgstr "" - -#: param/loadparm.c:971 -msgid "default" -msgstr "" - -#: param/loadparm.c:972 -msgid "message command" -msgstr "comando message" - -#: param/loadparm.c:973 -msgid "dfree command" -msgstr "comando dfree" - -#: param/loadparm.c:974 -msgid "remote announce" -msgstr "annuncio remoto" - -#: param/loadparm.c:975 -msgid "remote browse sync" -msgstr "" - -#: param/loadparm.c:976 -msgid "socket address" -msgstr "" - -#: param/loadparm.c:977 -msgid "homedir map" -msgstr "" - -#: param/loadparm.c:978 -msgid "time offset" -msgstr "" - -#: param/loadparm.c:979 -msgid "NIS homedir" -msgstr "" - -#: param/loadparm.c:980 -msgid "-valid" -msgstr "" - -#: param/loadparm.c:982 -msgid "copy" -msgstr "copia" - -#: param/loadparm.c:983 -msgid "include" -msgstr "includi" - -#: param/loadparm.c:984 -msgid "exec" -msgstr "esegui" - -#: param/loadparm.c:985 -msgid "preexec" -msgstr "pre-esegui" - -#: param/loadparm.c:987 -msgid "preexec close" -msgstr "pre-esegui e chiudi" - -#: param/loadparm.c:988 -msgid "postexec" -msgstr "post-esegui" - -#: param/loadparm.c:989 -msgid "root preexec" -msgstr "root pre-esegui" - -#: param/loadparm.c:990 -msgid "root preexec close" -msgstr "root pre-esegui e chiudi" - -#: param/loadparm.c:991 -msgid "root postexec" -msgstr "root post-esegui" - -#: param/loadparm.c:992 -msgid "available" -msgstr "disponibile" - -#: param/loadparm.c:993 -msgid "volume" -msgstr "" - -#: param/loadparm.c:994 -msgid "fstype" -msgstr "tipo file system" - -#: param/loadparm.c:995 -msgid "set directory" -msgstr "" - -#: param/loadparm.c:996 -msgid "source environment" -msgstr "" - -#: param/loadparm.c:997 -msgid "wide links" -msgstr "" - -#: param/loadparm.c:998 -msgid "follow symlinks" -msgstr "" - -#: param/loadparm.c:999 -msgid "dont descend" -msgstr "non discendere" - -#: param/loadparm.c:1000 -msgid "magic script" -msgstr "" - -#: param/loadparm.c:1001 -msgid "magic output" -msgstr "" - -#: param/loadparm.c:1002 -msgid "delete readonly" -msgstr "cancella sola-lettura" - -#: param/loadparm.c:1003 -msgid "dos filemode" -msgstr "" - -#: param/loadparm.c:1004 -msgid "dos filetimes" -msgstr "" - -#: param/loadparm.c:1005 -msgid "dos filetime resolution" -msgstr "" - -#: param/loadparm.c:1007 -msgid "fake directory create times" -msgstr "" - -#: param/loadparm.c:1008 -msgid "panic action" -msgstr "" - -#: param/loadparm.c:1009 -msgid "hide local users" -msgstr "nascondi utenti locali" - -#: param/loadparm.c:1012 -msgid "VFS options" +#: ../param/loadparm.c:1138 +msgid "VFS module options" msgstr "Opzioni VFS" -#: param/loadparm.c:1014 -msgid "vfs object" -msgstr "" - -#: param/loadparm.c:1015 -msgid "vfs options" -msgstr "" - -#: param/loadparm.c:1018 -msgid "msdfs root" -msgstr "" - -#: param/loadparm.c:1019 -msgid "host msdfs" -msgstr "" - -#: param/loadparm.c:1021 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Opzioni Winbind" - -#: param/loadparm.c:1023 -msgid "winbind uid" -msgstr "" - -#: param/loadparm.c:1024 -msgid "winbind gid" -msgstr "" - -#: param/loadparm.c:1025 -msgid "template homedir" -msgstr "" - -#: param/loadparm.c:1026 -msgid "template shell" -msgstr "" - -#: param/loadparm.c:1027 -msgid "winbind separator" -msgstr "" - -#: param/loadparm.c:1028 -msgid "winbind cache time" -msgstr "" - -#: param/loadparm.c:1029 -msgid "winbind enum users" -msgstr "" - -#: param/loadparm.c:1030 -msgid "winbind enum groups" -msgstr "" diff --git a/source/po/ja.msg b/source/po/ja.msg index e77f34e3c44..affb2764141 100644 --- a/source/po/ja.msg +++ b/source/po/ja.msg @@ -1,5 +1,6 @@ # Japanese messages for international release of SWAT. -# Copyright (C) 2001 Ryo Kawahara <rkawa@lbe.co.jp>, 2000. +# Copyright (C) 2003 TAKAHASHI Motonobu <monyo@samba.org> +# Copyright (C) 2000 Ryo Kawahara <rkawa@lbe.co.jp> # # 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 @@ -17,1805 +18,578 @@ # msgid "" msgstr "" -"Project-Id-Version: i18n-swatE VERSION\n" -"POT-Creation-Date: 2001-09-20 20:29+0900\n" -"PO-Revision-Date: 2000-04-03 17:55+09:00\n" -"Last-Translator: TAKAHASHI Motonobu <monyo@samba.gr.jp>\n" -"Language-Team: Samba Team <samba-technical@samba.org>\n" +"Project-Id-Version: i18n-swat\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" +"PO-Revision-Date: 2003-09-23 04:38+900\n" +"Last-Translator: TAKAHASHI Motonobu <monyo@samba.org>\n" +"Language-Team: Samba Users Group Japan <sugj-tech@samba.gr.jp>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=Shift_JIS\n" -"Content-Transfer-Encoding: \n" +"Content-Type: text/plain; charset=CP932\n" +"Content-Transfer-Encoding: 8bit\n" -#: web/swat.c:120 +#: ../web/swat.c:117 #, c-format -msgid "ERROR: Can't open %s\n" -msgstr "%s をオープンできません\n" +msgid "ERROR: Can't open %s" +msgstr "%s をオープンできません" -#. -#. str = stripspace(parm->label); -#. strlower (str); //monyo -#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A> %s</td><td>", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 +#: ../web/swat.c:200 msgid "Help" -msgstr "説明" +msgstr "ヘルプ" -#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263 -#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" -msgstr "既定値に戻す" +msgstr "デフォルト値" + +#: ../web/swat.c:408 +#, c-format +msgid "failed to open %s for writing" +msgstr "%s を書き込み用にオープンできません" + +#: ../web/swat.c:431 +#, c-format +msgid "Can't reload %s" +msgstr "%s を再読み込みできません\n" -#: web/swat.c:502 +# msgid "Logged in as <b>%s</b><p>\n" +#: ../web/swat.c:501 #, c-format -msgid "Logged in as <b>%s</b><p>\n" -msgstr "<b>%s</b>としてログイン<p>\n" +msgid "Logged in as <b>%s</b>" +msgstr "<b>%s</b>としてログイン" -#: web/swat.c:505 +#: ../web/swat.c:505 msgid "Home" msgstr "ホーム" -#: web/swat.c:507 +#: ../web/swat.c:507 msgid "Globals" -msgstr "全体設定" +msgstr "グローバル" -#: web/swat.c:508 +#: ../web/swat.c:508 msgid "Shares" -msgstr "共有設定" +msgstr "ファイル共有" -#: web/swat.c:509 +#: ../web/swat.c:509 msgid "Printers" -msgstr "プリンタ設定" +msgstr "印刷共有" -#: web/swat.c:512 +#: ../web/swat.c:510 +msgid "Wizard" +msgstr "ウィザード" + +#: ../web/swat.c:513 msgid "Status" -msgstr "動作状況" +msgstr "サーバの状態" -#: web/swat.c:513 +#: ../web/swat.c:514 msgid "View Config" -msgstr "設定表\示" +msgstr "現在の設定" -#: web/swat.c:515 +#: ../web/swat.c:516 msgid "Password Management" -msgstr "パスワード管理・ユーザ管理" +msgstr "パスワード管理" + +#: ../web/swat.c:526 +msgid "Current View Is" +msgstr "現在の表示モード" + +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" +msgstr "標準表示" -#: web/swat.c:539 +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" +msgstr "詳細表示" + +#: ../web/swat.c:529 +msgid "Change View To" +msgstr "表示モードの変更" + +#: ../web/swat.c:554 msgid "Current Config" msgstr "現在の設定" -#: web/swat.c:543 +#: ../web/swat.c:558 msgid "Normal View" msgstr "標準表示" -#: web/swat.c:545 +#: ../web/swat.c:560 msgid "Full View" msgstr "完全表示" -#: web/swat.c:561 -msgid "Global Variables" -msgstr "全体設定" +#. Here we first set and commit all the parameters that were selected +#. in the previous screen. +#: ../web/swat.c:579 +msgid "Wizard Parameter Edit Page" +msgstr "ウィザードによるパラメータ編集ページ" -#: web/swat.c:575 web/swat.c:671 web/swat.c:1014 -msgid "Commit Changes" -msgstr "設定変更" +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" +msgstr "smb.conf ファイルが書き換えられました。" -#: web/swat.c:579 web/swat.c:674 web/swat.c:1016 -msgid "Reset Values" -msgstr "リセット" +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" +msgstr "Samba 設定ウィザード" -#: web/swat.c:581 web/swat.c:676 web/swat.c:1018 -msgid "Advanced View" -msgstr "詳細表示" +#: ../web/swat.c:720 +msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." +msgstr "「smb.conf の書換」ボタンを押すと smb.conf ファイル中のすべてのデフォルト値やコメントは削除されます。" -#: web/swat.c:583 web/swat.c:678 web/swat.c:1020 -msgid "Basic View" -msgstr "標準表示" +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." +msgstr "「commit」ボタンを押した場合にも同様の変更が行なわれます。" + +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" +msgstr "smb.conf の書換" + +#: ../web/swat.c:725 +msgid "Commit" +msgstr "設定を反映" + +#: ../web/swat.c:726 +msgid "Edit Parameter Values" +msgstr "各パラメータの編集" + +#: ../web/swat.c:732 +msgid "Server Type" +msgstr "サーバタイプ" -#: web/swat.c:613 +#: ../web/swat.c:733 +msgid "Stand Alone" +msgstr "スタンドアロン" + +#: ../web/swat.c:734 +msgid "Domain Member" +msgstr "ドメインメンバ" + +#: ../web/swat.c:735 +msgid "Domain Controller" +msgstr "ドメインコントローラ" + +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" +msgstr "通常の形式ではない - 新しいモードを選択のこと" + +#: ../web/swat.c:740 +msgid "Configure WINS As" +msgstr "WINS" + +#: ../web/swat.c:741 +msgid "Not Used" +msgstr "使わない" + +#: ../web/swat.c:742 +msgid "Server for client use" +msgstr "サーバとして構成" + +#: ../web/swat.c:743 +msgid "Client of another WINS server" +msgstr "別の WINS サーバのクライアントとして構成" + +#: ../web/swat.c:745 +msgid "Remote WINS Server" +msgstr "別の WINS サーバ" + +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" +msgstr "エラー: wins server と wins support の両パラメータが smb.conf で指定されています" + +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." +msgstr "いずれかの WINS モードを選択してください。" + +#: ../web/swat.c:759 +msgid "Expose Home Directories" +msgstr "ホームディレクトリの公開" + +#: ../web/swat.c:774 +msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." +msgstr "上記の設定オプションにより、複数のパラメータが同期して設定されるため、 Samba の運用を迅速に開始する上での助けとなるでしょう。" + +#: ../web/swat.c:787 +msgid "Global Parameters" +msgstr "Global パラメータ" + +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 +msgid "Commit Changes" +msgstr "変更を反映" + +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 +msgid "Reset Values" +msgstr "変更を取消" + +#: ../web/swat.c:844 msgid "Share Parameters" -msgstr "共有設定" +msgstr "ファイル共有 パラメータ" -#: web/swat.c:642 +#: ../web/swat.c:887 msgid "Choose Share" -msgstr "共有選択" +msgstr "ファイル共有の選択" -#: web/swat.c:656 +#: ../web/swat.c:901 msgid "Delete Share" -msgstr "共有削除" +msgstr "ファイル共有の削除" -#: web/swat.c:663 +#: ../web/swat.c:908 msgid "Create Share" -msgstr "新規共有作成" +msgstr "ファイル共有の作成" + +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" +msgstr "デモ・モードでのパスワード変更はできません" -#: web/swat.c:708 -msgid "password change in demo mode rejected\n" -msgstr "デモ・モードでのパスワード変更はできません\n" +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." +msgstr "パスワード・データベースが見つけられません" -#: web/swat.c:747 -msgid " Must specify \"User Name\" \n" -msgstr "「ユーザ名」を入力ください\n" +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " +msgstr "「ユーザ名」欄に入力してください" -#: web/swat.c:763 -msgid " Must specify \"Old Password\" \n" -msgstr "「旧パスワード」を入力してください\n" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " +msgstr "「旧パスワード」欄に入力してください" -#: web/swat.c:769 -msgid " Must specify \"Remote Machine\" \n" -msgstr "「リモート マシン」を入力してください\n" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " +msgstr "「リモートマシン」欄に入力してください" -#: web/swat.c:776 -msgid " Must specify \"New, and Re-typed Passwords\" \n" -msgstr "「新パスワード」を入力し、再入力もしてください\n" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " +msgstr "「新パスワード」欄と「新パスワードの再入力」欄に入力してください" -#: web/swat.c:782 -msgid " Re-typed password didn't match new password\n" -msgstr "新パスワードの再入力が間違っています\n" +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " +msgstr "「新パスワードの再入力」欄の入力内容が「新パスワード」欄の入力と一致していません。" -#: web/swat.c:812 +#: ../web/swat.c:1048 #, c-format -msgid " The passwd for '%s' has been changed. \n" -msgstr " '%s' のパスワードは変更されました \n" +msgid " The passwd for '%s' has been changed." +msgstr " %s のパスワードは変更されました。" -#: web/swat.c:814 +#: ../web/swat.c:1051 #, c-format -msgid " The passwd for '%s' has NOT been changed. \n" -msgstr " '%s' のパスワードは変更されませんでした \n" +msgid " The passwd for '%s' has NOT been changed." +msgstr " '%s' のパスワードは変更されませんでした。" -#: web/swat.c:838 +#: ../web/swat.c:1076 msgid "Server Password Management" -msgstr "ローカル マシンのパスワード管理" +msgstr "ローカルマシンのパスワード管理" #. #. * Create all the dialog boxes for data collection #. -#: web/swat.c:847 web/swat.c:894 -msgid " User Name : " -msgstr "ユーザ名 : " +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" +msgstr "ユーザ名" -#: web/swat.c:850 web/swat.c:896 -msgid " Old Password : " -msgstr "旧パスワード : " +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" +msgstr "旧パスワード" -#: web/swat.c:853 web/swat.c:898 -msgid " New Password : " -msgstr "新パスワード : " +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" +msgstr "新パスワード" -#: web/swat.c:855 web/swat.c:900 -msgid " Re-type New Password : " -msgstr "新パスワード再入力 : " +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" +msgstr "新パスワードの再入力" -#: web/swat.c:863 web/swat.c:911 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "パスワード変更" -#: web/swat.c:866 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "新規ユーザ追加" -#: web/swat.c:868 +#: ../web/swat.c:1106 msgid "Delete User" -msgstr "ユーザを削除する" +msgstr "ユーザの削除" -#: web/swat.c:870 +#: ../web/swat.c:1108 msgid "Disable User" -msgstr "使用不可にする" +msgstr "ユーザの無効化" -#: web/swat.c:872 +#: ../web/swat.c:1110 msgid "Enable User" -msgstr "使用可能にする" +msgstr "ユーザの有効化" -#: web/swat.c:885 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" -msgstr "リモート マシンのパスワード管理" +msgstr "リモートマシンのパスワード管理" -#: web/swat.c:902 -msgid " Remote Machine : " -msgstr " リモート マシン : " +#: ../web/swat.c:1140 +msgid "Remote Machine" +msgstr "リモートマシン" -#: web/swat.c:940 +#: ../web/swat.c:1179 msgid "Printer Parameters" -msgstr "プリンタ設定 [Printer]" +msgstr "印刷共有 パラメータ" -#: web/swat.c:942 +#: ../web/swat.c:1181 msgid "Important Note:" -msgstr "*注:" +msgstr "*注" -#: web/swat.c:943 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "名前の先頭に [*] がついたプリンタ" -#: web/swat.c:944 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " -msgstr "は、" +msgstr "は" -#: web/swat.c:945 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "printcap name パラメータ" -#: web/swat.c:946 -msgid "Attempting to delete these printers from SWAT will have no effect.\n" -msgstr "から自動設定されたものですから、削除することはできません。\n" +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." +msgstr "から自動設定されたものですから、削除することはできません。" -#: web/swat.c:980 +#: ../web/swat.c:1231 msgid "Choose Printer" -msgstr "プリンタ選択" +msgstr "印刷共有の選択" -#: web/swat.c:999 +#: ../web/swat.c:1250 msgid "Delete Printer" -msgstr "プリンタ削除" +msgstr "印刷共有の削除" -#: web/swat.c:1006 +#: ../web/swat.c:1257 msgid "Create Printer" -msgstr "プリンタ新規作成" - -#: web/statuspage.c:40 -msgid "DENY_NONE" -msgstr "拒否なし" - -#: web/statuspage.c:41 -msgid "DENY_ALL " -msgstr "すべて拒否" +msgstr "印刷共有の作成" -#: web/statuspage.c:42 -msgid "DENY_DOS " -msgstr "DOSを拒否" - -#: web/statuspage.c:43 -msgid "DENY_READ " -msgstr "参照を拒否" - -#: web/statuspage.c:44 -msgid "DENY_WRITE " -msgstr "更新を拒否" - -#: web/statuspage.c:50 +#: ../web/statuspage.c:123 msgid "RDONLY " -msgstr "参照のみ" +msgstr "参照のみ " -#: web/statuspage.c:51 +#: ../web/statuspage.c:124 msgid "WRONLY " -msgstr "挿入のみ" +msgstr "更新のみ " -#: web/statuspage.c:52 +#: ../web/statuspage.c:125 msgid "RDWR " -msgstr "更新 " - -#: web/statuspage.c:60 -msgid "EXCLUSIVE+BATCH " -msgstr "専有+バッチ " - -#: web/statuspage.c:62 -msgid "EXCLUSIVE " -msgstr "専有 " - -#: web/statuspage.c:64 -msgid "BATCH " -msgstr "バッチ " +msgstr "参照/更新 " -#: web/statuspage.c:66 -msgid "LEVEL_II " -msgstr "レベル_II " - -#: web/statuspage.c:68 -msgid "NONE " -msgstr "なし " - -#: web/statuspage.c:195 +#: ../web/statuspage.c:309 msgid "Server Status" -msgstr "サーバー動作状況" +msgstr "サーバの状態" -#: web/statuspage.c:200 +#: ../web/statuspage.c:314 msgid "Auto Refresh" -msgstr "自動再表示" +msgstr "自動更新の開始" -#: web/statuspage.c:201 web/statuspage.c:206 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " -msgstr "再表示間隔(秒): " +msgstr "更新間隔: " -#: web/statuspage.c:205 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" -msgstr "自動表示停止" +msgstr "自動更新の停止" -#: web/statuspage.c:220 +#: ../web/statuspage.c:334 msgid "version:" -msgstr "バージョン:" +msgstr "バージョン" -#: web/statuspage.c:223 +#: ../web/statuspage.c:337 msgid "smbd:" -msgstr "ファイル共有デーモン(smbd):" +msgstr "" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" -msgstr "動作中" +msgstr "実行中" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "停止中" -#: web/statuspage.c:226 +#: ../web/statuspage.c:341 msgid "Stop smbd" -msgstr "smbd停止" +msgstr "smbd の停止" -#: web/statuspage.c:228 +#: ../web/statuspage.c:343 msgid "Start smbd" -msgstr "smbd起動" +msgstr "smbd の起動" -#: web/statuspage.c:230 +#: ../web/statuspage.c:345 msgid "Restart smbd" -msgstr "smbd再起動" +msgstr "smbd の再起動" -#: web/statuspage.c:235 +#: ../web/statuspage.c:350 msgid "nmbd:" -msgstr "ネーム サービス デーモン(nmbd)" +msgstr "" -#: web/statuspage.c:238 +#: ../web/statuspage.c:354 msgid "Stop nmbd" -msgstr "nmbd停止" +msgstr "nmbd の停止" -#: web/statuspage.c:240 +#: ../web/statuspage.c:356 msgid "Start nmbd" -msgstr "nmbd起動" +msgstr "nmbd の起動" -#: web/statuspage.c:242 +#: ../web/statuspage.c:358 msgid "Restart nmbd" -msgstr "nmbd再起動" +msgstr "nmbd の再起動" + +#: ../web/statuspage.c:364 +msgid "winbindd:" +msgstr "" + +#: ../web/statuspage.c:368 +msgid "Stop winbindd" +msgstr "winbindd の停止" + +#: ../web/statuspage.c:370 +msgid "Start winbindd" +msgstr "winbindd の起動" + +#: ../web/statuspage.c:372 +msgid "Restart winbindd" +msgstr "winbindd の再起動" + +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" +msgstr "すべて停止" + +#: ../web/statuspage.c:382 +msgid "Restart All" +msgstr "すべて再起動" -#: web/statuspage.c:249 +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" +msgstr "すべて起動" + +#: ../web/statuspage.c:393 msgid "Active Connections" -msgstr "接続中クライアント" +msgstr "接続中のクライアント" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" -msgstr "プロセスID" +msgstr "" -#: web/statuspage.c:251 web/statuspage.c:264 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "クライアント" -#: web/statuspage.c:251 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "IPアドレス" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "日付" -#: web/statuspage.c:253 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "切断" -#: web/statuspage.c:261 +#: ../web/statuspage.c:405 msgid "Active Shares" -msgstr "接続中共有" +msgstr "接続中の共有" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Share" msgstr "共有名" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "User" msgstr "ユーザ" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Group" msgstr "グループ" -#: web/statuspage.c:270 +#: ../web/statuspage.c:414 msgid "Open Files" -msgstr "使用中ファイル" +msgstr "使用中のファイル" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "排他モード" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "参照/更新" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Oplock" -msgstr "便宜ロック(Oplock)" +msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "File" msgstr "ファイル名" -#: param/loadparm.c:641 -msgid "Base Options" -msgstr "基本オプション" - -#: param/loadparm.c:643 -#, fuzzy -msgid "dos charset" -msgstr "有効な文字" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" +msgstr "クライアント名を先頭に表示" -#: param/loadparm.c:644 -#, fuzzy -msgid "unix charset" -msgstr "有効な文字" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" +msgstr "PIDを先頭に表示" -#: param/loadparm.c:645 -msgid "display charset" -msgstr "" - -#: param/loadparm.c:646 -msgid "comment" -msgstr "コメント" - -#: param/loadparm.c:647 -msgid "path" -msgstr "パス" - -#: param/loadparm.c:648 -msgid "directory" -msgstr "ディレクトリ" - -#: param/loadparm.c:649 -msgid "workgroup" -msgstr "ワークグループ" - -#: param/loadparm.c:650 -msgid "netbios name" -msgstr "netbios 名" - -#: param/loadparm.c:651 -msgid "netbios aliases" -msgstr "netbios エイリアス" - -#: param/loadparm.c:652 -msgid "netbios scope" -msgstr "netbios スコープ" - -#: param/loadparm.c:653 -msgid "server string" -msgstr "サーバ文字列" - -#: param/loadparm.c:654 -msgid "interfaces" -msgstr "インターフェース" - -#: param/loadparm.c:655 -msgid "bind interfaces only" -msgstr "このインターフェースのみ使用" +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "基本 オプション" -#: param/loadparm.c:657 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "セキュリティ オプション" -#: param/loadparm.c:659 -msgid "security" -msgstr "セキュリティ" - -#: param/loadparm.c:660 -msgid "encrypt passwords" -msgstr "パスワードを暗号化" - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "暗号化パスワードに更新" - -#: param/loadparm.c:662 -msgid "allow trusted domains" -msgstr "信頼できるドメインを許可" - -#: param/loadparm.c:663 -msgid "alternate permissions" -msgstr "代行パーミッション" - -#: param/loadparm.c:664 -msgid "hosts equiv" -msgstr "同等のホスト" - -#: param/loadparm.c:665 -msgid "min passwd length" -msgstr "最小パスワード長" - -#: param/loadparm.c:666 -msgid "min password length" -msgstr "最小パスワード長" - -#: param/loadparm.c:667 -msgid "map to guest" -msgstr "ゲストにマップ" - -#: param/loadparm.c:668 -msgid "null passwords" -msgstr "空パスワード" - -#: param/loadparm.c:669 -#, fuzzy -msgid "obey pam restrictions" -msgstr "先読み" - -#: param/loadparm.c:670 -msgid "password server" -msgstr "パスワード サーバ" - -#: param/loadparm.c:671 -msgid "smb passwd file" -msgstr "smb passwd ファイル" - -#: param/loadparm.c:672 -#, fuzzy -msgid "private dir" -msgstr "プリンタ ドライバ" - -#: param/loadparm.c:673 -msgid "passdb module path" -msgstr "" - -#: param/loadparm.c:674 -msgid "root directory" -msgstr "ルート ディレクトリ" - -#: param/loadparm.c:675 -msgid "root dir" -msgstr "ルート ディレクトリ" - -#: param/loadparm.c:676 -msgid "root" -msgstr "ルート" - -#: param/loadparm.c:678 -#, fuzzy -msgid "pam password change" -msgstr "最小パスワード長" - -#: param/loadparm.c:679 -msgid "passwd program" -msgstr "パスワード プログラム" - -#: param/loadparm.c:680 -msgid "passwd chat" -msgstr "パスワード チャット" - -#: param/loadparm.c:681 -msgid "passwd chat debug" -msgstr "パスワード チャット デバッグ" - -#: param/loadparm.c:682 -msgid "username map" -msgstr "ユーザ名マップ" - -#: param/loadparm.c:683 -msgid "password level" -msgstr "パスワード レベル" - -#: param/loadparm.c:684 -msgid "username level" -msgstr "ユーザ名レベル" - -#: param/loadparm.c:685 -msgid "unix password sync" -msgstr "unix パスワードを同期させる" - -#: param/loadparm.c:686 -msgid "restrict anonymous" -msgstr "匿名アクセスの制限" - -#: param/loadparm.c:687 -msgid "lanman auth" -msgstr "" - -#: param/loadparm.c:688 -msgid "ntlm auth" -msgstr "" - -#: param/loadparm.c:689 -msgid "plaintext to smbpasswd" -msgstr "" - -#: param/loadparm.c:690 -msgid "use rhosts" -msgstr "rhosts を使う" - -#: param/loadparm.c:692 -msgid "username" -msgstr "ユーザ名" - -#: param/loadparm.c:693 -msgid "user" -msgstr "ユーザ" - -#: param/loadparm.c:694 -msgid "users" -msgstr "ユーザ" - -#: param/loadparm.c:696 -msgid "guest account" -msgstr "ゲスト アカウント" - -#: param/loadparm.c:697 -msgid "invalid users" -msgstr "無効なユーザ" - -#: param/loadparm.c:698 -msgid "valid users" -msgstr "有効なユーザ" - -#: param/loadparm.c:699 -msgid "admin users" -msgstr "管理ユーザ" - -#: param/loadparm.c:700 -msgid "read list" -msgstr "読み取りリスト" - -#: param/loadparm.c:701 -msgid "write list" -msgstr "書き込みリスト" - -#: param/loadparm.c:702 -#, fuzzy -msgid "printer admin" -msgstr "プリンタ名" - -#: param/loadparm.c:703 -msgid "force user" -msgstr "強制するユーザ" - -#: param/loadparm.c:704 -msgid "force group" -msgstr "強制するグループ" - -#: param/loadparm.c:705 -msgid "group" -msgstr "グループ" - -#: param/loadparm.c:707 -msgid "read only" -msgstr "読み取りのみ" - -#: param/loadparm.c:708 -msgid "write ok" -msgstr "書き込み可" - -#: param/loadparm.c:709 -msgid "writeable" -msgstr "書き込み可" - -#: param/loadparm.c:710 -msgid "writable" -msgstr "書き込み可" - -#: param/loadparm.c:712 -msgid "create mask" -msgstr "作成時にマスク" - -#: param/loadparm.c:713 -msgid "create mode" -msgstr "作成時のモード" - -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "強制する作成時のモード" - -#: param/loadparm.c:715 -msgid "security mask" -msgstr "セキュリティ マスク" - -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "強制するセキュリティ モード" - -#: param/loadparm.c:717 -msgid "directory mask" -msgstr "ディレクトリ マスク" - -#: param/loadparm.c:718 -msgid "directory mode" -msgstr "ディレクトリ モード" - -#: param/loadparm.c:719 -msgid "force directory mode" -msgstr "強制するディレクトリ モード" - -#: param/loadparm.c:720 -msgid "directory security mask" -msgstr "ディレクトリのセキュリティ マスク" - -#: param/loadparm.c:721 -msgid "force directory security mode" -msgstr "強制するディレクトリのセキュリティ モード" - -#: param/loadparm.c:722 -msgid "inherit permissions" -msgstr "パーミッションを継承" - -#: param/loadparm.c:723 -msgid "guest only" -msgstr "ゲストのみ" - -#: param/loadparm.c:724 -msgid "only guest" -msgstr "ゲストのみ" - -#: param/loadparm.c:726 -msgid "guest ok" -msgstr "ゲスト可" - -#: param/loadparm.c:727 -msgid "public" -msgstr "パブリック" - -#: param/loadparm.c:729 -msgid "only user" -msgstr "ユーザのみ" - -#: param/loadparm.c:730 -msgid "hosts allow" -msgstr "許可するホスト" - -#: param/loadparm.c:731 -msgid "allow hosts" -msgstr "許可するホスト" - -#: param/loadparm.c:732 -msgid "hosts deny" -msgstr "拒否するホスト" - -#: param/loadparm.c:733 -msgid "deny hosts" -msgstr "拒否するホスト" - -#: param/loadparm.c:736 -msgid "Secure Socket Layer Options" -msgstr "セキュア ソケット レイアー オプション" - -#: param/loadparm.c:737 -msgid "ssl" -msgstr "ssl" - -#: param/loadparm.c:739 -msgid "ssl hosts" -msgstr "ssl ホスト" - -#: param/loadparm.c:740 -msgid "ssl hosts resign" -msgstr "ssl 未使用ホスト" - -#: param/loadparm.c:741 -msgid "ssl CA certDir" -msgstr "ssl CA 認証ディレクトリ" - -#: param/loadparm.c:742 -msgid "ssl CA certFile" -msgstr "ssl CA 認証ファイル" - -#: param/loadparm.c:743 -msgid "ssl server cert" -msgstr "ssl サーバ認証" - -#: param/loadparm.c:744 -msgid "ssl server key" -msgstr "ssl サーバ鍵" - -#: param/loadparm.c:745 -msgid "ssl client cert" -msgstr "ssl クライアント認証" - -#: param/loadparm.c:746 -msgid "ssl client key" -msgstr "ssl クライアント鍵" - -#: param/loadparm.c:747 -msgid "ssl require clientcert" -msgstr "ssl クライアント認証を要求" - -#: param/loadparm.c:748 -msgid "ssl require servercert" -msgstr "ssl サーバ認証を要求" - -#: param/loadparm.c:749 -msgid "ssl ciphers" -msgstr "ssl 暗号" - -#: param/loadparm.c:750 -msgid "ssl version" -msgstr "ssl バージョン" - -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "ssl 互換性" - -#: param/loadparm.c:754 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "ロギング オプション" -#: param/loadparm.c:755 -msgid "log level" -msgstr "ログ レベル" - -#: param/loadparm.c:756 -#, fuzzy -msgid "debuglevel" -msgstr "デバッグレベル" - -#: param/loadparm.c:757 -msgid "syslog" -msgstr "syslog" - -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "syslog のみ" - -#: param/loadparm.c:759 -msgid "log file" -msgstr "ログ ファイル" - -#: param/loadparm.c:761 -msgid "max log size" -msgstr "最大ログ サイズ" - -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "タイムスタンプ ログ" - -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "デバッグ タイムスタンプ" - -#: param/loadparm.c:764 -#, fuzzy -msgid "debug hires timestamp" -msgstr "デバッグ タイムスタンプ" - -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "デバッグ pid" - -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "デバッグ uid" - -#: param/loadparm.c:768 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "プロトコル オプション" -#: param/loadparm.c:770 -msgid "protocol" -msgstr "プロトコル" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "" - -#: param/loadparm.c:772 -#, fuzzy -msgid "max protocol" -msgstr "プロトコル" - -#: param/loadparm.c:773 -#, fuzzy -msgid "min protocol" -msgstr "プロトコル" - -#: param/loadparm.c:774 -msgid "unicode" -msgstr "" - -#: param/loadparm.c:775 -msgid "read bmpx" -msgstr "bmpx 読み出し" - -#: param/loadparm.c:776 -msgid "read raw" -msgstr "raw 読み出し" - -#: param/loadparm.c:777 -msgid "write raw" -msgstr "raw 書き込み" - -#: param/loadparm.c:779 -msgid "nt smb support" -msgstr "nt smb サポート" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "nt pipe サポート" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "nt acl サポート" - -#: param/loadparm.c:782 -msgid "announce version" -msgstr "アナウンス バージョン" - -#: param/loadparm.c:783 -msgid "announce as" -msgstr "アナウンスする種類" - -#: param/loadparm.c:784 -msgid "max mux" -msgstr "最大 mux" - -#: param/loadparm.c:785 -msgid "max xmit" -msgstr "最大 xmit" - -#: param/loadparm.c:787 -msgid "name resolve order" -msgstr "名前解決の順番" - -#: param/loadparm.c:788 -msgid "max packet" -msgstr "最大パケット" - -#: param/loadparm.c:789 -msgid "packet size" -msgstr "パケット サイズ" - -#: param/loadparm.c:790 -msgid "max ttl" -msgstr "最大 ttl" - -#: param/loadparm.c:791 -msgid "max wins ttl" -msgstr "最大 wins ttl" - -#: param/loadparm.c:792 -msgid "min wins ttl" -msgstr "最小 wins ttl" - -#: param/loadparm.c:793 -msgid "time server" -msgstr "タイム サーバ" - -#: param/loadparm.c:795 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "チューニング オプション" -#: param/loadparm.c:797 -msgid "change notify timeout" -msgstr "更新通知の間隔" - -#: param/loadparm.c:798 -msgid "deadtime" -msgstr "切断までの時間" - -#: param/loadparm.c:799 -msgid "getwd cache" -msgstr "getwd キャッシュ" - -#: param/loadparm.c:800 -msgid "keepalive" -msgstr "" - -#: param/loadparm.c:802 -msgid "lpq cache time" -msgstr "lpq キャッシュ時間" - -#: param/loadparm.c:803 -msgid "max smbd processes" -msgstr "" - -#: param/loadparm.c:804 -msgid "max connections" -msgstr "最大接続数" - -#: param/loadparm.c:805 -#, fuzzy -msgid "paranoid server security" -msgstr "ユーザ追加スクリプト" - -#: param/loadparm.c:806 -msgid "max disk size" -msgstr "最大ディスク サイズ" - -#: param/loadparm.c:807 -msgid "max open files" -msgstr "最大ファイル オープン数" - -#: param/loadparm.c:808 -msgid "min print space" -msgstr "最小印刷スペース" - -#: param/loadparm.c:809 -msgid "read size" -msgstr "読み取りサイズ" - -#: param/loadparm.c:811 -msgid "socket options" -msgstr "ソ\ケット オプション" - -#: param/loadparm.c:812 -msgid "stat cache size" -msgstr "stat キャッシュ サイズ" - -#: param/loadparm.c:813 -#, fuzzy -msgid "strict allocate" -msgstr "厳密なロック" - -#: param/loadparm.c:814 -msgid "strict sync" -msgstr "厳密な sync" - -#: param/loadparm.c:815 -msgid "sync always" -msgstr "常に sync" - -#: param/loadparm.c:816 -#, fuzzy -msgid "use mmap" -msgstr "ユーザ名マップ" - -#: param/loadparm.c:817 -msgid "hostname lookups" -msgstr "" - -#: param/loadparm.c:818 -msgid "write cache size" -msgstr "書き込みキャッシュ サイズ" - -#: param/loadparm.c:820 +#: ../param/loadparm.c:940 msgid "Printing Options" -msgstr "印刷オプション" - -#: param/loadparm.c:822 -#, fuzzy -msgid "total print jobs" -msgstr "プリンタをロード" - -#: param/loadparm.c:823 -#, fuzzy -msgid "max print jobs" -msgstr "印刷可" - -#: param/loadparm.c:824 -msgid "load printers" -msgstr "プリンタをロード" +msgstr "印刷 オプション" -#: param/loadparm.c:825 -msgid "printcap name" -msgstr "printcap 名" - -#: param/loadparm.c:826 -msgid "printcap" -msgstr "printcap" - -#: param/loadparm.c:827 -msgid "printable" -msgstr "印刷可" - -#: param/loadparm.c:828 -msgid "print ok" -msgstr "印刷可" - -#: param/loadparm.c:829 -msgid "postscript" -msgstr "ポストスクリプト" - -#: param/loadparm.c:830 -msgid "printing" -msgstr "印刷方法" - -#: param/loadparm.c:831 -msgid "print command" -msgstr "印刷コマンド" - -#: param/loadparm.c:832 -msgid "disable spoolss" -msgstr "" - -#: param/loadparm.c:833 -msgid "lpq command" -msgstr "lpq コマンド" - -#: param/loadparm.c:834 -msgid "lprm command" -msgstr "lprm コマンド" - -#: param/loadparm.c:835 -msgid "lppause command" -msgstr "lppause コマンド" - -#: param/loadparm.c:836 -msgid "lpresume command" -msgstr "lpresume コマンド" - -#: param/loadparm.c:837 -msgid "queuepause command" -msgstr "キュー停止コマンド" - -#: param/loadparm.c:838 -msgid "queueresume command" -msgstr "キュー再開コマンド" - -#: param/loadparm.c:840 -#, fuzzy -msgid "enumports command" -msgstr "印刷コマンド" - -#: param/loadparm.c:841 -#, fuzzy -msgid "addprinter command" -msgstr "印刷コマンド" - -#: param/loadparm.c:842 -#, fuzzy -msgid "deleteprinter command" -msgstr "印刷コマンド" - -#: param/loadparm.c:843 -#, fuzzy -msgid "show add printer wizard" -msgstr "プリンタをロード" - -#: param/loadparm.c:844 -#, fuzzy -msgid "os2 driver map" -msgstr "ホームディレクトリ マップ" - -#: param/loadparm.c:846 -msgid "printer name" -msgstr "プリンタ名" - -#: param/loadparm.c:847 -msgid "printer" -msgstr "プリンタ" - -#: param/loadparm.c:848 -#, fuzzy -msgid "use client driver" -msgstr "ssl クライアント認証" - -#: param/loadparm.c:849 -msgid "printer driver" -msgstr "プリンタ ドライバ" - -#: param/loadparm.c:850 -msgid "printer driver file" -msgstr "プリンタ ドライバ ファイル" - -#: param/loadparm.c:851 -msgid "printer driver location" -msgstr "プリンタ ドライバの場所" - -#: param/loadparm.c:853 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "ファイル名の取扱" -#: param/loadparm.c:854 -msgid "strip dot" -msgstr "ドットを削る" - -#: param/loadparm.c:856 -msgid "mangled stack" -msgstr "名前変換用スタック" - -#: param/loadparm.c:857 -msgid "default case" -msgstr "既定の文字の大小" - -#: param/loadparm.c:858 -msgid "case sensitive" -msgstr "大/小文字の区別" - -#: param/loadparm.c:859 -msgid "casesignames" -msgstr "大/小文字の区別" - -#: param/loadparm.c:860 -msgid "preserve case" -msgstr "文字の大小を保存" - -#: param/loadparm.c:861 -msgid "short preserve case" -msgstr "短形式で文字の大小を保存" - -#: param/loadparm.c:862 -msgid "mangle case" -msgstr "大/小文字の変換" - -#: param/loadparm.c:863 -msgid "mangling char" -msgstr "変換用文字" - -#: param/loadparm.c:864 -msgid "hide dot files" -msgstr "ドットファイルを隠す" - -#: param/loadparm.c:865 -msgid "hide unreadable" -msgstr "" - -#: param/loadparm.c:866 -msgid "delete veto files" -msgstr "拒否ファイルを削除" - -#: param/loadparm.c:867 -msgid "veto files" -msgstr "拒否ファイル" - -#: param/loadparm.c:868 -msgid "hide files" -msgstr "隠しファイル" - -#: param/loadparm.c:869 -msgid "veto oplock files" -msgstr "oplock を禁止するファイル" - -#: param/loadparm.c:870 -msgid "map system" -msgstr "システム属性にマップ" - -#: param/loadparm.c:871 -msgid "map hidden" -msgstr "隠し属性にマップ" - -#: param/loadparm.c:872 -msgid "map archive" -msgstr "アーカイブ属性にマップ" - -#: param/loadparm.c:873 -msgid "mangled names" -msgstr "変換した名前で表示" - -#: param/loadparm.c:874 -msgid "mangled map" -msgstr "変換マップ" - -#: param/loadparm.c:875 -msgid "stat cache" -msgstr "stat キャッシュ" - -#: param/loadparm.c:877 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "ドメイン オプション" -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "ドメイン管理グループ" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "ドメイン ゲスト グループ" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "グループ名マップ" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "マシン パスワード タイムアウト" - -#: param/loadparm.c:888 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "ログオン オプション" -#: param/loadparm.c:890 -msgid "add user script" -msgstr "ユーザ追加スクリプト" - -#: param/loadparm.c:891 -msgid "delete user script" -msgstr "ユーザ削除スクリプト" - -#: param/loadparm.c:892 -#, fuzzy -msgid "add group script" -msgstr "ユーザ追加スクリプト" - -#: param/loadparm.c:893 -#, fuzzy -msgid "delete group script" -msgstr "ユーザ削除スクリプト" - -#: param/loadparm.c:894 -#, fuzzy -msgid "add user to group script" -msgstr "ユーザ追加スクリプト" - -#: param/loadparm.c:895 -#, fuzzy -msgid "delete user from group script" -msgstr "ユーザ削除スクリプト" - -#: param/loadparm.c:896 -#, fuzzy -msgid "add machine script" -msgstr "ユーザ追加スクリプト" - -#: param/loadparm.c:897 -#, fuzzy -msgid "shutdown script" -msgstr "ログオン スクリプト" - -#: param/loadparm.c:898 -#, fuzzy -msgid "abort shutdown script" -msgstr "ログオン スクリプト" - -#: param/loadparm.c:900 -msgid "logon script" -msgstr "ログオン スクリプト" - -#: param/loadparm.c:901 -msgid "logon path" -msgstr "ログオン パス" - -#: param/loadparm.c:902 -msgid "logon drive" -msgstr "ログオン ドライブ" - -#: param/loadparm.c:903 -msgid "logon home" -msgstr "ログオン ホーム" - -#: param/loadparm.c:904 -msgid "domain logons" -msgstr "ドメイン ログオン" - -#: param/loadparm.c:906 +#: ../param/loadparm.c:1019 msgid "Browse Options" -msgstr "コンピュータ一覧表示オプション" - -#: param/loadparm.c:908 -msgid "os level" -msgstr "os レベル" - -#: param/loadparm.c:909 -msgid "lm announce" -msgstr "lm アナウンス" - -#: param/loadparm.c:910 -msgid "lm interval" -msgstr "lm 間隔" - -#: param/loadparm.c:911 -msgid "preferred master" -msgstr "優先するマスタ" - -#: param/loadparm.c:912 -msgid "prefered master" -msgstr "優先するマスタ" - -#: param/loadparm.c:913 -msgid "local master" -msgstr "ローカル マスタ" - -#: param/loadparm.c:914 -msgid "domain master" -msgstr "ドメイン マスタ" - -#: param/loadparm.c:915 -msgid "browse list" -msgstr "ブラウズ リスト" +msgstr "ブラウジング オプション" -#: param/loadparm.c:916 -msgid "browseable" -msgstr "ブラウズ可" - -#: param/loadparm.c:917 -msgid "browsable" -msgstr "ブラウズ可" - -#: param/loadparm.c:918 -msgid "enhanced browsing" -msgstr "" - -#: param/loadparm.c:920 +#: ../param/loadparm.c:1033 msgid "WINS Options" -msgstr "WINSオプション" - -#: param/loadparm.c:921 -msgid "dns proxy" -msgstr "dns プロキシ" - -#: param/loadparm.c:922 -msgid "wins proxy" -msgstr "wins プロキシ" +msgstr "WINS オプション" -#: param/loadparm.c:924 -msgid "wins server" -msgstr "wins サーバ" - -#: param/loadparm.c:925 -msgid "wins support" -msgstr "wins サポート" - -#: param/loadparm.c:926 -msgid "wins hook" -msgstr "wins フック" - -#: param/loadparm.c:928 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "ロッキング オプション" -#: param/loadparm.c:930 -#, fuzzy -msgid "blocking locks" -msgstr "ロック" - -#: param/loadparm.c:931 -msgid "fake oplocks" -msgstr "偽装 oplock" - -#: param/loadparm.c:932 -msgid "kernel oplocks" -msgstr "カーネル oplock" - -#: param/loadparm.c:933 -msgid "locking" -msgstr "ロック" - -#: param/loadparm.c:935 -msgid "oplocks" -msgstr "便宜的ロック" - -#: param/loadparm.c:936 -msgid "level2 oplocks" -msgstr "level2 oplocks" - -#: param/loadparm.c:937 -msgid "oplock break wait time" -msgstr "oplock 中断の待ち時間" - -#: param/loadparm.c:938 -msgid "oplock contention limit" -msgstr "oplock 競合の限度" - -#: param/loadparm.c:939 -#, fuzzy -msgid "posix locking" -msgstr "厳密なロック" - -#: param/loadparm.c:940 -msgid "strict locking" -msgstr "厳密なロック" - -#: param/loadparm.c:941 -msgid "share modes" -msgstr "共有モード" - -#: param/loadparm.c:944 +#: ../param/loadparm.c:1061 msgid "Ldap Options" -msgstr "Ldap オプション" - -#: param/loadparm.c:946 -msgid "ldap server" -msgstr "ldap サーバ" - -#: param/loadparm.c:947 -msgid "ldap port" -msgstr "ldap ポート" +msgstr "LDAP オプション" -#: param/loadparm.c:948 -msgid "ldap suffix" -msgstr "lpad サフィックス" - -#: param/loadparm.c:949 -msgid "ldap filter" -msgstr "ldap フィルター" - -#: param/loadparm.c:950 -msgid "ldap root" -msgstr "ldap ルート" - -#: param/loadparm.c:951 -msgid "ldap root passwd" -msgstr "ldap ルート パスワード" - -#: param/loadparm.c:954 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "その他のオプション" -#: param/loadparm.c:955 -#, fuzzy -msgid "add share command" -msgstr "dfree コマンド" - -#: param/loadparm.c:956 -#, fuzzy -msgid "change share command" -msgstr "メッセージ コマンド" - -#: param/loadparm.c:957 -#, fuzzy -msgid "delete share command" -msgstr "メッセージ コマンド" - -#: param/loadparm.c:959 -msgid "config file" -msgstr "設定ファイル" - -#: param/loadparm.c:960 -msgid "preload" -msgstr "プリロード" - -#: param/loadparm.c:961 -msgid "auto services" -msgstr "自動サービス" - -#: param/loadparm.c:962 -msgid "lock dir" -msgstr "ロック ディレクトリ" - -#: param/loadparm.c:963 -msgid "lock directory" -msgstr "ロック ディレクトリ" - -#: param/loadparm.c:965 -msgid "utmp directory" -msgstr "utmp ディレクトリ" - -#: param/loadparm.c:966 -#, fuzzy -msgid "wtmp directory" -msgstr "utmp ディレクトリ" - -#: param/loadparm.c:967 -#, fuzzy -msgid "utmp" -msgstr "utmp ディレクトリ" - -#: param/loadparm.c:970 -msgid "default service" -msgstr "既定サービス" - -#: param/loadparm.c:971 -msgid "default" -msgstr "既定" - -#: param/loadparm.c:972 -msgid "message command" -msgstr "メッセージ コマンド" - -#: param/loadparm.c:973 -msgid "dfree command" -msgstr "dfree コマンド" - -#: param/loadparm.c:974 -msgid "remote announce" -msgstr "リモート アナウンス" - -#: param/loadparm.c:975 -msgid "remote browse sync" -msgstr "リモートのブラウズリストを同期" - -#: param/loadparm.c:976 -msgid "socket address" -msgstr "ソ\ケット アドレス" - -#: param/loadparm.c:977 -msgid "homedir map" -msgstr "ホームディレクトリ マップ" - -#: param/loadparm.c:978 -msgid "time offset" -msgstr "時間オフセット" - -#: param/loadparm.c:979 -msgid "NIS homedir" -msgstr "NIS ホームディレクトリ" - -#: param/loadparm.c:980 -msgid "-valid" -msgstr "-valid" - -#: param/loadparm.c:982 -msgid "copy" -msgstr "コピー" - -#: param/loadparm.c:983 -msgid "include" -msgstr "インクルード" - -#: param/loadparm.c:984 -msgid "exec" -msgstr "実行" - -#: param/loadparm.c:985 -msgid "preexec" -msgstr "接続時に実行" - -#: param/loadparm.c:987 -#, fuzzy -msgid "preexec close" -msgstr "接続時に実行" - -#: param/loadparm.c:988 -msgid "postexec" -msgstr "切断時に実行" - -#: param/loadparm.c:989 -msgid "root preexec" -msgstr "ルートで接続時実行" - -#: param/loadparm.c:990 -#, fuzzy -msgid "root preexec close" -msgstr "ルートで接続時実行" - -#: param/loadparm.c:991 -msgid "root postexec" -msgstr "ルートで切断時実行" - -#: param/loadparm.c:992 -msgid "available" -msgstr "利用可能" - -#: param/loadparm.c:993 -msgid "volume" -msgstr "ボリューム" - -#: param/loadparm.c:994 -msgid "fstype" -msgstr "ファイル システム タイプ" - -#: param/loadparm.c:995 -#, fuzzy -msgid "set directory" -msgstr "ディレクトリ" - -#: param/loadparm.c:996 -msgid "source environment" -msgstr "" - -#: param/loadparm.c:997 -msgid "wide links" -msgstr "広くリンク" - -#: param/loadparm.c:998 -msgid "follow symlinks" -msgstr "symlink 先を参照" - -#: param/loadparm.c:999 -msgid "dont descend" -msgstr "下に降りないディレクトリ" +#: ../param/loadparm.c:1138 +msgid "VFS module options" +msgstr "VFS オプション" -#: param/loadparm.c:1000 -msgid "magic script" -msgstr "マジック スクリプト" - -#: param/loadparm.c:1001 -msgid "magic output" -msgstr "マジック 出力" - -#: param/loadparm.c:1002 -msgid "delete readonly" -msgstr "読み取りのみのファイルを削除" - -#: param/loadparm.c:1003 -#, fuzzy -msgid "dos filemode" -msgstr "dos のファイル時刻" - -#: param/loadparm.c:1004 -msgid "dos filetimes" -msgstr "dos のファイル時刻" - -#: param/loadparm.c:1005 -msgid "dos filetime resolution" -msgstr "dos のファイル時刻の分解能" - -#: param/loadparm.c:1007 -msgid "fake directory create times" -msgstr "偽のディレクトリ作成時刻" - -#: param/loadparm.c:1008 -msgid "panic action" -msgstr "パニック アクション" - -#: param/loadparm.c:1009 -#, fuzzy -msgid "hide local users" -msgstr "ローカル マスタ" - -#: param/loadparm.c:1012 -msgid "VFS options" -msgstr "VFSオプション" - -#: param/loadparm.c:1014 -msgid "vfs object" -msgstr "" - -#: param/loadparm.c:1015 -#, fuzzy -msgid "vfs options" -msgstr "VFSオプション" - -#: param/loadparm.c:1018 -#, fuzzy -msgid "msdfs root" -msgstr "ldap ルート" - -#: param/loadparm.c:1019 -#, fuzzy -msgid "host msdfs" -msgstr "拒否するホスト" - -#: param/loadparm.c:1021 +#: ../param/loadparm.c:1148 msgid "Winbind options" -msgstr "Winbindオプション" - -#: param/loadparm.c:1023 -#, fuzzy -msgid "winbind uid" -msgstr "Winbindオプション" - -#: param/loadparm.c:1024 -#, fuzzy -msgid "winbind gid" -msgstr "Winbindオプション" - -#: param/loadparm.c:1025 -msgid "template homedir" -msgstr "" - -#: param/loadparm.c:1026 -msgid "template shell" -msgstr "" - -#: param/loadparm.c:1027 -#, fuzzy -msgid "winbind separator" -msgstr "Winbindオプション" - -#: param/loadparm.c:1028 -#, fuzzy -msgid "winbind cache time" -msgstr "lpq キャッシュ時間" - -#: param/loadparm.c:1029 -#, fuzzy -msgid "winbind enum users" -msgstr "無効なユーザ" - -#: param/loadparm.c:1030 -msgid "winbind enum groups" -msgstr "" - -#~ msgid "failed to open %s for writing\n" -#~ msgstr "%s を書き込み用にオープンできません\n" - -#~ msgid "Can't reload %s\n" -#~ msgstr "%s を再読み込みできません\n" - -#~ msgid "Can't setup password database vectors.\n" -#~ msgstr "パスワード・データベースが見つけられません\n" - -#~ msgid "You need to have status=yes in your smb config file\n" -#~ msgstr "smb.conf で status=yes を設定してください\n" - -#~ msgid "coding system" -#~ msgstr "コーディング システム" - -#~ msgid "client code page" -#~ msgstr "クライアント コードページ" - -#~ msgid "revalidate" -#~ msgstr "再認証" - -#~ msgid "status" -#~ msgstr "ステータス" - -#~ msgid "shared mem size" -#~ msgstr "共有メモリ サイズ" - -#~ msgid "character set" -#~ msgstr "文字セット" - -#~ msgid "domain groups" -#~ msgstr "ドメイン グループ" - -#~ msgid "domain admin users" -#~ msgstr "ドメイン管理ユーザ" - -#~ msgid "domain guest users" -#~ msgstr "ドメイン ゲスト ユーザ" - -#~ msgid "ole locking compatibility" -#~ msgstr "ole ロックの互換性" - -#~ msgid "smbrun" -#~ msgstr "smbrun" - -#, fuzzy -#~ msgid "wtmp dir" -#~ msgstr "utmp ディレクトリ" - -#~ msgid "unix realname" -#~ msgstr "unix の本名" +msgstr "Winbind オプション" diff --git a/source/po/pl.msg b/source/po/pl.msg index c547a94c936..a7e56453bfc 100644 --- a/source/po/pl.msg +++ b/source/po/pl.msg @@ -18,7 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"POT-Creation-Date: 2001-09-20 20:29+0900\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2001-08-15 22:45+02:00\n" "Last-Translator: Rafal Szczesniak <mimir@spin.ict.pwr.wroc.pl>\n" "Language-Team: pl\n" @@ -26,1748 +26,568 @@ msgstr "" "Content-Type: text/plain; charset=iso-8859-2\n" "Content-Transfer-Encoding: \n" -#: web/swat.c:120 +#: ../web/swat.c:117 #, c-format -msgid "ERROR: Can't open %s\n" -msgstr "B」。D: Nie moソna otworzy %s\n" +msgid "ERROR: Can't open %s" +msgstr "" -#. -#. str = stripspace(parm->label); -#. strlower (str); //monyo -#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A> %s</td><td>", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 +#: ../web/swat.c:200 msgid "Help" msgstr "Pomoc" -#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263 -#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "Ustaw domyカlnie" -#: web/swat.c:502 +#: ../web/swat.c:408 +#, c-format +msgid "failed to open %s for writing" +msgstr "" + +#: ../web/swat.c:431 #, c-format -msgid "Logged in as <b>%s</b><p>\n" +msgid "Can't reload %s" +msgstr "" + +#: ../web/swat.c:501 +#, c-format +msgid "Logged in as <b>%s</b>" msgstr "Zalogowany jako <b>%s</b><p>\n" -#: web/swat.c:505 +#: ../web/swat.c:505 msgid "Home" msgstr "Strona domowa" -#: web/swat.c:507 +#: ../web/swat.c:507 msgid "Globals" msgstr "Ustawienia globalne" -#: web/swat.c:508 +#: ../web/swat.c:508 msgid "Shares" msgstr "Wspウudziaウy" -#: web/swat.c:509 +#: ../web/swat.c:509 msgid "Printers" msgstr "Drukarki" -#: web/swat.c:512 +#: ../web/swat.c:510 +msgid "Wizard" +msgstr "" + +#: ../web/swat.c:513 msgid "Status" msgstr "Status" -#: web/swat.c:513 +#: ../web/swat.c:514 msgid "View Config" msgstr "Przejrzyj Konfiguracj" -#: web/swat.c:515 +#: ../web/swat.c:516 msgid "Password Management" msgstr "Zarzアdzanie Hasウami" -#: web/swat.c:539 +#: ../web/swat.c:526 +msgid "Current View Is" +msgstr "Bieソアca Konfiguracja" + +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" +msgstr "Widok Podstawowy" + +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" +msgstr "Widok Zaawansowany" + +#: ../web/swat.c:529 +msgid "Change View To" +msgstr "Zmie Hasウo" + +#: ../web/swat.c:554 msgid "Current Config" msgstr "Bieソアca Konfiguracja" -#: web/swat.c:543 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Normalny Widok" -#: web/swat.c:545 +#: ../web/swat.c:560 msgid "Full View" msgstr "Peウny Widok" -#: web/swat.c:561 -msgid "Global Variables" +#. Here we first set and commit all the parameters that were selected +#. in the previous screen. +#: ../web/swat.c:579 +msgid "Wizard Parameter Edit Page" +msgstr "" + +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" +msgstr "" + +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" +msgstr "" + +#: ../web/swat.c:720 +msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." +msgstr "" + +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." +msgstr "" + +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" +msgstr "" + +#: ../web/swat.c:725 +msgid "Commit" +msgstr "Potwierdシ Zmiany" + +#: ../web/swat.c:726 +msgid "Edit Parameter Values" +msgstr "Parametry Drukarki" + +#: ../web/swat.c:732 +msgid "Server Type" +msgstr "" + +#: ../web/swat.c:733 +msgid "Stand Alone" +msgstr "Uruchom nmbd" + +#: ../web/swat.c:734 +msgid "Domain Member" +msgstr "" + +#: ../web/swat.c:735 +msgid "Domain Controller" +msgstr "" + +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" +msgstr "" + +#: ../web/swat.c:740 +msgid "Configure WINS As" +msgstr "" + +#: ../web/swat.c:741 +msgid "Not Used" +msgstr "" + +#: ../web/swat.c:742 +msgid "Server for client use" +msgstr "" + +#: ../web/swat.c:743 +msgid "Client of another WINS server" +msgstr "" + +#: ../web/swat.c:745 +msgid "Remote WINS Server" +msgstr "" + +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" +msgstr "" + +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." +msgstr "" + +#: ../web/swat.c:759 +msgid "Expose Home Directories" +msgstr "" + +#: ../web/swat.c:774 +msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." +msgstr "" + +#: ../web/swat.c:787 +msgid "Global Parameters" msgstr "Zmienne Globalne" -#: web/swat.c:575 web/swat.c:671 web/swat.c:1014 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "Potwierdシ Zmiany" -#: web/swat.c:579 web/swat.c:674 web/swat.c:1016 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "Zresetuj Wartoカci" -#: web/swat.c:581 web/swat.c:676 web/swat.c:1018 -msgid "Advanced View" -msgstr "Widok Zaawansowany" - -#: web/swat.c:583 web/swat.c:678 web/swat.c:1020 -msgid "Basic View" -msgstr "Widok Podstawowy" - -#: web/swat.c:613 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Parametry Wspウudziaウu" -#: web/swat.c:642 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "Wybierz Wspウudziaウ" -#: web/swat.c:656 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Usu Wspウudziaウ" -#: web/swat.c:663 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Utwrz Wspウudziaウ" -#: web/swat.c:708 -msgid "password change in demo mode rejected\n" +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" msgstr "zmiana hasウa w trybie demo odrzucona\n" -#: web/swat.c:747 -msgid " Must specify \"User Name\" \n" +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." +msgstr "" + +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " msgstr " Musisz poda \"Nazw Uソytkownika\" \n" -#: web/swat.c:763 -msgid " Must specify \"Old Password\" \n" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " msgstr " Musisz poda \"Stare Hasウo\" \n" -#: web/swat.c:769 -msgid " Must specify \"Remote Machine\" \n" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " msgstr " Musisz poda \"Zdalnア Maszyn鷭" \n" -#: web/swat.c:776 -msgid " Must specify \"New, and Re-typed Passwords\" \n" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " msgstr " Musisz poda \"Nowe Hasウo, i ponownie wpisane Nowe Hasウo\" \n" -#: web/swat.c:782 -msgid " Re-typed password didn't match new password\n" +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " msgstr " Ponownie wpisane hasウo nie pasuje do nowego hasウa\n" -#: web/swat.c:812 +#: ../web/swat.c:1048 #, c-format -msgid " The passwd for '%s' has been changed. \n" +msgid " The passwd for '%s' has been changed." msgstr " Hasウo dla '%s' zostaウo zmienione. \n" -#: web/swat.c:814 +#: ../web/swat.c:1051 #, c-format -msgid " The passwd for '%s' has NOT been changed. \n" +msgid " The passwd for '%s' has NOT been changed." msgstr " Hasウo dla '%s' NIE zostaウo zmienione. \n" -#: web/swat.c:838 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Zarzアdzanie Hasウami na Serwerze" #. #. * Create all the dialog boxes for data collection #. -#: web/swat.c:847 web/swat.c:894 -msgid " User Name : " -msgstr " Nazwa Uソytkownika : " +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" +msgstr " Nazwa Uソytkownika" -#: web/swat.c:850 web/swat.c:896 -msgid " Old Password : " -msgstr " Stare Hasウo : " +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" +msgstr " Stare Hasウo" -#: web/swat.c:853 web/swat.c:898 -msgid " New Password : " -msgstr " Nowe Hasウo : " +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" +msgstr " Nowe Hasウo" -#: web/swat.c:855 web/swat.c:900 -msgid " Re-type New Password : " -msgstr " Ponownie wpisz Nowe Hasウo : " +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" +msgstr " Ponownie wpisz Nowe Hasウo" -#: web/swat.c:863 web/swat.c:911 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "Zmie Hasウo" -#: web/swat.c:866 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "Dodaj Nowego Uソytkownika" -#: web/swat.c:868 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Usu Uソytkownika" -#: web/swat.c:870 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "Zablokuj Uソytkownika" -#: web/swat.c:872 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Odblokuj Uソytkownika" -#: web/swat.c:885 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "Zarzアdzanie Hasウami Klient/Serwer" -#: web/swat.c:902 -msgid " Remote Machine : " -msgstr " Zdalna Maszyna : " +#: ../web/swat.c:1140 +msgid "Remote Machine" +msgstr " Zdalna Maszyna" -#: web/swat.c:940 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "Parametry Drukarki" -#: web/swat.c:942 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "Waソna Informacja:" -#: web/swat.c:943 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "Nazwy Drukarek zaznaczone [*] w rozwijanym polu Wybierz Drukark " -#: web/swat.c:944 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "sア drukarkami automatycznie ウadowanymi z " -#: web/swat.c:945 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "Nazwa Printcap" -#: web/swat.c:946 -msgid "Attempting to delete these printers from SWAT will have no effect.\n" +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "Prby usuni鹹ia tych drukarek ze SWAT nie przyniosア efektu.\n" -#: web/swat.c:980 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Wybierz Drukark" -#: web/swat.c:999 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Usu Drukark" -#: web/swat.c:1006 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Utwrz Drukark" -#: web/statuspage.c:40 -msgid "DENY_NONE" -msgstr "" - -#: web/statuspage.c:41 -msgid "DENY_ALL " -msgstr "" - -#: web/statuspage.c:42 -msgid "DENY_DOS " -msgstr "" - -#: web/statuspage.c:43 -msgid "DENY_READ " -msgstr "" - -#: web/statuspage.c:44 -msgid "DENY_WRITE " -msgstr "" - -#: web/statuspage.c:50 +#: ../web/statuspage.c:123 msgid "RDONLY " msgstr "" -#: web/statuspage.c:51 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "" -#: web/statuspage.c:52 +#: ../web/statuspage.c:125 msgid "RDWR " msgstr "" -#: web/statuspage.c:60 -msgid "EXCLUSIVE+BATCH " -msgstr "" - -#: web/statuspage.c:62 -msgid "EXCLUSIVE " -msgstr "" - -#: web/statuspage.c:64 -msgid "BATCH " -msgstr "" - -#: web/statuspage.c:66 -msgid "LEVEL_II " -msgstr "" - -#: web/statuspage.c:68 -msgid "NONE " -msgstr "" - -#: web/statuspage.c:195 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "Status Serwera" -#: web/statuspage.c:200 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "Automatyczne Odカwieソanie" -#: web/statuspage.c:201 web/statuspage.c:206 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Interwaウ Odカwieソania: " -#: web/statuspage.c:205 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Zatrzymaj Odカwieソanie" -#: web/statuspage.c:220 +#: ../web/statuspage.c:334 msgid "version:" msgstr "wersja:" -#: web/statuspage.c:223 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "dziaウa" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "nie dziaウa" -#: web/statuspage.c:226 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "Zatrzymaj smbd" -#: web/statuspage.c:228 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "Uruchom smbd" -#: web/statuspage.c:230 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Zrestartuj smbd" -#: web/statuspage.c:235 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "" -#: web/statuspage.c:238 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "Zatrzymaj nmbd" -#: web/statuspage.c:240 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "Uruchom nmbd" -#: web/statuspage.c:242 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Zrestartuj nmbd" -#: web/statuspage.c:249 +#: ../web/statuspage.c:364 +msgid "winbindd:" +msgstr "" + +#: ../web/statuspage.c:368 +msgid "Stop winbindd" +msgstr "Zatrzymaj nmbd" + +#: ../web/statuspage.c:370 +msgid "Start winbindd" +msgstr "Uruchom nmbd" + +#: ../web/statuspage.c:372 +msgid "Restart winbindd" +msgstr "Zrestartuj nmbd" + +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" +msgstr "" + +#: ../web/statuspage.c:382 +msgid "Restart All" +msgstr "Zrestartuj nmbd" + +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" +msgstr "Uruchom nmbd" + +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Aktywne Poウアczenia" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "" -#: web/statuspage.c:251 web/statuspage.c:264 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "Klient" -#: web/statuspage.c:251 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "adres IP" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "Data" -#: web/statuspage.c:253 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Zatrzymaj" -#: web/statuspage.c:261 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "Aktywne Wspウudziaウy" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Wspウudziaウ" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "User" msgstr "Uソytkownik" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Grupa" -#: web/statuspage.c:270 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "Otwarte Pliki" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "Wspウdzielenie" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "File" msgstr "Plik" -#: param/loadparm.c:641 -msgid "Base Options" -msgstr "Bazowe Opcje" - -#: param/loadparm.c:643 -#, fuzzy -msgid "dos charset" -msgstr "Wybierz Wspウudziaウ" - -#: param/loadparm.c:644 -msgid "unix charset" -msgstr "" - -#: param/loadparm.c:645 -msgid "display charset" -msgstr "" - -#: param/loadparm.c:646 -msgid "comment" -msgstr "" - -#: param/loadparm.c:647 -msgid "path" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" msgstr "" -#: param/loadparm.c:648 -msgid "directory" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" msgstr "" -#: param/loadparm.c:649 -msgid "workgroup" -msgstr "" - -#: param/loadparm.c:650 -msgid "netbios name" -msgstr "" - -#: param/loadparm.c:651 -msgid "netbios aliases" -msgstr "" - -#: param/loadparm.c:652 -msgid "netbios scope" -msgstr "" - -#: param/loadparm.c:653 -msgid "server string" -msgstr "" - -#: param/loadparm.c:654 -#, fuzzy -msgid "interfaces" -msgstr "Drukarki" - -#: param/loadparm.c:655 -msgid "bind interfaces only" -msgstr "" +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "Bazowe Opcje" -#: param/loadparm.c:657 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "Opcje Zabezpiecze" -#: param/loadparm.c:659 -msgid "security" -msgstr "" - -#: param/loadparm.c:660 -msgid "encrypt passwords" -msgstr "" - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "" - -#: param/loadparm.c:662 -msgid "allow trusted domains" -msgstr "" - -#: param/loadparm.c:663 -msgid "alternate permissions" -msgstr "" - -#: param/loadparm.c:664 -msgid "hosts equiv" -msgstr "" - -#: param/loadparm.c:665 -msgid "min passwd length" -msgstr "" - -#: param/loadparm.c:666 -msgid "min password length" -msgstr "" - -#: param/loadparm.c:667 -msgid "map to guest" -msgstr "" - -#: param/loadparm.c:668 -#, fuzzy -msgid "null passwords" -msgstr "Zmie Hasウo" - -#: param/loadparm.c:669 -msgid "obey pam restrictions" -msgstr "" - -#: param/loadparm.c:670 -msgid "password server" -msgstr "" - -#: param/loadparm.c:671 -msgid "smb passwd file" -msgstr "" - -#: param/loadparm.c:672 -msgid "private dir" -msgstr "" - -#: param/loadparm.c:673 -msgid "passdb module path" -msgstr "" - -#: param/loadparm.c:674 -msgid "root directory" -msgstr "" - -#: param/loadparm.c:675 -msgid "root dir" -msgstr "" - -#: param/loadparm.c:676 -msgid "root" -msgstr "" - -#: param/loadparm.c:678 -#, fuzzy -msgid "pam password change" -msgstr "Zarzアdzanie Hasウami" - -#: param/loadparm.c:679 -msgid "passwd program" -msgstr "" - -#: param/loadparm.c:680 -msgid "passwd chat" -msgstr "" - -#: param/loadparm.c:681 -msgid "passwd chat debug" -msgstr "" - -#: param/loadparm.c:682 -msgid "username map" -msgstr "" - -#: param/loadparm.c:683 -#, fuzzy -msgid "password level" -msgstr "Zarzアdzanie Hasウami" - -#: param/loadparm.c:684 -msgid "username level" -msgstr "" - -#: param/loadparm.c:685 -msgid "unix password sync" -msgstr "" - -#: param/loadparm.c:686 -msgid "restrict anonymous" -msgstr "" - -#: param/loadparm.c:687 -msgid "lanman auth" -msgstr "" - -#: param/loadparm.c:688 -msgid "ntlm auth" -msgstr "" - -#: param/loadparm.c:689 -msgid "plaintext to smbpasswd" -msgstr "" - -#: param/loadparm.c:690 -msgid "use rhosts" -msgstr "" - -#: param/loadparm.c:692 -msgid "username" -msgstr "" - -#: param/loadparm.c:693 -#, fuzzy -msgid "user" -msgstr "Uソytkownik" - -#: param/loadparm.c:694 -#, fuzzy -msgid "users" -msgstr "Uソytkownik" - -#: param/loadparm.c:696 -msgid "guest account" -msgstr "" - -#: param/loadparm.c:697 -msgid "invalid users" -msgstr "" - -#: param/loadparm.c:698 -msgid "valid users" -msgstr "" - -#: param/loadparm.c:699 -msgid "admin users" -msgstr "" - -#: param/loadparm.c:700 -msgid "read list" -msgstr "" - -#: param/loadparm.c:701 -msgid "write list" -msgstr "" - -#: param/loadparm.c:702 -msgid "printer admin" -msgstr "" - -#: param/loadparm.c:703 -msgid "force user" -msgstr "" - -#: param/loadparm.c:704 -msgid "force group" -msgstr "" - -#: param/loadparm.c:705 -#, fuzzy -msgid "group" -msgstr "Grupa" - -#: param/loadparm.c:707 -msgid "read only" -msgstr "" - -#: param/loadparm.c:708 -msgid "write ok" -msgstr "" - -#: param/loadparm.c:709 -msgid "writeable" -msgstr "" - -#: param/loadparm.c:710 -msgid "writable" -msgstr "" - -#: param/loadparm.c:712 -#, fuzzy -msgid "create mask" -msgstr "Utwrz Wspウudziaウ" - -#: param/loadparm.c:713 -#, fuzzy -msgid "create mode" -msgstr "Utwrz Wspウudziaウ" - -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "" - -#: param/loadparm.c:715 -#, fuzzy -msgid "security mask" -msgstr "Opcje Zabezpiecze" - -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "" - -#: param/loadparm.c:717 -msgid "directory mask" -msgstr "" - -#: param/loadparm.c:718 -msgid "directory mode" -msgstr "" - -#: param/loadparm.c:719 -msgid "force directory mode" -msgstr "" - -#: param/loadparm.c:720 -msgid "directory security mask" -msgstr "" - -#: param/loadparm.c:721 -msgid "force directory security mode" -msgstr "" - -#: param/loadparm.c:722 -msgid "inherit permissions" -msgstr "" - -#: param/loadparm.c:723 -msgid "guest only" -msgstr "" - -#: param/loadparm.c:724 -msgid "only guest" -msgstr "" - -#: param/loadparm.c:726 -msgid "guest ok" -msgstr "" - -#: param/loadparm.c:727 -msgid "public" -msgstr "" - -#: param/loadparm.c:729 -#, fuzzy -msgid "only user" -msgstr "Odblokuj Uソytkownika" - -#: param/loadparm.c:730 -msgid "hosts allow" -msgstr "" - -#: param/loadparm.c:731 -msgid "allow hosts" -msgstr "" - -#: param/loadparm.c:732 -msgid "hosts deny" -msgstr "" - -#: param/loadparm.c:733 -msgid "deny hosts" -msgstr "" - -#: param/loadparm.c:736 -msgid "Secure Socket Layer Options" -msgstr "Opcje SSL" - -#: param/loadparm.c:737 -msgid "ssl" -msgstr "" - -#: param/loadparm.c:739 -msgid "ssl hosts" -msgstr "" - -#: param/loadparm.c:740 -msgid "ssl hosts resign" -msgstr "" - -#: param/loadparm.c:741 -msgid "ssl CA certDir" -msgstr "" - -#: param/loadparm.c:742 -msgid "ssl CA certFile" -msgstr "" - -#: param/loadparm.c:743 -msgid "ssl server cert" -msgstr "" - -#: param/loadparm.c:744 -msgid "ssl server key" -msgstr "" - -#: param/loadparm.c:745 -msgid "ssl client cert" -msgstr "" - -#: param/loadparm.c:746 -msgid "ssl client key" -msgstr "" - -#: param/loadparm.c:747 -msgid "ssl require clientcert" -msgstr "" - -#: param/loadparm.c:748 -msgid "ssl require servercert" -msgstr "" - -#: param/loadparm.c:749 -msgid "ssl ciphers" -msgstr "" - -#: param/loadparm.c:750 -#, fuzzy -msgid "ssl version" -msgstr "wersja:" - -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "" - -#: param/loadparm.c:754 -#, fuzzy +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Opcje Blokowania" -#: param/loadparm.c:755 -msgid "log level" -msgstr "" - -#: param/loadparm.c:756 -msgid "debuglevel" -msgstr "" - -#: param/loadparm.c:757 -msgid "syslog" -msgstr "" - -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "" - -#: param/loadparm.c:759 -msgid "log file" -msgstr "" - -#: param/loadparm.c:761 -msgid "max log size" -msgstr "" - -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "" - -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "" - -#: param/loadparm.c:764 -msgid "debug hires timestamp" -msgstr "" - -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "" - -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "" - -#: param/loadparm.c:768 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "Opcje Protokoウu" -#: param/loadparm.c:770 -msgid "protocol" -msgstr "" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "" - -#: param/loadparm.c:772 -msgid "max protocol" -msgstr "" - -#: param/loadparm.c:773 -msgid "min protocol" -msgstr "" - -#: param/loadparm.c:774 -msgid "unicode" -msgstr "" - -#: param/loadparm.c:775 -msgid "read bmpx" -msgstr "" - -#: param/loadparm.c:776 -msgid "read raw" -msgstr "" - -#: param/loadparm.c:777 -msgid "write raw" -msgstr "" - -#: param/loadparm.c:779 -msgid "nt smb support" -msgstr "" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "" - -#: param/loadparm.c:782 -msgid "announce version" -msgstr "" - -#: param/loadparm.c:783 -msgid "announce as" -msgstr "" - -#: param/loadparm.c:784 -msgid "max mux" -msgstr "" - -#: param/loadparm.c:785 -msgid "max xmit" -msgstr "" - -#: param/loadparm.c:787 -msgid "name resolve order" -msgstr "" - -#: param/loadparm.c:788 -msgid "max packet" -msgstr "" - -#: param/loadparm.c:789 -msgid "packet size" -msgstr "" - -#: param/loadparm.c:790 -msgid "max ttl" -msgstr "" - -#: param/loadparm.c:791 -msgid "max wins ttl" -msgstr "" - -#: param/loadparm.c:792 -msgid "min wins ttl" -msgstr "" - -#: param/loadparm.c:793 -msgid "time server" -msgstr "" - -#: param/loadparm.c:795 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "Opcje Dostrajajアce" -#: param/loadparm.c:797 -msgid "change notify timeout" -msgstr "" - -#: param/loadparm.c:798 -msgid "deadtime" -msgstr "" - -#: param/loadparm.c:799 -msgid "getwd cache" -msgstr "" - -#: param/loadparm.c:800 -msgid "keepalive" -msgstr "" - -#: param/loadparm.c:802 -msgid "lpq cache time" -msgstr "" - -#: param/loadparm.c:803 -msgid "max smbd processes" -msgstr "" - -#: param/loadparm.c:804 -#, fuzzy -msgid "max connections" -msgstr "Aktywne Poウアczenia" - -#: param/loadparm.c:805 -msgid "paranoid server security" -msgstr "" - -#: param/loadparm.c:806 -msgid "max disk size" -msgstr "" - -#: param/loadparm.c:807 -#, fuzzy -msgid "max open files" -msgstr "Otwarte Pliki" - -#: param/loadparm.c:808 -msgid "min print space" -msgstr "" - -#: param/loadparm.c:809 -msgid "read size" -msgstr "" - -#: param/loadparm.c:811 -#, fuzzy -msgid "socket options" -msgstr "Bazowe Opcje" - -#: param/loadparm.c:812 -msgid "stat cache size" -msgstr "" - -#: param/loadparm.c:813 -msgid "strict allocate" -msgstr "" - -#: param/loadparm.c:814 -msgid "strict sync" -msgstr "" - -#: param/loadparm.c:815 -msgid "sync always" -msgstr "" - -#: param/loadparm.c:816 -msgid "use mmap" -msgstr "" - -#: param/loadparm.c:817 -msgid "hostname lookups" -msgstr "" - -#: param/loadparm.c:818 -msgid "write cache size" -msgstr "" - -#: param/loadparm.c:820 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "Opcje Drukowania" -#: param/loadparm.c:822 -msgid "total print jobs" -msgstr "" - -#: param/loadparm.c:823 -msgid "max print jobs" -msgstr "" - -#: param/loadparm.c:824 -#, fuzzy -msgid "load printers" -msgstr "Drukarki" - -#: param/loadparm.c:825 -#, fuzzy -msgid "printcap name" -msgstr "Nazwa Printcap" - -#: param/loadparm.c:826 -#, fuzzy -msgid "printcap" -msgstr "Nazwa Printcap" - -#: param/loadparm.c:827 -msgid "printable" -msgstr "" - -#: param/loadparm.c:828 -msgid "print ok" -msgstr "" - -#: param/loadparm.c:829 -msgid "postscript" -msgstr "" - -#: param/loadparm.c:830 -#, fuzzy -msgid "printing" -msgstr "dziaウa" - -#: param/loadparm.c:831 -msgid "print command" -msgstr "" - -#: param/loadparm.c:832 -msgid "disable spoolss" -msgstr "" - -#: param/loadparm.c:833 -msgid "lpq command" -msgstr "" - -#: param/loadparm.c:834 -msgid "lprm command" -msgstr "" - -#: param/loadparm.c:835 -msgid "lppause command" -msgstr "" - -#: param/loadparm.c:836 -msgid "lpresume command" -msgstr "" - -#: param/loadparm.c:837 -msgid "queuepause command" -msgstr "" - -#: param/loadparm.c:838 -msgid "queueresume command" -msgstr "" - -#: param/loadparm.c:840 -msgid "enumports command" -msgstr "" - -#: param/loadparm.c:841 -msgid "addprinter command" -msgstr "" - -#: param/loadparm.c:842 -#, fuzzy -msgid "deleteprinter command" -msgstr "Usu Drukark" - -#: param/loadparm.c:843 -msgid "show add printer wizard" -msgstr "" - -#: param/loadparm.c:844 -msgid "os2 driver map" -msgstr "" - -#: param/loadparm.c:846 -#, fuzzy -msgid "printer name" -msgstr "Parametry Drukarki" - -#: param/loadparm.c:847 -#, fuzzy -msgid "printer" -msgstr "Drukarki" - -#: param/loadparm.c:848 -msgid "use client driver" -msgstr "" - -#: param/loadparm.c:849 -#, fuzzy -msgid "printer driver" -msgstr "Parametry Drukarki" - -#: param/loadparm.c:850 -msgid "printer driver file" -msgstr "" - -#: param/loadparm.c:851 -msgid "printer driver location" -msgstr "" - -#: param/loadparm.c:853 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Obsウuga Nazw Plikw" -#: param/loadparm.c:854 -msgid "strip dot" -msgstr "" - -#: param/loadparm.c:856 -msgid "mangled stack" -msgstr "" - -#: param/loadparm.c:857 -msgid "default case" -msgstr "" - -#: param/loadparm.c:858 -msgid "case sensitive" -msgstr "" - -#: param/loadparm.c:859 -msgid "casesignames" -msgstr "" - -#: param/loadparm.c:860 -msgid "preserve case" -msgstr "" - -#: param/loadparm.c:861 -msgid "short preserve case" -msgstr "" - -#: param/loadparm.c:862 -msgid "mangle case" -msgstr "" - -#: param/loadparm.c:863 -msgid "mangling char" -msgstr "" - -#: param/loadparm.c:864 -msgid "hide dot files" -msgstr "" - -#: param/loadparm.c:865 -msgid "hide unreadable" -msgstr "" - -#: param/loadparm.c:866 -msgid "delete veto files" -msgstr "" - -#: param/loadparm.c:867 -#, fuzzy -msgid "veto files" -msgstr "Otwarte Pliki" - -#: param/loadparm.c:868 -#, fuzzy -msgid "hide files" -msgstr "Otwarte Pliki" - -#: param/loadparm.c:869 -msgid "veto oplock files" -msgstr "" - -#: param/loadparm.c:870 -msgid "map system" -msgstr "" - -#: param/loadparm.c:871 -msgid "map hidden" -msgstr "" - -#: param/loadparm.c:872 -msgid "map archive" -msgstr "" - -#: param/loadparm.c:873 -msgid "mangled names" -msgstr "" - -#: param/loadparm.c:874 -msgid "mangled map" -msgstr "" - -#: param/loadparm.c:875 -msgid "stat cache" -msgstr "" - -#: param/loadparm.c:877 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Opcje Domeny" -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "" - -#: param/loadparm.c:888 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Opcje Logowania" -#: param/loadparm.c:890 -msgid "add user script" -msgstr "" - -#: param/loadparm.c:891 -#, fuzzy -msgid "delete user script" -msgstr "Usu Uソytkownika" - -#: param/loadparm.c:892 -msgid "add group script" -msgstr "" - -#: param/loadparm.c:893 -msgid "delete group script" -msgstr "" - -#: param/loadparm.c:894 -msgid "add user to group script" -msgstr "" - -#: param/loadparm.c:895 -msgid "delete user from group script" -msgstr "" - -#: param/loadparm.c:896 -msgid "add machine script" -msgstr "" - -#: param/loadparm.c:897 -msgid "shutdown script" -msgstr "" - -#: param/loadparm.c:898 -msgid "abort shutdown script" -msgstr "" - -#: param/loadparm.c:900 -msgid "logon script" -msgstr "" - -#: param/loadparm.c:901 -#, fuzzy -msgid "logon path" -msgstr "Opcje Logowania" - -#: param/loadparm.c:902 -msgid "logon drive" -msgstr "" - -#: param/loadparm.c:903 -msgid "logon home" -msgstr "" - -#: param/loadparm.c:904 -#, fuzzy -msgid "domain logons" -msgstr "Opcje Domeny" - -#: param/loadparm.c:906 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Opcje Przeglアdania" -#: param/loadparm.c:908 -msgid "os level" -msgstr "" - -#: param/loadparm.c:909 -msgid "lm announce" -msgstr "" - -#: param/loadparm.c:910 -msgid "lm interval" -msgstr "" - -#: param/loadparm.c:911 -msgid "preferred master" -msgstr "" - -#: param/loadparm.c:912 -msgid "prefered master" -msgstr "" - -#: param/loadparm.c:913 -msgid "local master" -msgstr "" - -#: param/loadparm.c:914 -msgid "domain master" -msgstr "" - -#: param/loadparm.c:915 -#, fuzzy -msgid "browse list" -msgstr "Opcje Przeglアdania" - -#: param/loadparm.c:916 -msgid "browseable" -msgstr "" - -#: param/loadparm.c:917 -msgid "browsable" -msgstr "" - -#: param/loadparm.c:918 -msgid "enhanced browsing" -msgstr "" - -#: param/loadparm.c:920 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "Opcje WINS" -#: param/loadparm.c:921 -msgid "dns proxy" -msgstr "" - -#: param/loadparm.c:922 -msgid "wins proxy" -msgstr "" - -#: param/loadparm.c:924 -msgid "wins server" -msgstr "" - -#: param/loadparm.c:925 -msgid "wins support" -msgstr "" - -#: param/loadparm.c:926 -msgid "wins hook" -msgstr "" - -#: param/loadparm.c:928 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Opcje Blokowania" -#: param/loadparm.c:930 -#, fuzzy -msgid "blocking locks" -msgstr "Opcje Blokowania" - -#: param/loadparm.c:931 -msgid "fake oplocks" -msgstr "" - -#: param/loadparm.c:932 -msgid "kernel oplocks" -msgstr "" - -#: param/loadparm.c:933 -msgid "locking" -msgstr "" - -#: param/loadparm.c:935 -msgid "oplocks" -msgstr "" - -#: param/loadparm.c:936 -msgid "level2 oplocks" -msgstr "" - -#: param/loadparm.c:937 -msgid "oplock break wait time" -msgstr "" - -#: param/loadparm.c:938 -msgid "oplock contention limit" -msgstr "" - -#: param/loadparm.c:939 -msgid "posix locking" -msgstr "" - -#: param/loadparm.c:940 -msgid "strict locking" -msgstr "" - -#: param/loadparm.c:941 -msgid "share modes" -msgstr "" - -#: param/loadparm.c:944 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "Opcje Ldap" -#: param/loadparm.c:946 -msgid "ldap server" -msgstr "" - -#: param/loadparm.c:947 -msgid "ldap port" -msgstr "" - -#: param/loadparm.c:948 -msgid "ldap suffix" -msgstr "" - -#: param/loadparm.c:949 -msgid "ldap filter" -msgstr "" - -#: param/loadparm.c:950 -msgid "ldap root" -msgstr "" - -#: param/loadparm.c:951 -msgid "ldap root passwd" -msgstr "" - -#: param/loadparm.c:954 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Pozostaウe Opcje" -#: param/loadparm.c:955 -msgid "add share command" -msgstr "" - -#: param/loadparm.c:956 -msgid "change share command" -msgstr "" - -#: param/loadparm.c:957 -#, fuzzy -msgid "delete share command" -msgstr "Usu Wspウudziaウ" - -#: param/loadparm.c:959 -msgid "config file" -msgstr "" - -#: param/loadparm.c:960 -msgid "preload" -msgstr "" - -#: param/loadparm.c:961 -#, fuzzy -msgid "auto services" -msgstr "Automatyczne Odカwieソanie" - -#: param/loadparm.c:962 -msgid "lock dir" -msgstr "" - -#: param/loadparm.c:963 -msgid "lock directory" -msgstr "" - -#: param/loadparm.c:965 -msgid "utmp directory" -msgstr "" - -#: param/loadparm.c:966 -msgid "wtmp directory" -msgstr "" - -#: param/loadparm.c:967 -msgid "utmp" -msgstr "" - -#: param/loadparm.c:970 -msgid "default service" -msgstr "" - -#: param/loadparm.c:971 -#, fuzzy -msgid "default" -msgstr "Ustaw domyカlnie" - -#: param/loadparm.c:972 -msgid "message command" -msgstr "" - -#: param/loadparm.c:973 -msgid "dfree command" -msgstr "" - -#: param/loadparm.c:974 -msgid "remote announce" -msgstr "" - -#: param/loadparm.c:975 -msgid "remote browse sync" -msgstr "" - -#: param/loadparm.c:976 -#, fuzzy -msgid "socket address" -msgstr "adres IP" - -#: param/loadparm.c:977 -msgid "homedir map" -msgstr "" - -#: param/loadparm.c:978 -msgid "time offset" -msgstr "" - -#: param/loadparm.c:979 -msgid "NIS homedir" -msgstr "" - -#: param/loadparm.c:980 -msgid "-valid" -msgstr "" - -#: param/loadparm.c:982 -msgid "copy" -msgstr "" - -#: param/loadparm.c:983 -msgid "include" -msgstr "" - -#: param/loadparm.c:984 -msgid "exec" -msgstr "" - -#: param/loadparm.c:985 -msgid "preexec" -msgstr "" - -#: param/loadparm.c:987 -msgid "preexec close" -msgstr "" - -#: param/loadparm.c:988 -msgid "postexec" -msgstr "" - -#: param/loadparm.c:989 -msgid "root preexec" -msgstr "" - -#: param/loadparm.c:990 -msgid "root preexec close" -msgstr "" - -#: param/loadparm.c:991 -msgid "root postexec" -msgstr "" - -#: param/loadparm.c:992 -msgid "available" -msgstr "" - -#: param/loadparm.c:993 -#, fuzzy -msgid "volume" -msgstr "Strona domowa" - -#: param/loadparm.c:994 -msgid "fstype" -msgstr "" - -#: param/loadparm.c:995 -msgid "set directory" -msgstr "" - -#: param/loadparm.c:996 -msgid "source environment" -msgstr "" - -#: param/loadparm.c:997 -msgid "wide links" -msgstr "" - -#: param/loadparm.c:998 -msgid "follow symlinks" -msgstr "" - -#: param/loadparm.c:999 -msgid "dont descend" -msgstr "" - -#: param/loadparm.c:1000 -msgid "magic script" -msgstr "" - -#: param/loadparm.c:1001 -msgid "magic output" -msgstr "" - -#: param/loadparm.c:1002 -msgid "delete readonly" -msgstr "" - -#: param/loadparm.c:1003 -msgid "dos filemode" -msgstr "" - -#: param/loadparm.c:1004 -msgid "dos filetimes" -msgstr "" - -#: param/loadparm.c:1005 -msgid "dos filetime resolution" -msgstr "" - -#: param/loadparm.c:1007 -msgid "fake directory create times" -msgstr "" - -#: param/loadparm.c:1008 -msgid "panic action" -msgstr "" - -#: param/loadparm.c:1009 -msgid "hide local users" -msgstr "" - -#: param/loadparm.c:1012 -#, fuzzy -msgid "VFS options" +#: ../param/loadparm.c:1138 +msgid "VFS module options" msgstr "Opcje WINS" -#: param/loadparm.c:1014 -msgid "vfs object" -msgstr "" - -#: param/loadparm.c:1015 -#, fuzzy -msgid "vfs options" -msgstr "Bazowe Opcje" - -#: param/loadparm.c:1018 -msgid "msdfs root" -msgstr "" - -#: param/loadparm.c:1019 -msgid "host msdfs" -msgstr "" - -#: param/loadparm.c:1021 -#, fuzzy +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Opcje Drukowania" - -#: param/loadparm.c:1023 -msgid "winbind uid" -msgstr "" - -#: param/loadparm.c:1024 -msgid "winbind gid" -msgstr "" - -#: param/loadparm.c:1025 -msgid "template homedir" -msgstr "" - -#: param/loadparm.c:1026 -msgid "template shell" -msgstr "" - -#: param/loadparm.c:1027 -msgid "winbind separator" -msgstr "" - -#: param/loadparm.c:1028 -msgid "winbind cache time" -msgstr "" - -#: param/loadparm.c:1029 -msgid "winbind enum users" -msgstr "" - -#: param/loadparm.c:1030 -msgid "winbind enum groups" -msgstr "" - -#~ msgid "failed to open %s for writing\n" -#~ msgstr "nie udaウo si otworzy %s do zapisu\n" - -#~ msgid "Can't reload %s\n" -#~ msgstr "Nie mog przeウadowa %s\n" - -#~ msgid "Can't setup password database vectors.\n" -#~ msgstr "Nie moソna ustawi wektorw bazy haseウ.\n" - -#~ msgid "You need to have status=yes in your smb config file\n" -#~ msgstr "Musisz mie status=yes w swoim pliku konfiguracyjnym smb\n" diff --git a/source/po/tr.msg b/source/po/tr.msg index 6c2bc1f93d8..8ef551da46a 100644 --- a/source/po/tr.msg +++ b/source/po/tr.msg @@ -1,6 +1,5 @@ -# Swat Turkish Translation -# Copyright (C) 2001 Deniz Akkus Kanca -# Deniz Akkus Kanca <deniz@arayan.com>, 2001. +# Turkish messages for international release of SWAT. +# Copyright (C) 2001 Deniz Akkus Kanca <deniz@arayan.com> # # 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 @@ -15,10 +14,11 @@ # 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. +# msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"POT-Creation-Date: 2001-09-20 20:29+0900\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2001-09-20 22:51EEST\n" "Last-Translator: Deniz Akkus Kanca <deniz@arayan.com>\n" "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n" @@ -27,1697 +27,568 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 0.9.1\n" -#: web/swat.c:120 +#: ../web/swat.c:117 #, c-format -msgid "ERROR: Can't open %s\n" -msgstr "HATA: %s alamad\n" +msgid "ERROR: Can't open %s" +msgstr "" -#. -#. str = stripspace(parm->label); -#. strlower (str); //monyo -#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A> %s</td><td>", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 +#: ../web/swat.c:200 msgid "Help" msgstr "Yardm" -#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263 -#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "ヨntanmlya Ayarla" -#: web/swat.c:502 +#: ../web/swat.c:408 #, c-format -msgid "Logged in as <b>%s</b><p>\n" -msgstr "<b>%s</b> kimlii ile oturum alm<p>\n" +msgid "failed to open %s for writing" +msgstr "" -#: web/swat.c:505 +#: ../web/swat.c:431 +#, c-format +msgid "Can't reload %s" +msgstr "" + +#: ../web/swat.c:501 +#, c-format +msgid "Logged in as <b>%s</b>" +msgstr "<b>%s</b> kimlii ile oturum alm" + +#: ../web/swat.c:505 msgid "Home" msgstr "Ev" -#: web/swat.c:507 +#: ../web/swat.c:507 msgid "Globals" msgstr "Evrenseller" -#: web/swat.c:508 +#: ../web/swat.c:508 msgid "Shares" msgstr "Paylamlar" -#: web/swat.c:509 +#: ../web/swat.c:509 msgid "Printers" msgstr "Yazclar" -#: web/swat.c:512 +#: ../web/swat.c:510 +msgid "Wizard" +msgstr "" + +#: ../web/swat.c:513 msgid "Status" msgstr "Durum" -#: web/swat.c:513 +#: ../web/swat.c:514 msgid "View Config" msgstr "Ayarlara Gzat" -#: web/swat.c:515 +#: ../web/swat.c:516 msgid "Password Management" msgstr "゙ifre Ynetimi" -#: web/swat.c:539 +#: ../web/swat.c:526 +msgid "Current View Is" +msgstr "゙imdiki Ayarlar" + +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" +msgstr "Temel Grnm" + +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" +msgstr "Gelimi Grnm" + +#: ../web/swat.c:529 +msgid "Change View To" +msgstr "゙ifre Deitir" + +#: ../web/swat.c:554 msgid "Current Config" msgstr "゙imdiki Ayarlar" -#: web/swat.c:543 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Normal Grnm" -#: web/swat.c:545 +#: ../web/swat.c:560 msgid "Full View" msgstr "Tam Grnm" -#: web/swat.c:561 -msgid "Global Variables" +#. Here we first set and commit all the parameters that were selected +#. in the previous screen. +#: ../web/swat.c:579 +msgid "Wizard Parameter Edit Page" +msgstr "" + +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" +msgstr "" + +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" +msgstr "" + +#: ../web/swat.c:720 +msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." +msgstr "" + +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." +msgstr "" + +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" +msgstr "" + +#: ../web/swat.c:725 +msgid "Commit" +msgstr "aklama" + +#: ../web/swat.c:726 +msgid "Edit Parameter Values" +msgstr "Yazc Bilgileri" + +#: ../web/swat.c:732 +msgid "Server Type" +msgstr "" + +#: ../web/swat.c:733 +msgid "Stand Alone" +msgstr "Nmbd'yi 軋ltr" + +#: ../web/swat.c:734 +msgid "Domain Member" +msgstr "alan sunucusu" + +#: ../web/swat.c:735 +msgid "Domain Controller" +msgstr "alan sunucusu" + +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" +msgstr "" + +#: ../web/swat.c:740 +msgid "Configure WINS As" +msgstr "" + +#: ../web/swat.c:741 +msgid "Not Used" +msgstr "dont descend" + +#: ../web/swat.c:742 +msgid "Server for client use" +msgstr "" + +#: ../web/swat.c:743 +msgid "Client of another WINS server" +msgstr "" + +#: ../web/swat.c:745 +msgid "Remote WINS Server" +msgstr "" + +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" +msgstr "" + +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." +msgstr "" + +#: ../web/swat.c:759 +msgid "Expose Home Directories" +msgstr "" + +#: ../web/swat.c:774 +msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." +msgstr "" + +#: ../web/swat.c:787 +msgid "Global Parameters" msgstr "Genel Deikenler" -#: web/swat.c:575 web/swat.c:671 web/swat.c:1014 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "Deiiklikleri Kaydet" -#: web/swat.c:579 web/swat.c:674 web/swat.c:1016 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "Deerleri ンlk Haline Getir" -#: web/swat.c:581 web/swat.c:676 web/swat.c:1018 -msgid "Advanced View" -msgstr "Gelimi Grnm" - -#: web/swat.c:583 web/swat.c:678 web/swat.c:1020 -msgid "Basic View" -msgstr "Temel Grnm" - -#: web/swat.c:613 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Paylam Parametreleri" -#: web/swat.c:642 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "Paylam Se輅n" -#: web/swat.c:656 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Paylam Kaldr" -#: web/swat.c:663 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Paylam Olutur" -#: web/swat.c:708 -msgid "password change in demo mode rejected\n" +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" msgstr "demo kipinde ifre deiiklii kabul edilmedi\n" -#: web/swat.c:747 -msgid " Must specify \"User Name\" \n" +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." +msgstr "" + +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " msgstr " \"Kullanc Ad\" belirtilmeli \n" -#: web/swat.c:763 -msgid " Must specify \"Old Password\" \n" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " msgstr " \"Eski ゙ifre\" belirtilmeli \n" -#: web/swat.c:769 -msgid " Must specify \"Remote Machine\" \n" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " msgstr " \"Uzak Makina\" belirtilmeli \n" -#: web/swat.c:776 -msgid " Must specify \"New, and Re-typed Passwords\" \n" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " msgstr " \"Yeni ve Tekrar Girilmi ゙ifreler\" belirtilmeli \n" -#: web/swat.c:782 -msgid " Re-typed password didn't match new password\n" +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " msgstr " Tekrar girilen ifre yeni ifre ile elemedi\n" -#: web/swat.c:812 +#: ../web/swat.c:1048 #, c-format -msgid " The passwd for '%s' has been changed. \n" -msgstr " '%s' i輅n ifre deitirildi. \n" +msgid " The passwd for '%s' has been changed." +msgstr " '%s' i輅n ifre deitirildi." -#: web/swat.c:814 +#: ../web/swat.c:1051 #, c-format -msgid " The passwd for '%s' has NOT been changed. \n" -msgstr " '%s' i輅n ifre DEミン゙TンRンLMEDン. \n" +msgid " The passwd for '%s' has NOT been changed." +msgstr " '%s' i輅n ifre DEミン゙TンRンLMEDン." -#: web/swat.c:838 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Sunucu ゙ifre Ynetimi" #. #. * Create all the dialog boxes for data collection #. -#: web/swat.c:847 web/swat.c:894 -msgid " User Name : " -msgstr " Kullanc Ad : " +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" +msgstr " Kullanc Ad" -#: web/swat.c:850 web/swat.c:896 -msgid " Old Password : " -msgstr " Eski ゙ifre : " +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" +msgstr " Eski ゙ifre" -#: web/swat.c:853 web/swat.c:898 -msgid " New Password : " -msgstr " Yeni ゙ifre : " +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" +msgstr " Yeni ゙ifre" -#: web/swat.c:855 web/swat.c:900 -msgid " Re-type New Password : " -msgstr " Yeni ゙ifre Tekrar : " +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" +msgstr " Yeni ゙ifre Tekrar" -#: web/swat.c:863 web/swat.c:911 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "゙ifre Deitir" -#: web/swat.c:866 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "Kull. Ekle" -#: web/swat.c:868 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Kull. Sil" -#: web/swat.c:870 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "Kull. Etkisizletir" -#: web/swat.c:872 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Kull. Etkinletir" -#: web/swat.c:885 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "ンstemci/Sunucu ゙ifre Ynetimi" -#: web/swat.c:902 -msgid " Remote Machine : " -msgstr " Uzak Makina : " +#: ../web/swat.c:1140 +msgid "Remote Machine" +msgstr " Uzak Makina" -#: web/swat.c:940 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "Yazc Bilgileri" -#: web/swat.c:942 +#: ../web/swat.c:1181 msgid "Important Note:" -msgstr "ヨnemli Not: " +msgstr "ヨnemli Not:" -#: web/swat.c:943 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "Yazc Se kutusunda [*] ile iaretlenmi yazc isimleri " -#: web/swat.c:944 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "otomatik yklenen yazclar " -#: web/swat.c:945 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "Printcap Ad" -#: web/swat.c:946 -msgid "Attempting to delete these printers from SWAT will have no effect.\n" +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "Bu yazclar SWAT'dan silmek etkisiz olacaktr.\n" -#: web/swat.c:980 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Yazc Se" -#: web/swat.c:999 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Yazc Sil" -#: web/swat.c:1006 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Yazc Olutur" -#: web/statuspage.c:40 -msgid "DENY_NONE" -msgstr "HERKESE_AヌIK" - -#: web/statuspage.c:41 -msgid "DENY_ALL " -msgstr "HERKESン_REDDET " - -#: web/statuspage.c:42 -msgid "DENY_DOS " -msgstr "DOSU_REDDET " - -#: web/statuspage.c:43 -msgid "DENY_READ " -msgstr "OKU_REDDET " - -#: web/statuspage.c:44 -msgid "DENY_WRITE " -msgstr "YAZ_REDDET " - -#: web/statuspage.c:50 +#: ../web/statuspage.c:123 msgid "RDONLY " msgstr "SALTOKUNUR " -#: web/statuspage.c:51 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "SALTYAZILIR " -#: web/statuspage.c:52 +#: ../web/statuspage.c:125 msgid "RDWR " msgstr "O/Y " -#: web/statuspage.c:60 -msgid "EXCLUSIVE+BATCH " -msgstr "゙AHSン+TOPTAN " - -#: web/statuspage.c:62 -msgid "EXCLUSIVE " -msgstr "゙AHSン " - -#: web/statuspage.c:64 -msgid "BATCH " -msgstr "TOPTAN " - -#: web/statuspage.c:66 -msgid "LEVEL_II " -msgstr "SEVンYE_II " - -#: web/statuspage.c:68 -msgid "NONE " -msgstr "Hンヌ " - -#: web/statuspage.c:195 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "Sunucu Durumu" -#: web/statuspage.c:200 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "Oto Tazele" -#: web/statuspage.c:201 web/statuspage.c:206 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Tazeleme Aral: " -#: web/statuspage.c:205 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Tazelemeyi Durdur" -#: web/statuspage.c:220 +#: ../web/statuspage.c:334 msgid "version:" msgstr "srm:" -#: web/statuspage.c:223 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "smbd:" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "軋lyor" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "軋lmyor" -#: web/statuspage.c:226 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "Smbd'yi durdur" -#: web/statuspage.c:228 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "Smbd'yi 軋ltr" -#: web/statuspage.c:230 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Smbd'yi yeniden 軋ltr" -#: web/statuspage.c:235 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "nmbd:" -#: web/statuspage.c:238 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "Nmbd'yi durdur" -#: web/statuspage.c:240 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "Nmbd'yi 軋ltr" -#: web/statuspage.c:242 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Nmbd'yi yeniden 軋ltr" -#: web/statuspage.c:249 +#: ../web/statuspage.c:364 +msgid "winbindd:" +msgstr "winbind uid" + +#: ../web/statuspage.c:368 +msgid "Stop winbindd" +msgstr "Nmbd'yi durdur" + +#: ../web/statuspage.c:370 +msgid "Start winbindd" +msgstr "Nmbd'yi 軋ltr" + +#: ../web/statuspage.c:372 +msgid "Restart winbindd" +msgstr "Nmbd'yi yeniden 軋ltr" + +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" +msgstr "" + +#: ../web/statuspage.c:382 +msgid "Restart All" +msgstr "Nmbd'yi yeniden 軋ltr" + +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" +msgstr "Nmbd'yi 軋ltr" + +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Aktif Balantlar" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "PID" -#: web/statuspage.c:251 web/statuspage.c:264 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "ンstemci" -#: web/statuspage.c:251 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "IP numaras" -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "Tarih" -#: web/statuspage.c:253 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Kapat" -#: web/statuspage.c:261 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "Aktif Paylamlar" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Paylam" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "User" msgstr "Kullanc" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Grup" -#: web/statuspage.c:270 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "Ak Dosyalar" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "Paylalyor" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "O/Y" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "Oplock" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "File" msgstr "Dosya" -#: param/loadparm.c:641 -msgid "Base Options" -msgstr "Temel Se軻nekler" - -#: param/loadparm.c:643 -msgid "dos charset" -msgstr "dos karakter kmesi" - -#: param/loadparm.c:644 -msgid "unix charset" -msgstr "unix karakter kmesi" - -#: param/loadparm.c:645 -msgid "display charset" -msgstr "karakter kmesini gster" - -#: param/loadparm.c:646 -msgid "comment" -msgstr "aklama" - -#: param/loadparm.c:647 -msgid "path" -msgstr "yol" - -#: param/loadparm.c:648 -msgid "directory" -msgstr "dizin" - -#: param/loadparm.c:649 -msgid "workgroup" -msgstr "軋lma grubu" - -#: param/loadparm.c:650 -msgid "netbios name" -msgstr "netbios ad" - -#: param/loadparm.c:651 -msgid "netbios aliases" -msgstr "netbios rumuzlar" - -#: param/loadparm.c:652 -msgid "netbios scope" -msgstr "netbios kapsam" - -#: param/loadparm.c:653 -msgid "server string" -msgstr "sunucu dizgesi" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" +msgstr "" -#: param/loadparm.c:654 -msgid "interfaces" -msgstr "arayzler" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" +msgstr "" -#: param/loadparm.c:655 -msgid "bind interfaces only" -msgstr "yalnzca arayzleri bala" +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "Temel Se軻nekler" -#: param/loadparm.c:657 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "Gvenlik Se軻nekleri" -#: param/loadparm.c:659 -msgid "security" -msgstr "gvenlik" - -#: param/loadparm.c:660 -msgid "encrypt passwords" -msgstr "ifreyi ifrele " - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "ifrelenmi gncelle" - -#: param/loadparm.c:662 -msgid "allow trusted domains" -msgstr "gvenli alanlara izin ver" - -#: param/loadparm.c:663 -msgid "alternate permissions" -msgstr "baka izinler" - -#: param/loadparm.c:664 -msgid "hosts equiv" -msgstr "hosts edeerlisi" - -#: param/loadparm.c:665 -msgid "min passwd length" -msgstr "en ksa ifre uzunluu" - -#: param/loadparm.c:666 -msgid "min password length" -msgstr "en ksa ifre uzunluu" - -#: param/loadparm.c:667 -msgid "map to guest" -msgstr "guest (misafir) kullancya ele" - -#: param/loadparm.c:668 -msgid "null passwords" -msgstr "bo ifreler" - -#: param/loadparm.c:669 -msgid "obey pam restrictions" -msgstr "pam kstlamalarna uy" - -#: param/loadparm.c:670 -msgid "password server" -msgstr "ifre sunucusu" - -#: param/loadparm.c:671 -msgid "smb passwd file" -msgstr "smb ifre dosyas" - -#: param/loadparm.c:672 -msgid "private dir" -msgstr "zel dizin" - -#: param/loadparm.c:673 -msgid "passdb module path" -msgstr "ifre veritaban modl yolu" - -#: param/loadparm.c:674 -msgid "root directory" -msgstr "kk dizin" - -#: param/loadparm.c:675 -msgid "root dir" -msgstr "kk dizin" - -#: param/loadparm.c:676 -msgid "root" -msgstr "kk" - -#: param/loadparm.c:678 -msgid "pam password change" -msgstr "pam ifre deiiklii" - -#: param/loadparm.c:679 -msgid "passwd program" -msgstr "ifre yazlm" - -#: param/loadparm.c:680 -msgid "passwd chat" -msgstr "ifre diyalou" - -#: param/loadparm.c:681 -msgid "passwd chat debug" -msgstr "ifre diyalog hata ayklamas" - -#: param/loadparm.c:682 -msgid "username map" -msgstr "kullanc ad elemesi" - -#: param/loadparm.c:683 -msgid "password level" -msgstr "ifre seviyesi" - -#: param/loadparm.c:684 -msgid "username level" -msgstr "kullanc kimlii seviyesi" - -#: param/loadparm.c:685 -msgid "unix password sync" -msgstr "unix ifre senkronizasyonu" - -#: param/loadparm.c:686 -msgid "restrict anonymous" -msgstr "anonim eriimi kstla" - -#: param/loadparm.c:687 -msgid "lanman auth" -msgstr "lanman auth" - -#: param/loadparm.c:688 -msgid "ntlm auth" -msgstr "ntlm auth" - -#: param/loadparm.c:689 -msgid "plaintext to smbpasswd" -msgstr "dz metinden smbpasswd'e" - -#: param/loadparm.c:690 -msgid "use rhosts" -msgstr "rhosts kullan" - -#: param/loadparm.c:692 -msgid "username" -msgstr "kullanc ad" - -#: param/loadparm.c:693 -msgid "user" -msgstr "kullanc" - -#: param/loadparm.c:694 -msgid "users" -msgstr "kullanclar" - -#: param/loadparm.c:696 -msgid "guest account" -msgstr "misafir hesap" - -#: param/loadparm.c:697 -msgid "invalid users" -msgstr "ge軻rsiz kullanclar" - -#: param/loadparm.c:698 -msgid "valid users" -msgstr "ge軻rli kullanclar" - -#: param/loadparm.c:699 -msgid "admin users" -msgstr "ynetici kullanclar" - -#: param/loadparm.c:700 -msgid "read list" -msgstr "okuma listesi" - -#: param/loadparm.c:701 -msgid "write list" -msgstr "yazma listesi" - -#: param/loadparm.c:702 -msgid "printer admin" -msgstr "yazc ynetimi" - -#: param/loadparm.c:703 -msgid "force user" -msgstr "kullancy zorla" - -#: param/loadparm.c:704 -msgid "force group" -msgstr "grubu zorla" - -#: param/loadparm.c:705 -msgid "group" -msgstr "grup" - -#: param/loadparm.c:707 -msgid "read only" -msgstr "salt okunur" - -#: param/loadparm.c:708 -msgid "write ok" -msgstr "yazma tamam" - -#: param/loadparm.c:709 -msgid "writeable" -msgstr "yazlabilir" - -#: param/loadparm.c:710 -msgid "writable" -msgstr "yazlabilir" - -#: param/loadparm.c:712 -msgid "create mask" -msgstr "oluturma izinleri" - -#: param/loadparm.c:713 -msgid "create mode" -msgstr "oluturma kipi" - -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "oluturma kipini zorla" - -#: param/loadparm.c:715 -msgid "security mask" -msgstr "gvenlik izinleri" - -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "gvenlik kipini zorla" - -#: param/loadparm.c:717 -msgid "directory mask" -msgstr "dizin izinleri" - -#: param/loadparm.c:718 -msgid "directory mode" -msgstr "dizin kipi" - -#: param/loadparm.c:719 -msgid "force directory mode" -msgstr "dizin kipini zorla" - -#: param/loadparm.c:720 -msgid "directory security mask" -msgstr "dizin gvenlik izinleri" - -#: param/loadparm.c:721 -msgid "force directory security mode" -msgstr "dizin gvenlik kipini zorla" - -#: param/loadparm.c:722 -msgid "inherit permissions" -msgstr "izinleri ebeveynden al" - -#: param/loadparm.c:723 -msgid "guest only" -msgstr "yalnz misafir" - -#: param/loadparm.c:724 -msgid "only guest" -msgstr "yalnz misafir" - -#: param/loadparm.c:726 -msgid "guest ok" -msgstr "misafir tamam" - -#: param/loadparm.c:727 -msgid "public" -msgstr "genel" - -#: param/loadparm.c:729 -msgid "only user" -msgstr "salt kullanc" - -#: param/loadparm.c:730 -msgid "hosts allow" -msgstr "hosts izinli" - -#: param/loadparm.c:731 -msgid "allow hosts" -msgstr "hosts izinli" - -#: param/loadparm.c:732 -msgid "hosts deny" -msgstr "hosts izinsiz" - -#: param/loadparm.c:733 -msgid "deny hosts" -msgstr "hosts izinsiz" - -#: param/loadparm.c:736 -msgid "Secure Socket Layer Options" -msgstr "Gvenli Soket Katman Se軻nekleri" - -#: param/loadparm.c:737 -msgid "ssl" -msgstr "ssl" - -#: param/loadparm.c:739 -msgid "ssl hosts" -msgstr "ssl hosts" - -#: param/loadparm.c:740 -msgid "ssl hosts resign" -msgstr "ssl hosts istifa" - -#: param/loadparm.c:741 -msgid "ssl CA certDir" -msgstr "ssl CA sertifika dizini" - -#: param/loadparm.c:742 -msgid "ssl CA certFile" -msgstr "ssl CA sertifika dosyas" - -#: param/loadparm.c:743 -msgid "ssl server cert" -msgstr "ssl sunucu sertifikas" - -#: param/loadparm.c:744 -msgid "ssl server key" -msgstr "ssl sunucu anahtar" - -#: param/loadparm.c:745 -msgid "ssl client cert" -msgstr "ssl istemci sertifikas" - -#: param/loadparm.c:746 -msgid "ssl client key" -msgstr "ssl istemci anahtar" - -#: param/loadparm.c:747 -msgid "ssl require clientcert" -msgstr "ssl istemci sertifikas iste" - -#: param/loadparm.c:748 -msgid "ssl require servercert" -msgstr "ssl sunucu sertifikas iste" - -#: param/loadparm.c:749 -msgid "ssl ciphers" -msgstr "ssl ifreleri" - -#: param/loadparm.c:750 -msgid "ssl version" -msgstr "ssl srm" - -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "ssl uyumluluu" - -#: param/loadparm.c:754 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Gnlk Kayd Se軻nekleri" -#: param/loadparm.c:755 -msgid "log level" -msgstr "gnlk seviyesi" - -#: param/loadparm.c:756 -msgid "debuglevel" -msgstr "hata ayklama seviyesi" - -#: param/loadparm.c:757 -msgid "syslog" -msgstr "sistem gnl" - -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "salt sistem gnl" - -#: param/loadparm.c:759 -msgid "log file" -msgstr "gnlk dosyas" - -#: param/loadparm.c:761 -msgid "max log size" -msgstr "maksimum gnlk bykl" - -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "zaman damgas gnlkleri" - -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "hata ayklama zaman damgas" - -#: param/loadparm.c:764 -msgid "debug hires timestamp" -msgstr "hata ayklama yksek 銹znrlkl zaman damgas" - -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "hata ayklama pid" - -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "hata ayklama uid" - -#: param/loadparm.c:768 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "Protokol Se軻nekleri" -#: param/loadparm.c:770 -msgid "protocol" -msgstr "protokol" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "byk oku/yaz" - -#: param/loadparm.c:772 -msgid "max protocol" -msgstr "max protokol" - -#: param/loadparm.c:773 -msgid "min protocol" -msgstr "min protokol" - -#: param/loadparm.c:774 -msgid "unicode" -msgstr "unicode" - -#: param/loadparm.c:775 -msgid "read bmpx" -msgstr "bmpx oku" - -#: param/loadparm.c:776 -msgid "read raw" -msgstr "ham oku" - -#: param/loadparm.c:777 -msgid "write raw" -msgstr "ham yaz" - -#: param/loadparm.c:779 -msgid "nt smb support" -msgstr "nt smb destei" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "nt verihatt destei" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "nt acl destei" - -#: param/loadparm.c:782 -msgid "announce version" -msgstr "srm bildir" - -#: param/loadparm.c:783 -msgid "announce as" -msgstr "bildir" - -#: param/loadparm.c:784 -msgid "max mux" -msgstr "maksimum mux" - -#: param/loadparm.c:785 -msgid "max xmit" -msgstr "maksimum xmit" - -#: param/loadparm.c:787 -msgid "name resolve order" -msgstr "ad 銹zmleme sras" - -#: param/loadparm.c:788 -msgid "max packet" -msgstr "maksimum paket" - -#: param/loadparm.c:789 -msgid "packet size" -msgstr "paket bykl" - -#: param/loadparm.c:790 -msgid "max ttl" -msgstr "maksimum ttl" - -#: param/loadparm.c:791 -msgid "max wins ttl" -msgstr "maksimum wins ttl" - -#: param/loadparm.c:792 -msgid "min wins ttl" -msgstr "minimum wins ttl" - -#: param/loadparm.c:793 -msgid "time server" -msgstr "zaman sunucusu" - -#: param/loadparm.c:795 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "Ayar Se軻nekleri" -#: param/loadparm.c:797 -msgid "change notify timeout" -msgstr "zamanam bildirmesini deitir" - -#: param/loadparm.c:798 -msgid "deadtime" -msgstr "lzaman" - -#: param/loadparm.c:799 -msgid "getwd cache" -msgstr "getwd arabellei" - -#: param/loadparm.c:800 -msgid "keepalive" -msgstr "hayattatut" - -#: param/loadparm.c:802 -msgid "lpq cache time" -msgstr "lpq arabellek zaman" - -#: param/loadparm.c:803 -msgid "max smbd processes" -msgstr "maksimum smbd sreci" - -#: param/loadparm.c:804 -msgid "max connections" -msgstr "maksimum balant" - -#: param/loadparm.c:805 -msgid "paranoid server security" -msgstr "yksek dereceli sunucu gvenlii" - -#: param/loadparm.c:806 -msgid "max disk size" -msgstr "maksimum disk bykl" - -#: param/loadparm.c:807 -msgid "max open files" -msgstr "maksimum ak dosya" - -#: param/loadparm.c:808 -msgid "min print space" -msgstr "minimum yazma alan" - -#: param/loadparm.c:809 -msgid "read size" -msgstr "okuma boyu" - -#: param/loadparm.c:811 -msgid "socket options" -msgstr "soket se軻nekleri" - -#: param/loadparm.c:812 -msgid "stat cache size" -msgstr "durum arabellei boyu" - -#: param/loadparm.c:813 -msgid "strict allocate" -msgstr "sk ayrma" - -#: param/loadparm.c:814 -msgid "strict sync" -msgstr "sk senkronizasyon" - -#: param/loadparm.c:815 -msgid "sync always" -msgstr "herzaman senkronize" - -#: param/loadparm.c:816 -msgid "use mmap" -msgstr "bellek elemesi kullan" - -#: param/loadparm.c:817 -msgid "hostname lookups" -msgstr "sunucu ad arama" - -#: param/loadparm.c:818 -msgid "write cache size" -msgstr "yazma arabellek boyu" - -#: param/loadparm.c:820 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "Yazdrma Se軻nekleri" -#: param/loadparm.c:822 -msgid "total print jobs" -msgstr "toplam yazdrma ileri" - -#: param/loadparm.c:823 -msgid "max print jobs" -msgstr "maksimum yazdrma ii" - -#: param/loadparm.c:824 -msgid "load printers" -msgstr "yazclar ykle" - -#: param/loadparm.c:825 -msgid "printcap name" -msgstr "printcap ad" - -#: param/loadparm.c:826 -msgid "printcap" -msgstr "printcap" - -#: param/loadparm.c:827 -msgid "printable" -msgstr "yazdrlabilir" - -#: param/loadparm.c:828 -msgid "print ok" -msgstr "yazdrma tamam" - -#: param/loadparm.c:829 -msgid "postscript" -msgstr "postscript" - -#: param/loadparm.c:830 -msgid "printing" -msgstr "yazdryor" - -#: param/loadparm.c:831 -msgid "print command" -msgstr "yazdrma komutu" - -#: param/loadparm.c:832 -msgid "disable spoolss" -msgstr "kuyruu etkisizletir" - -#: param/loadparm.c:833 -msgid "lpq command" -msgstr "lpq komutu" - -#: param/loadparm.c:834 -msgid "lprm command" -msgstr "lprm komutu" - -#: param/loadparm.c:835 -msgid "lppause command" -msgstr "lppause komutu" - -#: param/loadparm.c:836 -msgid "lpresume command" -msgstr "lpresume komutu" - -#: param/loadparm.c:837 -msgid "queuepause command" -msgstr "queuepause komutu" - -#: param/loadparm.c:838 -msgid "queueresume command" -msgstr "queueresume komutu" - -#: param/loadparm.c:840 -msgid "enumports command" -msgstr "port listele komutu" - -#: param/loadparm.c:841 -msgid "addprinter command" -msgstr "yazc ekle komutu" - -#: param/loadparm.c:842 -msgid "deleteprinter command" -msgstr "yazc sil komutu" - -#: param/loadparm.c:843 -msgid "show add printer wizard" -msgstr "yazc ekleme sihirbazn gster" - -#: param/loadparm.c:844 -msgid "os2 driver map" -msgstr "os2 src elemesi" - -#: param/loadparm.c:846 -msgid "printer name" -msgstr "yazc ad" - -#: param/loadparm.c:847 -msgid "printer" -msgstr "yazc" - -#: param/loadparm.c:848 -msgid "use client driver" -msgstr "istemci srcs kullan" - -#: param/loadparm.c:849 -msgid "printer driver" -msgstr "yazc srcs" - -#: param/loadparm.c:850 -msgid "printer driver file" -msgstr "yazc src dosyas" - -#: param/loadparm.c:851 -msgid "printer driver location" -msgstr "yazc srcs yeri" - -#: param/loadparm.c:853 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Dosyaad ンlenmesi" -#: param/loadparm.c:854 -msgid "strip dot" -msgstr "noktalar bastr" - -#: param/loadparm.c:856 -msgid "mangled stack" -msgstr "kartrlm yt" - -#: param/loadparm.c:857 -msgid "default case" -msgstr "ntanml byk/k錮k harf" - -#: param/loadparm.c:858 -msgid "case sensitive" -msgstr "byk k錮k harfe duyarl" - -#: param/loadparm.c:859 -msgid "casesignames" -msgstr "casesignames" - -#: param/loadparm.c:860 -msgid "preserve case" -msgstr "byk k錮k harf ayrmn tut" - -#: param/loadparm.c:861 -msgid "short preserve case" -msgstr "ksa byk k錮k harf ayrmn tut" - -#: param/loadparm.c:862 -msgid "mangle case" -msgstr "byk k錮k harf harmanla" - -#: param/loadparm.c:863 -msgid "mangling char" -msgstr "karakter harmanlanyor" - -#: param/loadparm.c:864 -msgid "hide dot files" -msgstr "nokta ile balayan dosyalar gizle" - -#: param/loadparm.c:865 -msgid "hide unreadable" -msgstr "okunamazlar sakla" - -#: param/loadparm.c:866 -msgid "delete veto files" -msgstr "veto dosyalarn sil" - -#: param/loadparm.c:867 -msgid "veto files" -msgstr "veto dosyalar" - -#: param/loadparm.c:868 -msgid "hide files" -msgstr "dosyalar gizle" - -#: param/loadparm.c:869 -msgid "veto oplock files" -msgstr "veto oplock dosyalar" - -#: param/loadparm.c:870 -msgid "map system" -msgstr "sistemi ele" - -#: param/loadparm.c:871 -msgid "map hidden" -msgstr "gizlileri ele" - -#: param/loadparm.c:872 -msgid "map archive" -msgstr "arivi ele" - -#: param/loadparm.c:873 -msgid "mangled names" -msgstr "harmanlanm isimler" - -#: param/loadparm.c:874 -msgid "mangled map" -msgstr "harmanlanm eleme" - -#: param/loadparm.c:875 -msgid "stat cache" -msgstr "durum arabellei" - -#: param/loadparm.c:877 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Alan Se軻nekleri" -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "alan ynetici grubu" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "alan misafir grubu" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "grup ad elemesi" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "makina ifresi zamanam" - -#: param/loadparm.c:888 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Sistem Giri Se軻nekleri" -#: param/loadparm.c:890 -msgid "add user script" -msgstr "kullanc ekleme betii" - -#: param/loadparm.c:891 -msgid "delete user script" -msgstr "kullanc silme betii" - -#: param/loadparm.c:892 -msgid "add group script" -msgstr "grup ekleme betii" - -#: param/loadparm.c:893 -msgid "delete group script" -msgstr "grup silme betii" - -#: param/loadparm.c:894 -msgid "add user to group script" -msgstr "gruba kullanc ekleme betii" - -#: param/loadparm.c:895 -msgid "delete user from group script" -msgstr "gruptan kullanc silme betii" - -#: param/loadparm.c:896 -msgid "add machine script" -msgstr "makina ekleme betii" - -#: param/loadparm.c:897 -msgid "shutdown script" -msgstr "sistem kapan betii" - -#: param/loadparm.c:898 -msgid "abort shutdown script" -msgstr "sistem kapan betiini durdur" - -#: param/loadparm.c:900 -msgid "logon script" -msgstr "sistem giri betii" - -#: param/loadparm.c:901 -msgid "logon path" -msgstr "sistem giri yolu" - -#: param/loadparm.c:902 -msgid "logon drive" -msgstr "sistem giri aygt" - -#: param/loadparm.c:903 -msgid "logon home" -msgstr "sistem giri kk" - -#: param/loadparm.c:904 -msgid "domain logons" -msgstr "alan girileri" - -#: param/loadparm.c:906 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Gzatma Se軻nekleri" -#: param/loadparm.c:908 -msgid "os level" -msgstr "iletim sistem seviyesi" - -#: param/loadparm.c:909 -msgid "lm announce" -msgstr "lm bildirimi" - -#: param/loadparm.c:910 -msgid "lm interval" -msgstr "lm aral" - -#: param/loadparm.c:911 -msgid "preferred master" -msgstr "tercih edilen ana alan sunucusu" - -#: param/loadparm.c:912 -msgid "prefered master" -msgstr "tercih edilen ana alan sunucusu" - -#: param/loadparm.c:913 -msgid "local master" -msgstr "yerel alan sunucusu" - -#: param/loadparm.c:914 -msgid "domain master" -msgstr "alan sunucusu" - -#: param/loadparm.c:915 -msgid "browse list" -msgstr "gzatma listesi" - -#: param/loadparm.c:916 -msgid "browseable" -msgstr "gzatlabilir" - -#: param/loadparm.c:917 -msgid "browsable" -msgstr "gzatlabilir" - -#: param/loadparm.c:918 -msgid "enhanced browsing" -msgstr "gelikin gzatma" - -#: param/loadparm.c:920 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "WINS Se軻nekleri" -#: param/loadparm.c:921 -msgid "dns proxy" -msgstr "dns proxy" - -#: param/loadparm.c:922 -msgid "wins proxy" -msgstr "wins proxy" - -#: param/loadparm.c:924 -msgid "wins server" -msgstr "wins sunucusu" - -#: param/loadparm.c:925 -msgid "wins support" -msgstr "wins destei" - -#: param/loadparm.c:926 -msgid "wins hook" -msgstr "wins girii" - -#: param/loadparm.c:928 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Kilitleme Se軻nekleri" -#: param/loadparm.c:930 -msgid "blocking locks" -msgstr "engelleyen kilitler" - -#: param/loadparm.c:931 -msgid "fake oplocks" -msgstr "sahte oplocklar" - -#: param/loadparm.c:932 -msgid "kernel oplocks" -msgstr "軻kirdek oplocklar" - -#: param/loadparm.c:933 -msgid "locking" -msgstr "kilitliyor" - -#: param/loadparm.c:935 -msgid "oplocks" -msgstr "oplocklar" - -#: param/loadparm.c:936 -msgid "level2 oplocks" -msgstr "Seviye 2 oplocklar" - -#: param/loadparm.c:937 -msgid "oplock break wait time" -msgstr "oplock krma bekleme sresi" - -#: param/loadparm.c:938 -msgid "oplock contention limit" -msgstr "oplock ihtilaf limiti" - -#: param/loadparm.c:939 -msgid "posix locking" -msgstr "posix kilitlemesi" - -#: param/loadparm.c:940 -msgid "strict locking" -msgstr "sk kilitleme" - -#: param/loadparm.c:941 -msgid "share modes" -msgstr "paylam kipleri" - -#: param/loadparm.c:944 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "Ldap Se軻nekleri" -#: param/loadparm.c:946 -msgid "ldap server" -msgstr "ldap sunucusu" - -#: param/loadparm.c:947 -msgid "ldap port" -msgstr "ldap portu" - -#: param/loadparm.c:948 -msgid "ldap suffix" -msgstr "ldap soneki" - -#: param/loadparm.c:949 -msgid "ldap filter" -msgstr "ldap filtresi" - -#: param/loadparm.c:950 -msgid "ldap root" -msgstr "ldap kk" - -#: param/loadparm.c:951 -msgid "ldap root passwd" -msgstr "ldap kk ifresi" - -#: param/loadparm.c:954 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Dier Se軻nekler" -#: param/loadparm.c:955 -msgid "add share command" -msgstr "paylam ekle komutu" - -#: param/loadparm.c:956 -msgid "change share command" -msgstr "paylam deitir komutu" - -#: param/loadparm.c:957 -msgid "delete share command" -msgstr "paylam sil komutu" - -#: param/loadparm.c:959 -msgid "config file" -msgstr "ayar dosyas" - -#: param/loadparm.c:960 -msgid "preload" -msgstr "nykle" - -#: param/loadparm.c:961 -msgid "auto services" -msgstr "otomatik servisler" - -#: param/loadparm.c:962 -msgid "lock dir" -msgstr "kilit dizini" - -#: param/loadparm.c:963 -msgid "lock directory" -msgstr "kilit dizini" - -#: param/loadparm.c:965 -msgid "utmp directory" -msgstr "utmp dizini" - -#: param/loadparm.c:966 -msgid "wtmp directory" -msgstr "wtmp dizini" - -#: param/loadparm.c:967 -msgid "utmp" -msgstr "utmp" - -#: param/loadparm.c:970 -msgid "default service" -msgstr "ntanml servis" - -#: param/loadparm.c:971 -msgid "default" -msgstr "ntanml" - -#: param/loadparm.c:972 -msgid "message command" -msgstr "ileti komutu" - -#: param/loadparm.c:973 -msgid "dfree command" -msgstr "dfree komutu" - -#: param/loadparm.c:974 -msgid "remote announce" -msgstr "uzak bildirim" - -#: param/loadparm.c:975 -msgid "remote browse sync" -msgstr "uzak gzatma senkronizasyonu" - -#: param/loadparm.c:976 -msgid "socket address" -msgstr "soket adresi" - -#: param/loadparm.c:977 -msgid "homedir map" -msgstr "evdizini elemesi" - -#: param/loadparm.c:978 -msgid "time offset" -msgstr "zaman kaydrmas" - -#: param/loadparm.c:979 -msgid "NIS homedir" -msgstr "NIS evdizini" - -#: param/loadparm.c:980 -msgid "-valid" -msgstr "-ge軻rli" - -#: param/loadparm.c:982 -msgid "copy" -msgstr "kopyala" - -#: param/loadparm.c:983 -msgid "include" -msgstr "ekle" - -#: param/loadparm.c:984 -msgid "exec" -msgstr "軋ltr" - -#: param/loadparm.c:985 -msgid "preexec" -msgstr "preexec" - -#: param/loadparm.c:987 -msgid "preexec close" -msgstr "preexec close" - -#: param/loadparm.c:988 -msgid "postexec" -msgstr "postexec" - -#: param/loadparm.c:989 -msgid "root preexec" -msgstr "root preexec" - -#: param/loadparm.c:990 -msgid "root preexec close" -msgstr "root preexec close" - -#: param/loadparm.c:991 -msgid "root postexec" -msgstr "root postexec" - -#: param/loadparm.c:992 -msgid "available" -msgstr "mevcut" - -#: param/loadparm.c:993 -msgid "volume" -msgstr "volume" - -#: param/loadparm.c:994 -msgid "fstype" -msgstr "dosya sistem tipi" - -#: param/loadparm.c:995 -msgid "set directory" -msgstr "dizini belirle" - -#: param/loadparm.c:996 -msgid "source environment" -msgstr "source environment" - -#: param/loadparm.c:997 -msgid "wide links" -msgstr "wide links" - -#: param/loadparm.c:998 -msgid "follow symlinks" -msgstr "sembolik balar izle" - -#: param/loadparm.c:999 -msgid "dont descend" -msgstr "dont descend" - -#: param/loadparm.c:1000 -msgid "magic script" -msgstr "magic script" - -#: param/loadparm.c:1001 -msgid "magic output" -msgstr "magic output" - -#: param/loadparm.c:1002 -msgid "delete readonly" -msgstr "salt okunurlar sil" - -#: param/loadparm.c:1003 -msgid "dos filemode" -msgstr "dos dosya kipi" - -#: param/loadparm.c:1004 -msgid "dos filetimes" -msgstr "dos dosya zamanlar" - -#: param/loadparm.c:1005 -msgid "dos filetime resolution" -msgstr "dos dosya zaman 銹znrl" - -#: param/loadparm.c:1007 -msgid "fake directory create times" -msgstr "dizin oluma zamanlarn taklit et" - -#: param/loadparm.c:1008 -msgid "panic action" -msgstr "panik ilemi" - -#: param/loadparm.c:1009 -msgid "hide local users" -msgstr "yerel kullanclar sakla" - -#: param/loadparm.c:1012 -msgid "VFS options" +#: ../param/loadparm.c:1138 +msgid "VFS module options" msgstr "VFS Se軻nekleri" -#: param/loadparm.c:1014 -msgid "vfs object" -msgstr "vfs nesnesi" - -#: param/loadparm.c:1015 -msgid "vfs options" -msgstr "vfs se軻nekleri" - -#: param/loadparm.c:1018 -msgid "msdfs root" -msgstr "msdfs kk" - -#: param/loadparm.c:1019 -msgid "host msdfs" -msgstr "host msdfs" - -#: param/loadparm.c:1021 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Winbind se軻nekleri" - -#: param/loadparm.c:1023 -msgid "winbind uid" -msgstr "winbind uid" - -#: param/loadparm.c:1024 -msgid "winbind gid" -msgstr "winbind gid" - -#: param/loadparm.c:1025 -msgid "template homedir" -msgstr "rnek ev dizini" - -#: param/loadparm.c:1026 -msgid "template shell" -msgstr "rnek kabuk" - -#: param/loadparm.c:1027 -msgid "winbind separator" -msgstr "winbind ayrac" - -#: param/loadparm.c:1028 -msgid "winbind cache time" -msgstr "winbind arabellek zaman" - -#: param/loadparm.c:1029 -msgid "winbind enum users" -msgstr "winbind kullanc listele" - -#: param/loadparm.c:1030 -msgid "winbind enum groups" -msgstr "winbind grup listele" - diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c index 868f68c0798..9c95cf90856 100644 --- a/source/printing/nt_printing.c +++ b/source/printing/nt_printing.c @@ -4572,7 +4572,7 @@ WERROR nt_printing_setsec(const char *printername, SEC_DESC_BUF *secdesc_ctr) /* Make a deep copy of the security descriptor */ - psd = make_sec_desc(mem_ctx, secdesc_ctr->sec->revision, + psd = make_sec_desc(mem_ctx, secdesc_ctr->sec->revision, secdesc_ctr->sec->type, owner_sid, group_sid, sacl, dacl, @@ -4665,7 +4665,7 @@ static SEC_DESC_BUF *construct_default_printer_sdb(TALLOC_CTX *ctx) NT5 machine. */ if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) != NULL) { - psd = make_sec_desc(ctx, SEC_DESC_REVISION, + psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, &owner_sid, NULL, NULL, psa, &sd_size); } @@ -4741,7 +4741,7 @@ BOOL nt_printing_getsec(TALLOC_CTX *ctx, const char *printername, SEC_DESC_BUF * sid_append_rid(&owner_sid, DOMAIN_USER_RID_ADMIN); - psd = make_sec_desc(ctx, (*secdesc_ctr)->sec->revision, + psd = make_sec_desc(ctx, (*secdesc_ctr)->sec->revision, (*secdesc_ctr)->sec->type, &owner_sid, (*secdesc_ctr)->sec->grp_sid, (*secdesc_ctr)->sec->sacl, diff --git a/source/python/py_ntsec.c b/source/python/py_ntsec.c index 3d408e0bda2..5ce5e8fc1be 100644 --- a/source/python/py_ntsec.c +++ b/source/python/py_ntsec.c @@ -276,7 +276,7 @@ BOOL py_to_SECDESC(SEC_DESC **sd, PyObject *dict, TALLOC_CTX *mem_ctx) { size_t sd_size; - *sd = make_sec_desc(mem_ctx, revision, + *sd = make_sec_desc(mem_ctx, revision, SEC_DESC_SELF_RELATIVE, got_owner_sid ? &owner_sid : NULL, got_group_sid ? &group_sid : NULL, got_sacl ? &sacl : NULL, diff --git a/source/python/py_spoolss_forms.c b/source/python/py_spoolss_forms.c index ef9ed94533a..66a6540e074 100644 --- a/source/python/py_spoolss_forms.c +++ b/source/python/py_spoolss_forms.c @@ -59,7 +59,7 @@ PyObject *spoolss_hnd_addform(PyObject *self, PyObject *args, PyObject *kw) PyObject *obj = PyDict_GetItemString(info, "name"); char *form_name = PyString_AsString(obj); - init_unistr2(&form.name, form_name, strlen(form_name) + 1); + init_unistr2(&form.name, form_name, UNI_STR_TERMINATE); break; } default: diff --git a/source/python/py_spoolss_forms_conv.c b/source/python/py_spoolss_forms_conv.c index 095a318fd24..ede729cad33 100644 --- a/source/python/py_spoolss_forms_conv.c +++ b/source/python/py_spoolss_forms_conv.c @@ -81,7 +81,7 @@ BOOL py_to_FORM(FORM *form, PyObject *dict) obj = PyDict_GetItemString(dict, "name"); name = PyString_AsString(obj); - init_unistr2(&form->name, name, strlen(name) + 1); + init_unistr2(&form->name, name, UNI_STR_TERMINATE); result = True; diff --git a/source/registry/reg_printing.c b/source/registry/reg_printing.c index 50ac81dcbb2..e50a5f4d4fd 100644 --- a/source/registry/reg_printing.c +++ b/source/registry/reg_printing.c @@ -288,34 +288,32 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val ) info3 = driver_ctr.info_3; filename = dos_basename( info3->driverpath ); - init_unistr2( &data, filename, strlen(filename)+1 ); + init_unistr2( &data, filename, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Driver", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); filename = dos_basename( info3->configfile ); - init_unistr2( &data, filename, strlen(filename)+1 ); + init_unistr2( &data, filename, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Configuration File", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); filename = dos_basename( info3->datafile ); - init_unistr2( &data, filename, strlen(filename)+1 ); + init_unistr2( &data, filename, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Data File", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); filename = dos_basename( info3->helpfile ); - init_unistr2( &data, filename, strlen(filename)+1 ); + init_unistr2( &data, filename, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Help File", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, info3->defaultdatatype, strlen(info3->defaultdatatype)+1 ); + init_unistr2( &data, info3->defaultdatatype, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Data Type", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); regval_ctr_addvalue( val, "Version", REG_DWORD, (char*)&info3->cversion, sizeof(info3->cversion) ); - if ( info3->dependentfiles ) - { + if ( info3->dependentfiles ) { /* place the list of dependent files in a single character buffer, separating each file name by a NULL */ - for ( i=0; strcmp(info3->dependentfiles[i], ""); i++ ) - { + for ( i=0; strcmp(info3->dependentfiles[i], ""); i++ ) { /* strip the path to only the file's base name */ filename = dos_basename( info3->dependentfiles[i] ); @@ -327,7 +325,7 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val ) break; buffer = buffer2; - init_unistr2( &data, filename, length+1 ); + init_unistr2( &data, filename, UNI_STR_TERMINATE); memcpy( buffer+buffer_size, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); buffer_size += (length + 1)*sizeof(uint16); @@ -339,8 +337,7 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val ) if ( !buffer2 ) { SAFE_FREE( buffer ); buffer_size = 0; - } - else { + } else { buffer = buffer2; buffer[buffer_size++] = '\0'; buffer[buffer_size++] = '\0'; @@ -573,25 +570,25 @@ static int print_subpath_values_printers( char *key, REGVAL_CTR *val ) regval_ctr_addvalue( val, "cjobs", REG_DWORD, (char*)&info2->cjobs, sizeof(info2->cjobs) ); regval_ctr_addvalue( val, "AveragePPM", REG_DWORD, (char*)&info2->averageppm, sizeof(info2->averageppm) ); - init_unistr2( &data, info2->printername, strlen(info2->printername)+1 ); + init_unistr2( &data, info2->printername, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Name", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, info2->location, strlen(info2->location)+1 ); + init_unistr2( &data, info2->location, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Location", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, info2->comment, strlen(info2->comment)+1 ); + init_unistr2( &data, info2->comment, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Comment", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, info2->parameters, strlen(info2->parameters)+1 ); + init_unistr2( &data, info2->parameters, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Parameters", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, info2->portname, strlen(info2->portname)+1 ); + init_unistr2( &data, info2->portname, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Port", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, info2->servername, strlen(info2->servername)+1 ); + init_unistr2( &data, info2->servername, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Server", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, info2->sharename, strlen(info2->sharename)+1 ); + init_unistr2( &data, info2->sharename, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Share", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, info2->drivername, strlen(info2->drivername)+1 ); + init_unistr2( &data, info2->drivername, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Driver", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, info2->sepfile, strlen(info2->sepfile)+1 ); + init_unistr2( &data, info2->sepfile, UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Separator File", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); - init_unistr2( &data, "winprint", strlen("winprint")+1 ); + init_unistr2( &data, "winprint", UNI_STR_TERMINATE); regval_ctr_addvalue( val, "Print Processor", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) ); diff --git a/source/rpc_client/cli_lsarpc.c b/source/rpc_client/cli_lsarpc.c index db873236e46..65115419b47 100644 --- a/source/rpc_client/cli_lsarpc.c +++ b/source/rpc_client/cli_lsarpc.c @@ -1035,9 +1035,9 @@ NTSTATUS cli_lsa_enum_privsaccount(struct cli_state *cli, TALLOC_CTX *mem_ctx, } for (i=0; i<r.count; i++) { - (*set)[i].luid.low = r.set.set[i].luid.low; - (*set)[i].luid.high = r.set.set[i].luid.high; - (*set)[i].attr = r.set.set[i].attr; + (*set)[i].luid.low = r.set->set[i].luid.low; + (*set)[i].luid.high = r.set->set[i].luid.high; + (*set)[i].attr = r.set->set[i].attr; } *count=r.count; diff --git a/source/rpc_client/cli_pipe.c b/source/rpc_client/cli_pipe.c index dedbf017a93..9ce10202dbe 100644 --- a/source/rpc_client/cli_pipe.c +++ b/source/rpc_client/cli_pipe.c @@ -29,7 +29,9 @@ extern struct pipe_id_info pipe_names[]; -static void get_auth_type_level(int pipe_auth_flags, int *auth_type, int *auth_level) +/* convert pipe auth flags into the RPC auth type and level */ + +void get_auth_type_level(int pipe_auth_flags, int *auth_type, int *auth_level) { *auth_type = 0; *auth_level = 0; @@ -938,7 +940,6 @@ BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num, uint32 data_len, send_size; uint8 flags = 0; uint32 auth_padding = 0; - RPC_AUTH_NETSEC_CHK verf; DATA_BLOB sign_blob; /* @@ -1022,14 +1023,10 @@ BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num, } else if (cli->pipe_auth_flags & AUTH_PIPE_NETSEC) { - static const uchar netsec_sig[8] = NETSEC_SIGNATURE; - static const uchar nullbytes[8] = { 0,0,0,0,0,0,0,0 }; size_t parse_offset_marker; + RPC_AUTH_NETSEC_CHK verf; DEBUG(10,("SCHANNEL seq_num=%d\n", cli->auth_info.seq_num)); - init_rpc_auth_netsec_chk(&verf, netsec_sig, nullbytes, - nullbytes, nullbytes); - netsec_encode(&cli->auth_info, cli->pipe_auth_flags, SENDER_IS_INITIATOR, @@ -1277,8 +1274,10 @@ static BOOL rpc_send_auth_reply(struct cli_state *cli, prs_struct *rdata, uint32 prs_init(&rpc_out, RPC_HEADER_LEN + RPC_HDR_AUTHA_LEN, /* need at least this much */ cli->mem_ctx, MARSHALL); - create_rpc_bind_resp(cli, rpc_call_id, - &rpc_out); + if (!NT_STATUS_IS_OK(create_rpc_bind_resp(cli, rpc_call_id, + &rpc_out))) { + return False; + } if ((ret = cli_write(cli, cli->nt_pipe_fnum, 0x8, prs_data_p(&rpc_out), 0, (size_t)prs_offset(&rpc_out))) != (ssize_t)prs_offset(&rpc_out)) { @@ -1493,9 +1492,7 @@ NTSTATUS cli_nt_establish_netlogon(struct cli_state *cli, int sec_chan, const uchar trust_password[16]) { NTSTATUS result; - /* The 7 here seems to be required to get Win2k not to downgrade us - to NT4. Actually, anything other than 1ff would seem to do... */ - uint32 neg_flags = 0x000701ff; + uint32 neg_flags = NETLOGON_NEG_AUTH2_FLAGS; int fnum; cli_nt_netlogon_netsec_session_close(cli); @@ -1584,13 +1581,11 @@ NTSTATUS cli_nt_establish_netlogon(struct cli_state *cli, int sec_chan, } -NTSTATUS cli_nt_setup_netsec(struct cli_state *cli, int sec_chan, +NTSTATUS cli_nt_setup_netsec(struct cli_state *cli, int sec_chan, int auth_flags, const uchar trust_password[16]) { NTSTATUS result; - /* The 7 here seems to be required to get Win2k not to downgrade us - to NT4. Actually, anything other than 1ff would seem to do... */ - uint32 neg_flags = 0x000701ff; + uint32 neg_flags = NETLOGON_NEG_AUTH2_FLAGS; cli->pipe_auth_flags = 0; if (lp_client_schannel() == False) { @@ -1632,7 +1627,7 @@ NTSTATUS cli_nt_setup_netsec(struct cli_state *cli, int sec_chan, cli->nt_pipe_fnum = 0; /* doing schannel, not per-user auth */ - cli->pipe_auth_flags = AUTH_PIPE_NETSEC | AUTH_PIPE_SIGN | AUTH_PIPE_SEAL; + cli->pipe_auth_flags = auth_flags; return NT_STATUS_OK; } diff --git a/source/rpc_client/cli_srvsvc.c b/source/rpc_client/cli_srvsvc.c index 27349b72957..555703cf4d8 100644 --- a/source/rpc_client/cli_srvsvc.c +++ b/source/rpc_client/cli_srvsvc.c @@ -138,11 +138,11 @@ WERROR cli_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx, s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_netname); if (s) - init_unistr2(&info1->info_1_str.uni_netname, s, strlen(s) + 1); + init_unistr2(&info1->info_1_str.uni_netname, s, UNI_STR_TERMINATE); s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_remark); if (s) - init_unistr2(&info1->info_1_str.uni_remark, s, strlen(s) + 1); + init_unistr2(&info1->info_1_str.uni_remark, s, UNI_STR_TERMINATE); } @@ -166,19 +166,19 @@ WERROR cli_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx, s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_netname); if (s) - init_unistr2(&info2->info_2_str.uni_netname, s, strlen(s) + 1); + init_unistr2(&info2->info_2_str.uni_netname, s, UNI_STR_TERMINATE); s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_remark); if (s) - init_unistr2(&info2->info_2_str.uni_remark, s, strlen(s) + 1); + init_unistr2(&info2->info_2_str.uni_remark, s, UNI_STR_TERMINATE); s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_path); if (s) - init_unistr2(&info2->info_2_str.uni_path, s, strlen(s) + 1); + init_unistr2(&info2->info_2_str.uni_path, s, UNI_STR_TERMINATE); s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_passwd); if (s) - init_unistr2(&info2->info_2_str.uni_passwd, s, strlen(s) + 1); + init_unistr2(&info2->info_2_str.uni_passwd, s, UNI_STR_TERMINATE); } break; } @@ -385,11 +385,11 @@ WERROR cli_srvsvc_net_file_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx, s = unistr2_tdup(mem_ctx, &r.ctr.file.info3[i].info_3_str.uni_path_name); if (s) - init_unistr2(&info3->info_3_str.uni_path_name, s, strlen(s) + 1); + init_unistr2(&info3->info_3_str.uni_path_name, s, UNI_STR_TERMINATE); s = unistr2_tdup(mem_ctx, &r.ctr.file.info3[i].info_3_str.uni_user_name); if (s) - init_unistr2(&info3->info_3_str.uni_user_name, s, strlen(s) + 1); + init_unistr2(&info3->info_3_str.uni_user_name, s, UNI_STR_TERMINATE); } diff --git a/source/rpc_parse/parse_dfs.c b/source/rpc_parse/parse_dfs.c index 6f13500359f..0d0ce557b22 100644 --- a/source/rpc_parse/parse_dfs.c +++ b/source/rpc_parse/parse_dfs.c @@ -80,9 +80,9 @@ BOOL init_dfs_q_dfs_remove(DFS_Q_DFS_REMOVE *q_d, const char *entrypath, const char *servername, const char *sharename) { DEBUG(5,("init_dfs_q_dfs_remove\n")); - init_unistr2(&q_d->DfsEntryPath, entrypath, strlen(entrypath)+1); - init_unistr2(&q_d->ServerName, servername, strlen(servername)+1); - init_unistr2(&q_d->ShareName, sharename, strlen(sharename)+1); + init_unistr2(&q_d->DfsEntryPath, entrypath, UNI_STR_TERMINATE); + init_unistr2(&q_d->ServerName, servername, UNI_STR_TERMINATE); + init_unistr2(&q_d->ShareName, sharename, UNI_STR_TERMINATE); q_d->ptr_ServerName = q_d->ptr_ShareName = 1; return True; } @@ -155,11 +155,11 @@ BOOL init_dfs_q_dfs_add(DFS_Q_DFS_ADD *q_d, const char *entrypath, { DEBUG(5,("init_dfs_q_dfs_add\n")); q_d->ptr_DfsEntryPath = q_d->ptr_ServerName = q_d->ptr_ShareName = 1; - init_unistr2(&q_d->DfsEntryPath, entrypath, strlen(entrypath)+1); - init_unistr2(&q_d->ServerName, servername, strlen(servername)+1); - init_unistr2(&q_d->ShareName, sharename, strlen(sharename)+1); + init_unistr2(&q_d->DfsEntryPath, entrypath, UNI_STR_TERMINATE); + init_unistr2(&q_d->ServerName, servername, UNI_STR_TERMINATE); + init_unistr2(&q_d->ShareName, sharename, UNI_STR_TERMINATE); if(comment != NULL) { - init_unistr2(&q_d->Comment, comment, strlen(comment)+1); + init_unistr2(&q_d->Comment, comment,UNI_STR_TERMINATE); q_d->ptr_Comment = 1; } else { q_d->ptr_Comment = 0; @@ -237,9 +237,9 @@ BOOL init_dfs_q_dfs_get_info(DFS_Q_DFS_GET_INFO *q_d, const char *entrypath, uint32 info_level) { DEBUG(5,("init_dfs_q2_get_info\n")); - init_unistr2(&q_d->uni_path, entrypath, strlen(entrypath)+1); - init_unistr2(&q_d->uni_server, servername, strlen(servername)+1); - init_unistr2(&q_d->uni_share, sharename, strlen(sharename)+1); + init_unistr2(&q_d->uni_path, entrypath, UNI_STR_TERMINATE); + init_unistr2(&q_d->uni_server, servername, UNI_STR_TERMINATE); + init_unistr2(&q_d->uni_share, sharename, UNI_STR_TERMINATE); q_d->level = info_level; q_d->ptr_server = q_d->ptr_share = 1; return True; diff --git a/source/rpc_parse/parse_ds.c b/source/rpc_parse/parse_ds.c index f954806036b..26dcdb34b8b 100644 --- a/source/rpc_parse/parse_ds.c +++ b/source/rpc_parse/parse_ds.c @@ -138,8 +138,6 @@ BOOL ds_io_r_getprimdominfo( const char *desc, prs_struct *ps, int depth, DS_R_G BOOL init_q_ds_enum_domain_trusts( DS_Q_ENUM_DOM_TRUSTS *q, const char *server, uint32 flags ) { - int len; - q->flags = flags; if ( server && *server ) @@ -147,9 +145,7 @@ BOOL init_q_ds_enum_domain_trusts( DS_Q_ENUM_DOM_TRUSTS *q, const char *server, else q->server_ptr = 0; - len = q->server_ptr ? strlen(server)+1 : 0; - - init_unistr2( &q->server, server, len ); + init_unistr2( &q->server, server, UNI_STR_TERMINATE); return True; } diff --git a/source/rpc_parse/parse_lsa.c b/source/rpc_parse/parse_lsa.c index 07b0da7e9c2..f960345fe74 100644 --- a/source/rpc_parse/parse_lsa.c +++ b/source/rpc_parse/parse_lsa.c @@ -36,14 +36,9 @@ static BOOL lsa_io_trans_names(const char *desc, LSA_TRANS_NAME_ENUM *trn, prs_s void init_lsa_trans_name(LSA_TRANS_NAME *trn, UNISTR2 *uni_name, uint16 sid_name_use, const char *name, uint32 idx) { - int len_name = strlen(name); - - if(len_name == 0) - len_name = 1; - trn->sid_name_use = sid_name_use; - init_uni_hdr(&trn->hdr_name, len_name); - init_unistr2(uni_name, name, len_name); + init_unistr2(uni_name, name, UNI_FLAGS_NONE); + init_uni_hdr(&trn->hdr_name, uni_name); trn->domain_idx = idx; } @@ -346,8 +341,7 @@ void init_q_open_pol2(LSA_Q_OPEN_POL2 *r_q, const char *server_name, r_q->des_access = desired_access; - init_unistr2(&r_q->uni_server_name, server_name, - strlen(server_name) + 1); + init_unistr2(&r_q->uni_server_name, server_name, UNI_STR_TERMINATE); init_lsa_obj_attr(&r_q->attr, attributes, qos); } @@ -566,10 +560,10 @@ void init_r_enum_trust_dom(TALLOC_CTX *ctx, LSA_R_ENUM_TRUST_DOM *r_e, uint32 en /* don't know what actually is this for */ r_e->ptr_enum_domains = 1; - init_uni_hdr2(&r_e->hdr_domain_name[i], strlen_w((td[i])->name)); init_dom_sid2(&r_e->domain_sid[i], &(td[i])->sid); init_unistr2_w(ctx, &r_e->uni_domain_name[i], (td[i])->name); + init_uni_hdr2(&r_e->hdr_domain_name[i], &r_e->uni_domain_name[i]); }; } @@ -1087,11 +1081,8 @@ void init_q_lookup_names(TALLOC_CTX *mem_ctx, LSA_Q_LOOKUP_NAMES *q_l, } for (i = 0; i < num_names; i++) { - int len; - len = strlen(names[i]); - - init_uni_hdr(&q_l->hdr_name[i], len); - init_unistr2(&q_l->uni_name[i], names[i], len); + init_unistr2(&q_l->uni_name[i], names[i], UNI_FLAGS_NONE); + init_uni_hdr(&q_l->hdr_name[i], &q_l->uni_name[i]); } } @@ -1436,15 +1427,10 @@ BOOL lsa_io_r_enum_privs(const char *desc, LSA_R_ENUM_PRIVS *r_q, prs_struct *ps void init_lsa_priv_get_dispname(LSA_Q_PRIV_GET_DISPNAME *trn, POLICY_HND *hnd, const char *name, uint16 lang_id, uint16 lang_id_sys) { - int len_name = strlen(name); - - if(len_name == 0) - len_name = 1; - memcpy(&trn->pol, hnd, sizeof(trn->pol)); - init_uni_hdr(&trn->hdr_name, len_name); - init_unistr2(&trn->name, name, len_name); + init_unistr2(&trn->name, name, UNI_FLAGS_NONE); + init_uni_hdr(&trn->hdr_name, &trn->name); trn->lang_id = lang_id; trn->lang_id_sys = lang_id_sys; } @@ -1823,14 +1809,22 @@ static BOOL lsa_io_privilege_set(const char *desc, PRIVILEGE_SET *r_c, prs_struc return True; } -void init_lsa_r_enum_privsaccount(LSA_R_ENUMPRIVSACCOUNT *r_u, LUID_ATTR *set, uint32 count, uint32 control) +NTSTATUS init_lsa_r_enum_privsaccount(TALLOC_CTX *mem_ctx, LSA_R_ENUMPRIVSACCOUNT *r_u, LUID_ATTR *set, uint32 count, uint32 control) { - r_u->ptr=1; - r_u->count=count; - r_u->set.set=set; - r_u->set.count=count; - r_u->set.control=control; - DEBUG(10,("init_lsa_r_enum_privsaccount: %d %d privileges\n", r_u->count, r_u->set.count)); + NTSTATUS ret = NT_STATUS_OK; + + r_u->ptr = 1; + r_u->count = count; + + if (!NT_STATUS_IS_OK(ret = init_priv_with_ctx(mem_ctx, &(r_u->set)))) + return ret; + + if (!NT_STATUS_IS_OK(ret = dupalloc_luid_attr(r_u->set->mem_ctx, &(r_u->set->set), set))) + return ret; + + DEBUG(10,("init_lsa_r_enum_privsaccount: %d %d privileges\n", r_u->count, r_u->set->count)); + + return ret; } /******************************************************************* @@ -1854,13 +1848,16 @@ BOOL lsa_io_r_enum_privsaccount(const char *desc, LSA_R_ENUMPRIVSACCOUNT *r_c, p /* malloc memory if unmarshalling here */ - if (UNMARSHALLING(ps) && r_c->count!=0) { - if (!(r_c->set.set = (LUID_ATTR *)prs_alloc_mem(ps,sizeof(LUID_ATTR) * r_c->count))) + if (UNMARSHALLING(ps) && r_c->count != 0) { + if (!NT_STATUS_IS_OK(init_priv_with_ctx(ps->mem_ctx, &(r_c->set)))) + return False; + + if (!(r_c->set->set = (LUID_ATTR *)prs_alloc_mem(ps,sizeof(LUID_ATTR) * r_c->count))) return False; } - if(!lsa_io_privilege_set(desc, &r_c->set, ps, depth)) + if(!lsa_io_privilege_set(desc, r_c->set, ps, depth)) return False; } @@ -1954,14 +1951,9 @@ BOOL lsa_io_r_setsystemaccount(const char *desc, LSA_R_SETSYSTEMACCOUNT *r_c, p void init_lsa_q_lookupprivvalue(LSA_Q_LOOKUPPRIVVALUE *trn, POLICY_HND *hnd, const char *name) { - int len_name = strlen(name); memcpy(&trn->pol, hnd, sizeof(trn->pol)); - - if(len_name == 0) - len_name = 1; - - init_uni_hdr(&trn->hdr_right, len_name); - init_unistr2(&trn->uni2_right, name, len_name); + init_unistr2(&trn->uni2_right, name, UNI_FLAGS_NONE); + init_uni_hdr(&trn->hdr_right, &trn->uni2_right); } /******************************************************************* @@ -2027,11 +2019,14 @@ BOOL lsa_io_q_addprivs(const char *desc, LSA_Q_ADDPRIVS *r_c, prs_struct *ps, in return False; if (UNMARSHALLING(ps) && r_c->count!=0) { - if (!(r_c->set.set = (LUID_ATTR *)prs_alloc_mem(ps,sizeof(LUID_ATTR) * r_c->count))) + if (!NT_STATUS_IS_OK(init_priv_with_ctx(ps->mem_ctx, &(r_c->set)))) + return False; + + if (!(r_c->set->set = (LUID_ATTR *)prs_alloc_mem(ps, sizeof(LUID_ATTR) * r_c->count))) return False; } - if(!lsa_io_privilege_set(desc, &r_c->set, ps, depth)) + if(!lsa_io_privilege_set(desc, r_c->set, ps, depth)) return False; return True; @@ -2086,11 +2081,14 @@ BOOL lsa_io_q_removeprivs(const char *desc, LSA_Q_REMOVEPRIVS *r_c, prs_struct * return False; if (UNMARSHALLING(ps) && r_c->count!=0) { - if (!(r_c->set.set = (LUID_ATTR *)prs_alloc_mem(ps,sizeof(LUID_ATTR) * r_c->count))) + if (!NT_STATUS_IS_OK(init_priv_with_ctx(ps->mem_ctx, &(r_c->set)))) + return False; + + if (!(r_c->set->set = (LUID_ATTR *)prs_alloc_mem(ps, sizeof(LUID_ATTR) * r_c->count))) return False; } - if(!lsa_io_privilege_set(desc, &r_c->set, ps, depth)) + if(!lsa_io_privilege_set(desc, r_c->set, ps, depth)) return False; } diff --git a/source/rpc_parse/parse_misc.c b/source/rpc_parse/parse_misc.c index 17a96fff80c..e1825355320 100644 --- a/source/rpc_parse/parse_misc.c +++ b/source/rpc_parse/parse_misc.c @@ -361,11 +361,11 @@ BOOL smb_io_strhdr(const char *desc, STRHDR *hdr, prs_struct *ps, int depth) Inits a UNIHDR structure. ********************************************************************/ -void init_uni_hdr(UNIHDR *hdr, int len) +void init_uni_hdr(UNIHDR *hdr, UNISTR2 *str2) { - hdr->uni_str_len = 2 * len; - hdr->uni_max_len = 2 * len; - hdr->buffer = len != 0 ? 1 : 0; + hdr->uni_str_len = 2 * (str2->uni_str_len); + hdr->uni_max_len = 2 * (str2->uni_max_len); + hdr->buffer = (str2->uni_str_len != 0) ? 1 : 0; } /******************************************************************* @@ -482,10 +482,10 @@ BOOL smb_io_hdrbuf(const char *desc, BUFHDR *hdr, prs_struct *ps, int depth) creates a UNIHDR2 structure. ********************************************************************/ -void init_uni_hdr2(UNIHDR2 *hdr, int len) +void init_uni_hdr2(UNIHDR2 *hdr, UNISTR2 *str2) { - init_uni_hdr(&hdr->unihdr, len); - hdr->buffer = (len > 0) ? 1 : 0; + init_uni_hdr(&hdr->unihdr, str2); + hdr->buffer = (str2->uni_str_len > 0) ? 1 : 0; } /******************************************************************* @@ -703,7 +703,7 @@ void init_buffer2(BUFFER2 *str, const uint8 *buf, size_t len) /* max buffer size (allocated size) */ str->buf_max_len = len; - str->undoc = 0; + str->offset = 0; str->buf_len = buf != NULL ? len : 0; if (buf != NULL) { @@ -737,7 +737,7 @@ BOOL smb_io_buffer2(const char *desc, BUFFER2 *buf2, uint32 buffer, prs_struct * if(!prs_uint32("uni_max_len", ps, depth, &buf2->buf_max_len)) return False; - if(!prs_uint32("undoc ", ps, depth, &buf2->undoc)) + if(!prs_uint32("offset ", ps, depth, &buf2->offset)) return False; if(!prs_uint32("buf_len ", ps, depth, &buf2->buf_len)) return False; @@ -765,14 +765,11 @@ creates a UNISTR2 structure: sets up the buffer, too void init_buf_unistr2(UNISTR2 *str, uint32 *ptr, const char *buf) { if (buf != NULL) { - *ptr = 1; - init_unistr2(str, buf, strlen(buf)+1); - + init_unistr2(str, buf, UNI_STR_TERMINATE); } else { - *ptr = 0; - init_unistr2(str, "", 0); + init_unistr2(str, NULL, UNI_FLAGS_NONE); } } @@ -783,10 +780,8 @@ void init_buf_unistr2(UNISTR2 *str, uint32 *ptr, const char *buf) void copy_unistr2(UNISTR2 *str, const UNISTR2 *from) { - - /* set up string lengths. add one if string is not null-terminated */ str->uni_max_len = from->uni_max_len; - str->undoc = from->undoc; + str->offset = from->offset; str->uni_str_len = from->uni_str_len; if (from->buffer == NULL) @@ -803,8 +798,7 @@ void copy_unistr2(UNISTR2 *str, const UNISTR2 *from) len *= sizeof(uint16); str->buffer = (uint16 *)talloc_zero(get_talloc_ctx(), len); - if ((str->buffer == NULL) && (len > 0 )) - { + if ((str->buffer == NULL) && (len > 0 )) { smb_panic("copy_unistr2: talloc fail\n"); return; } @@ -824,7 +818,7 @@ void init_string2(STRING2 *str, const char *buf, int max_len, int str_len) /* set up string lengths. */ str->str_max_len = max_len; - str->undoc = 0; + str->offset = 0; str->str_str_len = str_len; /* store the string */ @@ -835,7 +829,7 @@ void init_string2(STRING2 *str, const char *buf, int max_len, int str_len) if (str->buffer == NULL) smb_panic("init_string2: malloc fail\n"); memcpy(str->buffer, buf, str_len); - } + } } /******************************************************************* @@ -860,7 +854,7 @@ BOOL smb_io_string2(const char *desc, STRING2 *str2, uint32 buffer, prs_struct * if(!prs_uint32("str_max_len", ps, depth, &str2->str_max_len)) return False; - if(!prs_uint32("undoc ", ps, depth, &str2->undoc)) + if(!prs_uint32("offset ", ps, depth, &str2->offset)) return False; if(!prs_uint32("str_str_len", ps, depth, &str2->str_str_len)) return False; @@ -885,34 +879,43 @@ BOOL smb_io_string2(const char *desc, STRING2 *str2, uint32 buffer, prs_struct * Inits a UNISTR2 structure. ********************************************************************/ -void init_unistr2(UNISTR2 *str, const char *buf, size_t len) +void init_unistr2(UNISTR2 *str, const char *buf, enum unistr2_term_codes flags) { - ZERO_STRUCTP(str); + size_t len = 0; + uint32 num_chars = 0; - /* set up string lengths. */ - str->uni_max_len = (uint32)len; - str->undoc = 0; - str->uni_str_len = (uint32)len; + if (buf) { + /* We always null terminate the copy. */ + len = strlen(buf) + 1; + } if (len < MAX_UNISTRLEN) len = MAX_UNISTRLEN; len *= sizeof(uint16); str->buffer = (uint16 *)talloc_zero(get_talloc_ctx(), len); - if ((str->buffer == NULL) && (len > 0)) - { + if ((str->buffer == NULL) && (len > 0)) { smb_panic("init_unistr2: malloc fail\n"); return; } /* - * don't move this test above ! The UNISTR2 must be initialized !!! + * The UNISTR2 must be initialized !!! * jfm, 7/7/2001. */ - if (buf==NULL) - return; + if (buf) { + rpcstr_push((char *)str->buffer, buf, len, STR_TERMINATE); + num_chars = strlen_w(str->buffer); + if (flags == STR_TERMINATE || flags == UNI_MAXLEN_TERMINATE) { + num_chars++; + } + } - rpcstr_push((char *)str->buffer, buf, len, STR_TERMINATE); + str->uni_max_len = num_chars; + str->offset = 0; + str->uni_str_len = num_chars; + if (num_chars && (flags == UNI_MAXLEN_TERMINATE)) + str->uni_max_len++; } /** @@ -932,7 +935,7 @@ void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf) /* set up string lengths. */ str->uni_max_len = len; - str->undoc = 0; + str->offset = 0; str->uni_str_len = len; if (max_len < MAX_UNISTRLEN) @@ -941,8 +944,7 @@ void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf) alloc_len = (max_len + 1) * sizeof(uint16); str->buffer = (uint16 *)talloc_zero(ctx, alloc_len); - if ((str->buffer == NULL) && (alloc_len > 0)) - { + if ((str->buffer == NULL) && (alloc_len > 0)) { smb_panic("init_unistr2_w: malloc fail\n"); return; } @@ -963,9 +965,9 @@ void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf) /******************************************************************* Inits a UNISTR2 structure from a UNISTR ********************************************************************/ -void init_unistr2_from_unistr (UNISTR2 *to, const UNISTR *from) -{ +void init_unistr2_from_unistr(UNISTR2 *to, const UNISTR *from) +{ uint32 i; /* the destination UNISTR2 should never be NULL. @@ -987,7 +989,7 @@ void init_unistr2_from_unistr (UNISTR2 *to, const UNISTR *from) /* set up string lengths; uni_max_len is set to i+1 because we need to account for the final NULL termination */ to->uni_max_len = i; - to->undoc = 0; + to->offset = 0; to->uni_str_len = i; /* allocate the space and copy the string buffer */ @@ -995,11 +997,9 @@ void init_unistr2_from_unistr (UNISTR2 *to, const UNISTR *from) if (to->buffer == NULL) smb_panic("init_unistr2_from_unistr: malloc fail\n"); memcpy(to->buffer, from->buffer, to->uni_max_len*sizeof(uint16)); - return; } - /******************************************************************* Reads or writes a UNISTR2 structure. XXXX NOTE: UNISTR2 structures need NOT be null-terminated. @@ -1022,7 +1022,7 @@ BOOL smb_io_unistr2(const char *desc, UNISTR2 *uni2, uint32 buffer, prs_struct * if(!prs_uint32("uni_max_len", ps, depth, &uni2->uni_max_len)) return False; - if(!prs_uint32("undoc ", ps, depth, &uni2->undoc)) + if(!prs_uint32("offset ", ps, depth, &uni2->offset)) return False; if(!prs_uint32("uni_str_len", ps, depth, &uni2->uni_str_len)) return False; @@ -1064,7 +1064,7 @@ BOOL init_unistr2_array(UNISTR2_ARRAY *array, } for (i=0;i<count;i++) { - init_unistr2(&array->strings[i].string, strings[i], strlen(strings[i])); + init_unistr2(&array->strings[i].string, strings[i], UNI_FLAGS_NONE); array->strings[i].size = array->strings[i].string.uni_max_len*2; array->strings[i].length = array->strings[i].size; array->strings[i].ref_id = 1; @@ -1223,14 +1223,14 @@ static void init_clnt_srv(DOM_CLNT_SRV *logcln, const char *logon_srv, const cha if (logon_srv != NULL) { logcln->undoc_buffer = 1; - init_unistr2(&logcln->uni_logon_srv, logon_srv, strlen(logon_srv)+1); + init_unistr2(&logcln->uni_logon_srv, logon_srv, UNI_STR_TERMINATE); } else { logcln->undoc_buffer = 0; } if (comp_name != NULL) { logcln->undoc_buffer2 = 1; - init_unistr2(&logcln->uni_comp_name, comp_name, strlen(comp_name)+1); + init_unistr2(&logcln->uni_comp_name, comp_name, UNI_STR_TERMINATE); } else { logcln->undoc_buffer2 = 0; } @@ -1284,12 +1284,12 @@ void init_log_info(DOM_LOG_INFO *loginfo, const char *logon_srv, const char *acc loginfo->undoc_buffer = 1; - init_unistr2(&loginfo->uni_logon_srv, logon_srv, strlen(logon_srv)+1); - init_unistr2(&loginfo->uni_acct_name, acct_name, strlen(acct_name)+1); + init_unistr2(&loginfo->uni_logon_srv, logon_srv, UNI_STR_TERMINATE); + init_unistr2(&loginfo->uni_acct_name, acct_name, UNI_STR_TERMINATE); loginfo->sec_chan = sec_chan; - init_unistr2(&loginfo->uni_comp_name, comp_name, strlen(comp_name)+1); + init_unistr2(&loginfo->uni_comp_name, comp_name, UNI_STR_TERMINATE); } /******************************************************************* diff --git a/source/rpc_parse/parse_net.c b/source/rpc_parse/parse_net.c index dd319df5a0f..3b096e088ab 100644 --- a/source/rpc_parse/parse_net.c +++ b/source/rpc_parse/parse_net.c @@ -136,16 +136,15 @@ static BOOL net_io_netinfo_1(const char *desc, NETLOGON_INFO_1 *info, prs_struct static void init_netinfo_2(NETLOGON_INFO_2 *info, uint32 flags, uint32 pdc_status, uint32 tc_status, const char *trusted_dc_name) { - int len_dc_name = strlen(trusted_dc_name); info->flags = flags; info->pdc_status = pdc_status; info->ptr_trusted_dc_name = 1; info->tc_status = tc_status; if (trusted_dc_name != NULL) - init_unistr2(&info->uni_trusted_dc_name, trusted_dc_name, len_dc_name+1); + init_unistr2(&info->uni_trusted_dc_name, trusted_dc_name, UNI_STR_TERMINATE); else - init_unistr2(&info->uni_trusted_dc_name, "", 1); + init_unistr2(&info->uni_trusted_dc_name, "", UNI_STR_TERMINATE); } /******************************************************************* @@ -230,7 +229,7 @@ void init_net_q_logon_ctrl2(NET_Q_LOGON_CTRL2 *q_l, const char *srv_name, q_l->query_level = query_level; q_l->switch_value = 0x01; - init_unistr2(&q_l->uni_server_name, srv_name, strlen(srv_name) + 1); + init_unistr2(&q_l->uni_server_name, srv_name, UNI_STR_TERMINATE); } /******************************************************************* @@ -360,7 +359,7 @@ void init_net_q_logon_ctrl(NET_Q_LOGON_CTRL *q_l, const char *srv_name, q_l->function_code = 0x01; /* ??? */ q_l->query_level = query_level; - init_unistr2(&q_l->uni_server_name, srv_name, strlen(srv_name) + 1); + init_unistr2(&q_l->uni_server_name, srv_name, UNI_STR_TERMINATE); } /******************************************************************* @@ -447,9 +446,9 @@ void init_r_trust_dom(NET_R_TRUST_DOM_LIST *r_t, fstring domain_name; fstrcpy(domain_name, dom_name); strupper_m(domain_name); - init_unistr2(&r_t->uni_trust_dom_name[i], domain_name, strlen(domain_name)+1); + init_unistr2(&r_t->uni_trust_dom_name[i], domain_name, UNI_STR_TERMINATE); /* the use of UNISTR2 here is non-standard. */ - r_t->uni_trust_dom_name[i].undoc = 0x1; + r_t->uni_trust_dom_name[i].offset = 0x1; } r_t->status = NT_STATUS_OK; @@ -539,8 +538,8 @@ void init_q_req_chal(NET_Q_REQ_CHAL *q_c, q_c->undoc_buffer = 1; /* don't know what this buffer is */ - init_unistr2(&q_c->uni_logon_srv, logon_srv , strlen(logon_srv )+1); - init_unistr2(&q_c->uni_logon_clnt, logon_clnt, strlen(logon_clnt)+1); + init_unistr2(&q_c->uni_logon_srv, logon_srv , UNI_STR_TERMINATE); + init_unistr2(&q_c->uni_logon_clnt, logon_clnt, UNI_STR_TERMINATE); memcpy(q_c->clnt_chal.data, clnt_chal->data, sizeof(clnt_chal->data)); @@ -910,10 +909,6 @@ void init_id_info1(NET_ID_INFO_1 *id, const char *domain_name, const char *sess_key, unsigned char lm_cypher[16], unsigned char nt_cypher[16]) { - int len_domain_name = strlen(domain_name); - int len_user_name = strlen(user_name ); - int len_wksta_name = strlen(wksta_name ); - unsigned char lm_owf[16]; unsigned char nt_owf[16]; @@ -921,13 +916,9 @@ void init_id_info1(NET_ID_INFO_1 *id, const char *domain_name, id->ptr_id_info1 = 1; - init_uni_hdr(&id->hdr_domain_name, len_domain_name); - id->param_ctrl = param_ctrl; init_logon_id(&id->logon_id, log_id_low, log_id_high); - init_uni_hdr(&id->hdr_user_name, len_user_name); - init_uni_hdr(&id->hdr_wksta_name, len_wksta_name); if (lm_cypher && nt_cypher) { unsigned char key[16]; @@ -962,9 +953,12 @@ void init_id_info1(NET_ID_INFO_1 *id, const char *domain_name, init_owf_info(&id->lm_owf, lm_cypher); init_owf_info(&id->nt_owf, nt_cypher); - init_unistr2(&id->uni_domain_name, domain_name, len_domain_name); - init_unistr2(&id->uni_user_name, user_name, len_user_name); - init_unistr2(&id->uni_wksta_name, wksta_name, len_wksta_name); + init_unistr2(&id->uni_domain_name, domain_name, UNI_FLAGS_NONE); + init_uni_hdr(&id->hdr_domain_name, &id->uni_domain_name); + init_unistr2(&id->uni_user_name, user_name, UNI_FLAGS_NONE); + init_uni_hdr(&id->hdr_user_name, &id->uni_user_name); + init_unistr2(&id->uni_wksta_name, wksta_name, UNI_FLAGS_NONE); + init_uni_hdr(&id->hdr_wksta_name, &id->uni_wksta_name); } /******************************************************************* @@ -1041,9 +1035,6 @@ void init_id_info2(NET_ID_INFO_2 * id, const char *domain_name, const uchar * lm_chal_resp, size_t lm_chal_resp_len, const uchar * nt_chal_resp, size_t nt_chal_resp_len) { - size_t len_domain_name = strlen(domain_name); - size_t len_user_name = strlen(user_name ); - size_t len_wksta_name = strlen(wksta_name ); unsigned char lm_owf[24]; unsigned char nt_owf[128]; @@ -1051,14 +1042,10 @@ void init_id_info2(NET_ID_INFO_2 * id, const char *domain_name, id->ptr_id_info2 = 1; - init_uni_hdr(&id->hdr_domain_name, len_domain_name); id->param_ctrl = param_ctrl; init_logon_id(&id->logon_id, log_id_low, log_id_high); - init_uni_hdr(&id->hdr_user_name, len_user_name); - init_uni_hdr(&id->hdr_wksta_name, len_wksta_name); - if (nt_chal_resp) { /* oops. can only send what-ever-it-is direct */ memcpy(nt_owf, nt_chal_resp, MIN(sizeof(nt_owf), nt_chal_resp_len)); @@ -1074,9 +1061,12 @@ void init_id_info2(NET_ID_INFO_2 * id, const char *domain_name, init_str_hdr(&id->hdr_nt_chal_resp, nt_chal_resp_len, nt_chal_resp_len, (nt_chal_resp != NULL) ? 1 : 0); init_str_hdr(&id->hdr_lm_chal_resp, lm_chal_resp_len, lm_chal_resp_len, (lm_chal_resp != NULL) ? 1 : 0); - init_unistr2(&id->uni_domain_name, domain_name, len_domain_name); - init_unistr2(&id->uni_user_name, user_name, len_user_name); - init_unistr2(&id->uni_wksta_name, wksta_name, len_wksta_name); + init_unistr2(&id->uni_domain_name, domain_name, UNI_FLAGS_NONE); + init_uni_hdr(&id->hdr_domain_name, &id->uni_domain_name); + init_unistr2(&id->uni_user_name, user_name, UNI_FLAGS_NONE); + init_uni_hdr(&id->hdr_user_name, &id->uni_user_name); + init_unistr2(&id->uni_wksta_name, wksta_name, UNI_FLAGS_NONE); + init_uni_hdr(&id->hdr_wksta_name, &id->uni_wksta_name); init_string2(&id->nt_chal_resp, (const char *)nt_chal_resp, nt_chal_resp_len, nt_chal_resp_len); init_string2(&id->lm_chal_resp, (const char *)lm_chal_resp, lm_chal_resp_len, lm_chal_resp_len); @@ -1288,26 +1278,10 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr, pass_last_set_time, pass_can_change_time, pass_must_change_time; - int len_user_name, len_full_name, len_home_dir, - len_dir_drive, len_logon_script, len_profile_path; - - int len_logon_srv = strlen(logon_srv); - int len_logon_dom = strlen(logon_dom); - - len_user_name = strlen(user_name ); - len_full_name = strlen(full_name ); - len_home_dir = strlen(home_dir ); - len_dir_drive = strlen(dir_drive ); - len_logon_script = strlen(logon_script); - len_profile_path = strlen(profile_path); - - ZERO_STRUCTP(usr); usr->ptr_user_info = 1; /* yes, we're bothering to put USER_INFO data here */ - - /* Create NTTIME structs */ unix_to_nt_time (&logon_time, unix_logon_time); unix_to_nt_time (&logoff_time, unix_logoff_time); @@ -1323,13 +1297,6 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr, usr->pass_can_change_time = pass_can_change_time; usr->pass_must_change_time = pass_must_change_time; - init_uni_hdr(&usr->hdr_user_name, len_user_name); - init_uni_hdr(&usr->hdr_full_name, len_full_name); - init_uni_hdr(&usr->hdr_logon_script, len_logon_script); - init_uni_hdr(&usr->hdr_profile_path, len_profile_path); - init_uni_hdr(&usr->hdr_home_dir, len_home_dir); - init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive); - usr->logon_count = logon_count; usr->bad_pw_count = bad_pw_count; @@ -1345,9 +1312,6 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr, else memset((char *)usr->user_sess_key, '\0', sizeof(usr->user_sess_key)); - init_uni_hdr(&usr->hdr_logon_srv, len_logon_srv); - init_uni_hdr(&usr->hdr_logon_dom, len_logon_dom); - usr->buffer_dom_id = dom_sid ? 1 : 0; /* yes, we're bothering to put a domain SID in */ memset((char *)usr->padding, '\0', sizeof(usr->padding)); @@ -1357,12 +1321,18 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr, usr->num_other_sids = num_other_sids; usr->buffer_other_sids = (num_other_sids != 0) ? 1 : 0; - init_unistr2(&usr->uni_user_name, user_name, len_user_name); - init_unistr2(&usr->uni_full_name, full_name, len_full_name); - init_unistr2(&usr->uni_logon_script, logon_script, len_logon_script); - init_unistr2(&usr->uni_profile_path, profile_path, len_profile_path); - init_unistr2(&usr->uni_home_dir, home_dir, len_home_dir); - init_unistr2(&usr->uni_dir_drive, dir_drive, len_dir_drive); + init_unistr2(&usr->uni_user_name, user_name, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name); + init_unistr2(&usr->uni_full_name, full_name, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name); + init_unistr2(&usr->uni_logon_script, logon_script, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script); + init_unistr2(&usr->uni_profile_path, profile_path, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path); + init_unistr2(&usr->uni_home_dir, home_dir, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir); + init_unistr2(&usr->uni_dir_drive, dir_drive, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive); usr->num_groups2 = num_groups; @@ -1373,8 +1343,10 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr, for (i = 0; i < num_groups; i++) usr->gids[i] = gids[i]; - init_unistr2(&usr->uni_logon_srv, logon_srv, len_logon_srv); - init_unistr2(&usr->uni_logon_dom, logon_dom, len_logon_dom); + init_unistr2(&usr->uni_logon_srv, logon_srv, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_logon_srv, &usr->uni_logon_srv); + init_unistr2(&usr->uni_logon_dom, logon_dom, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_logon_dom, &usr->uni_logon_dom); init_dom_sid2(&usr->dom_sid, dom_sid); /* "other" sids are set up above */ @@ -1670,8 +1642,8 @@ BOOL init_net_q_sam_sync(NET_Q_SAM_SYNC * q_s, const char *srv_name, { DEBUG(5, ("init_q_sam_sync\n")); - init_unistr2(&q_s->uni_srv_name, srv_name, strlen(srv_name) + 1); - init_unistr2(&q_s->uni_cli_name, cli_name, strlen(cli_name) + 1); + init_unistr2(&q_s->uni_srv_name, srv_name, UNI_STR_TERMINATE); + init_unistr2(&q_s->uni_cli_name, cli_name, UNI_STR_TERMINATE); if (cli_creds) memcpy(&q_s->cli_creds, cli_creds, sizeof(q_s->cli_creds)); @@ -2858,8 +2830,8 @@ BOOL init_net_q_sam_deltas(NET_Q_SAM_DELTAS *q_s, const char *srv_name, { DEBUG(5, ("init_net_q_sam_deltas\n")); - init_unistr2(&q_s->uni_srv_name, srv_name, strlen(srv_name) + 1); - init_unistr2(&q_s->uni_cli_name, cli_name, strlen(cli_name) + 1); + init_unistr2(&q_s->uni_srv_name, srv_name, UNI_STR_TERMINATE); + init_unistr2(&q_s->uni_cli_name, cli_name, UNI_STR_TERMINATE); memcpy(&q_s->cli_creds, cli_creds, sizeof(q_s->cli_creds)); memset(&q_s->ret_creds, 0, sizeof(q_s->ret_creds)); diff --git a/source/rpc_parse/parse_prs.c b/source/rpc_parse/parse_prs.c index 81a95730778..b30c41c0903 100644 --- a/source/rpc_parse/parse_prs.c +++ b/source/rpc_parse/parse_prs.c @@ -3,7 +3,8 @@ Samba memory buffer functions Copyright (C) Andrew Tridgell 1992-1997 Copyright (C) Luke Kenneth Casson Leighton 1996-1997 - Copyright (C) Jeremy Allison 1999. + Copyright (C) Jeremy Allison 1999 + Copyright (C) Andrew Bartlett 2003. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1337,47 +1338,6 @@ BOOL prs_hash1(prs_struct *ps, uint32 offset, uint8 sess_key[16], int len) return True; } -static void netsechash(uchar * key, uchar * data, int data_len) -{ - uchar hash[256]; - uchar index_i = 0; - uchar index_j = 0; - uchar j = 0; - int ind; - - for (ind = 0; ind < 256; ind++) - { - hash[ind] = (uchar) ind; - } - - for (ind = 0; ind < 256; ind++) - { - uchar tc; - - j += (hash[ind] + key[ind % 16]); - - tc = hash[ind]; - hash[ind] = hash[j]; - hash[j] = tc; - } - - for (ind = 0; ind < data_len; ind++) - { - uchar tc; - uchar t; - - index_i++; - index_j += hash[index_i]; - - tc = hash[index_i]; - hash[index_i] = hash[index_j]; - hash[index_j] = tc; - - t = hash[index_i] + hash[index_j]; - data[ind] ^= hash[t]; - } -} - /******************************************************************* Create a digest over the entire packet (including the data), and @@ -1400,7 +1360,7 @@ static void netsec_digest(struct netsec_auth_struct *a, MD5Update(&ctx3, zeros, sizeof(zeros)); MD5Update(&ctx3, verf->sig, sizeof(verf->sig)); if (auth_flags & AUTH_PIPE_SEAL) { - MD5Update(&ctx3, verf->data8, sizeof(verf->data8)); + MD5Update(&ctx3, verf->confounder, sizeof(verf->confounder)); } MD5Update(&ctx3, (const unsigned char *)data, data_len); MD5Final(whole_packet_digest, &ctx3); @@ -1456,10 +1416,29 @@ static void netsec_deal_with_seq_num(struct netsec_auth_struct *a, dump_data_pw("sequence_key:\n", sequence_key, sizeof(sequence_key)); dump_data_pw("seq_num (before):\n", verf->seq_num, sizeof(verf->seq_num)); - netsechash(sequence_key, verf->seq_num, 8); + SamOEMhash(verf->seq_num, sequence_key, 8); dump_data_pw("seq_num (after):\n", verf->seq_num, sizeof(verf->seq_num)); } +/******************************************************************* +creates an RPC_AUTH_NETSEC_CHK structure. +********************************************************************/ +static BOOL init_rpc_auth_netsec_chk(RPC_AUTH_NETSEC_CHK * chk, + const uchar sig[8], + const uchar packet_digest[8], + const uchar seq_num[8], const uchar confounder[8]) +{ + if (chk == NULL) + return False; + + memcpy(chk->sig, sig, sizeof(chk->sig)); + memcpy(chk->packet_digest, packet_digest, sizeof(chk->packet_digest)); + memcpy(chk->seq_num, seq_num, sizeof(chk->seq_num)); + memcpy(chk->confounder, confounder, sizeof(chk->confounder)); + + return True; +} + /******************************************************************* Encode a blob of data using the netsec (schannel) alogrithm, also produceing @@ -1469,26 +1448,47 @@ static void netsec_deal_with_seq_num(struct netsec_auth_struct *a, ********************************************************************/ void netsec_encode(struct netsec_auth_struct *a, int auth_flags, enum netsec_direction direction, - RPC_AUTH_NETSEC_CHK * verf, char *data, size_t data_len) + RPC_AUTH_NETSEC_CHK * verf, + char *data, size_t data_len) { uchar digest_final[16]; + uchar confounder[8]; + uchar seq_num[8]; + static const uchar nullbytes[8]; + + static const uchar netsec_seal_sig[8] = NETSEC_SEAL_SIGNATURE; + static const uchar netsec_sign_sig[8] = NETSEC_SIGN_SIGNATURE; + const uchar *netsec_sig; DEBUG(10,("SCHANNEL: netsec_encode seq_num=%d data_len=%lu\n", a->seq_num, (unsigned long)data_len)); + + if (auth_flags & AUTH_PIPE_SEAL) { + netsec_sig = netsec_seal_sig; + } else if (auth_flags & AUTH_PIPE_SIGN) { + netsec_sig = netsec_sign_sig; + } + + /* fill the 'confounder' with random data */ + generate_random_buffer(confounder, sizeof(confounder), False); + dump_data_pw("a->sess_key:\n", a->sess_key, sizeof(a->sess_key)); - RSIVAL(verf->seq_num, 0, a->seq_num); + RSIVAL(seq_num, 0, a->seq_num); switch (direction) { case SENDER_IS_INITIATOR: - SIVAL(verf->seq_num, 4, 0x80); + SIVAL(seq_num, 4, 0x80); break; case SENDER_IS_ACCEPTOR: - SIVAL(verf->seq_num, 4, 0x0); + SIVAL(seq_num, 4, 0x0); break; } - dump_data_pw("verf->seq_num:\n", verf->seq_num, sizeof(verf->seq_num)); + dump_data_pw("verf->seq_num:\n", seq_num, sizeof(verf->seq_num)); + init_rpc_auth_netsec_chk(verf, netsec_sig, nullbytes, + seq_num, confounder); + /* produce a digest of the packet to prove it's legit (before we seal it) */ netsec_digest(a, auth_flags, verf, data, data_len, digest_final); memcpy(verf->packet_digest, digest_final, sizeof(verf->packet_digest)); @@ -1500,14 +1500,14 @@ void netsec_encode(struct netsec_auth_struct *a, int auth_flags, netsec_get_sealing_key(a, verf, sealing_key); /* encode the verification data */ - dump_data_pw("verf->data8:\n", verf->data8, sizeof(verf->data8)); - netsechash(sealing_key, verf->data8, 8); + dump_data_pw("verf->confounder:\n", verf->confounder, sizeof(verf->confounder)); + SamOEMhash(verf->confounder, sealing_key, 8); - dump_data_pw("verf->data8_enc:\n", verf->data8, sizeof(verf->data8)); + dump_data_pw("verf->confounder_enc:\n", verf->confounder, sizeof(verf->confounder)); /* encode the packet payload */ dump_data_pw("data:\n", (const unsigned char *)data, data_len); - netsechash(sealing_key, (unsigned char *)data, data_len); + SamOEMhash((unsigned char *)data, sealing_key, data_len); dump_data_pw("data_enc:\n", (const unsigned char *)data, data_len); } @@ -1531,8 +1531,21 @@ BOOL netsec_decode(struct netsec_auth_struct *a, int auth_flags, { uchar digest_final[16]; - /* Create the expected sequence number for comparison */ + static const uchar netsec_seal_sig[8] = NETSEC_SEAL_SIGNATURE; + static const uchar netsec_sign_sig[8] = NETSEC_SIGN_SIGNATURE; + const uchar *netsec_sig; + uchar seq_num[8]; + + DEBUG(10,("SCHANNEL: netsec_encode seq_num=%d data_len=%lu\n", a->seq_num, (unsigned long)data_len)); + + if (auth_flags & AUTH_PIPE_SEAL) { + netsec_sig = netsec_seal_sig; + } else if (auth_flags & AUTH_PIPE_SIGN) { + netsec_sig = netsec_sign_sig; + } + + /* Create the expected sequence number for comparison */ RSIVAL(seq_num, 0, a->seq_num); switch (direction) { @@ -1560,6 +1573,20 @@ BOOL netsec_decode(struct netsec_auth_struct *a, int auth_flags, digest, as supplied by the client. We check that it's a valid checksum after the decode, below */ + DEBUG(2, ("netsec_decode: FAILED: packet sequence number:\n")); + dump_data(2, verf->seq_num, sizeof(verf->seq_num)); + DEBUG(2, ("should be:\n")); + dump_data(2, seq_num, sizeof(seq_num)); + + return False; + } + + if (memcmp(verf->sig, netsec_sig, sizeof(verf->sig))) { + /* Validate that the other end sent the expected header */ + DEBUG(2, ("netsec_decode: FAILED: packet header:\n")); + dump_data(2, verf->sig, sizeof(verf->sig)); + DEBUG(2, ("should be:\n")); + dump_data(2, netsec_sig, sizeof(netsec_sig)); return False; } @@ -1570,16 +1597,16 @@ BOOL netsec_decode(struct netsec_auth_struct *a, int auth_flags, netsec_get_sealing_key(a, verf, sealing_key); /* extract the verification data */ - dump_data_pw("verf->data8:\n", verf->data8, - sizeof(verf->data8)); - netsechash(sealing_key, verf->data8, 8); + dump_data_pw("verf->confounder:\n", verf->confounder, + sizeof(verf->confounder)); + SamOEMhash(verf->confounder, sealing_key, 8); - dump_data_pw("verf->data8_dec:\n", verf->data8, - sizeof(verf->data8)); + dump_data_pw("verf->confounder_dec:\n", verf->confounder, + sizeof(verf->confounder)); /* extract the packet payload */ dump_data_pw("data :\n", (const unsigned char *)data, data_len); - netsechash(sealing_key, (unsigned char *)data, data_len); + SamOEMhash((unsigned char *)data, sealing_key, data_len); dump_data_pw("datadec:\n", (const unsigned char *)data, data_len); } diff --git a/source/rpc_parse/parse_reg.c b/source/rpc_parse/parse_reg.c index bbf6e6a8e3d..69c0dfc7548 100644 --- a/source/rpc_parse/parse_reg.c +++ b/source/rpc_parse/parse_reg.c @@ -281,18 +281,15 @@ void init_reg_q_create_key(REG_Q_CREATE_KEY *q_c, POLICY_HND *hnd, char *name, char *class, SEC_ACCESS *sam_access, SEC_DESC_BUF *sec_buf) { - int len_name = name != NULL ? strlen(name ) + 1: 0; - int len_class = class != NULL ? strlen(class) + 1: 0; - ZERO_STRUCTP(q_c); memcpy(&q_c->pnt_pol, hnd, sizeof(q_c->pnt_pol)); - init_uni_hdr(&q_c->hdr_name, len_name); - init_unistr2(&q_c->uni_name, name, len_name); + init_unistr2(&q_c->uni_name, name, UNI_STR_TERMINATE); + init_uni_hdr(&q_c->hdr_name, &q_c->uni_name); - init_uni_hdr(&q_c->hdr_class, len_class); - init_unistr2(&q_c->uni_class, class, len_class); + init_unistr2(&q_c->uni_class, class, UNI_STR_TERMINATE); + init_uni_hdr(&q_c->hdr_class, &q_c->uni_class); q_c->reserved = 0x00000000; memcpy(&q_c->sam_access, sam_access, sizeof(q_c->sam_access)); @@ -397,13 +394,12 @@ BOOL reg_io_r_create_key(const char *desc, REG_R_CREATE_KEY *r_r, prs_struct *p void init_reg_q_delete_val(REG_Q_DELETE_VALUE *q_c, POLICY_HND *hnd, char *name) { - int len_name = name != NULL ? strlen(name ) + 1: 0; ZERO_STRUCTP(q_c); memcpy(&q_c->pnt_pol, hnd, sizeof(q_c->pnt_pol)); - init_uni_hdr(&q_c->hdr_name, len_name); - init_unistr2(&q_c->uni_name, name, len_name); + init_unistr2(&q_c->uni_name, name, UNI_STR_TERMINATE); + init_uni_hdr(&q_c->hdr_name, &q_c->uni_name); } /******************************************************************* @@ -463,13 +459,12 @@ BOOL reg_io_r_delete_val(const char *desc, REG_R_DELETE_VALUE *r_r, prs_struct void init_reg_q_delete_key(REG_Q_DELETE_KEY *q_c, POLICY_HND *hnd, char *name) { - int len_name = name != NULL ? strlen(name ) + 1: 0; ZERO_STRUCTP(q_c); memcpy(&q_c->pnt_pol, hnd, sizeof(q_c->pnt_pol)); - init_uni_hdr(&q_c->hdr_name, len_name); - init_unistr2(&q_c->uni_name, name, len_name); + init_unistr2(&q_c->uni_name, name, UNI_STR_TERMINATE); + init_uni_hdr(&q_c->hdr_name, &q_c->uni_name); } /******************************************************************* @@ -525,14 +520,12 @@ BOOL reg_io_r_delete_key(const char *desc, REG_R_DELETE_KEY *r_r, prs_struct *p Inits a structure. ********************************************************************/ -void init_reg_q_query_key(REG_Q_QUERY_KEY *q_o, POLICY_HND *hnd, - uint32 max_class_len) +void init_reg_q_query_key(REG_Q_QUERY_KEY *q_o, POLICY_HND *hnd, UNISTR2 *uni2) { ZERO_STRUCTP(q_o); memcpy(&q_o->pol, hnd, sizeof(q_o->pol)); - init_uni_hdr(&q_o->hdr_class, max_class_len); - q_o->uni_class.uni_max_len = max_class_len; + init_uni_hdr(&q_o->hdr_class, uni2); } /******************************************************************* @@ -1010,15 +1003,13 @@ makes a structure. BOOL init_reg_q_info(REG_Q_INFO *q_i, POLICY_HND *pol, char* val_name) { - int len_type = val_name != NULL ? strlen(val_name) + 1 : 0; - if (q_i == NULL) return False; q_i->pol = *pol; - init_uni_hdr(&(q_i->hdr_type), len_type); - init_unistr2(&(q_i->uni_type), val_name, len_type); + init_unistr2(&q_i->uni_type, val_name, UNI_STR_TERMINATE); + init_uni_hdr(&q_i->hdr_type, &q_i->uni_type); q_i->ptr_reserved = 1; q_i->ptr_buf = 1; @@ -1230,7 +1221,7 @@ makes a structure. ********************************************************************/ void init_reg_q_enum_val(REG_Q_ENUM_VALUE *q_i, POLICY_HND *pol, - uint32 val_idx, uint32 max_val_len, + uint32 val_idx, UNISTR2 *uni2, uint32 max_buf_len) { ZERO_STRUCTP(q_i); @@ -1238,8 +1229,7 @@ void init_reg_q_enum_val(REG_Q_ENUM_VALUE *q_i, POLICY_HND *pol, memcpy(&q_i->pol, pol, sizeof(q_i->pol)); q_i->val_index = val_idx; - init_uni_hdr(&q_i->hdr_name, max_val_len); - q_i->uni_name.uni_max_len = max_val_len; + init_uni_hdr(&q_i->hdr_name, uni2); q_i->ptr_type = 1; q_i->type = 0x0; @@ -1270,8 +1260,8 @@ void init_reg_r_enum_val(REG_R_ENUM_VALUE *r_u, REGISTRY_VALUE *val ) DEBUG(10,("init_reg_r_enum_val: Valuename => [%s]\n", val->valuename)); - init_uni_hdr( &r_u->hdr_name, strlen(val->valuename)+1 ); - init_unistr2( &r_u->uni_name, val->valuename, strlen(val->valuename)+1 ); + init_unistr2( &r_u->uni_name, val->valuename, UNI_STR_TERMINATE); + init_uni_hdr( &r_u->hdr_name, &r_u->uni_name); /* type */ @@ -1418,14 +1408,12 @@ void init_reg_q_create_val(REG_Q_CREATE_VALUE *q_i, POLICY_HND *pol, char *val_name, uint32 type, BUFFER3 *val) { - int val_len = strlen(val_name) + 1; - ZERO_STRUCTP(q_i); memcpy(&q_i->pol, pol, sizeof(q_i->pol)); - init_uni_hdr(&q_i->hdr_name, val_len); - init_unistr2(&q_i->uni_name, val_name, val_len); + init_unistr2(&q_i->uni_name, val_name, UNI_STR_TERMINATE); + init_uni_hdr(&q_i->hdr_name, &q_i->uni_name); q_i->type = type; q_i->buf_value = val; @@ -1650,12 +1638,10 @@ makes a structure. void init_reg_q_open_entry(REG_Q_OPEN_ENTRY *r_q, POLICY_HND *pol, char *key_name, uint32 access_desired) { - int len_name = strlen(key_name)+1; - memcpy(&r_q->pol, pol, sizeof(r_q->pol)); - init_uni_hdr(&r_q->hdr_name, len_name); - init_unistr2(&r_q->uni_name, key_name, len_name); + init_unistr2(&r_q->uni_name, key_name, UNI_STR_TERMINATE); + init_uni_hdr(&r_q->hdr_name, &r_q->uni_name); r_q->unknown_0 = 0x00000000; r_q->access_desired = access_desired; @@ -1736,29 +1722,27 @@ BOOL reg_io_r_open_entry(const char *desc, REG_R_OPEN_ENTRY *r_r, prs_struct *p /******************************************************************* Inits a structure. ********************************************************************/ + void init_reg_q_shutdown(REG_Q_SHUTDOWN * q_s, const char *msg, uint32 timeout, BOOL do_reboot, BOOL force) { - int msg_len; - msg_len = strlen(msg); - q_s->ptr_0 = 1; q_s->ptr_1 = 1; q_s->ptr_2 = 1; - init_uni_hdr(&(q_s->hdr_msg), msg_len); - init_unistr2(&(q_s->uni_msg), msg, msg_len); + init_unistr2(&q_s->uni_msg, msg, UNI_FLAGS_NONE); + init_uni_hdr(&q_s->hdr_msg, &q_s->uni_msg); q_s->timeout = timeout; q_s->reboot = do_reboot ? 1 : 0; q_s->force = force ? 1 : 0; - } /******************************************************************* reads or writes a structure. ********************************************************************/ + BOOL reg_io_q_shutdown(const char *desc, REG_Q_SHUTDOWN * q_s, prs_struct *ps, int depth) { diff --git a/source/rpc_parse/parse_rpc.c b/source/rpc_parse/parse_rpc.c index 34ba62caa92..1ea59feaedb 100644 --- a/source/rpc_parse/parse_rpc.c +++ b/source/rpc_parse/parse_rpc.c @@ -243,30 +243,49 @@ BOOL smb_io_rpc_hdr(const char *desc, RPC_HDR *rpc, prs_struct *ps, int depth) } /******************************************************************* - Reads or writes an RPC_IFACE structure. + Reads or writes an RPC_UUID structure. ********************************************************************/ -static BOOL smb_io_rpc_iface(const char *desc, RPC_IFACE *ifc, prs_struct *ps, int depth) +static BOOL smb_io_rpc_uuid(const char *desc, RPC_UUID *uuid, prs_struct *ps, int depth) { - if (ifc == NULL) + if (uuid == NULL) return False; - prs_debug(ps, depth, desc, "smb_io_rpc_iface"); + prs_debug(ps, depth, desc, "smb_io_rpc_uuid"); depth++; if(!prs_align(ps)) return False; - if(!prs_uint32 ("data ", ps, depth, &ifc->uuid.time_low)) + if(!prs_uint32 ("data ", ps, depth, &uuid->time_low)) return False; - if(!prs_uint16 ("data ", ps, depth, &ifc->uuid.time_mid)) + if(!prs_uint16 ("data ", ps, depth, &uuid->time_mid)) return False; - if(!prs_uint16 ("data ", ps, depth, &ifc->uuid.time_hi_and_version)) + if(!prs_uint16 ("data ", ps, depth, &uuid->time_hi_and_version)) return False; - if(!prs_uint8s (False, "data ", ps, depth, ifc->uuid.remaining, sizeof(ifc->uuid.remaining))) + if(!prs_uint8s (False, "data ", ps, depth, uuid->remaining, sizeof(uuid->remaining))) return False; - if(!prs_uint32 ( "version", ps, depth, &ifc->version)) + + return True; +} + +/******************************************************************* + Reads or writes an RPC_IFACE structure. +********************************************************************/ + +static BOOL smb_io_rpc_iface(const char *desc, RPC_IFACE *ifc, prs_struct *ps, int depth) +{ + if (ifc == NULL) + return False; + + prs_debug(ps, depth, desc, "smb_io_rpc_iface"); + depth++; + + if (!smb_io_rpc_uuid( "uuid", &ifc->uuid, ps, depth)) + return False; + + if(!prs_uint32 ("version", ps, depth, &ifc->version)) return False; return True; @@ -1168,26 +1187,6 @@ BOOL smb_io_rpc_auth_netsec_neg(const char *desc, RPC_AUTH_NETSEC_NEG *neg, return True; } - -/******************************************************************* -creates an RPC_AUTH_NETSEC_CHK structure. -********************************************************************/ -BOOL init_rpc_auth_netsec_chk(RPC_AUTH_NETSEC_CHK * chk, - const uchar sig[8], - const uchar packet_digest[8], - const uchar seq_num[8], const uchar data8[8]) -{ - if (chk == NULL) - return False; - - memcpy(chk->sig, sig, sizeof(chk->sig)); - memcpy(chk->packet_digest, packet_digest, sizeof(chk->packet_digest)); - memcpy(chk->seq_num, seq_num, sizeof(chk->seq_num)); - memcpy(chk->data8, data8, sizeof(chk->data8)); - - return True; -} - /******************************************************************* reads or writes an RPC_AUTH_NETSEC_CHK structure. ********************************************************************/ @@ -1203,7 +1202,7 @@ BOOL smb_io_rpc_auth_netsec_chk(const char *desc, RPC_AUTH_NETSEC_CHK * chk, prs_uint8s(False, "sig ", ps, depth, chk->sig, sizeof(chk->sig)); prs_uint8s(False, "seq_num", ps, depth, chk->seq_num, sizeof(chk->seq_num)); prs_uint8s(False, "packet_digest", ps, depth, chk->packet_digest, sizeof(chk->packet_digest)); - prs_uint8s(False, "data8", ps, depth, chk->data8, sizeof(chk->data8)); + prs_uint8s(False, "confounder", ps, depth, chk->confounder, sizeof(chk->confounder)); return True; } diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c index 1fe9b3231fc..939b652a1e3 100644 --- a/source/rpc_parse/parse_samr.c +++ b/source/rpc_parse/parse_samr.c @@ -93,14 +93,12 @@ inits a SAMR_Q_LOOKUP_DOMAIN structure. void init_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN * q_u, POLICY_HND *pol, char *dom_name) { - int len_name = strlen(dom_name); - DEBUG(5, ("init_samr_q_lookup_domain\n")); q_u->connect_pol = *pol; - init_uni_hdr(&q_u->hdr_domain, len_name); - init_unistr2(&q_u->uni_domain, dom_name, len_name); + init_unistr2(&q_u->uni_domain, dom_name, UNI_FLAGS_NONE); + init_uni_hdr(&q_u->hdr_domain, &q_u->uni_domain); } /******************************************************************* @@ -630,13 +628,11 @@ static BOOL sam_io_unk_info12(const char *desc, SAM_UNK_INFO_12 * u_12, /******************************************************************* inits a structure. ********************************************************************/ + void init_unk_info5(SAM_UNK_INFO_5 * u_5,const char *server) { - int len_server = strlen(server); - - init_uni_hdr(&u_5->hdr_server, len_server); - - init_unistr2(&u_5->uni_server, server, len_server); + init_unistr2(&u_5->uni_server, server, UNI_FLAGS_NONE); + init_uni_hdr(&u_5->hdr_server, &u_5->uni_server); } /******************************************************************* @@ -664,20 +660,16 @@ static BOOL sam_io_unk_info5(const char *desc, SAM_UNK_INFO_5 * u_5, /******************************************************************* inits a structure. ********************************************************************/ + void init_unk_info2(SAM_UNK_INFO_2 * u_2, const char *domain, const char *server, uint32 seq_num, uint32 num_users, uint32 num_groups, uint32 num_alias) { - int len_domain = strlen(domain); - int len_server = strlen(server); - u_2->unknown_0 = 0x00000000; u_2->unknown_1 = 0x80000000; u_2->unknown_2 = 0x00000000; u_2->ptr_0 = 1; - init_uni_hdr(&u_2->hdr_domain, len_domain); - init_uni_hdr(&u_2->hdr_server, len_server); u_2->seq_num = seq_num; u_2->unknown_3 = 0x00000000; @@ -691,8 +683,10 @@ void init_unk_info2(SAM_UNK_INFO_2 * u_2, memset(u_2->padding, 0, sizeof(u_2->padding)); /* 12 bytes zeros */ - init_unistr2(&u_2->uni_domain, domain, len_domain); - init_unistr2(&u_2->uni_server, server, len_server); + init_unistr2(&u_2->uni_domain, domain, UNI_FLAGS_NONE); + init_uni_hdr(&u_2->hdr_domain, &u_2->uni_domain); + init_unistr2(&u_2->uni_server, server, UNI_FLAGS_NONE); + init_uni_hdr(&u_2->hdr_server, &u_2->uni_server); } /******************************************************************* @@ -984,9 +978,9 @@ static BOOL sam_io_sam_str1(const char *desc, SAM_STR1 * sam, uint32 acct_buf, inits a SAM_ENTRY1 structure. ********************************************************************/ -static void init_sam_entry1(SAM_ENTRY1 * sam, uint32 user_idx, - uint32 len_sam_name, uint32 len_sam_full, - uint32 len_sam_desc, uint32 rid_user, +static void init_sam_entry1(SAM_ENTRY1 *sam, uint32 user_idx, + UNISTR2 *sam_name, UNISTR2 *sam_full, + UNISTR2 *sam_desc, uint32 rid_user, uint16 acb_info) { DEBUG(5, ("init_sam_entry1\n")); @@ -997,9 +991,9 @@ static void init_sam_entry1(SAM_ENTRY1 * sam, uint32 user_idx, sam->rid_user = rid_user; sam->acb_info = acb_info; - init_uni_hdr(&sam->hdr_acct_name, len_sam_name); - init_uni_hdr(&sam->hdr_user_name, len_sam_full); - init_uni_hdr(&sam->hdr_user_desc, len_sam_desc); + init_uni_hdr(&sam->hdr_acct_name, sam_name); + init_uni_hdr(&sam->hdr_user_name, sam_full); + init_uni_hdr(&sam->hdr_user_desc, sam_desc); } /******************************************************************* @@ -1067,7 +1061,7 @@ static BOOL sam_io_sam_str2(const char *desc, SAM_STR2 * sam, uint32 acct_buf, inits a SAM_ENTRY2 structure. ********************************************************************/ static void init_sam_entry2(SAM_ENTRY2 * sam, uint32 user_idx, - uint32 len_sam_name, uint32 len_sam_desc, + UNISTR2 *sam_name, UNISTR2 *sam_desc, uint32 rid_user, uint16 acb_info) { DEBUG(5, ("init_sam_entry2\n")); @@ -1076,8 +1070,8 @@ static void init_sam_entry2(SAM_ENTRY2 * sam, uint32 user_idx, sam->rid_user = rid_user; sam->acb_info = acb_info; - init_uni_hdr(&sam->hdr_srv_name, len_sam_name); - init_uni_hdr(&sam->hdr_srv_desc, len_sam_desc); + init_uni_hdr(&sam->hdr_srv_name, sam_name); + init_uni_hdr(&sam->hdr_srv_desc, sam_desc); } /******************************************************************* @@ -1144,7 +1138,7 @@ inits a SAM_ENTRY3 structure. ********************************************************************/ static void init_sam_entry3(SAM_ENTRY3 * sam, uint32 grp_idx, - uint32 len_grp_name, uint32 len_grp_desc, + UNISTR2 *grp_name, UNISTR2 *grp_desc, uint32 rid_grp) { DEBUG(5, ("init_sam_entry3\n")); @@ -1153,8 +1147,8 @@ static void init_sam_entry3(SAM_ENTRY3 * sam, uint32 grp_idx, sam->rid_grp = rid_grp; sam->attr = 0x07; /* group rid attributes - gets ignored by nt 4.0 */ - init_uni_hdr(&sam->hdr_grp_name, len_grp_name); - init_uni_hdr(&sam->hdr_grp_desc, len_grp_desc); + init_uni_hdr(&sam->hdr_grp_name, grp_name); + init_uni_hdr(&sam->hdr_grp_desc, grp_desc); } /******************************************************************* @@ -1268,12 +1262,12 @@ static BOOL sam_io_sam_entry5(const char *desc, SAM_ENTRY5 * sam, inits a SAM_ENTRY structure. ********************************************************************/ -void init_sam_entry(SAM_ENTRY * sam, uint32 len_sam_name, uint32 rid) +void init_sam_entry(SAM_ENTRY *sam, UNISTR2 *uni2, uint32 rid) { - DEBUG(10, ("init_sam_entry: %d %d\n", len_sam_name, rid)); + DEBUG(10, ("init_sam_entry: %d\n", rid)); sam->rid = rid; - init_uni_hdr(&sam->hdr_name, len_sam_name); + init_uni_hdr(&sam->hdr_name, uni2); } /******************************************************************* @@ -1502,7 +1496,6 @@ NTSTATUS init_sam_dispinfo_1(TALLOC_CTX *ctx, SAM_DISPINFO_1 *sam, uint32 num_en uint32 start_idx, SAM_ACCOUNT *disp_user_info, DOM_SID *domain_sid) { - uint32 len_sam_name, len_sam_full, len_sam_desc; uint32 i; SAM_ACCOUNT *pwd = NULL; @@ -1560,21 +1553,14 @@ NTSTATUS init_sam_dispinfo_1(TALLOC_CTX *ctx, SAM_DISPINFO_1 *sam, uint32 num_en return NT_STATUS_UNSUCCESSFUL; } - len_sam_name = strlen(username); - len_sam_full = strlen(fullname); - len_sam_desc = strlen(acct_desc); + init_unistr2(&sam->str[i].uni_acct_name, pdb_get_username(pwd), UNI_FLAGS_NONE); + init_unistr2(&sam->str[i].uni_full_name, pdb_get_fullname(pwd), UNI_FLAGS_NONE); + init_unistr2(&sam->str[i].uni_acct_desc, pdb_get_acct_desc(pwd), UNI_FLAGS_NONE); init_sam_entry1(&sam->sam[i], start_idx + i + 1, - len_sam_name, len_sam_full, len_sam_desc, + &sam->str[i].uni_acct_name, &sam->str[i].uni_full_name, &sam->str[i].uni_acct_desc, user_rid, pdb_get_acct_ctrl(pwd)); - ZERO_STRUCTP(&sam->str[i].uni_acct_name); - ZERO_STRUCTP(&sam->str[i].uni_full_name); - ZERO_STRUCTP(&sam->str[i].uni_acct_desc); - - init_unistr2(&sam->str[i].uni_acct_name, pdb_get_username(pwd), len_sam_name); - init_unistr2(&sam->str[i].uni_full_name, pdb_get_fullname(pwd), len_sam_full); - init_unistr2(&sam->str[i].uni_acct_desc, pdb_get_acct_desc(pwd), len_sam_desc); } return NT_STATUS_OK; @@ -1637,7 +1623,6 @@ NTSTATUS init_sam_dispinfo_2(TALLOC_CTX *ctx, SAM_DISPINFO_2 *sam, uint32 num_en uint32 start_idx, SAM_ACCOUNT *disp_user_info, DOM_SID *domain_sid ) { - uint32 len_sam_name, len_sam_desc; uint32 i; SAM_ACCOUNT *pwd = NULL; @@ -1680,18 +1665,12 @@ NTSTATUS init_sam_dispinfo_2(TALLOC_CTX *ctx, SAM_DISPINFO_2 *sam, uint32 num_en return NT_STATUS_UNSUCCESSFUL; } - len_sam_name = strlen(username); - len_sam_desc = strlen(acct_desc); - + init_unistr2(&sam->str[i].uni_srv_name, username, UNI_FLAGS_NONE); + init_unistr2(&sam->str[i].uni_srv_desc, pdb_get_acct_desc(pwd), UNI_FLAGS_NONE); + init_sam_entry2(&sam->sam[i], start_idx + i + 1, - len_sam_name, len_sam_desc, + &sam->str[i].uni_srv_name, &sam->str[i].uni_srv_desc, user_rid, pdb_get_acct_ctrl(pwd)); - - ZERO_STRUCTP(&sam->str[i].uni_srv_name); - ZERO_STRUCTP(&sam->str[i].uni_srv_desc); - - init_unistr2(&sam->str[i].uni_srv_name, username, len_sam_name); - init_unistr2(&sam->str[i].uni_srv_desc, pdb_get_acct_desc(pwd), len_sam_desc); } return NT_STATUS_OK; @@ -1755,7 +1734,6 @@ inits a SAM_DISPINFO_3 structure. NTSTATUS init_sam_dispinfo_3(TALLOC_CTX *ctx, SAM_DISPINFO_3 *sam, uint32 num_entries, uint32 start_idx, DOMAIN_GRP *disp_group_info) { - uint32 len_sam_name, len_sam_desc; uint32 i; ZERO_STRUCTP(sam); @@ -1779,13 +1757,11 @@ NTSTATUS init_sam_dispinfo_3(TALLOC_CTX *ctx, SAM_DISPINFO_3 *sam, uint32 num_en DEBUG(11, ("init_sam_dispinfo_3: entry: %d\n",i)); - len_sam_name = strlen(grp->name); - len_sam_desc = strlen(grp->comment); + init_unistr2(&sam->str[i].uni_grp_name, grp->name, UNI_FLAGS_NONE); + init_unistr2(&sam->str[i].uni_grp_desc, grp->comment, UNI_FLAGS_NONE); - init_sam_entry3(&sam->sam[i], start_idx + i + 1, len_sam_name, len_sam_desc, grp->rid); - - init_unistr2(&sam->str[i].uni_grp_name, grp->name, len_sam_name); - init_unistr2(&sam->str[i].uni_grp_desc, grp->comment, len_sam_desc); + init_sam_entry3(&sam->sam[i], start_idx + i + 1, &sam->str[i].uni_grp_name, + &sam->str[i].uni_grp_desc, grp->rid); } return NT_STATUS_OK; @@ -2210,20 +2186,15 @@ void init_samr_group_info1(GROUP_INFO1 * gr1, char *acct_name, char *acct_desc, uint32 num_members) { - int desc_len = acct_desc != NULL ? strlen(acct_desc) : 0; - int acct_len = acct_name != NULL ? strlen(acct_name) : 0; - DEBUG(5, ("init_samr_group_info1\n")); - init_uni_hdr(&gr1->hdr_acct_name, acct_len); - gr1->unknown_1 = 0x3; gr1->num_members = num_members; - init_uni_hdr(&gr1->hdr_acct_desc, desc_len); - - init_unistr2(&gr1->uni_acct_name, acct_name, acct_len); - init_unistr2(&gr1->uni_acct_desc, acct_desc, desc_len); + init_unistr2(&gr1->uni_acct_name, acct_name, UNI_FLAGS_NONE); + init_uni_hdr(&gr1->hdr_acct_name, &gr1->uni_acct_name); + init_unistr2(&gr1->uni_acct_desc, acct_desc, UNI_FLAGS_NONE); + init_uni_hdr(&gr1->hdr_acct_desc, &gr1->uni_acct_desc); } /******************************************************************* @@ -2302,12 +2273,10 @@ inits a GROUP_INFO4 structure. void init_samr_group_info4(GROUP_INFO4 * gr4, char *acct_desc) { - int acct_len = acct_desc != NULL ? strlen(acct_desc) : 0; - DEBUG(5, ("init_samr_group_info4\n")); - init_uni_hdr(&gr4->hdr_acct_desc, acct_len); - init_unistr2(&gr4->uni_acct_desc, acct_desc, acct_len); + init_unistr2(&gr4->uni_acct_desc, acct_desc, UNI_FLAGS_NONE); + init_uni_hdr(&gr4->hdr_acct_desc, &gr4->uni_acct_desc); } /******************************************************************* @@ -2383,14 +2352,12 @@ void init_samr_q_create_dom_group(SAMR_Q_CREATE_DOM_GROUP * q_e, POLICY_HND *pol, char *acct_desc, uint32 access_mask) { - int acct_len = acct_desc != NULL ? strlen(acct_desc) : 0; - DEBUG(5, ("init_samr_q_create_dom_group\n")); q_e->pol = *pol; - init_uni_hdr(&q_e->hdr_acct_desc, acct_len); - init_unistr2(&q_e->uni_acct_desc, acct_desc, acct_len); + init_unistr2(&q_e->uni_acct_desc, acct_desc, UNI_FLAGS_NONE); + init_uni_hdr(&q_e->hdr_acct_desc, &q_e->uni_acct_desc); q_e->access_mask = access_mask; } @@ -3502,18 +3469,15 @@ inits a ALIAS_INFO1 structure. void init_samr_alias_info1(ALIAS_INFO1 * al1, char *acct_name, uint32 num_member, char *acct_desc) { - int acct_len_name = acct_name != NULL ? strlen(acct_name) : 0; - int acct_len_desc = acct_desc != NULL ? strlen(acct_desc) : 0; - DEBUG(5, ("init_samr_alias_info1\n")); - init_uni_hdr(&al1->hdr_acct_name, acct_len_name); - init_unistr2(&al1->uni_acct_name, acct_name, acct_len_name); + init_unistr2(&al1->uni_acct_name, acct_name, UNI_FLAGS_NONE); + init_uni_hdr(&al1->hdr_acct_name, &al1->uni_acct_name); al1->num_member=num_member; - init_uni_hdr(&al1->hdr_acct_desc, acct_len_desc); - init_unistr2(&al1->uni_acct_desc, acct_desc, acct_len_desc); + init_unistr2(&al1->uni_acct_desc, acct_desc, UNI_FLAGS_NONE); + init_uni_hdr(&al1->hdr_acct_desc, &al1->uni_acct_name); } /******************************************************************* @@ -3559,12 +3523,10 @@ inits a ALIAS_INFO3 structure. void init_samr_alias_info3(ALIAS_INFO3 * al3, char *acct_desc) { - int acct_len = acct_desc != NULL ? strlen(acct_desc) : 0; - DEBUG(5, ("init_samr_alias_info3\n")); - init_uni_hdr(&al3->hdr_acct_desc, acct_len); - init_unistr2(&al3->uni_acct_desc, acct_desc, acct_len); + init_unistr2(&al3->uni_acct_desc, acct_desc, UNI_FLAGS_NONE); + init_uni_hdr(&al3->hdr_acct_desc, &al3->uni_acct_desc); } /******************************************************************* @@ -4272,14 +4234,12 @@ inits a SAMR_Q_CREATE_DOM_ALIAS structure. void init_samr_q_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS * q_u, POLICY_HND *hnd, char *acct_desc) { - int acct_len = acct_desc != NULL ? strlen(acct_desc) : 0; - DEBUG(5, ("init_samr_q_create_dom_alias\n")); q_u->dom_pol = *hnd; - init_uni_hdr(&q_u->hdr_acct_desc, acct_len); - init_unistr2(&q_u->uni_acct_desc, acct_desc, acct_len); + init_unistr2(&q_u->uni_acct_desc, acct_desc, UNI_FLAGS_NONE); + init_uni_hdr(&q_u->hdr_acct_desc, &q_u->uni_acct_desc); q_u->access_mask = 0x001f000f; } @@ -4675,9 +4635,8 @@ NTSTATUS init_samr_q_lookup_names(TALLOC_CTX *ctx, SAMR_Q_LOOKUP_NAMES * q_u, return NT_STATUS_NO_MEMORY; for (i = 0; i < num_names; i++) { - int len_name = name[i] != NULL ? strlen(name[i]) : 0; - init_uni_hdr(&q_u->hdr_name[i], len_name); /* unicode header for user_name */ - init_unistr2(&q_u->uni_name[i], name[i], len_name); /* unicode string for machine account */ + init_unistr2(&q_u->uni_name[i], name[i], UNI_FLAGS_NONE); /* unicode string for machine account */ + init_uni_hdr(&q_u->hdr_name[i], &q_u->uni_name[i]); /* unicode header for user_name */ } return NT_STATUS_OK; @@ -5013,15 +4972,12 @@ void init_samr_q_create_user(SAMR_Q_CREATE_USER * q_u, const char *name, uint32 acb_info, uint32 access_mask) { - int len_name; - len_name = strlen(name); - DEBUG(5, ("samr_init_samr_q_create_user\n")); q_u->domain_pol = *pol; - init_uni_hdr(&q_u->hdr_name, len_name); - init_unistr2(&q_u->uni_name, name, len_name); + init_unistr2(&q_u->uni_name, name, UNI_FLAGS_NONE); + init_uni_hdr(&q_u->hdr_name, &q_u->uni_name); q_u->acb_info = acb_info; q_u->access_mask = access_mask; @@ -5244,16 +5200,11 @@ void init_sam_user_info11(SAM_USER_INFO_11 * usr, char *mach_acct, uint32 rid_user, uint32 rid_group, uint16 acct_ctrl) { - int len_mach_acct; - DEBUG(5, ("init_sam_user_info11\n")); - len_mach_acct = strlen(mach_acct); - - memcpy(&(usr->expiry), expiry, sizeof(usr->expiry)); /* expiry time or something? */ + memcpy(&usr->expiry, expiry, sizeof(usr->expiry)); /* expiry time or something? */ ZERO_STRUCT(usr->padding_1); /* 0 - padding 24 bytes */ - init_uni_hdr(&usr->hdr_mach_acct, len_mach_acct); /* unicode header for machine account */ usr->padding_2 = 0; /* 0 - padding 4 bytes */ usr->ptr_1 = 1; /* pointer */ @@ -5278,7 +5229,8 @@ void init_sam_user_info11(SAM_USER_INFO_11 * usr, ZERO_STRUCT(usr->padding_7); /* 0 - padding 16 bytes */ usr->padding_8 = 0; /* 0 - padding 4 bytes */ - init_unistr2(&usr->uni_mach_acct, mach_acct, len_mach_acct); /* unicode string for machine account */ + init_unistr2(&usr->uni_mach_acct, mach_acct, UNI_FLAGS_NONE); /* unicode string for machine account */ + init_uni_hdr(&usr->hdr_mach_acct, &usr->uni_mach_acct); /* unicode header for machine account */ } /******************************************************************* @@ -5411,7 +5363,6 @@ static BOOL sam_io_user_info24(const char *desc, SAM_USER_INFO_24 * usr, init_sam_user_info23 unknown_3 = 0x09f8 27fa - unknown_5 = 0x0001 0000 unknown_6 = 0x0000 04ec *************************************************************************/ @@ -5438,20 +5389,10 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z uint32 unknown_3, uint16 logon_divs, LOGON_HRS * hrs, - uint32 unknown_5, + uint16 bad_password_count, + uint16 logon_count, char newpass[516], uint32 unknown_6) { - int len_user_name = user_name != NULL ? user_name->uni_str_len : 0; - int len_full_name = full_name != NULL ? full_name->uni_str_len : 0; - int len_home_dir = home_dir != NULL ? home_dir->uni_str_len : 0; - int len_dir_drive = dir_drive != NULL ? dir_drive->uni_str_len : 0; - int len_logon_script = log_scr != NULL ? log_scr->uni_str_len : 0; - int len_profile_path = prof_path != NULL ? prof_path->uni_str_len : 0; - int len_description = desc != NULL ? desc->uni_str_len : 0; - int len_workstations = wkstas != NULL ? wkstas->uni_str_len : 0; - int len_unknown_str = unk_str != NULL ? unk_str->uni_str_len : 0; - int len_munged_dial = mung_dial != NULL ? mung_dial->uni_str_len : 0; - usr->logon_time = *logon_time; /* all zeros */ usr->logoff_time = *logoff_time; /* all zeros */ usr->kickoff_time = *kickoff_time; /* all zeros */ @@ -5459,17 +5400,6 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z usr->pass_can_change_time = *pass_can_change_time; /* all zeros */ usr->pass_must_change_time = *pass_must_change_time; /* all zeros */ - init_uni_hdr(&usr->hdr_user_name, len_user_name); /* NULL */ - init_uni_hdr(&usr->hdr_full_name, len_full_name); - init_uni_hdr(&usr->hdr_home_dir, len_home_dir); - init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive); - init_uni_hdr(&usr->hdr_logon_script, len_logon_script); - init_uni_hdr(&usr->hdr_profile_path, len_profile_path); - init_uni_hdr(&usr->hdr_acct_desc, len_description); - init_uni_hdr(&usr->hdr_workstations, len_workstations); - init_uni_hdr(&usr->hdr_unknown_str, len_unknown_str); - init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial); - ZERO_STRUCT(usr->nt_pwd); ZERO_STRUCT(usr->lm_pwd); @@ -5487,24 +5417,43 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z usr->passmustchange=0; } - ZERO_STRUCT(usr->padding1); ZERO_STRUCT(usr->padding2); - usr->unknown_5 = unknown_5; /* 0x0001 0000 */ + usr->bad_password_count = bad_password_count; + usr->logon_count = logon_count; memcpy(usr->pass, newpass, sizeof(usr->pass)); copy_unistr2(&usr->uni_user_name, user_name); + init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name); + copy_unistr2(&usr->uni_full_name, full_name); + init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name); + copy_unistr2(&usr->uni_home_dir, home_dir); + init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir); + copy_unistr2(&usr->uni_dir_drive, dir_drive); + init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive); + copy_unistr2(&usr->uni_logon_script, log_scr); + init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script); + copy_unistr2(&usr->uni_profile_path, prof_path); + init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path); + copy_unistr2(&usr->uni_acct_desc, desc); + init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc); + copy_unistr2(&usr->uni_workstations, wkstas); + init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations); + copy_unistr2(&usr->uni_unknown_str, unk_str); + init_uni_hdr(&usr->hdr_unknown_str, &usr->uni_unknown_str); + copy_unistr2(&usr->uni_munged_dial, mung_dial); + init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial); usr->unknown_6 = unknown_6; /* 0x0000 04ec */ usr->padding4 = 0; @@ -5516,7 +5465,6 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z init_sam_user_info23 unknown_3 = 0x09f8 27fa - unknown_5 = 0x0001 0000 unknown_6 = 0x0000 04ec *************************************************************************/ @@ -5534,20 +5482,9 @@ void init_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z char *unk_str, char *mung_dial, uint32 user_rid, /* 0x0000 0000 */ uint32 group_rid, uint32 acb_info, uint32 unknown_3, uint16 logon_divs, - LOGON_HRS * hrs, uint32 unknown_5, + LOGON_HRS * hrs, uint16 bad_password_count, uint16 logon_count, char newpass[516], uint32 unknown_6) { - int len_user_name = user_name != NULL ? strlen(user_name) : 0; - int len_full_name = full_name != NULL ? strlen(full_name) : 0; - int len_home_dir = home_dir != NULL ? strlen(home_dir) : 0; - int len_dir_drive = dir_drive != NULL ? strlen(dir_drive) : 0; - int len_logon_script = log_scr != NULL ? strlen(log_scr) : 0; - int len_profile_path = prof_path != NULL ? strlen(prof_path) : 0; - int len_description = desc != NULL ? strlen(desc) : 0; - int len_workstations = wkstas != NULL ? strlen(wkstas) : 0; - int len_unknown_str = unk_str != NULL ? strlen(unk_str) : 0; - int len_munged_dial = mung_dial != NULL ? strlen(mung_dial) : 0; - usr->logon_time = *logon_time; /* all zeros */ usr->logoff_time = *logoff_time; /* all zeros */ usr->kickoff_time = *kickoff_time; /* all zeros */ @@ -5555,17 +5492,6 @@ void init_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z usr->pass_can_change_time = *pass_can_change_time; /* all zeros */ usr->pass_must_change_time = *pass_must_change_time; /* all zeros */ - init_uni_hdr(&usr->hdr_user_name, len_user_name); /* NULL */ - init_uni_hdr(&usr->hdr_full_name, len_full_name); - init_uni_hdr(&usr->hdr_home_dir, len_home_dir); - init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive); - init_uni_hdr(&usr->hdr_logon_script, len_logon_script); - init_uni_hdr(&usr->hdr_profile_path, len_profile_path); - init_uni_hdr(&usr->hdr_acct_desc, len_description); - init_uni_hdr(&usr->hdr_workstations, len_workstations); - init_uni_hdr(&usr->hdr_unknown_str, len_unknown_str); - init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial); - ZERO_STRUCT(usr->nt_pwd); ZERO_STRUCT(usr->lm_pwd); @@ -5586,20 +5512,40 @@ void init_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z ZERO_STRUCT(usr->padding1); ZERO_STRUCT(usr->padding2); - usr->unknown_5 = unknown_5; /* 0x0001 0000 */ + usr->bad_password_count = bad_password_count; + usr->logon_count = logon_count; memcpy(usr->pass, newpass, sizeof(usr->pass)); - init_unistr2(&usr->uni_user_name, user_name, len_user_name); /* NULL */ - init_unistr2(&usr->uni_full_name, full_name, len_full_name); - init_unistr2(&usr->uni_home_dir, home_dir, len_home_dir); - init_unistr2(&usr->uni_dir_drive, dir_drive, len_dir_drive); - init_unistr2(&usr->uni_logon_script, log_scr, len_logon_script); - init_unistr2(&usr->uni_profile_path, prof_path, len_profile_path); - init_unistr2(&usr->uni_acct_desc, desc, len_description); - init_unistr2(&usr->uni_workstations, wkstas, len_workstations); - init_unistr2(&usr->uni_unknown_str, unk_str, len_unknown_str); - init_unistr2(&usr->uni_munged_dial, mung_dial, len_munged_dial); + init_unistr2(&usr->uni_user_name, user_name, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name); + + init_unistr2(&usr->uni_full_name, full_name, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name); + + init_unistr2(&usr->uni_home_dir, home_dir, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir); + + init_unistr2(&usr->uni_dir_drive, dir_drive, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive); + + init_unistr2(&usr->uni_logon_script, log_scr, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script); + + init_unistr2(&usr->uni_profile_path, prof_path, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path); + + init_unistr2(&usr->uni_acct_desc, desc, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc); + + init_unistr2(&usr->uni_workstations, wkstas, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations); + + init_unistr2(&usr->uni_unknown_str, unk_str, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_unknown_str, &usr->uni_unknown_str); + + init_unistr2(&usr->uni_munged_dial, mung_dial, UNI_FLAGS_NONE); + init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial); usr->unknown_6 = unknown_6; /* 0x0000 04ec */ usr->padding4 = 0; @@ -5678,7 +5624,9 @@ static BOOL sam_io_user_info23(const char *desc, SAM_USER_INFO_23 * usr, if(!prs_uint32("ptr_logon_hrs ", ps, depth, &usr->ptr_logon_hrs)) return False; - if(!prs_uint32("unknown_5 ", ps, depth, &usr->unknown_5)) + if(!prs_uint16("bad_password_count ", ps, depth, &usr->bad_password_count)) + return False; + if(!prs_uint16("logon_count ", ps, depth, &usr->logon_count)) return False; if(!prs_uint8s(False, "padding1 ", ps, depth, usr->padding1, sizeof(usr->padding1))) @@ -5865,7 +5813,6 @@ static BOOL sam_io_user_info25(const char *desc, SAM_USER_INFO_25 * usr, prs_str init_sam_user_info21W unknown_3 = 0x00ff ffff - unknown_5 = 0x0002 0000 unknown_6 = 0x0000 04ec *************************************************************************/ @@ -5895,19 +5842,10 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr, uint32 unknown_3, uint16 logon_divs, LOGON_HRS * hrs, - uint32 unknown_5, uint32 unknown_6) -{ - int len_user_name = user_name != NULL ? user_name->uni_str_len : 0; - int len_full_name = full_name != NULL ? full_name->uni_str_len : 0; - int len_home_dir = home_dir != NULL ? home_dir->uni_str_len : 0; - int len_dir_drive = dir_drive != NULL ? dir_drive->uni_str_len : 0; - int len_logon_script = log_scr != NULL ? log_scr->uni_str_len : 0; - int len_profile_path = prof_path != NULL ? prof_path->uni_str_len : 0; - int len_description = desc != NULL ? desc->uni_str_len : 0; - int len_workstations = wkstas != NULL ? wkstas->uni_str_len : 0; - int len_unknown_str = unk_str != NULL ? unk_str->uni_str_len : 0; - int len_munged_dial = mung_dial != NULL ? mung_dial->uni_str_len : 0; - + uint16 bad_password_count, + uint16 logon_count, + uint32 unknown_6) +{ usr->logon_time = *logon_time; usr->logoff_time = *logoff_time; usr->kickoff_time = *kickoff_time; @@ -5915,17 +5853,6 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr, usr->pass_can_change_time = *pass_can_change_time; usr->pass_must_change_time = *pass_must_change_time; - init_uni_hdr(&usr->hdr_user_name, len_user_name); - init_uni_hdr(&usr->hdr_full_name, len_full_name); - init_uni_hdr(&usr->hdr_home_dir, len_home_dir); - init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive); - init_uni_hdr(&usr->hdr_logon_script, len_logon_script); - init_uni_hdr(&usr->hdr_profile_path, len_profile_path); - init_uni_hdr(&usr->hdr_acct_desc, len_description); - init_uni_hdr(&usr->hdr_workstations, len_workstations); - init_uni_hdr(&usr->hdr_unknown_str, len_unknown_str); - init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial); - memcpy(usr->lm_pwd, lm_pwd, sizeof(usr->lm_pwd)); memcpy(usr->nt_pwd, nt_pwd, sizeof(usr->nt_pwd)); @@ -5936,7 +5863,8 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr, usr->logon_divs = logon_divs; /* should be 168 (hours/week) */ usr->ptr_logon_hrs = hrs ? 1 : 0; - usr->unknown_5 = unknown_5; /* 0x0002 0000 */ + usr->bad_password_count = bad_password_count; + usr->logon_count = logon_count; if (nt_time_is_zero(pass_must_change_time)) { usr->passmustchange=PASS_MUST_CHANGE_AT_NEXT_LOGON; @@ -5944,20 +5872,38 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr, usr->passmustchange=0; } - ZERO_STRUCT(usr->padding1); ZERO_STRUCT(usr->padding2); copy_unistr2(&usr->uni_user_name, user_name); + init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name); + copy_unistr2(&usr->uni_full_name, full_name); + init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name); + copy_unistr2(&usr->uni_home_dir, home_dir); + init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir); + copy_unistr2(&usr->uni_dir_drive, dir_drive); + init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive); + copy_unistr2(&usr->uni_logon_script, log_scr); + init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script); + copy_unistr2(&usr->uni_profile_path, prof_path); + init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path); + copy_unistr2(&usr->uni_acct_desc, desc); + init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc); + copy_unistr2(&usr->uni_workstations, wkstas); + init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations); + copy_unistr2(&usr->uni_unknown_str, unk_str); + init_uni_hdr(&usr->hdr_unknown_str, &usr->uni_unknown_str); + copy_unistr2(&usr->uni_munged_dial, mung_dial); + init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial); usr->unknown_6 = unknown_6; /* 0x0000 04ec */ usr->padding4 = 0; @@ -5969,7 +5915,6 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr, init_sam_user_info21 unknown_3 = 0x00ff ffff - unknown_5 = 0x0002 0000 unknown_6 = 0x0000 04ec *************************************************************************/ @@ -5979,11 +5924,6 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID * NTTIME logon_time, logoff_time, kickoff_time, pass_last_set_time, pass_can_change_time, pass_must_change_time; - - int len_user_name, len_full_name, len_home_dir, - len_dir_drive, len_logon_script, len_profile_path, - len_description, len_workstations, len_unknown_str, - len_munged_dial; const char* user_name = pdb_get_username(pw); const char* full_name = pdb_get_fullname(pw); @@ -6001,18 +5941,6 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID * uint32 group_rid; const DOM_SID *group_sid; - len_user_name = user_name != NULL ? strlen(user_name )+1 : 0; - len_full_name = full_name != NULL ? strlen(full_name )+1 : 0; - len_home_dir = home_dir != NULL ? strlen(home_dir )+1 : 0; - len_dir_drive = dir_drive != NULL ? strlen(dir_drive )+1 : 0; - len_logon_script = logon_script != NULL ? strlen(logon_script)+1 : 0; - len_profile_path = profile_path != NULL ? strlen(profile_path)+1 : 0; - len_description = description != NULL ? strlen(description )+1 : 0; - len_workstations = workstations != NULL ? strlen(workstations)+1 : 0; - len_unknown_str = 0; - len_munged_dial = munged_dial != NULL ? strlen(munged_dial )+1 : 0; - - /* Create NTTIME structs */ unix_to_nt_time (&logon_time, pdb_get_logon_time(pw)); unix_to_nt_time (&logoff_time, pdb_get_logoff_time(pw)); @@ -6029,17 +5957,6 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID * usr->pass_can_change_time = pass_can_change_time; usr->pass_must_change_time = pass_must_change_time; - init_uni_hdr(&usr->hdr_user_name, len_user_name); - init_uni_hdr(&usr->hdr_full_name, len_full_name); - init_uni_hdr(&usr->hdr_home_dir, len_home_dir); - init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive); - init_uni_hdr(&usr->hdr_logon_script, len_logon_script); - init_uni_hdr(&usr->hdr_profile_path, len_profile_path); - init_uni_hdr(&usr->hdr_acct_desc, len_description); - init_uni_hdr(&usr->hdr_workstations, len_workstations); - init_uni_hdr(&usr->hdr_unknown_str, len_unknown_str); - init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial); - ZERO_STRUCT(usr->nt_pwd); ZERO_STRUCT(usr->lm_pwd); @@ -6086,7 +6003,8 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID * usr->logon_divs = pdb_get_logon_divs(pw); usr->ptr_logon_hrs = pdb_get_hours(pw) ? 1 : 0; - usr->unknown_5 = pdb_get_unknown_5(pw); /* 0x0002 0000 */ + usr->bad_password_count = pdb_get_bad_password_count(pw); + usr->logon_count = pdb_get_logon_count(pw); if (pdb_get_pass_must_change_time(pw) == 0) { usr->passmustchange=PASS_MUST_CHANGE_AT_NEXT_LOGON; @@ -6094,20 +6012,38 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID * usr->passmustchange=0; } - ZERO_STRUCT(usr->padding1); ZERO_STRUCT(usr->padding2); - init_unistr2(&usr->uni_user_name, user_name, len_user_name); - init_unistr2(&usr->uni_full_name, full_name, len_full_name); - init_unistr2(&usr->uni_home_dir, home_dir, len_home_dir); - init_unistr2(&usr->uni_dir_drive, dir_drive, len_dir_drive); - init_unistr2(&usr->uni_logon_script, logon_script, len_logon_script); - init_unistr2(&usr->uni_profile_path, profile_path, len_profile_path); - init_unistr2(&usr->uni_acct_desc, description, len_description); - init_unistr2(&usr->uni_workstations, workstations, len_workstations); - init_unistr2(&usr->uni_unknown_str, NULL, len_unknown_str); - init_unistr2(&usr->uni_munged_dial, munged_dial, len_munged_dial); + init_unistr2(&usr->uni_user_name, user_name, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name); + + init_unistr2(&usr->uni_full_name, full_name, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name); + + init_unistr2(&usr->uni_home_dir, home_dir, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir); + + init_unistr2(&usr->uni_dir_drive, dir_drive, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive); + + init_unistr2(&usr->uni_logon_script, logon_script, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script); + + init_unistr2(&usr->uni_profile_path, profile_path, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path); + + init_unistr2(&usr->uni_acct_desc, description, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc); + + init_unistr2(&usr->uni_workstations, workstations, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations); + + init_unistr2(&usr->uni_unknown_str, NULL, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_unknown_str, &usr->uni_unknown_str); + + init_unistr2(&usr->uni_munged_dial, munged_dial, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial); usr->unknown_6 = pdb_get_unknown_6(pw); usr->padding4 = 0; @@ -6192,7 +6128,9 @@ static BOOL sam_io_user_info21(const char *desc, SAM_USER_INFO_21 * usr, if(!prs_uint32("ptr_logon_hrs ", ps, depth, &usr->ptr_logon_hrs)) return False; - if(!prs_uint32("unknown_5 ", ps, depth, &usr->unknown_5)) + if(!prs_uint16("bad_password_count ", ps, depth, &usr->bad_password_count)) + return False; + if(!prs_uint16("logon_count ", ps, depth, &usr->logon_count)) return False; if(!prs_uint8s(False, "padding1 ", ps, depth, usr->padding1, sizeof(usr->padding1))) @@ -6245,12 +6183,10 @@ static BOOL sam_io_user_info21(const char *desc, SAM_USER_INFO_21 * usr, void init_sam_user_info20A(SAM_USER_INFO_20 *usr, SAM_ACCOUNT *pw) { - int len_munged_dial; - const char* munged_dial = pdb_get_munged_dial(pw); + const char *munged_dial = pdb_get_munged_dial(pw); - len_munged_dial = munged_dial != NULL ? strlen(munged_dial )+1 : 0; - init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial); - init_unistr2(&usr->uni_munged_dial, munged_dial, len_munged_dial); + init_unistr2(&usr->uni_munged_dial, munged_dial, UNI_STR_TERMINATE); + init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial); } @@ -6716,13 +6652,11 @@ inits a SAMR_Q_CONNECT structure. void init_samr_q_connect(SAMR_Q_CONNECT * q_u, char *srv_name, uint32 access_mask) { - int len_srv_name = strlen(srv_name); - DEBUG(5, ("init_samr_q_connect\n")); /* make PDC server name \\server */ - q_u->ptr_srv_name = len_srv_name > 0 ? 1 : 0; - init_unistr2(&q_u->uni_srv_name, srv_name, len_srv_name + 1); + q_u->ptr_srv_name = (srv_name != NULL && *srv_name) ? 1 : 0; + init_unistr2(&q_u->uni_srv_name, srv_name, UNI_STR_TERMINATE); /* example values: 0x0000 0002 */ q_u->access_mask = access_mask; @@ -6789,13 +6723,11 @@ inits a SAMR_Q_CONNECT4 structure. void init_samr_q_connect4(SAMR_Q_CONNECT4 * q_u, char *srv_name, uint32 access_mask) { - int len_srv_name = strlen(srv_name); - DEBUG(5, ("init_samr_q_connect\n")); /* make PDC server name \\server */ - q_u->ptr_srv_name = len_srv_name > 0 ? 1 : 0; - init_unistr2(&q_u->uni_srv_name, srv_name, len_srv_name + 1); + q_u->ptr_srv_name = (srv_name != NULL && *srv_name) ? 1 : 0; + init_unistr2(&q_u->uni_srv_name, srv_name, UNI_STR_TERMINATE); /* Only value we've seen, possibly an address type ? */ q_u->unk_0 = 2; @@ -6934,13 +6866,11 @@ inits a SAMR_Q_GET_DOM_PWINFO structure. void init_samr_q_get_dom_pwinfo(SAMR_Q_GET_DOM_PWINFO * q_u, char *srv_name) { - int len_srv_name = strlen(srv_name); - DEBUG(5, ("init_samr_q_get_dom_pwinfo\n")); q_u->ptr = 1; - init_uni_hdr(&q_u->hdr_srv_name, len_srv_name); - init_unistr2(&q_u->uni_srv_name, srv_name, len_srv_name); + init_unistr2(&q_u->uni_srv_name, srv_name, UNI_FLAGS_NONE); + init_uni_hdr(&q_u->hdr_srv_name, &q_u->uni_srv_name); } /******************************************************************* @@ -7101,16 +7031,14 @@ void init_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER * q_u, char lm_newpass[516], uchar lm_oldhash[16]) { - int len_dest_host = strlen(dest_host); - int len_user_name = strlen(user_name); - DEBUG(5, ("init_samr_q_chgpasswd_user\n")); q_u->ptr_0 = 1; - init_uni_hdr(&q_u->hdr_dest_host, len_dest_host); - init_unistr2(&q_u->uni_dest_host, dest_host, len_dest_host); - init_uni_hdr(&q_u->hdr_user_name, len_user_name); - init_unistr2(&q_u->uni_user_name, user_name, len_user_name); + init_unistr2(&q_u->uni_dest_host, dest_host, UNI_FLAGS_NONE); + init_uni_hdr(&q_u->hdr_dest_host, &q_u->uni_dest_host); + + init_unistr2(&q_u->uni_user_name, user_name, UNI_FLAGS_NONE); + init_uni_hdr(&q_u->hdr_user_name, &q_u->uni_user_name); init_enc_passwd(&q_u->nt_newpass, nt_newpass); init_enc_hash(&q_u->nt_oldhash, nt_oldhash); diff --git a/source/rpc_parse/parse_sec.c b/source/rpc_parse/parse_sec.c index 3848bd7051f..bf43ef288ae 100644 --- a/source/rpc_parse/parse_sec.c +++ b/source/rpc_parse/parse_sec.c @@ -28,15 +28,6 @@ #define DBGC_CLASS DBGC_RPC_PARSE /******************************************************************* - Sets up a SEC_ACCESS structure. -********************************************************************/ - -void init_sec_access(SEC_ACCESS *t, uint32 mask) -{ - t->mask = mask; -} - -/******************************************************************* Reads or writes a SEC_ACCESS structure. ********************************************************************/ @@ -55,51 +46,6 @@ BOOL sec_io_access(const char *desc, SEC_ACCESS *t, prs_struct *ps, int depth) } /******************************************************************* - Check if ACE has OBJECT type. -********************************************************************/ - -BOOL sec_ace_object(uint8 type) -{ - if (type == SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT || - type == SEC_ACE_TYPE_ACCESS_DENIED_OBJECT || - type == SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT || - type == SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT) { - return True; - } - return False; -} - -/******************************************************************* - copy a SEC_ACE structure. -********************************************************************/ -void sec_ace_copy(SEC_ACE *ace_dest, SEC_ACE *ace_src) -{ - ace_dest->type = ace_src->type; - ace_dest->flags = ace_src->flags; - ace_dest->size = ace_src->size; - ace_dest->info.mask = ace_src->info.mask; - ace_dest->obj_flags = ace_src->obj_flags; - memcpy(&ace_dest->obj_guid, &ace_src->obj_guid, GUID_SIZE); - memcpy(&ace_dest->inh_guid, &ace_src->inh_guid, GUID_SIZE); - sid_copy(&ace_dest->trustee, &ace_src->trustee); -} - -/******************************************************************* - Sets up a SEC_ACE structure. -********************************************************************/ - -void init_sec_ace(SEC_ACE *t, DOM_SID *sid, uint8 type, SEC_ACCESS mask, uint8 flag) -{ - t->type = type; - t->flags = flag; - t->size = sid_size(sid) + 8; - t->info = mask; - - ZERO_STRUCTP(&t->trustee); - sid_copy(&t->trustee, sid); -} - -/******************************************************************* Reads or writes a SEC_ACE structure. ********************************************************************/ @@ -154,127 +100,6 @@ BOOL sec_io_ace(const char *desc, SEC_ACE *psa, prs_struct *ps, int depth) } /******************************************************************* - adds new SID with its permissions to ACE list -********************************************************************/ - -NTSTATUS sec_ace_add_sid(TALLOC_CTX *ctx, SEC_ACE **new, SEC_ACE *old, unsigned *num, DOM_SID *sid, uint32 mask) -{ - unsigned int i = 0; - - if (!ctx || !new || !old || !sid || !num) return NT_STATUS_INVALID_PARAMETER; - - *num += 1; - - if((new[0] = (SEC_ACE *) talloc_zero(ctx, (*num) * sizeof(SEC_ACE))) == 0) - return NT_STATUS_NO_MEMORY; - - for (i = 0; i < *num - 1; i ++) - sec_ace_copy(&(*new)[i], &old[i]); - - (*new)[i].type = 0; - (*new)[i].flags = 0; - (*new)[i].size = SEC_ACE_HEADER_SIZE + sid_size(sid); - (*new)[i].info.mask = mask; - sid_copy(&(*new)[i].trustee, sid); - return NT_STATUS_OK; -} - -/******************************************************************* - modify SID's permissions at ACL -********************************************************************/ - -NTSTATUS sec_ace_mod_sid(SEC_ACE *ace, size_t num, DOM_SID *sid, uint32 mask) -{ - unsigned int i = 0; - - if (!ace || !sid) return NT_STATUS_INVALID_PARAMETER; - - for (i = 0; i < num; i ++) { - if (sid_compare(&ace[i].trustee, sid) == 0) { - ace[i].info.mask = mask; - return NT_STATUS_OK; - } - } - return NT_STATUS_NOT_FOUND; -} - -/******************************************************************* - delete SID from ACL -********************************************************************/ - -static NTSTATUS sec_ace_del_sid(TALLOC_CTX *ctx, SEC_ACE **new, SEC_ACE *old, uint32 *num, DOM_SID *sid) -{ - unsigned int i = 0; - unsigned int n_del = 0; - - if (!ctx || !new || !old || !sid || !num) return NT_STATUS_INVALID_PARAMETER; - - if((new[0] = (SEC_ACE *) talloc_zero(ctx, (*num) * sizeof(SEC_ACE))) == 0) - return NT_STATUS_NO_MEMORY; - - for (i = 0; i < *num; i ++) { - if (sid_compare(&old[i].trustee, sid) != 0) - sec_ace_copy(&(*new)[i], &old[i]); - else - n_del ++; - } - if (n_del == 0) - return NT_STATUS_NOT_FOUND; - else { - *num -= n_del; - return NT_STATUS_OK; - } -} - -/******************************************************************* - Create a SEC_ACL structure. -********************************************************************/ - -SEC_ACL *make_sec_acl(TALLOC_CTX *ctx, uint16 revision, int num_aces, SEC_ACE *ace_list) -{ - SEC_ACL *dst; - int i; - - if((dst = (SEC_ACL *)talloc_zero(ctx,sizeof(SEC_ACL))) == NULL) - return NULL; - - dst->revision = revision; - dst->num_aces = num_aces; - dst->size = SEC_ACL_HEADER_SIZE; - - /* Now we need to return a non-NULL address for the ace list even - if the number of aces required is zero. This is because there - is a distinct difference between a NULL ace and an ace with zero - entries in it. This is achieved by checking that num_aces is a - positive number. */ - - if ((num_aces) && - ((dst->ace = (SEC_ACE *)talloc(ctx, sizeof(SEC_ACE) * num_aces)) - == NULL)) { - return NULL; - } - - for (i = 0; i < num_aces; i++) { - dst->ace[i] = ace_list[i]; /* Structure copy. */ - dst->size += ace_list[i].size; - } - - return dst; -} - -/******************************************************************* - Duplicate a SEC_ACL structure. -********************************************************************/ - -SEC_ACL *dup_sec_acl(TALLOC_CTX *ctx, SEC_ACL *src) -{ - if(src == NULL) - return NULL; - - return make_sec_acl(ctx, src->revision, src->num_aces, src->ace); -} - -/******************************************************************* Reads or writes a SEC_ACL structure. First of the xx_io_xx functions that allocates its data structures @@ -347,330 +172,6 @@ BOOL sec_io_acl(const char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth) } /******************************************************************* - Works out the linearization size of a SEC_DESC. -********************************************************************/ - -size_t sec_desc_size(SEC_DESC *psd) -{ - size_t offset; - - if (!psd) return 0; - - offset = SEC_DESC_HEADER_SIZE; - - /* don't align */ - - if (psd->owner_sid != NULL) - offset += sid_size(psd->owner_sid); - - if (psd->grp_sid != NULL) - offset += sid_size(psd->grp_sid); - - if (psd->sacl != NULL) - offset += psd->sacl->size; - - if (psd->dacl != NULL) - offset += psd->dacl->size; - - return offset; -} - -/******************************************************************* - Compares two SEC_ACE structures -********************************************************************/ - -BOOL sec_ace_equal(SEC_ACE *s1, SEC_ACE *s2) -{ - /* Trivial case */ - - if (!s1 && !s2) return True; - - /* Check top level stuff */ - - if (s1->type != s2->type || s1->flags != s2->flags || - s1->info.mask != s2->info.mask) { - return False; - } - - /* Check SID */ - - if (!sid_equal(&s1->trustee, &s2->trustee)) { - return False; - } - - return True; -} - -/******************************************************************* - Compares two SEC_ACL structures -********************************************************************/ - -BOOL sec_acl_equal(SEC_ACL *s1, SEC_ACL *s2) -{ - unsigned int i, j; - - /* Trivial cases */ - - if (!s1 && !s2) return True; - if (!s1 || !s2) return False; - - /* Check top level stuff */ - - if (s1->revision != s2->revision) { - DEBUG(10, ("sec_acl_equal(): revision differs (%d != %d)\n", - s1->revision, s2->revision)); - return False; - } - - if (s1->num_aces != s2->num_aces) { - DEBUG(10, ("sec_acl_equal(): num_aces differs (%d != %d)\n", - s1->revision, s2->revision)); - return False; - } - - /* The ACEs could be in any order so check each ACE in s1 against - each ACE in s2. */ - - for (i = 0; i < s1->num_aces; i++) { - BOOL found = False; - - for (j = 0; j < s2->num_aces; j++) { - if (sec_ace_equal(&s1->ace[i], &s2->ace[j])) { - found = True; - break; - } - } - - if (!found) return False; - } - - return True; -} - -/******************************************************************* - Compares two SEC_DESC structures -********************************************************************/ - -BOOL sec_desc_equal(SEC_DESC *s1, SEC_DESC *s2) -{ - /* Trivial case */ - - if (!s1 && !s2) { - goto done; - } - - /* Check top level stuff */ - - if (s1->revision != s2->revision) { - DEBUG(10, ("sec_desc_equal(): revision differs (%d != %d)\n", - s1->revision, s2->revision)); - return False; - } - - if (s1->type!= s2->type) { - DEBUG(10, ("sec_desc_equal(): type differs (%d != %d)\n", - s1->type, s2->type)); - return False; - } - - /* Check owner and group */ - - if (!sid_equal(s1->owner_sid, s2->owner_sid)) { - fstring str1, str2; - - sid_to_string(str1, s1->owner_sid); - sid_to_string(str2, s2->owner_sid); - - DEBUG(10, ("sec_desc_equal(): owner differs (%s != %s)\n", - str1, str2)); - return False; - } - - if (!sid_equal(s1->grp_sid, s2->grp_sid)) { - fstring str1, str2; - - sid_to_string(str1, s1->grp_sid); - sid_to_string(str2, s2->grp_sid); - - DEBUG(10, ("sec_desc_equal(): group differs (%s != %s)\n", - str1, str2)); - return False; - } - - /* Check ACLs present in one but not the other */ - - if ((s1->dacl && !s2->dacl) || (!s1->dacl && s2->dacl) || - (s1->sacl && !s2->sacl) || (!s1->sacl && s2->sacl)) { - DEBUG(10, ("sec_desc_equal(): dacl or sacl not present\n")); - return False; - } - - /* Sigh - we have to do it the hard way by iterating over all - the ACEs in the ACLs */ - - if (!sec_acl_equal(s1->dacl, s2->dacl) || - !sec_acl_equal(s1->sacl, s2->sacl)) { - DEBUG(10, ("sec_desc_equal(): dacl/sacl list not equal\n")); - return False; - } - - done: - DEBUG(10, ("sec_desc_equal(): secdescs are identical\n")); - return True; -} - -/******************************************************************* - Merge part of security descriptor old_sec in to the empty sections of - security descriptor new_sec. -********************************************************************/ - -SEC_DESC_BUF *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC_BUF *new_sdb, SEC_DESC_BUF *old_sdb) -{ - DOM_SID *owner_sid, *group_sid; - SEC_DESC_BUF *return_sdb; - SEC_ACL *dacl, *sacl; - SEC_DESC *psd = NULL; - uint16 secdesc_type; - size_t secdesc_size; - - /* Copy over owner and group sids. There seems to be no flag for - this so just check the pointer values. */ - - owner_sid = new_sdb->sec->owner_sid ? new_sdb->sec->owner_sid : - old_sdb->sec->owner_sid; - - group_sid = new_sdb->sec->grp_sid ? new_sdb->sec->grp_sid : - old_sdb->sec->grp_sid; - - secdesc_type = new_sdb->sec->type; - - /* Ignore changes to the system ACL. This has the effect of making - changes through the security tab audit button not sticking. - Perhaps in future Samba could implement these settings somehow. */ - - sacl = NULL; - secdesc_type &= ~SEC_DESC_SACL_PRESENT; - - /* Copy across discretionary ACL */ - - if (secdesc_type & SEC_DESC_DACL_PRESENT) { - dacl = new_sdb->sec->dacl; - } else { - dacl = old_sdb->sec->dacl; - } - - /* Create new security descriptor from bits */ - - psd = make_sec_desc(ctx, new_sdb->sec->revision, - owner_sid, group_sid, sacl, dacl, &secdesc_size); - - return_sdb = make_sec_desc_buf(ctx, secdesc_size, psd); - - return(return_sdb); -} - -/******************************************************************* - Creates a SEC_DESC structure -********************************************************************/ - -SEC_DESC *make_sec_desc(TALLOC_CTX *ctx, uint16 revision, - DOM_SID *owner_sid, DOM_SID *grp_sid, - SEC_ACL *sacl, SEC_ACL *dacl, size_t *sd_size) -{ - SEC_DESC *dst; - uint32 offset = 0; - - *sd_size = 0; - - if(( dst = (SEC_DESC *)talloc_zero(ctx, sizeof(SEC_DESC))) == NULL) - return NULL; - - dst->revision = revision; - dst->type = SEC_DESC_SELF_RELATIVE; - - if (sacl) dst->type |= SEC_DESC_SACL_PRESENT; - if (dacl) dst->type |= SEC_DESC_DACL_PRESENT; - - dst->off_owner_sid = 0; - dst->off_grp_sid = 0; - dst->off_sacl = 0; - dst->off_dacl = 0; - - if(owner_sid && ((dst->owner_sid = sid_dup_talloc(ctx,owner_sid)) == NULL)) - goto error_exit; - - if(grp_sid && ((dst->grp_sid = sid_dup_talloc(ctx,grp_sid)) == NULL)) - goto error_exit; - - if(sacl && ((dst->sacl = dup_sec_acl(ctx, sacl)) == NULL)) - goto error_exit; - - if(dacl && ((dst->dacl = dup_sec_acl(ctx, dacl)) == NULL)) - goto error_exit; - - offset = SEC_DESC_HEADER_SIZE; - - /* - * Work out the linearization sizes. - */ - - if (dst->sacl != NULL) { - dst->off_sacl = offset; - offset += dst->sacl->size; - } - - if (dst->dacl != NULL) { - dst->off_dacl = offset; - offset += dst->dacl->size; - } - - if (dst->owner_sid != NULL) { - dst->off_owner_sid = offset; - offset += sid_size(dst->owner_sid); - } - - if (dst->grp_sid != NULL) { - dst->off_grp_sid = offset; - offset += sid_size(dst->grp_sid); - } - - *sd_size = (size_t)offset; - return dst; - -error_exit: - - *sd_size = 0; - return NULL; -} - -/******************************************************************* - Duplicate a SEC_DESC structure. -********************************************************************/ - -SEC_DESC *dup_sec_desc( TALLOC_CTX *ctx, SEC_DESC *src) -{ - size_t dummy; - - if(src == NULL) - return NULL; - - return make_sec_desc( ctx, src->revision, - src->owner_sid, src->grp_sid, src->sacl, - src->dacl, &dummy); -} - -/******************************************************************* - Creates a SEC_DESC structure with typical defaults. -********************************************************************/ - -SEC_DESC *make_standard_sec_desc(TALLOC_CTX *ctx, DOM_SID *owner_sid, DOM_SID *grp_sid, - SEC_ACL *dacl, size_t *sd_size) -{ - return make_sec_desc(ctx, SEC_DESC_REVISION, - owner_sid, grp_sid, NULL, dacl, sd_size); -} - -/******************************************************************* Reads or writes a SEC_DESC structure. If reading and the *ppsd = NULL, allocates the structure. ********************************************************************/ @@ -806,42 +307,6 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth) } /******************************************************************* - Creates a SEC_DESC_BUF structure. -********************************************************************/ - -SEC_DESC_BUF *make_sec_desc_buf(TALLOC_CTX *ctx, size_t len, SEC_DESC *sec_desc) -{ - SEC_DESC_BUF *dst; - - if((dst = (SEC_DESC_BUF *)talloc_zero(ctx, sizeof(SEC_DESC_BUF))) == NULL) - return NULL; - - /* max buffer size (allocated size) */ - dst->max_len = (uint32)len; - dst->len = (uint32)len; - - if(sec_desc && ((dst->sec = dup_sec_desc(ctx, sec_desc)) == NULL)) { - return NULL; - } - - dst->ptr = 0x1; - - return dst; -} - -/******************************************************************* - Duplicates a SEC_DESC_BUF structure. -********************************************************************/ - -SEC_DESC_BUF *dup_sec_desc_buf(TALLOC_CTX *ctx, SEC_DESC_BUF *src) -{ - if(src == NULL) - return NULL; - - return make_sec_desc_buf( ctx, src->len, src->sec); -} - -/******************************************************************* Reads or writes a SEC_DESC_BUF structure. ********************************************************************/ @@ -899,193 +364,3 @@ BOOL sec_io_desc_buf(const char *desc, SEC_DESC_BUF **ppsdb, prs_struct *ps, int return True; } - -/******************************************************************* - Add a new SID with its permissions to SEC_DESC. -********************************************************************/ - -NTSTATUS sec_desc_add_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, uint32 mask, size_t *sd_size) -{ - SEC_DESC *sd = 0; - SEC_ACL *dacl = 0; - SEC_ACE *ace = 0; - NTSTATUS status; - - *sd_size = 0; - - if (!ctx || !psd || !sid || !sd_size) - return NT_STATUS_INVALID_PARAMETER; - - status = sec_ace_add_sid(ctx, &ace, psd[0]->dacl->ace, &psd[0]->dacl->num_aces, sid, mask); - - if (!NT_STATUS_IS_OK(status)) - return status; - - if (!(dacl = make_sec_acl(ctx, psd[0]->dacl->revision, psd[0]->dacl->num_aces, ace))) - return NT_STATUS_UNSUCCESSFUL; - - if (!(sd = make_sec_desc(ctx, psd[0]->revision, psd[0]->owner_sid, - psd[0]->grp_sid, psd[0]->sacl, dacl, sd_size))) - return NT_STATUS_UNSUCCESSFUL; - - *psd = sd; - sd = 0; - return NT_STATUS_OK; -} - -/******************************************************************* - Modify a SID's permissions in a SEC_DESC. -********************************************************************/ - -NTSTATUS sec_desc_mod_sid(SEC_DESC *sd, DOM_SID *sid, uint32 mask) -{ - NTSTATUS status; - - if (!sd || !sid) - return NT_STATUS_INVALID_PARAMETER; - - status = sec_ace_mod_sid(sd->dacl->ace, sd->dacl->num_aces, sid, mask); - - if (!NT_STATUS_IS_OK(status)) - return status; - - return NT_STATUS_OK; -} - -/******************************************************************* - Delete a SID from a SEC_DESC. -********************************************************************/ - -NTSTATUS sec_desc_del_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, size_t *sd_size) -{ - SEC_DESC *sd = 0; - SEC_ACL *dacl = 0; - SEC_ACE *ace = 0; - NTSTATUS status; - - *sd_size = 0; - - if (!ctx || !psd[0] || !sid || !sd_size) - return NT_STATUS_INVALID_PARAMETER; - - status = sec_ace_del_sid(ctx, &ace, psd[0]->dacl->ace, &psd[0]->dacl->num_aces, sid); - - if (!NT_STATUS_IS_OK(status)) - return status; - - if (!(dacl = make_sec_acl(ctx, psd[0]->dacl->revision, psd[0]->dacl->num_aces, ace))) - return NT_STATUS_UNSUCCESSFUL; - - if (!(sd = make_sec_desc(ctx, psd[0]->revision, psd[0]->owner_sid, - psd[0]->grp_sid, psd[0]->sacl, dacl, sd_size))) - return NT_STATUS_UNSUCCESSFUL; - - *psd = sd; - sd = 0; - return NT_STATUS_OK; -} - -/******************************************************************* - Comparison function to sort non-inherited first. -*******************************************************************/ - -static int nt_ace_inherit_comp( SEC_ACE *a1, SEC_ACE *a2) -{ - int a1_inh = a1->flags & SEC_ACE_FLAG_INHERITED_ACE; - int a2_inh = a2->flags & SEC_ACE_FLAG_INHERITED_ACE; - - if (a1_inh == a2_inh) - return 0; - - if (!a1_inh && a2_inh) - return -1; - return 1; -} - -/******************************************************************* - Comparison function to apply the order explained below in a group. -*******************************************************************/ - -static int nt_ace_canon_comp( SEC_ACE *a1, SEC_ACE *a2) -{ - if ((a1->type == SEC_ACE_TYPE_ACCESS_DENIED) && - (a2->type != SEC_ACE_TYPE_ACCESS_DENIED)) - return -1; - - if ((a2->type == SEC_ACE_TYPE_ACCESS_DENIED) && - (a1->type != SEC_ACE_TYPE_ACCESS_DENIED)) - return 1; - - /* Both access denied or access allowed. */ - - /* 1. ACEs that apply to the object itself */ - - if (!(a1->flags & SEC_ACE_FLAG_INHERIT_ONLY) && - (a2->flags & SEC_ACE_FLAG_INHERIT_ONLY)) - return -1; - else if (!(a2->flags & SEC_ACE_FLAG_INHERIT_ONLY) && - (a1->flags & SEC_ACE_FLAG_INHERIT_ONLY)) - return 1; - - /* 2. ACEs that apply to a subobject of the object, such as - * a property set or property. */ - - if (a1->flags & (SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_OBJECT_INHERIT) && - !(a2->flags & (SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_OBJECT_INHERIT))) - return -1; - else if (a2->flags & (SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_OBJECT_INHERIT) && - !(a1->flags & (SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_OBJECT_INHERIT))) - return 1; - - return 0; -} - -/******************************************************************* - Functions to convert a SEC_DESC ACE DACL list into canonical order. - JRA. - ---- from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/security/order_of_aces_in_a_dacl.asp - -The following describes the preferred order: - - To ensure that noninherited ACEs have precedence over inherited ACEs, - place all noninherited ACEs in a group before any inherited ACEs. - This ordering ensures, for example, that a noninherited access-denied ACE - is enforced regardless of any inherited ACE that allows access. - - Within the groups of noninherited ACEs and inherited ACEs, order ACEs according to ACE type, as the following shows: - 1. Access-denied ACEs that apply to the object itself - 2. Access-denied ACEs that apply to a subobject of the object, such as a property set or property - 3. Access-allowed ACEs that apply to the object itself - 4. Access-allowed ACEs that apply to a subobject of the object" - -********************************************************************/ - -void dacl_sort_into_canonical_order(SEC_ACE *srclist, unsigned int num_aces) -{ - unsigned int i; - - if (!srclist || num_aces == 0) - return; - - /* Sort so that non-inherited ACE's come first. */ - qsort( srclist, num_aces, sizeof(srclist[0]), QSORT_CAST nt_ace_inherit_comp); - - /* Find the boundary between non-inherited ACEs. */ - for (i = 0; i < num_aces; i++ ) { - SEC_ACE *curr_ace = &srclist[i]; - - if (curr_ace->flags & SEC_ACE_FLAG_INHERITED_ACE) - break; - } - - /* i now points at entry number of the first inherited ACE. */ - - /* Sort the non-inherited ACEs. */ - if (i) - qsort( srclist, i, sizeof(srclist[0]), QSORT_CAST nt_ace_canon_comp); - - /* Now sort the inherited ACEs. */ - if (num_aces - i) - qsort( &srclist[i], num_aces - i, sizeof(srclist[0]), QSORT_CAST nt_ace_canon_comp); -} diff --git a/source/rpc_parse/parse_spoolss.c b/source/rpc_parse/parse_spoolss.c index 7ca9bccab46..65f16414a0a 100644 --- a/source/rpc_parse/parse_spoolss.c +++ b/source/rpc_parse/parse_spoolss.c @@ -916,12 +916,12 @@ BOOL make_spoolss_q_open_printer_ex(SPOOL_Q_OPEN_PRINTER_EX *q_u, { DEBUG(5,("make_spoolss_q_open_printer_ex\n")); q_u->printername_ptr = (printername!=NULL)?1:0; - init_unistr2(&q_u->printername, printername, strlen(printername)+1); + init_unistr2(&q_u->printername, printername, UNI_STR_TERMINATE); q_u->printer_default.datatype_ptr = 0; /* q_u->printer_default.datatype_ptr = (datatype!=NULL)?1:0; - init_unistr2(&q_u->printer_default.datatype, datatype, strlen(datatype)); + init_unistr2(&q_u->printer_default.datatype, datatype, UNI_FLAGS_NONE); */ q_u->printer_default.devmode_cont.size=0; q_u->printer_default.devmode_cont.devmode_ptr=0; @@ -937,8 +937,8 @@ BOOL make_spoolss_q_open_printer_ex(SPOOL_Q_OPEN_PRINTER_EX *q_u, q_u->user_ctr.user1.major=2; q_u->user_ctr.user1.minor=0; q_u->user_ctr.user1.processor=0; - init_unistr2(&q_u->user_ctr.user1.client_name, clientname, strlen(clientname)+1); - init_unistr2(&q_u->user_ctr.user1.user_name, user_name, strlen(user_name)+1); + init_unistr2(&q_u->user_ctr.user1.client_name, clientname, UNI_STR_TERMINATE); + init_unistr2(&q_u->user_ctr.user1.user_name, user_name, UNI_STR_TERMINATE); return True; } @@ -963,7 +963,7 @@ BOOL make_spoolss_q_addprinterex( ZERO_STRUCTP(q_u); q_u->server_name_ptr = (srv_name!=NULL)?1:0; - init_unistr2(&q_u->server_name, srv_name, strlen(srv_name)); + init_unistr2(&q_u->server_name, srv_name, UNI_FLAGS_NONE); q_u->level = level; @@ -991,8 +991,8 @@ BOOL make_spoolss_q_addprinterex( q_u->user_ctr.user1.major=2; q_u->user_ctr.user1.minor=0; q_u->user_ctr.user1.processor=0; - init_unistr2(&q_u->user_ctr.user1.client_name, clientname, strlen(clientname)+1); - init_unistr2(&q_u->user_ctr.user1.user_name, user_name, strlen(user_name)+1); + init_unistr2(&q_u->user_ctr.user1.client_name, clientname, UNI_STR_TERMINATE); + init_unistr2(&q_u->user_ctr.user1.user_name, user_name, UNI_STR_TERMINATE); q_u->user_ctr.user1.size=q_u->user_ctr.user1.user_name.uni_str_len + q_u->user_ctr.user1.client_name.uni_str_len + 2; @@ -1187,15 +1187,13 @@ BOOL make_spoolss_q_deleteprinterdriver( /* these must be NULL terminated or else NT4 will complain about invalid parameters --jerry */ - init_unistr2(&q_u->server, server, strlen(server)+1); - init_unistr2(&q_u->arch, arch, strlen(arch)+1); - init_unistr2(&q_u->driver, driver, strlen(driver)+1); - + init_unistr2(&q_u->server, server, UNI_STR_TERMINATE); + init_unistr2(&q_u->arch, arch, UNI_STR_TERMINATE); + init_unistr2(&q_u->driver, driver, UNI_STR_TERMINATE); return True; } - /******************************************************************* * make a structure. ********************************************************************/ @@ -1209,7 +1207,7 @@ BOOL make_spoolss_q_getprinterdata(SPOOL_Q_GETPRINTERDATA *q_u, DEBUG(5,("make_spoolss_q_getprinterdata\n")); q_u->handle = *handle; - init_unistr2(&q_u->valuename, valuename, strlen(valuename) + 1); + init_unistr2(&q_u->valuename, valuename, UNI_STR_TERMINATE); q_u->size = size; return True; @@ -1229,8 +1227,8 @@ BOOL make_spoolss_q_getprinterdataex(SPOOL_Q_GETPRINTERDATAEX *q_u, DEBUG(5,("make_spoolss_q_getprinterdataex\n")); q_u->handle = *handle; - init_unistr2(&q_u->valuename, valuename, strlen(valuename) + 1); - init_unistr2(&q_u->keyname, keyname, strlen(keyname) + 1); + init_unistr2(&q_u->valuename, valuename, UNI_STR_TERMINATE); + init_unistr2(&q_u->keyname, keyname, UNI_STR_TERMINATE); q_u->size = size; return True; @@ -5317,7 +5315,7 @@ BOOL smb_io_unibuffer(const char *desc, UNISTR2 *buffer, prs_struct *ps, int dep { if (buffer==NULL) return False; - buffer->undoc=0; + buffer->offset=0; buffer->uni_str_len=buffer->uni_max_len; if(!prs_uint32("buffer_size", ps, depth, &buffer->uni_max_len)) @@ -5374,7 +5372,7 @@ BOOL make_spoolss_q_addprinterdriver(TALLOC_CTX *mem_ctx, DEBUG(5,("make_spoolss_q_addprinterdriver\n")); q_u->server_name_ptr = (srv_name!=NULL)?1:0; - init_unistr2(&q_u->server_name, srv_name, strlen(srv_name)+1); + init_unistr2(&q_u->server_name, srv_name, UNI_STR_TERMINATE); q_u->level = level; @@ -6162,7 +6160,7 @@ BOOL make_spoolss_q_enumprinterdataex(SPOOL_Q_ENUMPRINTERDATAEX *q_u, uint32 size) { memcpy(&q_u->handle, hnd, sizeof(q_u->handle)); - init_unistr2(&q_u->key, key, strlen(key)+1); + init_unistr2(&q_u->key, key, UNI_STR_TERMINATE); q_u->size = size; return True; @@ -6175,7 +6173,7 @@ BOOL make_spoolss_q_setprinterdata(SPOOL_Q_SETPRINTERDATA *q_u, const POLICY_HND { memcpy(&q_u->handle, hnd, sizeof(q_u->handle)); q_u->type = data_type; - init_unistr2(&q_u->value, value, strlen(value)+1); + init_unistr2(&q_u->value, value, UNI_STR_TERMINATE); q_u->max_len = q_u->real_len = data_size; q_u->data = (unsigned char *)data; @@ -6191,8 +6189,8 @@ BOOL make_spoolss_q_setprinterdataex(SPOOL_Q_SETPRINTERDATAEX *q_u, const POLICY { memcpy(&q_u->handle, hnd, sizeof(q_u->handle)); q_u->type = data_type; - init_unistr2(&q_u->value, value, strlen(value)+1); - init_unistr2(&q_u->key, key, strlen(key)+1); + init_unistr2(&q_u->value, value, UNI_STR_TERMINATE); + init_unistr2(&q_u->key, key, UNI_STR_TERMINATE); q_u->max_len = q_u->real_len = data_size; q_u->data = (unsigned char *)data; @@ -6589,7 +6587,7 @@ BOOL make_spoolss_q_replyopenprinter(SPOOL_Q_REPLYOPENPRINTER *q_u, if (q_u == NULL) return False; - init_unistr2(&q_u->string, string, strlen(string)+1); + init_unistr2(&q_u->string, string, UNI_STR_TERMINATE); q_u->printer=printer; q_u->type=type; @@ -7092,7 +7090,7 @@ BOOL make_spoolss_q_enumprinterkey(SPOOL_Q_ENUMPRINTERKEY *q_u, DEBUG(5,("make_spoolss_q_enumprinterkey\n")); memcpy(&q_u->handle, hnd, sizeof(q_u->handle)); - init_unistr2(&q_u->key, key, strlen(key)+1); + init_unistr2(&q_u->key, key, UNI_STR_TERMINATE); q_u->size = size; return True; @@ -7161,7 +7159,7 @@ BOOL make_spoolss_q_deleteprinterkey(SPOOL_Q_DELETEPRINTERKEY *q_u, DEBUG(5,("make_spoolss_q_deleteprinterkey\n")); memcpy(&q_u->handle, hnd, sizeof(q_u->handle)); - init_unistr2(&q_u->keyname, keyname, strlen(keyname)+1); + init_unistr2(&q_u->keyname, keyname, UNI_STR_TERMINATE); return True; } @@ -7382,8 +7380,8 @@ BOOL make_spoolss_q_getprintprocessordirectory(SPOOL_Q_GETPRINTPROCESSORDIRECTOR { DEBUG(5,("make_spoolss_q_getprintprocessordirectory\n")); - init_unistr2(&q_u->name, name, strlen(name)+1); - init_unistr2(&q_u->environment, environment, strlen(environment)+1); + init_unistr2(&q_u->name, name, UNI_STR_TERMINATE); + init_unistr2(&q_u->environment, environment, UNI_STR_TERMINATE); q_u->level = level; @@ -7509,7 +7507,7 @@ BOOL make_spoolss_q_setform(SPOOL_Q_SETFORM *q_u, POLICY_HND *handle, q_u->level = level; q_u->level2 = level; memcpy(&q_u->form, form, sizeof(FORM)); - init_unistr2(&q_u->name, form_name, strlen(form_name) + 1); + init_unistr2(&q_u->name, form_name, UNI_STR_TERMINATE); return True; } @@ -7522,7 +7520,7 @@ BOOL make_spoolss_q_deleteform(SPOOL_Q_DELETEFORM *q_u, POLICY_HND *handle, const char *form) { memcpy(&q_u->handle, handle, sizeof(POLICY_HND)); - init_unistr2(&q_u->name, form, strlen(form) + 1); + init_unistr2(&q_u->name, form, UNI_STR_TERMINATE); return True; } @@ -7536,7 +7534,7 @@ BOOL make_spoolss_q_getform(SPOOL_Q_GETFORM *q_u, POLICY_HND *handle, { memcpy(&q_u->handle, handle, sizeof(POLICY_HND)); q_u->level = level; - init_unistr2(&q_u->formname, formname, strlen(formname) + 1); + init_unistr2(&q_u->formname, formname, UNI_STR_TERMINATE); q_u->buffer=buffer; q_u->offered=offered; @@ -7642,17 +7640,9 @@ BOOL make_spoolss_q_startdocprinter(SPOOL_Q_STARTDOCPRINTER *q_u, ctr->docinfo.doc_info_1.p_outputfile = outputfile ? 1 : 0; ctr->docinfo.doc_info_1.p_datatype = datatype ? 1 : 0; - if (docname) - init_unistr2(&ctr->docinfo.doc_info_1.docname, docname, - strlen(docname) + 1); - - if (outputfile) - init_unistr2(&ctr->docinfo.doc_info_1.outputfile, outputfile, - strlen(outputfile) + 1); - - if (datatype) - init_unistr2(&ctr->docinfo.doc_info_1.datatype, datatype, - strlen(datatype) + 1); + init_unistr2(&ctr->docinfo.doc_info_1.docname, docname, UNI_STR_TERMINATE); + init_unistr2(&ctr->docinfo.doc_info_1.outputfile, outputfile, UNI_STR_TERMINATE); + init_unistr2(&ctr->docinfo.doc_info_1.datatype, datatype, UNI_STR_TERMINATE); break; case 2: @@ -7701,7 +7691,7 @@ BOOL make_spoolss_q_deleteprinterdata(SPOOL_Q_DELETEPRINTERDATA *q_u, POLICY_HND *handle, char *valuename) { memcpy(&q_u->handle, handle, sizeof(POLICY_HND)); - init_unistr2(&q_u->valuename, valuename, strlen(valuename) + 1); + init_unistr2(&q_u->valuename, valuename, UNI_STR_TERMINATE); return True; } @@ -7715,8 +7705,8 @@ BOOL make_spoolss_q_deleteprinterdataex(SPOOL_Q_DELETEPRINTERDATAEX *q_u, char *value) { memcpy(&q_u->handle, handle, sizeof(POLICY_HND)); - init_unistr2(&q_u->valuename, value, strlen(value) + 1); - init_unistr2(&q_u->keyname, key, strlen(key) + 1); + init_unistr2(&q_u->valuename, value, UNI_STR_TERMINATE); + init_unistr2(&q_u->keyname, key, UNI_STR_TERMINATE); return True; } @@ -7736,8 +7726,7 @@ BOOL make_spoolss_q_rffpcnex(SPOOL_Q_RFFPCNEX *q_u, POLICY_HND *handle, q_u->localmachine_ptr = 1; - init_unistr2(&q_u->localmachine, localmachine, - strlen(localmachine) + 1); + init_unistr2(&q_u->localmachine, localmachine, UNI_STR_TERMINATE); q_u->printerlocal = printerlocal; diff --git a/source/rpc_parse/parse_srv.c b/source/rpc_parse/parse_srv.c index bbb5193ddcd..6349fc16325 100644 --- a/source/rpc_parse/parse_srv.c +++ b/source/rpc_parse/parse_srv.c @@ -36,8 +36,7 @@ void init_srv_share_info0_str(SH_INFO_0_STR *sh0, const char *net_name) { DEBUG(5,("init_srv_share_info0_str\n")); - if(net_name) - init_unistr2(&sh0->uni_netname, net_name, strlen(net_name)+1); + init_unistr2(&sh0->uni_netname, net_name, UNI_STR_TERMINATE); } /******************************************************************* @@ -101,10 +100,8 @@ void init_srv_share_info1_str(SH_INFO_1_STR *sh1, const char *net_name, const ch { DEBUG(5,("init_srv_share_info1_str\n")); - if(net_name) - init_unistr2(&sh1->uni_netname, net_name, strlen(net_name)+1); - if(remark) - init_unistr2(&sh1->uni_remark, remark, strlen(remark)+1); + init_unistr2(&sh1->uni_netname, net_name, UNI_STR_TERMINATE); + init_unistr2(&sh1->uni_remark, remark, UNI_STR_TERMINATE); } /******************************************************************* @@ -184,14 +181,10 @@ void init_srv_share_info2_str(SH_INFO_2_STR *sh2, { DEBUG(5,("init_srv_share_info2_str\n")); - if (net_name) - init_unistr2(&sh2->uni_netname, net_name, strlen(net_name)+1); - if (remark) - init_unistr2(&sh2->uni_remark, remark, strlen(remark)+1); - if (path) - init_unistr2(&sh2->uni_path, path, strlen(path)+1); - if (passwd) - init_unistr2(&sh2->uni_passwd, passwd, strlen(passwd)+1); + init_unistr2(&sh2->uni_netname, net_name, UNI_STR_TERMINATE); + init_unistr2(&sh2->uni_remark, remark, UNI_STR_TERMINATE); + init_unistr2(&sh2->uni_path, path, UNI_STR_TERMINATE); + init_unistr2(&sh2->uni_passwd, passwd, UNI_STR_TERMINATE); } /******************************************************************* @@ -296,10 +289,8 @@ void init_srv_share_info501_str(SH_INFO_501_STR *sh501, { DEBUG(5,("init_srv_share_info501_str\n")); - if(net_name) - init_unistr2(&sh501->uni_netname, net_name, strlen(net_name)+1); - if(remark) - init_unistr2(&sh501->uni_remark, remark, strlen(remark)+1); + init_unistr2(&sh501->uni_netname, net_name, UNI_STR_TERMINATE); + init_unistr2(&sh501->uni_remark, remark, UNI_STR_TERMINATE); } /******************************************************************* @@ -446,17 +437,13 @@ void init_srv_share_info502_str(SH_INFO_502_STR *sh502str, { DEBUG(5,("init_srv_share_info502_str\n")); - if(net_name) - init_unistr2(&sh502str->uni_netname, net_name, strlen(net_name)+1); - if(remark) - init_unistr2(&sh502str->uni_remark, remark, strlen(remark)+1); - if(path) - init_unistr2(&sh502str->uni_path, path, strlen(path)+1); - if(passwd) - init_unistr2(&sh502str->uni_passwd, passwd, strlen(passwd)+1); - sh502str->sd = psd; + init_unistr2(&sh502str->uni_netname, net_name, UNI_STR_TERMINATE); + init_unistr2(&sh502str->uni_remark, remark, UNI_STR_TERMINATE); + init_unistr2(&sh502str->uni_path, path, UNI_STR_TERMINATE); + init_unistr2(&sh502str->uni_passwd, passwd, UNI_STR_TERMINATE); + sh502str->sd = psd; sh502str->reserved = 0; - sh502str->sd_size = sd_size; + sh502str->sd_size = sd_size; } /******************************************************************* @@ -551,8 +538,7 @@ void init_srv_share_info1004_str(SH_INFO_1004_STR *sh1004, const char *remark) { DEBUG(5,("init_srv_share_info1004_str\n")); - if(remark) - init_unistr2(&sh1004->uni_remark, remark, strlen(remark)+1); + init_unistr2(&sh1004->uni_remark, remark, UNI_STR_TERMINATE); } /******************************************************************* @@ -659,8 +645,7 @@ void init_srv_share_info1007_str(SH_INFO_1007_STR *sh1007, const char *alternate { DEBUG(5,("init_srv_share_info1007_str\n")); - if(alternate_directory_name) - init_unistr2(&sh1007->uni_AlternateDirectoryName, alternate_directory_name, strlen(alternate_directory_name)+1); + init_unistr2(&sh1007->uni_AlternateDirectoryName, alternate_directory_name, UNI_STR_TERMINATE); } /******************************************************************* @@ -1474,7 +1459,7 @@ void init_srv_q_net_share_add(SRV_Q_NET_SHARE_ADD *q, const char *srvname, const char *path, const char *passwd) { q->ptr_srv_name = 1; - init_unistr2(&q->uni_srv_name, srvname, strlen(srvname) +1); + init_unistr2(&q->uni_srv_name, srvname, UNI_STR_TERMINATE); q->info.switch_value = q->info_level = 2; q->info.ptr_share_ctr = 1; @@ -1525,8 +1510,8 @@ void init_srv_q_net_share_del(SRV_Q_NET_SHARE_DEL *del, const char *srvname, const char *sharename) { del->ptr_srv_name = 1; - init_unistr2(&del->uni_srv_name, srvname, strlen(srvname) +1 ); - init_unistr2(&del->uni_share_name, sharename, strlen(sharename) + 1); + init_unistr2(&del->uni_srv_name, srvname, UNI_STR_TERMINATE); + init_unistr2(&del->uni_share_name, sharename, UNI_STR_TERMINATE); } /******************************************************************* @@ -1589,7 +1574,7 @@ void init_srv_sess_info0_str(SESS_INFO_0_STR *ss0, const char *name) { DEBUG(5,("init_srv_sess_info0_str\n")); - init_unistr2(&ss0->uni_name, name, strlen(name)+1); + init_unistr2(&ss0->uni_name, name, UNI_STR_TERMINATE); } /******************************************************************* @@ -1703,8 +1688,8 @@ void init_srv_sess_info1_str(SESS_INFO_1_STR *ss1, const char *name, const char { DEBUG(5,("init_srv_sess_info1_str\n")); - init_unistr2(&ss1->uni_name, name, strlen(name)+1); - init_unistr2(&ss1->uni_user, user, strlen(user)+1); + init_unistr2(&ss1->uni_name, name, UNI_STR_TERMINATE); + init_unistr2(&ss1->uni_user, user, UNI_STR_TERMINATE); } /******************************************************************* @@ -2075,8 +2060,8 @@ void init_srv_conn_info1_str(CONN_INFO_1_STR *ss1, const char *usr_name, const c { DEBUG(5,("init_srv_conn_info1_str\n")); - init_unistr2(&ss1->uni_usr_name, usr_name, strlen(usr_name)+1); - init_unistr2(&ss1->uni_net_name, net_name, strlen(net_name)+1); + init_unistr2(&ss1->uni_usr_name, usr_name, UNI_STR_TERMINATE); + init_unistr2(&ss1->uni_net_name, net_name, UNI_STR_TERMINATE); } /******************************************************************* @@ -2365,8 +2350,8 @@ void init_srv_file_info3_str(FILE_INFO_3_STR *fi3, const char *user_name, const { DEBUG(5,("init_srv_file_info3_str\n")); - init_unistr2(&fi3->uni_path_name, path_name, strlen(path_name)+1); - init_unistr2(&fi3->uni_user_name, user_name, strlen(user_name)+1); + init_unistr2(&fi3->uni_path_name, path_name, UNI_STR_TERMINATE); + init_unistr2(&fi3->uni_user_name, user_name, UNI_STR_TERMINATE); } /******************************************************************* @@ -2628,7 +2613,7 @@ void init_srv_q_net_file_close(SRV_Q_NET_FILE_CLOSE *q_n, const char *server, uint32 file_id) { q_n->ptr_srv_name = 1; - init_unistr2(&q_n->uni_srv_name, server, strlen(server) + 1); + init_unistr2(&q_n->uni_srv_name, server, UNI_STR_TERMINATE); q_n->file_id = file_id; } @@ -3586,6 +3571,5 @@ BOOL srv_io_r_net_file_set_secdesc(const char *desc, SRV_R_NET_FILE_SET_SECDESC void init_srv_q_net_remote_tod(SRV_Q_NET_REMOTE_TOD *q_u, const char *server) { q_u->ptr_srv_name = 1; - init_unistr2(&q_u->uni_srv_name, server, strlen(server) + 1); + init_unistr2(&q_u->uni_srv_name, server, UNI_STR_TERMINATE); } - diff --git a/source/rpc_server/srv_dfs_nt.c b/source/rpc_server/srv_dfs_nt.c index 3470ad99b45..751cb6e6425 100644 --- a/source/rpc_server/srv_dfs_nt.c +++ b/source/rpc_server/srv_dfs_nt.c @@ -198,7 +198,7 @@ static BOOL init_reply_dfs_info_1(struct junction_map* j, DFS_INFO_1* dfs1, int slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s\\%s", global_myname(), j[i].service_name, j[i].volume_name); DEBUG(5,("init_reply_dfs_info_1: %d) initing entrypath: %s\n",i,str)); - init_unistr2(&dfs1[i].entrypath,str,strlen(str)+1); + init_unistr2(&dfs1[i].entrypath,str,UNI_STR_TERMINATE); } return True; } @@ -212,7 +212,7 @@ static BOOL init_reply_dfs_info_2(struct junction_map* j, DFS_INFO_2* dfs2, int dfs2[i].ptr_entrypath = 1; slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s\\%s", global_myname(), j[i].service_name, j[i].volume_name); - init_unistr2(&dfs2[i].entrypath, str, strlen(str)+1); + init_unistr2(&dfs2[i].entrypath, str, UNI_STR_TERMINATE); dfs2[i].ptr_comment = 0; dfs2[i].state = 1; /* set up state of dfs junction as OK */ dfs2[i].num_storages = j[i].referral_count; @@ -234,9 +234,9 @@ static BOOL init_reply_dfs_info_3(TALLOC_CTX *ctx, struct junction_map* j, DFS_I slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s\\%s", global_myname(), j[i].service_name, j[i].volume_name); - init_unistr2(&dfs3[i].entrypath, str, strlen(str)+1); + init_unistr2(&dfs3[i].entrypath, str, UNI_STR_TERMINATE); dfs3[i].ptr_comment = 1; - init_unistr2(&dfs3[i].comment, "", 1); + init_unistr2(&dfs3[i].comment, "", UNI_STR_TERMINATE); dfs3[i].state = 1; dfs3[i].num_storages = dfs3[i].num_storage_infos = j[i].referral_count; dfs3[i].ptr_storages = 1; @@ -267,8 +267,8 @@ static BOOL init_reply_dfs_info_3(TALLOC_CTX *ctx, struct junction_map* j, DFS_I *p = '\0'; DEBUG(5,("storage %d: %s.%s\n",ii,path,p+1)); stor->state = 2; /* set all storages as ONLINE */ - init_unistr2(&stor->servername, path, strlen(path)+1); - init_unistr2(&stor->sharename, p+1, strlen(p+1)+1); + init_unistr2(&stor->servername, path, UNI_STR_TERMINATE); + init_unistr2(&stor->sharename, p+1, UNI_STR_TERMINATE); stor->ptr_servername = stor->ptr_sharename = 1; } } diff --git a/source/rpc_server/srv_lsa.c b/source/rpc_server/srv_lsa.c index 138fb1d7ef9..5d6c1551c91 100644 --- a/source/rpc_server/srv_lsa.c +++ b/source/rpc_server/srv_lsa.c @@ -443,7 +443,7 @@ static BOOL api_lsa_enum_privsaccount(pipes_struct *p) return False; } - r_u.status = _lsa_enum_privsaccount(p, &q_u, &r_u); + r_u.status = _lsa_enum_privsaccount(p, rdata, &q_u, &r_u); /* store the response in the SMB stream */ if(!lsa_io_r_enum_privsaccount("", &r_u, rdata, 0)) { diff --git a/source/rpc_server/srv_lsa_ds_nt.c b/source/rpc_server/srv_lsa_ds_nt.c index 37540a9668c..97e9dc361d9 100644 --- a/source/rpc_server/srv_lsa_ds_nt.c +++ b/source/rpc_server/srv_lsa_ds_nt.c @@ -77,12 +77,12 @@ static NTSTATUS fill_dsrole_dominfo_basic(TALLOC_CTX *ctx, DSROLE_PRIMARY_DOMAIN basic->netbios_ptr = 1; netbios_domain = get_global_sam_name(); - init_unistr2( &basic->netbios_domain, netbios_domain, strlen(netbios_domain) ); + init_unistr2( &basic->netbios_domain, netbios_domain, UNI_FLAGS_NONE); basic->dnsname_ptr = 1; - init_unistr2( &basic->dns_domain, dnsdomain, strlen(dnsdomain) ); + init_unistr2( &basic->dns_domain, dnsdomain, UNI_FLAGS_NONE); basic->forestname_ptr = 1; - init_unistr2( &basic->forest_domain, dnsdomain, strlen(dnsdomain) ); + init_unistr2( &basic->forest_domain, dnsdomain, UNI_FLAGS_NONE); /* fill in some additional fields if we are a member of an AD domain */ diff --git a/source/rpc_server/srv_lsa_nt.c b/source/rpc_server/srv_lsa_nt.c index 330dd727efd..0a8ad404cb3 100644 --- a/source/rpc_server/srv_lsa_nt.c +++ b/source/rpc_server/srv_lsa_nt.c @@ -61,7 +61,12 @@ Init dom_query static void init_dom_query(DOM_QUERY *d_q, const char *dom_name, DOM_SID *dom_sid) { - int domlen = (dom_name != NULL) ? strlen(dom_name) : 0; + d_q->buffer_dom_name = (dom_name != NULL) ? 1 : 0; /* domain buffer pointer */ + d_q->buffer_dom_sid = (dom_sid != NULL) ? 1 : 0; /* domain sid pointer */ + + /* this string is supposed to be non-null terminated. */ + /* But the maxlen in this UNISTR2 must include the terminating null. */ + init_unistr2(&d_q->uni_domain_name, dom_name, UNI_MAXLEN_TERMINATE); /* * I'm not sure why this really odd combination of length @@ -71,14 +76,15 @@ static void init_dom_query(DOM_QUERY *d_q, const char *dom_name, DOM_SID *dom_si * a domain with both odd and even length names... JRA. */ - d_q->uni_dom_str_len = domlen ? ((domlen + 1) * 2) : 0; - d_q->uni_dom_max_len = domlen * 2; - d_q->buffer_dom_name = domlen != 0 ? 1 : 0; /* domain buffer pointer */ - d_q->buffer_dom_sid = dom_sid != NULL ? 1 : 0; /* domain sid pointer */ + /* + * IMPORTANT NOTE !!!! + * The two fields below probably are reversed in meaning, ie. + * the first field is probably the str_len, the second the max + * len. Both are measured in bytes anyway. + */ - /* this string is supposed to be character short */ - init_unistr2(&d_q->uni_domain_name, dom_name, domlen); - d_q->uni_domain_name.uni_max_len++; + d_q->uni_dom_str_len = d_q->uni_domain_name.uni_max_len * 2; + d_q->uni_dom_max_len = d_q->uni_domain_name.uni_str_len * 2; if (dom_sid != NULL) init_dom_sid2(&d_q->dom_sid, dom_sid); @@ -91,7 +97,6 @@ static void init_dom_query(DOM_QUERY *d_q, const char *dom_name, DOM_SID *dom_si static int init_dom_ref(DOM_R_REF *ref, char *dom_name, DOM_SID *dom_sid) { int num = 0; - int len; if (dom_name != NULL) { for (num = 0; num < ref->num_ref_doms_1; num++) { @@ -114,14 +119,11 @@ static int init_dom_ref(DOM_R_REF *ref, char *dom_name, DOM_SID *dom_sid) ref->max_entries = MAX_REF_DOMAINS; ref->num_ref_doms_2 = num+1; - len = (dom_name != NULL) ? strlen(dom_name) : 0; - if(dom_name != NULL && len == 0) - len = 1; - - init_uni_hdr(&ref->hdr_ref_dom[num].hdr_dom_name, len); ref->hdr_ref_dom[num].ptr_dom_sid = dom_sid != NULL ? 1 : 0; - init_unistr2(&ref->ref_dom[num].uni_dom_name, dom_name, len); + init_unistr2(&ref->ref_dom[num].uni_dom_name, dom_name, UNI_FLAGS_NONE); + init_uni_hdr(&ref->hdr_ref_dom[num].hdr_dom_name, &ref->ref_dom[num].uni_dom_name); + init_dom_sid2(&ref->ref_dom[num].ref_dom, dom_sid ); return num; @@ -334,7 +336,7 @@ static NTSTATUS lsa_get_generic_sd(TALLOC_CTX *mem_ctx, SEC_DESC **sd, size_t *s if((psa = make_sec_acl(mem_ctx, NT4_ACL_REVISION, 3, ace)) == NULL) return NT_STATUS_NO_MEMORY; - if((*sd = make_sec_desc(mem_ctx, SEC_DESC_REVISION, &adm_sid, NULL, NULL, psa, sd_size)) == NULL) + if((*sd = make_sec_desc(mem_ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, &adm_sid, NULL, NULL, psa, sd_size)) == NULL) return NT_STATUS_NO_MEMORY; return NT_STATUS_OK; @@ -349,25 +351,22 @@ static void init_dns_dom_info(LSA_DNS_DOM_INFO *r_l, const char *nb_name, GUID *dom_guid, DOM_SID *dom_sid) { if (nb_name && *nb_name) { - init_uni_hdr(&r_l->hdr_nb_dom_name, strlen(nb_name)); - init_unistr2(&r_l->uni_nb_dom_name, nb_name, - strlen(nb_name)); + init_unistr2(&r_l->uni_nb_dom_name, nb_name, UNI_FLAGS_NONE); + init_uni_hdr(&r_l->hdr_nb_dom_name, &r_l->uni_nb_dom_name); r_l->hdr_nb_dom_name.uni_max_len += 2; r_l->uni_nb_dom_name.uni_max_len += 1; } if (dns_name && *dns_name) { - init_uni_hdr(&r_l->hdr_dns_dom_name, strlen(dns_name)); - init_unistr2(&r_l->uni_dns_dom_name, dns_name, - strlen(dns_name)); + init_unistr2(&r_l->uni_dns_dom_name, dns_name, UNI_FLAGS_NONE); + init_uni_hdr(&r_l->hdr_dns_dom_name, &r_l->uni_dns_dom_name); r_l->hdr_dns_dom_name.uni_max_len += 2; r_l->uni_dns_dom_name.uni_max_len += 1; } if (forest_name && *forest_name) { - init_uni_hdr(&r_l->hdr_forest_name, strlen(forest_name)); - init_unistr2(&r_l->uni_forest_name, forest_name, - strlen(forest_name)); + init_unistr2(&r_l->uni_forest_name, forest_name, UNI_FLAGS_NONE); + init_uni_hdr(&r_l->hdr_forest_name, &r_l->uni_forest_name); r_l->hdr_forest_name.uni_max_len += 2; r_l->uni_forest_name.uni_max_len += 1; } @@ -774,13 +773,13 @@ NTSTATUS _lsa_enum_privs(pipes_struct *p, LSA_Q_ENUM_PRIVS *q_u, LSA_R_ENUM_PRIV for (i = 0; i < PRIV_ALL_INDEX; i++, entry++) { if( i<enum_context) { - init_uni_hdr(&entry->hdr_name, 0); - init_unistr2(&entry->name, NULL, 0 ); + init_unistr2(&entry->name, NULL, UNI_FLAGS_NONE); + init_uni_hdr(&entry->hdr_name, &entry->name); entry->luid_low = 0; entry->luid_high = 0; } else { - init_uni_hdr(&entry->hdr_name, strlen(privs[i+1].priv)); - init_unistr2(&entry->name, privs[i+1].priv, strlen(privs[i+1].priv) ); + init_unistr2(&entry->name, privs[i+1].priv, UNI_FLAGS_NONE); + init_uni_hdr(&entry->hdr_name, &entry->name); entry->luid_low = privs[i+1].se_priv; entry->luid_high = 0; } @@ -822,8 +821,8 @@ NTSTATUS _lsa_priv_get_dispname(pipes_struct *p, LSA_Q_PRIV_GET_DISPNAME *q_u, L if (privs[i].se_priv!=SE_PRIV_ALL) { DEBUG(10,(": %s\n", privs[i].description)); - init_uni_hdr(&r_u->hdr_desc, strlen(privs[i].description)); - init_unistr2(&r_u->desc, privs[i].description, strlen(privs[i].description) ); + init_unistr2(&r_u->desc, privs[i].description, UNI_FLAGS_NONE); + init_uni_hdr(&r_u->hdr_desc, &r_u->desc); r_u->ptr_info=0xdeadbeef; r_u->lang_id=q_u->lang_id; @@ -890,7 +889,6 @@ NTSTATUS _lsa_enum_accounts(pipes_struct *p, LSA_Q_ENUM_ACCOUNTS *q_u, LSA_R_ENU NTSTATUS _lsa_unk_get_connuser(pipes_struct *p, LSA_Q_UNK_GET_CONNUSER *q_u, LSA_R_UNK_GET_CONNUSER *r_u) { fstring username, domname; - int ulen, dlen; user_struct *vuser = get_valid_user_struct(p->vuid); if (vuser == NULL) @@ -899,18 +897,15 @@ NTSTATUS _lsa_unk_get_connuser(pipes_struct *p, LSA_Q_UNK_GET_CONNUSER *q_u, LSA fstrcpy(username, vuser->user.smb_name); fstrcpy(domname, vuser->user.domain); - ulen = strlen(username) + 1; - dlen = strlen(domname) + 1; - - init_uni_hdr(&r_u->hdr_user_name, ulen); r_u->ptr_user_name = 1; - init_unistr2(&r_u->uni2_user_name, username, ulen); + init_unistr2(&r_u->uni2_user_name, username, UNI_STR_TERMINATE); + init_uni_hdr(&r_u->hdr_user_name, &r_u->uni2_user_name); r_u->unk1 = 1; - init_uni_hdr(&r_u->hdr_dom_name, dlen); r_u->ptr_dom_name = 1; - init_unistr2(&r_u->uni2_dom_name, domname, dlen); + init_unistr2(&r_u->uni2_dom_name, domname, UNI_STR_TERMINATE); + init_uni_hdr(&r_u->hdr_dom_name, &r_u->uni2_dom_name); r_u->status = NT_STATUS_OK; @@ -960,7 +955,7 @@ NTSTATUS _lsa_open_account(pipes_struct *p, LSA_Q_OPENACCOUNT *q_u, LSA_R_OPENAC For a given SID, enumerate all the privilege this account has. ***************************************************************************/ -NTSTATUS _lsa_enum_privsaccount(pipes_struct *p, LSA_Q_ENUMPRIVSACCOUNT *q_u, LSA_R_ENUMPRIVSACCOUNT *r_u) +NTSTATUS _lsa_enum_privsaccount(pipes_struct *p, prs_struct *ps, LSA_Q_ENUMPRIVSACCOUNT *q_u, LSA_R_ENUMPRIVSACCOUNT *r_u) { struct lsa_info *info=NULL; GROUP_MAP map; @@ -976,29 +971,29 @@ NTSTATUS _lsa_enum_privsaccount(pipes_struct *p, LSA_Q_ENUMPRIVSACCOUNT *q_u, LS return NT_STATUS_NO_SUCH_GROUP; #if 0 /* privileges currently not implemented! */ - DEBUG(10,("_lsa_enum_privsaccount: %d privileges\n", map.priv_set.count)); - if (map.priv_set.count!=0) { + DEBUG(10,("_lsa_enum_privsaccount: %d privileges\n", map.priv_set->count)); + if (map.priv_set->count!=0) { - set=(LUID_ATTR *)talloc(p->mem_ctx, map.priv_set.count*sizeof(LUID_ATTR)); + set=(LUID_ATTR *)talloc(map.priv_set->mem_ctx, map.priv_set.count*sizeof(LUID_ATTR)); if (set == NULL) { - free_privilege(&map.priv_set); + destroy_privilege(&map.priv_set); return NT_STATUS_NO_MEMORY; } - for (i=0; i<map.priv_set.count; i++) { - set[i].luid.low=map.priv_set.set[i].luid.low; - set[i].luid.high=map.priv_set.set[i].luid.high; - set[i].attr=map.priv_set.set[i].attr; + for (i = 0; i < map.priv_set.count; i++) { + set[i].luid.low = map.priv_set->set[i].luid.low; + set[i].luid.high = map.priv_set->set[i].luid.high; + set[i].attr = map.priv_set->set[i].attr; DEBUG(10,("_lsa_enum_privsaccount: priv %d: %d:%d:%d\n", i, set[i].luid.high, set[i].luid.low, set[i].attr)); } } - init_lsa_r_enum_privsaccount(r_u, set, map.priv_set.count, 0); - free_privilege(&map.priv_set); + init_lsa_r_enum_privsaccount(ps->mem_ctx, r_u, set, map.priv_set->count, 0); + destroy_privilege(&map.priv_set); #endif - init_lsa_r_enum_privsaccount(r_u, set, 0, 0); + init_lsa_r_enum_privsaccount(ps->mem_ctx, r_u, set, 0, 0); return r_u->status; } @@ -1064,11 +1059,11 @@ NTSTATUS _lsa_setsystemaccount(pipes_struct *p, LSA_Q_SETSYSTEMACCOUNT *q_u, LSA NTSTATUS _lsa_addprivs(pipes_struct *p, LSA_Q_ADDPRIVS *q_u, LSA_R_ADDPRIVS *r_u) { #if 0 - struct lsa_info *info=NULL; + struct lsa_info *info = NULL; GROUP_MAP map; - int i=0; - LUID_ATTR *luid_attr=NULL; - PRIVILEGE_SET *set=NULL; + int i = 0; + LUID_ATTR *luid_attr = NULL; + PRIVILEGE_SET *set = NULL; #endif r_u->status = NT_STATUS_OK; @@ -1081,24 +1076,24 @@ NTSTATUS _lsa_addprivs(pipes_struct *p, LSA_Q_ADDPRIVS *q_u, LSA_R_ADDPRIVS *r_u if (!pdb_getgrsid(&map, info->sid)) return NT_STATUS_NO_SUCH_GROUP; - set=&q_u->set; + set = &q_u->set; - for (i=0; i<set->count; i++) { - luid_attr=&set->set[i]; + for (i = 0; i < set->count; i++) { + luid_attr = &set->set[i]; /* check if the privilege is already there */ - if (check_priv_in_privilege(&map.priv_set, *luid_attr)){ - free_privilege(&map.priv_set); + if (check_priv_in_privilege(map.priv_set, *luid_attr)){ + destroy_privilege(&map.priv_set); return NT_STATUS_NO_SUCH_PRIVILEGE; } - add_privilege(&map.priv_set, *luid_attr); + add_privilege(map.priv_set, *luid_attr); } if(!pdb_update_group_mapping_entry(&map)) return NT_STATUS_NO_SUCH_GROUP; - free_privilege(&map.priv_set); + destroy_privilege(&map.priv_set); #endif return r_u->status; @@ -1111,11 +1106,11 @@ NTSTATUS _lsa_addprivs(pipes_struct *p, LSA_Q_ADDPRIVS *q_u, LSA_R_ADDPRIVS *r_u NTSTATUS _lsa_removeprivs(pipes_struct *p, LSA_Q_REMOVEPRIVS *q_u, LSA_R_REMOVEPRIVS *r_u) { #if 0 - struct lsa_info *info=NULL; + struct lsa_info *info = NULL; GROUP_MAP map; int i=0; - LUID_ATTR *luid_attr=NULL; - PRIVILEGE_SET *set=NULL; + LUID_ATTR *luid_attr = NULL; + PRIVILEGE_SET *set = NULL; #endif r_u->status = NT_STATUS_OK; @@ -1128,37 +1123,37 @@ NTSTATUS _lsa_removeprivs(pipes_struct *p, LSA_Q_REMOVEPRIVS *q_u, LSA_R_REMOVEP if (!pdb_getgrsid(&map, info->sid)) return NT_STATUS_NO_SUCH_GROUP; - if (q_u->allrights!=0) { + if (q_u->allrights != 0) { /* log it and return, until I see one myself don't do anything */ DEBUG(5,("_lsa_removeprivs: trying to remove all privileges ?\n")); return NT_STATUS_OK; } - if (q_u->ptr==0) { + if (q_u->ptr == 0) { /* log it and return, until I see one myself don't do anything */ DEBUG(5,("_lsa_removeprivs: no privileges to remove ?\n")); return NT_STATUS_OK; } - set=&q_u->set; + set = &q_u->set; - for (i=0; i<set->count; i++) { - luid_attr=&set->set[i]; + for (i = 0; i < set->count; i++) { + luid_attr = &set->set[i]; /* if we don't have the privilege, we're trying to remove, give up */ /* what else can we do ??? JFM. */ - if (!check_priv_in_privilege(&map.priv_set, *luid_attr)){ - free_privilege(&map.priv_set); + if (!check_priv_in_privilege(map.priv_set, *luid_attr)){ + destroy_privilege(&map.priv_set); return NT_STATUS_NO_SUCH_PRIVILEGE; } - remove_privilege(&map.priv_set, *luid_attr); + remove_privilege(map.priv_set, *luid_attr); } if(!pdb_update_group_mapping_entry(&map)) return NT_STATUS_NO_SUCH_GROUP; - free_privilege(&map.priv_set); + destroy_privilege(&map.priv_set); #endif return r_u->status; } diff --git a/source/rpc_server/srv_pipe.c b/source/rpc_server/srv_pipe.c index d1fb587d748..96261c665f7 100644 --- a/source/rpc_server/srv_pipe.c +++ b/source/rpc_server/srv_pipe.c @@ -254,18 +254,19 @@ BOOL create_next_pdu(pipes_struct *p) } if (p->netsec_auth_validated) { + int auth_type, auth_level; char *data; RPC_HDR_AUTH auth_info; - static const uchar netsec_sig[8] = NETSEC_SIGNATURE; - static const uchar nullbytes[8] = { 0,0,0,0,0,0,0,0 }; RPC_AUTH_NETSEC_CHK verf; prs_struct rverf; prs_struct rauth; data = prs_data_p(&outgoing_pdu) + data_pos; + /* Check it's the type of reply we were expecting to decode */ - init_rpc_hdr_auth(&auth_info, NETSEC_AUTH_TYPE, RPC_PIPE_AUTH_SEAL_LEVEL, + get_auth_type_level(p->netsec_auth.auth_flags, &auth_type, &auth_level); + init_rpc_hdr_auth(&auth_info, auth_type, auth_level, RPC_HDR_AUTH_LEN, 1); if(!smb_io_rpc_hdr_auth("hdr_auth", &auth_info, &outgoing_pdu, 0)) { @@ -277,10 +278,8 @@ BOOL create_next_pdu(pipes_struct *p) prs_init(&rverf, 0, p->mem_ctx, MARSHALL); prs_init(&rauth, 0, p->mem_ctx, MARSHALL); - init_rpc_auth_netsec_chk(&verf, netsec_sig, nullbytes, nullbytes, nullbytes); - netsec_encode(&p->netsec_auth, - AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN|AUTH_PIPE_SEAL, + p->netsec_auth.auth_flags, SENDER_IS_ACCEPTOR, &verf, data, data_len); @@ -1337,10 +1336,19 @@ BOOL api_pipe_netsec_process(pipes_struct *p, prs_struct *rpc_in) return False; } - if ((auth_info.auth_type != NETSEC_AUTH_TYPE) || - (auth_info.auth_level != RPC_PIPE_AUTH_SEAL_LEVEL)) { - DEBUG(0,("Invalid auth info %d or level %d on schannel\n", - auth_info.auth_type, auth_info.auth_level)); + if (auth_info.auth_type != NETSEC_AUTH_TYPE) { + DEBUG(0,("Invalid auth info %d on schannel\n", + auth_info.auth_type)); + return False; + } + + if (auth_info.auth_level == RPC_PIPE_AUTH_SEAL_LEVEL) { + p->netsec_auth.auth_flags = AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN|AUTH_PIPE_SEAL; + } else if (auth_info.auth_level == RPC_PIPE_AUTH_SIGN_LEVEL) { + p->netsec_auth.auth_flags = AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN; + } else { + DEBUG(0,("Invalid auth level %d on schannel\n", + auth_info.auth_level)); return False; } @@ -1350,7 +1358,7 @@ BOOL api_pipe_netsec_process(pipes_struct *p, prs_struct *rpc_in) } if (!netsec_decode(&p->netsec_auth, - AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN|AUTH_PIPE_SEAL, + p->netsec_auth.auth_flags, SENDER_IS_INITIATOR, &netsec_chk, prs_data_p(rpc_in)+old_offset, data_len)) { diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c index 261d641ab10..71e5bc7d70b 100644 --- a/source/rpc_server/srv_samr_nt.c +++ b/source/rpc_server/srv_samr_nt.c @@ -467,7 +467,7 @@ static NTSTATUS samr_make_dom_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL) return NT_STATUS_NO_MEMORY; - if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL) + if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL) return NT_STATUS_NO_MEMORY; return NT_STATUS_OK; @@ -510,7 +510,7 @@ static NTSTATUS samr_make_usr_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 4, ace)) == NULL) return NT_STATUS_NO_MEMORY; - if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL) + if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL) return NT_STATUS_NO_MEMORY; return NT_STATUS_OK; @@ -549,7 +549,7 @@ static NTSTATUS samr_make_grp_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL) return NT_STATUS_NO_MEMORY; - if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL) + if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL) return NT_STATUS_NO_MEMORY; return NT_STATUS_OK; @@ -588,7 +588,7 @@ static NTSTATUS samr_make_ali_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL) return NT_STATUS_NO_MEMORY; - if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL) + if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL) return NT_STATUS_NO_MEMORY; return NT_STATUS_OK; @@ -719,7 +719,7 @@ static NTSTATUS make_user_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UN for (i = 0; i < num_entries; i++) { pwd = &disp_user_info[i+start_idx]; temp_name = pdb_get_username(pwd); - init_unistr2(&uni_temp_name, temp_name, strlen(temp_name)+1); + init_unistr2(&uni_temp_name, temp_name, UNI_STR_TERMINATE); user_sid = pdb_get_user_sid(pwd); if (!sid_peek_check_rid(domain_sid, user_sid, &user_rid)) { @@ -731,7 +731,7 @@ static NTSTATUS make_user_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UN return NT_STATUS_UNSUCCESSFUL; } - init_sam_entry(&sam[i], uni_temp_name.uni_str_len, user_rid); + init_sam_entry(&sam[i], &uni_temp_name, user_rid); copy_unistr2(&uni_name[i], &uni_temp_name); } @@ -865,10 +865,8 @@ static void make_group_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UNIST /* * JRA. I think this should include the null. TNG does not. */ - int len = strlen(grp[i].name)+1; - - init_sam_entry(&sam[i], len, grp[i].rid); - init_unistr2(&uni_name[i], grp[i].name, len); + init_unistr2(&uni_name[i], grp[i].name, UNI_STR_TERMINATE); + init_sam_entry(&sam[i], &uni_name[i], grp[i].rid); } *sam_pp = sam; @@ -1580,10 +1578,9 @@ static BOOL make_samr_lookup_rids(TALLOC_CTX *ctx, uint32 num_names, fstring nam } for (i = 0; i < num_names; i++) { - int len = names[i] != NULL ? strlen(names[i]) : 0; - DEBUG(10, ("names[%d]:%s\n", i, names[i])); - init_uni_hdr(&hdr_name[i], len); - init_unistr2(&uni_name[i], names[i], len); + DEBUG(10, ("names[%d]:%s\n", i, names[i] ? names[i] : "")); + init_unistr2(&uni_name[i], names[i], UNI_FLAGS_NONE); + init_uni_hdr(&hdr_name[i], &uni_name[i]); } *pp_uni_name = uni_name; @@ -2570,10 +2567,8 @@ static BOOL make_enum_domains(TALLOC_CTX *ctx, SAM_ENTRY **pp_sam, return False; for (i = 0; i < num_sam_entries; i++) { - int len = doms[i] != NULL ? strlen(doms[i]) : 0; - - init_sam_entry(&sam[i], len, 0); - init_unistr2(&uni_name[i], doms[i], len); + init_unistr2(&uni_name[i], doms[i], UNI_FLAGS_NONE); + init_sam_entry(&sam[i], &uni_name[i], 0); } *pp_sam = sam; diff --git a/source/rpc_server/srv_samr_util.c b/source/rpc_server/srv_samr_util.c index b81c4418114..db6649073e9 100644 --- a/source/rpc_server/srv_samr_util.c +++ b/source/rpc_server/srv_samr_util.c @@ -189,7 +189,7 @@ void copy_id21_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_21 *from) pdb_set_acct_ctrl(to, from->acb_info, PDB_CHANGED); } - DEBUG(10,("INFO_21 UNKOWN_3: %08X -> %08X\n",pdb_get_unknown_3(to),from->unknown_3)); + DEBUG(10,("INFO_21 UNKNOWN_3: %08X -> %08X\n",pdb_get_unknown_3(to),from->unknown_3)); if (from->unknown_3 != pdb_get_unknown_3(to)) { pdb_set_unknown_3(to, from->unknown_3, PDB_CHANGED); } @@ -208,12 +208,17 @@ void copy_id21_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_21 *from) /* Fix me: only update if it changes --metze */ pdb_set_hours(to, from->logon_hrs.hours, PDB_CHANGED); - DEBUG(10,("INFO_21 UNKOWN_5: %08X -> %08X\n",pdb_get_unknown_5(to),from->unknown_5)); - if (from->unknown_5 != pdb_get_unknown_5(to)) { - pdb_set_unknown_5(to, from->unknown_5, PDB_CHANGED); + DEBUG(10,("INFO_21 BAD_PASSWORD_COUNT: %08X -> %08X\n",pdb_get_bad_password_count(to),from->bad_password_count)); + if (from->bad_password_count != pdb_get_bad_password_count(to)) { + pdb_set_bad_password_count(to, from->bad_password_count, PDB_CHANGED); } - DEBUG(10,("INFO_21 UNKOWN_6: %08X -> %08X\n",pdb_get_unknown_6(to),from->unknown_6)); + DEBUG(10,("INFO_21 LOGON_COUNT: %08X -> %08X\n",pdb_get_logon_count(to),from->logon_count)); + if (from->logon_count != pdb_get_logon_count(to)) { + pdb_set_logon_count(to, from->logon_count, PDB_CHANGED); + } + + DEBUG(10,("INFO_21 UNKNOWN_6: %08X -> %08X\n",pdb_get_unknown_6(to),from->unknown_6)); if (from->unknown_6 != pdb_get_unknown_6(to)) { pdb_set_unknown_6(to, from->unknown_6, PDB_CHANGED); } @@ -413,9 +418,14 @@ void copy_id23_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_23 *from) /* Fix me: only update if it changes --metze */ pdb_set_hours(to, from->logon_hrs.hours, PDB_CHANGED); - DEBUG(10,("INFO_23 UNKOWN_5: %08X -> %08X\n",pdb_get_unknown_5(to),from->unknown_5)); - if (from->unknown_5 != pdb_get_unknown_5(to)) { - pdb_set_unknown_5(to, from->unknown_5, PDB_CHANGED); + DEBUG(10,("INFO_23 BAD_PASSWORD_COUNT: %08X -> %08X\n",pdb_get_bad_password_count(to),from->bad_password_count)); + if (from->bad_password_count != pdb_get_bad_password_count(to)) { + pdb_set_bad_password_count(to, from->bad_password_count, PDB_CHANGED); + } + + DEBUG(10,("INFO_23 LOGON_COUNT: %08X -> %08X\n",pdb_get_logon_count(to),from->logon_count)); + if (from->logon_count != pdb_get_logon_count(to)) { + pdb_set_logon_count(to, from->logon_count, PDB_CHANGED); } DEBUG(10,("INFO_23 UNKOWN_6: %08X -> %08X\n",pdb_get_unknown_6(to),from->unknown_6)); diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index 7159527a7d8..f2fb02176b5 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -690,7 +690,7 @@ static void notify_string(struct spoolss_notify_msg *msg, /* The length of the message includes the trailing \0 */ - init_unistr2(&unistr, msg->notify.data, msg->len); + init_unistr2(&unistr, msg->notify.data, UNI_STR_TERMINATE); data->notify_data.data.length = msg->len * 2; data->notify_data.data.string = (uint16 *)talloc(mem_ctx, msg->len * 2); @@ -1803,7 +1803,7 @@ Can't find printer handle we created for printer %s\n", name )); && (RA_WIN2K == get_remote_arch()) ) { DEBUG(10,("_spoolss_open_printer_ex: Enabling LAN/WAN hack for Win2k clients.\n")); - usleep( 500000 ); + sys_usleep( 500000 ); } return WERR_OK; @@ -6121,7 +6121,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level, */ if (!strequal(printer->info_2->comment, old_printer->info_2->comment)) { - init_unistr2( &buffer, printer->info_2->comment, strlen(printer->info_2->comment)+1 ); + init_unistr2( &buffer, printer->info_2->comment, UNI_STR_TERMINATE); set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "description", REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 ); @@ -6129,7 +6129,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level, } if (!strequal(printer->info_2->sharename, old_printer->info_2->sharename)) { - init_unistr2( &buffer, printer->info_2->sharename, strlen(printer->info_2->sharename)+1 ); + init_unistr2( &buffer, printer->info_2->sharename, UNI_STR_TERMINATE); set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "printerName", REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 ); set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "shareName", @@ -6139,7 +6139,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level, } if (!strequal(printer->info_2->portname, old_printer->info_2->portname)) { - init_unistr2( &buffer, printer->info_2->portname, strlen(printer->info_2->portname)+1 ); + init_unistr2( &buffer, printer->info_2->portname, UNI_STR_TERMINATE); set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "portName", REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 ); @@ -6147,7 +6147,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level, } if (!strequal(printer->info_2->location, old_printer->info_2->location)) { - init_unistr2( &buffer, printer->info_2->location, strlen(printer->info_2->location)+1 ); + init_unistr2( &buffer, printer->info_2->location, UNI_STR_TERMINATE); set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "location", REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 ); @@ -6157,7 +6157,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level, /* here we need to update some more DsSpooler keys */ /* uNCName, serverName, shortServerName */ - init_unistr2( &buffer, global_myname(), strlen(global_myname())+1 ); + init_unistr2( &buffer, global_myname(), UNI_STR_TERMINATE); set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "serverName", REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 ); set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "shortServerName", @@ -6165,7 +6165,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level, slprintf( asc_buffer, sizeof(asc_buffer)-1, "\\\\%s\\%s", global_myname(), printer->info_2->sharename ); - init_unistr2( &buffer, asc_buffer, strlen(asc_buffer)+1 ); + init_unistr2( &buffer, asc_buffer, UNI_STR_TERMINATE); set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "uNCName", REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 ); diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c index ea66a7d38b4..4d1cf9bddcb 100644 --- a/source/rpc_server/srv_srvsvc_nt.c +++ b/source/rpc_server/srv_srvsvc_nt.c @@ -184,7 +184,7 @@ static SEC_DESC *get_share_security_default( TALLOC_CTX *ctx, int snum, size_t * init_sec_ace(&ace, &global_sid_World, SEC_ACE_TYPE_ACCESS_ALLOWED, sa, 0); if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 1, &ace)) != NULL) { - psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, psize); + psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, psize); } if (!psd) { diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c index 722d66621a6..34c6fc35abd 100644 --- a/source/rpcclient/cmd_samr.c +++ b/source/rpcclient/cmd_samr.c @@ -85,7 +85,8 @@ static void display_sam_user_info_21(SAM_USER_INFO_21 *usr) printf("\tunknown_3:\t0x%08x\n", usr->unknown_3); /* 0x00ff ffff */ printf("\tlogon_divs:\t%d\n", usr->logon_divs); /* 0x0000 00a8 which is 168 which is num hrs in a week */ - printf("\tunknown_5:\t0x%08x\n", usr->unknown_5); /* 0x0002 0000 */ + printf("\tbad_password_count:\t0x%08x\n", usr->bad_password_count); + printf("\tlogon_count:\t0x%08x\n", usr->logon_count); printf("\tpadding1[0..7]...\n"); diff --git a/source/rpcclient/cmd_spoolss.c b/source/rpcclient/cmd_spoolss.c index 61e100c03bb..05bfb2a0dcc 100644 --- a/source/rpcclient/cmd_spoolss.c +++ b/source/rpcclient/cmd_spoolss.c @@ -1568,7 +1568,7 @@ static WERROR cmd_spoolss_addform(struct cli_state *cli, TALLOC_CTX *mem_ctx, form.right = 20; form.bottom = 30; - init_unistr2(&form.name, argv[2], strlen(argv[2]) + 1); + init_unistr2(&form.name, argv[2], UNI_STR_TERMINATE); /* Add the form */ @@ -1627,7 +1627,7 @@ static WERROR cmd_spoolss_setform(struct cli_state *cli, TALLOC_CTX *mem_ctx, form.right = 2000; form.bottom = 3000; - init_unistr2(&form.name, argv[2], strlen(argv[2]) + 1); + init_unistr2(&form.name, argv[2], UNI_STR_TERMINATE); /* Set the form */ diff --git a/source/rpcclient/rpcclient.c b/source/rpcclient/rpcclient.c index 515489292bc..773441a27cc 100644 --- a/source/rpcclient/rpcclient.c +++ b/source/rpcclient/rpcclient.c @@ -352,38 +352,33 @@ static NTSTATUS cmd_none(struct cli_state *cli, TALLOC_CTX *mem_ctx, return NT_STATUS_OK; } -static NTSTATUS cmd_schannel(struct cli_state *cli, TALLOC_CTX *mem_ctx, - int argc, const char **argv) +static NTSTATUS setup_schannel(struct cli_state *cli, int pipe_auth_flags, + int argc, const char **argv) { NTSTATUS ret; + static uchar zeros[16]; uchar trust_password[16]; uint32 sec_channel_type; - static uchar zeros[16]; - if (argc == 2) { strhex_to_str((char *)cli->auth_info.sess_key, strlen(argv[1]), argv[1]); memcpy(cli->sess_key, cli->auth_info.sess_key, sizeof(cli->sess_key)); - cli->pipe_auth_flags = AUTH_PIPE_NETSEC; - cli->pipe_auth_flags |= AUTH_PIPE_SIGN; - cli->pipe_auth_flags |= AUTH_PIPE_SEAL; - + cli->pipe_auth_flags = pipe_auth_flags; return NT_STATUS_OK; } /* Cleanup */ if ((memcmp(cli->auth_info.sess_key, zeros, sizeof(cli->auth_info.sess_key)) != 0)) { - if (cli->pipe_auth_flags == (AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN|AUTH_PIPE_SEAL)) { + if (cli->pipe_auth_flags == pipe_auth_flags) { /* already in this mode nothing to do */ return NT_STATUS_OK; } else { - /* schannel is setup, just need to use it again */ - cli->pipe_auth_flags = AUTH_PIPE_NETSEC; - cli->pipe_auth_flags |= AUTH_PIPE_SIGN; - cli->pipe_auth_flags |= AUTH_PIPE_SEAL; + /* schannel is setup, just need to use it again with new flags */ + cli->pipe_auth_flags = pipe_auth_flags; + if (cli->nt_pipe_fnum != 0) cli_nt_session_close(cli); return NT_STATUS_OK; @@ -393,17 +388,13 @@ static NTSTATUS cmd_schannel(struct cli_state *cli, TALLOC_CTX *mem_ctx, if (cli->nt_pipe_fnum != 0) cli_nt_session_close(cli); - cli->pipe_auth_flags = AUTH_PIPE_NETSEC; - cli->pipe_auth_flags |= AUTH_PIPE_SIGN; - cli->pipe_auth_flags |= AUTH_PIPE_SEAL; - if (!secrets_fetch_trust_account_password(lp_workgroup(), trust_password, NULL, &sec_channel_type)) { return NT_STATUS_UNSUCCESSFUL; } - ret = cli_nt_setup_netsec(cli, sec_channel_type, trust_password); + ret = cli_nt_setup_netsec(cli, sec_channel_type, pipe_auth_flags, trust_password); if (NT_STATUS_IS_OK(ret)) { char *hex_session_key; hex_encode(cli->auth_info.sess_key, @@ -415,6 +406,24 @@ static NTSTATUS cmd_schannel(struct cli_state *cli, TALLOC_CTX *mem_ctx, return ret; } + +static NTSTATUS cmd_schannel(struct cli_state *cli, TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + d_printf("Setting schannel - sign and seal\n"); + return setup_schannel(cli, AUTH_PIPE_NETSEC | AUTH_PIPE_SIGN | AUTH_PIPE_SEAL, + argc, argv); +} + +static NTSTATUS cmd_schannel_sign(struct cli_state *cli, TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + d_printf("Setting schannel - sign only\n"); + return setup_schannel(cli, AUTH_PIPE_NETSEC | AUTH_PIPE_SIGN, + argc, argv); +} + + /* Built in rpcclient commands */ static struct cmd_set rpcclient_commands[] = { @@ -430,6 +439,7 @@ static struct cmd_set rpcclient_commands[] = { { "sign", RPC_RTYPE_NTSTATUS, cmd_sign, NULL, -1, "Force RPC pipe connections to be signed", "" }, { "seal", RPC_RTYPE_NTSTATUS, cmd_seal, NULL, -1, "Force RPC pipe connections to be sealed", "" }, { "schannel", RPC_RTYPE_NTSTATUS, cmd_schannel, NULL, -1, "Force RPC pipe connections to be sealed with 'schannel' (NETSEC). Assumes valid machine account to this domain controller.", "" }, + { "schannelsign", RPC_RTYPE_NTSTATUS, cmd_schannel_sign, NULL, -1, "Force RPC pipe connections to be signed (not sealed) with 'schannel' (NETSEC). Assumes valid machine account to this domain controller.", "" }, { "none", RPC_RTYPE_NTSTATUS, cmd_none, NULL, -1, "Force RPC pipe connections to have no special properties", "" }, { NULL } @@ -522,9 +532,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, /* some of the DsXXX commands use the netlogon pipe */ if (lp_client_schannel() && (cmd_entry->pipe_idx == PI_NETLOGON) && !(cli->pipe_auth_flags & AUTH_PIPE_NETSEC)) { - /* The 7 here seems to be required to get Win2k not to downgrade us - to NT4. Actually, anything other than 1ff would seem to do... */ - uint32 neg_flags = 0x000001ff; + uint32 neg_flags = NETLOGON_NEG_AUTH2_FLAGS; uint32 sec_channel_type; if (!secrets_fetch_trust_account_password(lp_workgroup(), diff --git a/source/script/installbin.sh b/source/script/installbin.sh index c2f34082dd9..f9fd5298c09 100755 --- a/source/script/installbin.sh +++ b/source/script/installbin.sh @@ -1,10 +1,12 @@ #!/bin/sh INSTALLPERMS=$1 -BASEDIR=$2 -BINDIR=$3 -LIBDIR=$4 -VARDIR=$5 +DESTDIR=$2 +BASEDIR=`echo $3 | sed 's/\/\//\//g'` +BINDIR=`echo $4 | sed 's/\/\//\//g'` +LIBDIR=`echo $5 | sed 's/\/\//\//g'` +VARDIR=`echo $6 | sed 's/\/\//\//g'` +shift shift shift shift @@ -23,7 +25,10 @@ for p in $*; do # this is a special case, mount needs this in a specific location if [ $p2 = smbmount ]; then - ln -sf $BINDIR/$p2 /sbin/mount.smbfs + if [ ! -d $DESTDIR/sbin ]; then + mkdir $DESTDIR/sbin + fi + ln -sf $BINDIR/$p2 $DESTDIR/sbin/mount.smbfs fi done diff --git a/source/script/installdat.sh b/source/script/installdat.sh index 7ff88ac788e..4a5b1de5dc8 100755 --- a/source/script/installdat.sh +++ b/source/script/installdat.sh @@ -1,7 +1,7 @@ #!/bin/sh #fist version March 2002, Herb Lewis -DATDIR=$1 +DATDIR=`echo $1 | sed 's/\/\//\//g'` SRCDIR=$2/ echo Installing dat files in $DATDIR diff --git a/source/script/installdirs.sh b/source/script/installdirs.sh index 9557b86d3bc..1db46b82ff2 100755 --- a/source/script/installdirs.sh +++ b/source/script/installdirs.sh @@ -1,11 +1,13 @@ #!/bin/sh while ( test -n "$1" ); do - if [ ! -d $1 ]; then - mkdir -p $1 + + DIRNAME=`echo $1 | sed 's/\/\//\//g'` + if [ ! -d $DIRNAME ]; then + mkdir -p $DIRNAME fi - if [ ! -d $1 ]; then + if [ ! -d $DIRNAME ]; then echo Failed to make directory $1 exit 1 fi diff --git a/source/script/installman.sh b/source/script/installman.sh index 5b6bba69edb..c7a8f450951 100755 --- a/source/script/installman.sh +++ b/source/script/installman.sh @@ -5,7 +5,7 @@ # modified to accomodate international man pages (inspired # by Japanese edition's approach) -MANDIR=$1 +MANDIR=`echo $1 | sed 's/\/\//\//g'` SRCDIR=$2/ langs=$3 diff --git a/source/script/installmodules.sh b/source/script/installmodules.sh index c80da763688..f7c74733381 100755 --- a/source/script/installmodules.sh +++ b/source/script/installmodules.sh @@ -1,8 +1,8 @@ #!/bin/sh INSTALLPERMS=$1 -BASEDIR=$2 -LIBDIR=$3 +BASEDIR=`echo $2 | sed 's/\/\//\//g'` +LIBDIR=`echo $3 | sed 's/\/\//\//g'` shift shift shift diff --git a/source/script/installmsg.sh b/source/script/installmsg.sh index 30ad404aa0d..5a41fe1ca8d 100644 --- a/source/script/installmsg.sh +++ b/source/script/installmsg.sh @@ -2,7 +2,7 @@ # first version (Sept 2003) written by Shiro Yamada <shiro@miraclelinux.com> # based on the first verion (March 2002) of installdat.sh written by Herb Lewis -MSGDIR=$1 +MSGDIR=`echo $1 | sed 's/\/\//\//g'` SRCDIR=$2/ echo Installing msg files in $MSGDIR diff --git a/source/script/installscripts.sh b/source/script/installscripts.sh index bff5423e7cb..81608c3682c 100755 --- a/source/script/installscripts.sh +++ b/source/script/installscripts.sh @@ -3,7 +3,7 @@ # 5 July 96 Dan.Shearer@UniSA.Edu.Au Don't hardcode script names, get from Make INSTALLPERMS=$1 -BINDIR=$2 +BINDIR=`echo $2 | sed 's/\/\//\//g'` shift shift diff --git a/source/script/installswat.sh b/source/script/installswat.sh index bd2f8da2348..7841a2a7b50 100755 --- a/source/script/installswat.sh +++ b/source/script/installswat.sh @@ -1,7 +1,7 @@ #!/bin/sh #first version March 1998, Andrew Tridgell -SWATDIR=$1 +SWATDIR=`echo $1 | sed 's/\/\//\//g'` SRCDIR=$2/ BOOKDIR=$SWATDIR/using_samba diff --git a/source/script/mkproto.awk b/source/script/mkproto.awk index b6e911699eb..3835ea3af37 100644 --- a/source/script/mkproto.awk +++ b/source/script/mkproto.awk @@ -120,7 +120,7 @@ END { gotstart = 1; } - if( $0 ~ /^ADS_STRUCT|^ADS_STATUS|^DATA_BLOB|^ASN1_DATA|^TDB_CONTEXT|^TDB_DATA|^smb_ucs2_t|^TALLOC_CTX|^hash_element|^NT_DEVICEMODE|^enum.*\(|^NT_USER_TOKEN|^SAM_ACCOUNT/ ) { + if( $0 ~ /^ADS_STRUCT|^ADS_STATUS|^DATA_BLOB|^ASN1_DATA|^TDB_CONTEXT|^TDB_DATA|^smb_ucs2_t|^TALLOC_CTX|^hash_element|^NT_DEVICEMODE|^enum.*\(|^NT_USER_TOKEN|^SAM_ACCOUNT|^NTTIME/ ) { gotstart = 1; } diff --git a/source/script/uninstallbin.sh b/source/script/uninstallbin.sh index a8bbdea7afd..5de936fccfd 100755 --- a/source/script/uninstallbin.sh +++ b/source/script/uninstallbin.sh @@ -2,10 +2,10 @@ #4 July 96 Dan.Shearer@UniSA.edu.au INSTALLPERMS=$1 -BASEDIR=$2 -BINDIR=$3 -LIBDIR=$4 -VARDIR=$5 +BASEDIR=`echo $2 | sed 's/\/\//\//g'` +BINDIR=`echo $3 | sed 's/\/\//\//g'` +LIBDIR=`echo $4 | sed 's/\/\//\//g'` +VARDIR=`echo $5 | sed 's/\/\//\//g'` shift shift shift diff --git a/source/script/uninstallman.sh b/source/script/uninstallman.sh index 3126709831f..0fea11cd1b2 100755 --- a/source/script/uninstallman.sh +++ b/source/script/uninstallman.sh @@ -6,7 +6,7 @@ # by Japanese edition's approach) -MANDIR=$1 +MANDIR=`echo $1 | sed 's/\/\//\//g'` SRCDIR=$2 langs=$3 diff --git a/source/script/uninstallmodules.sh b/source/script/uninstallmodules.sh index 30582a39fac..ac83af3dc90 100755 --- a/source/script/uninstallmodules.sh +++ b/source/script/uninstallmodules.sh @@ -2,8 +2,8 @@ #4 July 96 Dan.Shearer@UniSA.edu.au INSTALLPERMS=$1 -BASEDIR=$2 -LIBDIR=$3 +BASEDIR=`echo $2 | sed 's/\/\//\//g'` +LIBDIR=`echo $3 | sed 's/\/\//\//g'` shift shift shift diff --git a/source/script/uninstallscripts.sh b/source/script/uninstallscripts.sh index 13104acedd8..cf7fd719993 100755 --- a/source/script/uninstallscripts.sh +++ b/source/script/uninstallscripts.sh @@ -2,7 +2,7 @@ # 5 July 96 Dan.Shearer@UniSA.Edu.Au - almost identical to uninstallbin.sh INSTALLPERMS=$1 -BINDIR=$2 +BINDIR=`echo $2 | sed 's/\/\//\//g'` shift shift diff --git a/source/smbd/blocking.c b/source/smbd/blocking.c index 8fa2a6494e3..f43790bfe03 100644 --- a/source/smbd/blocking.c +++ b/source/smbd/blocking.c @@ -91,6 +91,7 @@ BOOL push_blocking_lock_request( char *inbuf, int length, int lock_timeout, { static BOOL set_lock_msg; blocking_lock_record *blr; + BOOL my_lock_ctx = False; NTSTATUS status; if(in_chained_smb() ) { @@ -127,7 +128,7 @@ BOOL push_blocking_lock_request( char *inbuf, int length, int lock_timeout, /* Add a pending lock record for this. */ status = brl_lock(blr->fsp->dev, blr->fsp->inode, blr->fsp->fnum, lock_pid, sys_getpid(), blr->fsp->conn->cnum, - offset, count, PENDING_LOCK); + offset, count, PENDING_LOCK, &my_lock_ctx); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("push_blocking_lock_request: failed to add PENDING_LOCK record.\n")); @@ -302,6 +303,7 @@ static BOOL process_lockread(blocking_lock_record *blr) NTSTATUS status; connection_struct *conn = conn_find(SVAL(inbuf,smb_tid)); files_struct *fsp = blr->fsp; + BOOL my_lock_ctx = False; numtoread = SVAL(inbuf,smb_vwv1); startpos = (SMB_BIG_UINT)IVAL(inbuf,smb_vwv2); @@ -309,8 +311,7 @@ static BOOL process_lockread(blocking_lock_record *blr) numtoread = MIN(BUFFER_SIZE-outsize,numtoread); data = smb_buf(outbuf) + 3; - status = do_lock_spin( fsp, conn, SVAL(inbuf,smb_pid), (SMB_BIG_UINT)numtoread, - startpos, READ_LOCK); + status = do_lock_spin( fsp, conn, SVAL(inbuf,smb_pid), (SMB_BIG_UINT)numtoread, startpos, READ_LOCK, &my_lock_ctx); if (NT_STATUS_V(status)) { if (!NT_STATUS_EQUAL(status,NT_STATUS_LOCK_NOT_GRANTED) && !NT_STATUS_EQUAL(status,NT_STATUS_FILE_LOCK_CONFLICT)) { @@ -371,13 +372,13 @@ static BOOL process_lock(blocking_lock_record *blr) NTSTATUS status; connection_struct *conn = conn_find(SVAL(inbuf,smb_tid)); files_struct *fsp = blr->fsp; + BOOL my_lock_ctx = False; count = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv1); offset = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv3); errno = 0; - status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), count, - offset, WRITE_LOCK); + status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), count, offset, WRITE_LOCK, &my_lock_ctx); if (NT_STATUS_IS_ERR(status)) { if (!NT_STATUS_EQUAL(status,NT_STATUS_LOCK_NOT_GRANTED) && !NT_STATUS_EQUAL(status,NT_STATUS_FILE_LOCK_CONFLICT)) { @@ -428,6 +429,7 @@ static BOOL process_lockingX(blocking_lock_record *blr) uint16 lock_pid; BOOL large_file_format = (locktype & LOCKING_ANDX_LARGE_FILES); char *data; + BOOL my_lock_ctx = False; NTSTATUS status = NT_STATUS_OK; data = smb_buf(inbuf) + ((large_file_format ? 20 : 10)*num_ulocks); @@ -450,7 +452,7 @@ static BOOL process_lockingX(blocking_lock_record *blr) */ errno = 0; status = do_lock_spin(fsp,conn,lock_pid,count,offset, - ((locktype & 1) ? READ_LOCK : WRITE_LOCK)); + ((locktype & 1) ? READ_LOCK : WRITE_LOCK), &my_lock_ctx); if (NT_STATUS_IS_ERR(status)) break; } @@ -553,7 +555,7 @@ void remove_pending_lock_requests_by_mid(int mid) DEBUG(10,("remove_pending_lock_requests_by_mid - removing request type %d for \ file %s fnum = %d\n", blr->com_type, fsp->fsp_name, fsp->fnum )); - blocking_lock_reply_error(blr,NT_STATUS_CANCELLED); + blocking_lock_reply_error(blr,NT_STATUS_FILE_LOCK_CONFLICT); brl_unlock(blr->fsp->dev, blr->fsp->inode, blr->fsp->fnum, blr->lock_pid, sys_getpid(), blr->fsp->conn->cnum, blr->offset, blr->count, True, NULL, NULL); diff --git a/source/smbd/error.c b/source/smbd/error.c index 9d0e34bf527..795bf0949cc 100644 --- a/source/smbd/error.c +++ b/source/smbd/error.c @@ -93,6 +93,11 @@ int error_packet(char *outbuf,NTSTATUS ntstatus, if (errno != 0) DEBUG(3,("error string = %s\n",strerror(errno))); +#if defined(DEVELOPER) + if (unix_ERR_class != SMB_SUCCESS || unix_ERR_code != 0 || !NT_STATUS_IS_OK(unix_ERR_ntstatus)) + smb_panic("logic error in error processing"); +#endif + /* * We can explicitly force 32 bit error codes even when the * parameter "nt status" is set to no by pre-setting the diff --git a/source/smbd/notify_hash.c b/source/smbd/notify_hash.c index 810e5079ba5..ec414454f9e 100644 --- a/source/smbd/notify_hash.c +++ b/source/smbd/notify_hash.c @@ -41,7 +41,7 @@ static BOOL notify_hash(connection_struct *conn, char *path, uint32 flags, SMB_STRUCT_STAT st; pstring full_name; char *p; - char *fname; + const char *fname; size_t remaining_len; size_t fullname_len; void *dp; @@ -115,7 +115,7 @@ static BOOL notify_hash(connection_struct *conn, char *path, uint32 flags, if (flags & (FILE_NOTIFY_CHANGE_DIR_NAME|FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_FILE)) { int i; unsigned char tmp_hash[16]; - mdfour(tmp_hash, (unsigned char *)fname, strlen(fname)); + mdfour(tmp_hash, (const unsigned char *)fname, strlen(fname)); for (i=0;i<16;i++) data->name_hash[i] ^= tmp_hash[i]; } @@ -125,7 +125,7 @@ static BOOL notify_hash(connection_struct *conn, char *path, uint32 flags, */ if (flags & (FILE_NOTIFY_CHANGE_ATTRIBUTES|FILE_NOTIFY_CHANGE_SECURITY)) - data->mode_sum = st.st_mode; + data->mode_sum += st.st_mode; } CloseDir(dp); diff --git a/source/smbd/nttrans.c b/source/smbd/nttrans.c index 1c507449472..b4e7a70088d 100644 --- a/source/smbd/nttrans.c +++ b/source/smbd/nttrans.c @@ -522,8 +522,11 @@ static int do_ntcreate_pipe_open(connection_struct *conn, int ret; int pnum = -1; char *p = NULL; + NTSTATUS status; - srvstr_pull_buf(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE); + srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) + return ERROR_NT(status); if ((ret = nt_open_pipe(fname, conn, inbuf, outbuf, &pnum)) != 0) return ret; @@ -587,6 +590,7 @@ int reply_ntcreate_and_X(connection_struct *conn, char *p = NULL; time_t c_time; BOOL extended_oplock_granted = False; + NTSTATUS status; START_PROFILE(SMBntcreateX); @@ -641,7 +645,11 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib if(!dir_fsp->is_directory) { - srvstr_pull_buf(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE); + srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBntcreateX); + return ERROR_NT(status); + } /* * Check to see if this is a mac fork of some kind. @@ -681,9 +689,17 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib dir_name_len++; } - srvstr_pull_buf(inbuf, &fname[dir_name_len], smb_buf(inbuf), sizeof(fname)-dir_name_len, STR_TERMINATE); + srvstr_get_path(inbuf, &fname[dir_name_len], smb_buf(inbuf), sizeof(fname)-dir_name_len, STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBntcreateX); + return ERROR_NT(status); + } } else { - srvstr_pull_buf(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE); + srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBntcreateX); + return ERROR_NT(status); + } /* * Check to see if this is a mac fork of some kind. @@ -971,6 +987,7 @@ static int do_nt_transact_create_pipe( connection_struct *conn, char *inbuf, cha int ret; int pnum = -1; char *p = NULL; + NTSTATUS status; /* * Ensure minimum number of parameters sent. @@ -982,6 +999,10 @@ static int do_nt_transact_create_pipe( connection_struct *conn, char *inbuf, cha } srvstr_pull(inbuf, fname, params+53, sizeof(fname), parameter_count-53, STR_TERMINATE); + status = check_path_syntax(fname); + if (!NT_STATUS_IS_OK(status)) { + return ERROR_NT(status); + } if ((ret = nt_open_pipe(fname, conn, inbuf, outbuf, &pnum)) != 0) return ret; @@ -1158,7 +1179,6 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o smb_attr = (file_attributes & SAMBA_ATTRIBUTES_MASK); if (create_options & FILE_OPEN_BY_FILE_ID) { - END_PROFILE(SMBntcreateX); return ERROR_NT(NT_STATUS_NOT_SUPPORTED); } @@ -1188,6 +1208,10 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o if(!dir_fsp->is_directory) { srvstr_pull(inbuf, fname, params+53, sizeof(fname), parameter_count-53, STR_TERMINATE); + nt_status = check_path_syntax(fname); + if (!NT_STATUS_IS_OK(nt_status)) { + return ERROR_NT(nt_status); + } /* * Check to see if this is a mac fork of some kind. @@ -1217,8 +1241,16 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o srvstr_pull(inbuf, &fname[dir_name_len], params+53, sizeof(fname)-dir_name_len, parameter_count-53, STR_TERMINATE); + nt_status = check_path_syntax(fname); + if (!NT_STATUS_IS_OK(nt_status)) { + return ERROR_NT(nt_status); + } } else { srvstr_pull(inbuf, fname, params+53, sizeof(fname), parameter_count-53, STR_TERMINATE); + nt_status = check_path_syntax(fname); + if (!NT_STATUS_IS_OK(nt_status)) { + return ERROR_NT(nt_status); + } /* * Check to see if this is a mac fork of some kind. @@ -1260,7 +1292,6 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o /* Can't open a temp directory. IFS kit test. */ if (file_attributes & FILE_ATTRIBUTE_TEMPORARY) { - END_PROFILE(SMBntcreateX); return ERROR_NT(NT_STATUS_INVALID_PARAMETER); } @@ -1361,7 +1392,6 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o fsp->initial_allocation_size = SMB_ROUNDUP(allocation_size,SMB_ROUNDUP_ALLOCATION_SIZE); if (vfs_allocate_file_space(fsp, fsp->initial_allocation_size) == -1) { close_file(fsp,False); - END_PROFILE(SMBntcreateX); return ERROR_NT(NT_STATUS_DISK_FULL); } } else { @@ -1517,6 +1547,10 @@ static int call_nt_transact_rename(connection_struct *conn, char *inbuf, char *o replace_if_exists = (SVAL(params,2) & RENAME_REPLACE_IF_EXISTS) ? True : False; CHECK_FSP(fsp, conn); srvstr_pull(inbuf, new_name, params+4, sizeof(new_name), -1, STR_TERMINATE); + status = check_path_syntax(new_name); + if (!NT_STATUS_IS_OK(status)) { + return ERROR_NT(status); + } status = rename_internals(conn, fsp->fsp_name, new_name, replace_if_exists); diff --git a/source/smbd/password.c b/source/smbd/password.c index 32c24b3d679..958ed663e67 100644 --- a/source/smbd/password.c +++ b/source/smbd/password.c @@ -291,7 +291,9 @@ BOOL user_ok(const char *user,int snum, gid_t *groups, size_t n_groups) if (lp_invalid_users(snum)) { str_list_copy(&invalid, lp_invalid_users(snum)); if (invalid && str_list_substitute(invalid, "%S", lp_servicename(snum))) { - ret = !user_in_list(user, (const char **)invalid, groups, n_groups); + if ( invalid && str_list_sub_basic(invalid, current_user_info.smb_name) ) { + ret = !user_in_list(user, (const char **)invalid, groups, n_groups); + } } } if (invalid) @@ -299,8 +301,10 @@ BOOL user_ok(const char *user,int snum, gid_t *groups, size_t n_groups) if (ret && lp_valid_users(snum)) { str_list_copy(&valid, lp_valid_users(snum)); - if ( valid && str_list_sub_basic(valid, current_user_info.smb_name) ) { - ret = user_in_list(user, (const char **)valid, groups, n_groups); + if ( valid && str_list_substitute(valid, "%S", lp_servicename(snum)) ) { + if ( valid && str_list_sub_basic(valid, current_user_info.smb_name) ) { + ret = user_in_list(user, (const char **)valid, groups, n_groups); + } } } if (valid) diff --git a/source/smbd/reply.c b/source/smbd/reply.c index 6ac4cffddb4..ec63be32b40 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -39,21 +39,33 @@ unsigned int smb_echo_count = 0; extern BOOL global_encrypted_passwords_negotiated; /**************************************************************************** - Ensure we check the path in the same way as W2K. + Ensure we check the path in *exactly* the same way as W2K. ****************************************************************************/ -static NTSTATUS check_path_syntax(const char *name) +NTSTATUS check_path_syntax(const char *name) { - while (*name == '\\') + while (*name == '\\' || *name == '/') name++; - if (strequal(name, ".")) + if (name[0] == '.' && name[1] == '\0') return NT_STATUS_OBJECT_NAME_INVALID; - else if (strequal(name, "..")) + else if (name[0] == '.' && name[1] == '.' && + (name[2] == '\\' || name [2] == '/' || name[2] == '\0')) return NT_STATUS_OBJECT_PATH_SYNTAX_BAD; return NT_STATUS_OK; } /**************************************************************************** + Pull a string and check the path - provide for error return. +****************************************************************************/ + +size_t srvstr_get_path(char *inbuf, char *dest, const char *src, size_t dest_len, int flags, NTSTATUS *err) +{ + size_t ret = srvstr_pull_buf( inbuf, dest, src, dest_len, flags); + *err = check_path_syntax(dest); + return ret; +} + +/**************************************************************************** Reply to a special message. ****************************************************************************/ @@ -402,11 +414,11 @@ int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size START_PROFILE(SMBchkpth); - srvstr_pull_buf(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE); - - status = check_path_syntax(name); - if (!NT_STATUS_IS_OK(status)) + srvstr_get_path(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE, &status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBchkpth); return ERROR_NT(status); + } RESOLVE_DFSPATH(name, conn, inbuf, outbuf); @@ -416,8 +428,10 @@ int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size if (check_name(name,conn)) { if (VALID_STAT(sbuf) || SMB_VFS_STAT(conn,name,&sbuf) == 0) - if (!(ok = S_ISDIR(sbuf.st_mode))) - errno = ENOTDIR; + if (!(ok = S_ISDIR(sbuf.st_mode))) { + END_PROFILE(SMBchkpth); + return ERROR_BOTH(NT_STATUS_NOT_A_DIRECTORY,ERRDOS,ERRbadpath); + } } if (!ok) { @@ -435,13 +449,18 @@ int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size * if the path is invalid. */ if (bad_path) { + END_PROFILE(SMBchkpth); return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND); } else { + END_PROFILE(SMBchkpth); return ERROR_NT(NT_STATUS_OBJECT_NAME_NOT_FOUND); } - } else if (errno == ENOTDIR) + } else if (errno == ENOTDIR) { + END_PROFILE(SMBchkpth); return ERROR_NT(NT_STATUS_NOT_A_DIRECTORY); + } + END_PROFILE(SMBchkpth); return(UNIXERROR(ERRDOS,ERRbadpath)); } @@ -468,10 +487,16 @@ int reply_getatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size time_t mtime=0; BOOL bad_path = False; char *p; + NTSTATUS status; + START_PROFILE(SMBgetatr); p = smb_buf(inbuf) + 1; - p += srvstr_pull_buf(inbuf, fname, p, sizeof(fname), STR_TERMINATE); + p += srvstr_get_path(inbuf, fname, p, sizeof(fname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBgetatr); + return ERROR_NT(status); + } RESOLVE_DFSPATH(fname, conn, inbuf, outbuf); @@ -537,11 +562,17 @@ int reply_setatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size SMB_STRUCT_STAT sbuf; BOOL bad_path = False; char *p; + NTSTATUS status; START_PROFILE(SMBsetatr); p = smb_buf(inbuf) + 1; - p += srvstr_pull_buf(inbuf, fname, p, sizeof(fname), STR_TERMINATE); + p += srvstr_get_path(inbuf, fname, p, sizeof(fname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBsetatr); + return ERROR_NT(status); + } + unix_convert(fname,conn,0,&bad_path,&sbuf); mode = SVAL(inbuf,smb_vwv0); @@ -652,6 +683,7 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size BOOL expect_close = False; BOOL can_open = True; BOOL bad_path = False; + NTSTATUS nt_status; START_PROFILE(SMBsearch); *mask = *directory = *fname = 0; @@ -664,7 +696,11 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size maxentries = SVAL(inbuf,smb_vwv0); dirtype = SVAL(inbuf,smb_vwv1); p = smb_buf(inbuf) + 1; - p += srvstr_pull_buf(inbuf, path, p, sizeof(path), STR_TERMINATE); + p += srvstr_get_path(inbuf, path, p, sizeof(path), STR_TERMINATE,&nt_status); + if (!NT_STATUS_IS_OK(nt_status)) { + END_PROFILE(SMBsearch); + return ERROR_NT(nt_status); + } p++; status_len = SVAL(p, 0); p += 2; @@ -829,12 +865,17 @@ int reply_fclose(connection_struct *conn, char *inbuf,char *outbuf, int dum_size char status[21]; int dptr_num= -2; char *p; + NTSTATUS err; START_PROFILE(SMBfclose); outsize = set_message(outbuf,1,0,True); p = smb_buf(inbuf) + 1; - p += srvstr_pull_buf(inbuf, path, p, sizeof(path), STR_TERMINATE); + p += srvstr_get_path(inbuf, path, p, sizeof(path), STR_TERMINATE,&err); + if (!NT_STATUS_IS_OK(err)) { + END_PROFILE(SMBfclose); + return ERROR_NT(err); + } p++; status_len = SVAL(p,0); p += 2; @@ -877,11 +918,16 @@ int reply_open(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, BOOL bad_path = False; files_struct *fsp; int oplock_request = CORE_OPLOCK_REQUEST(inbuf); + NTSTATUS status; START_PROFILE(SMBopen); share_mode = SVAL(inbuf,smb_vwv0); - srvstr_pull_buf(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), STR_TERMINATE); + srvstr_get_path(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBopen); + return ERROR_NT(status); + } RESOLVE_DFSPATH(fname, conn, inbuf, outbuf); @@ -954,6 +1000,7 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt int smb_action = 0; BOOL bad_path = False; files_struct *fsp; + NTSTATUS status; START_PROFILE(SMBopenX); /* If it's an IPC, pass off the pipe handler. */ @@ -968,7 +1015,11 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt } /* XXXX we need to handle passed times, sattr and flags */ - srvstr_pull_buf(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE); + srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBopenX); + return ERROR_NT(status); + } RESOLVE_DFSPATH(fname, conn, inbuf, outbuf); @@ -1074,12 +1125,17 @@ int reply_mknew(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, files_struct *fsp; int oplock_request = CORE_OPLOCK_REQUEST(inbuf); SMB_STRUCT_STAT sbuf; + NTSTATUS status; START_PROFILE(SMBcreate); com = SVAL(inbuf,smb_com); createmode = SVAL(inbuf,smb_vwv0); - srvstr_pull_buf(inbuf, fname, smb_buf(inbuf) + 1, sizeof(fname), STR_TERMINATE); + srvstr_get_path(inbuf, fname, smb_buf(inbuf) + 1, sizeof(fname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBcreate); + return ERROR_NT(status); + } RESOLVE_DFSPATH(fname, conn, inbuf, outbuf); @@ -1139,11 +1195,16 @@ int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int tmpfd; SMB_STRUCT_STAT sbuf; char *p, *s; + NTSTATUS status; START_PROFILE(SMBctemp); createmode = SVAL(inbuf,smb_vwv0); - srvstr_pull_buf(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), STR_TERMINATE); + srvstr_get_path(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBctemp); + return ERROR_NT(status); + } pstrcat(fname,"\\TMXXXXXX"); RESOLVE_DFSPATH(fname, conn, inbuf, outbuf); @@ -1235,6 +1296,7 @@ static NTSTATUS can_rename(char *fname,connection_struct *conn, SMB_STRUCT_STAT ret = NT_STATUS_SHARING_VIOLATION; unix_ERR_class = 0; unix_ERR_code = 0; + unix_ERR_ntstatus = NT_STATUS_OK; return ret; } close_file(fsp,False); @@ -1423,12 +1485,12 @@ int reply_unlink(connection_struct *conn, char *inbuf,char *outbuf, int dum_size dirtype = SVAL(inbuf,smb_vwv0); - srvstr_pull_buf(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE); - - status = check_path_syntax(name); - if (!NT_STATUS_IS_OK(status)) + srvstr_get_path(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBunlink); return ERROR_NT(status); - + } + RESOLVE_DFSPATH(name, conn, inbuf, outbuf); DEBUG(3,("reply_unlink : %s\n",name)); @@ -1505,8 +1567,13 @@ void send_file_readbraw(connection_struct *conn, files_struct *fsp, SMB_OFF_T st if (nread > 0) { ret = read_file(fsp,outbuf+4,startpos,nread); +#if 0 /* mincount appears to be ignored in a W2K server. JRA. */ if (ret < mincount) ret = 0; +#else + if (ret < nread) + ret = 0; +#endif } _smb_setlen(outbuf,ret); @@ -1606,7 +1673,6 @@ int reply_readbraw(connection_struct *conn, char *inbuf, char *outbuf, int dum_s /* ensure we don't overrun the packet size */ maxcount = MIN(65535,maxcount); - maxcount = MAX(mincount,maxcount); if (!is_locked(fsp,conn,(SMB_BIG_UINT)maxcount,(SMB_BIG_UINT)startpos, READ_LOCK,False)) { SMB_OFF_T size = fsp->size; @@ -1626,8 +1692,10 @@ int reply_readbraw(connection_struct *conn, char *inbuf, char *outbuf, int dum_s nread = MIN(maxcount,(size - startpos)); } +#if 0 /* mincount appears to be ignored in a W2K server. JRA. */ if (nread < mincount) nread = 0; +#endif DEBUG( 3, ( "readbraw fnum=%d start=%.0f max=%d min=%d nread=%d\n", fsp->fnum, (double)startpos, (int)maxcount, (int)mincount, (int)nread ) ); @@ -1652,6 +1720,7 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length size_t numtoread; NTSTATUS status; files_struct *fsp = file_fsp(inbuf,smb_vwv0); + BOOL my_lock_ctx = False; START_PROFILE(SMBlockread); CHECK_FSP(fsp,conn); @@ -1671,13 +1740,21 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length * protocol request that predates the read/write lock concept. * Thus instead of asking for a read lock here we need to ask * for a write lock. JRA. + * Note that the requested lock size is unaffected by max_recv. */ status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), - (SMB_BIG_UINT)numtoread, (SMB_BIG_UINT)startpos, WRITE_LOCK); + (SMB_BIG_UINT)numtoread, (SMB_BIG_UINT)startpos, WRITE_LOCK, &my_lock_ctx); if (NT_STATUS_V(status)) { - if (lp_blocking_locks(SNUM(conn)) && ERROR_WAS_LOCK_DENIED(status)) { +#if 0 + /* + * We used to make lockread a blocking lock. It turns out + * that this isn't on W2k. Found by the Samba 4 RAW-READ torture + * tester. JRA. + */ + + if (lp_blocking_locks(SNUM(conn)) && !my_lock_ctx && ERROR_WAS_LOCK_DENIED(status)) { /* * A blocking lock was requested. Package up * this smb into a queued request and push it @@ -1689,10 +1766,21 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length return -1; } } +#endif END_PROFILE(SMBlockread); return ERROR_NT(status); } + /* + * However the requested READ size IS affected by max_recv. Insanity.... JRA. + */ + + if (numtoread > max_recv) { + DEBUG(0,("reply_lockread: requested read size (%u) is greater than maximum allowed (%u). \ +Returning short read of maximum allowed for compatibility with Windows 2000.\n", + (unsigned int)numtoread, (unsigned int)max_recv )); + numtoread = MIN(numtoread,max_recv); + } nread = read_file(fsp,data,startpos,numtoread); if (nread < 0) { @@ -1734,6 +1822,16 @@ int reply_read(connection_struct *conn, char *inbuf,char *outbuf, int size, int outsize = set_message(outbuf,5,3,True); numtoread = MIN(BUFFER_SIZE-outsize,numtoread); + /* + * The requested read size cannot be greater than max_recv. JRA. + */ + if (numtoread > max_recv) { + DEBUG(0,("reply_read: requested read size (%u) is greater than maximum allowed (%u). \ +Returning short read of maximum allowed for compatibility with Windows 2000.\n", + (unsigned int)numtoread, (unsigned int)max_recv )); + numtoread = MIN(numtoread,max_recv); + } + data = smb_buf(outbuf) + 3; if (is_locked(fsp,conn,(SMB_BIG_UINT)numtoread,(SMB_BIG_UINT)startpos, READ_LOCK,False)) { @@ -1801,6 +1899,7 @@ int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length * correct amount of data). */ + SSVAL(outbuf,smb_vwv2,0xFFFF); /* Remaining - must be -1. */ SSVAL(outbuf,smb_vwv5,smb_maxcnt); SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf)); SSVAL(smb_buf(outbuf),-2,smb_maxcnt); @@ -1839,6 +1938,7 @@ int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length return(UNIXERROR(ERRDOS,ERRnoaccess)); } + SSVAL(outbuf,smb_vwv2,0xFFFF); /* Remaining - must be -1. */ SSVAL(outbuf,smb_vwv5,nread); SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf)); SSVAL(smb_buf(outbuf),-2,nread); @@ -1931,7 +2031,7 @@ int reply_writebraw(connection_struct *conn, char *inbuf,char *outbuf, int size, START_PROFILE(SMBwritebraw); if (srv_is_signing_active()) { - exit_server("reply_readbraw: SMB signing is active - raw reads/writes are disallowed."); + exit_server("reply_writebraw: SMB signing is active - raw reads/writes are disallowed."); } CHECK_FSP(fsp,conn); @@ -2059,7 +2159,7 @@ int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf, size_t numtowrite; SMB_OFF_T startpos; char *data; - NTSTATUS status; + NTSTATUS status = NT_STATUS_OK; files_struct *fsp = file_fsp(inbuf,smb_vwv0); int outsize = 0; START_PROFILE(SMBwriteunlock); @@ -2071,7 +2171,7 @@ int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf, startpos = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv2); data = smb_buf(inbuf) + 3; - if (is_locked(fsp,conn,(SMB_BIG_UINT)numtowrite,(SMB_BIG_UINT)startpos, + if (numtowrite && is_locked(fsp,conn,(SMB_BIG_UINT)numtowrite,(SMB_BIG_UINT)startpos, WRITE_LOCK,False)) { END_PROFILE(SMBwriteunlock); return ERROR_DOS(ERRDOS,ERRlock); @@ -2093,11 +2193,13 @@ int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf, return(UNIXERROR(ERRHRD,ERRdiskfull)); } - status = do_unlock(fsp, conn, SVAL(inbuf,smb_pid), (SMB_BIG_UINT)numtowrite, - (SMB_BIG_UINT)startpos); - if (NT_STATUS_V(status)) { - END_PROFILE(SMBwriteunlock); - return ERROR_NT(status); + if (numtowrite) { + status = do_unlock(fsp, conn, SVAL(inbuf,smb_pid), (SMB_BIG_UINT)numtowrite, + (SMB_BIG_UINT)startpos); + if (NT_STATUS_V(status)) { + END_PROFILE(SMBwriteunlock); + return ERROR_NT(status); + } } outsize = set_message(outbuf,1,0,True); @@ -2520,7 +2622,7 @@ int reply_writeclose(connection_struct *conn, mtime = make_unix_date3(inbuf+smb_vwv4); data = smb_buf(inbuf) + 1; - if (is_locked(fsp,conn,(SMB_BIG_UINT)numtowrite,(SMB_BIG_UINT)startpos, WRITE_LOCK,False)) { + if (numtowrite && is_locked(fsp,conn,(SMB_BIG_UINT)numtowrite,(SMB_BIG_UINT)startpos, WRITE_LOCK,False)) { END_PROFILE(SMBwriteclose); return ERROR_DOS(ERRDOS,ERRlock); } @@ -2529,7 +2631,16 @@ int reply_writeclose(connection_struct *conn, set_filetime(conn, fsp->fsp_name,mtime); - close_err = close_file(fsp,True); + /* + * More insanity. W2K only closes the file if writelen > 0. + * JRA. + */ + + if (numtowrite) { + DEBUG(3,("reply_writeclose: zero length write doesn't close file %s\n", + fsp->fsp_name )); + close_err = close_file(fsp,True); + } DEBUG(3,("writeclose fnum=%d num=%d wrote=%d (numopen=%d)\n", fsp->fnum, (int)numtowrite, (int)nwritten, @@ -2564,6 +2675,8 @@ int reply_lock(connection_struct *conn, SMB_BIG_UINT count,offset; NTSTATUS status; files_struct *fsp = file_fsp(inbuf,smb_vwv0); + BOOL my_lock_ctx = False; + START_PROFILE(SMBlock); CHECK_FSP(fsp,conn); @@ -2576,9 +2689,11 @@ int reply_lock(connection_struct *conn, DEBUG(3,("lock fd=%d fnum=%d offset=%.0f count=%.0f\n", fsp->fd, fsp->fnum, (double)offset, (double)count)); - status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), count, offset, WRITE_LOCK); + status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), count, offset, WRITE_LOCK, &my_lock_ctx); if (NT_STATUS_V(status)) { - if (lp_blocking_locks(SNUM(conn)) && ERROR_WAS_LOCK_DENIED(status)) { +#if 0 + /* Tests using Samba4 against W2K show this call never creates a blocking lock. */ + if (lp_blocking_locks(SNUM(conn)) && !my_lock_ctx && ERROR_WAS_LOCK_DENIED(status)) { /* * A blocking lock was requested. Package up * this smb into a queued request and push it @@ -2589,6 +2704,7 @@ int reply_lock(connection_struct *conn, return -1; } } +#endif END_PROFILE(SMBlock); return ERROR_NT(status); } @@ -2921,13 +3037,19 @@ int reply_mkdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, NTSTATUS status; START_PROFILE(SMBmkdir); - srvstr_pull_buf(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), STR_TERMINATE); + srvstr_get_path(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBmkdir); + return ERROR_NT(status); + } RESOLVE_DFSPATH(directory, conn, inbuf, outbuf); status = mkdir_internal(conn, directory); - if (!NT_STATUS_IS_OK(status)) + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBmkdir); return ERROR_NT(status); + } outsize = set_message(outbuf,0,0,True); @@ -3082,9 +3204,14 @@ int reply_rmdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, BOOL ok = False; BOOL bad_path = False; SMB_STRUCT_STAT sbuf; + NTSTATUS status; START_PROFILE(SMBrmdir); - srvstr_pull_buf(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), STR_TERMINATE); + srvstr_get_path(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBrmdir); + return ERROR_NT(status); + } RESOLVE_DFSPATH(directory, conn, inbuf, outbuf) @@ -3579,9 +3706,17 @@ int reply_mv(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, START_PROFILE(SMBmv); p = smb_buf(inbuf) + 1; - p += srvstr_pull_buf(inbuf, name, p, sizeof(name), STR_TERMINATE); + p += srvstr_get_path(inbuf, name, p, sizeof(name), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBmv); + return ERROR_NT(status); + } p++; - p += srvstr_pull_buf(inbuf, newname, p, sizeof(newname), STR_TERMINATE); + p += srvstr_get_path(inbuf, newname, p, sizeof(newname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBmv); + return ERROR_NT(status); + } RESOLVE_DFSPATH(name, conn, inbuf, outbuf); RESOLVE_DFSPATH(newname, conn, inbuf, outbuf); @@ -3590,6 +3725,7 @@ int reply_mv(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, status = rename_internals(conn, name, newname, False); if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBmv); return ERROR_NT(status); } @@ -3707,14 +3843,23 @@ int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, BOOL bad_path2 = False; BOOL rc = True; SMB_STRUCT_STAT sbuf1, sbuf2; + NTSTATUS status; START_PROFILE(SMBcopy); *directory = *mask = 0; p = smb_buf(inbuf); - p += srvstr_pull_buf(inbuf, name, p, sizeof(name), STR_TERMINATE); - p += srvstr_pull_buf(inbuf, newname, p, sizeof(newname), STR_TERMINATE); + p += srvstr_get_path(inbuf, name, p, sizeof(name), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBcopy); + return ERROR_NT(status); + } + p += srvstr_get_path(inbuf, newname, p, sizeof(newname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBcopy); + return ERROR_NT(status); + } DEBUG(3,("reply_copy : %s -> %s\n",name,newname)); @@ -3860,6 +4005,7 @@ int reply_setdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size int outsize = 0; BOOL ok = False; pstring newdir; + NTSTATUS status; START_PROFILE(pathworks_setdir); @@ -3869,7 +4015,11 @@ int reply_setdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size return ERROR_DOS(ERRDOS,ERRnoaccess); } - srvstr_pull_buf(inbuf, newdir, smb_buf(inbuf) + 1, sizeof(newdir), STR_TERMINATE); + srvstr_get_path(inbuf, newdir, smb_buf(inbuf) + 1, sizeof(newdir), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(pathworks_setdir); + return ERROR_NT(status); + } if (strlen(newdir) == 0) { ok = True; @@ -4044,6 +4194,7 @@ int reply_lockingX(connection_struct *conn, char *inbuf,char *outbuf,int length, char *data; BOOL large_file_format = (locktype & LOCKING_ANDX_LARGE_FILES)?True:False; BOOL err; + BOOL my_lock_ctx = False; NTSTATUS status; START_PROFILE(SMBlockingX); @@ -4164,9 +4315,9 @@ no oplock granted on this file (%s).\n", fsp->fnum, fsp->fsp_name)); fsp->fsp_name, (int)lock_timeout )); status = do_lock_spin(fsp,conn,lock_pid, count,offset, - ((locktype & 1) ? READ_LOCK : WRITE_LOCK)); + ((locktype & 1) ? READ_LOCK : WRITE_LOCK), &my_lock_ctx); if (NT_STATUS_V(status)) { - if ((lock_timeout != 0) && lp_blocking_locks(SNUM(conn)) && ERROR_WAS_LOCK_DENIED(status)) { + if ((lock_timeout != 0) && lp_blocking_locks(SNUM(conn)) && !my_lock_ctx && ERROR_WAS_LOCK_DENIED(status)) { /* * A blocking lock was requested. Package up * this smb into a queued request and push it diff --git a/source/smbd/service.c b/source/smbd/service.c index 44d73b2ab27..e5655bd9f4c 100644 --- a/source/smbd/service.c +++ b/source/smbd/service.c @@ -259,23 +259,27 @@ static NTSTATUS share_sanity_checks(int snum, fstring dev) return NT_STATUS_OK; } - /**************************************************************************** readonly share? ****************************************************************************/ + static void set_read_only(connection_struct *conn, gid_t *groups, size_t n_groups) { char **list; - char *service = lp_servicename(conn->service); + const char *service = lp_servicename(conn->service); conn->read_only = lp_readonly(conn->service); - if (!service) return; + if (!service) + return; str_list_copy(&list, lp_readlist(conn->service)); if (list) { - if ( !str_list_sub_basic(list, current_user_info.smb_name) ) { + if (!str_list_sub_basic(list, current_user_info.smb_name) ) { DEBUG(0, ("ERROR: read list substitution failed\n")); } + if (!str_list_substitute(list, "%S", service)) { + DEBUG(0, ("ERROR: read list service substitution failed\n")); + } if (user_in_list(conn->user, (const char **)list, groups, n_groups)) conn->read_only = True; str_list_free(&list); @@ -283,19 +287,22 @@ static void set_read_only(connection_struct *conn, gid_t *groups, size_t n_group str_list_copy(&list, lp_writelist(conn->service)); if (list) { - if ( !str_list_sub_basic(list, current_user_info.smb_name) ) { + if (!str_list_sub_basic(list, current_user_info.smb_name) ) { DEBUG(0, ("ERROR: write list substitution failed\n")); } + if (!str_list_substitute(list, "%S", service)) { + DEBUG(0, ("ERROR: write list service substitution failed\n")); + } if (user_in_list(conn->user, (const char **)list, groups, n_groups)) conn->read_only = False; str_list_free(&list); } } - /**************************************************************************** admin user check ****************************************************************************/ + static void set_admin_user(connection_struct *conn, gid_t *groups, size_t n_groups) { /* admin user check */ @@ -887,6 +894,9 @@ void close_cnum(connection_struct *conn, uint16 vuid) file_close_conn(conn); dptr_closecnum(conn); + /* make sure we leave the directory available for unmount */ + vfs_ChDir(conn, "/"); + /* execute any "postexec = " line */ if (*lp_postexec(SNUM(conn)) && change_to_user(conn, vuid)) { @@ -906,8 +916,5 @@ void close_cnum(connection_struct *conn, uint16 vuid) smbrun(cmd,NULL); } - /* make sure we leave the directory available for unmount */ - vfs_ChDir(conn, "/"); - conn_free(conn); } diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c index 033e76a33e1..3d53387c9f1 100644 --- a/source/smbd/trans2.c +++ b/source/smbd/trans2.c @@ -1407,17 +1407,34 @@ static int call_trans2qfsinfo(connection_struct *conn, char *inbuf, char *outbuf switch (info_level) { case SMB_INFO_ALLOCATION: { - SMB_BIG_UINT dfree,dsize,bsize; + SMB_BIG_UINT dfree,dsize,bsize,block_size,sectors_per_unit,bytes_per_sector; data_len = 18; SMB_VFS_DISK_FREE(conn,".",False,&bsize,&dfree,&dsize); + block_size = lp_block_size(snum); + if (bsize < block_size) { + SMB_BIG_UINT factor = block_size/bsize; + bsize = block_size; + dsize /= factor; + dfree /= factor; + } + if (bsize > block_size) { + SMB_BIG_UINT factor = bsize/block_size; + bsize = block_size; + dsize *= factor; + dfree *= factor; + } + bytes_per_sector = 512; + sectors_per_unit = bsize/bytes_per_sector; + + DEBUG(5,("call_trans2qfsinfo : SMB_INFO_ALLOCATION id=%x, bsize=%u, cSectorUnit=%u, \ +cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)st.st_dev, (unsigned int)bsize, (unsigned int)sectors_per_unit, + (unsigned int)bytes_per_sector, (unsigned int)dsize, (unsigned int)dfree)); + SIVAL(pdata,l1_idFileSystem,st.st_dev); - SIVAL(pdata,l1_cSectorUnit,bsize/512); + SIVAL(pdata,l1_cSectorUnit,sectors_per_unit); SIVAL(pdata,l1_cUnit,dsize); SIVAL(pdata,l1_cUnitAvail,dfree); - SSVAL(pdata,l1_cbSector,512); - DEBUG(5,("call_trans2qfsinfo : bsize=%u, id=%x, cSectorUnit=%u, cUnit=%u, cUnitAvail=%u, cbSector=%d\n", - (unsigned int)bsize, (unsigned int)st.st_dev, ((unsigned int)bsize)/512, (unsigned int)dsize, - (unsigned int)dfree, 512)); + SSVAL(pdata,l1_cbSector,bytes_per_sector); break; } @@ -1785,12 +1802,9 @@ int set_bad_path_error(int err, BOOL bad_path, char *outbuf, int def_class, uint err, (int)bad_path )); if(err == ENOENT) { - unix_ERR_class = ERRDOS; if (bad_path) { - unix_ERR_code = ERRbadpath; return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND); } else { - unix_ERR_code = ERRbadfile; return ERROR_NT(NT_STATUS_OBJECT_NAME_NOT_FOUND); } } diff --git a/source/tdb/tdbback.c b/source/tdb/tdbback.c index 744cface557..68b6fadc882 100644 --- a/source/tdb/tdbback.c +++ b/source/tdb/tdbback.c @@ -18,6 +18,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifdef STANDALONE +#if HAVE_CONFIG_H +#include <config.h> +#endif + #include <errno.h> #include <stdlib.h> #include <stdio.h> @@ -27,10 +32,16 @@ #include <fcntl.h> #include <time.h> #include <sys/mman.h> + #include <sys/stat.h> #include <sys/time.h> #include <ctype.h> #include <signal.h> + +#else +#include "includes.h" +#endif + #include "tdb.h" static int failed; @@ -44,8 +55,7 @@ char *add_suffix(const char *name, const char *suffix) fprintf(stderr,"Out of memory!\n"); exit(1); } - strncpy(ret, name, len); - strncat(ret, suffix, len); + snprintf(ret, len, "%s%s", name, suffix); return ret; } diff --git a/source/tdb/tdbbackup.c b/source/tdb/tdbbackup.c index 0eaf6b6c0b7..1a0e1c1588f 100644 --- a/source/tdb/tdbbackup.c +++ b/source/tdb/tdbbackup.c @@ -41,6 +41,11 @@ */ +#ifdef STANDALONE +#if HAVE_CONFIG_H +#include <config.h> +#endif + #include <errno.h> #include <stdlib.h> #include <stdio.h> @@ -54,6 +59,13 @@ #include <sys/time.h> #include <ctype.h> #include <signal.h> + +#else + +#include "includes.h" + +#endif + #include "tdb.h" #include "tdbback.h" diff --git a/source/utils/net_ads_cldap.c b/source/utils/net_ads_cldap.c index 595e6e94347..44de9cb8911 100644 --- a/source/utils/net_ads_cldap.c +++ b/source/utils/net_ads_cldap.c @@ -32,19 +32,15 @@ struct cldap_netlogon_reply { GUID guid; char forest[MAX_DNS_LABEL]; - char unk0[MAX_DNS_LABEL]; char domain[MAX_DNS_LABEL]; char hostname[MAX_DNS_LABEL]; char netbios_domain[MAX_DNS_LABEL]; - char unk1[MAX_DNS_LABEL]; char netbios_hostname[MAX_DNS_LABEL]; - char unk2[MAX_DNS_LABEL]; + char unk[MAX_DNS_LABEL]; char user_name[MAX_DNS_LABEL]; - char unk3[MAX_DNS_LABEL]; char site_name[MAX_DNS_LABEL]; - char unk4[MAX_DNS_LABEL]; char site_name_2[MAX_DNS_LABEL]; uint32 version; @@ -115,7 +111,7 @@ static unsigned pull_netlogon_string(char *ret, const char *ptr, } } while (*ptr); - return ret_len ? ret_len : 1; + return followed_ptr ? ret_len : ret_len + 1; } /* @@ -249,13 +245,11 @@ static int recv_cldap_netlogon(int sock, struct cldap_netlogon_reply *reply) p += GUID_SIZE; p += pull_netlogon_string(reply->forest, p, (const char *)os3.data); - p += pull_netlogon_string(reply->unk0, p, (const char *)os3.data); p += pull_netlogon_string(reply->domain, p, (const char *)os3.data); p += pull_netlogon_string(reply->hostname, p, (const char *)os3.data); p += pull_netlogon_string(reply->netbios_domain, p, (const char *)os3.data); - p += pull_netlogon_string(reply->unk1, p, (const char *)os3.data); p += pull_netlogon_string(reply->netbios_hostname, p, (const char *)os3.data); - p += pull_netlogon_string(reply->unk2, p, (const char *)os3.data); + p += pull_netlogon_string(reply->unk, p, (const char *)os3.data); if (reply->type == SAMLOGON_AD_R) { p += pull_netlogon_string(reply->user_name, p, (const char *)os3.data); @@ -263,9 +257,7 @@ static int recv_cldap_netlogon(int sock, struct cldap_netlogon_reply *reply) *reply->user_name = 0; } - p += pull_netlogon_string(reply->unk3, p, (const char *)os3.data); p += pull_netlogon_string(reply->site_name, p, (const char *)os3.data); - p += pull_netlogon_string(reply->unk4, p, (const char *)os3.data); p += pull_netlogon_string(reply->site_name_2, p, (const char *)os3.data); reply->version = IVAL(p, 0); @@ -349,20 +341,16 @@ int ads_cldap_netlogon(ADS_STRUCT *ads) (reply.flags & ADS_NDNC) ? "yes" : "no"); printf("Forest:\t\t\t%s\n", reply.forest); - if (*reply.unk0) printf("Unk0:\t\t\t%s\n", reply.unk0); printf("Domain:\t\t\t%s\n", reply.domain); printf("Domain Controller:\t%s\n", reply.hostname); printf("Pre-Win2k Domain:\t%s\n", reply.netbios_domain); - if (*reply.unk1) printf("Unk1:\t\t\t%s\n", reply.unk1); printf("Pre-Win2k Hostname:\t%s\n", reply.netbios_hostname); - if (*reply.unk2) printf("Unk2:\t\t\t%s\n", reply.unk2); + if (*reply.unk) printf("Unk:\t\t\t%s\n", reply.unk); if (*reply.user_name) printf("User name:\t%s\n", reply.user_name); - if (*reply.unk3) printf("Unk3:\t\t\t%s\n", reply.unk3); printf("Site Name:\t\t%s\n", reply.site_name); - if (*reply.unk4) printf("Unk4:\t\t\t%s\n", reply.unk4); printf("Site Name (2):\t\t%s\n", reply.site_name_2); d_printf("NT Version: %d\n", reply.version); diff --git a/source/utils/profiles.c b/source/utils/profiles.c index 3230eb21fc8..20b1222e723 100644 --- a/source/utils/profiles.c +++ b/source/utils/profiles.c @@ -295,7 +295,6 @@ Hope this helps.... (Although it was "fun" for me to uncover this things, #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> -#include <sys/mman.h> typedef unsigned int DWORD; typedef unsigned short WORD; @@ -610,7 +609,12 @@ int main(int argc, char *argv[]) * dealing with the records. We are interested in the sk record */ start = 0; + +#ifdef HAVE_MMAP base = mmap(&start, sbuf.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); +#else + base = (char *)-1; +#endif if ((int)base == -1) { fprintf(stderr, "Could not mmap file: %s, %s\n", poptPeekArg(pc), @@ -726,7 +730,9 @@ int main(int argc, char *argv[]) sk_hdr = (SK_HDR *)(base + OFF(IVAL(&sk_hdr->prev_off, 0))); } while (sk_off != first_sk_off); +#ifdef HAVE_MMAP munmap(base, sbuf.st_size); +#endif poptFreeContext(pc); diff --git a/source/utils/smbcacls.c b/source/utils/smbcacls.c index 58ee57b5dd2..5a70d168842 100644 --- a/source/utils/smbcacls.c +++ b/source/utils/smbcacls.c @@ -389,7 +389,7 @@ static SEC_DESC *sec_desc_parse(char *str) return NULL; } - ret = make_sec_desc(ctx,revision, owner_sid, grp_sid, + ret = make_sec_desc(ctx,revision, SEC_DESC_SELF_RELATIVE, owner_sid, grp_sid, NULL, dacl, &sd_size); SAFE_FREE(grp_sid); @@ -504,7 +504,7 @@ static int owner_set(struct cli_state *cli, enum chown_mode change_mode, return EXIT_FAILED; } - sd = make_sec_desc(ctx,old->revision, + sd = make_sec_desc(ctx,old->revision, old->type, (change_mode == REQUEST_CHOWN) ? &sid : NULL, (change_mode == REQUEST_CHGRP) ? &sid : NULL, NULL, NULL, &sd_size); @@ -679,7 +679,7 @@ static int cacl_set(struct cli_state *cli, char *filename, sort_acl(old->dacl); /* Create new security descriptor and set it */ - sd = make_sec_desc(ctx,old->revision, NULL, NULL, + sd = make_sec_desc(ctx,old->revision, old->type, NULL, NULL, NULL, old->dacl, &sd_size); fnum = cli_nt_create(cli, filename, WRITE_DAC_ACCESS); diff --git a/source/utils/testparm.c b/source/utils/testparm.c index 34c25480d94..085156305b1 100644 --- a/source/utils/testparm.c +++ b/source/utils/testparm.c @@ -226,7 +226,12 @@ via the %%o substitution. With encrypted passwords this is not possible.\n", lp_ cname = poptGetArg(pc); caddr = poptGetArg(pc); - + + if ( cname && ! caddr ) { + printf ( "ERROR: You must specify both a machine name and an IP address.\n" ); + return(1); + } + if (new_local_machine) { set_local_machine_name(new_local_machine, True); } @@ -346,8 +351,9 @@ via the %%o substitution. With encrypted passwords this is not possible.\n", lp_ if(cname && caddr){ /* this is totally ugly, a real `quick' hack */ for (s=0;s<1000;s++) { - if (VALID_SNUM(s)) { - if (allow_access(lp_hostsdeny(s), lp_hostsallow(s), cname, caddr)) { + if (VALID_SNUM(s)) { + if (allow_access(lp_hostsdeny(-1), lp_hostsallow(-1), cname, caddr) + && allow_access(lp_hostsdeny(s), lp_hostsallow(s), cname, caddr)) { printf("Allow connection from %s (%s) to %s\n", cname,caddr,lp_servicename(s)); } else { diff --git a/source/web/statuspage.c b/source/web/statuspage.c index 21d7e457389..9ce9c05b19f 100644 --- a/source/web/statuspage.c +++ b/source/web/statuspage.c @@ -120,9 +120,9 @@ static void print_share_mode(share_mode_entry *e, char *fname) d_printf("<td>"); switch (e->share_mode&0xF) { - case 0: d_printf("RDONLY "); break; - case 1: d_printf("WRONLY "); break; - case 2: d_printf("RDWR "); break; + case 0: d_printf("%s", _("RDONLY ")); break; + case 1: d_printf("%s", _("WRONLY ")); break; + case 2: d_printf("%s", _("RDWR ")); break; } d_printf("</td>"); @@ -297,6 +297,10 @@ void status_page(void) PID_or_Machine = 1; } + if (cgi_variable("show_pid_in_col_1")) { + PID_or_Machine = 0; + } + tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0); if (tdb) tdb_traverse(tdb, traverse_fn1, NULL); @@ -307,14 +311,14 @@ void status_page(void) d_printf("<FORM method=post>\n"); if (!autorefresh) { - d_printf("<input type=submit value=\"%s\" name=autorefresh>\n", _("Auto Refresh")); + d_printf("<input type=submit value=\"%s\" name=\"autorefresh\">\n", _("Auto Refresh")); d_printf("<br>%s", _("Refresh Interval: ")); - d_printf("<input type=text size=2 name=\"refresh_interval\" value=%d>\n", + d_printf("<input type=text size=2 name=\"refresh_interval\" value=\"%d\">\n", refresh_interval); } else { - d_printf("<input type=submit value=\"%s\" name=norefresh>\n", _("Stop Refreshing")); + d_printf("<input type=submit value=\"%s\" name=\"norefresh\">\n", _("Stop Refreshing")); d_printf("<br>%s%d\n", _("Refresh Interval: "), refresh_interval); - d_printf("<input type=hidden name=refresh value=1>\n"); + d_printf("<input type=hidden name=\"refresh\" value=\"1\">\n"); } d_printf("<p>\n"); @@ -418,8 +422,8 @@ void status_page(void) if (tdb) tdb_close(tdb); - d_printf("<br><input type=submit name=\"show_client_in_col_1\" value=\"Show Client in col 1\">\n"); - d_printf("<input type=submit name=\"show_pid_in_col_1\" value=\"Show PID in col 1\">\n"); + d_printf("<br><input type=submit name=\"show_client_in_col_1\" value=\"%s\">\n", _("Show Client in col 1")); + d_printf("<input type=submit name=\"show_pid_in_col_1\" value=\"%s\">\n", _("Show PID in col 1")); d_printf("</FORM>\n"); diff --git a/source/web/swat.c b/source/web/swat.c index 1c892559dd9..f4046b46a26 100644 --- a/source/web/swat.c +++ b/source/web/swat.c @@ -114,7 +114,8 @@ static int include_html(const char *fname) fd = web_open(fname, O_RDONLY, 0); if (fd == -1) { - d_printf("ERROR: Can't open %s\n", fname); + d_printf(_("ERROR: Can't open %s"), fname); + d_printf("\n"); return 0; } @@ -261,7 +262,7 @@ static void show_parameter(int snum, struct parm_struct *parm) break; case P_INTEGER: - d_printf("<input type=text size=8 name=\"parm_%s\" value=%d>", make_parm_name(parm->label), *(int *)ptr); + d_printf("<input type=text size=8 name=\"parm_%s\" value=\"%d\">", make_parm_name(parm->label), *(int *)ptr); d_printf("<input type=button value=\"%s\" onClick=\"swatform.parm_%s.value=\'%d\'\">", _("Set Default"), make_parm_name(parm->label),(int)(parm->def.ivalue)); break; @@ -404,7 +405,8 @@ static int save_reload(int snum) f = sys_fopen(dyn_CONFIGFILE,"w"); if (!f) { - d_printf("failed to open %s for writing\n", dyn_CONFIGFILE); + d_printf(_("failed to open %s for writing"), dyn_CONFIGFILE); + d_printf("\n"); return 0; } @@ -426,7 +428,8 @@ static int save_reload(int snum) lp_killunused(NULL); if (!load_config(False)) { - d_printf("Can't reload %s\n", dyn_CONFIGFILE); + d_printf(_("Can't reload %s"), dyn_CONFIGFILE); + d_printf("\n"); return 0; } iNumNonAutoPrintServices = lp_numservices(); @@ -495,7 +498,8 @@ static void show_main_buttons(void) char *p; if ((p = cgi_user_name()) && strcmp(p, "root")) { - d_printf(_("Logged in as <b>%s</b><p>\n"), p); + d_printf(_("Logged in as <b>%s</b>"), p); + d_printf("<p>\n"); } image_link(_("Home"), "", "images/home.gif"); @@ -519,10 +523,10 @@ static void show_main_buttons(void) ****************************************************************************/ static void ViewModeBoxes(int mode) { - d_printf("<p>%s\n", _("Current View Is:  \n")); - d_printf("<input type=radio name=\"ViewMode\" value=0 %s>Basic\n", (mode == 0) ? "checked" : ""); - d_printf("<input type=radio name=\"ViewMode\" value=1 %s>Advanced\n", (mode == 1) ? "checked" : ""); - d_printf("<br>%s\n", _("Change View To: ")); + d_printf("<p>%s: \n", _("Current View Is")); + d_printf("<input type=radio name=\"ViewMode\" value=0 %s>%s\n", ((mode == 0) ? "checked" : ""), _("Basic")); + d_printf("<input type=radio name=\"ViewMode\" value=1 %s>%s\n", ((mode == 1) ? "checked" : ""), _("Advanced")); + d_printf("<br>%s: \n", _("Change View To")); d_printf("<input type=submit name=\"BasicMode\" value=\"%s\">\n", _("Basic")); d_printf("<input type=submit name=\"AdvMode\" value=\"%s\">\n", _("Advanced")); d_printf("</p><br>\n"); @@ -572,7 +576,7 @@ static void wizard_params_page(void) /* Here we first set and commit all the parameters that were selected in the previous screen. */ - d_printf("<H2>Wizard Parameter Edit Page</H2>\n"); + d_printf("<H2>%s</H2>\n", _("Wizard Parameter Edit Page")); if (cgi_variable("Commit")) { commit_parameters(GLOBAL_SECTION_SNUM); @@ -601,7 +605,7 @@ static void rewritecfg_file(void) { commit_parameters(GLOBAL_SECTION_SNUM); save_reload(0); - d_printf("<H2>Note: smb.conf %s</H2>\n", _("file has been read and rewritten")); + d_printf("<H2>%s</H2>\n", _("Note: smb.conf file has been read and rewritten")); } /**************************************************************************** @@ -709,36 +713,37 @@ static void wizard_page(void) role = lp_server_role(); /* Here we go ... */ - d_printf("<H2>Samba Configuration Wizard</H2>\n"); + d_printf("<H2>%s</H2>\n", _("Samba Configuration Wizard")); d_printf("<form method=post action=wizard>\n"); if (have_write_access) { - d_printf(_("The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments.\n")); - d_printf(_("The same will happen if you press the commit button.")); - d_printf("<br><br>"); + d_printf("%s\n", _("The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments.")); + d_printf("%s", _("The same will happen if you press the commit button.")); + d_printf("<br><br>\n"); d_printf("<center>"); - d_printf("<input type=submit name=\"Rewrite\" value=%s> ",_("Rewrite smb.conf file")); - d_printf("<input type=submit name=\"Commit\" value=%s> ",_("Commit")); - d_printf("<input type=submit name=\"GetWizardParams\" value=%s>", _("Edit Parameter Values")); - d_printf("</center>"); + d_printf("<input type=submit name=\"Rewrite\" value=\"%s\"> ",_("Rewrite smb.conf file")); + d_printf("<input type=submit name=\"Commit\" value=\"%s\"> ",_("Commit")); + d_printf("<input type=submit name=\"GetWizardParams\" value=\"%s\">", _("Edit Parameter Values")); + d_printf("</center>\n"); } d_printf("<hr>"); d_printf("<center><table border=0>"); - d_printf("<tr><td><b>%s</b></td>\n", "Server Type: "); - d_printf("<td><input type=radio name=\"ServerType\" value=0 %s> Stand Alone </td>", (role == ROLE_STANDALONE) ? "checked" : ""); - d_printf("<td><input type=radio name=\"ServerType\" value=1 %s> Domain Member </td>", (role == ROLE_DOMAIN_MEMBER) ? "checked" : ""); - d_printf("<td><input type=radio name=\"ServerType\" value=2 %s> Domain Controller </td>", (role == ROLE_DOMAIN_PDC) ? "checked" : ""); - d_printf("</tr>"); + d_printf("<tr><td><b>%s: </b></td>\n", _("Server Type")); + d_printf("<td><input type=radio name=\"ServerType\" value=\"0\" %s> %s </td>", ((role == ROLE_STANDALONE) ? "checked" : ""), _("Stand Alone")); + d_printf("<td><input type=radio name=\"ServerType\" value=\"1\" %s> %s </td>", ((role == ROLE_DOMAIN_MEMBER) ? "checked" : ""), _("Domain Member")); + d_printf("<td><input type=radio name=\"ServerType\" value=\"2\" %s> %s </td>", ((role == ROLE_DOMAIN_PDC) ? "checked" : ""), _("Domain Controller")); + d_printf("</tr>\n"); if (role == ROLE_DOMAIN_BDC) { - d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Unusual Type in smb.conf - Please Select New Mode</font></td></tr>"); + d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">%s</font></td></tr>\n", _("Unusual Type in smb.conf - Please Select New Mode")); } - d_printf("<tr><td><b>%s</b></td>\n", "Configure WINS As: "); - d_printf("<td><input type=radio name=\"WINSType\" value=0 %s> Not Used </td>", (winstype == 0) ? "checked" : ""); - d_printf("<td><input type=radio name=\"WINSType\" value=1 %s> Server for client use </td>", (winstype == 1) ? "checked" : ""); - d_printf("<td><input type=radio name=\"WINSType\" value=2 %s> Client of another WINS server </td>", (winstype == 2) ? "checked" : ""); - d_printf("<tr><td></td><td></td><td></td><td>Remote WINS Server <input type=text size=\"16\" name=\"WINSAddr\" value=\""); - + d_printf("<tr><td><b>%s: </b></td>\n", _("Configure WINS As")); + d_printf("<td><input type=radio name=\"WINSType\" value=\"0\" %s> %s </td>", ((winstype == 0) ? "checked" : ""), _("Not Used")); + d_printf("<td><input type=radio name=\"WINSType\" value=\"1\" %s> %s </td>", ((winstype == 1) ? "checked" : ""), _("Server for client use")); + d_printf("<td><input type=radio name=\"WINSType\" value=\"2\" %s> %s </td>", ((winstype == 2) ? "checked" : ""), _("Client of another WINS server")); + d_printf("</tr>\n"); + d_printf("<tr><td></td><td></td><td></td><td>%s <input type=text size=\"16\" name=\"WINSAddr\" value=\"", _("Remote WINS Server")); + /* Print out the list of wins servers */ if(lp_wins_server_list()) { int i; @@ -746,28 +751,27 @@ static void wizard_page(void) for(i = 0; wins_servers[i]; i++) d_printf("%s ", wins_servers[i]); } - d_printf("\"></td></tr>"); + d_printf("\"></td></tr>\n"); if (winstype == 3) { - d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Error: WINS Server Mode and WINS Support both set in smb.conf</font></td></tr>"); - d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Please Select desired WINS mode above.</font></td></tr>"); + d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">%s</font></td></tr>\n", _("Error: WINS Server Mode and WINS Support both set in smb.conf")); + d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">%s</font></td></tr>\n", _("Please Select desired WINS mode above.")); } - d_printf("</tr>"); - d_printf("<tr><td><b>%s</b></td>\n","Expose Home Directories: "); - d_printf("<td><input type=radio name=\"HomeExpo\" value=1 %s> Yes</td>", (have_home == -1) ? "" : "checked "); - d_printf("<td><input type=radio name=\"HomeExpo\" value=0 %s> No</td>", (have_home == -1 ) ? "checked" : ""); - d_printf("<td></td></tr>"); + d_printf("<tr><td><b>%s: </b></td>\n", _("Expose Home Directories")); + d_printf("<td><input type=radio name=\"HomeExpo\" value=\"1\" %s> Yes</td>", (have_home == -1) ? "" : "checked "); + d_printf("<td><input type=radio name=\"HomeExpo\" value=\"0\" %s> No</td>", (have_home == -1 ) ? "checked" : ""); + d_printf("<td></td></tr>\n"); /* Enable this when we are ready .... - * d_printf("<tr><td><b>%s</b></td>\n","Is Print Server: "); - * d_printf("<td><input type=radio name=\"PtrSvr\" value=1 %s> Yes</td>"); - * d_printf("<td><input type=radio name=\"PtrSvr\" value=0 %s> No</td>"); - * d_printf("<td></td></tr>"); + * d_printf("<tr><td><b>%s: </b></td>\n", _("Is Print Server")); + * d_printf("<td><input type=radio name=\"PtrSvr\" value=\"1\" %s> Yes</td>"); + * d_printf("<td><input type=radio name=\"PtrSvr\" value=\"0\" %s> No</td>"); + * d_printf("<td></td></tr>\n"); */ d_printf("</table></center>"); d_printf("<hr>"); - d_printf(_("The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment.\n")); + d_printf("%s\n", _("The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment.")); d_printf("</form>\n"); } @@ -780,7 +784,7 @@ static void globals_page(void) unsigned int parm_filter = FLAG_BASIC; int mode = 0; - d_printf("<H2>%s</H2>\n", _("Global Variables")); + d_printf("<H2>%s</H2>\n", _("Global Parameters")); if (cgi_variable("Commit")) { commit_parameters(GLOBAL_SECTION_SNUM); @@ -937,7 +941,7 @@ static BOOL change_password(const char *remote_machine, const char *user_name, pstring msg_str; if (demo_mode) { - d_printf("%s<p>", _("password change in demo mode rejected\n")); + d_printf("%s\n<p>", _("password change in demo mode rejected")); return False; } @@ -950,7 +954,7 @@ static BOOL change_password(const char *remote_machine, const char *user_name, } if(!initialize_password_db(True)) { - d_printf("Can't setup password database vectors.\n<p>"); + d_printf("%s\n<p>", _("Can't setup password database vectors.")); return False; } @@ -976,7 +980,7 @@ static void chg_passwd(void) /* Make sure users name has been specified */ if (strlen(cgi_variable(SWAT_USER)) == 0) { - d_printf("<p>%s", _(" Must specify \"User Name\" \n")); + d_printf("<p>%s\n", _(" Must specify \"User Name\" ")); return; } @@ -992,26 +996,26 @@ static void chg_passwd(void) */ if (((!am_root()) && (strlen( cgi_variable(OLD_PSWD)) <= 0)) || ((cgi_variable(CHG_R_PASSWD_FLAG)) && (strlen( cgi_variable(OLD_PSWD)) <= 0))) { - d_printf("<p>%s", _(" Must specify \"Old Password\" \n")); + d_printf("<p>%s\n", _(" Must specify \"Old Password\" ")); return; } /* If changing a users password on a remote hosts we have to know what host */ if ((cgi_variable(CHG_R_PASSWD_FLAG)) && (strlen( cgi_variable(RHOST)) <= 0)) { - d_printf("<p>%s", _(" Must specify \"Remote Machine\" \n")); + d_printf("<p>%s\n", _(" Must specify \"Remote Machine\" ")); return; } /* Make sure new passwords have been specified */ if ((strlen( cgi_variable(NEW_PSWD)) <= 0) || (strlen( cgi_variable(NEW2_PSWD)) <= 0)) { - d_printf("<p>%s", _(" Must specify \"New, and Re-typed Passwords\" \n")); + d_printf("<p>%s\n", _(" Must specify \"New, and Re-typed Passwords\" ")); return; } /* Make sure new passwords was typed correctly twice */ if (strcmp(cgi_variable(NEW_PSWD), cgi_variable(NEW2_PSWD)) != 0) { - d_printf("<p>%s", _(" Re-typed password didn't match new password\n")); + d_printf("<p>%s\n", _(" Re-typed password didn't match new password ")); return; } } @@ -1041,9 +1045,11 @@ static void chg_passwd(void) if(local_flags == 0) { d_printf("<p>"); if (rslt == True) { - d_printf(_(" The passwd for '%s' has been changed. \n"), cgi_variable(SWAT_USER)); + d_printf(_(" The passwd for '%s' has been changed."), cgi_variable(SWAT_USER)); + d_printf("\n"); } else { - d_printf(_(" The passwd for '%s' has NOT been changed. \n"), cgi_variable(SWAT_USER)); + d_printf(_(" The passwd for '%s' has NOT been changed."), cgi_variable(SWAT_USER)); + d_printf("\n"); } } @@ -1076,15 +1082,15 @@ static void passwd_page(void) /* * Create all the dialog boxes for data collection */ - d_printf("<tr><td>%s</td>\n", _(" User Name : ")); + d_printf("<tr><td> %s : </td>\n", _("User Name")); d_printf("<td><input type=text size=30 name=%s value=%s></td></tr> \n", SWAT_USER, new_name); if (!am_root()) { - d_printf("<tr><td>%s</td>\n", _(" Old Password : ")); + d_printf("<tr><td> %s : </td>\n", _("Old Password")); d_printf("<td><input type=password size=30 name=%s></td></tr> \n",OLD_PSWD); } - d_printf("<tr><td>%s</td>\n", _(" New Password : ")); + d_printf("<tr><td> %s : </td>\n", _("New Password")); d_printf("<td><input type=password size=30 name=%s></td></tr>\n",NEW_PSWD); - d_printf("<tr><td>%s</td>\n", _(" Re-type New Password : ")); + d_printf("<tr><td> %s : </td>\n", _("Re-type New Password")); d_printf("<td><input type=password size=30 name=%s></td></tr>\n",NEW2_PSWD); d_printf("</table>\n"); @@ -1123,15 +1129,15 @@ static void passwd_page(void) /* * Create all the dialog boxes for data collection */ - d_printf("<tr><td>%s</td>\n", _(" User Name : ")); + d_printf("<tr><td> %s : </td>\n", _("User Name")); d_printf("<td><input type=text size=30 name=%s value=%s></td></tr>\n",SWAT_USER, new_name); - d_printf("<tr><td>%s</td>\n", _(" Old Password : ")); + d_printf("<tr><td> %s : </td>\n", _("Old Password")); d_printf("<td><input type=password size=30 name=%s></td></tr>\n",OLD_PSWD); - d_printf("<tr><td>%s</td>\n", _(" New Password : ")); + d_printf("<tr><td> %s : </td>\n", _("New Password")); d_printf("<td><input type=password size=30 name=%s></td></tr>\n",NEW_PSWD); - d_printf("<tr><td>%s</td>\n", _(" Re-type New Password : ")); + d_printf("<tr><td> %s : </td>\n", _("Re-type New Password")); d_printf("<td><input type=password size=30 name=%s></td></tr>\n",NEW2_PSWD); - d_printf("<tr><td>%s</td>\n", _(" Remote Machine : ")); + d_printf("<tr><td> %s : </td>\n", _("Remote Machine")); d_printf("<td><input type=text size=30 name=%s></td></tr>\n",RHOST); d_printf("</table>"); @@ -1176,7 +1182,7 @@ static void printers_page(void) d_printf(_("Printer names marked with [*] in the Choose Printer drop-down box ")); d_printf(_("are autoloaded printers from ")); d_printf("<A HREF=\"/swat/help/smb.conf.5.html#printcapname\" target=\"docs\">%s</A>\n", _("Printcap Name")); - d_printf(_("Attempting to delete these printers from SWAT will have no effect.\n")); + d_printf("%s\n", _("Attempting to delete these printers from SWAT will have no effect.")); if (cgi_variable("Commit") && snum >= 0) { commit_parameters(snum); @@ -1222,8 +1228,8 @@ static void printers_page(void) break; } d_printf("<table>\n"); - d_printf("<tr><td><input type=submit name=selectshare value=\"%s\"></td>\n", _("Choose Printer")); - d_printf("<td><select name=share>\n"); + d_printf("<tr><td><input type=submit name=\"selectshare\" value=\"%s\"></td>\n", _("Choose Printer")); + d_printf("<td><select name=\"share\">\n"); if (snum < 0 || !lp_print_ok(snum)) d_printf("<option value=\" \"> \n"); for (i=0;i<lp_numservices();i++) { @@ -1248,8 +1254,8 @@ static void printers_page(void) if (have_write_access) { d_printf("<table>\n"); - d_printf("<tr><td><input type=submit name=createshare value=\"%s\"></td>\n", _("Create Printer")); - d_printf("<td><input type=text size=30 name=newshare></td></tr>\n"); + d_printf("<tr><td><input type=submit name=\"createshare\" value=\"%s\"></td>\n", _("Create Printer")); + d_printf("<td><input type=text size=30 name=\"newshare\"></td></tr>\n"); d_printf("</table>"); } diff --git a/swat/help/welcome.html b/swat/help/welcome.html index 8fc54ad5f29..59429ba47df 100644 --- a/swat/help/welcome.html +++ b/swat/help/welcome.html @@ -33,13 +33,12 @@ Please choose a configuration action using one of the above buttons <li><a href="/swat/help/smbclient.1.html" target="docs">smbclient</a> - command line SMB client <li><a href="/swat/help/smbmnt.8.html" target="docs">smbmnt</a> - helper utility for mounting SMB filesystems on Linux hosts <li><a href="/swat/help/smbmount.8.html" target="docs">smbmount</a> - user space tool for mounting SMB filesystems under Linux - <li><a href="/swat/help/smbspool.8.html" target="docs">smbspool</a> - command line SMB print client <li><a href="/swat/help/smbumount.8.html" target="docs">smbumount</a> - user space tool for umounting SMB filesystems under Linux <li><a href="/swat/help/ntlm_auth.1.html" target="docs">ntlm_auth</a> - allow external programs to use NTLM authentication <li><a href="/swat/help/smbcquotas.1.html" target="docs">smbcquotas</a> - get or set quotas on NTFS 5 shares <li><a href="/swat/help/smbsh.1.html" target="docs">smbsh</a> - Allow access to remote SMB shares using a UNIX shell - <li><a href="/swat/help/smbtree.1.html" target="docs">smbtree</a> - Text-based SMB network browsing <li><a href="/swat/help/smbspool.8.html" target="docs">smbspool</a> - Send a print job to an SMB printer + <li><a href="/swat/help/smbtree.1.html" target="docs">smbtree</a> - Text-based SMB network browsing </ul> <li><b>Diagnostic Utilities</b> <ul> diff --git a/swat/lang/ja/help/welcome.html b/swat/lang/ja/help/welcome.html index f8266cf825b..fee6d2084ae 100644 --- a/swat/lang/ja/help/welcome.html +++ b/swat/lang/ja/help/welcome.html @@ -1,4 +1,4 @@ -<h2>SWAT : Samba Web Administaration Tool !</h2> +<h2>SWAT : Samba Web Administration Tool !</h2> <p>Sambaの設定は上のボタンをクリックして行います。 </p> diff --git a/swat/lang/ja/images/globals.gif b/swat/lang/ja/images/globals.gif Binary files differdeleted file mode 100644 index 5f8eb15b34a..00000000000 --- a/swat/lang/ja/images/globals.gif +++ /dev/null diff --git a/swat/lang/ja/images/home.gif b/swat/lang/ja/images/home.gif Binary files differdeleted file mode 100644 index a4e61229583..00000000000 --- a/swat/lang/ja/images/home.gif +++ /dev/null diff --git a/swat/lang/ja/images/passwd.gif b/swat/lang/ja/images/passwd.gif Binary files differdeleted file mode 100644 index c8242bf7228..00000000000 --- a/swat/lang/ja/images/passwd.gif +++ /dev/null diff --git a/swat/lang/ja/images/printers.gif b/swat/lang/ja/images/printers.gif Binary files differdeleted file mode 100644 index f0db94cb57a..00000000000 --- a/swat/lang/ja/images/printers.gif +++ /dev/null diff --git a/swat/lang/ja/images/samba.gif b/swat/lang/ja/images/samba.gif Binary files differdeleted file mode 100644 index 0c13dc9ef37..00000000000 --- a/swat/lang/ja/images/samba.gif +++ /dev/null diff --git a/swat/lang/ja/images/shares.gif b/swat/lang/ja/images/shares.gif Binary files differdeleted file mode 100644 index afc1b55cf5e..00000000000 --- a/swat/lang/ja/images/shares.gif +++ /dev/null diff --git a/swat/lang/ja/images/status.gif b/swat/lang/ja/images/status.gif Binary files differdeleted file mode 100644 index f506cda77f8..00000000000 --- a/swat/lang/ja/images/status.gif +++ /dev/null diff --git a/swat/lang/ja/images/viewconfig.gif b/swat/lang/ja/images/viewconfig.gif Binary files differdeleted file mode 100644 index ebc05f6c69d..00000000000 --- a/swat/lang/ja/images/viewconfig.gif +++ /dev/null |