/* ** This file is part of Filius, a network construction and simulation software. ** ** Originally created at the University of Siegen, Institute "Didactics of ** Informatics and E-Learning" by a students' project group: ** members (2006-2007): ** André Asschoff, Johannes Bade, Carsten Dittich, Thomas Gerding, ** Nadja Haßler, Ernst Johannes Klebert, Michell Weyer ** supervisors: ** Stefan Freischlad (maintainer until 2009), Peer Stechert ** Project is maintained since 2010 by Christian Eibl <filius@c.fameibl.de> ** and Stefan Freischlad ** Filius is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 2 of the License, or ** (at your option) version 3. ** ** Filius is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ** PURPOSE. See the GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with Filius. If not, see <http://www.gnu.org/licenses/>. */ package filius.software.system; import filius.Main; import filius.software.dhcp.DHCPClient; import filius.software.dhcp.DHCPServer; /** Diese Klasse stellt die Funktionalitaet eines Betriebssystems * fuer Hosts (d. h. Rechner und Notebooks) zur Verfuegung. * Spezifisch ist die Moeglichkeit, einen DHCP-Server zu * installieren und die Konfiguration der Netzwerkkarten mit DHCP * durchzufuehren. Die weitere Funktionalitaet wird von der * Oberklasse (InternetKnotenBetriebssystem) zur Verfuegung * gestellt. * */ public class Betriebssystem extends InternetKnotenBetriebssystem { private static final long serialVersionUID = 1L; /** ob die Konfiguration der Netzwerkkarte mit DHCP * erfolgt */ private boolean dhcpKonfiguration; /** der DHCP-Server, der aktiviert und deaktiviert werden kann */ private DHCPServer dhcpServer; /** der DHCP-Client, der zur Konfiguration der Netzwerkkarte * genutzt wird, wenn die Konfiguration mit DHCP erfolgen soll * @see dhcpKonfiguration */ private DHCPClient dhcpClient; /** Konstruktur, in dem DHCP-Client und -Server initialisiert * werden */ public Betriebssystem() { super(); Main.debug.println("INVOKED-2 ("+this.hashCode()+") "+getClass()+" (Betriebssystem), constr: Betriebssystem()"); dhcpServer = new DHCPServer(); dhcpServer.setSystemSoftware(this); } /** Starten der Threads. Der DHCP-Client wird hier gestartet, * wenn die Konfiguration mit DHCP aktiviert ist. Der DHCP-Server * wird hier auch gestartet. */ public void starten() { Main.debug.println("INVOKED ("+this.hashCode()+") "+getClass()+" (Betriebssystem), starten()"); super.starten(); dhcpServer.starten(); if (isDHCPKonfiguration()) { dhcpClient = new DHCPClient(); dhcpClient.setSystemSoftware(this); dhcpClient.starten(); } } /** Aufruf erfolgt beim Wechsel vom Aktions- zum Entwurfsmodus. Die * entsprechende Methode der Oberklasse wird aufgerufen und der * DHCP-Server und -Client beendet. */ public void beenden() { Main.debug.println("INVOKED ("+this.hashCode()+") "+getClass()+" (Betriebssystem), beenden()"); super.beenden(); dhcpServer.beenden(); if (dhcpClient != null) dhcpClient.beenden(); } /** Methode zum Zugriff auf den DHCP-Server. */ public DHCPServer getDHCPServer() { return dhcpServer; } /** Methode zum Zugriff auf den DHCP-Server. */ public void setDHCPServer(DHCPServer dhcpServer) { this.dhcpServer = dhcpServer; } /** Ob die Konfiguration der Netzwerkkarte mit DHCP erfolgt */ public boolean isDHCPKonfiguration() { return dhcpKonfiguration; } /** Ob die Konfiguration der Netzwerkkarte mit DHCP erfolgt */ public void setDHCPKonfiguration(boolean dhcp) { this.dhcpKonfiguration = dhcp; if (dhcp) { setzeIPAdresse("0.0.0.0"); setzeNetzmaske("0.0.0.0"); } } }