source: greenstone3/trunk/src/java/org/greenstone/server/Server2Settings.java@ 20604

Last change on this file since 20604 was 20604, checked in by ak19, 15 years ago

Changes to Server.jar files and affected files to add address_resolution options so that the GSI dialog for GS2 looks and behaves more like server.exe.

File size: 5.3 KB
Line 
1package org.greenstone.server;
2
3import java.awt.BorderLayout;
4import java.awt.FlowLayout;
5import java.awt.GridLayout;
6import java.awt.event.*;
7import java.net.InetAddress;
8import java.net.UnknownHostException;
9import java.util.ArrayList;
10import javax.swing.*;
11import javax.swing.event.*;
12
13import org.greenstone.server.BaseServerSettings;
14
15public class Server2Settings extends BaseServerSettings implements ActionListener
16{
17 protected JComboBox prefix_combobox;
18 protected JCheckBox allowConnections;
19 protected JRadioButton[] hostRadioButtons = new JRadioButton[4];
20
21 // 0 to 3: 0 is resolve (hostname) from local IP, 1 is local IP address, 2 is localhost, 3 is 127.0.0.1
22 protected int address_resolution_method = 2;
23 protected int externalaccess = 0;
24
25 public Server2Settings(BaseServer server)
26 {
27 super(server);
28 }
29
30 protected JPanel createServletPanel()
31 {
32 JPanel server2panel = new JPanel();
33 server2panel.setLayout(new BorderLayout());
34
35 boolean allowCons = false;
36 String externalAccess = server.config_properties.getProperty("externalaccess").trim();
37 if(externalAccess != null && externalAccess.equals("1")) {
38 this.externalaccess = 1;
39 allowCons = true;
40 }
41 allowConnections = new JCheckBox(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".ExternalAccess"), allowCons);
42 allowConnections.setBackground(bg_color);
43 allowConnections.addActionListener(this);
44
45 JPanel connect_panel = new JPanel(new GridLayout(4, 1));
46 connect_panel.setBackground(bg_color);
47 connect_panel.setBorder(BorderFactory.createTitledBorder("Connection configuration"));
48
49 hostRadioButtons = new JRadioButton[4];
50 hostRadioButtons[0] = new JRadioButton(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".ResolveIP"));
51 hostRadioButtons[1] = new JRadioButton(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".LocalIP"));
52 hostRadioButtons[2] = new JRadioButton(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".AlwaysUse")+" localhost");
53 hostRadioButtons[3] = new JRadioButton(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".AlwaysUse")+" 127.0.0.1");
54
55 ButtonGroup hostGroup = new ButtonGroup();
56 for(int i = 0; i < hostRadioButtons.length; i ++) {
57 connect_panel.add(hostRadioButtons[i]);
58 hostGroup.add(hostRadioButtons[i]);
59 hostRadioButtons[i].setBackground(bg_color);
60 hostRadioButtons[i].setEnabled(!allowCons);
61 }
62
63
64 String addressResolutionMethod = server.config_properties.getProperty("address_resolution_method").trim();
65 if(addressResolutionMethod != null) {
66 this.address_resolution_method = Integer.parseInt(addressResolutionMethod);
67 }
68 hostRadioButtons[address_resolution_method].setSelected(true);
69
70 JPanel comb_panel = new JPanel(new BorderLayout());
71 comb_panel.add(allowConnections, BorderLayout.NORTH);
72 comb_panel.add(connect_panel, BorderLayout.CENTER);
73 return comb_panel;
74 }
75
76 public boolean[] onSave()
77 {
78 // superclass detects changes to port and autoenter
79 // handle changes to address_resolution_method and externalAccess/allowConnections here
80
81 boolean hasChanged = false;
82 boolean requireRestart = false;
83
84 for(int i = 0; i < hostRadioButtons.length; i++) {
85 if(hostRadioButtons[i].isSelected() && address_resolution_method != i) {
86 address_resolution_method = i;
87 hasChanged = true;
88 requireRestart = true;
89 }
90 }
91
92 int oldExternalAccess = externalaccess;
93 externalaccess = allowConnections.isSelected() ? 1 : 0;
94 if (oldExternalAccess != externalaccess) {
95 hasChanged = true;
96 requireRestart = true;
97 }
98
99 boolean[] returnValues = { hasChanged, requireRestart };
100 return returnValues;
101 }
102
103 public void save(ScriptReadWrite scriptReadWrite, ArrayList newFileLines)
104 {
105 // write only 1 or 0 (and not true or false) for Server2
106 boolean auto_enter = autoEnter.isSelected();
107 if(autoStart != auto_enter) {
108 String newAutoEnter = auto_enter ? "1" : "0";
109 newFileLines = scriptReadWrite.queryReplace(newFileLines, BaseServer.Property.AUTOSTART, newAutoEnter);
110 }
111
112 // external access - onSave() would have updated this value
113 newFileLines = scriptReadWrite.queryReplace(newFileLines, "externalaccess", Integer.toString(externalaccess));
114
115 // work out the host (default is address_resolution_method 2: localhost)
116 String host = "localhost";
117 InetAddress inetAddress = null;
118 try {
119 inetAddress = InetAddress.getLocalHost();
120 } catch(UnknownHostException e) {
121 logger.error(e);
122 logger.info("Server2.java reload(): Defaulting host IP to "+ host); // use the default
123 address_resolution_method = 2;
124 }
125 switch(address_resolution_method) {
126 case 0:
127 host = inetAddress.getHostName();
128 break;
129 case 1:
130 host = inetAddress.getHostAddress();
131 break;
132 case 3:
133 host = "127.0.0.1";
134 break;
135 case 2: default:
136 host = "localhost";
137 }
138 newFileLines = scriptReadWrite.queryReplace(newFileLines, "host", host);
139
140 // address resolution method - onSave() would have updated
141 // this value (or the UnknownHostException above might have)
142 newFileLines = scriptReadWrite.queryReplace(newFileLines, "address_resolution_method", Integer.toString(address_resolution_method));
143
144 }
145
146 public void actionPerformed(ActionEvent e) {
147 boolean toggle = !allowConnections.isSelected();
148 if(e.getSource() == allowConnections) {
149 for(int i = 0; i < hostRadioButtons.length; i++) {
150 hostRadioButtons[i].setEnabled(toggle);
151 }
152 }
153 }
154
155}
Note: See TracBrowser for help on using the repository browser.