📄 .#server.java.1.22
字号:
package za.co.halo.SecureCommunications.gui.server;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.WindowConstants;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import org.netbeans.lib.awtextra.AbsoluteConstraints;
import org.netbeans.lib.awtextra.AbsoluteLayout;
import za.co.halo.SecureCommunications.DownloadRuleManager;
import za.co.halo.SecureCommunications.Email;
import za.co.halo.SecureCommunications.POP3Server;
import za.co.halo.SecureCommunications.Rule;
import za.co.halo.SecureCommunications.SMTPServer;
import za.co.halo.SecureCommunications.ServerAcknowledge;
import za.co.halo.SecureCommunications.ServerAdmin;
import za.co.halo.SecureCommunications.ServerGroupManager;
import za.co.halo.SecureCommunications.ServerManager;
import za.co.halo.SecureCommunications.WebServer;
import za.co.halo.SecureCommunications.cluster.ClusterClient;
import za.co.halo.SecureCommunications.cluster.ClusterServer;
import za.co.halo.SecureCommunications.gui.client2.DownloadRuleGui;
import za.co.halo.SecureCommunications.gui.client2.ServerGeneralPanel;
import za.co.halo.SecureCommunications.languageFilter.FilterGui;
import za.co.halo.SecureCommunications.network.ServerSettings;
import za.co.halo.SecureCommunications.network.rmi.RMIServer;
import za.co.halo.SecureCommunications.scheduling.ServerSchedule;
/**
* This code was generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* *************************************
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED
* for this machine, so Jigloo or this code cannot be used legally
* for any corporate or commercial purpose.
* *************************************
*/
/**
* @author
* Server Class
* This class presents the GUI for iCat's server
* It acts as a container that incorporates other classes with GUI components
* This class also contains the code to start the servers: POP3, SMTP, Web Server, RMI Server
*/
public class Server extends JFrame implements ActionListener, MouseListener
{
private static final long serialVersionUID = 1L;
/*public class DialogListener extends ComponentAdapter// implements ComponentListener {
{
//
public void componentResized(ComponentEvent e)
{
}
}*/
private JPanel welcomePanel;
private JPanel leftPanel;
private JPanel rightPanel;
private JPanel infoPanel;
private JPanel serversTabPanel;
private JPanel accountTabPanel;
private JPanel groupsTabPanel;
private JPanel logTabPanel;
private JPanel domainTabPanel;
private JPanel downloadTabPanel;
private JPanel languageFilterTabPanel;
private JSplitPane splitPane;
private JButton accountButton;
private JButton groupButton;
private JButton downloadButton;
private JButton optionsButton;
private JButton languageFilterButton,logButton;
private JButton closeButton;
private JButton domainButton;
private JLabel infoLabel;
private JLabel imageLabel;
private JTabbedPane tabbedPane;
private ServerGeneralPanel generalPanel, downloadgeneralPanel;
private LogFilePanel logFilePanel;
private ServerAccountsPanel serverAccountsPanel;
private GroupsPanel groupsPanel;
private DomainPanel domainPanel;
private ServerPanel2 serverPanel;
private Border whiteLine = BorderFactory.createLineBorder(Color.white,1);
private Font customFont = new Font("Helvetica", Font.PLAIN, 14);
private Font customFont2 = new Font("Helvetica", Font.PLAIN, 12);
private ImageIcon iCatImage;
private ServerStartStatus sss = new ServerStartStatus();
private Vector<Boolean> status;
private ServerManager accounts;
private ServerGroupManager groups;
private ServerSchedule scheduler;
private WebServer webserver;
private ClusterServer clusterServer;
private ServerSettings serverSettings;
private FilterGui languageFiltergui;
private DownloadRuleGui rulegui;
private Vector<Rule> theRules;
private DownloadRuleManager ruleManager;
private Vector<Email> getTestEmails() {
Vector<String> receivers = new Vector<String>(3);
receivers.addElement("s23152835@tuks.co.za");
receivers.addElement("s21152835@tuks.co.za");
receivers.addElement("rusty@tuks.co.za");
Vector<String> message = new Vector<String>(1);
message .addElement("If you can read this , ICAT V0.03 is up and running."
+ "Thank You for your patience");
message.addElement("The next updated version of ICAT v0.03 will be released the 14Okt");
Vector<Email> e = new Vector<Email>(10);
e.addElement(new Email("Something Special", "Isabel Bostha", receivers,
receivers, receivers, "John McGee", message, "1:03",
"Anliend de Lange"));
e.addElement(new Email("Read it...", "Jeanri Pellissier", receivers,
receivers, receivers, "John McGee", message, "1:03",
"Anliend de Lange"));
e.addElement(new Email("How's the shot going ?", "Pieter Toute",
receivers, receivers, receivers, "John McGee", message,
"1:03", "Anliend de Lange"));
e.addElement(new Email("me - you", "Lizel van Rensburg", receivers,
receivers, receivers, "John McGee", message, "1:03",
"Anliend de Lange"));
e.addElement(new Email("This is the life", "Jaco Pieterse", receivers,
receivers, receivers, "John McGee", message, "1:03",
"Anliend de Lange"));
return e;
}
/**
* main method
* Use to:
* display the JFrame.
*/
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Server serverGUI = new Server();
serverGUI.pack();
serverGUI.setVisible(true);
}
});
}
/**
* Server constructor
* Use to:
* initialize member variables
* initialize the build of graphical components
* call the function startServers to start the appropriate servers
* @param void
* @return void
*/
public Server()
{
ruleManager = new DownloadRuleManager();
ruleManager.load();
serverSettings = getServerSettings();
accounts = new ServerManager();
accounts.load();
groups = new ServerGroupManager();
groups.load();
theRules = ruleManager.getRules();
//clusterServer = new ClusterServer(accounts,groups);
initGUI();
status = new Vector<Boolean>();
startServers();
}
private ServerSettings getServerSettings() {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(ServerAdmin.SERVER_SETTINGS_SAVE_FILE)));
ServerSettings s = (ServerSettings)in.readObject();
in.close();
return s;
} catch (Exception e) {
e.printStackTrace();
return new ServerSettings();
}
}
private void saveServerSettings() {
try {
ObjectOutputStream in = new ObjectOutputStream(new FileOutputStream(new File(ServerAdmin.SERVER_SETTINGS_SAVE_FILE)));
in.writeObject(serverSettings);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* startServer method
* Use to:
* Start the POP3, SMTP, Web Server and RMI servers
* @param void
* @return void
*/
private void startServers()
{
System.out.println("Starting servers");
//Server Acknowledge
ServerAcknowledge ack = new ServerAcknowledge();
ack.start();
//Start cluster server
try {
clusterServer = new ClusterServer(accounts,groups);
clusterServer.start();
}
catch (Exception e)
{
ServerAdmin.error.warning("Clusterserver could not start");
e.printStackTrace();
}
//Start scheduler
scheduler = new ServerSchedule();
//Start Cluster client
scheduler.schedule(new ClusterClient(accounts),60,120);
//Start webmail
try {
Thread webserverThread = new Thread() {
public void run()
{
webserver = new WebServer(accounts);
webserver.setupAddressBooks();
webserver.setServerName("ICAT Webserver");
webserver.setDomainName("halo.co.za");
webserver.setSMTPserver("student.up.ac.za");
webserver.start();
}
};
webserverThread.start();
sss.setwebServerStartStatus(true);
System.out.println("***---web server started---***");
System.out.println("web server start status:" + sss.getWebserverStartStatus());
}
catch (Exception e)
{
sss.setwebServerStartStatus(false);
System.out.println("***---web server failed---***");
System.out.println("web server start status:" + sss.getWebserverStartStatus());
ServerAdmin.error.warning("Webserver could not start");
e.printStackTrace();
}
// Start pop3 server
try {
Thread pop3 = new Thread() {
public void run()
{
POP3Server pop = new POP3Server(accounts);
pop.setServerName("ICAT server");
pop.start();
}
};
pop3.start();
sss.setPOP3StartStatus(true);
System.out.println("***---pop3 server started---***");
System.out.println("pop3 start status:" + sss.getWebserverStartStatus());
}
catch (Exception e)
{
sss.setPOP3StartStatus(false);
System.out.println("***---pop3 server failed---***");
System.out.println("pop3 start status:" + sss.getWebserverStartStatus());
ServerAdmin.error.warning("POPServer could not start");
e.printStackTrace();
}
// Start smtp server
try{
Thread s = new Thread() {
public void run()
{
SMTPServer smtp = new SMTPServer(accounts);
smtp.setServerName("ICAT server");
smtp.start();
}
};
s.start();
sss.setSMTPStartStatus(true);
System.out.println("***---smtp server started---***");
System.out.println("smtp start status:" + sss.getWebserverStartStatus());
}
catch (Exception e)
{
sss.setSMTPStartStatus(false);
System.out.println("***---smtp server started---***");
System.out.println("smtp server start status:" + sss.getWebserverStartStatus());
ServerAdmin.error.warning("SMTP could not start");
e.printStackTrace();
}
// Start rmi server
/*new Thread() {
public void run()
{
new RMIServer(accounts);
}
};*/
try {
new RMIServer(accounts);
sss.setRMIStartStatus(true);
System.out.println("***---rmi server started---***");
System.out.println("rmi start status:" + sss.getWebserverStartStatus());
}
catch (Exception e)
{
sss.setRMIStartStatus(false);
System.out.println("***---rmi server started---***");
System.out.println("rmi start status:" + sss.getWebserverStartStatus());
ServerAdmin.error.warning("RMIServer could not start");
e.printStackTrace();
}
System.out.println("Started servers");
status.addElement(sss.getPOP3StartStatus());
status.addElement(sss.getSMTPStartStatus());
status.addElement(sss.getRMIStartStatus());
status.addElement(sss.getWebserverStartStatus());
System.out.println("---"+status);
}
/**
* initGUI method
* USe to:
* initialize graphics
* @param void
* @return void
*/
private void initGUI() {
try {
{
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.setPreferredSize(new Dimension(930,700));
this.setLocation(50,5);
this.setTitle("iCat Server");
this.setIconImage(new ImageIcon("Banners/iconLogo.png").getImage());
welcomePanel = new JPanel();
welcomePanel.setSize(new Dimension(800,100));
welcomePanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(whiteLine,"Welcome: iCat Administrator",TitledBorder.TOP,TitledBorder.LEADING,customFont,Color.white),BorderFactory.createEmptyBorder(0,0,0,0)));
welcomePanel.setBackground(new Color(21,118,146));
this.add(welcomePanel,BorderLayout.NORTH);
leftPanel = new JPanel();
leftPanel.setMinimumSize(new Dimension(250,600));
leftPanel.setLayout(null);
leftPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(whiteLine,"Options",TitledBorder.LEADING,TitledBorder.TOP,customFont2,Color.white),BorderFactory.createEmptyBorder(5,5,5,5)));
leftPanel.setBackground(new Color(15,65,108));
rightPanel = new JPanel();
rightPanel.setMinimumSize(new Dimension(700,800));
rightPanel.setLayout(null);
rightPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(whiteLine,"Information",TitledBorder.LEADING,TitledBorder.TOP,customFont2,Color.white),BorderFactory.createEmptyBorder(5,5,5,5)));
rightPanel.setBackground(new Color(15,65,108));
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel);
splitPane.setOneTouchExpandable(true);
splitPane.setDividerLocation(251);
this.add(splitPane,"Center");
accountButton = new JButton("Manage Accounts");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -