From b167f0989d004ba0940196c242c782ac698d1212 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Wed, 24 Sep 2003 15:43:12 +0000 Subject: syncing files from 3.0 --- Roadmap | 7 +- WHATSNEW.txt | 133 ++++-- docs/docbook/projdoc/passdb.xml | 947 +++++++++++++++++++++++----------------- docs/roadmap-3.html | 247 ++++++++--- 4 files changed, 843 insertions(+), 491 deletions(-) diff --git a/Roadmap b/Roadmap index 4692807eab8..42c63f78098 100644 --- a/Roadmap +++ b/Roadmap @@ -9,13 +9,12 @@ release. The following development objectives for future releases are in progress: ---------------------------------------------------------------------------- -Samba-3.0.0 The Domain Integration Release +Samba-3.0.0 The Domain Integration Release. -Samba-3.0.x Refinments to the User and Group IDMAP facility and +Samba-3.0.x Improvements in Management and Migration tools, & general code stabilization work. -Samba-3.x.x Improvements in Management and Migration tools, - the introduction of further integration capabilities. +Samba-3.x.x Requirements are currently under discussion. Samba-4 Danger Will Robinson, a big code clean up with major system redesign. More will be announced as this work diff --git a/WHATSNEW.txt b/WHATSNEW.txt index 4a3c3e1d0a8..69036fae3c6 100644 --- a/WHATSNEW.txt +++ b/WHATSNEW.txt @@ -1,15 +1,10 @@ - WHATS NEW IN Samba 3.0.0 RC3 - September 8, 2003 + WHATS NEW IN Samba 3.0.0 + September 24, 2003 ============================== -This is the third release candidate snapshot of Samba 3.0.0. A release -candidate implies that the code is very close to a final release, remember -that this is still a non-production release intended for testing purposes. -Use at your own risk. - -The purpose of this release candidate is to get wider testing of the major -new pieces of code in the current Samba 3.0 development tree. -Please refer to the section on "Known Issues" for more details. +This is the first official release of Samba 3.0.0 code base. Work +on the SAMBA_3_0 CVS branch continues. Please refer to the section +on "Known Issues" for more details. Major new features: @@ -19,13 +14,13 @@ Major new features: join a ADS realm as a member server and authenticate users using LDAP/Kerberos. -2) Unicode support. Samba will now negotiate UNICODE on the wire and - internally there is now a much better infrastructure for multi-byte - and UNICODE character sets. +2) Unicode support. Samba will now negotiate UNICODE on the wire + and internally there is now a much better infrastructure for + multi-byte and UNICODE character sets. -3) New authentication system. The internal authentication system has - been almost completely rewritten. Most of the changes are internal, - but the new auth system is also very configurable. +3) New authentication system. The internal authentication system + has been almost completely rewritten. Most of the changes are + internal, but the new auth system is also very configurable. 4) New default filename mangling system. @@ -37,11 +32,11 @@ Major new features: 6) Samba now negotiates NT-style status32 codes on the wire. This improves error handling a lot. -7) Better Windows 2000/XP/2003 printing support including publishing +7) Better Windows 2000/XP/2003 printing support including publishing printer attributes in active directory. -8) New loadable module support for passdb backends and - character sets. +8) New loadable module support for passdb backends and character + sets. 9) New default dual-daemon winbindd support for better performance. @@ -59,6 +54,10 @@ Major new features: 14) Full support for client and server SMB signing to ensure compatibility with default Windows 2003 security settings. +15) Improvement of ACL mapping features based on code donated by + Andreas Grünbacher. + + Plus lots of other improvements! @@ -82,12 +81,65 @@ License. ###################################################################### -Changes since 3.0rc2 +Changes since 3.0rc4 #################### Please refer to the CVS log for the SAMBA_3_0 branch for complete details: +1) Fix bug that prevented restoring filenames of length + >100 characters. +2) Fix bug that prevented fast path code in strchr_m + from being used. +3) Make sure we store the desired access flag on incoming + SAMR rpc calls. +4) Fix smbd crash when dealing with mangled file names. +5) Ensure that the group comment field is not overwritten + if it already exists. +6) Fix bug that prevented 'net rpc join' from working + with mixed mode AD domains (bug 442). +7) Fix crash in smbd when a Samba PDC is not able to + enumerate trusted domains (bug 450). +8) Fix crash bug found by the Samba4 testsuite. +9) Fix bug that prevented smbd from returning an ACL list + if one of the SIDs could not be resolved (bug 470). +10) Remove -P option from smbclient printing scripts since it + has a different meaning in Samba 3.0 (bug 473). +11) Sync smbldap-tools with latest version +12) Cleanup some warnings produced by the Sun C compiler. +13) Several fixes for SWAT relating to international character + sets. + + +Changes since 3.0rc3 +#################### + +1) Fix incorrect error message in testparm.c regarding 'map system'. +2) Protect against core dump if ioctl for print job sends invalid + fid. +3) Fix bug in generic hash cacluation. +4) Remove references to unused 'strip dot' parameter +5) Fix CPU burn bug in multi-byte character conversion. +6) Use opt_target_workgroup instead of lp_workgroup() in vampire + code so we can override the value in smb.conf with the -w option. +7) Display an error if we can't create a posix account for the + user when running 'net rpc vampire' (bug 323). +8) Fix UTF8 conversion bugs in LDAP passdb and idmap code (bug 296). +9) Fix smbd crash when changing the machine trust account password + (bug 273). +10) Remove getpwnam() calls from init_sam_from_xxx(). This means + that %u & %g will no longer expand in the "login ..." set of + smb.conf options, but %U and %G still do. The payback is that + winbindd local accounts for users work with 'wbinfo -u' + when winbind is running on a Samba PDC. +11) Fix unitiailized timestamp where merging print_jobs and + lpq listing. +12) Fix bug in debian packaging files affecting non-i386 platforms. + + +Changes since 3.0rc2 +#################### + 1) Remove Perl module dependencies in generated RedHat 8/9 RPMS. 2) Update mount helper to take synonyms for file_mode and dir_mode (fmask and dmask). @@ -560,11 +612,12 @@ Removed Parameters (order alphabetically): * domain guest group * force unknown acl user * nt smb support - * post script + * postscript * printer driver * printer driver file * printer driver location * status + * strip dot * total print jobs * use rhosts * valid chars @@ -655,7 +708,7 @@ New Parameters (new parameters have been grouped by function): General Configuration --------------------- * preload modules - * privatedir + * private dir Modified Parameters (changes in behavior): @@ -681,24 +734,24 @@ ${lock directory}/*tdb before upgrading to Samba 3.0. Samba will upgrade databases as they are opened (if necessary), but downgrading from 3.0 to 2.2 is an unsupported path. -Name Description Backup? ----- ----------- ------- -account_policy User policy settings yes -gencache Generic caching db no -group_mapping Mapping table from Windows yes - groups/SID to unix groups -winbindd_idmap ID map table from SIDS to UNIX yes - uids/gids. -namecache Name resolution cache entries no -netsamlogon_cache Cache of NET_USER_INFO_3 structure no - returned as part of a successful - net_sam_logon request -printing/*.tdb Cached output from 'lpq no - command' created on a per print - service basis -registry Read-only samba registry skeleton no - that provides support for exporting - various db tables via the winreg RPCs +Name Description Backup? +---- ----------- ------- +account_policy User policy settings yes +gencache Generic caching db no +group_mapping Mapping table from Windows yes + groups/SID to unix groups +winbindd_idmap ID map table from SIDS to UNIX yes + uids/gids. +namecache Name resolution cache entries no +netsamlogon_cache Cache of NET_USER_INFO_3 structure no + returned as part of a successful + net_sam_logon request +printing/*.tdb Cached output from 'lpq no + command' created on a per print + service basis +registry Read-only samba registry skeleton no + that provides support for exporting + various db tables via the winreg RPCs Changes in Behavior diff --git a/docs/docbook/projdoc/passdb.xml b/docs/docbook/projdoc/passdb.xml index 75d46af33b4..1e0fcc6e2bf 100644 --- a/docs/docbook/projdoc/passdb.xml +++ b/docs/docbook/projdoc/passdb.xml @@ -1,9 +1,10 @@ &author.jelmer; + &author.jht; &author.jerry; &author.jeremy; - &author.jht; + &person.gd;LDAP updates Olivier (lem)Lemaire @@ -17,27 +18,27 @@ Account Information Databases -Samba 3 implements a new capability to work concurrently with multiple account backends. -The possible new combinations of password backends allows Samba 3 a degree of flexibility +Samba-3 implements a new capability to work concurrently with multiple account backends. +The possible new combinations of password backends allows Samba-3 a degree of flexibility and scalability that previously could be achieved only with MS Windows Active Directory. This chapter describes the new functionality and how to get the most out of it. -In the course of development of Samba-3, a number of requests were received to provide the +In the development of Samba-3, a number of requests were received to provide the ability to migrate MS Windows NT4 SAM accounts to Samba-3 without the need to provide -matching UNIX/Linux accounts. We called this the Non UNIX Accounts (NUA) +matching UNIX/Linux accounts. We called this the Non-UNIX Accounts (NUA) capability. The intent was that an administrator could decide to use the tdbsam -backend and by simply specifying passdb backendtdbsam_nua +backend and by simply specifying passdb backendtdbsam_nua, this would allow Samba-3 to implement a solution that did not use UNIX accounts per se. Late in the development cycle, the team doing this work hit upon some obstacles that prevents this -solution from being used. Given the delays with Samba-3 release a decision was made to NOT -deliver this functionality until a better method of recognising NT Group SIDs from NT User -SIDs could be found. This feature may thus return during the life cycle for the Samba-3 series. +solution from being used. Given the delays with the Samba-3 release, a decision was made to not +deliver this functionality until a better method of recognizing NT Group SIDs from NT User +SIDs could be found. This feature may return during the life cycle for the Samba-3 series. -Samba-3 does NOT support Non-UNIX Account (NUA) operation for user accounts. +Samba-3 does not support Non-UNIX Account (NUA) operation for user accounts. Samba-3 does support NUA operation for machine accounts. @@ -45,52 +46,58 @@ Samba-3 does support NUA operation for machine accounts. Features and Benefits -Samba-3 provides for complete backwards compatibility with Samba-2.2.x functionality +Samba-3 provides for complete backward compatibility with Samba-2.2.x functionality as follows: +SAM backendsmbpasswd +SAM backendldapsam_compat +encrypted passwords + + - Backwards Compatibility Backends + Backward Compatibility Backends - Plain Text: + Plain Text This option uses nothing but the UNIX/Linux /etc/passwd - style back end. On systems that have PAM (Pluggable Authentication Modules) - support all PAM modules are supported. The behaviour is just as it was with + style backend. On systems that have Pluggable Authentication Modules (PAM) + support, all PAM modules are supported. The behavior is just as it was with Samba-2.2.x, and the protocol limitations imposed by MS Windows clients - apply likewise. + apply likewise. Please refer to for more information + regarding the limitations of Plain Text password usage. - smbpasswd: + smbpasswd - This option allows continues use of the smbpasswd + This option allows continued use of the smbpasswd file that maintains a plain ASCII (text) layout that includes the MS Windows LanMan and NT encrypted passwords as well as a field that stores some - account information. This form of password backend does NOT store any of - the MS Windows NT/200x SAM (Security Account Manager) information needed to + account information. This form of password backend does not store any of + the MS Windows NT/200x SAM (Security Account Manager) information required to provide the extended controls that are needed for more comprehensive - interoperation with MS Windows NT4 / 200x servers. + interoperation with MS Windows NT4/200x servers. - This backend should be used only for backwards compatibility with older + This backend should be used only for backward compatibility with older versions of Samba. It may be deprecated in future releases. - ldapsam_compat (Samba-2.2 LDAP Compatibility): + ldapsam_compat (Samba-2.2 LDAP Compatibility) There is a password backend option that allows continued operation with - a existing OpenLDAP backend that uses the Samba-2.2.x LDAP schema extension. + an existing OpenLDAP backend that uses the Samba-2.2.x LDAP schema extension. This option is provided primarily as a migration tool, although there is - no reason to force migration at this time. Note that this tool will eventually + no reason to force migration at this time. This tool will eventually be deprecated. @@ -99,44 +106,46 @@ as follows: - - New Backends - -Samba-3 introduces the following new password backend capabilities: +Samba-3 introduces a number of new password backend capabilities. +SAM backendtdbsam +SAM backendldapsam +SAM backendmysqlsam +SAM backendxmlsam - + +New Backends - tdbsam: + tdbsam This backend provides a rich database backend for local servers. This - backend is NOT suitable for multiple domain controller (ie: PDC + one + backend is not suitable for multiple Domain Controllers (i.e., PDC + one or more BDC) installations. The tdbsam password backend stores the old - smbpasswd information PLUS the extended MS Windows NT / 200x + smbpasswd information plus the extended MS Windows NT / 200x SAM information into a binary format TDB (trivial database) file. The inclusion of the extended information makes it possible for Samba-3 to implement the same account and system access controls that are possible - with MS Windows NT4 and MS Windows 200x based systems. + with MS Windows NT4/200x-based systems. The inclusion of the tdbsam capability is a direct response to user requests to allow simple site operation without the overhead of the complexities of running OpenLDAP. It is recommended to use this only - for sites that have fewer than 250 users. For larger sites or implementations + for sites that have fewer than 250 users. For larger sites or implementations, the use of OpenLDAP or of Active Directory integration is strongly recommended. - ldapsam: + ldapsam This provides a rich directory backend for distributed account installation. @@ -144,41 +153,42 @@ Samba-3 introduces the following new password backend capabilities: Samba-3 has a new and extended LDAP implementation that requires configuration - of OpenLDAP with a new format samba schema. The new format schema file is + of OpenLDAP with a new format Samba schema. The new format schema file is included in the examples/LDAP directory of the Samba distribution. The new LDAP implementation significantly expands the control abilities that were possible with prior versions of Samba. It is now possible to specify - "per user" profile settings, home directories, account access controls, and - much more. Corporate sites will see that the Samba-Team has listened to their + per user profile settings, home directories, account access controls, and + much more. Corporate sites will see that the Samba Team has listened to their requests both for capability and to allow greater scalability. - mysqlsam (MySQL based backend): + mysqlsam (MySQL based backend) - It is expected that the MySQL based SAM will be very popular in some corners. - This database backend will be on considerable interest to sites that want to + It is expected that the MySQL-based SAM will be very popular in some corners. + This database backend will be of considerable interest to sites that want to leverage existing MySQL technology. - xmlsam (XML based datafile): + xmlsam (XML based datafile) +pdbedit Allows the account and password data to be stored in an XML format - data file. This backend can not be used for normal operation, it can only + data file. This backend cannot be used for normal operation, it can only be used in conjunction with pdbedit's pdb2pdb functionality. The DTD that is used might be subject to changes in the future. - The xmlsam option can be useful for account migration between database + The xmlsam option can be useful for account migration between database backends or backups. Use of this tool will allow the data to be edited before migration into another backend format. @@ -191,89 +201,93 @@ Samba-3 introduces the following new password backend capabilities: - + Technical Information - Old windows clients send plain text passwords over the wire. Samba can check these - passwords by crypting them and comparing them to the hash stored in the unix user database. + Old Windows clients send plain text passwords over the wire. Samba can check these + passwords by encrypting them and comparing them to the hash stored in the UNIX user database. - + - Newer windows clients send encrypted passwords (so-called Lanman and NT hashes) over +encrypted passwords + Newer Windows clients send encrypted passwords (so-called Lanman and NT hashes) over the wire, instead of plain text passwords. The newest clients will send only encrypted passwords and refuse to send plain text passwords, unless their registry is tweaked. - These passwords can't be converted to unix style encrypted passwords. Because of that, - you can't use the standard unix user database, and you have to store the Lanman and NT + These passwords can't be converted to UNIX-style encrypted passwords. Because of that, + you can't use the standard UNIX user database, and you have to store the Lanman and NT hashes somewhere else. - In addition to differently encrypted passwords, windows also stores certain data for each - user that is not stored in a unix user database. e.g: workstations the user may logon from, - the location where the users' profile is stored, and so on. Samba retrieves and stores this - information using a passdb backend. Commonly available backends are LDAP, plain text - file, MySQL and nisplus. For more information, see the man page for &smb.conf; regarding the + In addition to differently encrypted passwords, Windows also stores certain data for each + user that is not stored in a UNIX user database. For example, workstations the user may logon from, + the location where the user's profile is stored, and so on. Samba retrieves and stores this + information using a passdb backend. Commonly available backends are LDAP, plain text + file, and MySQL. For more information, see the man page for &smb.conf; regarding the passdb backend parameter. -
IDMAP - - - - -
+ IDMAP: Resolution of SIDs to UIDs.idmap-sid2uid + + +SID + The resolution of SIDs to UIDs is fundamental to correct operation of Samba. In both cases shown, if winbindd is not running, or cannot + be contacted, then only local SID/UID resolution is possible. See and + . + + + IDMAP: Resolution of UIDs to SIDs.idmap-uid2sid Important Notes About Security - The unix and SMB password encryption techniques seem similar on the surface. This - similarity is, however, only skin deep. The unix scheme typically sends clear text + The UNIX and SMB password encryption techniques seem similar on the surface. This + similarity is, however, only skin deep. The UNIX scheme typically sends cleartext passwords over the network when logging in. This is bad. The SMB encryption scheme never sends the cleartext password over the network but it does store the 16 byte hashed values on disk. This is also bad. Why? Because the 16 byte hashed values - are a "password equivalent". You cannot derive the user's password from them, but + are a password equivalent. You cannot derive the user's password from them, but they could potentially be used in a modified client to gain access to a server. This would require considerable technical knowledge on behalf of the attacker but - is perfectly possible. You should thus treat the data stored in whatever passdb - backend you use (smbpasswd file, ldap, mysql) as though it contained the cleartext - passwords of all your users. Its contents must be kept secret, and the file should + is perfectly possible. You should thus treat the datastored in whatever passdb + backend you use (smbpasswd file, LDAP, MYSQL) as though it contained the cleartext + passwords of all your users. Its contents must be kept secret and the file should be protected accordingly. - Ideally we would like a password scheme that involves neither plain text passwords - on the net nor on disk. Unfortunately this is not available as Samba is stuck with - having to be compatible with other SMB systems (WinNT, WfWg, Win95 etc). + Ideally, we would like a password scheme that involves neither plain text passwords + on the network nor on disk. Unfortunately, this is not available as Samba is stuck with + having to be compatible with other SMB systems (Windows NT, Windows for Workgroups, Windows 9x/Me). - Windows NT 4.0 Service pack 3 changed the default setting so that plaintext passwords + Windows NT 4.0 Service Pack 3 changed the default setting so plaintext passwords are disabled from being sent over the wire. This mandates either the use of encrypted - password support or edit the Windows NT registry to re-enable plaintext passwords. + password support or editing the Windows NT registry to re-enable plaintext passwords. - The following versions of MS Windows do not support full domain security protocols, + The following versions of Microsoft Windows do not support full domain security protocols, although they may log onto a domain environment: - MS DOS Network client 3.0 with the basic network redirector installed - Windows 95 with the network redirector update installed - Windows 98 [se] - Windows Me + MS DOS Network client 3.0 with the basic network redirector installed. + Windows 95 with the network redirector update installed. + Windows 98 [Second Edition]. + Windows Me. - MS Windows XP Home does not have facilities to become a domain member and it can - not participate in domain logons. + MS Windows XP Home does not have facilities to become a Domain Member and it cannot participate in domain logons. @@ -282,44 +296,44 @@ Samba-3 introduces the following new password backend capabilities: - Windows NT 3.5x - Windows NT 4.0 - Windows 2000 Professional - Windows 200x Server/Advanced Server - Windows XP Professional + Windows NT 3.5x. + Windows NT 4.0. + Windows 2000 Professional. + Windows 200x Server/Advanced Server. + Windows XP Professional. - All current release of Microsoft SMB/CIFS clients support authentication via the - SMB Challenge/Response mechanism described here. Enabling clear text authentication + All current releases of Microsoft SMB/CIFS clients support authentication via the + SMB Challenge/Response mechanism described here. Enabling cleartext authentication does not disable the ability of the client to participate in encrypted authentication. - Instead, it allows the client to negotiate either plain text _or_ encrypted password + Instead, it allows the client to negotiate either plain text or encrypted password handling. MS Windows clients will cache the encrypted password alone. Where plain text passwords - are re-enabled, through the appropriate registry change, the plain text password is NEVER + are re-enabled through the appropriate registry change, the plain text password is never cached. This means that in the event that a network connections should become disconnected - (broken) only the cached (encrypted) password will be sent to the resource server to - affect a auto-reconnect. If the resource server does not support encrypted passwords the - auto-reconnect will fail. USE OF ENCRYPTED PASSWORDS IS STRONGLY ADVISED. + (broken), only the cached (encrypted) password will be sent to the resource server to + effect an auto-reconnect. If the resource server does not support encrypted passwords the + auto-reconnect will fail. Use of encrypted passwords is strongly advised. Advantages of Encrypted Passwords - Plain text passwords are not passed across + Plaintext passwords are not passed across the network. Someone using a network sniffer cannot just record passwords going to the SMB server. - Plain text passwords are not stored anywhere in + Plaintext passwords are not stored anywhere in memory or on disk. - WinNT doesn't like talking to a server + Windows NT does not like talking to a server that does not support encrypted passwords. It will refuse - to browse the server if the server is also in user level + to browse the server if the server is also in User Level security mode. It will insist on prompting the user for the password on each connection, which is very annoying. The only things you can do to stop this is to use SMB encryption. @@ -335,18 +349,18 @@ Samba-3 introduces the following new password backend capabilities: - Advantages of non-encrypted passwords + Advantages of Non-Encrypted Passwords - Plain text passwords are not kept - on disk, and are NOT cached in memory. + Plaintext passwords are not kept + on disk, and are not cached in memory. - Uses same password file as other unix - services such as login and ftp + Uses same password file as other UNIX + services such as Login and FTP. - Use of other services (such as telnet and ftp) which - send plain text passwords over the net, so sending them for SMB - isn't such a big deal. + Use of other services (such as Telnet and FTP) that + send plain text passwords over the network, so sending them for SMB + is not such a big deal. @@ -356,12 +370,12 @@ Samba-3 introduces the following new password backend capabilities: Every operation in UNIX/Linux requires a user identifier (UID), just as in - MS Windows NT4 / 200x this requires a Security Identifier (SID). Samba provides + MS Windows NT4/200x this requires a Security Identifier (SID). Samba provides two means for mapping an MS Windows user to a UNIX/Linux UID. - Firstly, all Samba SAM (Security Account Manager database) accounts require + First, all Samba SAM (Security Account Manager database) accounts require a UNIX/Linux UID that the account will map to. As users are added to the account information database, Samba will call the add user script interface to add the account to the Samba host OS. In essence all accounts in @@ -369,8 +383,8 @@ Samba-3 introduces the following new password backend capabilities: - The second way to affect Windows SID to UNIX UID mapping is via the - idmap uid, idmap gid parameters in &smb.conf;. + The second way to effect Windows SID to UNIX UID mapping is via the + idmap uid and idmap gid parameters in &smb.conf;. Please refer to the man page for information about these parameters. These parameters are essential when mapping users from a remote SAM server. @@ -383,24 +397,62 @@ Samba-3 introduces the following new password backend capabilities: Samba-3 has a special facility that makes it possible to maintain identical UIDs and GIDs on all servers in a distributed network. A distributed network is one where there exists - a PDC, one or more BDCs and/or one or more domain member servers. Why is this important? - This is important if files are being shared over more than one protocol (eg: NFS) and where + a PDC, one or more BDCs and/or one or more Domain Member servers. Why is this important? + This is important if files are being shared over more than one protocol (e.g., NFS) and where users are copying files across UNIX/Linux systems using tools such as rsync. The special facility is enabled using a parameter called idmap backend. - The default setting for this parameter is an empty string. Administrators should NOT set this - parameter except when an LDAP based passdb backend is in use. An example of use is: + The default setting for this parameter is an empty string. Technically it is possible to use + an LDAP based idmap backend for UIDs and GIDs, but it makes most sense when this is done for + network configurations that also use LDAP for the SAM backend. A sample use is shown in + . +SAM backendldapsam +Example configuration with the LDAP idmap backend +SAM backendxmlsam [global] -idmap backendldapsam://ldap-server.quenya.org:636 +idmap backendldapsam:ldap://ldap-server.quenya.org:636 +Alternately, this could be specified as: +idmap backendldapsam:ldaps://ldap-server.quenya.org + + A network administrator who wants to make significant use of LDAP backends will sooner or later be + exposed to the excellent work done by PADL Software. PADL have + produced and released to open source an array of tools that might be of interest. These tools include: + + + + + + nss_ldap: An LDAP Name Service Switch module to provide native + name service support for AIX, Linux, Solaris, and other operating systems. This tool + can be used for centralized storage and retrieval of UIDs/GIDs. + + + + + + pam_ldap: A PAM module that provides LDAP integration for UNIX/Linux + system access authentication. + + + + + idmap_ad: An IDMAP backend that supports the Microsoft Services for + UNIX RFC 2307 schema available from their web + site. + + + + +
@@ -408,25 +460,25 @@ Samba-3 introduces the following new password backend capabilities: Account Management Tools -Samba provides two (2) tools for management of User and machine accounts. These tools are +pdbedit +Samba provides two tools for management of user and machine accounts. These tools are called smbpasswd and pdbedit. A third tool is under -development but is NOT expected to ship in time for Samba-3.0.0. The new tool will be a TCL/TK -GUI tool that looks much like the MS Windows NT4 Domain User Manager - hopefully this will +development but is not expected to ship in time for Samba-3.0.0. The new tool will be a TCL/TK +GUI tool that looks much like the MS Windows NT4 Domain User Manager. Hopefully this will be announced in time for the Samba-3.0.1 release. The <emphasis>smbpasswd</emphasis> Command - The smbpasswd utility is a utility similar to the passwd - or yppasswd programs. It maintains the two 32 byte password + The smbpasswd utility is similar to the passwd + or yppasswd programs. It maintains the two 32 byte password fields in the passdb backend. smbpasswd works in a client-server mode where it contacts the - local smbd to change the user's password on its behalf. This has enormous benefits - as follows: + local smbd to change the user's password on its behalf. This has enormous benefits. @@ -437,15 +489,18 @@ be announced in time for the Samba-3.0.1 release. smbpasswd can be used to: - +User Management +User AccountsAdding/Deleting + + - add user or machine accounts - delete user or machine accounts - enable user or machine accounts - disable user or machine accounts - set to NULL user passwords - manage interdomain trust accounts + add user or machine accounts. + delete user or machine accounts. + enable user or machine accounts. + disable user or machine accounts. + set to NULL user passwords. + manage interdomain trust accounts. @@ -457,8 +512,8 @@ be announced in time for the Samba-3.0.1 release. &prompt;smbpasswd Old SMB password: secret - For secret type old value here - or hit return if - there was no old password + For secret, type old value here or press return if + there is no old password. New SMB Password: new secret Repeat New SMB Password: new secret @@ -471,13 +526,13 @@ be announced in time for the Samba-3.0.1 release. - When invoked by an ordinary user it will only allow change of their own + When invoked by an ordinary user, the command will only allow the user to change his or her own SMB password. - When run by root smbpasswd may take an optional argument, specifying - the user name whose SMB password you wish to change. When run as root, smbpasswd + When run by root, smbpasswd may take an optional argument specifying + the user name whose SMB password you wish to change. When run as root, smbpasswd does not prompt for or check the old password value, thus allowing root to set passwords for users who have forgotten their passwords. @@ -485,37 +540,43 @@ be announced in time for the Samba-3.0.1 release. smbpasswd is designed to work in the way familiar to UNIX users who use the passwd or yppasswd commands. - While designed for administrative use, this tool provides essential user level + While designed for administrative use, this tool provides essential User Level password change capabilities. - For more details on using smbpasswd refer to the man page (the + For more details on using smbpasswd, refer to the man page (the definitive reference). - + The <emphasis>pdbedit</emphasis> Command +pdbedit pdbedit is a tool that can be used only by root. It is used to manage the passdb backend. pdbedit can be used to: +User Management +User AccountsAdding/Deleting + - add, remove or modify user accounts - listing user accounts - migrate user accounts + add, remove or modify user accounts. + list user accounts. + migrate user accounts. +pdbedit The pdbedit tool is the only one that can manage the account security and policy settings. It is capable of all operations that smbpasswd can do as well as a super set of them. +pdbedit One particularly important purpose of the pdbedit is to allow the migration of account information from one passdb backend to another. See the XML password backend section of this chapter. @@ -551,6 +612,7 @@ Password must change: Mon, 18 Jan 2038 20:14:07 GMT +pdbedit The pdbedit tool allows migration of authentication (account) databases from one backend to another. For example: To migrate accounts from an old smbpasswd database to a tdbsam @@ -594,43 +656,45 @@ backends of the same type. For example, to use two different tdbsam databases: -passdb backendtdbsam:/etc/samba/passdb.tdb, tdbsam:/etc/samba/old-passdb.tdb + passdb backendtdbsam:/etc/samba/passdb.tdb \ + tdbsam:/etc/samba/old-passdb.tdb - Plain Text + Plaintext - Older versions of Samba retrieved user information from the unix user database + Older versions of Samba retrieved user information from the UNIX user database and eventually some other fields from the file /etc/samba/smbpasswd or /etc/smbpasswd. When password encryption is disabled, no SMB specific data is stored at all. Instead all operations are conducted via the way that the Samba host OS will access its /etc/passwd database. - eg: On Linux systems that is done via PAM. + Linux systems For example, all operations are done via PAM. - smbpasswd - Encrypted Password Database + smbpasswd &smbmdash; Encrypted Password Database +SAM backendsmbpasswd Traditionally, when configuring encrypt passwordsyes in Samba's &smb.conf; file, user account information such as username, LM/NT password hashes, password change times, and account - flags have been stored in the smbpasswd(5) file. There are several - disadvantages to this approach for sites with very large numbers of users (counted + flags have been stored in the smbpasswd(5) file. There are several + disadvantages to this approach for sites with large numbers of users (counted in the thousands). - The first is that all lookups must be performed sequentially. Given that + The first problem is that all lookups must be performed sequentially. Given that there are approximately two lookups per domain logon (one for a normal session connection such as when mapping a network drive or printer), this - is a performance bottleneck for large sites. What is needed is an indexed approach - such as is used in databases. + is a performance bottleneck for large sites. What is needed is an indexed approach + such as used in databases. @@ -641,7 +705,7 @@ backends of the same type. For example, to use two different tdbsam databases: - And finally, the amount of information which is stored in an smbpasswd entry leaves + Finally, the amount of information that is stored in an smbpasswd entry leaves no room for additional attributes such as a home directory, password expiration time, or even a Relative Identifier (RID). @@ -649,15 +713,15 @@ backends of the same type. For example, to use two different tdbsam databases: As a result of these deficiencies, a more robust means of storing user attributes - used by smbd was developed. The API which defines access to user accounts + used by smbd was developed. The API which defines access to user accounts is commonly referred to as the samdb interface (previously this was called the passdb API, and is still so named in the Samba CVS trees). Samba provides an enhanced set of passdb backends that overcome the deficiencies - of the smbpasswd plain text database. These are tdbsam, ldapsam, and xmlsam. - Of these ldapsam will be of most interest to large corporate or enterprise sites. + of the smbpasswd plain text database. These are tdbsam, ldapsam and xmlsam. + Of these, ldapsam will be of most interest to large corporate or enterprise sites. @@ -665,26 +729,36 @@ backends of the same type. For example, to use two different tdbsam databases: tdbsam - Samba can store user and machine account data in a "TDB" (Trivial Database). - Using this backend doesn't require any additional configuration. This backend is + +SAM backendtdbsam + Samba can store user and machine account data in a TDB (Trivial Database). + Using this backend does not require any additional configuration. This backend is recommended for new installations that do not require LDAP. - As a general guide the Samba-Team does NOT recommend using the tdbsam backend for sites + As a general guide, the Samba Team does not recommend using the tdbsam backend for sites that have 250 or more users. Additionally, tdbsam is not capable of scaling for use - in sites that require PDB/BDC implementations that requires replication of the account + in sites that require PDB/BDC implementations that require replication of the account database. Clearly, for reason of scalability, the use of ldapsam should be encouraged. + + The recommendation of a 250 user limit is purely based on the notion that this + would generally involve a site that has routed networks, possibly spread across + more than one physical location. The Samba Team has not at this time established + the performance based scalability limits of the tdbsam architecture. + + ldapsam +SAM backendldapsam There are a few points to stress that the ldapsam does not provide. The LDAP - support referred to in the this documentation does not include: + support referred to in this documentation does not include: @@ -694,32 +768,29 @@ backends of the same type. For example, to use two different tdbsam databases: - The second item can be accomplished by using LDAP NSS and PAM modules. LGPL - versions of these libraries can be obtained from PADL Software - (http://www.padl.com/). More - information about the configuration of these packages may be found at "LDAP, - System Administration; Gerald Carter, O'Reilly; Chapter 6: Replacing NIS". - Refer to - http://safari.oreilly.com/?XmlId=1-56592-491-6 for those who might wish to know - more about configuration and administration of an OpenLDAP server. + The second item can be accomplished by using LDAP NSS and PAM modules. LGPL + versions of these libraries can be obtained from + PADL Software. + More information about the configuration of these packages may be found at + + LDAP, System Administration; Gerald Carter by O'Reilly; Chapter 6: Replacing NIS." This document describes how to use an LDAP directory for storing Samba user - account information traditionally stored in the smbpasswd(5) file. It is + account information traditionally stored in the smbpasswd(5) file. It is assumed that the reader already has a basic understanding of LDAP concepts - and has a working directory server already installed. For more information - on LDAP architectures and Directories, please refer to the following sites. + and has a working directory server already installed. For more information + on LDAP architectures and directories, please refer to the following sites: - OpenLDAP - http://www.openldap.org/ - iPlanet Directory Server - - http://iplanet.netscape.com/directory + OpenLDAP + Sun iPlanet Directory Server - Two additional Samba resources which may prove to be helpful are + Two additional Samba resources which may prove to be helpful are: @@ -736,9 +807,9 @@ backends of the same type. For example, to use two different tdbsam databases: The LDAP ldapsam code has been developed and tested using the OpenLDAP 2.0 and 2.1 server and - client libraries. The same code should work with Netscape's Directory Server and client SDK. + client libraries. The same code should work with Netscape's Directory Server and client SDK. However, there are bound to be compile errors and bugs. These should not be hard to fix. - Please submit fixes via Bug reporting facility. + Please submit fixes via the process outlined in . @@ -748,14 +819,14 @@ backends of the same type. For example, to use two different tdbsam databases: - Samba 3.0 includes the necessary schema file for OpenLDAP 2.0 in - examples/LDAP/samba.schema. The sambaSamAccount objectclass is given here: + Samba-3.0 includes the necessary schema file for OpenLDAP 2.0 in + examples/LDAP/samba.schema. The sambaSamAccount objectclass is given here: -objectclass ( 1.3.6.1.4.1.7165.2.2.6 NAME 'sambaSamAccount' SUP top AUXILIARY - DESC 'Samba 3.0 Auxiliary SAM Account' +objectclass (1.3.6.1.4.1.7165.2.2.6 NAME 'sambaSamAccount' SUP top AUXILIARY + DESC 'Samba-3.0 Auxiliary SAM Account' MUST ( uid $ sambaSID ) MAY ( cn $ sambaLMPassword $ sambaNTPassword $ sambaPwdLastSet $ sambaLogonTime $ sambaLogoffTime $ sambaKickoffTime $ @@ -768,19 +839,19 @@ objectclass ( 1.3.6.1.4.1.7165.2.2.6 NAME 'sambaSamAccount' SUP top AUXILIARY The samba.schema file has been formatted for OpenLDAP 2.0/2.1. - The OID's are owned by the Samba Team and as such is legal to be openly published. - If you translate the schema to be used with Netscape DS, please - submit the modified schema file as a patch to - jerry@samba.org. + The Samba Team owns the OID space used by the above schema and recommends its use. + If you translate the schema to be used with Netscape DS, please submit the modified + schema file as a patch to jerry@samba.org. - Just as the smbpasswd file is meant to store information which supplements a + Just as the smbpasswd file is meant to store information that provides information additional to a user's /etc/passwd entry, so is the sambaSamAccount object - meant to supplement the UNIX user account information. A sambaSamAccount is a - STRUCTURAL objectclass so it can be stored individually - in the directory. However, there are several fields (e.g. uid) which overlap - with the posixAccount objectclass outlined in RFC2307. This is by design. + meant to supplement the UNIX user account information. A sambaSamAccount is a + AUXILIARY objectclass so it can be used to augment existing + user account information in the LDAP directory, thus providing information needed + for Samba account handling. However, there are several fields (e.g., uid) that overlap + with the posixAccount objectclass outlined in RFC2307. This is by design. + + + +SAMBA - opening windows to a wider world + + + + + + + + + + + + + + + + + + + + - + @@ -79,7 +184,7 @@ for a stable 3.0 release. - + @@ -87,7 +192,7 @@ for a stable 3.0 release. - + @@ -102,16 +207,16 @@ for a stable 3.0 release. - - + + - - + + @@ -119,48 +224,52 @@ for a stable 3.0 release. 4.0 PDC to a Samba PDC - - + + - - + + - - + + - + - - + + - + - - - + + + - + + - + + + + @@ -171,9 +280,10 @@ for a stable 3.0 release. - + + @@ -185,19 +295,34 @@ for a stable 3.0 release. - - - + + + - - - + + + + + + + + + + + + + + + + + +
+ + + samba + + +

+ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +


+

Roadmap to 3.0

-

Page Last Updated : 5 Mar, 2003 -

Estimated shipdate : When it is ready. -

Current Alpha Release : Samba-3.0alpha22 +

Page Last Updated : 12th Sep, 2003 +

Current Beta Release : Samba-3.0.0rc4

Road to 3.0

    -
  • (5th Mar, 2003) Samba-3.0alpha22 RPMS for Redhat 6.x, 7.x and 8.0 available -

    Binary packages for RedHat Linux 6.x, 7.x and 8.0 systems of the Samba 3.0alpha22 - release are ready for download from the - Binary_Packages/RedHat directory. +

  • (12th Sep, 2003) The fourth release candidate of Samba 3.0.0 is available for download +

    Samba-3.0.0rc4 is now available in source form from samba.org. See the + Release Notes for more details. +

  • +
+
    +
  • (8th Sep, 2003) The third release candidate of Samba 3.0.0 is available for download +

    Samba-3.0.0rc3 is now available in source form from samba.org. See the + Release Notes for more details. +

  • +
+
    +
  • (29th Aug, 2003) The second release candidate of Samba 3.0.0 is available for download +

    Samba-3.0.0rc2 is now available in source form from samba.org. See the + Release Notes for more details. +

  • +
+
    +
  • (16th Aug, 2003) The first release candidate of Samba 3.0.0 is available for download +

    Samba-3.0.0rc1 is now available in source form from samba.org. See the + Release Notes for more details. +

  • +
+
    +
  • (16th Jul, 2003) The third beta release of Samba 3.0.0 is available for download +

    Samba-3.0.0beta3 is now available in source form from samba.org. See the + Release Notes for more details. This + could be the last beta release before moving onto 3.0.0 release candidates. +

  • +
+
    +
  • (1st Jul, 2003) The second beta release of Samba 3.0.0 is available for download +

    Samba-3.0.0beta2 is now available in source form from samba.org. See the + Release Notes for more details. +

  • +
+
    +
  • (7th Jun, 2003) The first beta release of Samba 3.0.0 is available for download +

    Samba-3.0.0beta1 is now available in source form from samba.org. See the + Release Notes for more details. +

  • +
+
    +
  • (14th May, 2003) The Feature Freeze is in place with the 3.0alpha24 release +

    The 3.0alpha24 release is provided to aid developers in testing Samba + in preparation for the first beta release of 3.0 tenatively planned for May 26. + Refer to the main page on samba.org + for download locations.

    -
  • (26th Nov, 2002) Samba-3.0alpha21 RPMS for Redhat 7.x and 8.0 available -

    Binary packages for RedHat Linux 7.x and 8.0 systems of the Samba 3.0alpha21 - release are ready for download from the - Binary_Packages/RedHat directory. +

  • (5th May, 2003) Feature Freeze and Samba 3.0 beta release dates +

    The Samba Team has agreed to push the feature freeze for Samba 3.0 + development to May 12, 2003. Following this will be two weeks of testing + with the first planned beta release of Samba 3.0 on May 26. Following + the open-ended beta period will be preview (preX) releases, followed by + release candidate builds (rcX) and finally 3.0.0. There is no estimated + shipping date on the initial stable 3.0.0 release. +

    Here is the mail + sent to samba-technical describing the reasons for the delay.

+
    -
  • (26th Sept, 2002) SAMBA_3_0 cvs branch -

    With the release of 3.0alpha20, the SAMBA_3_0 cvs branch is now being - officially maintained in an effort to stabilize certain features. If you would - like to continue to test the soon-to-be-3.0 code base, please use this branch - tag when checking out the cvs tree. +

  • (31st Mar, 2003) Samba-3.0alpha23 RPMS for Redhat 6.x, 7.x and 8.0 available +

    Binary packages for RedHat Linux 6.x, 7.x and 8.0 systems of the Samba 3.0alpha23 + release are ready for download from the + Binary_Packages/RedHat directory. +

+

Roadmap Overview

This is a feature list/roadmap for the 3.0 release. A lot of discussion has gone on about this. Implementation is a separate discussion :-) If a feature is already done, I marked it as "Req". It should be obvious from this roadmap that one the major hurdles for releasing the 3.0 code base -is the completion of documentation updates. +is the completion of documentation updates.

  • X = done @@ -71,7 +176,7 @@ for a stable 3.0 release.
yes X XoX
yes X XoX
yes X XoX
Windows NT 4.0 Style Trust Relationship yes XooXX
NTLMv2 yes XooXX
yes XooXX
Winbind working with Samba PDC yes XooXX
Loadable RPC implementations yes XooXX
hook for utilizing a centralized winbindd id map databaseUtilizing a centralized winbindd id map database yesooXX o
Group Mapping support(privileges need some work, etc...)Mapping between Windows and UNIX groups yesoooXXX
Publishing printers in AD (probably will make 3.0 but will not delay release)Publishing printers in AD yes XX oo
 
Stackable VFS no XoX X
SAM replication (full implementation still lacks some decoding work; post 3.0) no
SMB signing (needs more research; not a show stopper) no---XXX
schannel, ntlmv2 sign & seal (needs more research) noin-progress--XXX
alternative backend for WINS database (there is a patch that still needs some work)noin-progress--
Group policy objects, profiles, and SYSVOL replication protocolsnoin-progress--
@@ -207,9 +332,33 @@ Plus the following interesting, but non-show stopping projects
  • background updates of print queues via a dedicated process
  • WINS replication with Windows NT WINS servers -
  • alternative backend for WINS database (there is a patch that still needs some work)
- + + + + + +


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + + + samba - opening windows to a wider world + + + + + + +
+
+ + +
+
+ + + + -- cgit v1.2.1 From b766fe78a7d8e4095d42e123f2b21369113c1f14 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Fri, 26 Sep 2003 14:44:11 +0000 Subject: don't write to static pointers; patch from Anthony --- source/configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/configure.in b/source/configure.in index b981313c9ad..8c2e9e7f9bc 100644 --- a/source/configure.in +++ b/source/configure.in @@ -480,7 +480,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, ".")); -- cgit v1.2.1 From 6d310e98e0d8654a95de98fcd4aa55e3c681157d Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 28 Sep 2003 23:14:56 +0000 Subject: Add draft about new registry subsystem --- docs/docbook/devdoc/dev-doc.xml | 2 + docs/docbook/devdoc/registry.xml | 209 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 211 insertions(+) create mode 100644 docs/docbook/devdoc/registry.xml diff --git a/docs/docbook/devdoc/dev-doc.xml b/docs/docbook/devdoc/dev-doc.xml index 7000d09c988..e112a0f9e1e 100644 --- a/docs/docbook/devdoc/dev-doc.xml +++ b/docs/docbook/devdoc/dev-doc.xml @@ -20,6 +20,7 @@ + ]> @@ -82,6 +83,7 @@ url="http://www.fsf.org/licenses/gpl.txt">http://www.fsf.org/licenses/gpl.txt diff --git a/docs/docbook/devdoc/registry.xml b/docs/docbook/devdoc/registry.xml new file mode 100644 index 00000000000..b331ebce7f9 --- /dev/null +++ b/docs/docbook/devdoc/registry.xml @@ -0,0 +1,209 @@ + + + &author.jelmer; + 24 September 2003 + + + The registry subsystem + + Planned backends + + + The new registry subsystem will work with several different backends: + + + + NT4 (NT4 registry files) + TDB (Samba TDB files) + RPC (Remote Registry over RPC, reg pipe) + wine (Wine Registry Files) + gconf (The GNOME configuration backend) + + + + +Data structures + + +The following structure describes a registry key: + + + +typedef struct reg_key_s { + char *name; /* Name of the key */ + smb_ucs2_t *class_name; /* Name of key class */ + int type; /* One of REG_ROOT_KEY or REG_SUB_KEY */ + NTTIME last_mod; /* Time last modified */ + struct reg_key_s *owner; + struct key_list_s *sub_keys; /* NULL indicates keys not available in memory, function should be called */ + struct val_list_s *values; /* NULL indicates values not available in memory, function should be called */ + SEC_DESC *security; + REG_HANDLE *handle; /* Pointer to REG_HANDLE this key belongs to */ + void *backend_data; /* Pointer used by the backend */ +} REG_KEY; + + +The following structure describes a registry value: + + +typedef struct val_key_s { + char *name; /* NULL if name not available */ + int data_type; + int data_len; + void *data_blk; /* Might want a separate block */ + REG_HANDLE *handle; /* Pointer to REG_HANDLE this key belongs to */ + void *backend_data; +} REG_VAL; + + +The following structures are used for lists of subkeys or values: + + +/* container for registry subkey names */ +typedef struct key_list_s { + TALLOC_CTX *ctx; + uint32 num_subkeys; + REG_KEY **subkeys; +} REG_KEY_LIST; + +/* container for registry values */ +typedef struct val_list_s { + TALLOC_CTX *ctx; + uint32 num_vals; + REG_VAL **vals; +} REG_VAL_LIST; + + + +And this structure is used for an instance of a registry (a registry file that's opened, a remote registry pipe we're connected to, etc). + + + +typedef struct reg_handle_s { + REGISTRY_OPS *functions; + REG_KEY *root; /* NULL if not available */ + void *backend_data; +} REG_HANDLE; + + + + + + External interface + + +REG_HANDLE *reg_open(char *backend, char *location, BOOL try_full_load); +REG_KEY *reg_open_key(REG_KEY *parent, char *name); +REG_VAL *reg_key_get_val(REG_KEY *key, char *name); +REG_VAL_LIST *reg_key_get_vals(REG_KEY *key); +REG_KEY_LIST *reg_key_get_subkeys(REG_KEY *key); +BOOL reg_key_del(REG_KEY *key); +BOOL reg_val_del(REG_VAL *val); +BOOL reg_key_add(REG_KEY *parent, REG_KEY *key); +BOOL reg_val_add(REG_KEY *parent, REG_VAL *val): +BOOL reg_val_update(REG_VAL *val); +BOOL reg_key_update(REG_KEY *key); +void reg_free_key(REG_KEY *key); +void reg_free_val(REG_VAL *val); +void reg_free(REG_HANDLE *h); +void reg_free_key_list(REG_KEY_LIST *list): +void reg_free_val_list(REG_VAL_LIST *list): + + + + + + Utility functions + + The following helper functions are available: + + +void reg_key_list_init( REG_KEY_LIST *ctr ); +int reg_key_list_addkey( REG_KEY_LIST *ctr, const char *keyname ); +int reg_key_list_numkeys( REG_KEY_LIST *ctr ); +char* reg_key_list_specific_key( REG_KEY_LIST *ctr, uint32 key_index ); +void reg_key_list_destroy( REG_KEY_LIST *ctr ); +void reg_val_list_init( REG_VAL_LIST *ctr ); +int reg_val_list_numvals( REG_VAL_LIST *ctr ); +void free_registry_value( REG_VAL *val ); +uint8* regval_data_p( REG_VAL *val ); +int regval_size( REG_VAL *val ); +char* regval_name( REG_VAL *val ); +uint32 regval_type( REG_VAL *val ); +TALLOC_CTX* reg_val_list_getctx( REG_VAL_LIST *val ); +int reg_val_list_addvalue( REG_VAL_LIST *ctr, const char *name, uint16 type, + const char *data_p, size_t size ); +int reg_val_list_copyvalue( REG_VAL_LIST *ctr, REG_VAL *val ); +int reg_val_list_delvalue( REG_VAL_LIST *ctr, const char *name ); +void reg_val_list_destroy( REG_VAL_LIST *ctr ); + + + + + + Writing backends + +There are basically two ways of reading data from the registry: loading +it all into memory and then working in this copy in memory, or +re-reading/re-opening it every time necessary. + +This interface aims to support both types. + +A registry backend should provide the following functions: + + +typedef struct { + REG_HANDLE *(*open_registry) (const char *location, BOOL try_complete_load); + REG_KEY *(*open_root_key) (REG_HANDLE *); + REG_KEY *(*open_key_rel) (REG_KEY *parent, const char *name); + /* if open_key_abs is set to NULL, a default implementation will be provided. */ + REG_KEY *(*open_key_abs) (REG_HANDLE *, const char *name); + REG_KEY_LIST *(*get_subkeys) (REG_KEY *); + REG_VAL_LIST *(*get_values) (REG_KEY *); + BOOL (*add_key)(REG_KEY *, REG_KEY *); + BOOL (*update_key)(REG_KEY *); + BOOL (*del_key)(REG_KEY *); + BOOL (*add_value)(REG_KEY *, REG_VAL *); + BOOL (*update_value)(REG_VAL *); + BOOL (*del_value)(REG_VAL *); + REG_VAL *(*get_value) (REG_KEY *, const char *name); + /* It is not guaranteed that no data has been stored before save() + * has been called. This function is only useful for backends that + * store the data in memory and then write out the whole registry at once */ + BOOL (*save)(REG_HANDLE *, const char *location); + BOOL (*close_registry) (REG_HANDLE *); + void (*free_key)(REG_KEY *); + void (*free_value)(REG_VAL *); +} REGISTRY_OPS; + + +open_root_key() is optional. It's only called if the + root field of the REG_HANDLE struct is NULL. + +open_key_abs() is optional. If it's NULL, the frontend will + provide a replacement, using open_key_rel(). + +get_values() and get_value() are optional. They're only called if +the values field of the REG_KEY struct is NULL. + +get_subkeys() and get_key() are optional. THey're only called + if the subkeys field of the REG_KEY struct is NULL. + + + +Memory allocation + +Okay, so who's responsible for what parts of the memory? + +The memory is basically maintained by the backends. When the user +is finished using a particular structure, it should call the related free +function for the structure it's freeing. + +The backend should then decide what to do with the structure. It may +choose to free it, or, if it's maintaining single copies of everything in +memory, may choose to ignore the free and free it when the registry is closed. + + + + + -- cgit v1.2.1 From 034fe96f9c3d3328bc69ef328f10690336dc35b0 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 29 Sep 2003 02:40:09 +0000 Subject: Testparm fixes: - Also check global 'hosts allow'/'hosts deny' when checking access to share - Warn when user specifies 2 arguments instead of 1 or 3. Patch from Jay Fenlason --- source/utils/testparm.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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 { -- cgit v1.2.1 From e3e13cbc19d00b10d161a46a78e993232c1504c8 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:01:11 +0000 Subject: Merge from 3.0: >last minute updates from Buchan --- packaging/Mandrake/smb.conf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packaging/Mandrake/smb.conf b/packaging/Mandrake/smb.conf index 6ea66351913..4981d22174b 100644 --- a/packaging/Mandrake/smb.conf +++ b/packaging/Mandrake/smb.conf @@ -233,7 +233,7 @@ ; add user to group script = /usr/share/samba/scripts/smbldap-groupmod.pl -m '%u' '%g' ; delete user from group script = /usr/share/samba/scripts/smbldap-groupmod.pl -x '%u' '%g' ; set primary group script = /usr/share/samba/scripts/smbldap-usermod.pl -g '%g' '%u' -; add group script = /usr/share/samba/scripts/smbldap-groupadd.pl '%g' && /usr/share/samba3/scripts/smbldap-groupshow.pl %g|awk '/^gidNumber:/ {print $2}' +; add group script = /usr/share/samba/scripts/smbldap-groupadd.pl '%g' && /usr/share/samba/scripts/smbldap-groupshow.pl %g|awk '/^gidNumber:/ {print $2}' ; delete group script = /usr/share/samba/scripts/smbldap-userdel.pl '%g' @@ -279,7 +279,6 @@ # start_tls should run on 389, but samba defaults incorrectly to 636 ; ldap port = 389 ; ldap suffix = dc=mydomain,dc=com -; ldap server = ldap.mydomain.com # Seperate suffixes are available for machines, users, groups, and idmap, if # ldap suffix appears first, it is appended to the specific suffix. # Example for a unix-ish directory layout: -- cgit v1.2.1 From 1c14a9d267c41ad632923dd44e324e8b99dd1fee Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:06:11 +0000 Subject: Merge from 3.0: >last minute updates from Buchan (actually was my change to add swat msg translation files to rpm) --- packaging/RedHat/samba.spec.tmpl | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/RedHat/samba.spec.tmpl b/packaging/RedHat/samba.spec.tmpl index fa4b7b070b5..063af05dd38 100644 --- a/packaging/RedHat/samba.spec.tmpl +++ b/packaging/RedHat/samba.spec.tmpl @@ -416,6 +416,7 @@ fi %attr(755,root,root) %{prefix}/lib/samba/charset/*.so #%attr(755,root,root) %{prefix}/lib/samba/pdb/*.so %attr(755,root,root) %{prefix}/lib/samba/*.dat +%attr(755,root,root) %{prefix}/lib/samba/*.msg %{prefix}/include/libsmbclient.h %{prefix}/lib/libsmbclient.a %{prefix}/lib/libsmbclient.so -- cgit v1.2.1 From e7006f27729679d56f52838699d894cf6143c019 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:06:49 +0000 Subject: Merge from 3.0: >make sure to install the *msg files for SWAT --- packaging/Solaris/makepkg.sh.tmpl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packaging/Solaris/makepkg.sh.tmpl b/packaging/Solaris/makepkg.sh.tmpl index d1da9d5f129..df9d6b89d58 100755 --- a/packaging/Solaris/makepkg.sh.tmpl +++ b/packaging/Solaris/makepkg.sh.tmpl @@ -119,6 +119,13 @@ add_dynamic_entries() do echo "f none samba/$i=$i 0644 root other" done + # add the .msg files for SWAT + echo "#\n# msg files \n#" + for file in $DISTR_BASE/source/po/*.msg ; do + bfile=`basename $file` + echo f none /usr/local/samba/lib/$bfile=source/po/$bfile + done + echo "#\n# HTML documentation for SWAT\n#" cd $DISTR_BASE/docs/htmldocs for htmldoc in * -- cgit v1.2.1 From e2da7c8a9dc0e4c698c330422682feccae879bbd Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:07:30 +0000 Subject: Merge from 3.0: >Change AC_CHECK_LIB_EXT to prepend libraries instead of append. This >is the same way AC_CHECK_LIB works. Fix for bug 508. > >This may have to go a few rounds on the build farm to ensure it works >everywhere. --- source/aclocal.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/aclocal.m4 b/source/aclocal.m4 index 52396e56d6c..e1ea9385fda 100644 --- a/source/aclocal.m4 +++ b/source/aclocal.m4 @@ -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] -- cgit v1.2.1 From e2ab9e54cd0ec0002175cf18ff364f4aebaf85a0 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:17:09 +0000 Subject: Merge from 3.0: >Fix for #480. Change the interface for init_unistr2 to not take a length >but a flags field. We were assuming that 2*strlen(mb_string) == length of ucs2-le string. >This is not the case. Count it after conversion. >Jeremy. --- source/include/rpc_lsa.h | 2 - source/include/rpc_misc.h | 8 +- source/lib/util_unistr.c | 12 +- source/python/py_spoolss_forms.c | 2 +- source/python/py_spoolss_forms_conv.c | 2 +- source/registry/reg_printing.c | 41 ++-- source/rpc_client/cli_srvsvc.c | 16 +- source/rpc_parse/parse_dfs.c | 20 +- source/rpc_parse/parse_ds.c | 6 +- source/rpc_parse/parse_lsa.c | 39 +--- source/rpc_parse/parse_misc.c | 98 ++++---- source/rpc_parse/parse_net.c | 108 ++++----- source/rpc_parse/parse_reg.c | 64 ++---- source/rpc_parse/parse_samr.c | 416 ++++++++++++++-------------------- source/rpc_parse/parse_spoolss.c | 79 +++---- source/rpc_parse/parse_srv.c | 74 +++--- source/rpc_server/srv_dfs_nt.c | 12 +- source/rpc_server/srv_lsa_ds_nt.c | 6 +- source/rpc_server/srv_lsa_nt.c | 71 +++--- source/rpc_server/srv_samr_nt.c | 23 +- source/rpc_server/srv_spoolss_nt.c | 14 +- source/rpcclient/cmd_spoolss.c | 4 +- 22 files changed, 467 insertions(+), 650 deletions(-) diff --git a/source/include/rpc_lsa.h b/source/include/rpc_lsa.h index fa49d76c885..93bc08a0ce0 100644 --- a/source/include/rpc_lsa.h +++ b/source/include/rpc_lsa.h @@ -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 f9dd15c36bf..aaaad55c20c 100644 --- a/source/include/rpc_misc.h +++ b/source/include/rpc_misc.h @@ -148,7 +148,7 @@ typedef struct bufhdr_info typedef struct buffer2_info { uint32 buf_max_len; - uint32 undoc; + uint32 offset; uint32 buf_len; /* unicode characters. ***MUST*** be little-endian. **NOT** necessarily null-terminated */ uint16 *buffer; @@ -173,7 +173,7 @@ typedef struct buffer5_info typedef struct unistr2_info { uint32 uni_max_len; - uint32 undoc; + uint32 offset; uint32 uni_str_len; /* unicode characters. ***MUST*** be little-endian. **must** be null-terminated and the uni_str_len should include @@ -185,7 +185,7 @@ typedef struct unistr2_info typedef struct string2_info { uint32 str_max_len; - uint32 undoc; + uint32 offset; uint32 str_str_len; uint8 *buffer; /* uint8 characters. **NOT** necessarily null-terminated */ } STRING2; @@ -403,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/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/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_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..3a5b232dc31 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; } @@ -1954,14 +1940,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); } /******************************************************************* 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;istrings[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_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_samr.c b/source/rpc_parse/parse_samr.c index 420a7277651..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 */ } /******************************************************************* @@ -5441,17 +5393,6 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z 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); @@ -5496,15 +5426,34 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z 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; @@ -5536,17 +5485,6 @@ void init_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z 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 */ @@ -5554,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); @@ -5590,16 +5517,35 @@ void init_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z 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; @@ -5900,17 +5846,6 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr, uint16 logon_count, 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; usr->logoff_time = *logoff_time; usr->kickoff_time = *kickoff_time; @@ -5918,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)); @@ -5952,15 +5876,34 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr, 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; @@ -5981,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); @@ -6003,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)); @@ -6031,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); @@ -6100,16 +6015,35 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID * 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; @@ -6249,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); } @@ -6720,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; @@ -6793,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; @@ -6938,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); } /******************************************************************* @@ -7105,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_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_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 686a3069bbf..0921824cadd 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; @@ -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( ihdr_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; diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c index 828e07c1ad9..71e5bc7d70b 100644 --- a/source/rpc_server/srv_samr_nt.c +++ b/source/rpc_server/srv_samr_nt.c @@ -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_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index 7159527a7d8..493f58f8a81 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); @@ -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/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 */ -- cgit v1.2.1 From 799da7092c5b56914512f843789adbedec5ac8f5 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:18:00 +0000 Subject: Merge from 3.0: >Fix for valid users = %S in homes share. >Jeremy. --- source/smbd/password.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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) -- cgit v1.2.1 From 424acd6ee92c46c565886c3305c3492737538d3d Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:18:42 +0000 Subject: Merge from 3.0: >Ensure %S gets expanded in read/write lists. >Jeremy. --- source/smbd/service.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/source/smbd/service.c b/source/smbd/service.c index 44d73b2ab27..e4c3890f864 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 */ -- cgit v1.2.1 From 1ab70b41a9eba59272c0af5a8036c32366734177 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:20:11 +0000 Subject: Merge from 3.0: >More bug #413. Fix bad html table row termination in SWAT wizard code found by >Monyo. Also remove debugging d_printf() which snuck in the last commit. >Change title of SWAT globals page from 'Global Variables' to 'Global >Parameters' to be more consistent with the other pages. --- source/web/swat.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/web/swat.c b/source/web/swat.c index 1c892559dd9..2b2686cc5ae 100644 --- a/source/web/swat.c +++ b/source/web/swat.c @@ -737,8 +737,10 @@ static void wizard_page(void) d_printf(" Not Used ", (winstype == 0) ? "checked" : ""); d_printf(" Server for client use ", (winstype == 1) ? "checked" : ""); d_printf(" Client of another WINS server ", (winstype == 2) ? "checked" : ""); + d_printf("\n"); + d_printf("Remote WINS Server Error: WINS Server Mode and WINS Support both set in smb.conf"); d_printf("Please Select desired WINS mode above."); } - d_printf(""); d_printf("%s\n","Expose Home Directories: "); d_printf(" Yes", (have_home == -1) ? "" : "checked "); d_printf(" No", (have_home == -1 ) ? "checked" : ""); @@ -780,7 +781,7 @@ static void globals_page(void) unsigned int parm_filter = FLAG_BASIC; int mode = 0; - d_printf("

%s

\n", _("Global Variables")); + d_printf("

%s

\n", _("Global Parameters")); if (cgi_variable("Commit")) { commit_parameters(GLOBAL_SECTION_SNUM); -- cgit v1.2.1 From 3420320714798427bf9b760ed89fa4ce9346ad19 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:20:55 +0000 Subject: Merge from 3.0: >Fix to parse the level-2 strings. From Anthony Liguori aliguor@us.ibm.com. >Jeremy. --- source/utils/net_ads_cldap.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) 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); -- cgit v1.2.1 From fab80c98a05645f420014c61f1d7f156f400ec55 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:21:01 +0000 Subject: Remove Japanese swat image files. --- swat/lang/ja/images/globals.gif | Bin 1613 -> 0 bytes swat/lang/ja/images/home.gif | Bin 1881 -> 0 bytes swat/lang/ja/images/passwd.gif | Bin 1427 -> 0 bytes swat/lang/ja/images/printers.gif | Bin 1987 -> 0 bytes swat/lang/ja/images/samba.gif | Bin 3877 -> 0 bytes swat/lang/ja/images/shares.gif | Bin 1590 -> 0 bytes swat/lang/ja/images/status.gif | Bin 2582 -> 0 bytes swat/lang/ja/images/viewconfig.gif | Bin 1485 -> 0 bytes 8 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 swat/lang/ja/images/globals.gif delete mode 100644 swat/lang/ja/images/home.gif delete mode 100644 swat/lang/ja/images/passwd.gif delete mode 100644 swat/lang/ja/images/printers.gif delete mode 100644 swat/lang/ja/images/samba.gif delete mode 100644 swat/lang/ja/images/shares.gif delete mode 100644 swat/lang/ja/images/status.gif delete mode 100644 swat/lang/ja/images/viewconfig.gif diff --git a/swat/lang/ja/images/globals.gif b/swat/lang/ja/images/globals.gif deleted file mode 100644 index 5f8eb15b34a..00000000000 Binary files a/swat/lang/ja/images/globals.gif and /dev/null differ diff --git a/swat/lang/ja/images/home.gif b/swat/lang/ja/images/home.gif deleted file mode 100644 index a4e61229583..00000000000 Binary files a/swat/lang/ja/images/home.gif and /dev/null differ diff --git a/swat/lang/ja/images/passwd.gif b/swat/lang/ja/images/passwd.gif deleted file mode 100644 index c8242bf7228..00000000000 Binary files a/swat/lang/ja/images/passwd.gif and /dev/null differ diff --git a/swat/lang/ja/images/printers.gif b/swat/lang/ja/images/printers.gif deleted file mode 100644 index f0db94cb57a..00000000000 Binary files a/swat/lang/ja/images/printers.gif and /dev/null differ diff --git a/swat/lang/ja/images/samba.gif b/swat/lang/ja/images/samba.gif deleted file mode 100644 index 0c13dc9ef37..00000000000 Binary files a/swat/lang/ja/images/samba.gif and /dev/null differ diff --git a/swat/lang/ja/images/shares.gif b/swat/lang/ja/images/shares.gif deleted file mode 100644 index afc1b55cf5e..00000000000 Binary files a/swat/lang/ja/images/shares.gif and /dev/null differ diff --git a/swat/lang/ja/images/status.gif b/swat/lang/ja/images/status.gif deleted file mode 100644 index f506cda77f8..00000000000 Binary files a/swat/lang/ja/images/status.gif and /dev/null differ diff --git a/swat/lang/ja/images/viewconfig.gif b/swat/lang/ja/images/viewconfig.gif deleted file mode 100644 index ebc05f6c69d..00000000000 Binary files a/swat/lang/ja/images/viewconfig.gif and /dev/null differ -- cgit v1.2.1 From 0871be2bfad8bfa5d4f0ff78e732c1073055da2e Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:22:04 +0000 Subject: Merge from 3.0: >Allow d_printf() to handle strings with escaped quotation marks since the >msg file includes the escape character. > >Fixes bug #489. --- source/intl/lang_tdb.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) 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) -- cgit v1.2.1 From 12659ae74965f8a088361cb4fbf8730cdad84af1 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:22:55 +0000 Subject: Merge from 3.0: >Apply some NULL pointer paranoia to previous wins hook fix. >Fix broken wins hook functionality. A i18n fixe caused the name type >to be appended to the netbios name between angle brackets. This interfered >the 'sh -c' used to implement smbrun(). Closes bug #528. --- source/nmbd/nmbd_winsserver.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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); -- cgit v1.2.1 From 7bd450f8b678e835ba4f9cfdc3d096b04da6f8f7 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 29 Sep 2003 06:23:56 +0000 Subject: Merge from 3.0: >iconv isn't const safe. Neither should smb_iconv be. >Jeremy. --- source/lib/iconv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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]; -- cgit v1.2.1 From 294f376aa908a9c56b73b9bfe48d56012a8f557b Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 29 Sep 2003 23:35:39 +0000 Subject: Take care of condition where DOS and NT error codes must differ. Found by DOS program test by Amir Hardon . Jeremy. --- source/smbd/reply.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/smbd/reply.c b/source/smbd/reply.c index 6ac4cffddb4..303e33cc488 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -417,7 +417,7 @@ 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; + return ERROR_BOTH(NT_STATUS_NOT_A_DIRECTORY,ERRDOS,ERRbadpath); } if (!ok) { -- cgit v1.2.1 From b6433f5db77a1d62309946c6f23c18c6c299d0c5 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Wed, 1 Oct 2003 17:02:09 +0000 Subject: merge of parameter changes from 3.0 and fix for bug 550 --- source/lib/system.c | 8 +++++--- source/lib/system_smbd.c | 2 +- source/param/loadparm.c | 5 +---- 3 files changed, 7 insertions(+), 8 deletions(-) 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/param/loadparm.c b/source/param/loadparm.c index 0efa2796c36..45626192dbe 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; @@ -972,7 +971,6 @@ static struct parm_struct parm_table[] = { {"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,7 +990,7 @@ 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}, @@ -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; -- cgit v1.2.1 From b19316e071bfee15c8bbf1a521d87f1a4ab53cbe Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Wed, 1 Oct 2003 17:07:28 +0000 Subject: remove duplicate smbspool link on SWAT's front page; bug 541 --- swat/help/welcome.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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
  • smbclient - command line SMB client
  • smbmnt - helper utility for mounting SMB filesystems on Linux hosts
  • smbmount - user space tool for mounting SMB filesystems under Linux -
  • smbspool - command line SMB print client
  • smbumount - user space tool for umounting SMB filesystems under Linux
  • ntlm_auth - allow external programs to use NTLM authentication
  • smbcquotas - get or set quotas on NTFS 5 shares
  • smbsh - Allow access to remote SMB shares using a UNIX shell -
  • smbtree - Text-based SMB network browsing
  • smbspool - Send a print job to an SMB printer +
  • smbtree - Text-based SMB network browsing
  • Diagnostic Utilities
      -- cgit v1.2.1 From ceeb18d171d0e4ffc5c47ac4018909f266fd122c Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Wed, 1 Oct 2003 17:56:51 +0000 Subject: make sure libnss_winbind.so.2 is included in the RedHAT RPMS --- packaging/RedHat/samba.spec.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/RedHat/samba.spec.tmpl b/packaging/RedHat/samba.spec.tmpl index 063af05dd38..4a9c6df163a 100644 --- a/packaging/RedHat/samba.spec.tmpl +++ b/packaging/RedHat/samba.spec.tmpl @@ -158,7 +158,7 @@ install -m755 source/nsswitch/libnss_wins.so $RPM_BUILD_ROOT/lib # 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 @@ -445,6 +445,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 -- cgit v1.2.1 From aa7fccf6ad81da8a4a14abd699d1f765e18cd10c Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Wed, 1 Oct 2003 18:54:29 +0000 Subject: save and restore CFLAGS before/after AC_PROG_CC; this macro seems to overwrite the CFLAGS variable --- source/configure.in | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/configure.in b/source/configure.in index 8c2e9e7f9bc..987e1ceb6be 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,7 +193,15 @@ 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) -- cgit v1.2.1 From 8a284463458cfaaff9986bbc459dfc113f921c6c Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 1 Oct 2003 19:33:27 +0000 Subject: Allow ^C to interrupt smbpasswd if using our getpass. Jeremy. --- source/lib/getsmbpass.c | 148 ++++++++++++++++++++++++++++-------------------- 1 file changed, 86 insertions(+), 62 deletions(-) diff --git a/source/lib/getsmbpass.c b/source/lib/getsmbpass.c index b6ae09b3181..93449b004d4 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_sig) { + 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 -- cgit v1.2.1 From 202d4e46527993d359df7cd04fb611c22cc920c3 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 1 Oct 2003 21:17:46 +0000 Subject: Fixed silly typo checking for signal_handler not signal. Jeremy. --- source/lib/getsmbpass.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/lib/getsmbpass.c b/source/lib/getsmbpass.c index 93449b004d4..27cd5e6dfa2 100644 --- a/source/lib/getsmbpass.c +++ b/source/lib/getsmbpass.c @@ -166,7 +166,7 @@ char *getsmbpass(const char *prompt) printf("\n"); - if (gotintr_sig) { + if (gotintr) { printf("Interupted by signal.\n"); fflush(stdout); exit(1); -- cgit v1.2.1 From 9d2e585e5e6f9066c6901aa8d8308734f8667296 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Wed, 1 Oct 2003 22:00:19 +0000 Subject: commit sign only patch from Andrew; bug 167; tested using 2k & XP clientspreviously joined to the Samba domain --- source/include/rpc_dce.h | 11 +++- source/rpc_client/cli_pipe.c | 29 ++++----- source/rpc_parse/parse_prs.c | 147 +++++++++++++++++++++++++------------------ source/rpc_parse/parse_rpc.c | 6 +- source/rpc_server/srv_pipe.c | 30 +++++---- source/rpcclient/rpcclient.c | 50 ++++++++------- 6 files changed, 159 insertions(+), 114 deletions(-) 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/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_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_rpc.c b/source/rpc_parse/parse_rpc.c index 34ba62caa92..558378548a5 100644 --- a/source/rpc_parse/parse_rpc.c +++ b/source/rpc_parse/parse_rpc.c @@ -1175,7 +1175,7 @@ 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]) + const uchar seq_num[8], const uchar confounder[8]) { if (chk == NULL) return False; @@ -1183,7 +1183,7 @@ BOOL init_rpc_auth_netsec_chk(RPC_AUTH_NETSEC_CHK * chk, 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)); + memcpy(chk->confounder, confounder, sizeof(chk->confounder)); return True; } @@ -1203,7 +1203,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, "data8", ps, depth, chk->confounder, sizeof(chk->confounder)); return True; } 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/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(), -- cgit v1.2.1 From d9b9113a0815aeeddb8fdcccb64e7692fe02a9c2 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 2 Oct 2003 00:55:20 +0000 Subject: Fix for not opening Excel 2000 files that are read-only. Needs tidying up but works for now. Jeremy. --- source/smbd/error.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/smbd/error.c b/source/smbd/error.c index 9d0e34bf527..7eec5e25dfb 100644 --- a/source/smbd/error.c +++ b/source/smbd/error.c @@ -61,9 +61,6 @@ int unix_error_packet(char *outbuf,int def_class,uint32 def_code, eclass = unix_ERR_class; ecode = unix_ERR_code; ntstatus = unix_ERR_ntstatus; - unix_ERR_class = SMB_SUCCESS; - unix_ERR_code = 0; - unix_ERR_ntstatus = NT_STATUS_OK; } else { while (unix_dos_nt_errmap[i].dos_class != 0) { if (unix_dos_nt_errmap[i].unix_error == errno) { @@ -93,6 +90,10 @@ int error_packet(char *outbuf,NTSTATUS ntstatus, if (errno != 0) DEBUG(3,("error string = %s\n",strerror(errno))); + unix_ERR_class = SMB_SUCCESS; + unix_ERR_code = 0; + unix_ERR_ntstatus = NT_STATUS_OK; + /* * We can explicitly force 32 bit error codes even when the * parameter "nt status" is set to no by pre-setting the -- cgit v1.2.1 From 0857932c1c1960fd68a10f3d1f8c300b7a28b6d7 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 2 Oct 2003 17:26:44 +0000 Subject: Correct fix for excel read-only bug. Add panic for logic error in developer mode. Jeremy. --- source/smbd/error.c | 10 +++++++--- source/smbd/trans2.c | 3 --- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/source/smbd/error.c b/source/smbd/error.c index 7eec5e25dfb..795bf0949cc 100644 --- a/source/smbd/error.c +++ b/source/smbd/error.c @@ -61,6 +61,9 @@ int unix_error_packet(char *outbuf,int def_class,uint32 def_code, eclass = unix_ERR_class; ecode = unix_ERR_code; ntstatus = unix_ERR_ntstatus; + unix_ERR_class = SMB_SUCCESS; + unix_ERR_code = 0; + unix_ERR_ntstatus = NT_STATUS_OK; } else { while (unix_dos_nt_errmap[i].dos_class != 0) { if (unix_dos_nt_errmap[i].unix_error == errno) { @@ -90,9 +93,10 @@ int error_packet(char *outbuf,NTSTATUS ntstatus, if (errno != 0) DEBUG(3,("error string = %s\n",strerror(errno))); - unix_ERR_class = SMB_SUCCESS; - unix_ERR_code = 0; - unix_ERR_ntstatus = NT_STATUS_OK; +#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 diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c index 033e76a33e1..ee63220d188 100644 --- a/source/smbd/trans2.c +++ b/source/smbd/trans2.c @@ -1785,12 +1785,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); } } -- cgit v1.2.1 From a0828a2a1ce04075f0a7cb4a201cea0781998237 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 2 Oct 2003 17:36:45 +0000 Subject: Portability fix from schmitz@hp.com (Joachim Schmitz) for bug #548. Jeremy. --- source/rpc_server/srv_spoolss_nt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index 493f58f8a81..f2fb02176b5 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -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; -- cgit v1.2.1 From 9519ffc7cbdb37a4279c8804230596978679220e Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 2 Oct 2003 17:53:55 +0000 Subject: Portability fix from schmitz@hp.com (Joachim Schmitz). Bug #547. Jeremy. --- source/passdb/pdb_smbpasswd.c | 4 ++++ 1 file changed, 4 insertions(+) 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); -- cgit v1.2.1 From 6defe43e6d48619cee31b6c7fc602973e8eeef3f Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 2 Oct 2003 18:22:48 +0000 Subject: Portability fixes from schmitz@hp.com (Joachim Schmitz). Bug #549. Jeremy. --- source/tdb/tdbback.c | 11 +++++++++++ source/tdb/tdbbackup.c | 12 ++++++++++++ source/utils/profiles.c | 8 +++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/source/tdb/tdbback.c b/source/tdb/tdbback.c index 744cface557..9466c299910 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 +#endif + #include #include #include @@ -27,10 +32,16 @@ #include #include #include + #include #include #include #include + +#else +#include "includes.h" +#endif + #include "tdb.h" static int failed; 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 +#endif + #include #include #include @@ -54,6 +59,13 @@ #include #include #include + +#else + +#include "includes.h" + +#endif + #include "tdb.h" #include "tdbback.h" 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 #include #include -#include 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); -- cgit v1.2.1 From 6cbdbdf9e1e76837c8ef03e795db11caa74ccf18 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Fri, 3 Oct 2003 15:08:16 +0000 Subject: abstract UUID parsing code to an individual function; patch from Anthony --- source/rpc_parse/parse_rpc.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/source/rpc_parse/parse_rpc.c b/source/rpc_parse/parse_rpc.c index 558378548a5..c1e663f8778 100644 --- a/source/rpc_parse/parse_rpc.c +++ b/source/rpc_parse/parse_rpc.c @@ -243,29 +243,48 @@ 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) 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, &uuid->time_mid)) + return False; + if(!prs_uint16 ("data ", ps, depth, &uuid->time_hi_and_version)) return False; - if(!prs_uint16 ("data ", ps, depth, &ifc->uuid.time_mid)) + + if(!prs_uint8s (False, "data ", ps, depth, uuid->remaining, sizeof(uuid->remaining))) return False; - if(!prs_uint16 ("data ", ps, depth, &ifc->uuid.time_hi_and_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; - if(!prs_uint8s (False, "data ", ps, depth, ifc->uuid.remaining, sizeof(ifc->uuid.remaining))) + prs_debug(ps, depth, desc, "smb_io_rpc_iface"); + depth++; + + if (!smb_io_rpc_uuid( "uuid", ps, depth, &ifc->uuid)) return False; + if(!prs_uint32 ( "version", ps, depth, &ifc->version)) return False; -- cgit v1.2.1 From bbc403ec6ee119f1bbb636deb40563dfdf258a74 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Fri, 3 Oct 2003 15:11:38 +0000 Subject: cleaning out patch list; patch from Steve L. to change the cwd before the postexec script --- source/smbd/service.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/smbd/service.c b/source/smbd/service.c index e4c3890f864..e5655bd9f4c 100644 --- a/source/smbd/service.c +++ b/source/smbd/service.c @@ -894,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)) { @@ -913,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); } -- cgit v1.2.1 From 9da4d1f7dbb289dd1db5e57a4fd78004bbfbd26b Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Fri, 3 Oct 2003 21:43:56 +0000 Subject: don't call ads_destroy() twice; fixes segfault in winbindd when DC goes down; bug 437 --- source/libads/ldap.c | 3 ++- source/libads/ldap_utils.c | 7 ++++++- source/nsswitch/winbindd_ads.c | 15 +++++++++++---- 3 files changed, 19 insertions(+), 6 deletions(-) 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/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; } -- cgit v1.2.1 From 66074d3b097d8cf2a231bf08c7f4db62da68189d Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Mon, 6 Oct 2003 01:24:48 +0000 Subject: split some security related functions in their own files. (no need to include all of smbd files to use some basic sec functions) also minor compile fixes --- source/Makefile.in | 7 +- source/include/privileges.h | 2 + source/include/rpc_lsa.h | 6 +- source/include/talloc.h | 21 ++ source/lib/privileges.c | 345 +++++++++++++++++++ source/lib/secace.c | 285 ++++++++++++++++ source/lib/secacl.c | 118 +++++++ source/lib/secdesc.c | 522 +++++++++++++++++++++++++++++ source/lib/talloc.c | 21 -- source/lib/util_seaccess.c | 129 -------- source/lib/util_sid.c | 2 +- source/passdb/pdb_get_set.c | 4 +- source/rpc_client/cli_lsarpc.c | 6 +- source/rpc_parse/parse_lsa.c | 43 ++- source/rpc_parse/parse_rpc.c | 6 +- source/rpc_parse/parse_sec.c | 727 ----------------------------------------- source/rpc_server/srv_lsa.c | 2 +- source/rpc_server/srv_lsa_nt.c | 70 ++-- source/script/mkproto.awk | 2 +- source/tdb/tdbback.c | 3 +- 20 files changed, 1376 insertions(+), 945 deletions(-) create mode 100644 source/lib/privileges.c create mode 100644 source/lib/secace.c create mode 100644 source/lib/secacl.c create mode 100644 source/lib/secdesc.c diff --git a/source/Makefile.in b/source/Makefile.in index 0ea2c4411f8..57950bebdeb 100644 --- a/source/Makefile.in +++ b/source/Makefile.in @@ -181,7 +181,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 +219,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 +346,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@ 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_lsa.h b/source/include/rpc_lsa.h index 93bc08a0ce0..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 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/lib/privileges.c b/source/lib/privileges.c new file mode 100644 index 00000000000..1c23d9e40e5 --- /dev/null +++ b/source/lib/privileges.c @@ -0,0 +1,345 @@ +/* + Unix SMB/CIFS implementation. + Privileges handling functions + Copyright (C) Jean François Micouleau 1998-2001 + Copyright (C) Simo Sorce 2002-2003 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" + +/* defines */ + +#define ALLOC_CHECK(ptr, err, label, str) do { if ((ptr) == NULL) { DEBUG(0, ("%s: out of memory!\n", str)); err = NT_STATUS_NO_MEMORY; goto label; } } while(0) +#define NTSTATUS_CHECK(err, label, str1, str2) do { if (!NT_STATUS_IS_OK(err)) { DEBUG(0, ("%s: %s failed!\n", str1, str2)); } } while(0) + +/**************************************************************************** + Check if a user is a mapped group. + + This function will check if the group SID is mapped onto a + system managed gid or onto a winbind manged sid. + In the first case it will be threated like a mapped group + and the backend should take the member list with a getgrgid + and ignore any user that have been possibly set into the group + object. + + In the second case, the group is a fully SAM managed group + served back to the system through winbind. In this case the + members of a Local group are "unrolled" to cope with the fact + that unix cannot contain groups inside groups. + The backend MUST never call any getgr* / getpw* function or + loops with winbind may happen. + ****************************************************************************/ + +#if 0 +NTSTATUS is_mapped_group(BOOL *mapped, const DOM_SID *sid) +{ + NTSTATUS result; + gid_t id; + + /* look if mapping exist, do not make idmap alloc an uid if SID is not found */ + result = idmap_get_gid_from_sid(&id, sid, False); + if (NT_STATUS_IS_OK(result)) { + *mapped = gid_is_in_winbind_range(id); + } else { + *mapped = False; + } + + return result; +} +#endif + +/**************************************************************************** + duplicate alloc luid_attr + ****************************************************************************/ +NTSTATUS dupalloc_luid_attr(TALLOC_CTX *mem_ctx, LUID_ATTR **new_la, LUID_ATTR *old_la) +{ + NTSTATUS ret; + + *new_la = (LUID_ATTR *)talloc(mem_ctx, sizeof(LUID_ATTR)); + ALLOC_CHECK(new_la, ret, done, "dupalloc_luid_attr"); + + (*new_la)->luid.high = old_la->luid.high; + (*new_la)->luid.low = old_la->luid.low; + (*new_la)->attr = old_la->attr; + + ret = NT_STATUS_OK; + +done: + return ret; +} + +/**************************************************************************** + initialise a privilege list + ****************************************************************************/ +NTSTATUS init_privilege(PRIVILEGE_SET **priv_set) +{ + NTSTATUS ret; + TALLOC_CTX *mem_ctx = talloc_init("privilege set"); + ALLOC_CHECK(mem_ctx, ret, done, "init_privilege"); + + *priv_set = talloc_zero(mem_ctx, sizeof(PRIVILEGE_SET)); + ALLOC_CHECK(*priv_set, ret, done, "init_privilege"); + + (*priv_set)->mem_ctx = mem_ctx; + + ret = NT_STATUS_OK; + +done: + return ret; +} + +NTSTATUS init_priv_with_ctx(TALLOC_CTX *mem_ctx, PRIVILEGE_SET **priv_set) +{ + NTSTATUS ret; + + *priv_set = talloc_zero(mem_ctx, sizeof(PRIVILEGE_SET)); + ALLOC_CHECK(*priv_set, ret, done, "init_privilege"); + + (*priv_set)->mem_ctx = mem_ctx; + (*priv_set)->ext_ctx = True; + + ret = NT_STATUS_OK; + +done: + return ret; +} + +void reset_privilege(PRIVILEGE_SET *priv_set) +{ + priv_set->count = 0; + priv_set->control = 0; + priv_set->set = NULL; +} + +void destroy_privilege(PRIVILEGE_SET **priv_set) +{ + reset_privilege(*priv_set); + if (!((*priv_set)->ext_ctx)) + /* mem_ctx is local, destroy it */ + talloc_destroy((*priv_set)->mem_ctx); + *priv_set = NULL; +} + +/**************************************************************************** + add a privilege to a privilege array + ****************************************************************************/ +NTSTATUS add_privilege(PRIVILEGE_SET *priv_set, LUID_ATTR set) +{ + NTSTATUS ret; + LUID_ATTR *new_set; + + /* check if the privilege is not already in the list */ + if (NT_STATUS_IS_OK(check_priv_in_privilege(priv_set, set))) + return NT_STATUS_UNSUCCESSFUL; + + /* we can allocate memory to add the new privilege */ + + new_set = (LUID_ATTR *)talloc_realloc(priv_set->mem_ctx, priv_set->set, (priv_set->count + 1) * (sizeof(LUID_ATTR))); + ALLOC_CHECK(new_set, ret, done, "add_privilege"); + + new_set[priv_set->count].luid.high = set.luid.high; + new_set[priv_set->count].luid.low = set.luid.low; + new_set[priv_set->count].attr = set.attr; + + priv_set->count++; + priv_set->set = new_set; + + ret = NT_STATUS_OK; + +done: + return ret; +} + +/**************************************************************************** + add all the privileges to a privilege array + ****************************************************************************/ +NTSTATUS add_all_privilege(PRIVILEGE_SET *priv_set) +{ + NTSTATUS result = NT_STATUS_OK; + LUID_ATTR set; + + set.attr = 0; + set.luid.high = 0; + + /* TODO: set a proper list of privileges */ + set.luid.low = SE_PRIV_ADD_USERS; + result = add_privilege(priv_set, set); + NTSTATUS_CHECK(result, done, "add_all_privilege", "add_privilege"); + + set.luid.low = SE_PRIV_ADD_MACHINES; + result = add_privilege(priv_set, set); + NTSTATUS_CHECK(result, done, "add_all_privilege", "add_privilege"); + + set.luid.low = SE_PRIV_PRINT_OPERATOR; + result = add_privilege(priv_set, set); + NTSTATUS_CHECK(result, done, "add_all_privilege", "add_privilege"); + +done: + return result; +} + +/**************************************************************************** + check if the privilege list is empty + ****************************************************************************/ +NTSTATUS check_empty_privilege(PRIVILEGE_SET *priv_set) +{ + if (!priv_set) + return NT_STATUS_INVALID_PARAMETER; + + if (priv_set->count == 0) + return NT_STATUS_OK; + + return NT_STATUS_UNSUCCESSFUL; +} + +/**************************************************************************** + check if the privilege is in the privilege list + ****************************************************************************/ +NTSTATUS check_priv_in_privilege(PRIVILEGE_SET *priv_set, LUID_ATTR set) +{ + int i; + + if (!priv_set) + return NT_STATUS_INVALID_PARAMETER; + + /* if the list is empty, obviously we can't have it */ + if (NT_STATUS_IS_OK(check_empty_privilege(priv_set))) + return NT_STATUS_UNSUCCESSFUL; + + for (i = 0; i < priv_set->count; i++) { + LUID_ATTR *cur_set; + + cur_set = &priv_set->set[i]; + /* check only the low and high part. Checking the attr field has no meaning */ + if ( (cur_set->luid.low == set.luid.low) && + (cur_set->luid.high == set.luid.high) ) { + return NT_STATUS_OK; + } + } + + return NT_STATUS_UNSUCCESSFUL; +} + +/**************************************************************************** + remove a privilege from a privilege array + ****************************************************************************/ +NTSTATUS remove_privilege(PRIVILEGE_SET *priv_set, LUID_ATTR set) +{ + NTSTATUS ret; + LUID_ATTR *new_set; + LUID_ATTR *old_set; + int i,j; + + if (!priv_set) + return NT_STATUS_INVALID_PARAMETER; + + /* check if the privilege is in the list */ + if (!NT_STATUS_IS_OK(check_priv_in_privilege(priv_set, set))) + return NT_STATUS_UNSUCCESSFUL; + + /* special case if it's the only privilege in the list */ + if (priv_set->count == 1) { + reset_privilege(priv_set); + return NT_STATUS_OK; + } + + /* + * the privilege is there, create a new list, + * and copy the other privileges + */ + + old_set = priv_set->set; + + new_set = (LUID_ATTR *)talloc(priv_set->mem_ctx, (priv_set->count - 1) * (sizeof(LUID_ATTR))); + ALLOC_CHECK(new_set, ret, done, "remove_privilege"); + + for (i=0, j=0; i < priv_set->count; i++) { + if ( (old_set[i].luid.low == set.luid.low) && + (old_set[i].luid.high == set.luid.high) ) { + continue; + } + + new_set[j].luid.low = old_set[i].luid.low; + new_set[j].luid.high = old_set[i].luid.high; + new_set[j].attr = old_set[i].attr; + + j++; + } + + if (j != priv_set->count - 1) { + DEBUG(0,("remove_privilege: mismatch ! difference is not -1\n")); + DEBUGADD(0,("old count:%d, new count:%d\n", priv_set->count, j)); + return NT_STATUS_INTERNAL_ERROR; + } + + /* ok everything is fine */ + + priv_set->count--; + priv_set->set = new_set; + + ret = NT_STATUS_OK; + +done: + return ret; +} + +/**************************************************************************** + duplicates a privilege array + the new privilege set must be passed inited + (use init_privilege or init_priv_with_ctx) + ****************************************************************************/ +NTSTATUS dup_priv_set(PRIVILEGE_SET *new_priv_set, PRIVILEGE_SET *priv_set) +{ + NTSTATUS ret; + LUID_ATTR *new_set; + LUID_ATTR *old_set; + int i; + + if (!new_priv_set || !priv_set) + return NT_STATUS_INVALID_PARAMETER; + + /* special case if there are no privileges in the list */ + if (priv_set->count == 0) { + return NT_STATUS_OK; + } + + /* + * create a new list, + * and copy the other privileges + */ + + old_set = priv_set->set; + + new_set = (LUID_ATTR *)talloc(new_priv_set->mem_ctx, (priv_set->count - 1) * (sizeof(LUID_ATTR))); + ALLOC_CHECK(new_set, ret, done, "dup_priv_set"); + + for (i=0; i < priv_set->count; i++) { + + new_set[i].luid.low = old_set[i].luid.low; + new_set[i].luid.high = old_set[i].luid.high; + new_set[i].attr = old_set[i].attr; + } + + new_priv_set->count = priv_set->count; + new_priv_set->control = priv_set->control; + new_priv_set->set = new_set; + + ret = NT_STATUS_OK; + +done: + return ret; +} diff --git a/source/lib/secace.c b/source/lib/secace.c new file mode 100644 index 00000000000..6769f1288a2 --- /dev/null +++ b/source/lib/secace.c @@ -0,0 +1,285 @@ +/* + * Unix SMB/Netbios implementation. + * SEC_ACE handling functions + * Copyright (C) Andrew Tridgell 1992-1998, + * Copyright (C) Jeremy R. Allison 1995-2003. + * Copyright (C) Luke Kenneth Casson Leighton 1996-1998, + * Copyright (C) Paul Ashton 1997-1998. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "includes.h" + +/******************************************************************* + 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); +} + +/******************************************************************* + 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 +********************************************************************/ + +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; + } +} + +/******************************************************************* + 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; +} + +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. +*******************************************************************/ + +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); +} + +/******************************************************************* + Check if this ACE has a SID in common with the token. +********************************************************************/ + +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; +} diff --git a/source/lib/secacl.c b/source/lib/secacl.c new file mode 100644 index 00000000000..756685a8216 --- /dev/null +++ b/source/lib/secacl.c @@ -0,0 +1,118 @@ +/* + * Unix SMB/Netbios implementation. + * SEC_ACL handling routines + * Copyright (C) Andrew Tridgell 1992-1998, + * Copyright (C) Jeremy R. Allison 1995-2003. + * Copyright (C) Luke Kenneth Casson Leighton 1996-1998, + * Copyright (C) Paul Ashton 1997-1998. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "includes.h" + +/******************************************************************* + 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); +} + +/******************************************************************* + 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; +} diff --git a/source/lib/secdesc.c b/source/lib/secdesc.c new file mode 100644 index 00000000000..411185dbfa6 --- /dev/null +++ b/source/lib/secdesc.c @@ -0,0 +1,522 @@ +/* + * Unix SMB/Netbios implementation. + * SEC_DESC handling functions + * Copyright (C) Andrew Tridgell 1992-1998, + * Copyright (C) Jeremy R. Allison 1995-2003. + * Copyright (C) Luke Kenneth Casson Leighton 1996-1998, + * Copyright (C) Paul Ashton 1997-1998. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "includes.h" + +/******************************************************************* + 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_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, secdesc_type, + 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, uint16 type, + 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 = type; + + 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, const SEC_DESC *src) +{ + size_t dummy; + + if(src == NULL) + return NULL; + + return make_sec_desc( ctx, src->revision, src->type, + 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, SEC_DESC_SELF_RELATIVE, + owner_sid, grp_sid, NULL, dacl, sd_size); +} + +/******************************************************************* + 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); +} + +/******************************************************************* + 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]->type, 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]->type, 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; +} + +/* 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, SEC_DESC_SELF_RELATIVE, + parent_ctr->owner_sid, + parent_ctr->grp_sid, + parent_ctr->sacl, + new_dacl, &size); + + sdb = make_sec_desc_buf(ctx, size, sd); + + return sdb; +} + +/******************************************************************* + Sets up a SEC_ACCESS structure. +********************************************************************/ + +void init_sec_access(SEC_ACCESS *t, uint32 mask) +{ + t->mask = mask; +} + 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 2482d582d2c..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, SEC_DESC_SELF_RELATIVE, - 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 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/passdb/pdb_get_set.c b/source/passdb/pdb_get_set.c index 9c2b7e4c700..46c49be8b11 100644 --- a/source/passdb/pdb_get_set.c +++ b/source/passdb/pdb_get_set.c @@ -509,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; @@ -545,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; 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; iset[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_parse/parse_lsa.c b/source/rpc_parse/parse_lsa.c index 3a5b232dc31..22dbd5307a0 100644 --- a/source/rpc_parse/parse_lsa.c +++ b/source/rpc_parse/parse_lsa.c @@ -1809,14 +1809,20 @@ 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; + + 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)); } /******************************************************************* @@ -1840,13 +1846,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; } @@ -2008,11 +2017,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; @@ -2067,11 +2079,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_rpc.c b/source/rpc_parse/parse_rpc.c index c1e663f8778..7e51f1e35b6 100644 --- a/source/rpc_parse/parse_rpc.c +++ b/source/rpc_parse/parse_rpc.c @@ -248,7 +248,7 @@ BOOL smb_io_rpc_hdr(const char *desc, RPC_HDR *rpc, 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_uuid"); @@ -267,7 +267,7 @@ static BOOL smb_io_rpc_uuid(const char *desc, RPC_UUID *uuid, prs_struct *ps, in if(!prs_uint8s (False, "data ", ps, depth, uuid->remaining, sizeof(uuid->remaining))) return False; - return true; + return True; } /******************************************************************* @@ -282,7 +282,7 @@ static BOOL smb_io_rpc_iface(const char *desc, RPC_IFACE *ifc, prs_struct *ps, i prs_debug(ps, depth, desc, "smb_io_rpc_iface"); depth++; - if (!smb_io_rpc_uuid( "uuid", ps, depth, &ifc->uuid)) + if (!smb_io_rpc_uuid( "uuid", &ifc->uuid, ps, depth)) return False; if(!prs_uint32 ( "version", ps, depth, &ifc->version)) diff --git a/source/rpc_parse/parse_sec.c b/source/rpc_parse/parse_sec.c index 0ed930c08d8..bf43ef288ae 100644 --- a/source/rpc_parse/parse_sec.c +++ b/source/rpc_parse/parse_sec.c @@ -27,15 +27,6 @@ #undef DBGC_CLASS #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. ********************************************************************/ @@ -54,51 +45,6 @@ BOOL sec_io_access(const char *desc, SEC_ACCESS *t, prs_struct *ps, int depth) return True; } -/******************************************************************* - 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. ********************************************************************/ @@ -153,127 +99,6 @@ BOOL sec_io_ace(const char *desc, SEC_ACE *psa, prs_struct *ps, int depth) return True; } -/******************************************************************* - 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. @@ -346,332 +171,6 @@ BOOL sec_io_acl(const char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth) return True; } -/******************************************************************* - 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, secdesc_type, - 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, uint16 type, - 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 = type; - - 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->type, - 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, SEC_DESC_SELF_RELATIVE, - owner_sid, grp_sid, NULL, dacl, sd_size); -} - /******************************************************************* Reads or writes a SEC_DESC structure. If reading and the *ppsd = NULL, allocates the structure. @@ -807,42 +306,6 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth) return True; } -/******************************************************************* - 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. ********************************************************************/ @@ -901,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]->type, 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]->type, 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_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_nt.c b/source/rpc_server/srv_lsa_nt.c index 0921824cadd..0a8ad404cb3 100644 --- a/source/rpc_server/srv_lsa_nt.c +++ b/source/rpc_server/srv_lsa_nt.c @@ -955,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; @@ -971,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; iset[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; } @@ -1059,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; @@ -1076,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; icount; 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; @@ -1106,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; @@ -1123,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; icount; 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/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/tdb/tdbback.c b/source/tdb/tdbback.c index 9466c299910..68b6fadc882 100644 --- a/source/tdb/tdbback.c +++ b/source/tdb/tdbback.c @@ -55,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; } -- cgit v1.2.1 From 759990833ef192ffddec58039db1a41a0fafa399 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Mon, 6 Oct 2003 16:42:01 +0000 Subject: default DESTDIR=/ --- source/Makefile.in | 1 + 1 file changed, 1 insertion(+) diff --git a/source/Makefile.in b/source/Makefile.in index 57950bebdeb..4930bb97b4e 100644 --- a/source/Makefile.in +++ b/source/Makefile.in @@ -45,6 +45,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 -- cgit v1.2.1 From cf6ac7995adc8ac116fd8f678ab06d0f91b4fe94 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Mon, 6 Oct 2003 19:24:39 +0000 Subject: cosmetic fix when DESTDIR=/ (default) --- source/script/installdat.sh | 2 +- source/script/installdirs.sh | 8 +++++--- source/script/installman.sh | 2 +- source/script/installmodules.sh | 4 ++-- source/script/installmsg.sh | 2 +- source/script/installscripts.sh | 2 +- source/script/installswat.sh | 2 +- source/script/uninstallbin.sh | 8 ++++---- source/script/uninstallman.sh | 2 +- source/script/uninstallmodules.sh | 4 ++-- source/script/uninstallscripts.sh | 2 +- 11 files changed, 20 insertions(+), 18 deletions(-) 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 # 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/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 -- cgit v1.2.1 From e2f4c3d113fb77b68858c67deff6b92deb311e16 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 6 Oct 2003 21:49:42 +0000 Subject: Fix for bug #562 (incorrect mode sum) by h-yamasaki@pd.jp.nec.com. Jeremy. --- source/smbd/notify_hash.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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); -- cgit v1.2.1 From 76fe5ffb4d757922651e41c3fa7e8bc411214cc7 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 7 Oct 2003 00:05:59 +0000 Subject: Version of patch from nick@isilon.com (Nicholas Kirsch) for bug #564. Canonicalise SMB_INFO_ALLOCATION in the same was as SMB_FS_FULL_SIZE_INFORMATION. Jeremy. --- source/smbd/trans2.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c index ee63220d188..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; } -- cgit v1.2.1 From 19925e3a04f421f4dcc469b701f3cc51ef98ac2c Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Tue, 7 Oct 2003 16:35:03 +0000 Subject: make sure to call get_user_groups() with the full winbindd name for a user if he;she has one; bug 406 --- source/auth/auth_util.c | 17 ++++++++++++++--- source/auth/auth_winbind.c | 16 ++++++++-------- 2 files changed, 22 insertions(+), 11 deletions(-) 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; -- cgit v1.2.1 From cdba166e31b3c611652783a2ab63e59f57f41fde Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 7 Oct 2003 17:23:59 +0000 Subject: Max warnings with gcc. Jeremy. --- source/rpc_parse/parse_lsa.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/rpc_parse/parse_lsa.c b/source/rpc_parse/parse_lsa.c index 22dbd5307a0..f960345fe74 100644 --- a/source/rpc_parse/parse_lsa.c +++ b/source/rpc_parse/parse_lsa.c @@ -1811,7 +1811,7 @@ static BOOL lsa_io_privilege_set(const char *desc, PRIVILEGE_SET *r_c, prs_struc NTSTATUS init_lsa_r_enum_privsaccount(TALLOC_CTX *mem_ctx, LSA_R_ENUMPRIVSACCOUNT *r_u, LUID_ATTR *set, uint32 count, uint32 control) { - NTSTATUS ret; + NTSTATUS ret = NT_STATUS_OK; r_u->ptr = 1; r_u->count = count; @@ -1823,6 +1823,8 @@ NTSTATUS init_lsa_r_enum_privsaccount(TALLOC_CTX *mem_ctx, LSA_R_ENUMPRIVSACCOUN return ret; DEBUG(10,("init_lsa_r_enum_privsaccount: %d %d privileges\n", r_u->count, r_u->set->count)); + + return ret; } /******************************************************************* -- cgit v1.2.1 From 960e2b4a5f09d3ef80a926894ee7a28549b8de45 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 8 Oct 2003 23:21:25 +0000 Subject: Fixup error code returns from Samba4 tester. Ensure invalid paths are validated the same way. Jeremy. --- source/libsmb/errormap.c | 2 +- source/smbd/nttrans.c | 48 +++++++++++--- source/smbd/reply.c | 160 +++++++++++++++++++++++++++++++++++++---------- 3 files changed, 170 insertions(+), 40 deletions(-) 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/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/reply.c b/source/smbd/reply.c index 303e33cc488..2c8b768d70f 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -39,20 +39,32 @@ 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))) + 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)); @@ -2921,13 +2983,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 +3150,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 +3652,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 +3671,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 +3789,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 +3951,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 +3961,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; -- cgit v1.2.1 From e4df46732021be4eeb5693ebe7ec0df77f4bb5df Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 9 Oct 2003 01:46:03 +0000 Subject: Changes to allow Samba3 to pass the Samba4 RAW-READ tests. Jeremy. --- source/locking/brlock.c | 9 +++++++-- source/locking/locking.c | 11 +++++++---- source/smbd/blocking.c | 14 ++++++++------ source/smbd/reply.c | 47 +++++++++++++++++++++++++++++++++++++++-------- 4 files changed, 61 insertions(+), 20 deletions(-) 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; idev, 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); diff --git a/source/smbd/blocking.c b/source/smbd/blocking.c index 8fa2a6494e3..5c6ddbc6b7e 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; } diff --git a/source/smbd/reply.c b/source/smbd/reply.c index 2c8b768d70f..5c1d7915c26 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -1567,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); @@ -1668,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; @@ -1688,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 ) ); @@ -1714,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); @@ -1733,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 @@ -1751,10 +1766,16 @@ 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. + */ + + numtoread = MIN(numtoread,max_recv); nread = read_file(fsp,data,startpos,numtoread); if (nread < 0) { @@ -1796,6 +1817,11 @@ 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. + */ + 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)) { @@ -1863,6 +1889,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); @@ -1901,6 +1928,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); @@ -1993,7 +2021,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); @@ -2626,6 +2654,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); @@ -2638,9 +2668,9 @@ 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 (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 @@ -4140,6 +4170,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); @@ -4260,9 +4291,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 -- cgit v1.2.1 From 0f383593454ae174af6b13624801be4aff3fe24f Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 05:48:23 +0000 Subject: Merge from 3.0: >4 changes > > * default to 1 CPU (patch from Nir Soffer) > * clear up some messy syntax (extra ;'s) > * remove duplicate installation of *msg files > * remove unnecessary build of smbspool`& modules --- packaging/RedHat/samba.spec.tmpl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packaging/RedHat/samba.spec.tmpl b/packaging/RedHat/samba.spec.tmpl index 4a9c6df163a..ee0b43c0170 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,7 +161,7 @@ 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 @@ -427,7 +434,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 -- cgit v1.2.1 From c72cceaccfee303d465c78d31aca639476a21212 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 05:50:06 +0000 Subject: Merge from 3.0: - Updated *.msg files from running genmsg - Add genmsg program - Add Jelmer's Dutch translation --- source/po/de.msg | 1794 ++++++++++--------------------------------------- source/po/en.msg | 1718 +++++++++-------------------------------------- source/po/fr.msg | 1770 +++++++++---------------------------------------- source/po/genmsg | 40 ++ source/po/it.msg | 1780 ++++++++++--------------------------------------- source/po/ja.msg | 1946 ++++++++++-------------------------------------------- source/po/nl.msg | 593 +++++++++++++++++ source/po/pl.msg | 1800 +++++++++----------------------------------------- source/po/tr.msg | 1717 +++++++++-------------------------------------- 9 files changed, 2899 insertions(+), 10259 deletions(-) create mode 100755 source/po/genmsg create mode 100644 source/po/nl.msg 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) \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("%s       %s", -#. 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 "Can't reload %s" +msgstr "" + +#: ../web/swat.c:501 #, c-format -msgid "Logged in as %s

      \n" -msgstr "Verbunden als %s

      \n" +msgid "Logged in as %s" +msgstr "Verbunden als %s" -#: web/swat.c:505 +#: ../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änen master" + +#: ../web/swat.c:735 +msgid "Domain Controller" +msgstr "Domänen 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 zurück" -#: 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ähle Freigabe" -#: web/swat.c:656 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Lösche 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ätige Passwort" muß angegeben werden \n" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " +msgstr " \"Neues/Bestätige Passwort\" muß angegeben werden " -#: web/swat.c:782 -msgid " Re-typed password didn't match new password\n" -msgstr " Das bestätigte 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ätigte 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 für '%s' wurde geändert. \n" +msgid " The passwd for '%s' has been changed." +msgstr " Das Passwort für '%s' wurde geändert." -#: web/swat.c:814 +#: ../web/swat.c:1051 #, c-format -msgid " The passwd for '%s' has NOT been changed. \n" -msgstr " Das Passwort für '%s' wurde nicht geändert. \n" +msgid " The passwd for '%s' has NOT been changed." +msgstr " Das Passwort für '%s' wurde nicht geändert." -#: 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ätige neues Passwort : " +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" +msgstr "Bestätige 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 "Füge Benutzer hinzu" -#: web/swat.c:868 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Lösche 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 löschen 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 löschen wird keine Auswirkung haben." -#: web/swat.c:980 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Wähle Drucker" -#: web/swat.c:999 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Lösche 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 "Verschlüsselte Passwörter" - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "update Verschlüsselte" - -#: param/loadparm.c:662 -msgid "allow trusted domains" -msgstr "Erlaube Vertrauneswürdige Domänen" - -#: 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änge Passwort" - -#: param/loadparm.c:666 -msgid "min password length" -msgstr "Min. Länge Passwort" - -#: param/loadparm.c:667 -msgid "map to guest" -msgstr "Map nach Gast" - -#: param/loadparm.c:668 -msgid "null passwords" -msgstr "leere Passwörter" - -#: param/loadparm.c:669 -msgid "obey pam restrictions" -msgstr "Folge pam Einschränkungen" - -#: 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" -msgstr "" - -#: param/loadparm.c:676 -msgid "root" -msgstr "" - -#: param/loadparm.c:678 -msgid "pam password change" -msgstr "pam Passwortänderung" - -#: 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änke 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 "Ungültige Benutzer" - -#: param/loadparm.c:698 -msgid "valid users" -msgstr "Gültige 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äste" - -#: param/loadparm.c:724 -msgid "only guest" -msgstr "nur Gäste" - -#: param/loadparm.c:726 -msgid "guest ok" -msgstr "Gäste 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" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" msgstr "" -#: param/loadparm.c:743 -msgid "ssl server cert" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" msgstr "" -#: param/loadparm.c:744 -msgid "ssl server key" -msgstr "" +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "Basisoptionen" -#: param/loadparm.c:745 -msgid "ssl client cert" -msgstr "" +#: ../param/loadparm.c:775 +msgid "Security Options" +msgstr "Sicherheitsoptionen" -#: param/loadparm.c:746 -msgid "ssl client key" -msgstr "" +#: ../param/loadparm.c:859 +msgid "Logging Options" +msgstr "Log Optionen" -#: param/loadparm.c:747 -msgid "ssl require clientcert" -msgstr "ssl bedarf eines Clientzertifikats" +#: ../param/loadparm.c:874 +msgid "Protocol Options" +msgstr "Protokoll Optionen" -#: param/loadparm.c:748 -msgid "ssl require servercert" -msgstr "ssl bedarf eines Serverzertifikats" +#: ../param/loadparm.c:911 +msgid "Tuning Options" +msgstr "Optimierungsoptionen" -#: param/loadparm.c:749 -msgid "ssl ciphers" -msgstr "" +#: ../param/loadparm.c:940 +msgid "Printing Options" +msgstr "Druckoptionen" -#: param/loadparm.c:750 -msgid "ssl version" -msgstr "" +#: ../param/loadparm.c:970 +msgid "Filename Handling" +msgstr "Verwaltung Dateinamen" -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "" +#: ../param/loadparm.c:996 +msgid "Domain Options" +msgstr "Domänen Optionen" -#: param/loadparm.c:754 -msgid "Logging Options" -msgstr "Log Optionen" +#: ../param/loadparm.c:1000 +msgid "Logon Options" +msgstr "Login optionen" -#: param/loadparm.c:755 -msgid "log level" -msgstr "Log Stufe" +#: ../param/loadparm.c:1019 +msgid "Browse Options" +msgstr "Browsing Optionen" -#: param/loadparm.c:756 -msgid "debuglevel" -msgstr "Debug Stufe" +#: ../param/loadparm.c:1033 +msgid "WINS Options" +msgstr "WINS Optionen" -#: param/loadparm.c:757 -msgid "syslog" -msgstr "" +#: ../param/loadparm.c:1043 +msgid "Locking Options" +msgstr "Locking Optionen" -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "nur syslog" +#: ../param/loadparm.c:1061 +msgid "Ldap Options" +msgstr "LDAP Optionen" -#: param/loadparm.c:759 -msgid "log file" -msgstr "Log Datei" +#: ../param/loadparm.c:1078 +msgid "Miscellaneous Options" +msgstr "Verschiedene Optionen" -#: param/loadparm.c:761 -msgid "max log size" -msgstr "max log Grösse" +#: ../param/loadparm.c:1138 +msgid "VFS module options" +msgstr "VFS Optionen" -#: 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 -msgid "Protocol Options" -msgstr " Protokoll Optionen" - -#: param/loadparm.c:770 -msgid "protocol" -msgstr "Protokoll" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "" - -#: 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 Unterstützung" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "nt pipe Unterstützung" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "ntacl Unterstützung" - -#: 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 Namensauflösung" - -#: 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 -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 "Grösse 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 -msgid "Printing Options" -msgstr "Druckoptionen" - -#: param/loadparm.c:822 -msgid "total print jobs" -msgstr "Druckaufträge insges." - -#: param/loadparm.c:823 -msgid "max print jobs" -msgstr "Druckaufträge 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 hinzufügen 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 -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 -msgid "Domain Options" -msgstr "Domänen Optionen" - -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "Gruppe Domänenadministratoren" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "Domänen Gastgruppen" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "Verfall Maschinenpasswort" - -#: param/loadparm.c:888 -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 -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änen 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 -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 -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 -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 -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 "Verfügbar" - -#: 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 "Lösche 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" -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 , 2001. +# Copyright (C) 2003 TAKAHASHI Motonobu +# +# 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 \n" +"Last-Translator: TAKAHASHI Motonobu \n" "Language-Team: (Samba Team) \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("%s       %s", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 -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 -msgid "Set Default" -msgstr "" - -#: web/swat.c:502 -#, c-format -msgid "Logged in as %s

      \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" -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 -#, c-format -msgid " The passwd for '%s' has been changed. \n" -msgstr "" - -#: web/swat.c:814 -#, 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 : " -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" -msgstr "" - -#: web/statuspage.c:235 -msgid "nmbd:" -msgstr "" - -#: web/statuspage.c:238 -msgid "Stop nmbd" -msgstr "" - -#: web/statuspage.c:240 -msgid "Start nmbd" -msgstr "" - -#: web/statuspage.c:242 -msgid "Restart nmbd" -msgstr "" - -#: web/statuspage.c:249 -msgid "Active Connections" -msgstr "" - -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 -msgid "PID" -msgstr "" - -#: web/statuspage.c:251 web/statuspage.c:264 -msgid "Client" -msgstr "" - -#: web/statuspage.c:251 -msgid "IP address" -msgstr "" - -#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272 -msgid "Date" -msgstr "" - -#: web/statuspage.c:253 -msgid "Kill" -msgstr "" - -#: web/statuspage.c:261 -msgid "Active Shares" -msgstr "" - -#: web/statuspage.c:264 -msgid "Share" -msgstr "" - -#: web/statuspage.c:264 -msgid "User" -msgstr "" - -#: web/statuspage.c:264 -msgid "Group" -msgstr "" - -#: web/statuspage.c:270 -msgid "Open Files" -msgstr "" - -#: web/statuspage.c:272 -msgid "Sharing" -msgstr "" - -#: web/statuspage.c:272 -msgid "R/W" -msgstr "" - -#: web/statuspage.c:272 -msgid "Oplock" -msgstr "" - -#: web/statuspage.c:272 -msgid "File" -msgstr "" - -#: param/loadparm.c:641 -msgid "Base Options" -msgstr "" - -#: param/loadparm.c:643 -msgid "dos charset" -msgstr "" - -#: 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" -msgstr "" - -#: param/loadparm.c:648 -msgid "directory" -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 -msgid "interfaces" -msgstr "" - -#: param/loadparm.c:655 -msgid "bind interfaces only" -msgstr "" - -#: param/loadparm.c:657 -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 -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 -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 "" - -#: 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 -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 -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 "" - -#: 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 -msgid "ssl version" -msgstr "" - -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "" - -#: param/loadparm.c:754 -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" +#: ../web/swat.c:200 +msgid "Help" msgstr "" -#: param/loadparm.c:764 -msgid "debug hires timestamp" +#: ../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 "" -#: param/loadparm.c:765 -msgid "debug pid" +#: ../web/swat.c:408 +#, c-format +msgid "failed to open %s for writing" msgstr "" -#: param/loadparm.c:766 -msgid "debug uid" +#: ../web/swat.c:431 +#, c-format +msgid "Can't reload %s" msgstr "" -#: param/loadparm.c:768 -msgid "Protocol Options" +#: ../web/swat.c:501 +#, c-format +msgid "Logged in as %s" msgstr "" -#: param/loadparm.c:770 -msgid "protocol" +#: ../web/swat.c:505 +msgid "Home" msgstr "" -#: param/loadparm.c:771 -msgid "large readwrite" +#: ../web/swat.c:507 +msgid "Globals" msgstr "" -#: param/loadparm.c:772 -msgid "max protocol" +#: ../web/swat.c:508 +msgid "Shares" msgstr "" -#: param/loadparm.c:773 -msgid "min protocol" +#: ../web/swat.c:509 +msgid "Printers" msgstr "" -#: param/loadparm.c:774 -msgid "unicode" +#: ../web/swat.c:510 +msgid "Wizard" msgstr "" -#: param/loadparm.c:775 -msgid "read bmpx" +#: ../web/swat.c:513 +msgid "Status" msgstr "" -#: param/loadparm.c:776 -msgid "read raw" +#: ../web/swat.c:514 +msgid "View Config" msgstr "" -#: param/loadparm.c:777 -msgid "write raw" +#: ../web/swat.c:516 +msgid "Password Management" msgstr "" -#: param/loadparm.c:779 -msgid "nt smb support" +#: ../web/swat.c:526 +msgid "Current View Is" msgstr "" -#: param/loadparm.c:780 -msgid "nt pipe support" +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" msgstr "" -#: param/loadparm.c:781 -msgid "nt acl support" +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" msgstr "" -#: param/loadparm.c:782 -msgid "announce version" +#: ../web/swat.c:529 +msgid "Change View To" msgstr "" -#: param/loadparm.c:783 -msgid "announce as" +#: ../web/swat.c:554 +msgid "Current Config" msgstr "" -#: param/loadparm.c:784 -msgid "max mux" +#: ../web/swat.c:558 +msgid "Normal View" msgstr "" -#: param/loadparm.c:785 -msgid "max xmit" +#: ../web/swat.c:560 +msgid "Full View" msgstr "" -#: param/loadparm.c:787 -msgid "name resolve order" +#. 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 "" -#: param/loadparm.c:788 -msgid "max packet" +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" msgstr "" -#: param/loadparm.c:789 -msgid "packet size" +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" msgstr "" -#: param/loadparm.c:790 -msgid "max ttl" +#: ../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 "" -#: param/loadparm.c:791 -msgid "max wins ttl" +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." msgstr "" -#: param/loadparm.c:792 -msgid "min wins ttl" +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" msgstr "" -#: param/loadparm.c:793 -msgid "time server" +#: ../web/swat.c:725 +msgid "Commit" msgstr "" -#: param/loadparm.c:795 -msgid "Tuning Options" +#: ../web/swat.c:726 +msgid "Edit Parameter Values" msgstr "" -#: param/loadparm.c:797 -msgid "change notify timeout" +#: ../web/swat.c:732 +msgid "Server Type" msgstr "" -#: param/loadparm.c:798 -msgid "deadtime" +#: ../web/swat.c:733 +msgid "Stand Alone" msgstr "" -#: param/loadparm.c:799 -msgid "getwd cache" +#: ../web/swat.c:734 +msgid "Domain Member" msgstr "" -#: param/loadparm.c:800 -msgid "keepalive" +#: ../web/swat.c:735 +msgid "Domain Controller" msgstr "" -#: param/loadparm.c:802 -msgid "lpq cache time" +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" msgstr "" -#: param/loadparm.c:803 -msgid "max smbd processes" +#: ../web/swat.c:740 +msgid "Configure WINS As" msgstr "" -#: param/loadparm.c:804 -msgid "max connections" +#: ../web/swat.c:741 +msgid "Not Used" msgstr "" -#: param/loadparm.c:805 -msgid "paranoid server security" +#: ../web/swat.c:742 +msgid "Server for client use" msgstr "" -#: param/loadparm.c:806 -msgid "max disk size" +#: ../web/swat.c:743 +msgid "Client of another WINS server" msgstr "" -#: param/loadparm.c:807 -msgid "max open files" +#: ../web/swat.c:745 +msgid "Remote WINS Server" msgstr "" -#: param/loadparm.c:808 -msgid "min print space" +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" msgstr "" -#: param/loadparm.c:809 -msgid "read size" +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." msgstr "" -#: param/loadparm.c:811 -msgid "socket options" +#: ../web/swat.c:759 +msgid "Expose Home Directories" msgstr "" -#: param/loadparm.c:812 -msgid "stat cache size" +#: ../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:813 -msgid "strict allocate" +#: ../web/swat.c:787 +msgid "Global Parameters" msgstr "" -#: param/loadparm.c:814 -msgid "strict sync" +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 +msgid "Commit Changes" msgstr "" -#: param/loadparm.c:815 -msgid "sync always" +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 +msgid "Reset Values" msgstr "" -#: param/loadparm.c:816 -msgid "use mmap" +#: ../web/swat.c:844 +msgid "Share Parameters" msgstr "" -#: param/loadparm.c:817 -msgid "hostname lookups" +#: ../web/swat.c:887 +msgid "Choose Share" msgstr "" -#: param/loadparm.c:818 -msgid "write cache size" +#: ../web/swat.c:901 +msgid "Delete Share" msgstr "" -#: param/loadparm.c:820 -msgid "Printing Options" +#: ../web/swat.c:908 +msgid "Create Share" msgstr "" -#: param/loadparm.c:822 -msgid "total print jobs" +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" msgstr "" -#: param/loadparm.c:823 -msgid "max print jobs" +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." msgstr "" -#: param/loadparm.c:824 -msgid "load printers" +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " msgstr "" -#: param/loadparm.c:825 -msgid "printcap name" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " msgstr "" -#: param/loadparm.c:826 -msgid "printcap" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " msgstr "" -#: param/loadparm.c:827 -msgid "printable" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " msgstr "" -#: param/loadparm.c:828 -msgid "print ok" +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " msgstr "" -#: param/loadparm.c:829 -msgid "postscript" +#: ../web/swat.c:1048 +#, c-format +msgid " The passwd for '%s' has been changed." msgstr "" -#: param/loadparm.c:830 -msgid "printing" +#: ../web/swat.c:1051 +#, c-format +msgid " The passwd for '%s' has NOT been changed." msgstr "" -#: param/loadparm.c:831 -msgid "print command" +#: ../web/swat.c:1076 +msgid "Server Password Management" msgstr "" -#: param/loadparm.c:832 -msgid "disable spoolss" +#. +#. * Create all the dialog boxes for data collection +#. +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" msgstr "" -#: param/loadparm.c:833 -msgid "lpq command" +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" msgstr "" -#: param/loadparm.c:834 -msgid "lprm command" +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" msgstr "" -#: param/loadparm.c:835 -msgid "lppause command" +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" msgstr "" -#: param/loadparm.c:836 -msgid "lpresume command" +#: ../web/swat.c:1101 ../web/swat.c:1149 +msgid "Change Password" msgstr "" -#: param/loadparm.c:837 -msgid "queuepause command" +#: ../web/swat.c:1104 +msgid "Add New User" msgstr "" -#: param/loadparm.c:838 -msgid "queueresume command" +#: ../web/swat.c:1106 +msgid "Delete User" msgstr "" -#: param/loadparm.c:840 -msgid "enumports command" +#: ../web/swat.c:1108 +msgid "Disable User" msgstr "" -#: param/loadparm.c:841 -msgid "addprinter command" +#: ../web/swat.c:1110 +msgid "Enable User" msgstr "" -#: param/loadparm.c:842 -msgid "deleteprinter command" +#: ../web/swat.c:1123 +msgid "Client/Server Password Management" msgstr "" -#: param/loadparm.c:843 -msgid "show add printer wizard" +#: ../web/swat.c:1140 +msgid "Remote Machine" msgstr "" -#: param/loadparm.c:844 -msgid "os2 driver map" +#: ../web/swat.c:1179 +msgid "Printer Parameters" msgstr "" -#: param/loadparm.c:846 -msgid "printer name" +#: ../web/swat.c:1181 +msgid "Important Note:" msgstr "" -#: param/loadparm.c:847 -msgid "printer" +#: ../web/swat.c:1182 +msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "" -#: param/loadparm.c:848 -msgid "use client driver" +#: ../web/swat.c:1183 +msgid "are autoloaded printers from " msgstr "" -#: param/loadparm.c:849 -msgid "printer driver" +#: ../web/swat.c:1184 +msgid "Printcap Name" msgstr "" -#: param/loadparm.c:850 -msgid "printer driver file" +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "" -#: param/loadparm.c:851 -msgid "printer driver location" +#: ../web/swat.c:1231 +msgid "Choose Printer" msgstr "" -#: param/loadparm.c:853 -msgid "Filename Handling" +#: ../web/swat.c:1250 +msgid "Delete Printer" msgstr "" -#: param/loadparm.c:854 -msgid "strip dot" +#: ../web/swat.c:1257 +msgid "Create Printer" msgstr "" -#: param/loadparm.c:856 -msgid "mangled stack" +#: ../web/statuspage.c:123 +msgid "RDONLY " msgstr "" -#: param/loadparm.c:857 -msgid "default case" +#: ../web/statuspage.c:124 +msgid "WRONLY " msgstr "" -#: param/loadparm.c:858 -msgid "case sensitive" +#: ../web/statuspage.c:125 +msgid "RDWR " msgstr "" -#: param/loadparm.c:859 -msgid "casesignames" +#: ../web/statuspage.c:309 +msgid "Server Status" msgstr "" -#: param/loadparm.c:860 -msgid "preserve case" +#: ../web/statuspage.c:314 +msgid "Auto Refresh" msgstr "" -#: param/loadparm.c:861 -msgid "short preserve case" +#: ../web/statuspage.c:315 ../web/statuspage.c:320 +msgid "Refresh Interval: " msgstr "" -#: param/loadparm.c:862 -msgid "mangle case" +#: ../web/statuspage.c:319 +msgid "Stop Refreshing" msgstr "" -#: param/loadparm.c:863 -msgid "mangling char" +#: ../web/statuspage.c:334 +msgid "version:" msgstr "" -#: param/loadparm.c:864 -msgid "hide dot files" +#: ../web/statuspage.c:337 +msgid "smbd:" msgstr "" -#: param/loadparm.c:865 -msgid "hide unreadable" +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 +msgid "running" msgstr "" -#: param/loadparm.c:866 -msgid "delete veto files" +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 +msgid "not running" msgstr "" -#: param/loadparm.c:867 -msgid "veto files" +#: ../web/statuspage.c:341 +msgid "Stop smbd" msgstr "" -#: param/loadparm.c:868 -msgid "hide files" +#: ../web/statuspage.c:343 +msgid "Start smbd" msgstr "" -#: param/loadparm.c:869 -msgid "veto oplock files" +#: ../web/statuspage.c:345 +msgid "Restart smbd" msgstr "" -#: param/loadparm.c:870 -msgid "map system" +#: ../web/statuspage.c:350 +msgid "nmbd:" msgstr "" -#: param/loadparm.c:871 -msgid "map hidden" +#: ../web/statuspage.c:354 +msgid "Stop nmbd" msgstr "" -#: param/loadparm.c:872 -msgid "map archive" +#: ../web/statuspage.c:356 +msgid "Start nmbd" msgstr "" -#: param/loadparm.c:873 -msgid "mangled names" +#: ../web/statuspage.c:358 +msgid "Restart nmbd" msgstr "" -#: param/loadparm.c:874 -msgid "mangled map" +#: ../web/statuspage.c:364 +msgid "winbindd:" msgstr "" -#: param/loadparm.c:875 -msgid "stat cache" +#: ../web/statuspage.c:368 +msgid "Stop winbindd" msgstr "" -#: param/loadparm.c:877 -msgid "Domain Options" +#: ../web/statuspage.c:370 +msgid "Start winbindd" msgstr "" -#: param/loadparm.c:879 -msgid "domain admin group" +#: ../web/statuspage.c:372 +msgid "Restart winbindd" msgstr "" -#: param/loadparm.c:880 -msgid "domain guest group" +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" msgstr "" -#: param/loadparm.c:883 -msgid "groupname map" +#: ../web/statuspage.c:382 +msgid "Restart All" msgstr "" -#: param/loadparm.c:886 -msgid "machine password timeout" +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" msgstr "" -#: param/loadparm.c:888 -msgid "Logon Options" +#: ../web/statuspage.c:393 +msgid "Active Connections" msgstr "" -#: param/loadparm.c:890 -msgid "add user script" +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 +msgid "PID" msgstr "" -#: param/loadparm.c:891 -msgid "delete user script" +#: ../web/statuspage.c:395 ../web/statuspage.c:408 +msgid "Client" msgstr "" -#: param/loadparm.c:892 -msgid "add group script" +#: ../web/statuspage.c:395 +msgid "IP address" msgstr "" -#: param/loadparm.c:893 -msgid "delete group script" +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 +msgid "Date" msgstr "" -#: param/loadparm.c:894 -msgid "add user to group script" +#: ../web/statuspage.c:397 +msgid "Kill" msgstr "" -#: param/loadparm.c:895 -msgid "delete user from group script" +#: ../web/statuspage.c:405 +msgid "Active Shares" msgstr "" -#: param/loadparm.c:896 -msgid "add machine script" +#: ../web/statuspage.c:408 +msgid "Share" msgstr "" -#: param/loadparm.c:897 -msgid "shutdown script" +#: ../web/statuspage.c:408 +msgid "User" msgstr "" -#: param/loadparm.c:898 -msgid "abort shutdown script" +#: ../web/statuspage.c:408 +msgid "Group" msgstr "" -#: param/loadparm.c:900 -msgid "logon script" +#: ../web/statuspage.c:414 +msgid "Open Files" msgstr "" -#: param/loadparm.c:901 -msgid "logon path" +#: ../web/statuspage.c:416 +msgid "Sharing" msgstr "" -#: param/loadparm.c:902 -msgid "logon drive" +#: ../web/statuspage.c:416 +msgid "R/W" msgstr "" -#: param/loadparm.c:903 -msgid "logon home" +#: ../web/statuspage.c:416 +msgid "Oplock" msgstr "" -#: param/loadparm.c:904 -msgid "domain logons" +#: ../web/statuspage.c:416 +msgid "File" msgstr "" -#: param/loadparm.c:906 -msgid "Browse Options" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" msgstr "" -#: param/loadparm.c:908 -msgid "os level" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" msgstr "" -#: param/loadparm.c:909 -msgid "lm announce" +#: ../param/loadparm.c:755 +msgid "Base Options" msgstr "" -#: param/loadparm.c:910 -msgid "lm interval" +#: ../param/loadparm.c:775 +msgid "Security Options" msgstr "" -#: param/loadparm.c:911 -msgid "preferred master" +#: ../param/loadparm.c:859 +msgid "Logging Options" msgstr "" -#: param/loadparm.c:912 -msgid "prefered master" +#: ../param/loadparm.c:874 +msgid "Protocol Options" msgstr "" -#: param/loadparm.c:913 -msgid "local master" +#: ../param/loadparm.c:911 +msgid "Tuning Options" msgstr "" -#: param/loadparm.c:914 -msgid "domain master" +#: ../param/loadparm.c:940 +msgid "Printing Options" msgstr "" -#: param/loadparm.c:915 -msgid "browse list" +#: ../param/loadparm.c:970 +msgid "Filename Handling" msgstr "" -#: param/loadparm.c:916 -msgid "browseable" +#: ../param/loadparm.c:996 +msgid "Domain Options" msgstr "" -#: param/loadparm.c:917 -msgid "browsable" +#: ../param/loadparm.c:1000 +msgid "Logon Options" msgstr "" -#: param/loadparm.c:918 -msgid "enhanced browsing" +#: ../param/loadparm.c:1019 +msgid "Browse Options" 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" -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" +#: ../param/loadparm.c:1138 +msgid "VFS module options" 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çois Le Lay - +# +# 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çois Le Lay \n" "Language-Team: (Samba Team) \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("%s       %s", -#. 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éfinir par défaut" -#: 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 %s

      \n" -msgstr "Connecté en tant que %s

      \n" +msgid "Logged in as %s" +msgstr "Connecté en tant que %s" -#: web/swat.c:505 +#: ../web/swat.c:505 msgid "Home" msgstr "Home" -#: web/swat.c:507 +#: ../web/swat.c:507 msgid "Globals" msgstr "Paramètres Généraux" -#: 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étaillée" + +#: ../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ète" -#: 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ètres 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éinitialiser Valeurs" -#: web/swat.c:581 web/swat.c:676 web/swat.c:1018 -msgid "Advanced View" -msgstr "Vue Détaillée" - -#: 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ètres 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éer 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émo rejeté" -#: web/swat.c:747 -msgid " Must specify \"User Name\" \n" -msgstr " Le champ \"Nom d'utilisateur\" doit être spécifié\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 être spécifié" -#: web/swat.c:763 -msgid " Must specify \"Old Password\" \n" -msgstr " Le champ \"Ancien mot de passe\" doît être spécifié\n" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " +msgstr " Le champ \"Ancien mot de passe\" doît être spécifié" -#: web/swat.c:769 -msgid " Must specify \"Remote Machine\" \n" -msgstr " Le champ \"Machine Distante\" doît être spécifié\n" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " +msgstr " Le champ \"Machine Distante\" doît être spécifié" -#: 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 être spécifiés \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 être spécifiés \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 été modifié. \n" +msgid " The passwd for '%s' has been changed." +msgstr " Le mot de passe de '%s' a été 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 été 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ésactiver 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ètres 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és du signe [*] dans le menu déroulant Choisir Imprimante" -#: web/swat.c:944 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "désignent des imprimantes automatiquement chargées 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éer 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 "Rafraîchissement Automatique" -#: web/statuspage.c:201 web/statuspage.c:206 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Intervalle de rafraîchissement: " -#: web/statuspage.c:205 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Stopper Rafraîchissement" -#: 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ères dos" - -#: param/loadparm.c:644 -msgid "unix charset" -msgstr "caractères unix" - -#: param/loadparm.c:645 -msgid "display charset" -msgstr "caractères 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épertoire" - -#: 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" -msgstr "" - -#: param/loadparm.c:653 -msgid "server string" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" msgstr "" -#: param/loadparm.c:654 -msgid "interfaces" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" 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écurité" -#: param/loadparm.c:659 -msgid "security" -msgstr "sécurité" - -#: param/loadparm.c:660 -msgid "encrypt passwords" -msgstr "crypter les mots de passe" - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "mise à jour cryptés" - -#: 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épertoire privé" - -#: param/loadparm.c:673 -msgid "passdb module path" -msgstr "chemin du module passdb" - -#: param/loadparm.c:674 -msgid "root directory" -msgstr "répertoire root" - -#: param/loadparm.c:675 -msgid "root dir" -msgstr "répertoire 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 "écriture ok" - -#: param/loadparm.c:709 -msgid "writeable" -msgstr "écriture possible" - -#: param/loadparm.c:710 -msgid "writable" -msgstr "écriture possible" - -#: param/loadparm.c:712 -msgid "create mask" -msgstr "" - -#: param/loadparm.c:713 -msgid "create mode" -msgstr "mode création" - -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "forcer le mode création" - -#: param/loadparm.c:715 -msgid "security mask" -msgstr "" - -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "forcer le mode sécurité" - -#: param/loadparm.c:717 -msgid "directory mask" -msgstr "masque de répertoire" - -#: param/loadparm.c:718 -msgid "directory mode" -msgstr "mode répertoire" - -#: param/loadparm.c:719 -msgid "force directory mode" -msgstr "forcer le mode répertoire" - -#: param/loadparm.c:720 -msgid "directory security mask" -msgstr "masque de sécurité répertoire" - -#: param/loadparm.c:721 -msgid "force directory security mode" -msgstr "forcer le mode sécurité répertoire" - -#: param/loadparm.c:722 -msgid "inherit permissions" -msgstr "héritage 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:874 +msgid "Protocol Options" +msgstr "Options de Protocole" -#: param/loadparm.c:761 -msgid "max log size" -msgstr "taille maxi de la log" +#: ../param/loadparm.c:911 +msgid "Tuning Options" +msgstr "Options de réglage" -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "" +#: ../param/loadparm.c:940 +msgid "Printing Options" +msgstr "Options d'impression" -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "" +#: ../param/loadparm.c:970 +msgid "Filename Handling" +msgstr "Gestion des noms de fichier" -#: param/loadparm.c:764 -msgid "debug hires timestamp" -msgstr "" +#: ../param/loadparm.c:996 +msgid "Domain Options" +msgstr "Options de Domaine" -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "" +#: ../param/loadparm.c:1000 +msgid "Logon Options" +msgstr "Options de Logon" -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "" +#: ../param/loadparm.c:1019 +msgid "Browse Options" +msgstr "Options de Navigation" -#: param/loadparm.c:768 -msgid "Protocol Options" -msgstr "Options de Protocole" +#: ../param/loadparm.c:1033 +msgid "WINS Options" +msgstr "Options WINS" -#: param/loadparm.c:770 -msgid "protocol" -msgstr "protocole" +#: ../param/loadparm.c:1043 +msgid "Locking Options" +msgstr "Options de Verrouillage" -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "" +#: ../param/loadparm.c:1061 +msgid "Ldap Options" +msgstr "Options Ldap" -#: param/loadparm.c:772 -msgid "max protocol" -msgstr "protocole maxi" +#: ../param/loadparm.c:1078 +msgid "Miscellaneous Options" +msgstr "Options Diverses" -#: param/loadparm.c:773 -msgid "min protocol" -msgstr "protocole mini" +#: ../param/loadparm.c:1138 +msgid "VFS module options" +msgstr "Options VFS" -#: 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ésolution 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 -msgid "Tuning Options" -msgstr "Options de réglage" - -#: 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'écriture" - -#: param/loadparm.c:820 -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ésactiver 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 -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éfaut" - -#: 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ème" - -#: 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 -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 -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 -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éféré" - -#: param/loadparm.c:912 -msgid "prefered master" -msgstr "master préféré" - -#: 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éliorée" - -#: param/loadparm.c:920 -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 -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 -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 -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éfaut" - -#: param/loadparm.c:971 -msgid "default" -msgstr "par défaut" - -#: 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" -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/genmsg b/source/po/genmsg new file mode 100755 index 00000000000..08d5bd222f8 --- /dev/null +++ b/source/po/genmsg @@ -0,0 +1,40 @@ +#!/bin/sh +# Copyright (C) 2003 TAKAHASHI Motonobu +# +# 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. +# + +FILES='../web/swat.c ../web/statuspage.c ../param/loadparm.c' +LANGS='en ja tr pl fr de it' + +XGETTEXT=xgettext +MSGMERGE=msgmerge + +WIDTH=256 + +$XGETTEXT --default-domain="i18n_swat" \ + --add-comments \ + --keyword=_ --keyword=N_ \ + --width=${WIDTH} \ + $FILES + +for lang in $LANGS; do + echo -n $lang + mv ${lang}.msg ${lang}.msg.old + $MSGMERGE --width=${WIDTH} ${lang}.msg.old i18n_swat.po -o ${lang}.msg +done + +rm i18n_swat.po + 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 - +# +# 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 \n" "Language-Team: (Samba Team) \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("%s       %s", -#. 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 %s

      \n" +msgid "Logged in as %s" msgstr "Connesso come %s

      \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:859 +msgid "Logging Options" +msgstr "Opzioni di Log" -#: param/loadparm.c:747 -msgid "ssl require clientcert" -msgstr "ssl richiede certificato client" +#: ../param/loadparm.c:874 +msgid "Protocol Options" +msgstr "Opzioni Protocollo" -#: param/loadparm.c:748 -msgid "ssl require servercert" -msgstr "ssl richiede certificato server" +#: ../param/loadparm.c:911 +msgid "Tuning Options" +msgstr "Opzioni Tuning" -#: param/loadparm.c:749 -msgid "ssl ciphers" -msgstr "" +#: ../param/loadparm.c:940 +msgid "Printing Options" +msgstr "Opzioni di Stampa" -#: param/loadparm.c:750 -msgid "ssl version" -msgstr "ssl versione" +#: ../param/loadparm.c:970 +msgid "Filename Handling" +msgstr "Gestione Nomi File" -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "" +#: ../param/loadparm.c:996 +msgid "Domain Options" +msgstr "Opzioni Dominio" -#: param/loadparm.c:754 -msgid "Logging Options" -msgstr "Opzioni di Log" +#: ../param/loadparm.c:1000 +msgid "Logon Options" +msgstr "Opzioni di Logon" -#: param/loadparm.c:755 -msgid "log level" -msgstr "livello log" +#: ../param/loadparm.c:1019 +msgid "Browse Options" +msgstr "Opzioni Browsing" -#: param/loadparm.c:756 -msgid "debuglevel" -msgstr "livello debug" +#: ../param/loadparm.c:1033 +msgid "WINS Options" +msgstr "opzioni WINS" -#: param/loadparm.c:757 -msgid "syslog" -msgstr "" +#: ../param/loadparm.c:1043 +msgid "Locking Options" +msgstr "Opzioni Locking" -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "solo syslog" +#: ../param/loadparm.c:1061 +msgid "Ldap Options" +msgstr "Opzioni Ldap" -#: param/loadparm.c:759 -msgid "log file" -msgstr "file di log" +#: ../param/loadparm.c:1078 +msgid "Miscellaneous Options" +msgstr "Opzioni Generiche" -#: param/loadparm.c:761 -msgid "max log size" -msgstr "massima dimensione log" +#: ../param/loadparm.c:1138 +msgid "VFS module options" +msgstr "Opzioni VFS" -#: 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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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" -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 , 2000. +# Copyright (C) 2003 TAKAHASHI Motonobu +# Copyright (C) 2000 Ryo Kawahara # # 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 \n" -"Language-Team: Samba Team \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 \n" +"Language-Team: Samba Users Group Japan \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 ‚ğƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ\n" +msgid "ERROR: Can't open %s" +msgstr "%s ‚ğƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ" -#. -#. str = stripspace(parm->label); -#. strlower (str); //monyo -#. d_printf("%s       %s", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 +#: ../web/swat.c:200 msgid "Help" -msgstr "à–¾" +msgstr "ƒwƒ‹ƒv" -#: 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 "Šù’è’l‚É–ß‚·" +msgstr "ƒfƒtƒHƒ‹ƒg’l" + +#: ../web/swat.c:408 +#, c-format +msgid "failed to open %s for writing" +msgstr "%s ‚ğ‘‚«‚İ—p‚ɃI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ" + +#: ../web/swat.c:431 +#, c-format +msgid "Can't reload %s" +msgstr "%s ‚ğÄ“Ç‚İ‚İ‚Å‚«‚Ü‚¹‚ñ\n" -#: web/swat.c:502 +# msgid "Logged in as %s

      \n" +#: ../web/swat.c:501 #, c-format -msgid "Logged in as %s

      \n" -msgstr "%s‚Æ‚µ‚ăƒOƒCƒ“

      \n" +msgid "Logged in as %s" +msgstr "%s‚Æ‚µ‚ăƒOƒCƒ“" -#: web/swat.c:505 +#: ../web/swat.c:505 msgid "Home" msgstr "ƒz[ƒ€" -#: web/swat.c:507 +#: ../web/swat.c:507 msgid "Globals" -msgstr "‘S‘Ìİ’è" +msgstr "ƒOƒ[ƒoƒ‹" -#: web/swat.c:508 +#: ../web/swat.c:508 msgid "Shares" -msgstr "‹¤—Lİ’è" +msgstr "ƒtƒ@ƒCƒ‹‹¤—L" -#: web/swat.c:509 +#: ../web/swat.c:509 msgid "Printers" -msgstr "ƒvƒŠƒ“ƒ^İ’è" +msgstr "ˆóü‹¤—L" -#: web/swat.c:512 +#: ../web/swat.c:510 +msgid "Wizard" +msgstr "ƒEƒBƒU[ƒh" + +#: ../web/swat.c:513 msgid "Status" -msgstr "“®ìó‹µ" +msgstr "ƒT[ƒo‚Ìó‘Ô" -#: 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 "ƒpƒXƒ[ƒhŠÇ—Eƒ†[ƒUŠÇ—" +msgstr "ƒpƒXƒ[ƒhŠÇ—" + +#: ../web/swat.c:526 +msgid "Current View Is" +msgstr "Œ»İ‚Ì•\¦ƒ‚[ƒh" + +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" +msgstr "•W€•\¦" -#: web/swat.c:539 +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" +msgstr "Úו\¦" + +#: ../web/swat.c:529 +msgid "Change View To" +msgstr "•\¦ƒ‚[ƒh‚Ì•ÏX" + +#: ../web/swat.c:554 msgid "Current Config" msgstr "Œ»İ‚Ìİ’è" -#: web/swat.c:543 +#: ../web/swat.c:558 msgid "Normal View" msgstr "•W€•\¦" -#: web/swat.c:545 +#: ../web/swat.c:560 msgid "Full View" msgstr "Š®‘S•\¦" -#: web/swat.c:561 -msgid "Global Variables" -msgstr "‘S‘Ìİ’è" +#. 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 "ƒEƒBƒU[ƒh‚É‚æ‚éƒpƒ‰ƒ[ƒ^•ÒWƒy[ƒW" -#: web/swat.c:575 web/swat.c:671 web/swat.c:1014 -msgid "Commit Changes" -msgstr "İ’è•ÏX" +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" +msgstr "smb.conf ƒtƒ@ƒCƒ‹‚ª‘‚«Š·‚¦‚ç‚ê‚Ü‚µ‚½B" -#: web/swat.c:579 web/swat.c:674 web/swat.c:1016 -msgid "Reset Values" -msgstr "ƒŠƒZƒbƒg" +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" +msgstr "Samba İ’èƒEƒBƒU[ƒh" -#: 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 "usmb.conf ‚Ì‘Š·vƒ{ƒ^ƒ“‚ğ‰Ÿ‚·‚Æ smb.conf ƒtƒ@ƒCƒ‹’†‚Ì‚·‚ׂẴfƒtƒHƒ‹ƒg’l‚âƒRƒƒ“ƒg‚Í휂³‚ê‚Ü‚·B" -#: web/swat.c:583 web/swat.c:678 web/swat.c:1020 -msgid "Basic View" -msgstr "•W€•\¦" +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." +msgstr "ucommitvƒ{ƒ^ƒ“‚ğ‰Ÿ‚µ‚½ê‡‚É‚à“¯—l‚Ì•ÏX‚ªs‚È‚í‚ê‚Ü‚·B" + +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" +msgstr "smb.conf ‚Ì‘Š·" + +#: ../web/swat.c:725 +msgid "Commit" +msgstr "İ’è‚𔽉f" + +#: ../web/swat.c:726 +msgid "Edit Parameter Values" +msgstr "Šeƒpƒ‰ƒ[ƒ^‚Ì•ÒW" + +#: ../web/swat.c:732 +msgid "Server Type" +msgstr "ƒT[ƒoƒ^ƒCƒv" -#: web/swat.c:613 +#: ../web/swat.c:733 +msgid "Stand Alone" +msgstr "ƒXƒ^ƒ“ƒhƒAƒƒ“" + +#: ../web/swat.c:734 +msgid "Domain Member" +msgstr "ƒhƒƒCƒ“ƒƒ“ƒo" + +#: ../web/swat.c:735 +msgid "Domain Controller" +msgstr "ƒhƒƒCƒ“ƒRƒ“ƒgƒ[ƒ‰" + +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" +msgstr "’Êí‚ÌŒ`®‚Å‚Í‚È‚¢ - V‚µ‚¢ƒ‚[ƒh‚ğ‘I‘ğ‚Ì‚±‚Æ" + +#: ../web/swat.c:740 +msgid "Configure WINS As" +msgstr "WINS" + +#: ../web/swat.c:741 +msgid "Not Used" +msgstr "g‚í‚È‚¢" + +#: ../web/swat.c:742 +msgid "Server for client use" +msgstr "ƒT[ƒo‚Æ‚µ‚Ä\¬" + +#: ../web/swat.c:743 +msgid "Client of another WINS server" +msgstr "•Ê‚Ì WINS ƒT[ƒo‚̃Nƒ‰ƒCƒAƒ“ƒg‚Æ‚µ‚Ä\¬" + +#: ../web/swat.c:745 +msgid "Remote WINS Server" +msgstr "•Ê‚Ì WINS ƒT[ƒo" + +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" +msgstr "ƒGƒ‰[: wins server ‚Æ wins support ‚Ì—¼ƒpƒ‰ƒ[ƒ^‚ª smb.conf ‚Åw’肳‚ê‚Ä‚¢‚Ü‚·" + +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." +msgstr "‚¢‚¸‚ê‚©‚Ì WINS ƒ‚[ƒh‚ğ‘I‘ğ‚µ‚Ä‚­‚¾‚³‚¢B" + +#: ../web/swat.c:759 +msgid "Expose Home Directories" +msgstr "ƒz[ƒ€ƒfƒBƒŒƒNƒgƒŠ‚ÌŒöŠJ" + +#: ../web/swat.c:774 +msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." +msgstr "ã‹L‚Ìİ’èƒIƒvƒVƒ‡ƒ“‚É‚æ‚èA•¡”‚̃pƒ‰ƒ[ƒ^‚ª“¯Šú‚µ‚Äݒ肳‚ê‚邽‚ßA Samba ‚̉^—p‚ğv‘¬‚ÉŠJn‚·‚éã‚Å‚Ì•‚¯‚Æ‚È‚é‚Å‚µ‚傤B" + +#: ../web/swat.c:787 +msgid "Global Parameters" +msgstr "Global ƒpƒ‰ƒ[ƒ^" + +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 +msgid "Commit Changes" +msgstr "•ÏX‚𔽉f" + +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 +msgid "Reset Values" +msgstr "•ÏX‚ğæÁ" + +#: ../web/swat.c:844 msgid "Share Parameters" -msgstr "‹¤—Lİ’è" +msgstr "ƒtƒ@ƒCƒ‹‹¤—L ƒpƒ‰ƒ[ƒ^" -#: web/swat.c:642 +#: ../web/swat.c:887 msgid "Choose Share" -msgstr "‹¤—L‘I‘ğ" +msgstr "ƒtƒ@ƒCƒ‹‹¤—L‚Ì‘I‘ğ" -#: web/swat.c:656 +#: ../web/swat.c:901 msgid "Delete Share" -msgstr "‹¤—Líœ" +msgstr "ƒtƒ@ƒCƒ‹‹¤—L‚Ìíœ" -#: web/swat.c:663 +#: ../web/swat.c:908 msgid "Create Share" -msgstr "V‹K‹¤—Lì¬" +msgstr "ƒtƒ@ƒCƒ‹‹¤—L‚Ìì¬" + +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" +msgstr "ƒfƒ‚Eƒ‚[ƒh‚ł̃pƒXƒ[ƒh•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ" -#: web/swat.c:708 -msgid "password change in demo mode rejected\n" -msgstr "ƒfƒ‚Eƒ‚[ƒh‚ł̃pƒXƒ[ƒh•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ\n" +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." +msgstr "ƒpƒXƒ[ƒhEƒf[ƒ^ƒx[ƒX‚ªŒ©‚‚¯‚ç‚ê‚Ü‚¹‚ñ" -#: web/swat.c:747 -msgid " Must specify \"User Name\" \n" -msgstr "uƒ†[ƒU–¼v‚ğ“ü—Í‚­‚¾‚³‚¢\n" +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " +msgstr "uƒ†[ƒU–¼v—“‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢" -#: web/swat.c:763 -msgid " Must specify \"Old Password\" \n" -msgstr "u‹ŒƒpƒXƒ[ƒhv‚ğ“ü—Í‚µ‚Ä‚­‚¾‚³‚¢\n" +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " +msgstr "u‹ŒƒpƒXƒ[ƒhv—“‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢" -#: web/swat.c:769 -msgid " Must specify \"Remote Machine\" \n" -msgstr "uƒŠƒ‚[ƒg ƒ}ƒVƒ“v‚ğ“ü—Í‚µ‚Ä‚­‚¾‚³‚¢\n" +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " +msgstr "uƒŠƒ‚[ƒgƒ}ƒVƒ“v—“‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢" -#: web/swat.c:776 -msgid " Must specify \"New, and Re-typed Passwords\" \n" -msgstr "uVƒpƒXƒ[ƒhv‚ğ“ü—Í‚µAÄ“ü—Í‚à‚µ‚Ä‚­‚¾‚³‚¢\n" +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " +msgstr "uVƒpƒXƒ[ƒhv—“‚ÆuVƒpƒXƒ[ƒh‚ÌÄ“ü—Ív—“‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢" -#: web/swat.c:782 -msgid " Re-typed password didn't match new password\n" -msgstr "VƒpƒXƒ[ƒh‚ÌÄ“ü—Í‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·\n" +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " +msgstr "uVƒpƒXƒ[ƒh‚ÌÄ“ü—Ív—“‚Ì“ü—Í“à—e‚ªuVƒpƒXƒ[ƒhv—“‚Ì“ü—͂ƈê’v‚µ‚Ä‚¢‚Ü‚¹‚ñB" -#: web/swat.c:812 +#: ../web/swat.c:1048 #, c-format -msgid " The passwd for '%s' has been changed. \n" -msgstr " '%s' ‚̃pƒXƒ[ƒh‚Í•ÏX‚³‚ê‚Ü‚µ‚½ \n" +msgid " The passwd for '%s' has been changed." +msgstr " %s ‚̃pƒXƒ[ƒh‚Í•ÏX‚³‚ê‚Ü‚µ‚½B" -#: web/swat.c:814 +#: ../web/swat.c:1051 #, c-format -msgid " The passwd for '%s' has NOT been changed. \n" -msgstr " '%s' ‚̃pƒXƒ[ƒh‚Í•ÏX‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½ \n" +msgid " The passwd for '%s' has NOT been changed." +msgstr " '%s' ‚̃pƒXƒ[ƒh‚Í•ÏX‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B" -#: web/swat.c:838 +#: ../web/swat.c:1076 msgid "Server Password Management" -msgstr "ƒ[ƒJƒ‹ ƒ}ƒVƒ“‚̃pƒXƒ[ƒhŠÇ—" +msgstr "ƒ[ƒJƒ‹ƒ}ƒVƒ“‚̃pƒXƒ[ƒhŠÇ—" #. #. * Create all the dialog boxes for data collection #. -#: web/swat.c:847 web/swat.c:894 -msgid " User Name : " -msgstr "ƒ†[ƒU–¼ : " +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" +msgstr "ƒ†[ƒU–¼" -#: web/swat.c:850 web/swat.c:896 -msgid " Old Password : " -msgstr "‹ŒƒpƒXƒ[ƒh : " +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" +msgstr "‹ŒƒpƒXƒ[ƒh" -#: web/swat.c:853 web/swat.c:898 -msgid " New Password : " -msgstr "VƒpƒXƒ[ƒh : " +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" +msgstr "VƒpƒXƒ[ƒh" -#: web/swat.c:855 web/swat.c:900 -msgid " Re-type New Password : " -msgstr "VƒpƒXƒ[ƒhÄ“ü—Í : " +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" +msgstr "VƒpƒXƒ[ƒh‚ÌÄ“ü—Í" -#: web/swat.c:863 web/swat.c:911 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "ƒpƒXƒ[ƒh•ÏX" -#: web/swat.c:866 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "V‹Kƒ†[ƒU’ljÁ" -#: web/swat.c:868 +#: ../web/swat.c:1106 msgid "Delete User" -msgstr "ƒ†[ƒU‚ğ휂·‚é" +msgstr "ƒ†[ƒU‚Ìíœ" -#: web/swat.c:870 +#: ../web/swat.c:1108 msgid "Disable User" -msgstr "g—p•s‰Â‚É‚·‚é" +msgstr "ƒ†[ƒU‚Ì–³Œø‰»" -#: web/swat.c:872 +#: ../web/swat.c:1110 msgid "Enable User" -msgstr "g—p‰Â”\‚É‚·‚é" +msgstr "ƒ†[ƒU‚Ì—LŒø‰»" -#: web/swat.c:885 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" -msgstr "ƒŠƒ‚[ƒg ƒ}ƒVƒ“‚̃pƒXƒ[ƒhŠÇ—" +msgstr "ƒŠƒ‚[ƒgƒ}ƒVƒ“‚̃pƒXƒ[ƒhŠÇ—" -#: web/swat.c:902 -msgid " Remote Machine : " -msgstr " ƒŠƒ‚[ƒg ƒ}ƒVƒ“ : " +#: ../web/swat.c:1140 +msgid "Remote Machine" +msgstr "ƒŠƒ‚[ƒgƒ}ƒVƒ“" -#: web/swat.c:940 +#: ../web/swat.c:1179 msgid "Printer Parameters" -msgstr "ƒvƒŠƒ“ƒ^İ’è [Printer]" +msgstr "ˆóü‹¤—L ƒpƒ‰ƒ[ƒ^" -#: 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 "–¼‘O‚Ì擪‚É [*] ‚ª‚‚¢‚½ƒvƒŠƒ“ƒ^" -#: web/swat.c:944 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " -msgstr "‚ÍA" +msgstr "‚Í" -#: web/swat.c:945 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "printcap name ƒpƒ‰ƒ[ƒ^" -#: web/swat.c:946 -msgid "Attempting to delete these printers from SWAT will have no effect.\n" -msgstr "‚©‚ç©“®İ’肳‚ꂽ‚à‚Ì‚Å‚·‚©‚çA휂·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB\n" +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." +msgstr "‚©‚ç©“®İ’肳‚ꂽ‚à‚Ì‚Å‚·‚©‚çA휂·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB" -#: web/swat.c:980 +#: ../web/swat.c:1231 msgid "Choose Printer" -msgstr "ƒvƒŠƒ“ƒ^‘I‘ğ" +msgstr "ˆóü‹¤—L‚Ì‘I‘ğ" -#: web/swat.c:999 +#: ../web/swat.c:1250 msgid "Delete Printer" -msgstr "ƒvƒŠƒ“ƒ^íœ" +msgstr "ˆóü‹¤—L‚Ìíœ" -#: web/swat.c:1006 +#: ../web/swat.c:1257 msgid "Create Printer" -msgstr "ƒvƒŠƒ“ƒ^V‹Kì¬" - -#: web/statuspage.c:40 -msgid "DENY_NONE" -msgstr "‹‘”Û‚È‚µ" - -#: web/statuspage.c:41 -msgid "DENY_ALL " -msgstr "‚·‚ׂċ‘”Û" +msgstr "ˆóü‹¤—L‚Ìì¬" -#: web/statuspage.c:42 -msgid "DENY_DOS " -msgstr "DOS‚ğ‹‘”Û" - -#: web/statuspage.c:43 -msgid "DENY_READ " -msgstr "QÆ‚ğ‹‘”Û" - -#: web/statuspage.c:44 -msgid "DENY_WRITE " -msgstr "XV‚ğ‹‘”Û" - -#: web/statuspage.c:50 +#: ../web/statuspage.c:123 msgid "RDONLY " -msgstr "QÆ‚Ì‚İ" +msgstr "QÆ‚Ì‚İ " -#: web/statuspage.c:51 +#: ../web/statuspage.c:124 msgid "WRONLY " -msgstr "‘}“ü‚Ì‚İ" +msgstr "XV‚Ì‚İ " -#: web/statuspage.c:52 +#: ../web/statuspage.c:125 msgid "RDWR " -msgstr "XV " - -#: web/statuspage.c:60 -msgid "EXCLUSIVE+BATCH " -msgstr "ê—L+ƒoƒbƒ` " - -#: web/statuspage.c:62 -msgid "EXCLUSIVE " -msgstr "ê—L " - -#: web/statuspage.c:64 -msgid "BATCH " -msgstr "ƒoƒbƒ` " +msgstr "QÆ/XV " -#: web/statuspage.c:66 -msgid "LEVEL_II " -msgstr "ƒŒƒxƒ‹_II " - -#: web/statuspage.c:68 -msgid "NONE " -msgstr "‚È‚µ " - -#: web/statuspage.c:195 +#: ../web/statuspage.c:309 msgid "Server Status" -msgstr "ƒT[ƒo[“®ìó‹µ" +msgstr "ƒT[ƒo‚Ìó‘Ô" -#: web/statuspage.c:200 +#: ../web/statuspage.c:314 msgid "Auto Refresh" -msgstr "©“®Ä•\¦" +msgstr "©“®XV‚ÌŠJn" -#: web/statuspage.c:201 web/statuspage.c:206 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " -msgstr "Ä•\¦ŠÔŠu(•b): " +msgstr "XVŠÔŠu: " -#: web/statuspage.c:205 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" -msgstr "©“®•\¦’â~" +msgstr "©“®XV‚Ì’â~" -#: web/statuspage.c:220 +#: ../web/statuspage.c:334 msgid "version:" -msgstr "ƒo[ƒWƒ‡ƒ“:" +msgstr "ƒo[ƒWƒ‡ƒ“" -#: web/statuspage.c:223 +#: ../web/statuspage.c:337 msgid "smbd:" -msgstr "ƒtƒ@ƒCƒ‹‹¤—Lƒf[ƒ‚ƒ“(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 "Às’†" -#: 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‹N“®" +msgstr "smbd ‚Ì‹N“®" -#: web/statuspage.c:230 +#: ../web/statuspage.c:345 msgid "Restart smbd" -msgstr "smbdÄ‹N“®" +msgstr "smbd ‚ÌÄ‹N“®" -#: web/statuspage.c:235 +#: ../web/statuspage.c:350 msgid "nmbd:" -msgstr "ƒl[ƒ€ ƒT[ƒrƒX ƒf[ƒ‚ƒ“(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‹N“®" +msgstr "nmbd ‚Ì‹N“®" -#: web/statuspage.c:242 +#: ../web/statuspage.c:358 msgid "Restart nmbd" -msgstr "nmbdÄ‹N“®" +msgstr "nmbd ‚ÌÄ‹N“®" + +#: ../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 ‚Ì‹N“®" + +#: ../web/statuspage.c:372 +msgid "Restart winbindd" +msgstr "winbindd ‚ÌÄ‹N“®" + +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" +msgstr "‚·‚ׂĒâ~" + +#: ../web/statuspage.c:382 +msgid "Restart All" +msgstr "‚·‚ׂÄÄ‹N“®" -#: web/statuspage.c:249 +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" +msgstr "‚·‚ׂċN“®" + +#: ../web/statuspage.c:393 msgid "Active Connections" -msgstr "Ú‘±’†ƒNƒ‰ƒCƒAƒ“ƒg" +msgstr "Ú‘±’†‚̃Nƒ‰ƒCƒAƒ“ƒg" -#: 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 "ƒvƒƒZƒXID" +msgstr "" -#: web/statuspage.c:251 web/statuspage.c:264 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "ƒNƒ‰ƒCƒAƒ“ƒg" -#: web/statuspage.c:251 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "IPƒAƒhƒŒƒX" -#: 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 "“ú•t" -#: web/statuspage.c:253 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Ø’f" -#: web/statuspage.c:261 +#: ../web/statuspage.c:405 msgid "Active Shares" -msgstr "Ú‘±’†‹¤—L" +msgstr "Ú‘±’†‚Ì‹¤—L" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Share" msgstr "‹¤—L–¼" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "User" msgstr "ƒ†[ƒU" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Group" msgstr "ƒOƒ‹[ƒv" -#: web/statuspage.c:270 +#: ../web/statuspage.c:414 msgid "Open Files" -msgstr "g—p’†ƒtƒ@ƒCƒ‹" +msgstr "g—p’†‚̃tƒ@ƒCƒ‹" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "”r‘¼ƒ‚[ƒh" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "QÆ/XV" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Oplock" -msgstr "•Ö‹XƒƒbƒN(Oplock)" +msgstr "" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "File" msgstr "ƒtƒ@ƒCƒ‹–¼" -#: param/loadparm.c:641 -msgid "Base Options" -msgstr "Šî–{ƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:643 -#, fuzzy -msgid "dos charset" -msgstr "—LŒø‚È•¶š" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" +msgstr "ƒNƒ‰ƒCƒAƒ“ƒg–¼‚ğ擪‚É•\¦" -#: param/loadparm.c:644 -#, fuzzy -msgid "unix charset" -msgstr "—LŒø‚È•¶š" +#: ../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 "ƒRƒƒ“ƒg" - -#: param/loadparm.c:647 -msgid "path" -msgstr "ƒpƒX" - -#: param/loadparm.c:648 -msgid "directory" -msgstr "ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:649 -msgid "workgroup" -msgstr "ƒ[ƒNƒOƒ‹[ƒv" - -#: param/loadparm.c:650 -msgid "netbios name" -msgstr "netbios –¼" - -#: param/loadparm.c:651 -msgid "netbios aliases" -msgstr "netbios ƒGƒCƒŠƒAƒX" - -#: param/loadparm.c:652 -msgid "netbios scope" -msgstr "netbios ƒXƒR[ƒv" - -#: param/loadparm.c:653 -msgid "server string" -msgstr "ƒT[ƒo•¶š—ñ" - -#: param/loadparm.c:654 -msgid "interfaces" -msgstr "ƒCƒ“ƒ^[ƒtƒF[ƒX" - -#: param/loadparm.c:655 -msgid "bind interfaces only" -msgstr "‚±‚̃Cƒ“ƒ^[ƒtƒF[ƒX‚Ì‚İg—p" +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "Šî–{ ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:657 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "ƒZƒLƒ…ƒŠƒeƒB ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:659 -msgid "security" -msgstr "ƒZƒLƒ…ƒŠƒeƒB" - -#: param/loadparm.c:660 -msgid "encrypt passwords" -msgstr "ƒpƒXƒ[ƒh‚ğˆÃ†‰»" - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "ˆÃ†‰»ƒpƒXƒ[ƒh‚ÉXV" - -#: param/loadparm.c:662 -msgid "allow trusted domains" -msgstr "M—Š‚Å‚«‚éƒhƒƒCƒ“‚ğ‹–‰Â" - -#: param/loadparm.c:663 -msgid "alternate permissions" -msgstr "‘ãsƒp[ƒ~ƒbƒVƒ‡ƒ“" - -#: param/loadparm.c:664 -msgid "hosts equiv" -msgstr "“¯“™‚̃zƒXƒg" - -#: param/loadparm.c:665 -msgid "min passwd length" -msgstr "ŬƒpƒXƒ[ƒh’·" - -#: param/loadparm.c:666 -msgid "min password length" -msgstr "ŬƒpƒXƒ[ƒh’·" - -#: param/loadparm.c:667 -msgid "map to guest" -msgstr "ƒQƒXƒg‚Ƀ}ƒbƒv" - -#: param/loadparm.c:668 -msgid "null passwords" -msgstr "‹óƒpƒXƒ[ƒh" - -#: param/loadparm.c:669 -#, fuzzy -msgid "obey pam restrictions" -msgstr "æ“Ç‚İ" - -#: param/loadparm.c:670 -msgid "password server" -msgstr "ƒpƒXƒ[ƒh ƒT[ƒo" - -#: param/loadparm.c:671 -msgid "smb passwd file" -msgstr "smb passwd ƒtƒ@ƒCƒ‹" - -#: param/loadparm.c:672 -#, fuzzy -msgid "private dir" -msgstr "ƒvƒŠƒ“ƒ^ ƒhƒ‰ƒCƒo" - -#: param/loadparm.c:673 -msgid "passdb module path" -msgstr "" - -#: param/loadparm.c:674 -msgid "root directory" -msgstr "ƒ‹[ƒg ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:675 -msgid "root dir" -msgstr "ƒ‹[ƒg ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:676 -msgid "root" -msgstr "ƒ‹[ƒg" - -#: param/loadparm.c:678 -#, fuzzy -msgid "pam password change" -msgstr "ŬƒpƒXƒ[ƒh’·" - -#: param/loadparm.c:679 -msgid "passwd program" -msgstr "ƒpƒXƒ[ƒh ƒvƒƒOƒ‰ƒ€" - -#: param/loadparm.c:680 -msgid "passwd chat" -msgstr "ƒpƒXƒ[ƒh ƒ`ƒƒƒbƒg" - -#: param/loadparm.c:681 -msgid "passwd chat debug" -msgstr "ƒpƒXƒ[ƒh ƒ`ƒƒƒbƒg ƒfƒoƒbƒO" - -#: param/loadparm.c:682 -msgid "username map" -msgstr "ƒ†[ƒU–¼ƒ}ƒbƒv" - -#: param/loadparm.c:683 -msgid "password level" -msgstr "ƒpƒXƒ[ƒh ƒŒƒxƒ‹" - -#: param/loadparm.c:684 -msgid "username level" -msgstr "ƒ†[ƒU–¼ƒŒƒxƒ‹" - -#: param/loadparm.c:685 -msgid "unix password sync" -msgstr "unix ƒpƒXƒ[ƒh‚𓯊ú‚³‚¹‚é" - -#: param/loadparm.c:686 -msgid "restrict anonymous" -msgstr "“½–¼ƒAƒNƒZƒX‚̧ŒÀ" - -#: 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 ‚ğg‚¤" - -#: param/loadparm.c:692 -msgid "username" -msgstr "ƒ†[ƒU–¼" - -#: param/loadparm.c:693 -msgid "user" -msgstr "ƒ†[ƒU" - -#: param/loadparm.c:694 -msgid "users" -msgstr "ƒ†[ƒU" - -#: param/loadparm.c:696 -msgid "guest account" -msgstr "ƒQƒXƒg ƒAƒJƒEƒ“ƒg" - -#: param/loadparm.c:697 -msgid "invalid users" -msgstr "–³Œø‚ȃ†[ƒU" - -#: param/loadparm.c:698 -msgid "valid users" -msgstr "—LŒø‚ȃ†[ƒU" - -#: param/loadparm.c:699 -msgid "admin users" -msgstr "ŠÇ—ƒ†[ƒU" - -#: param/loadparm.c:700 -msgid "read list" -msgstr "“Ç‚İæ‚胊ƒXƒg" - -#: param/loadparm.c:701 -msgid "write list" -msgstr "‘‚«‚݃ŠƒXƒg" - -#: param/loadparm.c:702 -#, fuzzy -msgid "printer admin" -msgstr "ƒvƒŠƒ“ƒ^–¼" - -#: param/loadparm.c:703 -msgid "force user" -msgstr "‹­§‚·‚郆[ƒU" - -#: param/loadparm.c:704 -msgid "force group" -msgstr "‹­§‚·‚éƒOƒ‹[ƒv" - -#: param/loadparm.c:705 -msgid "group" -msgstr "ƒOƒ‹[ƒv" - -#: 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 "쬂Ƀ}ƒXƒN" - -#: param/loadparm.c:713 -msgid "create mode" -msgstr "쬂̃‚[ƒh" - -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "‹­§‚·‚é쬂̃‚[ƒh" - -#: param/loadparm.c:715 -msgid "security mask" -msgstr "ƒZƒLƒ…ƒŠƒeƒB ƒ}ƒXƒN" - -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "‹­§‚·‚éƒZƒLƒ…ƒŠƒeƒB ƒ‚[ƒh" - -#: param/loadparm.c:717 -msgid "directory mask" -msgstr "ƒfƒBƒŒƒNƒgƒŠ ƒ}ƒXƒN" - -#: param/loadparm.c:718 -msgid "directory mode" -msgstr "ƒfƒBƒŒƒNƒgƒŠ ƒ‚[ƒh" - -#: param/loadparm.c:719 -msgid "force directory mode" -msgstr "‹­§‚·‚éƒfƒBƒŒƒNƒgƒŠ ƒ‚[ƒh" - -#: param/loadparm.c:720 -msgid "directory security mask" -msgstr "ƒfƒBƒŒƒNƒgƒŠ‚̃ZƒLƒ…ƒŠƒeƒB ƒ}ƒXƒN" - -#: param/loadparm.c:721 -msgid "force directory security mode" -msgstr "‹­§‚·‚éƒfƒBƒŒƒNƒgƒŠ‚̃ZƒLƒ…ƒŠƒeƒB ƒ‚[ƒh" - -#: param/loadparm.c:722 -msgid "inherit permissions" -msgstr "ƒp[ƒ~ƒbƒVƒ‡ƒ“‚ğŒp³" - -#: param/loadparm.c:723 -msgid "guest only" -msgstr "ƒQƒXƒg‚Ì‚İ" - -#: param/loadparm.c:724 -msgid "only guest" -msgstr "ƒQƒXƒg‚Ì‚İ" - -#: param/loadparm.c:726 -msgid "guest ok" -msgstr "ƒQƒXƒg‰Â" - -#: param/loadparm.c:727 -msgid "public" -msgstr "ƒpƒuƒŠƒbƒN" - -#: param/loadparm.c:729 -msgid "only user" -msgstr "ƒ†[ƒU‚Ì‚İ" - -#: param/loadparm.c:730 -msgid "hosts allow" -msgstr "‹–‰Â‚·‚éƒzƒXƒg" - -#: param/loadparm.c:731 -msgid "allow hosts" -msgstr "‹–‰Â‚·‚éƒzƒXƒg" - -#: param/loadparm.c:732 -msgid "hosts deny" -msgstr "‹‘”Û‚·‚éƒzƒXƒg" - -#: param/loadparm.c:733 -msgid "deny hosts" -msgstr "‹‘”Û‚·‚éƒzƒXƒg" - -#: param/loadparm.c:736 -msgid "Secure Socket Layer Options" -msgstr "ƒZƒLƒ…ƒA ƒ\ƒPƒbƒg ƒŒƒCƒA[ ƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:737 -msgid "ssl" -msgstr "ssl" - -#: param/loadparm.c:739 -msgid "ssl hosts" -msgstr "ssl ƒzƒXƒg" - -#: param/loadparm.c:740 -msgid "ssl hosts resign" -msgstr "ssl –¢g—pƒzƒXƒg" - -#: param/loadparm.c:741 -msgid "ssl CA certDir" -msgstr "ssl CA ”F؃fƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:742 -msgid "ssl CA certFile" -msgstr "ssl CA ”F؃tƒ@ƒCƒ‹" - -#: param/loadparm.c:743 -msgid "ssl server cert" -msgstr "ssl ƒT[ƒo”FØ" - -#: param/loadparm.c:744 -msgid "ssl server key" -msgstr "ssl ƒT[ƒoŒ®" - -#: param/loadparm.c:745 -msgid "ssl client cert" -msgstr "ssl ƒNƒ‰ƒCƒAƒ“ƒg”FØ" - -#: param/loadparm.c:746 -msgid "ssl client key" -msgstr "ssl ƒNƒ‰ƒCƒAƒ“ƒgŒ®" - -#: param/loadparm.c:747 -msgid "ssl require clientcert" -msgstr "ssl ƒNƒ‰ƒCƒAƒ“ƒg”FØ‚ğ—v‹" - -#: param/loadparm.c:748 -msgid "ssl require servercert" -msgstr "ssl ƒT[ƒo”FØ‚ğ—v‹" - -#: param/loadparm.c:749 -msgid "ssl ciphers" -msgstr "ssl ˆÃ†" - -#: param/loadparm.c:750 -msgid "ssl version" -msgstr "ssl ƒo[ƒWƒ‡ƒ“" - -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "ssl ŒİŠ·«" - -#: param/loadparm.c:754 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "ƒƒMƒ“ƒO ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:755 -msgid "log level" -msgstr "ƒƒO ƒŒƒxƒ‹" - -#: param/loadparm.c:756 -#, fuzzy -msgid "debuglevel" -msgstr "ƒfƒoƒbƒOƒŒƒxƒ‹" - -#: 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 "ƒƒO ƒtƒ@ƒCƒ‹" - -#: param/loadparm.c:761 -msgid "max log size" -msgstr "ő僃O ƒTƒCƒY" - -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv ƒƒO" - -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "ƒfƒoƒbƒO ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv" - -#: param/loadparm.c:764 -#, fuzzy -msgid "debug hires timestamp" -msgstr "ƒfƒoƒbƒO ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv" - -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "ƒfƒoƒbƒO pid" - -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "ƒfƒoƒbƒO uid" - -#: param/loadparm.c:768 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "ƒvƒƒgƒRƒ‹ ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:770 -msgid "protocol" -msgstr "ƒvƒƒgƒRƒ‹" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "" - -#: param/loadparm.c:772 -#, fuzzy -msgid "max protocol" -msgstr "ƒvƒƒgƒRƒ‹" - -#: param/loadparm.c:773 -#, fuzzy -msgid "min protocol" -msgstr "ƒvƒƒgƒRƒ‹" - -#: param/loadparm.c:774 -msgid "unicode" -msgstr "" - -#: param/loadparm.c:775 -msgid "read bmpx" -msgstr "bmpx “Ç‚İo‚µ" - -#: param/loadparm.c:776 -msgid "read raw" -msgstr "raw “Ç‚İo‚µ" - -#: param/loadparm.c:777 -msgid "write raw" -msgstr "raw ‘‚«‚İ" - -#: param/loadparm.c:779 -msgid "nt smb support" -msgstr "nt smb ƒTƒ|[ƒg" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "nt pipe ƒTƒ|[ƒg" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "nt acl ƒTƒ|[ƒg" - -#: param/loadparm.c:782 -msgid "announce version" -msgstr "ƒAƒiƒEƒ“ƒX ƒo[ƒWƒ‡ƒ“" - -#: param/loadparm.c:783 -msgid "announce as" -msgstr "ƒAƒiƒEƒ“ƒX‚·‚éí—Ş" - -#: 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 "–¼‘O‰ğŒˆ‚̇”Ô" - -#: param/loadparm.c:788 -msgid "max packet" -msgstr "Å‘åƒpƒPƒbƒg" - -#: param/loadparm.c:789 -msgid "packet size" -msgstr "ƒpƒPƒbƒg ƒTƒCƒY" - -#: 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 "ƒ^ƒCƒ€ ƒT[ƒo" - -#: param/loadparm.c:795 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "ƒ`ƒ…[ƒjƒ“ƒO ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:797 -msgid "change notify timeout" -msgstr "XV’Ê’m‚ÌŠÔŠu" - -#: param/loadparm.c:798 -msgid "deadtime" -msgstr "Ø’f‚Ü‚Å‚ÌŠÔ" - -#: param/loadparm.c:799 -msgid "getwd cache" -msgstr "getwd ƒLƒƒƒbƒVƒ…" - -#: param/loadparm.c:800 -msgid "keepalive" -msgstr "" - -#: param/loadparm.c:802 -msgid "lpq cache time" -msgstr "lpq ƒLƒƒƒbƒVƒ…ŠÔ" - -#: 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 "ƒ†[ƒU’ljÁƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:806 -msgid "max disk size" -msgstr "Å‘åƒfƒBƒXƒN ƒTƒCƒY" - -#: param/loadparm.c:807 -msgid "max open files" -msgstr "Å‘åƒtƒ@ƒCƒ‹ ƒI[ƒvƒ“”" - -#: param/loadparm.c:808 -msgid "min print space" -msgstr "ŬˆóüƒXƒy[ƒX" - -#: param/loadparm.c:809 -msgid "read size" -msgstr "“Ç‚İæ‚èƒTƒCƒY" - -#: param/loadparm.c:811 -msgid "socket options" -msgstr "ƒ\\ƒPƒbƒg ƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:812 -msgid "stat cache size" -msgstr "stat ƒLƒƒƒbƒVƒ… ƒTƒCƒY" - -#: param/loadparm.c:813 -#, fuzzy -msgid "strict allocate" -msgstr "Œµ–§‚ȃƒbƒN" - -#: 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 "ƒ†[ƒU–¼ƒ}ƒbƒv" - -#: param/loadparm.c:817 -msgid "hostname lookups" -msgstr "" - -#: param/loadparm.c:818 -msgid "write cache size" -msgstr "‘‚«‚݃LƒƒƒbƒVƒ… ƒTƒCƒY" - -#: param/loadparm.c:820 +#: ../param/loadparm.c:940 msgid "Printing Options" -msgstr "ˆóüƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:822 -#, fuzzy -msgid "total print jobs" -msgstr "ƒvƒŠƒ“ƒ^‚ğƒ[ƒh" - -#: param/loadparm.c:823 -#, fuzzy -msgid "max print jobs" -msgstr "ˆóü‰Â" - -#: param/loadparm.c:824 -msgid "load printers" -msgstr "ƒvƒŠƒ“ƒ^‚ğƒ[ƒh" +msgstr "ˆóü ƒIƒvƒVƒ‡ƒ“" -#: 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 "ƒ|ƒXƒgƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:830 -msgid "printing" -msgstr "ˆóü•û–@" - -#: param/loadparm.c:831 -msgid "print command" -msgstr "ˆóüƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:832 -msgid "disable spoolss" -msgstr "" - -#: param/loadparm.c:833 -msgid "lpq command" -msgstr "lpq ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:834 -msgid "lprm command" -msgstr "lprm ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:835 -msgid "lppause command" -msgstr "lppause ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:836 -msgid "lpresume command" -msgstr "lpresume ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:837 -msgid "queuepause command" -msgstr "ƒLƒ…[’â~ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:838 -msgid "queueresume command" -msgstr "ƒLƒ…[ÄŠJƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:840 -#, fuzzy -msgid "enumports command" -msgstr "ˆóüƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:841 -#, fuzzy -msgid "addprinter command" -msgstr "ˆóüƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:842 -#, fuzzy -msgid "deleteprinter command" -msgstr "ˆóüƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:843 -#, fuzzy -msgid "show add printer wizard" -msgstr "ƒvƒŠƒ“ƒ^‚ğƒ[ƒh" - -#: param/loadparm.c:844 -#, fuzzy -msgid "os2 driver map" -msgstr "ƒz[ƒ€ƒfƒBƒŒƒNƒgƒŠ ƒ}ƒbƒv" - -#: param/loadparm.c:846 -msgid "printer name" -msgstr "ƒvƒŠƒ“ƒ^–¼" - -#: param/loadparm.c:847 -msgid "printer" -msgstr "ƒvƒŠƒ“ƒ^" - -#: param/loadparm.c:848 -#, fuzzy -msgid "use client driver" -msgstr "ssl ƒNƒ‰ƒCƒAƒ“ƒg”FØ" - -#: param/loadparm.c:849 -msgid "printer driver" -msgstr "ƒvƒŠƒ“ƒ^ ƒhƒ‰ƒCƒo" - -#: param/loadparm.c:850 -msgid "printer driver file" -msgstr "ƒvƒŠƒ“ƒ^ ƒhƒ‰ƒCƒo ƒtƒ@ƒCƒ‹" - -#: param/loadparm.c:851 -msgid "printer driver location" -msgstr "ƒvƒŠƒ“ƒ^ ƒhƒ‰ƒCƒo‚ÌêŠ" - -#: param/loadparm.c:853 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "ƒtƒ@ƒCƒ‹–¼‚Ì戵" -#: param/loadparm.c:854 -msgid "strip dot" -msgstr "ƒhƒbƒg‚ğí‚é" - -#: param/loadparm.c:856 -msgid "mangled stack" -msgstr "–¼‘O•ÏŠ·—pƒXƒ^ƒbƒN" - -#: 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 "’ZŒ`®‚Å•¶š‚̑嬂ğ•Û‘¶" - -#: param/loadparm.c:862 -msgid "mangle case" -msgstr "‘å/¬•¶š‚Ì•ÏŠ·" - -#: param/loadparm.c:863 -msgid "mangling char" -msgstr "•ÏŠ·—p•¶š" - -#: param/loadparm.c:864 -msgid "hide dot files" -msgstr "ƒhƒbƒgƒtƒ@ƒCƒ‹‚ğ‰B‚·" - -#: param/loadparm.c:865 -msgid "hide unreadable" -msgstr "" - -#: param/loadparm.c:866 -msgid "delete veto files" -msgstr "‹‘”Ûƒtƒ@ƒCƒ‹‚ğíœ" - -#: param/loadparm.c:867 -msgid "veto files" -msgstr "‹‘”Ûƒtƒ@ƒCƒ‹" - -#: param/loadparm.c:868 -msgid "hide files" -msgstr "‰B‚µƒtƒ@ƒCƒ‹" - -#: param/loadparm.c:869 -msgid "veto oplock files" -msgstr "oplock ‚ğ‹Ö~‚·‚éƒtƒ@ƒCƒ‹" - -#: param/loadparm.c:870 -msgid "map system" -msgstr "ƒVƒXƒeƒ€‘®«‚Ƀ}ƒbƒv" - -#: param/loadparm.c:871 -msgid "map hidden" -msgstr "‰B‚µ‘®«‚Ƀ}ƒbƒv" - -#: param/loadparm.c:872 -msgid "map archive" -msgstr "ƒA[ƒJƒCƒu‘®«‚Ƀ}ƒbƒv" - -#: param/loadparm.c:873 -msgid "mangled names" -msgstr "•ÏŠ·‚µ‚½–¼‘O‚Å•\¦" - -#: param/loadparm.c:874 -msgid "mangled map" -msgstr "•ÏŠ·ƒ}ƒbƒv" - -#: param/loadparm.c:875 -msgid "stat cache" -msgstr "stat ƒLƒƒƒbƒVƒ…" - -#: param/loadparm.c:877 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "ƒhƒƒCƒ“ ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "ƒhƒƒCƒ“ŠÇ—ƒOƒ‹[ƒv" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "ƒhƒƒCƒ“ ƒQƒXƒg ƒOƒ‹[ƒv" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "ƒOƒ‹[ƒv–¼ƒ}ƒbƒv" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "ƒ}ƒVƒ“ ƒpƒXƒ[ƒh ƒ^ƒCƒ€ƒAƒEƒg" - -#: param/loadparm.c:888 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "ƒƒOƒIƒ“ ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:890 -msgid "add user script" -msgstr "ƒ†[ƒU’ljÁƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:891 -msgid "delete user script" -msgstr "ƒ†[ƒU휃XƒNƒŠƒvƒg" - -#: param/loadparm.c:892 -#, fuzzy -msgid "add group script" -msgstr "ƒ†[ƒU’ljÁƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:893 -#, fuzzy -msgid "delete group script" -msgstr "ƒ†[ƒU휃XƒNƒŠƒvƒg" - -#: param/loadparm.c:894 -#, fuzzy -msgid "add user to group script" -msgstr "ƒ†[ƒU’ljÁƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:895 -#, fuzzy -msgid "delete user from group script" -msgstr "ƒ†[ƒU휃XƒNƒŠƒvƒg" - -#: param/loadparm.c:896 -#, fuzzy -msgid "add machine script" -msgstr "ƒ†[ƒU’ljÁƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:897 -#, fuzzy -msgid "shutdown script" -msgstr "ƒƒOƒIƒ“ ƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:898 -#, fuzzy -msgid "abort shutdown script" -msgstr "ƒƒOƒIƒ“ ƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:900 -msgid "logon script" -msgstr "ƒƒOƒIƒ“ ƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:901 -msgid "logon path" -msgstr "ƒƒOƒIƒ“ ƒpƒX" - -#: param/loadparm.c:902 -msgid "logon drive" -msgstr "ƒƒOƒIƒ“ ƒhƒ‰ƒCƒu" - -#: param/loadparm.c:903 -msgid "logon home" -msgstr "ƒƒOƒIƒ“ ƒz[ƒ€" - -#: param/loadparm.c:904 -msgid "domain logons" -msgstr "ƒhƒƒCƒ“ ƒƒOƒIƒ“" - -#: param/loadparm.c:906 +#: ../param/loadparm.c:1019 msgid "Browse Options" -msgstr "ƒRƒ“ƒsƒ…[ƒ^ˆê——•\¦ƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:908 -msgid "os level" -msgstr "os ƒŒƒxƒ‹" - -#: param/loadparm.c:909 -msgid "lm announce" -msgstr "lm ƒAƒiƒEƒ“ƒX" - -#: param/loadparm.c:910 -msgid "lm interval" -msgstr "lm ŠÔŠu" - -#: param/loadparm.c:911 -msgid "preferred master" -msgstr "—Dæ‚·‚éƒ}ƒXƒ^" - -#: param/loadparm.c:912 -msgid "prefered master" -msgstr "—Dæ‚·‚éƒ}ƒXƒ^" - -#: param/loadparm.c:913 -msgid "local master" -msgstr "ƒ[ƒJƒ‹ ƒ}ƒXƒ^" - -#: param/loadparm.c:914 -msgid "domain master" -msgstr "ƒhƒƒCƒ“ ƒ}ƒXƒ^" - -#: param/loadparm.c:915 -msgid "browse list" -msgstr "ƒuƒ‰ƒEƒY ƒŠƒXƒg" +msgstr "ƒuƒ‰ƒEƒWƒ“ƒO ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:916 -msgid "browseable" -msgstr "ƒuƒ‰ƒEƒY‰Â" - -#: param/loadparm.c:917 -msgid "browsable" -msgstr "ƒuƒ‰ƒEƒY‰Â" - -#: param/loadparm.c:918 -msgid "enhanced browsing" -msgstr "" - -#: param/loadparm.c:920 +#: ../param/loadparm.c:1033 msgid "WINS Options" -msgstr "WINSƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:921 -msgid "dns proxy" -msgstr "dns ƒvƒƒLƒV" - -#: param/loadparm.c:922 -msgid "wins proxy" -msgstr "wins ƒvƒƒLƒV" +msgstr "WINS ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:924 -msgid "wins server" -msgstr "wins ƒT[ƒo" - -#: param/loadparm.c:925 -msgid "wins support" -msgstr "wins ƒTƒ|[ƒg" - -#: param/loadparm.c:926 -msgid "wins hook" -msgstr "wins ƒtƒbƒN" - -#: param/loadparm.c:928 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "ƒƒbƒLƒ“ƒO ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:930 -#, fuzzy -msgid "blocking locks" -msgstr "ƒƒbƒN" - -#: param/loadparm.c:931 -msgid "fake oplocks" -msgstr "‹U‘• oplock" - -#: param/loadparm.c:932 -msgid "kernel oplocks" -msgstr "ƒJ[ƒlƒ‹ oplock" - -#: param/loadparm.c:933 -msgid "locking" -msgstr "ƒƒbƒN" - -#: param/loadparm.c:935 -msgid "oplocks" -msgstr "•Ö‹X“IƒƒbƒN" - -#: param/loadparm.c:936 -msgid "level2 oplocks" -msgstr "level2 oplocks" - -#: param/loadparm.c:937 -msgid "oplock break wait time" -msgstr "oplock ’†’f‚Ì‘Ò‚¿ŠÔ" - -#: param/loadparm.c:938 -msgid "oplock contention limit" -msgstr "oplock ‹£‡‚ÌŒÀ“x" - -#: param/loadparm.c:939 -#, fuzzy -msgid "posix locking" -msgstr "Œµ–§‚ȃƒbƒN" - -#: param/loadparm.c:940 -msgid "strict locking" -msgstr "Œµ–§‚ȃƒbƒN" - -#: param/loadparm.c:941 -msgid "share modes" -msgstr "‹¤—Lƒ‚[ƒh" - -#: param/loadparm.c:944 +#: ../param/loadparm.c:1061 msgid "Ldap Options" -msgstr "Ldap ƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:946 -msgid "ldap server" -msgstr "ldap ƒT[ƒo" - -#: param/loadparm.c:947 -msgid "ldap port" -msgstr "ldap ƒ|[ƒg" +msgstr "LDAP ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:948 -msgid "ldap suffix" -msgstr "lpad ƒTƒtƒBƒbƒNƒX" - -#: param/loadparm.c:949 -msgid "ldap filter" -msgstr "ldap ƒtƒBƒ‹ƒ^[" - -#: param/loadparm.c:950 -msgid "ldap root" -msgstr "ldap ƒ‹[ƒg" - -#: param/loadparm.c:951 -msgid "ldap root passwd" -msgstr "ldap ƒ‹[ƒg ƒpƒXƒ[ƒh" - -#: param/loadparm.c:954 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "‚»‚Ì‘¼‚̃IƒvƒVƒ‡ƒ“" -#: param/loadparm.c:955 -#, fuzzy -msgid "add share command" -msgstr "dfree ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:956 -#, fuzzy -msgid "change share command" -msgstr "ƒƒbƒZ[ƒW ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:957 -#, fuzzy -msgid "delete share command" -msgstr "ƒƒbƒZ[ƒW ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:959 -msgid "config file" -msgstr "İ’èƒtƒ@ƒCƒ‹" - -#: param/loadparm.c:960 -msgid "preload" -msgstr "ƒvƒŠƒ[ƒh" - -#: param/loadparm.c:961 -msgid "auto services" -msgstr "©“®ƒT[ƒrƒX" - -#: param/loadparm.c:962 -msgid "lock dir" -msgstr "ƒƒbƒN ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:963 -msgid "lock directory" -msgstr "ƒƒbƒN ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:965 -msgid "utmp directory" -msgstr "utmp ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:966 -#, fuzzy -msgid "wtmp directory" -msgstr "utmp ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:967 -#, fuzzy -msgid "utmp" -msgstr "utmp ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:970 -msgid "default service" -msgstr "Šù’èƒT[ƒrƒX" - -#: param/loadparm.c:971 -msgid "default" -msgstr "Šù’è" - -#: param/loadparm.c:972 -msgid "message command" -msgstr "ƒƒbƒZ[ƒW ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:973 -msgid "dfree command" -msgstr "dfree ƒRƒ}ƒ“ƒh" - -#: param/loadparm.c:974 -msgid "remote announce" -msgstr "ƒŠƒ‚[ƒg ƒAƒiƒEƒ“ƒX" - -#: param/loadparm.c:975 -msgid "remote browse sync" -msgstr "ƒŠƒ‚[ƒg‚̃uƒ‰ƒEƒYƒŠƒXƒg‚𓯊ú" - -#: param/loadparm.c:976 -msgid "socket address" -msgstr "ƒ\\ƒPƒbƒg ƒAƒhƒŒƒX" - -#: param/loadparm.c:977 -msgid "homedir map" -msgstr "ƒz[ƒ€ƒfƒBƒŒƒNƒgƒŠ ƒ}ƒbƒv" - -#: param/loadparm.c:978 -msgid "time offset" -msgstr "ŠÔƒIƒtƒZƒbƒg" - -#: param/loadparm.c:979 -msgid "NIS homedir" -msgstr "NIS ƒz[ƒ€ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:980 -msgid "-valid" -msgstr "-valid" - -#: param/loadparm.c:982 -msgid "copy" -msgstr "ƒRƒs[" - -#: param/loadparm.c:983 -msgid "include" -msgstr "ƒCƒ“ƒNƒ‹[ƒh" - -#: param/loadparm.c:984 -msgid "exec" -msgstr "Às" - -#: param/loadparm.c:985 -msgid "preexec" -msgstr "Ú‘±‚ÉÀs" - -#: param/loadparm.c:987 -#, fuzzy -msgid "preexec close" -msgstr "Ú‘±‚ÉÀs" - -#: param/loadparm.c:988 -msgid "postexec" -msgstr "Ø’f‚ÉÀs" - -#: param/loadparm.c:989 -msgid "root preexec" -msgstr "ƒ‹[ƒg‚ÅÚ‘±Às" - -#: param/loadparm.c:990 -#, fuzzy -msgid "root preexec close" -msgstr "ƒ‹[ƒg‚ÅÚ‘±Às" - -#: param/loadparm.c:991 -msgid "root postexec" -msgstr "ƒ‹[ƒg‚ÅØ’fÀs" - -#: param/loadparm.c:992 -msgid "available" -msgstr "—˜—p‰Â”\" - -#: param/loadparm.c:993 -msgid "volume" -msgstr "ƒ{ƒŠƒ…[ƒ€" - -#: param/loadparm.c:994 -msgid "fstype" -msgstr "ƒtƒ@ƒCƒ‹ ƒVƒXƒeƒ€ ƒ^ƒCƒv" - -#: param/loadparm.c:995 -#, fuzzy -msgid "set directory" -msgstr "ƒfƒBƒŒƒNƒgƒŠ" - -#: param/loadparm.c:996 -msgid "source environment" -msgstr "" - -#: param/loadparm.c:997 -msgid "wide links" -msgstr "L‚­ƒŠƒ“ƒN" - -#: param/loadparm.c:998 -msgid "follow symlinks" -msgstr "symlink æ‚ğQÆ" - -#: param/loadparm.c:999 -msgid "dont descend" -msgstr "‰º‚É~‚è‚È‚¢ƒfƒBƒŒƒNƒgƒŠ" +#: ../param/loadparm.c:1138 +msgid "VFS module options" +msgstr "VFS ƒIƒvƒVƒ‡ƒ“" -#: param/loadparm.c:1000 -msgid "magic script" -msgstr "ƒ}ƒWƒbƒN ƒXƒNƒŠƒvƒg" - -#: param/loadparm.c:1001 -msgid "magic output" -msgstr "ƒ}ƒWƒbƒN o—Í" - -#: param/loadparm.c:1002 -msgid "delete readonly" -msgstr "“Ç‚İæ‚è‚݂̂̃tƒ@ƒCƒ‹‚ğíœ" - -#: param/loadparm.c:1003 -#, fuzzy -msgid "dos filemode" -msgstr "dos ‚̃tƒ@ƒCƒ‹" - -#: param/loadparm.c:1004 -msgid "dos filetimes" -msgstr "dos ‚̃tƒ@ƒCƒ‹" - -#: param/loadparm.c:1005 -msgid "dos filetime resolution" -msgstr "dos ‚̃tƒ@ƒCƒ‹‚Ì•ª‰ğ”\" - -#: param/loadparm.c:1007 -msgid "fake directory create times" -msgstr "‹U‚̃fƒBƒŒƒNƒgƒŠì¬" - -#: param/loadparm.c:1008 -msgid "panic action" -msgstr "ƒpƒjƒbƒN ƒAƒNƒVƒ‡ƒ“" - -#: param/loadparm.c:1009 -#, fuzzy -msgid "hide local users" -msgstr "ƒ[ƒJƒ‹ ƒ}ƒXƒ^" - -#: param/loadparm.c:1012 -msgid "VFS options" -msgstr "VFSƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:1014 -msgid "vfs object" -msgstr "" - -#: param/loadparm.c:1015 -#, fuzzy -msgid "vfs options" -msgstr "VFSƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:1018 -#, fuzzy -msgid "msdfs root" -msgstr "ldap ƒ‹[ƒg" - -#: param/loadparm.c:1019 -#, fuzzy -msgid "host msdfs" -msgstr "‹‘”Û‚·‚éƒzƒXƒg" - -#: param/loadparm.c:1021 +#: ../param/loadparm.c:1148 msgid "Winbind options" -msgstr "WinbindƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:1023 -#, fuzzy -msgid "winbind uid" -msgstr "WinbindƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:1024 -#, fuzzy -msgid "winbind gid" -msgstr "WinbindƒIƒvƒVƒ‡ƒ“" - -#: 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ƒIƒvƒVƒ‡ƒ“" - -#: param/loadparm.c:1028 -#, fuzzy -msgid "winbind cache time" -msgstr "lpq ƒLƒƒƒbƒVƒ…ŠÔ" - -#: param/loadparm.c:1029 -#, fuzzy -msgid "winbind enum users" -msgstr "–³Œø‚ȃ†[ƒU" - -#: param/loadparm.c:1030 -msgid "winbind enum groups" -msgstr "" - -#~ msgid "failed to open %s for writing\n" -#~ msgstr "%s ‚ğ‘‚«‚İ—p‚ɃI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ\n" - -#~ msgid "Can't reload %s\n" -#~ msgstr "%s ‚ğÄ“Ç‚İ‚İ‚Å‚«‚Ü‚¹‚ñ\n" - -#~ msgid "Can't setup password database vectors.\n" -#~ msgstr "ƒpƒXƒ[ƒhEƒf[ƒ^ƒx[ƒX‚ªŒ©‚‚¯‚ç‚ê‚Ü‚¹‚ñ\n" - -#~ msgid "You need to have status=yes in your smb config file\n" -#~ msgstr "smb.conf ‚Å status=yes ‚ğݒ肵‚Ä‚­‚¾‚³‚¢\n" - -#~ msgid "coding system" -#~ msgstr "ƒR[ƒfƒBƒ“ƒO ƒVƒXƒeƒ€" - -#~ msgid "client code page" -#~ msgstr "ƒNƒ‰ƒCƒAƒ“ƒg ƒR[ƒhƒy[ƒW" - -#~ msgid "revalidate" -#~ msgstr "Ä”FØ" - -#~ msgid "status" -#~ msgstr "ƒXƒe[ƒ^ƒX" - -#~ msgid "shared mem size" -#~ msgstr "‹¤—Lƒƒ‚ƒŠ ƒTƒCƒY" - -#~ msgid "character set" -#~ msgstr "•¶šƒZƒbƒg" - -#~ msgid "domain groups" -#~ msgstr "ƒhƒƒCƒ“ ƒOƒ‹[ƒv" - -#~ msgid "domain admin users" -#~ msgstr "ƒhƒƒCƒ“ŠÇ—ƒ†[ƒU" - -#~ msgid "domain guest users" -#~ msgstr "ƒhƒƒCƒ“ ƒQƒXƒg ƒ†[ƒU" - -#~ msgid "ole locking compatibility" -#~ msgstr "ole ƒƒbƒN‚̌݊·«" - -#~ msgid "smbrun" -#~ msgstr "smbrun" - -#, fuzzy -#~ msgid "wtmp dir" -#~ msgstr "utmp ƒfƒBƒŒƒNƒgƒŠ" - -#~ msgid "unix realname" -#~ msgstr "unix ‚Ì–{–¼" +msgstr "Winbind ƒIƒvƒVƒ‡ƒ“" diff --git a/source/po/nl.msg b/source/po/nl.msg new file mode 100644 index 00000000000..8d7b050ce90 --- /dev/null +++ b/source/po/nl.msg @@ -0,0 +1,593 @@ +# Dutch messages for international release of SWAT. +# Copyright (C) 2003 Jelmer Vernooij +# +# 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: 2003-10-06 05:30+0900\n" +"PO-Revision-Date: 2000-02-08 12:48+09:00\n" +"Last-Translator: Jelmer Vernooij \n" +"Language-Team: (Samba Team) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=US-ASCII\n" +"Content-Transfer-Encoding: \n" + +#: ../web/swat.c:117 +#, c-format +msgid "ERROR: Can't open %s" +msgstr "FOUT: Kan %s niet openen" + +#: ../web/swat.c:200 +msgid "Help" +msgstr "Help" + +#: ../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 "Stel Standaard In" + +#: ../web/swat.c:408 +#, c-format +msgid "failed to open %s for writing" +msgstr "kon %s niet openen voor schrijven" + +#: ../web/swat.c:431 +#, c-format +msgid "Can't reload %s" +msgstr "Kan %s niet herladen" + +#: ../web/swat.c:501 +#, c-format +msgid "Logged in as %s" +msgstr "Ingelogd als %s" + +#: ../web/swat.c:505 +msgid "Home" +msgstr "Home" + +#: ../web/swat.c:507 +msgid "Globals" +msgstr "Algemene Instellingen" + +#: ../web/swat.c:508 +msgid "Shares" +msgstr "Gedeelde Bronnen" + +#: ../web/swat.c:509 +msgid "Printers" +msgstr "Printers" + +#: ../web/swat.c:510 +msgid "Wizard" +msgstr "Wizard" + +#: ../web/swat.c:513 +msgid "Status" +msgstr "Status" + +#: ../web/swat.c:514 +msgid "View Config" +msgstr "Bekijk Configuratie" + +#: ../web/swat.c:516 +msgid "Password Management" +msgstr "Wachtwoord Beheer" + +#: ../web/swat.c:526 +msgid "Current View Is" +msgstr "Huidige weergave is" + +#: ../web/swat.c:527 ../web/swat.c:530 +msgid "Basic" +msgstr "Basis" + +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" +msgstr "Geadvanceerd" + +#: ../web/swat.c:529 +msgid "Change View To" +msgstr "Verander Weergave In" + +#: ../web/swat.c:554 +msgid "Current Config" +msgstr "Huidige Configuratie" + +#: ../web/swat.c:558 +msgid "Normal View" +msgstr "Normale Weergave" + +#: ../web/swat.c:560 +msgid "Full View" +msgstr "Volledige Weergave" + +#. 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 "Wizard Instellingen Veranderen Pagina" + +#: ../web/swat.c:608 +msgid "Note: smb.conf file has been read and rewritten" +msgstr "N.B.: het smb.conf bestand is gelezen en herschreven" + +#. Here we go ... +#: ../web/swat.c:716 +msgid "Samba Configuration Wizard" +msgstr "Samba Configuratie Wizard" + +#: ../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 "De \"Herschrijf smb.conf bestand\" knop zal alle standaardwaardes en alle commentaar verwijderen." + +#: ../web/swat.c:721 +msgid "The same will happen if you press the commit button." +msgstr "Hetzelfde zal gebeuren als u de \"toepassen\" knop gebruikt." + +#: ../web/swat.c:724 +msgid "Rewrite smb.conf file" +msgstr "Herschrijf smb.conf bestand" + +#: ../web/swat.c:725 +msgid "Commit" +msgstr "Toepassen" + +#: ../web/swat.c:726 +msgid "Edit Parameter Values" +msgstr "Bewerk Configuratie Waardes" + +#: ../web/swat.c:732 +msgid "Server Type" +msgstr "Server Type" + +#: ../web/swat.c:733 +msgid "Stand Alone" +msgstr "Stand Alone" + +#: ../web/swat.c:734 +msgid "Domain Member" +msgstr "Domein Lid" + +#: ../web/swat.c:735 +msgid "Domain Controller" +msgstr "Domein Controller" + +#: ../web/swat.c:738 +msgid "Unusual Type in smb.conf - Please Select New Mode" +msgstr "Ongebruikelijk Type in smb.conf - Selecteer een nieuwe modus" + +#: ../web/swat.c:740 +msgid "Configure WINS As" +msgstr "Configureer WINS Als" + +#: ../web/swat.c:741 +msgid "Not Used" +msgstr "Niet gebruikt" + +#: ../web/swat.c:742 +msgid "Server for client use" +msgstr "Server voor client gebruik" + +#: ../web/swat.c:743 +msgid "Client of another WINS server" +msgstr "Client van een andere WINS server" + +#: ../web/swat.c:745 +msgid "Remote WINS Server" +msgstr "Naam of IP-adres WINS Server" + +#: ../web/swat.c:756 +msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" +msgstr "Fout: WINS Server Modus en WINS Ondersteuning beiden ingesteld in smb.conf" + +#: ../web/swat.c:757 +msgid "Please Select desired WINS mode above." +msgstr "Selecteer hierboven de gewenste WINS modus." + +#: ../web/swat.c:759 +msgid "Expose Home Directories" +msgstr "Stel Home Directories Open" + +#: ../web/swat.c:774 +msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." +msgstr "The configuratie hierboven zal meerdere variabelen veranderen en zal over het algemeen zorgen voor snelle installatie van Samba." + +#: ../web/swat.c:787 +msgid "Global Parameters" +msgstr "Algemene Instellingen" + +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 +msgid "Commit Changes" +msgstr "Pas Veranderingen Toe" + +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 +msgid "Reset Values" +msgstr "Beginwaarden" + +#: ../web/swat.c:844 +msgid "Share Parameters" +msgstr "Instellingen Gedeelde Bronnen" + +#: ../web/swat.c:887 +msgid "Choose Share" +msgstr "Kies Bron" + +#: ../web/swat.c:901 +msgid "Delete Share" +msgstr "Verwijder Bron" + +#: ../web/swat.c:908 +msgid "Create Share" +msgstr "Maak Bron" + +#: ../web/swat.c:944 +msgid "password change in demo mode rejected" +msgstr "wachtwoord veranderen in demo modus geweigerd" + +#: ../web/swat.c:957 +msgid "Can't setup password database vectors." +msgstr "Kan wachtwoord database vectors niet opzetten." + +#: ../web/swat.c:983 +msgid " Must specify \"User Name\" " +msgstr " \"Gebruikersnaam\" moet opgegeven worden " + +#: ../web/swat.c:999 +msgid " Must specify \"Old Password\" " +msgstr " \"Oude wachtwoord\" moet opgegeven worden " + +#: ../web/swat.c:1005 +msgid " Must specify \"Remote Machine\" " +msgstr " \"Server Naam of IP\" moet opgegeven worden " + +#: ../web/swat.c:1012 +msgid " Must specify \"New, and Re-typed Passwords\" " +msgstr " \"Nieuw, en bevestiging Wachtwoorden\" moeten opgegeven worden " + +#: ../web/swat.c:1018 +msgid " Re-typed password didn't match new password " +msgstr " Bevestigingswachtwoord was anders dan nieuwe wachtwoord " + +#: ../web/swat.c:1048 +#, c-format +msgid " The passwd for '%s' has been changed." +msgstr " Het wachtwoord voor '%s' is veranderd." + +#: ../web/swat.c:1051 +#, c-format +msgid " The passwd for '%s' has NOT been changed." +msgstr " Het wachtwoord voor '%s' is niet veranderd." + +#: ../web/swat.c:1076 +msgid "Server Password Management" +msgstr "Server Wachtwoord Beheer" + +#. +#. * Create all the dialog boxes for data collection +#. +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" +msgstr "Gebuikersnaam" + +#: ../web/swat.c:1088 ../web/swat.c:1134 +msgid "Old Password" +msgstr "Oud Wachtwoord" + +#: ../web/swat.c:1091 ../web/swat.c:1136 +msgid "New Password" +msgstr "Nieuw Wachtwoord" + +#: ../web/swat.c:1093 ../web/swat.c:1138 +msgid "Re-type New Password" +msgstr "Bevestiging Nieuw Wachtwoord" + +#: ../web/swat.c:1101 ../web/swat.c:1149 +msgid "Change Password" +msgstr "Verander Wachtwoord" + +#: ../web/swat.c:1104 +msgid "Add New User" +msgstr "Voeg Gebruiker Toe" + +#: ../web/swat.c:1106 +msgid "Delete User" +msgstr "Verwijder Gebruiker" + +#: ../web/swat.c:1108 +msgid "Disable User" +msgstr "Maak gebruiker inactief" + +#: ../web/swat.c:1110 +msgid "Enable User" +msgstr "Maak gebruiker actief" + +#: ../web/swat.c:1123 +msgid "Client/Server Password Management" +msgstr "Client/Server Wachtwoord Beheer" + +#: ../web/swat.c:1140 +msgid "Remote Machine" +msgstr "Naam of IP Server" + +#: ../web/swat.c:1179 +msgid "Printer Parameters" +msgstr "Printer Instellingen" + +#: ../web/swat.c:1181 +msgid "Important Note:" +msgstr "Belangrijk:" + +#: ../web/swat.c:1182 +msgid "Printer names marked with [*] in the Choose Printer drop-down box " +msgstr "Printer namen gemarkeerd met [*] in het Kies Printer veld " + +#: ../web/swat.c:1183 +msgid "are autoloaded printers from " +msgstr "zijn automatisch geladen uit " + +#: ../web/swat.c:1184 +msgid "Printcap Name" +msgstr "Printcap Naam" + +#: ../web/swat.c:1185 +msgid "Attempting to delete these printers from SWAT will have no effect." +msgstr "Proberen deze printers te verwijderen vanuit SWAT zal geen effect hebben." + +#: ../web/swat.c:1231 +msgid "Choose Printer" +msgstr "Kies Printer" + +#: ../web/swat.c:1250 +msgid "Delete Printer" +msgstr "Verwijder Printer" + +#: ../web/swat.c:1257 +msgid "Create Printer" +msgstr "Maak Printer" + +#: ../web/statuspage.c:123 +msgid "RDONLY " +msgstr "RDONLY" + +#: ../web/statuspage.c:124 +msgid "WRONLY " +msgstr "WRONLY" + +#: ../web/statuspage.c:125 +msgid "RDWR " +msgstr "RDWR" + +#: ../web/statuspage.c:309 +msgid "Server Status" +msgstr "Server Status" + +#: ../web/statuspage.c:314 +msgid "Auto Refresh" +msgstr "Automatisch Verversen" + +#: ../web/statuspage.c:315 ../web/statuspage.c:320 +msgid "Refresh Interval: " +msgstr "Ververs Interval:" + +#: ../web/statuspage.c:319 +msgid "Stop Refreshing" +msgstr "Stop met Verversen" + +#: ../web/statuspage.c:334 +msgid "version:" +msgstr "versie:" + +#: ../web/statuspage.c:337 +msgid "smbd:" +msgstr "smbd:" + +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 +msgid "running" +msgstr "draaiend" + +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 +msgid "not running" +msgstr "niet draaiend" + +#: ../web/statuspage.c:341 +msgid "Stop smbd" +msgstr "Stop smbd" + +#: ../web/statuspage.c:343 +msgid "Start smbd" +msgstr "Start smbd" + +#: ../web/statuspage.c:345 +msgid "Restart smbd" +msgstr "Herstart smbd" + +#: ../web/statuspage.c:350 +msgid "nmbd:" +msgstr "nmbd:" + +#: ../web/statuspage.c:354 +msgid "Stop nmbd" +msgstr "Stop nmbd" + +#: ../web/statuspage.c:356 +msgid "Start nmbd" +msgstr "Start nmbd" + +#: ../web/statuspage.c:358 +msgid "Restart nmbd" +msgstr "Herstart nmbd" + +#: ../web/statuspage.c:364 +msgid "winbindd:" +msgstr "winbindd:" + +#: ../web/statuspage.c:368 +msgid "Stop winbindd" +msgstr "Stop winbindd" + +#: ../web/statuspage.c:370 +msgid "Start winbindd" +msgstr "Start winbindd" + +#: ../web/statuspage.c:372 +msgid "Restart winbindd" +msgstr "Herstart winbindd" + +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" +msgstr "Stop Alles" + +#: ../web/statuspage.c:382 +msgid "Restart All" +msgstr "Herstart Alles" + +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" +msgstr "Start Alles" + +#: ../web/statuspage.c:393 +msgid "Active Connections" +msgstr "Actieve Verbindingen" + +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 +msgid "PID" +msgstr "PID" + +#: ../web/statuspage.c:395 ../web/statuspage.c:408 +msgid "Client" +msgstr "Client" + +#: ../web/statuspage.c:395 +msgid "IP address" +msgstr "IP adres" + +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 +msgid "Date" +msgstr "Datum" + +#: ../web/statuspage.c:397 +msgid "Kill" +msgstr "Kill" + +#: ../web/statuspage.c:405 +msgid "Active Shares" +msgstr "Actieve Bronnen" + +#: ../web/statuspage.c:408 +msgid "Share" +msgstr "Bron" + +#: ../web/statuspage.c:408 +msgid "User" +msgstr "Gebruiker" + +#: ../web/statuspage.c:408 +msgid "Group" +msgstr "Groep" + +#: ../web/statuspage.c:414 +msgid "Open Files" +msgstr "Geopende Bestanden" + +#: ../web/statuspage.c:416 +msgid "Sharing" +msgstr "Gedeeld" + +#: ../web/statuspage.c:416 +msgid "R/W" +msgstr "Lees/Schrijf" + +#: ../web/statuspage.c:416 +msgid "Oplock" +msgstr "Oplock" + +#: ../web/statuspage.c:416 +msgid "File" +msgstr "Bestand" + +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" +msgstr "Toon Client in kolom 1" + +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" +msgstr "Toon PID in kolom 1" + +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "Basis Opties" + +#: ../param/loadparm.c:775 +msgid "Security Options" +msgstr "Veiligheidsopties" + +#: ../param/loadparm.c:859 +msgid "Logging Options" +msgstr "Log Opties" + +#: ../param/loadparm.c:874 +msgid "Protocol Options" +msgstr "Protocol Opties" + +#: ../param/loadparm.c:911 +msgid "Tuning Options" +msgstr "Fijntune Opties" + +#: ../param/loadparm.c:940 +msgid "Printing Options" +msgstr "Printer Opties" + +#: ../param/loadparm.c:970 +msgid "Filename Handling" +msgstr "Bestandsnaam Afhandeling" + +#: ../param/loadparm.c:996 +msgid "Domain Options" +msgstr "Domein Opties" + +#: ../param/loadparm.c:1000 +msgid "Logon Options" +msgstr "Logon Opties" + +#: ../param/loadparm.c:1019 +msgid "Browse Options" +msgstr "Verken Opties" + +#: ../param/loadparm.c:1033 +msgid "WINS Options" +msgstr "WINS Opties" + +#: ../param/loadparm.c:1043 +msgid "Locking Options" +msgstr "Locking Opties" + +#: ../param/loadparm.c:1061 +msgid "Ldap Options" +msgstr "LDAP Opties" + +#: ../param/loadparm.c:1078 +msgid "Miscellaneous Options" +msgstr "Verscheidene Opties" + +#: ../param/loadparm.c:1138 +msgid "VFS module options" +msgstr "VFS module opties" + +#: ../param/loadparm.c:1148 +msgid "Winbind options" +msgstr "Winbind opties" 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 \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("%s       %s", -#. 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 "Can't reload %s" +msgstr "" + +#: ../web/swat.c:501 #, c-format -msgid "Logged in as %s

      \n" +msgid "Logged in as %s" msgstr "Zalogowany jako %s

      \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 "Utwórz 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 "Próby usuniêcia 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 "Utwórz 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" +#: ../web/statuspage.c:425 +msgid "Show Client in col 1" msgstr "" -#: param/loadparm.c:647 -msgid "path" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" msgstr "" -#: param/loadparm.c:648 -msgid "directory" -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:859 +msgid "Logging Options" +msgstr "Opcje Blokowania" -#: param/loadparm.c:708 -msgid "write ok" -msgstr "" +#: ../param/loadparm.c:874 +msgid "Protocol Options" +msgstr "Opcje Protoko³u" -#: param/loadparm.c:709 -msgid "writeable" -msgstr "" +#: ../param/loadparm.c:911 +msgid "Tuning Options" +msgstr "Opcje Dostrajaj±ce" -#: param/loadparm.c:710 -msgid "writable" -msgstr "" +#: ../param/loadparm.c:940 +msgid "Printing Options" +msgstr "Opcje Drukowania" -#: param/loadparm.c:712 -#, fuzzy -msgid "create mask" -msgstr "Utwórz Wspó³udzia³" +#: ../param/loadparm.c:970 +msgid "Filename Handling" +msgstr "Obs³uga Nazw Plików" -#: param/loadparm.c:713 -#, fuzzy -msgid "create mode" -msgstr "Utwórz Wspó³udzia³" +#: ../param/loadparm.c:996 +msgid "Domain Options" +msgstr "Opcje Domeny" -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "" +#: ../param/loadparm.c:1000 +msgid "Logon Options" +msgstr "Opcje Logowania" -#: param/loadparm.c:715 -#, fuzzy -msgid "security mask" -msgstr "Opcje Zabezpieczeñ" +#: ../param/loadparm.c:1019 +msgid "Browse Options" +msgstr "Opcje Przegl±dania" -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "" +#: ../param/loadparm.c:1033 +msgid "WINS Options" +msgstr "Opcje WINS" -#: param/loadparm.c:717 -msgid "directory mask" -msgstr "" +#: ../param/loadparm.c:1043 +msgid "Locking Options" +msgstr "Opcje Blokowania" -#: param/loadparm.c:718 -msgid "directory mode" -msgstr "" +#: ../param/loadparm.c:1061 +msgid "Ldap Options" +msgstr "Opcje Ldap" -#: param/loadparm.c:719 -msgid "force directory mode" -msgstr "" +#: ../param/loadparm.c:1078 +msgid "Miscellaneous Options" +msgstr "Pozosta³e Opcje" -#: param/loadparm.c:720 -msgid "directory security mask" -msgstr "" +#: ../param/loadparm.c:1138 +msgid "VFS module options" +msgstr "Opcje WINS" -#: 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 -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 -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 -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 -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 -msgid "Filename Handling" -msgstr "Obs³uga Nazw Plików" - -#: 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 -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 -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 -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 -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 -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 -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 -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" -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æ wektorów 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 , 2001. +# Turkish messages for international release of SWAT. +# Copyright (C) 2001 Deniz Akkus Kanca # # 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 \n" "Language-Team: Turkish \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 açılamadı\n" +msgid "ERROR: Can't open %s" +msgstr "" -#. -#. str = stripspace(parm->label); -#. strlower (str); //monyo -#. d_printf("%s       %s", -#. str, _("Help"), parm->label); -#. -#: web/swat.c:211 +#: ../web/swat.c:200 msgid "Help" msgstr "Yardım" -#: 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 "Öntanımlıya Ayarla" -#: web/swat.c:502 +#: ../web/swat.c:408 #, c-format -msgid "Logged in as %s

      \n" -msgstr "%s kimliği ile oturum açılmış

      \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 %s" +msgstr "%s kimliği ile oturum açılmış" + +#: ../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 "Paylaşımlar" -#: web/swat.c:509 +#: ../web/swat.c:509 msgid "Printers" msgstr "Yazıcılar" -#: 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 Gözat" -#: web/swat.c:515 +#: ../web/swat.c:516 msgid "Password Management" msgstr "Şifre Yönetimi" -#: 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 Görünüm" + +#: ../web/swat.c:528 ../web/swat.c:531 +msgid "Advanced" +msgstr "Gelişmiş Görünüm" + +#: ../web/swat.c:529 +msgid "Change View To" +msgstr "Şifre Değiştir" + +#: ../web/swat.c:554 msgid "Current Config" msgstr "Şimdiki Ayarlar" -#: web/swat.c:543 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Normal Görünüm" -#: web/swat.c:545 +#: ../web/swat.c:560 msgid "Full View" msgstr "Tam Görünüm" -#: 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 "açıklama" + +#: ../web/swat.c:726 +msgid "Edit Parameter Values" +msgstr "Yazıcı Bilgileri" + +#: ../web/swat.c:732 +msgid "Server Type" +msgstr "" + +#: ../web/swat.c:733 +msgid "Stand Alone" +msgstr "Nmbd'yi çalıştır" + +#: ../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 Değişkenler" -#: 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 "Değişiklikleri 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 "Değerleri İlk Haline Getir" -#: web/swat.c:581 web/swat.c:676 web/swat.c:1018 -msgid "Advanced View" -msgstr "Gelişmiş Görünüm" - -#: web/swat.c:583 web/swat.c:678 web/swat.c:1020 -msgid "Basic View" -msgstr "Temel Görünüm" - -#: web/swat.c:613 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Paylaşım Parametreleri" -#: web/swat.c:642 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "Paylaşım Seçin" -#: web/swat.c:656 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Paylaşım Kaldır" -#: web/swat.c:663 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Paylaşım Oluştur" -#: 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 değişikliği 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 " \"Kullanıcı 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 eşleşmedi\n" -#: web/swat.c:812 +#: ../web/swat.c:1048 #, c-format -msgid " The passwd for '%s' has been changed. \n" -msgstr " '%s' için şifre değiştirildi. \n" +msgid " The passwd for '%s' has been changed." +msgstr " '%s' için şifre değiştirildi." -#: web/swat.c:814 +#: ../web/swat.c:1051 #, c-format -msgid " The passwd for '%s' has NOT been changed. \n" -msgstr " '%s' için şifre DEĞİŞTİRİLMEDİ. \n" +msgid " The passwd for '%s' has NOT been changed." +msgstr " '%s' için şifre DEĞİŞTİRİLMEDİ." -#: web/swat.c:838 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Sunucu Şifre Yönetimi" #. #. * Create all the dialog boxes for data collection #. -#: web/swat.c:847 web/swat.c:894 -msgid " User Name : " -msgstr " Kullanıcı Adı : " +#: ../web/swat.c:1085 ../web/swat.c:1132 +msgid "User Name" +msgstr " Kullanıcı 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 Değiştir" -#: 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. Etkisizleştir" -#: web/swat.c:872 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Kull. Etkinleştir" -#: web/swat.c:885 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "İstemci/Sunucu Şifre Yönetimi" -#: 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 "Yazıcı 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 "Yazıcı Seç kutusunda [*] ile işaretlenmiş yazıcı isimleri " -#: web/swat.c:944 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "otomatik yüklenen yazıcılar " -#: 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 yazıcıları SWAT'dan silmek etkisiz olacaktır.\n" -#: web/swat.c:980 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Yazıcı Seç" -#: web/swat.c:999 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Yazıcı Sil" -#: web/swat.c:1006 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Yazıcı Oluştur" -#: 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 "sürüm:" -#: 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 "çalışıyor" -#: web/statuspage.c:223 web/statuspage.c:235 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "çalışmıyor" -#: 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 çalıştır" -#: web/statuspage.c:230 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Smbd'yi yeniden çalıştır" -#: 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 çalıştır" -#: web/statuspage.c:242 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Nmbd'yi yeniden çalıştır" -#: 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 çalıştır" + +#: ../web/statuspage.c:372 +msgid "Restart winbindd" +msgstr "Nmbd'yi yeniden çalıştır" + +#. stop, restart all +#: ../web/statuspage.c:381 +msgid "Stop All" +msgstr "" + +#: ../web/statuspage.c:382 +msgid "Restart All" +msgstr "Nmbd'yi yeniden çalıştır" + +#. start all +#: ../web/statuspage.c:386 +msgid "Start All" +msgstr "Nmbd'yi çalıştır" + +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Aktif Bağlantılar" -#: 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 Paylaşımlar" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Paylaşım" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "User" msgstr "Kullanıcı" -#: web/statuspage.c:264 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Grup" -#: web/statuspage.c:270 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "Açık Dosyalar" -#: web/statuspage.c:272 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "Paylaşılıyor" -#: 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çenekler" - -#: param/loadparm.c:643 -msgid "dos charset" -msgstr "dos karakter kümesi" - -#: param/loadparm.c:644 -msgid "unix charset" -msgstr "unix karakter kümesi" - -#: param/loadparm.c:645 -msgid "display charset" -msgstr "karakter kümesini göster" - -#: param/loadparm.c:646 -msgid "comment" -msgstr "açıklama" - -#: param/loadparm.c:647 -msgid "path" -msgstr "yol" - -#: param/loadparm.c:648 -msgid "directory" -msgstr "dizin" - -#: param/loadparm.c:649 -msgid "workgroup" -msgstr "çalışma 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 "arayüzler" +#: ../web/statuspage.c:426 +msgid "Show PID in col 1" +msgstr "" -#: param/loadparm.c:655 -msgid "bind interfaces only" -msgstr "yalnızca arayüzleri bağla" +#: ../param/loadparm.c:755 +msgid "Base Options" +msgstr "Temel Seçenekler" -#: param/loadparm.c:657 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "Güvenlik Seçenekleri" -#: param/loadparm.c:659 -msgid "security" -msgstr "güvenlik" - -#: param/loadparm.c:660 -msgid "encrypt passwords" -msgstr "şifreyi şifrele " - -#: param/loadparm.c:661 -msgid "update encrypted" -msgstr "şifrelenmiş güncelle" - -#: param/loadparm.c:662 -msgid "allow trusted domains" -msgstr "güvenli alanlara izin ver" - -#: param/loadparm.c:663 -msgid "alternate permissions" -msgstr "başka izinler" - -#: param/loadparm.c:664 -msgid "hosts equiv" -msgstr "hosts eşdeğerlisi" - -#: param/loadparm.c:665 -msgid "min passwd length" -msgstr "en kısa şifre uzunluğu" - -#: param/loadparm.c:666 -msgid "min password length" -msgstr "en kısa şifre uzunluğu" - -#: param/loadparm.c:667 -msgid "map to guest" -msgstr "guest (misafir) kullanıcıya eşle" - -#: param/loadparm.c:668 -msgid "null passwords" -msgstr "boş şifreler" - -#: param/loadparm.c:669 -msgid "obey pam restrictions" -msgstr "pam kısıtlamalarına 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ı modül yolu" - -#: param/loadparm.c:674 -msgid "root directory" -msgstr "kök dizin" - -#: param/loadparm.c:675 -msgid "root dir" -msgstr "kök dizin" - -#: param/loadparm.c:676 -msgid "root" -msgstr "kök" - -#: param/loadparm.c:678 -msgid "pam password change" -msgstr "pam şifre değişikliği" - -#: param/loadparm.c:679 -msgid "passwd program" -msgstr "şifre yazılımı" - -#: param/loadparm.c:680 -msgid "passwd chat" -msgstr "şifre diyaloğu" - -#: param/loadparm.c:681 -msgid "passwd chat debug" -msgstr "şifre diyalog hata ayıklaması" - -#: param/loadparm.c:682 -msgid "username map" -msgstr "kullanıcı adı eşlemesi" - -#: param/loadparm.c:683 -msgid "password level" -msgstr "şifre seviyesi" - -#: param/loadparm.c:684 -msgid "username level" -msgstr "kullanıcı kimliği seviyesi" - -#: param/loadparm.c:685 -msgid "unix password sync" -msgstr "unix şifre senkronizasyonu" - -#: param/loadparm.c:686 -msgid "restrict anonymous" -msgstr "anonim erişimi kısıtla" - -#: 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 "düz metinden smbpasswd'e" - -#: param/loadparm.c:690 -msgid "use rhosts" -msgstr "rhosts kullan" - -#: param/loadparm.c:692 -msgid "username" -msgstr "kullanıcı adı" - -#: param/loadparm.c:693 -msgid "user" -msgstr "kullanıcı" - -#: param/loadparm.c:694 -msgid "users" -msgstr "kullanıcılar" - -#: param/loadparm.c:696 -msgid "guest account" -msgstr "misafir hesap" - -#: param/loadparm.c:697 -msgid "invalid users" -msgstr "geçersiz kullanıcılar" - -#: param/loadparm.c:698 -msgid "valid users" -msgstr "geçerli kullanıcılar" - -#: param/loadparm.c:699 -msgid "admin users" -msgstr "yönetici kullanıcıları" - -#: 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 "yazıcı yönetimi" - -#: param/loadparm.c:703 -msgid "force user" -msgstr "kullanıcıyı 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 "yazılabilir" - -#: param/loadparm.c:710 -msgid "writable" -msgstr "yazılabilir" - -#: param/loadparm.c:712 -msgid "create mask" -msgstr "oluşturma izinleri" - -#: param/loadparm.c:713 -msgid "create mode" -msgstr "oluşturma kipi" - -#: param/loadparm.c:714 -msgid "force create mode" -msgstr "oluşturma kipini zorla" - -#: param/loadparm.c:715 -msgid "security mask" -msgstr "güvenlik izinleri" - -#: param/loadparm.c:716 -msgid "force security mode" -msgstr "güvenlik 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 güvenlik izinleri" - -#: param/loadparm.c:721 -msgid "force directory security mode" -msgstr "dizin güvenlik kipini zorla" - -#: param/loadparm.c:722 -msgid "inherit permissions" -msgstr "izinleri ebeveynden al" - -#: param/loadparm.c:723 -msgid "guest only" -msgstr "yalnız misafir" - -#: param/loadparm.c:724 -msgid "only guest" -msgstr "yalnız 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 kullanıcı" - -#: 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 "Güvenli Soket Katman Seçenekleri" - -#: 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 sürümü" - -#: param/loadparm.c:751 -msgid "ssl compatibility" -msgstr "ssl uyumluluğu" - -#: param/loadparm.c:754 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Günlük Kaydı Seçenekleri" -#: param/loadparm.c:755 -msgid "log level" -msgstr "günlük seviyesi" - -#: param/loadparm.c:756 -msgid "debuglevel" -msgstr "hata ayıklama seviyesi" - -#: param/loadparm.c:757 -msgid "syslog" -msgstr "sistem günlüğü" - -#: param/loadparm.c:758 -msgid "syslog only" -msgstr "salt sistem günlüğü" - -#: param/loadparm.c:759 -msgid "log file" -msgstr "günlük dosyası" - -#: param/loadparm.c:761 -msgid "max log size" -msgstr "maksimum günlük büyüklüğü" - -#: param/loadparm.c:762 -msgid "timestamp logs" -msgstr "zaman damgası günlükleri" - -#: param/loadparm.c:763 -msgid "debug timestamp" -msgstr "hata ayıklama zaman damgası" - -#: param/loadparm.c:764 -msgid "debug hires timestamp" -msgstr "hata ayıklama yüksek çözünürlüklü zaman damgası" - -#: param/loadparm.c:765 -msgid "debug pid" -msgstr "hata ayıklama pid" - -#: param/loadparm.c:766 -msgid "debug uid" -msgstr "hata ayıklama uid" - -#: param/loadparm.c:768 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "Protokol Seçenekleri" -#: param/loadparm.c:770 -msgid "protocol" -msgstr "protokol" - -#: param/loadparm.c:771 -msgid "large readwrite" -msgstr "büyük 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 desteği" - -#: param/loadparm.c:780 -msgid "nt pipe support" -msgstr "nt verihattı desteği" - -#: param/loadparm.c:781 -msgid "nt acl support" -msgstr "nt acl desteği" - -#: param/loadparm.c:782 -msgid "announce version" -msgstr "sürümü 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 çözümleme sırası" - -#: param/loadparm.c:788 -msgid "max packet" -msgstr "maksimum paket" - -#: param/loadparm.c:789 -msgid "packet size" -msgstr "paket büyüklüğü" - -#: 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çenekleri" -#: param/loadparm.c:797 -msgid "change notify timeout" -msgstr "zamanaşımı bildirmesini değiştir" - -#: param/loadparm.c:798 -msgid "deadtime" -msgstr "ölüzaman" - -#: param/loadparm.c:799 -msgid "getwd cache" -msgstr "getwd arabelleği" - -#: 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 süreci" - -#: param/loadparm.c:804 -msgid "max connections" -msgstr "maksimum bağlantı" - -#: param/loadparm.c:805 -msgid "paranoid server security" -msgstr "yüksek dereceli sunucu güvenliği" - -#: param/loadparm.c:806 -msgid "max disk size" -msgstr "maksimum disk büyüklüğü" - -#: param/loadparm.c:807 -msgid "max open files" -msgstr "maksimum açık 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çenekleri" - -#: param/loadparm.c:812 -msgid "stat cache size" -msgstr "durum arabelleği boyu" - -#: param/loadparm.c:813 -msgid "strict allocate" -msgstr "sıkı ayırma" - -#: param/loadparm.c:814 -msgid "strict sync" -msgstr "sıkı senkronizasyon" - -#: param/loadparm.c:815 -msgid "sync always" -msgstr "herzaman senkronize" - -#: param/loadparm.c:816 -msgid "use mmap" -msgstr "bellek eşlemesi 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 "Yazdırma Seçenekleri" -#: param/loadparm.c:822 -msgid "total print jobs" -msgstr "toplam yazdırma işleri" - -#: param/loadparm.c:823 -msgid "max print jobs" -msgstr "maksimum yazdırma işi" - -#: param/loadparm.c:824 -msgid "load printers" -msgstr "yazıcıları yükle" - -#: 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 "yazdırılabilir" - -#: param/loadparm.c:828 -msgid "print ok" -msgstr "yazdırma tamam" - -#: param/loadparm.c:829 -msgid "postscript" -msgstr "postscript" - -#: param/loadparm.c:830 -msgid "printing" -msgstr "yazdırıyor" - -#: param/loadparm.c:831 -msgid "print command" -msgstr "yazdırma komutu" - -#: param/loadparm.c:832 -msgid "disable spoolss" -msgstr "kuyruğu etkisizleştir" - -#: 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 "yazıcı ekle komutu" - -#: param/loadparm.c:842 -msgid "deleteprinter command" -msgstr "yazıcı sil komutu" - -#: param/loadparm.c:843 -msgid "show add printer wizard" -msgstr "yazıcı ekleme sihirbazını göster" - -#: param/loadparm.c:844 -msgid "os2 driver map" -msgstr "os2 sürücü eşlemesi" - -#: param/loadparm.c:846 -msgid "printer name" -msgstr "yazıcı adı" - -#: param/loadparm.c:847 -msgid "printer" -msgstr "yazıcı" - -#: param/loadparm.c:848 -msgid "use client driver" -msgstr "istemci sürücüsü kullan" - -#: param/loadparm.c:849 -msgid "printer driver" -msgstr "yazıcı sürücüsü" - -#: param/loadparm.c:850 -msgid "printer driver file" -msgstr "yazıcı sürücü dosyası" - -#: param/loadparm.c:851 -msgid "printer driver location" -msgstr "yazıcı sürücüsü yeri" - -#: param/loadparm.c:853 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Dosyaadı İşlenmesi" -#: param/loadparm.c:854 -msgid "strip dot" -msgstr "noktaları bastır" - -#: param/loadparm.c:856 -msgid "mangled stack" -msgstr "karıştırılmış yığıt" - -#: param/loadparm.c:857 -msgid "default case" -msgstr "öntanımlı büyük/küçük harf" - -#: param/loadparm.c:858 -msgid "case sensitive" -msgstr "büyük küçük harfe duyarlı" - -#: param/loadparm.c:859 -msgid "casesignames" -msgstr "casesignames" - -#: param/loadparm.c:860 -msgid "preserve case" -msgstr "büyük küçük harf ayrımını tut" - -#: param/loadparm.c:861 -msgid "short preserve case" -msgstr "kısa büyük küçük harf ayrımını tut" - -#: param/loadparm.c:862 -msgid "mangle case" -msgstr "büyük küçük harf harmanla" - -#: param/loadparm.c:863 -msgid "mangling char" -msgstr "karakter harmanlanıyor" - -#: param/loadparm.c:864 -msgid "hide dot files" -msgstr "nokta ile başlayan dosyaları gizle" - -#: param/loadparm.c:865 -msgid "hide unreadable" -msgstr "okunamazları sakla" - -#: param/loadparm.c:866 -msgid "delete veto files" -msgstr "veto dosyalarını 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 eşle" - -#: param/loadparm.c:871 -msgid "map hidden" -msgstr "gizlileri eşle" - -#: param/loadparm.c:872 -msgid "map archive" -msgstr "arşivi eşle" - -#: param/loadparm.c:873 -msgid "mangled names" -msgstr "harmanlanmış isimler" - -#: param/loadparm.c:874 -msgid "mangled map" -msgstr "harmanlanmış eşleşme" - -#: param/loadparm.c:875 -msgid "stat cache" -msgstr "durum arabelleği" - -#: param/loadparm.c:877 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Alan Seçenekleri" -#: param/loadparm.c:879 -msgid "domain admin group" -msgstr "alan yönetici grubu" - -#: param/loadparm.c:880 -msgid "domain guest group" -msgstr "alan misafir grubu" - -#: param/loadparm.c:883 -msgid "groupname map" -msgstr "grup adı eşlemesi" - -#: param/loadparm.c:886 -msgid "machine password timeout" -msgstr "makina şifresi zamanaşımı" - -#: param/loadparm.c:888 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Sistem Giriş Seçenekleri" -#: param/loadparm.c:890 -msgid "add user script" -msgstr "kullanıcı ekleme betiği" - -#: param/loadparm.c:891 -msgid "delete user script" -msgstr "kullanıcı silme betiği" - -#: param/loadparm.c:892 -msgid "add group script" -msgstr "grup ekleme betiği" - -#: param/loadparm.c:893 -msgid "delete group script" -msgstr "grup silme betiği" - -#: param/loadparm.c:894 -msgid "add user to group script" -msgstr "gruba kullanıcı ekleme betiği" - -#: param/loadparm.c:895 -msgid "delete user from group script" -msgstr "gruptan kullanıcı silme betiği" - -#: param/loadparm.c:896 -msgid "add machine script" -msgstr "makina ekleme betiği" - -#: param/loadparm.c:897 -msgid "shutdown script" -msgstr "sistem kapanış betiği" - -#: param/loadparm.c:898 -msgid "abort shutdown script" -msgstr "sistem kapanış betiğini durdur" - -#: param/loadparm.c:900 -msgid "logon script" -msgstr "sistem giriş betiği" - -#: param/loadparm.c:901 -msgid "logon path" -msgstr "sistem giriş yolu" - -#: param/loadparm.c:902 -msgid "logon drive" -msgstr "sistem giriş aygıtı" - -#: param/loadparm.c:903 -msgid "logon home" -msgstr "sistem giriş kökü" - -#: param/loadparm.c:904 -msgid "domain logons" -msgstr "alan girişleri" - -#: param/loadparm.c:906 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Gözatma Seçenekleri" -#: param/loadparm.c:908 -msgid "os level" -msgstr "işletim 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 "gözatma listesi" - -#: param/loadparm.c:916 -msgid "browseable" -msgstr "gözatılabilir" - -#: param/loadparm.c:917 -msgid "browsable" -msgstr "gözatılabilir" - -#: param/loadparm.c:918 -msgid "enhanced browsing" -msgstr "gelişkin gözatma" - -#: param/loadparm.c:920 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "WINS Seçenekleri" -#: 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 desteği" - -#: param/loadparm.c:926 -msgid "wins hook" -msgstr "wins girişi" - -#: param/loadparm.c:928 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Kilitleme Seçenekleri" -#: 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 "çekirdek 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 kırma bekleme süresi" - -#: 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 "sıkı kilitleme" - -#: param/loadparm.c:941 -msgid "share modes" -msgstr "paylaşım kipleri" - -#: param/loadparm.c:944 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "Ldap Seçenekleri" -#: 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 kökü" - -#: param/loadparm.c:951 -msgid "ldap root passwd" -msgstr "ldap kök şifresi" - -#: param/loadparm.c:954 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Diğer Seçenekler" -#: param/loadparm.c:955 -msgid "add share command" -msgstr "paylaşım ekle komutu" - -#: param/loadparm.c:956 -msgid "change share command" -msgstr "paylaşım değiştir komutu" - -#: param/loadparm.c:957 -msgid "delete share command" -msgstr "paylaşım sil komutu" - -#: param/loadparm.c:959 -msgid "config file" -msgstr "ayar dosyası" - -#: param/loadparm.c:960 -msgid "preload" -msgstr "önyükle" - -#: 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 "öntanımlı servis" - -#: param/loadparm.c:971 -msgid "default" -msgstr "öntanımlı" - -#: 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 gözatma senkronizasyonu" - -#: param/loadparm.c:976 -msgid "socket address" -msgstr "soket adresi" - -#: param/loadparm.c:977 -msgid "homedir map" -msgstr "evdizini eşlemesi" - -#: param/loadparm.c:978 -msgid "time offset" -msgstr "zaman kaydırması" - -#: param/loadparm.c:979 -msgid "NIS homedir" -msgstr "NIS evdizini" - -#: param/loadparm.c:980 -msgid "-valid" -msgstr "-geçerli" - -#: param/loadparm.c:982 -msgid "copy" -msgstr "kopyala" - -#: param/loadparm.c:983 -msgid "include" -msgstr "ekle" - -#: param/loadparm.c:984 -msgid "exec" -msgstr "çalıştır" - -#: 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 bağları 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ı çözünürlüğü" - -#: param/loadparm.c:1007 -msgid "fake directory create times" -msgstr "dizin oluşma zamanlarını taklit et" - -#: param/loadparm.c:1008 -msgid "panic action" -msgstr "panik işlemi" - -#: param/loadparm.c:1009 -msgid "hide local users" -msgstr "yerel kullanıcıları sakla" - -#: param/loadparm.c:1012 -msgid "VFS options" +#: ../param/loadparm.c:1138 +msgid "VFS module options" msgstr "VFS Seçenekleri" -#: param/loadparm.c:1014 -msgid "vfs object" -msgstr "vfs nesnesi" - -#: param/loadparm.c:1015 -msgid "vfs options" -msgstr "vfs seçenekleri" - -#: param/loadparm.c:1018 -msgid "msdfs root" -msgstr "msdfs kökü" - -#: param/loadparm.c:1019 -msgid "host msdfs" -msgstr "host msdfs" - -#: param/loadparm.c:1021 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Winbind seçenekleri" - -#: 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 kullanıcı listele" - -#: param/loadparm.c:1030 -msgid "winbind enum groups" -msgstr "winbind grup listele" - -- cgit v1.2.1 From 1d9d49c9181b3d798130f5bd64560fcb1b369b13 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 05:51:52 +0000 Subject: Merge from 3.0: - Don't install text docs --- packaging/Solaris/makepkg.sh.tmpl | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packaging/Solaris/makepkg.sh.tmpl b/packaging/Solaris/makepkg.sh.tmpl index df9d6b89d58..2a46321f818 100755 --- a/packaging/Solaris/makepkg.sh.tmpl +++ b/packaging/Solaris/makepkg.sh.tmpl @@ -98,15 +98,6 @@ add_dynamic_entries() # Create a symbolic link to the Samba book in docs/ for beginners echo 's none samba/docs/samba_book=htmldocs/using_samba' - echo "#\n# Text Docs \n#" - echo d none samba/docs/textdocs 0755 root other - cd $DISTR_BASE/docs/textdocs - for textdoc in * - do - if [ -f $textdoc ]; then - echo f none samba/docs/textdocs/$textdoc=docs/textdocs/$textdoc 0644 root other - fi - done echo "#\n# SWAT \n#" cd $DISTR_BASE list=`find swat -type d | grep -v "/CVS$"` -- cgit v1.2.1 From fd18356fe2c59877860383219b6e71f182aec1fe Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 05:59:16 +0000 Subject: Merge from 3.0: >Explicitly initialise the value of AR for vendor makes that don't do >this (HPUX 11). Currently it's initialised to 'ar' but this may have >to be changed if any systems pop up that have archivers that aren't >named 'ar'. Closes bug #552. >fixed for /sbin/mount.smbfs link when using $DESTDIR; bug 525 --- source/Makefile.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/Makefile.in b/source/Makefile.in index 4930bb97b4e..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@ @@ -1182,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 -- cgit v1.2.1 From 442cfcce0d8dcd7b653a6260c5efcb72b84ce74f Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 06:02:07 +0000 Subject: Merge from 3.0: >Explicitly initialise the value of AR for vendor makes that don't do >this (HPUX 11). Currently it's initialised to 'ar' but this may have >to be changed if any systems pop up that have archivers that aren't >named 'ar'. Closes bug #552. >Fallback to our defaults (CP850/ASCII/UTF8) if there is no native >iconv on the platform. This allows to compile and complain about it >at runtime --- source/configure.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/configure.in b/source/configure.in index 987e1ceb6be..394bf2fb3e0 100644 --- a/source/configure.in +++ b/source/configure.in @@ -206,6 +206,8 @@ 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 @@ -1695,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 -- cgit v1.2.1 From 17efb306aa32d1e5b2546cfb2f3404ad3cf0fb68 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 06:10:52 +0000 Subject: Merge from 3.0: >Moving towards better i18n support in SWAT. This commit contains a >bunch of updates to bug 413 from Monyo: > >1) pick up proper strings to call msg strings for example to add > strings in wizard menu in web/swat.c, web/statuspage.c and > param/loadparm.c. > >2) define N_() macro in include/intl.h to pick up some strings > in param/loadparm.c > >3) quote all name and value tag with '"' > For example in swat.c:720 the "Edit Parameter Values" string is > displayd only as "Edit" because value tag is not quoted like: > value=Edit Parameter Values > These tags should be quoted though it sometimes works well > without quotation. > >4) modify the msg strings not to contain HTML tags or other > non-message strings. For example > dprintf(_("test\n")); is modified to dprintf("%s\n", _("test")); --- source/include/intl.h | 1 + source/web/statuspage.c | 22 ++++---- source/web/swat.c | 139 +++++++++++++++++++++++++----------------------- 3 files changed, 86 insertions(+), 76 deletions(-) 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/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(""); 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(""); @@ -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("

      \n"); if (!autorefresh) { - d_printf("\n", _("Auto Refresh")); + d_printf("\n", _("Auto Refresh")); d_printf("
      %s", _("Refresh Interval: ")); - d_printf("\n", + d_printf("\n", refresh_interval); } else { - d_printf("\n", _("Stop Refreshing")); + d_printf("\n", _("Stop Refreshing")); d_printf("
      %s%d\n", _("Refresh Interval: "), refresh_interval); - d_printf("\n"); + d_printf("\n"); } d_printf("

      \n"); @@ -418,8 +422,8 @@ void status_page(void) if (tdb) tdb_close(tdb); - d_printf("
      \n"); - d_printf("\n"); + d_printf("
      \n", _("Show Client in col 1")); + d_printf("\n", _("Show PID in col 1")); d_printf("

      \n"); diff --git a/source/web/swat.c b/source/web/swat.c index 2b2686cc5ae..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("", make_parm_name(parm->label), *(int *)ptr); + d_printf("", make_parm_name(parm->label), *(int *)ptr); d_printf("", _("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 %s

      \n"), p); + d_printf(_("Logged in as %s"), p); + d_printf("

      \n"); } image_link(_("Home"), "", "images/home.gif"); @@ -519,10 +523,10 @@ static void show_main_buttons(void) ****************************************************************************/ static void ViewModeBoxes(int mode) { - d_printf("

      %s\n", _("Current View Is:  \n")); - d_printf("Basic\n", (mode == 0) ? "checked" : ""); - d_printf("Advanced\n", (mode == 1) ? "checked" : ""); - d_printf("
      %s\n", _("Change View To: ")); + d_printf("

      %s: \n", _("Current View Is")); + d_printf("%s\n", ((mode == 0) ? "checked" : ""), _("Basic")); + d_printf("%s\n", ((mode == 1) ? "checked" : ""), _("Advanced")); + d_printf("
      %s: \n", _("Change View To")); d_printf("\n", _("Basic")); d_printf("\n", _("Advanced")); d_printf("


      \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("

      Wizard Parameter Edit Page

      \n"); + d_printf("

      %s

      \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("

      Note: smb.conf %s

      \n", _("file has been read and rewritten")); + d_printf("

      %s

      \n", _("Note: smb.conf file has been read and rewritten")); } /**************************************************************************** @@ -709,37 +713,36 @@ static void wizard_page(void) role = lp_server_role(); /* Here we go ... */ - d_printf("

      Samba Configuration Wizard

      \n"); + d_printf("

      %s

      \n", _("Samba Configuration Wizard")); d_printf("
      \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("

      "); + 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("

      \n"); d_printf("
      "); - d_printf("   ",_("Rewrite smb.conf file")); - d_printf("   ",_("Commit")); - d_printf("", _("Edit Parameter Values")); - d_printf("
      "); + d_printf("   ",_("Rewrite smb.conf file")); + d_printf("   ",_("Commit")); + d_printf("", _("Edit Parameter Values")); + d_printf("\n"); } d_printf("
      "); d_printf("
      "); - d_printf("\n", "Server Type: "); - d_printf("", (role == ROLE_STANDALONE) ? "checked" : ""); - d_printf("", (role == ROLE_DOMAIN_MEMBER) ? "checked" : ""); - d_printf("", (role == ROLE_DOMAIN_PDC) ? "checked" : ""); - d_printf(""); + d_printf("\n", _("Server Type")); + d_printf("", ((role == ROLE_STANDALONE) ? "checked" : ""), _("Stand Alone")); + d_printf("", ((role == ROLE_DOMAIN_MEMBER) ? "checked" : ""), _("Domain Member")); + d_printf("", ((role == ROLE_DOMAIN_PDC) ? "checked" : ""), _("Domain Controller")); + d_printf("\n"); if (role == ROLE_DOMAIN_BDC) { - d_printf(""); + d_printf("\n", _("Unusual Type in smb.conf - Please Select New Mode")); } - d_printf("\n", "Configure WINS As: "); - d_printf("", (winstype == 0) ? "checked" : ""); - d_printf("", (winstype == 1) ? "checked" : ""); - d_printf("", (winstype == 2) ? "checked" : ""); - d_printf("\n"); - - d_printf("\n", _("Configure WINS As")); + d_printf("", ((winstype == 0) ? "checked" : ""), _("Not Used")); + d_printf("", ((winstype == 1) ? "checked" : ""), _("Server for client use")); + d_printf("", ((winstype == 2) ? "checked" : ""), _("Client of another WINS server")); + d_printf("\n"); + d_printf(""); + d_printf("\">\n"); if (winstype == 3) { - d_printf(""); - d_printf(""); + d_printf("\n", _("Error: WINS Server Mode and WINS Support both set in smb.conf")); + d_printf("\n", _("Please Select desired WINS mode above.")); } - d_printf("\n","Expose Home Directories: "); - d_printf("", (have_home == -1) ? "" : "checked "); - d_printf("", (have_home == -1 ) ? "checked" : ""); - d_printf(""); + d_printf("\n", _("Expose Home Directories")); + d_printf("", (have_home == -1) ? "" : "checked "); + d_printf("", (have_home == -1 ) ? "checked" : ""); + d_printf("\n"); /* Enable this when we are ready .... - * d_printf("\n","Is Print Server: "); - * d_printf(""); - * d_printf(""); - * d_printf(""); + * d_printf("\n", _("Is Print Server")); + * d_printf(""); + * d_printf(""); + * d_printf("\n"); */ d_printf("
      %s Stand Alone  Domain Member  Domain Controller 
      %s:  %s  %s  %s 
      Unusual Type in smb.conf - Please Select New Mode
      %s
      %s Not Used  Server for client use  Client of another WINS server 
      Remote WINS Server %s:  %s  %s  %s 
      %s 
      Error: WINS Server Mode and WINS Support both set in smb.conf
      Please Select desired WINS mode above.
      %s
      %s
      %s Yes No
      %s:  Yes No
      %s Yes No
      %s:  Yes No
      "); d_printf("
      "); - 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("
      \n"); } @@ -938,7 +941,7 @@ static BOOL change_password(const char *remote_machine, const char *user_name, pstring msg_str; if (demo_mode) { - d_printf("%s

      ", _("password change in demo mode rejected\n")); + d_printf("%s\n

      ", _("password change in demo mode rejected")); return False; } @@ -951,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

      "); + d_printf("%s\n

      ", _("Can't setup password database vectors.")); return False; } @@ -977,7 +980,7 @@ static void chg_passwd(void) /* Make sure users name has been specified */ if (strlen(cgi_variable(SWAT_USER)) == 0) { - d_printf("

      %s", _(" Must specify \"User Name\" \n")); + d_printf("

      %s\n", _(" Must specify \"User Name\" ")); return; } @@ -993,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("

      %s", _(" Must specify \"Old Password\" \n")); + d_printf("

      %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("

      %s", _(" Must specify \"Remote Machine\" \n")); + d_printf("

      %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("

      %s", _(" Must specify \"New, and Re-typed Passwords\" \n")); + d_printf("

      %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("

      %s", _(" Re-typed password didn't match new password\n")); + d_printf("

      %s\n", _(" Re-typed password didn't match new password ")); return; } } @@ -1042,9 +1045,11 @@ static void chg_passwd(void) if(local_flags == 0) { d_printf("

      "); 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"); } } @@ -1077,15 +1082,15 @@ static void passwd_page(void) /* * Create all the dialog boxes for data collection */ - d_printf("%s\n", _(" User Name : ")); + d_printf(" %s : \n", _("User Name")); d_printf(" \n", SWAT_USER, new_name); if (!am_root()) { - d_printf("%s\n", _(" Old Password : ")); + d_printf(" %s : \n", _("Old Password")); d_printf(" \n",OLD_PSWD); } - d_printf("%s\n", _(" New Password : ")); + d_printf(" %s : \n", _("New Password")); d_printf("\n",NEW_PSWD); - d_printf("%s\n", _(" Re-type New Password : ")); + d_printf(" %s : \n", _("Re-type New Password")); d_printf("\n",NEW2_PSWD); d_printf("\n"); @@ -1124,15 +1129,15 @@ static void passwd_page(void) /* * Create all the dialog boxes for data collection */ - d_printf("%s\n", _(" User Name : ")); + d_printf(" %s : \n", _("User Name")); d_printf("\n",SWAT_USER, new_name); - d_printf("%s\n", _(" Old Password : ")); + d_printf(" %s : \n", _("Old Password")); d_printf("\n",OLD_PSWD); - d_printf("%s\n", _(" New Password : ")); + d_printf(" %s : \n", _("New Password")); d_printf("\n",NEW_PSWD); - d_printf("%s\n", _(" Re-type New Password : ")); + d_printf(" %s : \n", _("Re-type New Password")); d_printf("\n",NEW2_PSWD); - d_printf("%s\n", _(" Remote Machine : ")); + d_printf(" %s : \n", _("Remote Machine")); d_printf("\n",RHOST); d_printf(""); @@ -1177,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("%s\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); @@ -1223,8 +1228,8 @@ static void printers_page(void) break; } d_printf("\n"); - d_printf("\n", _("Choose Printer")); - d_printf("\n", _("Choose Printer")); + d_printf("\n", _("Create Printer")); - d_printf("\n"); + d_printf("\n", _("Create Printer")); + d_printf("\n"); d_printf("
      "); } -- cgit v1.2.1 From e071567eeaec61a9e59c16117e29995bc8653cc0 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 06:12:44 +0000 Subject: Merge from 3.0: >Fix spelling mistake. --- swat/lang/ja/help/welcome.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 @@ -

      SWAT : Samba Web Administaration Tool !

      +

      SWAT : Samba Web Administration Tool !

      Samba‚Ìİ’è‚Íã‚̃{ƒ^ƒ“‚ğƒNƒŠƒbƒN‚µ‚Äs‚¢‚Ü‚·B

      -- cgit v1.2.1 From eb9f5c0ec1ad01c05bb8f380f417e6cd2c111ce3 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 06:13:11 +0000 Subject: Merge from 3.0: >Portability fix from Joachim Schmitz. Closes bug #546. --- source/modules/vfs_recycle.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); -- cgit v1.2.1 From 84a0433c528dc1fe8e057ce2def1d11dde5f9b07 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 06:16:16 +0000 Subject: Merge from 3.0: >Moving towards better i18n support in SWAT. This commit contains a >bunch of updates to bug 413 from Monyo: > >1) pick up proper strings to call msg strings for example to add > strings in wizard menu in web/swat.c, web/statuspage.c and > param/loadparm.c. > >2) define N_() macro in include/intl.h to pick up some strings > in param/loadparm.c > >3) quote all name and value tag with '"' > For example in swat.c:720 the "Edit Parameter Values" string is > displayd only as "Edit" because value tag is not quoted like: > value=Edit Parameter Values > These tags should be quoted though it sometimes works well > without quotation. > >4) modify the msg strings not to contain HTML tags or other > non-message strings. For example > dprintf(_("test\n")); is modified to dprintf("%s\n", _("test")); --- source/param/loadparm.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/source/param/loadparm.c b/source/param/loadparm.c index 45626192dbe..5a5ac4a2cc1 100644 --- a/source/param/loadparm.c +++ b/source/param/loadparm.c @@ -752,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}, @@ -772,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}, @@ -856,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}, @@ -871,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}, @@ -908,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}, @@ -937,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}, @@ -967,7 +967,7 @@ 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}, @@ -993,11 +993,11 @@ static struct parm_struct parm_table[] = { {"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}, @@ -1016,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}, @@ -1030,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}, @@ -1040,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}, @@ -1058,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}, @@ -1075,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}, @@ -1135,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}, @@ -1145,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}, -- cgit v1.2.1 From 85eda9bc0c3d0e62c436a3958ec4a76d0e909d4c Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 06:25:40 +0000 Subject: Merge from 3.0: >Typo in error message. >Jeremy. --- source/passdb/passdb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/passdb/passdb.c b/source/passdb/passdb.c index cdbda389836..0afa130a67f 100644 --- a/source/passdb/passdb.c +++ b/source/passdb/passdb.c @@ -936,7 +936,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 { -- cgit v1.2.1 From e4551b3d7f85bf39778a1de952eaa370bc3716e3 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 06:27:01 +0000 Subject: Merge from 3.0: >Make pdb_ldap.c compile with SUN iPlanet headers. Whether this works will be >tested soon, but this fix is somewhat obvious. > >Volker --- source/passdb/pdb_ldap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/passdb/pdb_ldap.c b/source/passdb/pdb_ldap.c index d4de6b2e96d..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) -- cgit v1.2.1 From 2aaafa500780f7de0dec5632d53f3347b67fae4a Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 06:29:08 +0000 Subject: Merge from 3.0: >Remove duplicate function (now in rpc_parse/parse_prs.c) and fix a RPC debug >(I renamed the element of the structure). > >Andrew Bartlett --- source/rpc_parse/parse_rpc.c | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/source/rpc_parse/parse_rpc.c b/source/rpc_parse/parse_rpc.c index 7e51f1e35b6..1ea59feaedb 100644 --- a/source/rpc_parse/parse_rpc.c +++ b/source/rpc_parse/parse_rpc.c @@ -285,7 +285,7 @@ static BOOL smb_io_rpc_iface(const char *desc, RPC_IFACE *ifc, prs_struct *ps, i if (!smb_io_rpc_uuid( "uuid", &ifc->uuid, ps, depth)) return False; - if(!prs_uint32 ( "version", ps, depth, &ifc->version)) + if(!prs_uint32 ("version", ps, depth, &ifc->version)) return False; return True; @@ -1187,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 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; -} - /******************************************************************* reads or writes an RPC_AUTH_NETSEC_CHK structure. ********************************************************************/ @@ -1222,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->confounder, sizeof(chk->confounder)); + prs_uint8s(False, "confounder", ps, depth, chk->confounder, sizeof(chk->confounder)); return True; } -- cgit v1.2.1 From 27e8f16188b5db96ae191b2e6ad9948e46d6d9b1 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 9 Oct 2003 06:29:50 +0000 Subject: Merge from 3.0: >cosmetic fix when DESTDIR=/ (default) >fixed for /sbin/mount.smbfs link when using $DESTDIR; bug 525 --- source/script/installbin.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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 -- cgit v1.2.1 From 9216948062123da1c064b9167743a0a9f12d8c98 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 9 Oct 2003 19:01:13 +0000 Subject: At least give a message if we're returning a short read for W2K compatibility. Jeremy. --- source/smbd/reply.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/source/smbd/reply.c b/source/smbd/reply.c index 5c1d7915c26..5c9451cf377 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -1775,7 +1775,12 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length * However the requested READ size IS affected by max_recv. Insanity.... JRA. */ - numtoread = MIN(numtoread,max_recv); + 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) { @@ -1820,7 +1825,12 @@ int reply_read(connection_struct *conn, char *inbuf,char *outbuf, int size, int /* * The requested read size cannot be greater than max_recv. JRA. */ - numtoread = MIN(numtoread,max_recv); + 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; -- cgit v1.2.1 From 46a5575f1944d79ca3887bf3e9391ddee87ef8ce Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 9 Oct 2003 20:55:38 +0000 Subject: Refuse to configure if --with-expsam=$BACKEND was specified, but the libraries for $BACKEND were not found --- source/configure.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/configure.in b/source/configure.in index 394bf2fb3e0..1bddba0adcc 100644 --- a/source/configure.in +++ b/source/configure.in @@ -2695,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) -- cgit v1.2.1 From cd3e4882fcf2437f4140557608e671284d0e92b4 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 9 Oct 2003 20:59:38 +0000 Subject: Move sysquotas autoconf tests to a seperate file in tests/ Patch by Stefan Metzmacher --- source/configure.in | 6 +-- source/lib/sysquotas.c | 100 +---------------------------------------------- source/tests/sysquotas.c | 94 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 102 deletions(-) create mode 100644 source/tests/sysquotas.c diff --git a/source/configure.in b/source/configure.in index 1bddba0adcc..0422dd39e35 100644 --- a/source/configure.in +++ b/source/configure.in @@ -3083,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]) @@ -3096,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" @@ -3110,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" 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 -#endif - -#ifdef HAVE_ASM_TYPES_H -#include -#endif - -#if defined(HAVE_LINUX_QUOTA_H) -# include -# 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 -#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 -#else /* *BSD */ -#include -#include -#include -#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 -#endif -#ifdef HAVE_SYS_QUOTA_H -#include -#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/tests/sysquotas.c b/source/tests/sysquotas.c new file mode 100644 index 00000000000..e83f28e2d0b --- /dev/null +++ b/source/tests/sysquotas.c @@ -0,0 +1,94 @@ +/* this test should find out what quota api is avalable on the os */ + +#if defined(HAVE_QUOTACTL_4A) +/* long quotactl(int cmd, char *special, qid_t id, caddr_t addr) */ + +#ifdef HAVE_SYS_TYPES_H +#include +#endif + +#ifdef HAVE_ASM_TYPES_H +#include +#endif + +#if defined(HAVE_LINUX_QUOTA_H) +# include +# 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 +#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 +#else /* *BSD */ +#include +#include +#include +#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 +#endif +#ifdef HAVE_SYS_QUOTA_H +#include +#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; +} -- cgit v1.2.1