01: /*
02: * ChownHandler.java
03: *
04: * Brazil project web application Framework,
05: * export version: 1.1
06: * Copyright (c) 2000 Sun Microsystems, Inc.
07: *
08: * Sun Public License Notice
09: *
10: * The contents of this file are subject to the Sun Public License Version
11: * 1.0 (the "License"). You may not use this file except in compliance with
12: * the License. A copy of the License is included as the file "license.terms",
13: * and also available at http://www.sun.com/
14: *
15: * The Original Code is from:
16: * Brazil project web application Framework release 1.1.
17: * The Initial Developer of the Original Code is: suhler.
18: * Portions created by suhler are Copyright (C) Sun Microsystems, Inc.
19: * All Rights Reserved.
20: *
21: * Contributor(s): suhler.
22: *
23: * Version: 1.6
24: * Created by suhler on 00/10/02
25: * Last modified by suhler on 00/12/11 13:32:52
26: */
27:
28: package sunlabs.brazil.handler;
29:
30: import sunlabs.brazil.server.Handler;
31: import sunlabs.brazil.server.Request;
32: import sunlabs.brazil.server.Server;
33: import java.io.IOException;
34: import com.sun.server.ServerProcess;
35:
36: /**
37: * Handler for changing the group and owner of the server.
38: * This handler expects the "server.so" file used by the
39: * <a href=http://www.sun.com/software/jwebserver>
40: * Java Webserver 2.0</a>
41: * Make sure you rename the file lib<code>server.so</code>
42: * in the distribution to lib<code>com_sun_server_ServerProcess.so</code>, and
43: * put it where it will be found by <b>System.loadLibrary</b>.
44: * <p>
45: * Properties:
46: * <dl class=props>
47: * <dt>userName <dd>name of the user to run as
48: * <dt>groupName <dd>The name of the group to run as
49: * </dl>
50: *
51: * @author Stephen Uhler
52: * @version 1.6, 00/12/11
53: */
54:
55: public class ChownHandler implements Handler {
56:
57: /**
58: * set up the Unix user and group.
59: * We could return false, so our respond method would never be called,
60: * but some containers cause the server to exit on false returns.
61: */
62:
63: public boolean init(Server server, String prefix) {
64: String user = server.props.getProperty(prefix + "userName");
65: String group = server.props.getProperty(prefix + "GroupName");
66: try {
67: if (user != null && ServerProcess.setUser(user)) {
68: System.out.println("Setting server to run as user: "
69: + user);
70: }
71: if (group != null && ServerProcess.setGroup(group)) {
72: System.out.println("Setting server to run as group: "
73: + group);
74: }
75: } catch (UnsatisfiedLinkError e) {
76: System.out.println(prefix + " not available: "
77: + e.getMessage());
78: return false;
79: }
80: return true;
81: }
82:
83: /**
84: * Nothing to respond to
85: */
86:
87: public boolean respond(Request request) throws IOException {
88: return false;
89: }
90: }
|