Author: eelco
Date: Wed Apr 27 14:03:46 2011
New Revision: 26995
URL: https://svn.nixos.org/websvn/nix/?rev=26995&sc=1

Log:
* gw6c: don't depend on the services tree.

Added:
   nixos/trunk/modules/services/networking/gw6c/
   nixos/trunk/modules/services/networking/gw6c/control.in
      - copied unchanged from r26993, services/trunk/gw6c/control.in
   nixos/trunk/modules/services/networking/gw6c/default.nix
      - copied, changed from r26990, 
nixos/trunk/modules/services/networking/gw6c.nix
   nixos/trunk/modules/services/networking/gw6c/gw6c.conf
      - copied unchanged from r26993, services/trunk/gw6c/gw6c.conf
Deleted:
   nixos/trunk/modules/services/networking/gw6c.nix
Modified:
   nixos/trunk/modules/module-list.nix

Modified: nixos/trunk/modules/module-list.nix
==============================================================================
--- nixos/trunk/modules/module-list.nix Wed Apr 27 14:03:06 2011        (r26994)
+++ nixos/trunk/modules/module-list.nix Wed Apr 27 14:03:46 2011        (r26995)
@@ -101,7 +101,7 @@
   ./services/networking/git-daemon.nix
   ./services/networking/gnunet.nix
   ./services/networking/gvpe.nix
-  ./services/networking/gw6c.nix
+  ./services/networking/gw6c/default.nix
   ./services/networking/ifplugd.nix
   #./services/networking/ircd-hybrid.nix
   ./services/networking/nat.nix

Copied: nixos/trunk/modules/services/networking/gw6c/control.in (from r26993, 
services/trunk/gw6c/control.in)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ nixos/trunk/modules/services/networking/gw6c/control.in     Wed Apr 27 
14:03:46 2011        (r26995, copy of r26993, services/trunk/gw6c/control.in)
@@ -0,0 +1,42 @@
+#! @shell@ -e
+
+# Make sure that the environment is deterministic.
+export PATH=@coreutils@/bin
+export 
PATH=@coreutils@/bin:@gnugrep@/bin:@gnused@/bin:@iputils@/bin:@iputils@/sbin:@procps@/bin:@seccure@/bin
+export BASEDIR=$(dirname $(dirname $0))
+
+       mkdir /tmp/.gw6c || true
+       touch /tmp/.gw6c/gw6c.conf
+       chmod 0700 /tmp/.gw6c
+       chmod 0700 /tmp/.gw6c/gw6c.conf
+       seccure-decrypt -F @privkey@ -i $BASEDIR/conf/gw6c.conf > 
/tmp/.gw6c/gw6c.conf
+
+stop ()
+{
+       pkill gw6c
+}
+
+ln -s /dev/net/tun /dev/tun || true;
+
+if test "$1" = "start"; then
+       trap 'stop ; exit ' 15
+
+       if test -n "@pingBefore@"; then while ! @iputils@/bin/ping @gw6server@ 
-c1 -w1 ; do sleep 1; done; fi
+    cd /tmp/.gw6c
+        @coreutils@/bin/yes |       \
+    env - HOME=/tmp/.gw6c $extraEnv \
+       @gw6c@/bin/gw6c -f /tmp/.gw6c/gw6c.conf 2>&1 >/var/log/gw6c.out
+    while @procps@/bin/pgrep gw6c; do 
+       sleep @everPing@; 
+       @iputils@/sbin/traceroute6 $( @coreutils@/bin/cat /var/log/gw6c.log  |
+                @gnugrep@/bin/grep peer |
+                @gnused@/bin/sed -e 's/.*with //; s/ .*//' |
+                @coreutils@/bin/head -1) &
+    done;
+       pkill gw6c; 
+       exit
+fi
+
+if test "$1" = "stop"; then
+       env - HOME=/homeless-shelter @procps@/bin/pkill gw6c;
+fi;

Copied and modified: nixos/trunk/modules/services/networking/gw6c/default.nix 
(from r26990, nixos/trunk/modules/services/networking/gw6c.nix)
==============================================================================
--- nixos/trunk/modules/services/networking/gw6c.nix    Wed Apr 27 13:16:33 
2011        (r26990, copy source)
+++ nixos/trunk/modules/services/networking/gw6c/default.nix    Wed Apr 27 
14:03:46 2011        (r26995)
@@ -6,21 +6,37 @@
 
   cfg = config.services.gw6c;
 
-  # !!! Move this from the services tree to the nixos tree.
-  gw6cService = import /etc/nixos/services/gw6c {
-    inherit (pkgs) stdenv gw6c coreutils 
-      procps iputils gnused 
-      gnugrep seccure writeScript;
-    upstart = config.system.build.upstart;
-    username = cfg.username;
-    password = cfg.password;
-    server = cfg.server;
-    keepAlive = cfg.keepAlive;
-    everPing = cfg.everPing;
-    seccureKeys = config.security.seccureKeys;
-    waitPingableBroker = cfg.waitPingableBroker;
+  gw6cService = pkgs.stdenv.mkDerivation {
+    name = "gw6c-service";
+    inherit (pkgs) gw6c coreutils procps upstart iputils gnused gnugrep 
seccure;
+
+    inherit (cfg) username password keepAlive everPing;
+
+    gw6server = cfg.server;
+    authMethod = if cfg.username == "" then "anonymous" else "any";
+    gw6dir = pkgs.gw6c;
+
+    pingBefore = if cfg.waitPingableBroker then "true" else "";
+
+    pubkey = config.security.seccureKeys.public;
+    privkey = config.security.seccureKeys.private;
+
+    buildCommand =
+      ''
+        mkdir -p $out/bin $out/conf
+
+        mkdir conf
+        chmod 0700 conf
+        touch conf/raw
+        chmod 0700 conf/raw
+
+        substituteAll ${./gw6c.conf} conf/raw
+        $seccure/bin/seccure-encrypt "$(cat $pubkey)" -i conf/raw -o 
$out/conf/gw6c.conf
+        substituteAll ${./control.in} $out/bin/control
+        chmod a+x $out/bin/control
+      '';
   };
-  
+
 in
 
 {

Copied: nixos/trunk/modules/services/networking/gw6c/gw6c.conf (from r26993, 
services/trunk/gw6c/gw6c.conf)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ nixos/trunk/modules/services/networking/gw6c/gw6c.conf      Wed Apr 27 
14:03:46 2011        (r26995, copy of r26993, services/trunk/gw6c/gw6c.conf)
@@ -0,0 +1,338 @@
+#-----------------------------------------------------------------------------
+# $Id: gw6c.conf.in,v 1.5 2007/05/09 13:41:32 cnepveu Exp $
+#-----------------------------------------------------------------------------
+
+##########################      READ ME!      ################################
+#
+# Welcome to the Gateway6 Client configuration file.
+# In order to use the client, you need to modify the 'userid', 'passwd' and 
+# 'server' parameters below depending on which of these situations applies:
+# 
+# 1. If you created a Freenet6 account, enter your userid and password below. 
+#    Change the server name to "broker.freenet6.net" and auth_method to 'any'.
+# 2. If you would like to use Freenet6 without creating an account, 
+#    do not make any modifications and close this file. 
+# 3. If this software was provided by your ISP, enter the userid, password and 
+#    server name provided by your ISP below. 
+#
+
+
+########################## BASIC CONFIGURATION ################################
+
+#
+# User Identification and Password:
+#   Specify your user name and password as provided by your ISP or Freenet6.
+#   If you plan to connect anonymously, leave these values empty.
+#   NOTE: Change auth_method option if you are using a username/password.
+#
+#   userid=<your_userid>
+#   passwd=<your_password>
+#
+userid=@username@ 
+passwd=@password@ 
+
+
+#
+# Gateway6 Server:
+#   Specify a Gateway6 server name or IP address (provided by your ISP or 
+#   Freenet6). An optional port number can be added; the default port number 
+#   is 3653.
+#  
+#   Examples:
+#     server=hostname # FQDN
+#     server=A.B.C.D  # IPv4 address
+#     server=[X:X::X:X] # IPv6 address
+#     server=hostname:port_number  
+#     server=A.B.C.D:port_number
+#     server=[X:X::X:X]:port_number
+#
+#   Freenet6 account holders should enter broker.freenet6.net, otherwise use
+#   anon.freenet6.net. Your ISP may provide you with a different server name. 
+#
+#server=anon.freenet6.net
+#server=broker.freenet6.net
+#server=broker.aarnet.net.au
+server=@gw6server@
+
+#
+# Authentication Method:
+#
+#  auth_method=<{anonymous}|{any|passdss-3des-1|digest-md5|plain}>
+#
+#   anonymous:      Sends no username or password
+#
+#   any:            The most secure method will be used. 
+#   passdss-3des-1: The password is sent encrypted.
+#   digest-md5:     The password is sent encrypted.
+#   plain:          Both username and password are sent as plain text.
+#
+# Recommended values:
+#   - any:          If you are authenticating a username / password.
+#   - anonymous:    If you are connecting anonymously.
+#
+#auth_method=anonymous
+#auth_method=any
+auth_method=@authMethod@
+
+
+########################## ROUTING CONFIGURATION ##############################
+# Use these parameters when you wish the client to act as a router and provide 
+# IPv6 connectivity to IPv6-capable devices on your network.
+
+#
+# Local Host Type:
+#   Change this value to 'router' to enable IPv6 advertisements.
+#
+#   host_type=<host|router>
+#
+host_type=host
+
+#
+# Prefix Length:
+#   Length of the requested prefix. Valid values range between 0 and 64 when 
+#   using V6*V4 tunnel modes, and between 0 and 32 when using V4V6 tunnel mode.
+#
+#   prefixlen=<integer>
+#
+prefixlen=64
+
+#
+# Advertisement Interface Prefix:
+#   Name of the interface that will be configured to send router 
advertisements. 
+#   This is an interface index on Windows (ex: 4) and a name on Linux
+#   and BSD (ex: eth1 or fxp1). 
+#
+#   if_prefix=<interface name>
+#
+if_prefix=
+
+#
+# DNS Server: 
+#   A DNS server list to which the reverse prefix will be delegated. Servers
+#   are separated by the colon(:) delimiter.
+#
+#   Example: dns_server=ns1.domain:ns2.domain:ns3.domain
+#
+dns_server=
+
+
+######################### ADVANCED CONFIGURATION ##############################
+
+#
+# Gateway6 Client Installation Directory:
+#   Directory where the Gateway6 Client will be installed. This value has been 
+#   set during installation.
+#
+gw6_dir=@gw6dir@
+
+#
+# Auto-Retry Connect and Delay:
+#   The time lapse, in seconds, between each reconnection in the case of a 
+#   timeout.
+#
+#   auto_retry_connect=<yes|no>
+#   retry_delay=<integer>
+#
+#   Recommended values: "yes" and 30
+#
+auto_retry_connect=yes
+retry_delay=5
+
+#
+# Keepalive Feature and Message Interval:
+#   Indicates if and how often the client will send data to keep the tunnel 
+#   active.
+#
+#   keepalive=<yes|no>
+#   keepalive_interval=<integer>
+#
+#   Recommended values: "yes" and 30
+#
+keepalive=yes
+keepalive_interval=@keepAlive@
+
+#
+# Tunnel Encapsulation Mode:
+#   v6v4:    IPv6-in-IPv4 tunnel.
+#   v6udpv4: IPv6-in-UDP-in-IPv4 tunnel (for clients behind a NAT).
+#   v6anyv4: Lets the broker choose the best mode for IPv6 tunnel.
+#   v4v6:    IPv4-in-IPv6 tunnel.
+#
+#   Recommended value: v6anyv4
+#
+tunnel_mode=v6anyv4
+
+#
+# Tunnel Interface Name:
+#   The interface name assigned to the tunnel. This value is O/S dependent.
+#
+#   if_tunnel_v6v4 is the tunnel interface name for v6v4 encapsulation mode
+#   if_tunnel_v6udpv4 is the tunnel interface name for v6udpv4 encapsulate mode
+#   if_tunnel_v4v6 is the tunnel interface name for v4v6 encapsulation mode
+#
+#   Default values are set during installation.
+#
+if_tunnel_v6v4=sit1
+if_tunnel_v6udpv4=tun
+if_tunnel_v4v6=sit0
+
+#
+# Local IP Address of the Client:
+#   Allows you to set a specific address as the local tunnel endpoint.
+#
+#   client_v4=<auto|A.B.C.D (valid ipv4 address)>
+#   client_v6=<auto|X:X::X:X (valid ipv6 address)>
+#     auto: The Gateway6 Client will find the local IP address endpoint.
+#
+#   Recommended value: auto
+#
+client_v4=auto
+client_v6=auto
+
+#
+# Script Name:
+#   File name of the script to run to install the tunnel interface. The 
+#   scripts are located in the template directory under the client 
+#   installation directory. 
+#
+#   
template=<checktunnel|freebsd|netbsd|openbsd|linux|windows|darwin|cisco|solaris>
+#
+#   Default value is set during installation.
+# 
+template=linux
+
+#
+# Proxy client: 
+#   Indicates that this client will request a tunnel for another endpoint, 
+#   such as a Cisco router. 
+#
+#   proxy_client=<yes|no>
+#
+#   NOTE: NAT traversal is not possible in proxy mode. 
+#
+proxy_client=no
+
+
+############################ BROKER REDIRECTION ###############################
+
+#
+# Broker List File Name:
+#   The 'broker_list' directive specifies the filename where the broker
+#   list received during broker redirection will be saved. 
+#
+#   broker_list=<file_name>
+#  
+broker_list=/tmp/tsp-broker-list.txt
+
+#
+# Last Server Used File Name:
+#   The 'last_server' directive specifies the filename where the address of
+#   the last broker to which a connection was successfully established will 
+#   be saved.
+#
+#   last_server=<file_name>
+#
+last_server=/tmp/tsp-last-server.txt
+
+#
+# Always Use Last Known Working Server:
+#   The value of the 'always_use_same_server' directive determines whether the 
+#   client should always try to connect to the broker found in the 
+#   'last_server' directive filename. 
+#
+#   always_use_same_server=<yes|no>
+#
+always_use_same_server=no
+
+
+#################################### LOGGING ##################################
+
+#
+# Log Verbosity Configuration:
+#   The format is 'log_<destination>=level', where possible values for 
+#   'destination' are:
+#
+#   - console  (logging to the console [AKA stdout])
+#   - stderr   (logging to standard error)
+#   - file     (logging to a file)
+#   - syslog   (logging to syslog [Unix only])
+#
+#   and 'level' is a digit between 0 and 3. A 'level' value of 0 disables 
+#   logging to the destination, while values 1 to 3 request increasing levels 
+#   of log verbosity and detail. If 'level' is not specified, a value of 1 is 
+#   assumed.
+#
+#   Example:
+#     log_file=3   (Maximal logging to a file)
+#     log_stderr=0 (Logging to standard error disabled)
+#     log_console= (Minimal logging to the console) 
+#
+#   - Default configuration on Windows platforms:
+#
+#     log_console=0
+#     log_stderr=0
+#     log_file=1
+#
+#   - Default configuration on Unix platforms:
+#
+#     log_console=0
+#     log_stderr=1
+#     log_file=0
+#     log_syslog=0
+#
+#log_console=
+#log_stderr=
+#log_file=
+#log_syslog=
+log_file=3
+
+#
+# Log File Name:
+#   When logging to file is requested using the 'log_file' directive, the name
+#   and path of the file to use may be specified using this directive.
+#
+#   log_filename=<file_name>
+#
+log_filename=/var/log/gw6c.log
+
+#
+# Log File Rotation:
+#   When logging to file is requested using the 'log_file' directive, log file 
+#   rotation may be enabled. When enabled, the contents of the log file will 
+#   be moved to a backup file just before it reaches the maximum log file size 
+#   specified via this directive.
+#
+#   The name of the backup file is the name of the original log file with 
+#   '.<timestamp>' inserted before the file extension. If the file does not 
+#   have an extension, '.<timestamp>' is appended to the name of the original
+#   log file. The timestamp specifies when the rotation occurred.
+#
+#   After the contents of the log file have been moved to the backup file, the 
+#   original file is cleared, and logging resumes at the beginning of the 
file. 
+#
+#   log_rotation=<yes|no>
+#
+log_rotation=yes
+
+#
+# Log File Rotation Size:
+#   The 'log_rotation_size' directive specifies the maximum size a log file 
may 
+#   reach before rotation occurs, if enabled. The value is expressed in 
+#   kilobytes.
+#
+#   log_rotation_size=<16|32|128|1024>
+#
+log_rotation_size=32
+
+#
+# Syslog Logging Facility [Unix Only]:
+#   When logging to syslog is requested using the 'log_syslog' directive, the 
+#   facility to use may be specified using this directive.
+#
+#   syslog_facility=<USER|LOCAL[0-7]>
+#
+syslog_facility=USER
+
+
+# end of gw6c.conf
+#------------------------------------------------------------------------------
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to