Release Notes for JRButils for Netware V18

Changes to Individual Programs

Chrcheck

  • Fixed an issue on Windows drives where chrcheck failed to display the file owner via /w when the file name contained extended characters not matching the current code page setting.
  • Modified to permit the allowed and disallowed character sets specified via /a or /b to be given via an input file. This allows the characters to be given in the local code page instead of in the OEM character set on the command line.

Copy_obj

  • Updated to report when an object cannot be added into GroupWise in Linux versions, due to the lack of GroupWise APIs for Linux.

Creatobj

  • Fixed an issue where it could report the password was too short when no password was supplied, and the user was created in a container for which a universal password policy was applicable.
  • Replaced the obsolete ability to add users to an NT domain under NDS for NT specified via /u with the ability to set the full name for new user and group objects.
  • Modified to replace the character sequence prior to '@' with the user's common name when copying the value for the "Internet Email Address" attribute from a template.
  • Modified to ignore the posixAccount auxiliary class and its associated attributes when copying from a template. This auxiliary class is tricky to deal with programmatically because of its mandatory attributes for which a value must be supplied when adding the class, but also because an object's uidNumber should contain a unique value which precludes copying it.
  • Replaced the semi-obsolete /k (close connections created to other servers) with an option to specify the path to the GroupWise domain database. This may be necessary when the domain database is on a native Linux file system but an NCP volume has been created with a mount point at or above the domain directory.

Fsupdate

  • Fixed an issue where under some circumstances, it could report "No such directory" when attempting to copy a single file.
  • Fixed an issue where an application error could occur when copying to a Windows host and using both /m and /t.
  • Modified the mirroring code so that when the target path is on a Windows drive, files and directories flagged SH are not deleted. This prevents the removal of system entries, particularly at a volume root.
  • Fixed an issue with updating files using /u=n from a NetWare to a Windows drive or from Windows to Windows. If the file in the target directory had a modification date/time one second later than the source, it was not replaced. The issue arose because NetWare APIs return dates in packed DOS format which stores only an even number of seconds, and Windows file dates were converted to the same format for comparison. The comparison is now done in seconds since 1 January 1970 which retains the exact value for Windows dates. Note that if updating from Windows to NetWare when the Windows modification time has an odd number of seconds, the file will be copied on every occasion because the exact modification date cannot be set on the target file.
  • Fixed an issue where file last access times were not retained when copying from NetWare to Windows. Note that only the date can be retained when copying from NetWare to NetWare and Windows to NetWare as there is no NCP function to set the time.
  • Added the ability to filter on file attributes via /i, allowing for example, only compressed files to be copied.
  • See "Changes to multiple programs" for other modifications.

Getbal

  • Updated to allow retrieving values from the PCOUNTER:FreeQuota attribute instead of the "Account Balance" attribute.
  • Fixed an issue introduced last year when modifying to compile on Linux where negative balances were displayed incorrectly when wildcards appeared in the object name. They displayed correctly for a single user.

Getname

  • Enhanced the display of the nnmLastLogin attribute which despite containing a time in seconds is stored as a string value.

Getquota

  • Modified to allow comma delimited output to be produced when /r is used to format the results for input to setquota.

Getrest

  • Added field 'nld' to display the Novell Messenger last login date and time.
  • Added an option to the GUI version to suppress retrieval of the GroupWise fields, which considerably speeds data collection.
  • Fixed a long-standing issue which could result in an application error on Windows 7 when displaying only the creation or modification dates for objects.
  • Fixed another long-standing issue where it could give incorrect results for "account expired" and "password expired" when the expiration date was today and the expiration time was not midnight.

Groups

  • Added the ability to produce JRButils for AD adgrpadd and adgrpdel commands.

Grplist

  • Modified so that when /t (totals only) and /m (alternative format) are used together, then each line of output comprises a group name and the number of members separated by a comma e.g. "comp101,27".
  • Added the ability to sort by full name.
  • Added the ability to sort by the number of members when using /m and /t.
  • Fixed an issue where sorting was ignored when using an expression.
  • Modified to give a more appropriate error message when using an expression (e.g. "groupa and groupb") and group names containing wildcards do not exist. The '*' is a valid character in group names, but was being treated as a wildcard during validation which caused errors later when the group was found not to exist.
  • Added the ability to produce JRButils for AD adgrpadd and adgrpdel commands via /z.

Grpmemb

  • Added /x to allow a command to be specified, which is executed when the user is a member of the group.
  • Fixed a problem where under certain conditions, when relinking a user, gwlink could report that it was unable to add the "NGW: GroupWise ID" attribute because it could not locate the object in eDirectory.
  • Fixed an issue where it gave an incorrect error message when attempting to unlink a user, and that user did not exist in eDirectory.

Gwdlists

  • Added /_ to display just the names of distribution lists. This allows, for example, enumerating all distribution lists in a domain.
  • Modified /n to accept as a value, the character separating list and member names in the input file e.g. /n=#.
  • Replaced /r (search from [Root]) with /x=r.
  • Added support for two character field names, to allow more output fields to be added.
  • Added support for retrieving various fields via the GroupWise Object API. This API ordinarily requires an actual login as each user to retrieve information. However, this can be worked around by using a trusted application. Gwdlists registers itself as a trusted application when use of the Object API is required to get requested fields, and deregisters itself when finished. Note that registering as a trusted application requires Novell's gwtapp.dll which is included with JRButils v18 under the terms of Novell's license. New fields which can be displayed are:
    Proxy users
    The archive path
    Whether the account is a proxy to another
    Last backup date
    Last retention date
    The number of rules (requires GW 8.0)
    The rules (requires GW 8.0)
    The names of shared folders
  • Added a new /r to specify a delimiter to appear between fields. Previously, comma delimited output could be produced via /v, but this option, which is the equivalent of /c in gwusers, provides greater flexibility allowing any single character delimiter to be used, plus, tab, cr, lf, and crlf.

Gwusers

  • Fixed an issue where an application error could occur when it failed to locate a user identified via its eDirectory name, in the post office.
  • Added support for two character field names, to allow more output fields to be added.
  • Added support for retrieving various fields via the GroupWise Object API. This API ordinarily requires an actual login as each user to retrieve information. However, this can be worked around by using a trusted application. Gwusers registers itself as a trusted application when use of the Object API is required to get requested fields, and deregisters itself when finished. note that registering as a trusted application requires Novell's gwtapp.dll which is included with JRButils v18 under the terms of Novell's license. New fields which can be displayed are:
    Proxy users
    The archive path
    Whether the account is a proxy to another
    Last backup date
    Last retention date
    The number of rules (requires GW 8.0)
    The rules (requires GW 8.0)
    The names of shared folders
  • Modified to display multiple values for the email address when present.
  • Fixed an issue where it displayed values instead of deleting the user when /d was used with a name given in the form anne.myPo.myDom.
  • Improved the efficiency of locating single users in the post office when modifying users and a GroupWise name was given rather than an eDirectory name. Previously, gwusers iterated through all users in the post office until a match was found.

Jrbimprt

  • Added control statement "Line separator" for use with "Description" attributes to allow multi-line values to be imported and exported.
  • Added alternative control statements "Search edir", "Store quotas in edir" and "GroupWise set eDir attributes" where "edir" replaces "nds".
  • Fixed an issue where it could generate the same sequence of random passwords, when run multiple times within the same second. The issue arose because the seed for the random number generator was the current time in seconds, and this has been resolved by adding the process ID which differs for each invocation of jrbimprt.
  • Fixed an issue introduced in V16 where it would fail to create the home directory from a template when "Use template=y" was set and there was no "Template" control statement, i.e. the default name of "user template" in the user's container was being used.
  • Fixed an issue where it was failing to write the names of the control and data files to the log when using /d.
  • Added field "GroupWise file ID" to allow the file ID to be specified when adding users into GroupWise.
  • Fixed an issue when using "Create subdirectory" control statements and the third field was a trustee name, where the name would be truncated when ending in letters "kb", "mb", or "gb". For example, ".Mike.year3.umb" was truncated to ".Mike.year3.u" resulting in the object not being located.
  • Fixed an issue where an extraneous error message was displayed when specifying a password as a fixed value, and /c was used to do a syntax check.
  • Added a "Template cn" control statement, allowing a template common name to be specified. Jrbimprt will attempt to locate a template with that name in the container in which each user is being created or modified. This is an alternative to the "Template" control statement which names a single template object to be used for all users, irrespective of their context.
  • Fixed an issue where an application error could occur on Windows 7 when lum enabling users.
  • Worked around an issue where on Windows 7 and Windows 2008, jrbimprt could report that it was unable to verify the name context because of "an invalid connection handle". The problem did not occur when using the 4.91 SP5 client on Window XP.
  • Fixed an issue where it would report that it was unable to set the posixAccount homeDirectory attribute when lum enabling users, and a value for homeDirectory was supplied in the data file. Lum enabling was done successfully, but the value supplied for the homeDirectory attribute remained unused.
  • Fixed an issue when lum enabling users where values supplied in the data file for attributes homeDirectory, loginShell and gecos were ignored. Note that any values supplied in the data file for uidNumber and gidNumber are not used, the gidNumber is taken from the lum group, and the uidNumber from the unix configuration object.
  • Removed support for adding users into NDS for NT aka Corporate Edition.
  • Modified to ignore the posixAccount auxiliary class and its associated attributes when copying from a template. This auxiliary class is tricky to deal with programmatically because of its mandatory attributes for which a value must be supplied when adding the class, but also because an object's uidNumber should contain a unique value which precludes copying it.
  • Added the ability to move objects to a different container via the "Move to" control statement.
  • Retired the "Retain NDS password case" control statement which had ceased to differ from "Set universal passwords=y". Originally, an older function was used to set the password.

Jblookup

  • Fixed an issue where searching fax numbers was not working. They use a non-string syntax and have to be treated as a special case.

Jrbmap

  • Changed the display of mapped drives in the Linux version to use the conventional forward slash between the server and volume name, rather than the backslash which appears in the path returned by the Linux client.

Jrbpass

  • Fixed an issue where there could be a delay of 10 seconds or more before the window appeared when running on a machine with the NetWare client installed, but no connection to a server existed.
  • Added option /n=u to not populate the username edit box on startup.
  • Added option /n=v to list only the trees in the tree combo box to which there is an existing connection. This may be useful to avoid delays in the box being populated. By default, trees are located via IPX, SLP and checking the workstation's connection tables. The SLP search may be slow.
  • Added option /h to specify the location of the GroupWise domain database. The path given is used instead of the value in the domain object's "NGW: Location" attribute. This may be useful when the database in located on a native Linux file system, and the location has been mounted as an NCP volume.
  • Fixed a cosmetic issue where an error incurred changing the GroupWise password was displayed in green instead of red.

Killconn

  • Fixed an issue when /n was used to clear NOT-LOGGED-IN connections, killconn was attempting to check for and clear network addresses for a NOT-LOGGED-IN object in eDirectory resulting in errors.
  • Modified to display the connection's network address while reporting success or failure for clearing the connection.

Killzero

  • Fixed a cosmetic issue where it could display the path in the heading in the DOS name space.

Listobj

  • Modified /f to allow a separator character to be specified. This allows an input file containing multiple fields per line to be used providing that the first field contains an object name. This might be useful for example to check which objects already exist in a jrbimprt data file.
  • Replaced the former /i (display IDs), /u (names only), /w (no full names) and /z (display server/name) with a new /w controlling the number and order of fields displayed, and the field widths.
  • Added the ability to sort by full name.
  • Changed /# which created delimited output enclosed in double quotes to /i. A value can now be given allowing a delimiter other than the comma to be used.
  • Fixed an issue when using an input file, displaying totals by container, and sorting by totals, that the sorting occurred for each object in the file, rather than for all objects.

Makehome for Linux

  • Fixed an issue where jobs were being removed from the queue prematurely when a temporary error such as "Cannot get an object ID" occurred.
  • Fixed an issue where it failed to reconnect to the LDAP server when the connection was lost e.g. if a 'rcndsd restart' command was issued.
  • Fixed an issue where under some circumstances, the name of the last user processed could appear in non-user specific error messages.
  • Revamped error messages to make their style more consistent.

Makememb

  • Added /d=a to allow removal of all memberships for each user.

Mattach

  • Fixed an issue which could cause an application error on Windows 7.

Move_dir

  • Fixed an issue introduced when move_dir was updated to use unicode paths internally, where a move on a Windows drive could fail.
  • Fixed an issue where it was returning an error level of 0 instead of 1 when a move failed.

Move_obj

  • Updated to report when an object cannot be relinked in GroupWise in Linux versions, due to the lack of GroupWise APIs for Linux.

Netcopy

  • Fixed some issues where using /c to create the target path was working correctly only for NetWare to NetWare copies.
  • Fixed an issue where file last access times were not retained when copying from NetWare to Windows. Note that only the date can be retained when copying from NetWare to NetWare and Windows to NetWare, there is no NCP function to set the time.
  • Added the ability to filter on file attributes via /i, allowing for example, only compressed files to be copied.
  • Added the ability to copy attributes and dates to directories which already exist in the target directory structure. This may be useful particularly for maintaining the modification dates which are automatically updated when a file is added to a directory e.g. when using /u to perform an update copy.
  • See "Changes to multiple programs" for other modifications.

Openfile

  • Worked around an issue in Linux versions where the name of an open file was displayed incorrectly when it contained extended characters. The issue was a result of several NCP omissions and errors. First, there is no UTF-8 version of the NCP request for returning a connection's open files which returns the file name and the directory entry number for the path. Second, there is no UTF-8 version of the function for converting the directory entry number to an actual path. Third, the path and file name are returned in the DOS name space and must be converted to the long name space. But there is a bug in the Linux version of the function for converting name spaces, where it returns ANSI instead of UTF-8 paths. Working around these issues is dependent on being able to retrieve the server's code page which is possible for OES Linux servers and NW 6.5 SP8, but not for NW 6.0. It is not known whether it can be retrieved for all versions of NW 6.5.
  • Fixed an issue where Windows versions of openfile could display the path incorrectly for open files on OES Linux when the path contained extended characters. The last level of the path was repeated in place of the file name, and was caused by an issue in code designed to work around the third problem above.

Pnctrl

  • Fixed an issue introduced last year where it worked correctly but displayed an extraneous error saying "Description unavailable for error 0x1" before closing.

Quotas

  • Fixed a cosmetic issue where at startup the main tab sheet had a title of "Main" instead of "Display values", which is the value displayed when the "Display values" radio button is clicked.
  • Fixed an issue where it attempted to process each user despite an invalid volume name being given.

Salvlist

  • Updated the GUI version so that any value given via /m on the command line for filtering on deletion date and time is displayed in the date/time picker on the main tab sheet.
  • Modified the method used to convert the value from the date/time picker to seconds since 1 January 1970 following a report that filtering on deletion date/time did not work correctly in the GUI version only. While we could not reproduce the issue, the change solved the customer's problem.

Serv_cmd

  • Fixed a long standing issue where attempting to issue "set" commands or multiple servers was successful only for the first server in the list.

Setattr

  • Fixed an issue where it failed to accept a path to a Windows drive incorporating a drive letter.

Setbal

  • Updated to allow storing values in the PCOUNTER:FreeQuota attribute instead of the "Account Balance" attribute.

Sethome2

  • Added /z to allow changing only the volume object for existing "Home Directory" attributes.
  • Added /x=r to allow the entire tree to be searched for matching objects.
  • Updated to allow a field separator to be given as a value for /f, allowing values in a file to be separated by other than tabs and spaces when there are two fields per line.
  • Modified so that the rights to be assigned to each user's home directory are specified via /r instead of /c and /g. This provides consistency with adsethome and allows rights to be modified without using /c which will cause sethome2 to attempt to create the home directories.
  • Modified /m to support a number of options in addition to its original function of allowing the "Home Directory" to be set without attempting to create or modify the home directory.
  • Changed /t (create home directories but do not set the "Home Directory" attribute) to be an option under /m.
  • Fixed an issue which prevented the processing of users from running as a separate thread in the GUI version. This prevented scrolling through the results until processing was complete.
  • Added a new /t option to allow any object to be granted rights to each user's home directory. The value for /t is an object name followed by a colon then the rights to be granted. This option may also be used to remove rights previously granted.

Setname

  • Added the ability to selectively delete values using the "Path" and "Typed Name" syntaxes. The value to delete is matched on object name and optionally on the other fields when values are given via /h for "Typed name" and /h plus /m for "Path". This now allows, for example, selected drivers to be deleted from a DirXML-Associations attribute.
  • Added the ability to specify a value for a template's "Home Directory Rights" attribute in the standard form for NetWare rights e.g. [RWCEMF].
  • Fixed an issue where it would not set the gidNumber attribute for a group to which the auxiliary class posixGroup has been assigned.
  • Modified to delete attribute values and add new values in a single request to the server, instead of as separate requests. This overcomes a problem with IDM drivers monitoring attribute changes.
  • Modified /_ to force setting a boolean value regardless of whether the default value for the attribute is true or false. Previously this option could be used only to force setting a value of false.
  • Fixed an issue when setting octet string attributes where it failed to allocate a buffer of maximum size (64 KB) which could result in the failure to set some large values.
  • Modified to update the manager's "directReports" attribute whenever a value is added to or removed from a user's "manager" attribute.

Setpword

  • Fixed an issue in the fully GUI version where values for /m on the command line were ignored.
  • Fixed an issue in the fully GUI version where a parameter given on the command line was ignored.
  • Fixed an issue where if run multiple times (e.g. in a batch file) within the same second to produce random passwords, the same passwords were generated each time run. The problem arose because the seed for the random number generator was the current time in seconds, and this has been resolved by adding the process ID which differs for each invocation of setpword.
  • Added an option to display the passwords being set or verified when reporting the results. The default is to report success or failure for each object but not to report the password used. This may be useful when reading passwords from a file or generating random passwords.

Setquota

  • Updated to allow a field separator to be given as a value for /f, allowing values in a file to be separated by other than tabs and spaces when there are multiple values per line.
  • Fixed an issue where it attempted to process each user despite an invalid volume name being given.

Setrest

  • Modified to delete attribute values and add new values in a single request to the server, instead of as separate requests. This overcomes a problem with IDM drivers monitoring attribute changes.

Spacemon

  • This program was failing to locate its icon in the system tray under Windows Vista, Windows 7 and W2008 R2. The problem has been solved by using a new function to locate the icon under Windows 7 and W2008 R2. However, spacemon still does not work correctly on Vista where this new function is not available.
  • Updated to locate the balloon near the icon when it is in the notification overflow window on Windows 7 and W2008 R2. However, the new function for obtaining the icon position always returns a position in the system tray, ignoring the notification overflow window. Hence the balloon must be positioned relative to the cursor position when it is moved over the icon, not relative to the icon position. This can result in the tail of the balloon obscuring the icon, whereas when the icon is visible in the system tray, the balloon is always positioned just above the system tray.

Trstlist

  • Modified so that /b=j can be used to produce both icacls (/b=ij) and adsettrust (/b=aj) commands granting non propagated GE+GR rights to parent directories.
  • Added /b=k for use with /b=a to allow IRFs to be represented as a series of adsettrust commands which (a) turn off inheritance, (b) convert existing inherited ACEs to explicit ACEs, and (c) grant each NetWare object with a trustee assignment at that level or to a parent directory, their effective rights.
  • Fixed an issue where showing trustee assignments for security equivalent objects via /a was ignored when the second parameter was a volume object, and /h was also used.
  • Modified at customer request so that /y can be used when producing cacls, icacls and adsettrust commands. The default is to include just the CN in the command, but being able to incorporate distinguished names may be useful when the CNs are not unique within the NetWare tree.

Usergrps

  • Added /n=m to suppress the display of groups belonged to. This might be useful when using an input file with /i and /g to produce a sub list of users belonging to a particular group.

Vol_info

  • Fixed an issue where under some circumstances, it could display a zero value for total blocks, and incorrect values for used and purged blocks when using /b for NSS volumes. The problem arose due to VFS (Virtual File Service) returning a zero value for total blocks allocated.
  • Worked around another issue where a large nonsensical value could be displayed for purged blocks in the block summary on OES Linux volumes due to values for the purgeable and not yet purgeable blocks exceeding the difference between the volume size and the number of used blocks.
  • Fixed an issue where the detailed volume summary produced via /m could incorrectly report a volume quota when none existed, whereas /g correctly reported when no quota was set.

Whodidit

  • Updated to display resource fork sizes for NFS files which may be created by Macintoshes.
  • Fixed an issue where column headings were displayed when using /t to display totals only.
  • Corrected an issue in Linux versions where paths or path components containing certain extended characters resulted in a zero length field e.g. for the long name, and consequently fields to the right were out of alignment. The issue was caused by the gcc implementation of C function sprintf.
  • Modified to invoke backup privilege to get the owner of Windows files and directories when reading the access control list fails with "access denied" from a privileged account.
  • Fixed an issue when displaying values for a single directory (i.e. /d was used without a value), very occasionally whodidit would fail to produce any output.
  • Fixed an issue when using the right click option in the GUI version to modify dates and times for Windows files. An odd value for seconds was converted to the next lower even value due to the use of packed DOS date and time format internally. Note that this is still true for NetWare dates and times because the APIs retrieve and set values using packed DOS date and time format.
  • Modified the right click option in the GUI version to modify dates and times so that the existing value is displayed in the dialog box instead of the current date and time, when a single entry is selected.