Date: Sat, 19 Jun 1999 00:04:10 -0500 (CDT) From: Jonathan Abbey <jonabbey@arlut.utexas.edu> To: ganymede-announce@arlut.utexas.edu Subject: [Ganymede Announce] Ganymede 0.99.2 released Ganymede 0.99.2 is now available for download at http://www.arlut.utexas.edu/gash2/ or ftp://ftp.arlut.utexas.edu/pub/ganymede/ Ganymede is a GPL'ed network directory management system written in Java, providing support for team management of NIS, DNS, etc. -- This is a bug-fix and documentation release. The biggest bug fixed is that the admin console will now work properly from the Java plug-in on Windows. A number of bugs were fixed in the permissions and security system in the server as well, and one logging improvement. In the documentation arena, dozens of classes in the Ganymede server have had javadocs written and/or expanded. Most of the key classes in the Ganymede server now have mini-essays in the javadocs header, describing the use of the class, as well as hyperlinks to the main classes that interact with the class. It should be possible to learn a lot about how the server works by going to the 'server javadocs' link in the Ganymede documentation and following links around. Despite all the work that went into improving the javadocs, I still think that documentation is one of Ganymede's weakest areas. *You can help!* Any feedback you could give about any aspect of Ganymede's documentation or operations would be greatly appreciated.. we really don't get very much e-mail at this point. It would be nice to hear success stories as well as critical comments on the documentation and problems with the software. -------------------- Changes from 0.99.1 to 0.99.2 ------------------- RELEASE DATE: June 18, 1999 1. [DOCUMENTATION] Seriously Improved Javadocs Lots more improvements to the source code javadocs. Improving the javadocs is an ongoing project.. I really want to make it possible to get a very good feel for how the entire system works on a technical level by simply browsing through the javadocs. It's an interesting exercise, and a continuing one. If you find yourself puzzling about something in the code, please let me know so I can document it better. 2. [SERVER] Improved DBLock, DBObjectBase classes slightly Added some more explicit lock status check methods to DBObjectBase. Modified GanymedeAdmin's schema edit status check to use the new DBObjectBase.isLocked() method. Pulled some methods and variables from the DBLock subclasses up to DBLock. Added DBLock.isLocked(Vector) to safely test a lock against a vector of DBObjectBases. Modified GanymedeSession.queryDispatch() to use the new method, and to verify that the database remains read locked at the completion of the query loop. (the user could have been knocked off via the admin console, etc.). Documented all the pieces of the lock system in the Javadocs. 3. [SERVER DISTRIB] Added permdecodeDB command permdecodeDB will take an existing ganymede.db file and report on the permissions bits encoded by roles in the database. Useful for debugging permissions code problems. See #4 below. 4. [SERVER] Corrected, simplified server's permissions system The Ganymede server's permissions system had a complex and (as it turned out) broken system for inheriting 'default permissions' for fields in an object. Previously, an object type could have a default permissions bitset registered, and any fields in that object for which permissions had not been explicitly set would take on the default value. This was intended to support reasonable behavior for newly created fields, but the code to implement this had problems in some odd cases. The notion of an explicitly recorded default permission set for fields that differed from the permissions on an object type itself has been removed. In keeping with this, the setDefaultFieldPerms() methods on both PermissionMatrixDBField and perm_field have been taken away, in favor of setFieldPerms(), which sets permissions for all existing fields in an object type, but doesn't involve the complex default logic. The permissions logic has been simplified, and better documented in the javadocs. Now, when new fields are added to object types through the schema editor, all Role objects will grant the permission for the object as a whole to the new fields. If you run the permissions editor in the client on a Role object's permissions fields, you can change this default. Since the Ganymede client's permissions editor dialog had no code for calling the setDefaultFieldPerms() methods on perm_field, this change shouldn't affect any custom work people have done. The gash and gasharl ganymede.schema files did ship in 0.99.1 with a default permission set on a few object types. People using a ganymede.db file derived from a gash or gasharl ganymede.schema may find that they need to use the permissions editor to correct problems in the GASH Admin Role object's permissions bits. 5. [SERVER] Changes to permissions fields now descriptively logged If an administrator makes changes to the permission bits in a Role object, the server's log will now record the precise changes, which will be visible in the Role object's history panel. The history recorded may be a bit deceptive in the case where a field which previously had no explicit field-level permissions set has them set.. if the object type has a permission of view/create/edit, and you edit the field's permission to set it to view/edit only, the log file will show that the field gained view and edit, when it effectively lost create, which was previously inherited. 6. [SERVER] Miscellaneous methods added Added debugging toString() to DBField, PermMatrix classes. Added getFieldName(short) to DBObject, db_object. 7. [ADMIN CONSOLE] Fixed admin console The admin console now works properly in a browser, and properly initializes under all conditions. The magic incantation to get the Ganymede Admin console to find the arlut/csd/ganymede/GanymedeServer_Stub.class file was to include the arlut/csd/ganymede/Client.class in the ganymedeAdmin.jar file. Apparently, Sun's RMI classloading logic freaks out if it comes across a reference to an unavailable RMI remote interface parameter in a RMI remote method _Stub.class file, even if the freaked-out client in question never refers to that method call. I tried *everything* to figure this out, before finally noticing the blurb in the Java plug-in's console about the Client.class load attempt.. d'oh. I wound up having to include arlut.csd.ganymede.Client and arlut.csd.ganymede.GanymedeScheduler because both were referenced by RMI methods or serialized objects the admin console needed. In addition to fixing the ganymedeAdmin.jar file, the applet code was revised to be closer to that of the standard client, to improve its behavior and appearance in a web browser context. I still need to make a nice 'admin console' logo for the admin console applet. Thanks to Charles Adams (charles.adams@central.sun.com) and Andy Johnson (andyjohnson@engineer.com) for reporting the problem with the admin console not working properly with the Java plug-in. 8. [SERVER] Fixed login logic In 0.99.1 and before, the server had an ambiguity that would allow users to login to the wrong priviliged admin account on occasion, if there was more than one account with the same persona name. I.e., if there was persona account 'broccol:supergash' and 'supergash', each with different passwords, the broccol:supergash password could allow access to the non-user-associated supergash admin account. This was true for both normal client login and for admin console attachment. 9. [SERVER] Fixed DBQueryHandler's field DEFINED logic The Ganymede server's DBQueryHandler would throw an exception if attempting to process a "field is defined" QueryDataNode if the field in fact did not exist. ------------------------------------------------------------------------------- Jonathan Abbey jonabbey@arlut.utexas.edu Applied Research Laboratories The University of Texas at Austin Ganymede, a free NIS/DNS management system http://www.arlut.utexas.edu/gash2 ---------------------------------------------------------------------------- To make changes to your subscription to the ganymede announcement list, send mail to majordomo@arlut.utexas.edu. To unsubcribe, include the line unsubscribe ganymede-announce in the body of your mail message Visit the Ganymede web page at http://www.arlut.utexas.edu/gash2 ----------------------------------------------------------------------------