📄 managecontrol.java
字号:
UserDialog.ErrorBox("Error writing file! ("+Communicator.commError+")"); } finally { bb.done(); parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); parent.setEnabled(true); } } /** * generate configuration report */ private void writeConfigReport(PrintWriter ps) { ps.println("<html><head><title>sf Configuration Report</title></head><body>"); ps.println("<h1>sf Configuration Report</h1>"); ps.println("<p>Report generated "+(new Date()).toString()); if (mgDomain.DomainName.length() > 0) ps.println("<h2>Management domain <i>"+mgDomain.DomainName+"</i></h2>"); Enumeration en = mgDomain.getTopology().getAllVertices(); ManageObject mo; Host h; Net n; Internet in; while (en.hasMoreElements()) { mo = (ManageObject)en.nextElement(); if (mo instanceof Host) { h = (Host)mo; ps.println("<h3><a name="+mo.identString()+">Host <i>"+h.objectID+"</i></a></h3>"); ps.println("<ul>"); if (h.level == 1) ps.println("<li>Level: "+h.level+" firewall hop to nearest Internet connection"); else if (h.level >= 0) ps.println("<li>Level: "+h.level+" firewall hops to nearest Internet connection"); else ps.println("<li>No Internet connection"); if (h.isFirewall) if (h.transparent) ps.println("<li>Firewall (allows packets from outside to outside)"); else ps.println("<li>Firewall (blocks packets from outside to outside)"); if (h.isServer && h.publicServer) ps.println("<li>Server (public access)"); if (h.isServer && !h.publicServer) ps.println("<li>Server (internal access only)"); ps.println("<li>Addresses:"); writeAddresses(ps, h.HostAddresses); if (h.isFirewall) { ps.println("<li>Internalnets:"); writeAddresses(ps, h.internalAddresses); } writeNeighbors(ps, mo); ps.println("</ul>"); } else if (mo instanceof Net) { n = (Net)mo; ps.println("<h3><a name="+mo.identString()+">Network <i>"+n.objectID+"</i></a></h3>"); ps.println("<ul>"); if (n.level == 1) ps.println("<li>Level: "+n.level+" firewall hop to nearest Internet connection"); else if (n.level >= 0) ps.println("<li>Level: "+n.level+" firewall hops to nearest Internet connection"); else ps.println("<li>No Internet connection"); ps.println("<li>Addresses:"); writeAddresses(ps, n.NetAddresses); writeNeighbors(ps, mo); ps.println("</ul>"); } else if (mo instanceof Internet) { in = (Internet)mo; } else { ps.println("<h3><a name="+mo.identString()+">Unknown object: <i>"+mo+"</i></a></h3>"); } } ps.println("</body></html>"); } private void writeAddresses(PrintWriter ps, AddrList al) { if (al==null) return; Enumeration en = al.getAddresses().elements(); AddrObj ao; ps.println("<ul>"); while (en.hasMoreElements()) { ao = (AddrObj)en.nextElement(); ps.println("<li><tt>"+ao.toString()+"</tt>"); } ps.println("</ul>"); } private void writeNeighbors(PrintWriter ps, ManageObject mo) { Enumeration en = mgDomain.getTopology().findNeighbors(mo); ManageObject n; ps.println("<li>Connected to:<ul>"); while (en.hasMoreElements()) { n = (ManageObject)en.nextElement(); if (n.objectID.length() > 0) if (n instanceof Internet) ps.println("<li>"+n.objectID); else ps.println("<li><a href=\"#"+n.identString()+"\">"+n.objectID+"</a>"); else if (n instanceof Host) ps.println("<li><a href=\"#"+n.identString()+"\">Unnamed host"+"</a>"); else if (n instanceof Net) ps.println("<li><a href=\"#"+n.identString()+"\">Unnamed network"+"</a>"); else ps.println("<li><a href=\"#"+n.identString()+"\">Unnamed object"+"</a>"); } ps.println("</ul>"); } public static final int REPORT_CONFIG = 1; // configuration report private ManageDomain mgDomain; private Frame parent; private BusyBox busybox; private int reportType;} // ReportThread// This dialog box is used to enter the general access profile// and the configuration client addressesclass GeneralSettings extends Dialog implements ActionListener, TextListener, ItemListener { public GeneralSettings(Frame p, String title, ManageDomain md) { super(p, title, true); parent = p; mgDomain = md; GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; gbc.insets = new Insets(5,5,5,5); setLayout(gbl); // Name panel Utils.add_component(this, new Label("Name: "), gbl, gbc, 0, 0, 1, 1, 0, 0); DNameText = new TextField(mgDomain.DomainName); DNameText.addTextListener(this); Utils.add_component(this, DNameText, gbl, gbc, 1, 0, 3, 1, 100, 0); // Default mail addresses Utils.add_component(this, new Label("Default mail:"), gbl, gbc, 0, 1, 1, 1, 0, 0); mailText = new TextField(mgDomain.defaultMail); mailText.addTextListener(this); Utils.add_component(this, mailText, gbl, gbc, 1, 1, 3, 1, 100, 0); int half = (int)Math.floor(((double)Templates.numberGeneral / 2.0) + 0.5); // Address Panel (configuration clients) addrPanel = mgDomain.configClients.editPanel(); Utils.add_component(this, new Label("Configuration clients:"), gbl, gbc, 0, 2, 2, 1, 0, 0); Utils.add_component(this, addrPanel, gbl, gbc, 0, 3, 2, half-1, 100, 100); // Checkboxes gbc.fill = GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.NORTHWEST; CheckboxArray = new Checkbox[Templates.numberGeneral]; for (int i=0; i < Templates.numberGeneral; i++) { CheckboxArray[i] = new Checkbox(Templates.prompt[i], mgDomain.generalTemplates[i]); CheckboxArray[i].addItemListener(this); if (i < half) Utils.add_component(this, CheckboxArray[i], gbl, gbc, 2, i+2, 1, 1, 0, 0); else Utils.add_component(this, CheckboxArray[i], gbl, gbc, 3, i+2-half, 1, 1, 0, 0); } // Buttons OKbutton = new Button("OK"); OKbutton.addActionListener(this); Utils.add_component(this, OKbutton, gbl, gbc, 0, 2+half, 4, 1, 0, 0); // Window size pack(); addWindowListener(new GSAdapter()); } // GeneralSettings class GSAdapter extends WindowAdapter { public void windowClosing(WindowEvent we) { if (isEnabled()) dispose(); } } // Class GSAdapter // Eventhandling routines public void textValueChanged(TextEvent te) { Object source = te.getSource(); if (source == DNameText) { mgDomain.DomainName = (DNameText.getText().trim()); setTitle(mgDomain.DomainName); parent.setTitle(mgDomain.DomainName); return; } } // textValueChanged public void actionPerformed(ActionEvent ae) { Object source = ae.getSource(); if (source == OKbutton) { mgDomain.DomainName = DNameText.getText().trim(); if (mgDomain.DomainName.length() > 0) parent.setTitle(mgDomain.DomainName); dispose(); return; } } // actionPerformed public void itemStateChanged(ItemEvent ie) { Object source = ie.getSource(); if (source instanceof Checkbox) { for (int i=0; i < Templates.numberGeneral; i++) if (source==CheckboxArray[i]) mgDomain.generalTemplates[i] = CheckboxArray[i].getState(); return; } } // itemStateChanged private ManageDomain mgDomain; private Frame parent; private TextField DNameText; private TextField mailText; private Panel addrPanel; private Checkbox CheckboxArray[]; private Button OKbutton;} // Class GeneralSettings// This dialog box provides a selection list for editing notification levelsclass NotificationSelect extends Dialog implements Refreshable, ActionListener { public NotificationSelect(ManageDomain md, ManageControl p) { super(p, "Notification Levels", true); p.setCursor(new Cursor(Cursor.WAIT_CURSOR)); mgDomain = md; parent = p; gbl = new GridBagLayout(); gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; gbc.insets = new Insets(3,3,3,3); setLayout(gbl); nList = new List(15, false); Notification.constructList(nList, mgDomain.NLevels); OKbutton = new Button("OK"); AddButton = new Button("Add new level"); DeleteButton = new Button("Delete"); ChangeButton = new Button("Change"); OKbutton.addActionListener(this); AddButton.addActionListener(this); DeleteButton.addActionListener(this); ChangeButton.addActionListener(this); Utils.add_component(this, nList, gbl, gbc, 0, 0, 3, 15, 100, 100); Utils.add_component(this, OKbutton, gbl, gbc, 3, 0, 1, 1, 0, 0); Utils.add_component(this, AddButton, gbl, gbc, 3, 1, 1, 1, 0, 0); Utils.add_component(this, DeleteButton, gbl, gbc, 3, 2, 1, 1, 0, 0); Utils.add_component(this, ChangeButton, gbl, gbc, 3, 3, 1, 1, 0, 0); pack(); p.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } public void actionPerformed(ActionEvent ae) { Object source = ae.getSource(); // Process OKbutton if (source == OKbutton) { dispose(); return; } // Process AddButton else if (source == AddButton) { Notification ln; try { ln = (Notification)mgDomain.NLevels.lastElement(); } catch (NoSuchElementException e) { ln = null; } Notification not = new Notification (ln == null ? Notification.firstDynamic : ln.levelNumber + 1); mgDomain.NLevels.addElement(not); not.edit(this, parent, mgDomain, true); return; } // Process DeleteButton else if (source == DeleteButton) { String str = nList.getSelectedItem(); if (str == null) return; Notification not = Notification.getLevel(str, mgDomain.NLevels); if (not == null) return; if (not.levelNumber < Notification.firstDynamic) { UserDialog.ErrorBox("Cannot delete static notification level!"); return; }// !!! this doesn't work, cause we are in the event loop// OkCancelBox oc = new OkCancelBox(parent, "Deleting notification level "+str+".");// oc.show();// if (oc.getAnswer() != OkCancelBox.OK)// return true; mgDomain.NLevels.removeElement(not); refresh(); return; } // Process ChangeButton else if (source == ChangeButton) { String str = nList.getSelectedItem(); if (str == null) return; Notification not = Notification.getLevel(str, mgDomain.NLevels); if (not == null) return; not.edit(this, parent, mgDomain, false); return; } } // actionPerformed public void refresh() { parent.setCursor(new Cursor(Cursor.WAIT_CURSOR)); remove(nList); nList = new List(15, false); Notification.constructList(nList, mgDomain.NLevels); Utils.add_component(this, nList, gbl, gbc, 0, 0, 3, 15, 100, 100); validate(); parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } private ManageDomain mgDomain; private ManageControl parent; private GridBagLayout gbl; private GridBagConstraints gbc; private List nList; private Button OKbutton; private Button AddButton; private Button DeleteButton; private Button ChangeButton;} // NotificationSelect// This dialog box implements a selection list for editing macrosclass MacroSelect extends Dialog implements Refreshable, ActionListener { public MacroSelect(ManageDomain md, ManageControl p) { super(p, "Address and Service Macros", true); p.setCursor(new Cursor(Cursor.WAIT_CURSOR)); mgDomain = md; parent = p; gbl = new GridBagLayout(); gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; gbc.insets = new Insets(3,3,3,3); setLayout(gbl); nList = new List(15, false); Macro.constructList(nList, mgDomain.Macros); OKbutton = new Button("OK"); AddButton = new Button("Add new macro"); DeleteButton = new Button("Delete"); ChangeButton = new Button("Change"); OKbutton.addActionListener(this); AddButton.addActionListener(this); DeleteButton.addActionListener(this); ChangeButton.addActionListener(this); Utils.add_component(this, nList, gbl, gbc, 0, 0, 3, 15, 100, 100); Utils.add_component(this, OKbutton, gbl, gbc, 3, 0, 1, 1, 0, 0); Utils.add_component(this, AddButton, gbl, gbc, 3, 1, 1, 1, 0, 0); Utils.add_component(this, DeleteButton, gbl, gbc, 3, 2, 1, 1, 0, 0); Utils.add_component(this, ChangeButton, gbl, gbc, 3, 3, 1, 1, 0, 0); pack(); p.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } public void actionPerformed(ActionEvent ae) { Object source = ae.getSource(); // Process OKbutton if (source == OKbutton) { dispose(); return; } // Process AddButton else if (source == AddButton) { Macro ln; try { ln = (Macro)mgDomain.Macros.lastElement(); } catch (NoSuchElementException e) { ln = null; } Macro m = new Macro (ln == null ? Macro.firstDynamic : ln.macroNumber - 1); mgDomain.Macros.addElement(m); m.edit(this, parent, mgDomain, true); return; } // Process DeleteButton else if (source == DeleteButton) { String str = nList.getSelectedItem(); if (str == null) return; Macro m = Macro.getMacro(str, mgDomain.Macros); if (m == null) return; if (m.macroNumber > Macro.firstDynamic) { UserDialog.ErrorBox("Cannot delete static macro!"); return; }// !!! this doesn't work, cause we are in the event loop// OkCancelBox oc = new OkCancelBox(parent, "Deleting macro "+str+".");// oc.show();// if (oc.getAnswer() != OkCancelBox.OK)// return true; mgDomain.Macros.removeElement(m); refresh(); return; } // Process ChangeButton else if (source == ChangeButton) { String str = nList.getSelectedItem(); if (str == null) return; Macro m = Macro.getMacro(str, mgDomain.Macros); if (m == null) return; m.edit(this, parent, mgDomain, false); return; } } // actionPerformed public void refresh() { parent.setCursor(new Cursor(Cursor.WAIT_CURSOR)); remove(nList); nList = new List(15, false); Macro.constructList(nList, mgDomain.Macros); Utils.add_component(this, nList, gbl, gbc, 0, 0, 3, 15, 100, 100); validate(); parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } private ManageDomain mgDomain; private ManageControl parent; private GridBagLayout gbl; private GridBagConstraints gbc; private List nList; private Button OKbutton; private Button AddButton; private Button DeleteButton; private Button ChangeButton;} // MacroSelect
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -