Update of /cvsroot/leaf/src/config/webconf/var/webconf/lib
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv5209

Added Files:
        ipsec.func 
Log Message:
Initial version


--- NEW FILE: ipsec.func ---
#!/bin/sh
#
# Copyleft 2009 Erich Titl ([email protected])
#
# This program 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) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
#
# This program 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.
#
# $Id: ipsec.func,v 1.1 2009/06/10 06:49:26 etitl Exp $
#

IP=/sbin/ip
GREP=/bin/grep
SED=/bin/sed

IPSEC_DIR=/etc/ipsec.d
CERT_DIR=$IPSEC_DIR/certs
CACERT_DIR=$IPSEC_DIR/cacerts
CRL_DIR=$IPSEC_DIR/crls
KEY_DIR=$IPSEC_DIR/private
TEMPLATE_DIR=/var/webconf/templates

SECRETS_FILE=/etc/ipsec.secrets
IPSEC_CONFIG_FILE=/etc/ipsec.conf
CONNECTION_DIR=$IPSEC_DIR/connections
CONTROL_TEMPLATE=$TEMPLATE_DIR/ipsec
SECRETS_TEMPLATE=$TEMPLATE_DIR/ipsec.secrets
IPSEC_CMD="/usr/sbin/ipsec auto"

# *Swan IPSEC  acronyms
# DH groups
DHGROUPS="DH2 DH5 DH14 DH15 DH16 DH17 DH18"
DH2=modp1024
DH5=modp1536
DH14=modp2048
DH15=modp3072
DH16=modp4096
DH17=modp6144
DH18=modp8192

# ciphers
CIPHERS="AES AES256 3DES"
AES=aes
AES256=aes256
TRIPLEDES=3des

SHA1=sha1
MD5=md5

DEBUG="1" 

TEMP_CONTROL=/tmp/`basename $0`$$

. /var/webconf/lib/networking.func

init_ipsec_values(){
        [ $# -lt 1 -o ! -s $1 ] && return 
        $SED -n -e "s/\"//g; s/^[^#]\W*\b\(\w*=\)\(.*\)\b.*$/CONFIG_\1'\2'/p" < 
$1 > $TEMP_CONTROL
        . $TEMP_CONTROL
        rm $TEMP_CONTROL
        parse_ike
        parse_esp
}

parse_ike()
{
        echo CONFIG_ike_cipher=`echo $CONFIG_ike | cut -f 1 -d'-'` > 
$TEMP_CONTROL
        echo CONFIG_ike_hash=`echo $CONFIG_ike | cut -f 2 -d'-'` >> 
$TEMP_CONTROL
        TMP_dhgroup=`echo $CONFIG_ike | cut -f 3 -d'-'`
        [ "X$TMP_dhgroup" != "X" ] && TMP_dhgroup=`transform_dh $TMP_dhgroup`
        [ "X$TMP_dhgroup" != "X" ] && CONFIG_ike_dh=$TMP_dhgroup >> 
$TEMP_CONTROL
        . $TEMP_CONTROL
        rm $TEMP_CONTROL
}

assemble_ike()
{
        result=""
        for i in 1 2 3
        do
                value=`eval echo \\$$i`
                [ "$value" = 3DES ] && value=TRIPLEDES
                [ "$value" = "" ] && break
                value=`eval echo \\$$value`
                [ $i -gt 1 -a "$value" != "" ] && result=$result-  
                result=$result$value
        done
        echo $result
}

parse_esp()
{
        echo CONFIG_esp_cipher=`echo $CONFIG_esp | cut -f 1 -d'-'` > 
$TEMP_CONTROL
        echo CONFIG_esp_hash=`echo $CONFIG_esp | cut -f 2 -d'-'` >> 
$TEMP_CONTROL
        . $TEMP_CONTROL
        rm $TEMP_CONTROL
}

assemble_esp()
{
        result=""
        for i in 1 2
        do
                value=`eval echo \\$$i`
                [ "$value" = 3DES ] && value=TRIPLEDES
                [ "$value" = "" ] && break
                value=`eval echo \\$$value`
                [ $i -gt 1 -a "$value" != "" ] && result=$result-  
                result=$result$value
        done
        echo $result
}

transform_dh()
{
        for i in $DHGROUPS
        do
                value=`eval echo \\$$i`
                [ "X$value" = "X$1"  ] && echo $i 
        done
}

transform_modp()
{
        [ $# -lt 1 ] && return  
        modp=`eval echo \\$$1`
        echo $modp
}

get_leftcert() {
        [ $# -gt 0 ] && $GREP leftcert $1 | $SED -e 's/.*=\([^ ]*\).*/\1/'
}

get_key_file_name() {
        [ $# -gt 0 ] && $GREP "^: RSA" $SECRETS_FILE | tail -1 | $SED -e 
's/^.*RSA \([^ ]*\).*/\1/'
}

get_local_interface_from_ipsec() {
        subnet=`echo $LEFTSUBNET | $SED -e 's/.*=\([0-9.]*\).*/\1/'`
        get_interface_for_addr $subnet
}

get_local_subnet_from_ipsec() {
        interface=`get_local_interface_from_ipsec`
        address=`get_interface_address $interface`
        echo $address
}

list_connections(){
        for i in `ls $CONNECTION_DIR`
        do
                $SED -n -e 's/^conn\W*\(\w*\).*$/\1/p' < $CONNECTION_DIR/$i
        done 
}

is_active_connection() {
        [ $# -gt 0 ] && $GREP "^include\W*$CONNECTION_DIR/$1$" 
$IPSEC_CONFIG_FILE > /dev/null
}

get_psk(){
        [ -z "$CONFIG_rightid" ] && rightid=$CONFIG_right
        [ -n "$rightid" ] && $SED -n -e "s/^$rightid.*PSK.*\"\(.*\)\".*$/\1/p" 
< $SECRETS_FILE 
}

replace_psk(){
        [ -z $CONFIG_rightid ] && rightid=$CONFIG_right
        [ -n $rightid ] && $SED -e 
"s/^\($rightid.*PSK.*\)\"\(.*\)\".*$/\1\"$1\"/" < $SECRETS_FILE $TEMP_CONTROL
        mv  $TEMP_CONTROL $SECRETS_FILE
}

delete_psk(){
        [ $DEBUG ] && echo "delete_psk rightid=$rightid 
CONFIG_right=$CONFIG_right"
        [ -z "$CONFIG_rightid" ] && rightid=$CONFIG_right
        psk_is_still_needed "$rightid" && return
        [ -n $rightid ] && $GREP -v "^[^#]*.*$rightid.*PSK.*\".*\".*$" < 
$SECRETS_FILE > $TEMP_CONTROL
        mv  $TEMP_CONTROL $SECRETS_FILE
}

add_psk(){
        [ -z $CONFIG_rightid ] && rightid=$CONFIG_right
        [ -z $CONFIG_leftid ] && leftid=$CONFIG_left
        if [ "$leftid" = "%defaultroute" -o "X$leftid" = "X" ]; then
                gateway_interface=`get_gateway_interface`
                leftid=`get_interface_address $gateway_interface`
        fi
        cp $SECRETS_FILE $TEMP_CONTROL
        echo $rightid $leftid: PSK \"$1\"  >> $TEMP_CONTROL
        mv  $TEMP_CONTROL $SECRETS_FILE
}

psk_is_still_needed(){
        [ $# -lt 1 ] && true && return 
        for i in `list_connections`
        do
                $GREP right=$1 $CONNECTION_DIR/$i > /dev/null
                [ $? -eq 0 ] && return
        done
        false
}

add_connection(){
        [ $# -lt 1 ] && return
        is_active_connection $1 && return # DO NOTHING IF IT IS ALREADY PRESENT
        cp $IPSEC_CONFIG_FILE $TEMP_CONTROL
        echo "include   $CONNECTION_DIR/$1" >> $TEMP_CONTROL
        mv  $TEMP_CONTROL $IPSEC_CONFIG_FILE
}

delete_connection(){
        [ $# -lt 1 ] && return 
        down_connection $1
        rm -f  $CONNECTION_DIR/$1 2> /dev/null
        $GREP -v "^include\W*$CONNECTION_DIR/$1$" $IPSEC_CONFIG_FILE > 
$TEMP_CONTROL
        mv $TEMP_CONTROL $IPSEC_CONFIG_FILE
}

down_connection(){
        [ $# -lt 1 ] && return
        $IPSEC_CMD --rereadall > /dev/null 2>&1
        $IPSEC_CMD --down $1 > /dev/null 2>&1 
}

up_connection(){
        [ $# -lt 1 ] && return
        $IPSEC_CMD --rereadall > /dev/null 2>&1
        $IPSEC_CMD --add $1 > /dev/null 2>&1
        $IPSEC_CMD --replace $1 > /dev/null 2>&1
        $IPSEC_CMD --up $1 > /dev/null 2>&1
}

listen_connection(){
        [ $# -lt 1 ] && return
        $IPSEC_CMD --rereadall > /dev/null 2>&1
        $IPSEC_CMD --add $1 > /dev/null 2>&1
        $IPSEC_CMD --replace $1 > /dev/null 2>&1
}

ipsec_restart()
{
        echo $1
}

uppercase(){
        [ $# -gt 0 ] && echo $1 | tr a-z A-Z
}

lowercase(){
        [ $# -gt 0 ] && echo $1 | tr A-Z a-z
}

get_X509_secret()
{
        [ $# -lt 1 ] && return
        sed -n -e "s/^: RSA\W*$1\W*\(\w*\)\W*/\1/p" < $SECRETS_FILE
}

set_X509_secret()
{
        [ $# -lt 1 ] && return
        has_X509_entry $1 && return
        echo ": RSA $1 \"$2\"" >> $SECRETS_FILE
}

has_X509_entry()
{
        [ $# -gt 0 ] && grep $1 $SECRETS_FILE > /dev/null
}


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
leaf-cvs-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/leaf-cvs-commits

Reply via email to