ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/java/Config.java
Revision: 1.8
Committed: Mon Mar 19 17:38:41 2001 UTC (23 years, 6 months ago) by ab11
Branch: MAIN
CVS Tags: PROJECT_COMPLETION
Changes since 1.7: +5 -2 lines
Log Message:
Added the FQDN part to the initial configuation process to make it conform to the protocol.

File Contents

# User Rev Content
1 ab11 1.2 //---PACKAGE DECLARATION---
2    
3     //---IMPORTS---
4    
5 ab11 1.1 import java.net.*;
6     import java.util.*;
7     import java.io.*;
8    
9 ab11 1.2 /**
10     * Configurator object for the JavaHost
11 tdb 1.5 * Will connect to the filter manager and collect its specific
12 ab11 1.2 * configuration
13     *
14 tdb 1.6 * @author $Author: tdb1 $
15 ab11 1.8 * @version $Id: Config.java,v 1.7 2001/01/24 01:25:59 tdb1 Exp $
16 ab11 1.2 */
17 ab11 1.1 class Config {
18    
19 ab11 1.2 //---FINAL ATTRIBUTES---
20    
21     //---STATIC METHODS---
22    
23     //---CONSTRUCTORS---
24    
25     public Config( String serverName, int serverPort ){
26     // takes in the master config settings and creates a connection with
27     // this computer, and downloads all the values listed in config.values.txt
28     // which should be in the local directory
29    
30     // read in from the file.
31     try {
32 ab11 1.3 System.out.println("Reading Config file");
33 ab11 1.2 BufferedReader inFile = new BufferedReader(new FileReader("config.values.txt"));
34     aList = new ArrayList();
35     numProperties = 0;
36     String tmpIn = inFile.readLine();
37     while ( tmpIn != null ){
38 ab11 1.3 aList.add(numProperties, tmpIn);
39 ab11 1.2 numProperties++;
40     tmpIn = inFile.readLine();
41     }
42 ab11 1.3 System.out.println("Added "+numProperties+" properties");
43 ab11 1.2 }
44     catch ( FileNotFoundException e ){
45     // do something
46 ab11 1.3 System.out.println("Config file not found");
47 ab11 1.2 }
48     catch ( IOException e ){
49     // do something
50     }
51    
52 ab11 1.3 myProperties = new HashMap();
53     configChanged = false;
54    
55 ab11 1.4 // time in seconds before first retry
56     filterManagerRetryTime = 10;
57 ab11 1.3
58 ab11 1.2 // do the funky jibble
59     connect(serverName, serverPort);
60     }
61    
62     //---PUBLIC METHODS---
63    
64     public InetAddress getFilterName(){
65 tdb 1.6 // will return the most recent IP address (if it is dynamic for whatever reason)
66 ab11 1.2 try {
67     return InetAddress.getByName(filterName);
68     }
69     catch ( UnknownHostException e ){
70     // do something
71     return null;
72     }
73    
74     }
75    
76     /**
77     * Used to retrieve the port to send UDP packets to on the filter
78     *
79 tdb 1.6 * @return an integer corresponding to the UDP port of the filter
80 ab11 1.2 */
81     public int getFilterUDPPort(){
82    
83     return filterUDPPort;
84     }
85    
86     /**
87     * Used to retrieve the port to send TCP heartbeats to on the filter
88     *
89 tdb 1.6 * @return an integer corresponding to the TCP of the filter
90 ab11 1.2 */
91     public int getFilterTCPPort(){
92    
93     return filterTCPPort;
94     }
95    
96     /**
97     * Used to get the hostname of the filter we are to talk to.
98     *
99     * @return a string representing the hostname of the filter
100     */
101     public String getProperty( String name ){
102    
103     if ( myProperties.containsKey(name) ){
104     // its in there, may return ERROR
105     return (String) myProperties.get(name);
106     }
107     else
108     {
109     // can't have been in the config.values.txt file!
110     return "ERROR";
111     }
112     }
113    
114    
115     //---PRIVATE METHODS---
116    
117     private void connect( String serverName, int serverPort ){
118     Socket mySocket;
119 ab11 1.3 configChanged = false;
120    
121 tdb 1.5 System.out.println("Establishing connection with filter manager");
122 ab11 1.2
123     // might throw a UnknownHostException
124     try {
125 ab11 1.3 mySocket = new Socket( serverName, serverPort );
126     // ok we have our socket connected ok. grab their input and output streams
127 ab11 1.2 socketIn = new BufferedReader(new InputStreamReader(mySocket.getInputStream()));
128     socketOut = new PrintWriter(mySocket.getOutputStream());
129 ab11 1.3
130     if (sendCommand("STARTCONFIG").equals("OK")){
131 ab11 1.2 // everything is fine
132 ab11 1.3 // sendCommand("LASTMODIFIED");
133     lastModified = sendCommand("LASTMODIFIED");
134 ab11 1.8
135     fileList = sendCommand("FILELIST");
136 ab11 1.2
137 ab11 1.8 fQDN = sendCommand("FQDN");
138 ab11 1.2 // get all the properties
139 ab11 1.3 if ( numProperties > 0 ){
140     // sendCommand("CONFIG");
141     for ( int i = 0; i < numProperties; i++ ){
142     String property = (String) aList.get(i);
143     myProperties.put(property, sendCommand(property));
144     }
145 ab11 1.2 }
146    
147     sendCommand("ENDCONFIG");
148     String filter_data = sendCommand("FILTER");
149     StringTokenizer tok = new StringTokenizer(filter_data,";");
150     filterName = tok.nextToken();
151     filterUDPPort = Integer.parseInt(tok.nextToken());
152     filterTCPPort = Integer.parseInt(tok.nextToken());
153 ab11 1.4
154 ab11 1.2 sendCommand("END");
155 ab11 1.3
156 ab11 1.2 }
157 ab11 1.3
158 ab11 1.2
159     // close the socket
160     mySocket.close();
161 tdb 1.5 System.out.println("Completed communication with filter manager");
162 ab11 1.2
163     }
164     catch ( UnknownHostException e ){
165 ab11 1.3 // what to do
166     System.out.println("Host not found");
167 ab11 1.2 }
168     catch ( IOException e ){
169     // what to do
170 ab11 1.3 System.out.println("Unable to read from socket, might not be open");
171 ab11 1.4 System.out.println("Retrying in "+filterManagerRetryTime+" seconds");
172     configChanged = true;
173     try {
174     Thread.sleep(filterManagerRetryTime*1000);
175     }
176     catch( InterruptedException f ){
177     System.out.println("Sleep interrupted");
178     }
179     filterManagerRetryTime = filterManagerRetryTime * 2;
180     // warning this WILL cause a stack overflow after a while..
181     // need to fix it.
182     connect(serverName, serverPort);
183 ab11 1.2 }
184    
185     } // connect
186    
187    
188 ab11 1.3 public void sendHeartBeat(){
189    
190     Socket mySocket;
191     try {
192    
193     mySocket = new Socket( filterName, filterTCPPort );
194     // ok we have our socket connected ok. grab their input and output streams
195     socketIn = new BufferedReader(new InputStreamReader(mySocket.getInputStream()));
196     socketOut = new PrintWriter(mySocket.getOutputStream());
197    
198    
199     if ( sendCommand("HEARTBEAT").equals("OK") ){
200     if ( sendCommand("CONFIG").equals("OK") ){
201     sendCommand(fileList);
202     if ( sendCommand(lastModified).equals("ERROR") ){
203     // config has changed
204     configChanged = true;
205     }
206     sendCommand("ENDHEARTBEAT");
207     }
208     }
209     }
210     catch ( UnknownHostException e ){
211     // what to do
212     System.out.println("Host not found");
213     }
214     catch ( IOException e ){
215     // what to do
216     System.out.println("Unable to read from socket, might not be open");
217 ab11 1.4 System.out.println("Re-establishing contact with filter manager");
218     configChanged = true;
219 ab11 1.3 }
220     }
221    
222 ab11 1.2 private String sendCommand(String command){
223    
224 ab11 1.3 // System.out.println("Writing command: "+command);
225 ab11 1.2 socketOut.println(command);
226 ab11 1.3 socketOut.flush();
227 ab11 1.2 try {
228 ab11 1.3 String response = socketIn.readLine();
229     // System.out.println("Got: "+response);
230     return response;
231 ab11 1.2 }
232     catch ( IOException e ){
233     // something went wrong
234 ab11 1.3 System.out.println("Error recieving response");
235 ab11 1.2 return "ERROR";
236     }
237     }
238    
239     //---ACCESSOR/MUTATOR METHODS---
240    
241 ab11 1.3 public boolean reloadConfig(){
242     return configChanged;
243     }
244    
245 ab11 1.2 //---ATTRIBUTES---
246    
247 ab11 1.3 private boolean configChanged;
248 ab11 1.2 private String lastModified;
249 ab11 1.3 private String fileList;
250 ab11 1.8 private String fQDN;
251 ab11 1.2 private int numProperties;
252 ab11 1.3 private HashMap myProperties;
253 ab11 1.2 private String filterName;
254     private int filterUDPPort;
255     private int filterTCPPort;
256     private ArrayList aList;
257     private BufferedReader socketIn;
258     private PrintWriter socketOut;
259 ab11 1.4 private int filterManagerRetryTime;
260 ab11 1.2
261    
262    
263     //---STATIC ATTRIBUTES---
264 ab11 1.1
265 tdb 1.7 } // class