* network plugin supports dhcp

This commit is contained in:
age 2007-08-14 02:12:59 +00:00
parent c33ae31267
commit cbfddddeb2
5 changed files with 135 additions and 48 deletions

View File

@ -80,13 +80,26 @@
var:html_escape(Lang.Plugins.network.Button.Gateway) ?></button> var:html_escape(Lang.Plugins.network.Button.Gateway) ?></button>
</p> </p>
</form> </form>
</fieldset>
<!-- DHCP comes later
<?cs call:show_help(Lang.Plugins.network.Help.DHCP) ?> <fieldset>
<p> <legend>
<input type="checkbox" name="dhcp" value="1" id="dhcp" /><label for="dhcp"><?cs var:html_escape(Lang.Plugins.network.Text.DHCP) ?></label> <?cs call:show_plugin_icon() ?>
</p> <?cs var:html_escape(Lang.Plugins.network.Title.DHCP) ?>
--> </legend>
<?cs call:print_form_header("network_address", "network") ?>
<?cs call:show_help(Lang.Plugins.network.Help.DHCP) ?>
<p>
<input type="checkbox" name="confirm_dhcp" value="1" id="confirm_dhcp"
<?cs if:Data.Plugins.network.dhcp == "use" ?>checked<?cs /if ?>
/>
<label for="confirm_dhcp"><?cs var:html_escape(Lang.Plugins.network.Text.DHCP) ?></label>
</p>
<p>
<input type="hidden" name="store" value="use_dhcp" />
<button type="submit" tabindex="9"><?cs
var:html_escape(Lang.Plugins.network.Button.DHCP) ?></button>
</p>
</form>
</fieldset> </fieldset>

View File

@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: CryptoBox-Server 0.3\n" "Project-Id-Version: CryptoBox-Server 0.3\n"
"Report-Msgid-Bugs-To: translate@cryptobox.org\n" "Report-Msgid-Bugs-To: translate@cryptobox.org\n"
"POT-Creation-Date: 2007-02-07 09:21+0100\n" "POT-Creation-Date: 2007-08-11 23:48+0200\n"
"PO-Revision-Date: 2007-03-29 10:17+0200\n" "PO-Revision-Date: 2007-03-29 10:17+0200\n"
"Last-Translator: Andrzej S. Kaznowski <andrzej@kaznowski.com>\n" "Last-Translator: Andrzej S. Kaznowski <andrzej@kaznowski.com>\n"
"Language-Team: POLSKI <LL@li.org>\n" "Language-Team: POLSKI <LL@li.org>\n"
@ -12,114 +12,114 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Pootle 0.10.1\n" "X-Generator: Pootle 0.10.1\n"
#: : #: Name
msgid "Configure network" msgid "Configure network"
msgstr "Konfiguruj sieć" msgstr "Konfiguruj sieć"
#: : #: Link
msgid "Network" msgid "Network"
msgstr "Sieć" msgstr "Sieć"
#: : #: Title
msgid "Network settings" msgid "Network settings"
msgstr "Ustawienia sieci" msgstr "Ustawienia sieci"
#: : #: Title.IP
msgid "CryptoBox server IP" msgid "CryptoBox server IP"
msgstr "Numer IP serwera CryptoBox" msgstr "Numer IP serwera CryptoBox"
#: : #: Title.GW
msgid "Gateway address" msgid "Gateway address"
msgstr "Adres bramki" msgstr "Adres bramki"
#: : #: Text.IP
msgid "Address" msgid "Address"
msgstr "Adres" msgstr "Adres"
#: : #: Text.NM
msgid "Netmask" msgid "Netmask"
msgstr "Maska sieciowa" msgstr "Maska sieciowa"
#: : #: Text.GW
msgid "Gateway" msgid "Gateway"
msgstr "Bramka" msgstr "Bramka"
#: : #: Text.DHCP
msgid "Automatic configuration (Caution!)" msgid "Automatic configuration (Caution!)"
msgstr "Konfiguruj automatycznie (Uwaga!)" msgstr "Konfiguruj automatycznie (Uwaga!)"
#: : #: Button.Network
msgid "Change server address" msgid "Change server address"
msgstr "Zmień adres serwera" msgstr "Zmień adres serwera"
#: : #: Button.Gateway
msgid "Change default gateway" msgid "Change default gateway"
msgstr "Zmień domyślną bramkę" msgstr "Zmień domyślną bramkę"
#: : #: Help.Network
msgid "Insert the network address of the CryptoBox server, the network mask and the default gateway. Be aware that you may lose your connection to the server under some circumstances. The actual values are visible in the form fields." msgid "Insert the network address of the CryptoBox server, the network mask and the default gateway. Be aware that you may lose your connection to the server under some circumstances. The actual values are visible in the form fields."
msgstr "Wpisz adres sieci serwera CryptoBox, maski sieciowej i domyślnej bramki. Weź pod uwagę, że możesz stracić połączenie z serwerem. Aktualne parametry są domyślnie wyświetlone w polach." msgstr "Wpisz adres sieci serwera CryptoBox, maski sieciowej i domyślnej bramki. Weź pod uwagę, że możesz stracić połączenie z serwerem. Aktualne parametry są domyślnie wyświetlone w polach."
#: : #: Help.Gateway
msgid "If you have a gateway in your LAN and want to make use of it, type it's address in here. It will be added as default route. A quadruple of zeros means, there is no gateway set." msgid "If you have a gateway in your LAN and want to make use of it, type it's address in here. It will be added as default route. A quadruple of zeros means, there is no gateway set."
msgstr "Jeśli masz bramkę w twojej lokalnej sieci i chcesz jej użyć, wpisz jej adres tutaj. Będzie dodany jako domyślna bramka. Cztery zera oznaczają, że nie wpisano żadnej bramki." msgstr "Jeśli masz bramkę w twojej lokalnej sieci i chcesz jej użyć, wpisz jej adres tutaj. Będzie dodany jako domyślna bramka. Cztery zera oznaczają, że nie wpisano żadnej bramki."
#: : #: Help.DHCP
msgid "If you enable automatic network configuration make sure you have a well configured DHCP server running. All values will be overridden by the settings from the DHCP server. If you don't know what DHCP means leave this box unchecked." msgid "If you enable automatic network configuration make sure you have a well configured DHCP server running. All values will be overridden by the settings from the DHCP server. If you don't know what DHCP means leave this box unchecked."
msgstr "Jeśli włączasz automatyczną konfigurację sieci, upewnij się, że twój serwer DHCP działa poprawnie. Wszystkie dane zostaną zastąpione danymi z serwera DHCP. Jeśli nie wiesz, co oznacza DHCP, pozostaw to pole niezaznaczone." msgstr "Jeśli włączasz automatyczną konfigurację sieci, upewnij się, że twój serwer DHCP działa poprawnie. Wszystkie dane zostaną zastąpione danymi z serwera DHCP. Jeśli nie wiesz, co oznacza DHCP, pozostaw to pole niezaznaczone."
#: : #: WarningMessage.AddressChangeFailed.Title
msgid "Failure" msgid "Failure"
msgstr "Błąd" msgstr "Błąd"
#: : #: WarningMessage.AddressChangeFailed.Text
msgid "The address of the CryptoBox server could not be changed." msgid "The address of the CryptoBox server could not be changed."
msgstr "Nie można zmienić adresu serwera CryptoBox." msgstr "Nie można zmienić adresu serwera CryptoBox."
#: : #: WarningMessage.GatewayChangeFailed.Text
msgid "The gateway of the CryptoBox server could not be set. Maybe the address you entered is unreachable?" msgid "The gateway of the CryptoBox server could not be set. Maybe the address you entered is unreachable?"
msgstr "Nie można ustlić bramki serwera CryptoBox. Może wpisany przez ciebie adres jest niedostępny." msgstr "Nie można ustlić bramki serwera CryptoBox. Może wpisany przez ciebie adres jest niedostępny."
#: : #: WarningMessage.InvalidServerIP.Title
msgid "Invalid value" msgid "Invalid value"
msgstr "Nieprawidłowe dane" msgstr "Nieprawidłowe dane"
#: : #: WarningMessage.InvalidServerIP.Text
msgid "The server address is not valid." msgid "The server address is not valid."
msgstr "Nieprawidłowy adres serwera." msgstr "Nieprawidłowy adres serwera."
#: : #: WarningMessage.InvalidNetmask.Text
msgid "The netmask is not valid." msgid "The netmask is not valid."
msgstr "Nieprawidłowa maska sieciowa." msgstr "Nieprawidłowa maska sieciowa."
#: : #: WarningMessage.InvalidGatewayIP.Text
msgid "The gateway address is not valid." msgid "The gateway address is not valid."
msgstr "Nieprawidłowy adres bramki." msgstr "Nieprawidłowy adres bramki."
#: : #: SuccessMessage.IPChanged.Title
msgid "Network address changed" msgid "Network address changed"
msgstr "Zmieniono adres sieciowy" msgstr "Zmieniono adres sieciowy"
#: : #: SuccessMessage.IPChanged.Text
msgid "The network address has been changed. In a few seconds you will get redirected to the new address." msgid "The network address has been changed. In a few seconds you will get redirected to the new address."
msgstr "Zmieniono adres sieciowy. Za chwilę zostaniesz przekierowany na nowy adres." msgstr "Zmieniono adres sieciowy. Za chwilę zostaniesz przekierowany na nowy adres."
#: : #: SuccessMessage.GWChanged.Title
msgid "Gateway address changed" msgid "Gateway address changed"
msgstr "Zmieniono adres bramki" msgstr "Zmieniono adres bramki"
#: : #: SuccessMessage.GWChanged.Text
msgid "The gateway was added to your default route." msgid "The gateway was added to your default route."
msgstr "Dodano bramkę do domyślnej trasy." msgstr "Dodano bramkę do domyślnej trasy."
#: : #: EnvironmentWarning.MissingProgramIfconfig.Title
msgid "Missing program" msgid "Missing program"
msgstr "Brak programu" msgstr "Brak programu"
#: : #: EnvironmentWarning.MissingProgramIfconfig.Text
msgid "The 'ifconfig' program is not installed. Please ask the administrator of the CryptoBox server to configure it properly." msgid "The 'ifconfig' program is not installed. Please ask the administrator of the CryptoBox server to configure it properly."
msgstr "Program 'ifconfig' nie jest instalowany. Proszę zwrócić się do administratora serwera CryptoBox, aby prawidłowo skonfigurał go." msgstr "Program 'ifconfig' nie jest instalowany. Proszę zwrócić się do administratora serwera CryptoBox, aby prawidłowo skonfigurał go."
#: : #: EnvironmentWarning.MissingProgramRoute.Text
msgid "The 'route' program is not installed. Please ask the administrator of the CryptoBox server to configure it properly." msgid "The 'route' program is not installed. Please ask the administrator of the CryptoBox server to configure it properly."
msgstr "Program 'route' nie jest instalowany. Proszę zwrócić się do administratora serwera CryptoBox, aby prawidłowo skonfigurał go." msgstr "Program 'route' nie jest instalowany. Proszę zwrócić się do administratora serwera CryptoBox, aby prawidłowo skonfigurał go."

View File

@ -5,16 +5,18 @@ Title = Network settings
Title { Title {
IP = CryptoBox server IP IP = CryptoBox server IP
GW = Gateway address GW = Gateway address
DHCP = DHCP network configuration
} }
Text { Text {
IP = Address IP = Address
NM = Netmask NM = Netmask
GW = Gateway GW = Gateway
DHCP = Automatic configuration (Caution!) DHCP = Configure the network interface automatically (Caution, please read help!)
} }
Button { Button {
DHCP = Recieve network settings
Network = Change server address Network = Change server address
Gateway = Change default gateway Gateway = Change default gateway
} }
@ -22,7 +24,7 @@ Button {
Help { Help {
Network = Insert the network address of the CryptoBox server, the network mask and the default gateway. Be aware that you may lose your connection to the server under some circumstances. The actual values are visible in the form fields. Network = Insert the network address of the CryptoBox server, the network mask and the default gateway. Be aware that you may lose your connection to the server under some circumstances. The actual values are visible in the form fields.
Gateway = If you have a gateway in your LAN and want to make use of it, type it's address in here. It will be added as default route. A quadruple of zeros means, there is no gateway set. Gateway = If you have a gateway in your LAN and want to make use of it, type it's address in here. It will be added as default route. A quadruple of zeros means, there is no gateway set.
DHCP = If you enable automatic network configuration make sure you have a well configured DHCP server running. All values will be overridden by the settings from the DHCP server. If you don't know what DHCP means leave this box unchecked. DHCP = If you enable automatic network configuration make sure you have a well configured DHCP server running. All former network settings will be overridden by the settings from the DHCP server. Remember you need to know which network address the CryptoBox will recieve, otherwise you won't know where to connect to. If you don't know what DHCP means leave this box unchecked.
} }
WarningMessage { WarningMessage {
@ -50,6 +52,19 @@ WarningMessage {
Title = Invalid value Title = Invalid value
Text = The gateway address is not valid. Text = The gateway address is not valid.
} }
DHCPNotConfirmed {
Title = Confirmation missing
Text = If you really want to use DHCP, please confirm by activating the checkbox.
}
DHCPNotRunning {
Title = DHCP Failure
Text = The network settings couldn't be recieved.
}
DHCPNotFound {
Title = DHCP program missing
Text = The 'dhclient' program is not installed. Please ask the administrator of the CryptoBox server to install it.
}
} }
SuccessMessage { SuccessMessage {
@ -61,6 +76,10 @@ SuccessMessage {
Title = Gateway address changed Title = Gateway address changed
Text = The gateway was added to your default route. Text = The gateway was added to your default route.
} }
DHCPRunning {
Title = Recieving network settings
Text = In a few seconds you can connect to the address provided by dhcp.
}
} }
EnvironmentWarning { EnvironmentWarning {
@ -68,16 +87,9 @@ EnvironmentWarning {
Title = Missing program Title = Missing program
Text = The 'ifconfig' program is not installed. Please ask the administrator of the CryptoBox server to install it. Text = The 'ifconfig' program is not installed. Please ask the administrator of the CryptoBox server to install it.
} }
MissingProgramIfconfig {
Title = Missing program
Text = The 'ifconfig' program is not installed. Please ask the administrator of the CryptoBox server to configure it properly.
}
MissingProgramRoute { MissingProgramRoute {
Title = Missing program Title = Missing program
Text = The 'route' program is not installed. Please ask the administrator of the CryptoBox server to configure it properly. Text = The 'route' program is not installed. Please ask the administrator of the CryptoBox server to install it.
} }
} }

View File

@ -48,7 +48,7 @@ class network(cryptobox.plugins.base.CryptoBoxPlugin):
rank = 30 rank = 30
def do_action(self, store=None, redirected="", ip1="", ip2="", ip3="", ip4="", def do_action(self, store=None, redirected="", ip1="", ip2="", ip3="", ip4="",
nm1="", nm2="", nm3="", nm4=""): nm1="", nm2="", nm3="", nm4="", confirm_dhcp=""):
"""Show a form containing the current IP - change it if requested. """Show a form containing the current IP - change it if requested.
""" """
## if we were redirected, then we should display the default page ## if we were redirected, then we should display the default page
@ -85,6 +85,9 @@ class network(cryptobox.plugins.base.CryptoBoxPlugin):
self.hdf["Data.Redirect.Delay"] = REDIRECT_DELAY self.hdf["Data.Redirect.Delay"] = REDIRECT_DELAY
self.prefs["_address"] = new_ip self.prefs["_address"] = new_ip
self.prefs["_netmask"] = new_nm self.prefs["_netmask"] = new_nm
## if an ip is set manually, don't use dhcp any longer
if self.prefs.has_key("_dhcp"):
del self.prefs["_dhcp"]
try: try:
self.cbox.prefs.plugin_conf.write() self.cbox.prefs.plugin_conf.write()
except IOError: except IOError:
@ -113,6 +116,9 @@ class network(cryptobox.plugins.base.CryptoBoxPlugin):
+ new_gw_str) + new_gw_str)
self.hdf["Data.Success"] = "Plugins.network.GWChanged" self.hdf["Data.Success"] = "Plugins.network.GWChanged"
self.prefs["_gateway"] = new_gw_str self.prefs["_gateway"] = new_gw_str
## if an gw is set manually, don't use dhcp any longer
if self.prefs.has_key("_dhcp"):
del self.prefs["_dhcp"]
try: try:
self.cbox.prefs.plugin_conf.write() self.cbox.prefs.plugin_conf.write()
except IOError: except IOError:
@ -123,6 +129,28 @@ class network(cryptobox.plugins.base.CryptoBoxPlugin):
self.hdf["Data.Warning"] = "Plugins.network.GatewayChangeFailed" self.hdf["Data.Warning"] = "Plugins.network.GatewayChangeFailed"
self.__prepare_form_data() self.__prepare_form_data()
return "form_network" return "form_network"
## request for dhcp usage
elif store == "use_dhcp":
if confirm_dhcp != "1":
## do nothing as the action was not confirmed with the checkbox
self.hdf["Data.Warning"] = "Plugins.network.DHCPNotConfirmed"
self.__prepare_form_data()
return "form_network"
else:
self.cbox.log.info( "[network] recieve network settings via DHCP")
if not os.path.isfile(self.root_action.DHCLIENT_BIN):
self.hdf["Data.Warning"] = "Plugins.network.DHCPNotFound"
elif self.__use_dhcp():
self.hdf["Data.Success"] = "Plugins.network.DHCPRunning"
self.prefs["_dhcp"] = "use"
try:
self.cbox.prefs.plugin_conf.write()
except IOError:
self.cbox.log.warn("Could not write plugin configuration")
else:
self.hdf["Data.Warning"] = "Plugins.network.DHCPNotRunning"
self.__prepare_form_data()
return "form_network"
else: else:
## invalid action was requested -> show default form ## invalid action was requested -> show default form
self.cbox.log.debug("network plugin: invalid request (%s)" % str(store)) self.cbox.log.debug("network plugin: invalid request (%s)" % str(store))
@ -176,6 +204,7 @@ class network(cryptobox.plugins.base.CryptoBoxPlugin):
dest = "%s://%s" % (base_parts[0], ip) dest = "%s://%s" % (base_parts[0], ip)
if len(base_parts) == 3: if len(base_parts) == 3:
dest += ":%s" % base_parts[2] dest += ":%s" % base_parts[2]
dest += "/network"
return dest return dest
@ -198,6 +227,8 @@ class network(cryptobox.plugins.base.CryptoBoxPlugin):
self.hdf[self.hdf_prefix + "gw.oc2"] = oc2 self.hdf[self.hdf_prefix + "gw.oc2"] = oc2
self.hdf[self.hdf_prefix + "gw.oc3"] = oc3 self.hdf[self.hdf_prefix + "gw.oc3"] = oc3
self.hdf[self.hdf_prefix + "gw.oc4"] = oc4 self.hdf[self.hdf_prefix + "gw.oc4"] = oc4
if self.prefs.has_key("_dhcp"):
self.hdf[self.hdf_prefix + "dhcp"] = str(self.prefs["_dhcp"])
def __get_current_ip(self, address_type="ip"): def __get_current_ip(self, address_type="ip"):
@ -357,3 +388,22 @@ class network(cryptobox.plugins.base.CryptoBoxPlugin):
return False return False
return True return True
def __use_dhcp(self):
"""Try to recieve network settings via dhcp
"""
proc = subprocess.Popen(
shell = False,
stderr = subprocess.PIPE,
args = [
self.cbox.prefs["Programs"]["super"],
self.cbox.prefs["Programs"]["CryptoBoxRootActions"],
"plugin",
os.path.join(self.plugin_dir, "root_action.py"),
"use_dhcp",
self.__get_interface() ])
proc.wait()
if proc.returncode != 0:
self.cbox.log.warn("failed to recieve IP address via DHCP")
self.cbox.log.warn("error output: %s" % str(proc.stderr.read()))
return True

View File

@ -27,6 +27,7 @@ PLUGIN_TYPE = "cryptobox"
IFCONFIG_BIN = "/sbin/ifconfig" IFCONFIG_BIN = "/sbin/ifconfig"
ROUTE_BIN = "/sbin/route" ROUTE_BIN = "/sbin/route"
DHCLIENT_BIN = "/sbin/dhclient"
import subprocess import subprocess
import re import re
@ -77,6 +78,14 @@ def __check_address(address):
sys.exit(1) sys.exit(1)
return return
def __use_DHCP(interface):
"""Recieve network settings via dhcp
"""
proc = subprocess.Popen(
shell = False,
args = [DHCLIENT_BIN, interface])
proc.wait()
if __name__ == "__main__": if __name__ == "__main__":
args = sys.argv[1:] args = sys.argv[1:]
@ -94,6 +103,9 @@ if __name__ == "__main__":
elif args[0] == "change_gw": elif args[0] == "change_gw":
if len(args) != 3: raise "InvalidArgNum" if len(args) != 3: raise "InvalidArgNum"
result = __changeGW(args[1], args[2]) result = __changeGW(args[1], args[2])
elif args[0] == "use_dhcp":
if len(args) != 2: raise "InvalidArgNum"
result = __use_DHCP(args[1])
else: else:
sys.stderr.write("%s: invalid action (%s)\n" % (self_bin, args[0])) sys.stderr.write("%s: invalid action (%s)\n" % (self_bin, args[0]))
sys.exit(1) sys.exit(1)