797b7557ad71a61ffb72a68f4457a3d999e7e252 2428 |
|
18-Jul-2007 |
jvergara |
Fix for issue 1603 (quickInstall fails to register service on vista)
With the new user access control of Vista, even if we are administrators we are not allowed to do certain operations (such as writing in the service registry) in some circumstances. For instance if we launch net start <service_name> from a normal command prompt this will fail systematically. In order to be able to execute these "privileged" operations we have different alternatives:
Execute the binary that will do the operations using the "Run as Administrator" option in Vista (or launching them from a command prompt that has been started using that same option).
Add a manifest to the binary informing that the binary requires administrator privileges.
The first alternative is one of the workarounds for the bug, however it does not apply to the case of the Java Web Start Installer.
The second alternative is in what consists the bug fix. A new binary has been created. This binary has a manifest informing that it requires administrator privileges. This binary will be used in Vista as a wrapper to call operations that require administrator privileges (modifying the registry in windows-services.bat command line and calling "net start" and "net stop").
If the user is running the setup, the status-panel using the "Run as Administrator" option or is using the command lines from a command prompt launched with that option the behavior in Vista does not change with the behavior in previous versions of Windows.
If the UAC is enabled and the user is not using the "Run as Administrator" options, (s)he will be prompted for confirmation each time the registry is modified and the server is started or stopped as a service. The wrapper is called on any of the individual operations. An alternative would be to call the wrapper when we launch the setup or the status-panel but this generates some issues:
1. This does not work (directly) with the Java Web Start installer.
2. This would force users that are not administrators to provide administrator credentials even to install/run an OpenDS that does not require to do privileged operations (an OpenDS that does not run as a service). |
39e085accf228684b9573bc8ad707a364ed6242e 1701 |
|
25-Apr-2007 |
jvergara |
Fix for issue 1273 (exception if JAVA_HOME undefined in scripts).
The fix consists of modifying the scripts to launch the InstallDS classwith a test option using the JVM
that was found. If the JVM can be successfully launched, the JVM is compatible with 1.5, if not we as
sume that is not compatible with JDK 1.5.
The downside of the fix is that it requires an additional start of the JVM each time the command line i
s launched. That is why the fix only applies to setup, uninstall, upgrade, start and stop command lines. The modifications in _server-script.* and _client-script.sh just modify the message displayed when a JVM could not be found (informing that JDK 1.5 or later can be used). |
7070667c2dffad87009999bdeb16d5305e0afdbe 1418 |
|
15-Mar-2007 |
jvergara |
Fix for issue 528 (Windows Service Definition for Automatic Startup).
The following changes are targeted to be able to run OpenDS as a windows
service.
The idea is to be able to run OpenDS to run as a service and to be able
also to disable this feature.
The setup has been updated to run OpenDS as a service in windows (which
is the standard behavior in this platform). The uninstall has also been
updated to remove all references to OpenDS in the Registry and in the
list of services once OpenDS has been uninstalled.
A new executable (opends_service.exe) has been added to be able to
perform all the tasks that require native code
(registering/unregistering the service, sending events to the event log,
etc.). Most of the code required by this executable is in the file
service.c. The README file has been updated and a Makefile file
provided to generate all the executables.
A new command line has been added: windowsservice.bat. The usage of
this command line is the following one:
This utility may be used to configure OpenDS as a Windows service.
Usage: windowsservice {options}
where {options} include:
-e or --enableService
Enables OpenDS as a Windows service.
-d or --disableService
Disables OpenDS as a Windows service and stops the server
-s or --serviceState
Provides information about the state of OpenDS as a Windows service.
-H or --help
Display this usage information.
The class associated with this command line (ConfigureWindowsService)
uses opends_service.exe. ConfigureWindowsService is basically a wrapper
that allows to have the messages displayed to the user in the Java code
(and so to minimize what is done by the native code).
Some changes have been made in the start-ds(.bat) and stop-ds(.bat)
scripts by extending what the --checkStartability (in DirectoryServer
class) and --checkStoppability (in StopDS class) do. I think that it is
a good idea to have all the parsing of the arguments into the java code
(specially considering the limitations of the .bat files). So I have
moved most of the parsing to the java code so that the is the java code
that provides a return code to the scripts to tell them what to do
(start the server in detach mode, stop the server using a system call,
stop the server using protocol, etc.).
In the particular case of how start-ds.bat and stop-ds.bat have been
updated to manage the case where the server must be started using the
system call 'net start <service_name>' and 'net stop <service_name>'.
--checkstoppability and --checkstartability tell whether the server must
be stopped/started directly with a system call (or stopped using LDAP
protocol) or using the Windows Service system. If it is the latter the
bat files use two new auxiliary classes (StopWindowsService and
StartWindowsService). These classes figure out the service name
associated with the OpenDS instance and call net stop (or net start)
using that service name.
When net start/net stop are called start-ds.bat (or stop-ds.bat) are
called. The Windows Services have been configured to call start-ds.bat
and stop-ds.bat with some particular options (--windowsNetStart and
--windowsNetStop) to identify the case where we must start/stop the
server directly (and so not having an infinite recursive loop of calls
to net start/net stop).
In order to have the same user experience when the server is configured
to run as a service and when is not the tool class WaitForDelete has
also been updated to write its output to a file. This has been done
because piping from the standard output to a file in the context of a
Windows Service call does not seem to work properly. So now
WaitForDelete has a new option --outputFile.
setup --cli on windows has a new option '-n' or '-noWindowsService' to allow not to enable the windows service. When run in interactive mode and this options is not specified the user will systematically be asked whether to enable the windows service or not. |
844850276200bf083a9410753d88c49c00135816 1218 |
|
22-Feb-2007 |
jvergara |
Fix for Issues #1025 and #1248 ('stop-ds.bat should be able to stop server even if LDAP port' and 'cannot stop server through status panel').
The goal of these changes is to be able to have exactly the same user interface in Windows and Unix to stop the server. In windows we force the user to provide LDAP credentials even if the command is going to be run locally. The goal is to allow to stop the server using only system credentials (as we do in UNIX) when the user does not provide arguments when calling stop-ds.bat.
In order to do this I have written some native code. This native code is called when we start the server to:
1. Launch the java process and get the associated PID.
2. Create a server.pid file as we do for UNIX systems to store the PID of the process.
The native code that stops the server reads the PID file contents and tries to stop the process associated with the PID.
In order to allow the users to be able to build the product with independence of the platform, the binaries will be included with the source code. The code used to generate these binaries will also be provided.
I have generated 1 executable called winlauncher.exe. The binaries will be committed in the source tree under lib (with activation.jar and mail.jar). They will also be installed under <server root>\lib.
The native code is in the files winlauncher.c and winlauncher.h. These files are placed under the new directory build-tools/src/windows.
I have tried to keep the native code simple and leave as much logic as I could into the batch files (for instance everything related to the discovery of the java binaries) so that the administrators can play with them.
A README file has been also been included to explain how to generate the binaries.
Extras:
When we call start-ds from the command line, the server will not stop when the command prompt window is closed (unless start-ds was called to run in not-detached mode). The next step is to register DS as a service to avoid the server to be stopped when the user logs out.
When we call setup (with no arguments) or the statuspanel the generated process (and windows) will no longer get killed when the command prompt window is killed.
When the user double-clicks on the setup.bat or the statuspanel.bat files, the command prompt window only appears briefly. Today when we do this a command prompt window stays open until we close setup or the status panel window. |
266c5071a91fda6a5159b08ea8d45261228d03d5 702 |
|
11-Nov-2006 |
neil_a_wilson |
Make a number of changes to administrative tools provided with OpenDS. These
are all made under the umbrella of issue #994, but there are individual issues
for each change.
- Issue #979 -- Re-order LDAP tool arguments
When displaying usage information for many of the LDAP tools (e.g.,
ldapsearch, ldapmodify, etc.), the arguments were not provided in any kind of
logical grouping. This has been corrected so that the arguments are listed
in a more logical ordering.
- Issue #983 -- Add tool description to argument parser
When displaying usage information for administrative tools, it now includes a
small summary of what the tool does at the top of the argument list.
- Issue #984 -- Make tool usage more compact
Previously, the tool usage included a blank line between each argument, which
made the usage information seem too verbose, especially for tools like
ldapsearch with a lot of arguments. This extra space has been removed.
Also, many of the argument descriptions have been rewritten in an attempt to
avoid requiring multiple lines.
- Issue #985 -- Wrap long output in administrative tools when appropriate
Update most of the output for the administrative tools so that it is easier
to read on 80-column displays. This primarily impacts error message, and
cases in which the format of the output is important (e.g., LDIF output from
ldapsearch) no changes were made.
- Issue #986 -- Eliminate hard-coded strings in tools
Some of the tools had hard-coded strings used for error and warning messages.
They have been replaced with localizeable output from the messages files.
- Issue #990 -- LDAP tools don't use trust store password
The LDAP tools didn't provide any mechanism for specifying the PIN needed to
access the contents of an SSL trust store. Some types of trust stores may
require a PIN to access them, so it is now possible to either directly
specify the PIN or to provide the path to a PIN file.
- Issue #991 -- Disconnect when running stop-ds shouldn't be an error
When using the stop-ds script, if the server began shutting down before it
returned a response to the client, the client would provide an error message
making it sound like something went wrong. The output has now been updated
to indicate that the server is likely in the course of shutting down.
- Issue #992 -- Tool usage should include the tool name rather than the class
When displaying usage information for the administrative tools, the
fully-qualified class name for the Java class was displayed, where the name
of the shell script or batch file would have been more useful. |
56cd4dcda4eb69f584c8638616e9c14b99664fcb 664 |
|
31-Oct-2006 |
neil_a_wilson |
Change the flag used to start the server in the foreground from "-nodetach"
(with a single dash) to "--nodetach" (with two dashes). It can also be used as
"-N" with a single dash. This has the following benefits:
- It is more consistent with our other command-line arguments, and it is
CLIP compliant.
- It makes it possible for the flag to appear anywhere in the argument list
rather than just being the first argument.
- It makes it possible to provide this feature on Windows, whereas before it
was only available on UNIX-based systems.
- On UNIX-based systems, "--nodetach" is now case-insensitive, although it is
case-sensitive (all lowercase) on Windows systems. The "-N" alternative is
always case sensitive.
OpenDS Issue Number: 900 |