Brian O'Connor
Committed by Gerrit Code Review

Updating onos-setup-karaf for security-mode ONOS

Change-Id: I8e9dd907e5a135262603694753fd8008289c0d35
...@@ -20,12 +20,23 @@ function validateIp { ...@@ -20,12 +20,23 @@ function validateIp {
20 ifconfig | awk '{ print $2}' | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep $1 20 ifconfig | awk '{ print $2}' | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep $1
21 } 21 }
22 22
23 -# Clean the previous Karaf directory if requested and if it exists. 23 +# Parse optional arguments
24 -if [ "$1" = "clean" ]; then 24 +while [[ $# > 0 ]]; do
25 - shift 25 +case $1 in
26 - CLEAN="true" 26 + clean)
27 - [ -d $KARAF_ROOT ] && rm -fr $KARAF_ROOT $STAGE/apps $STAGE/config 27 + # Clean the previous Karaf directory if requested and if it exists.
28 -fi 28 + CLEAN="true"
29 + [ -d $KARAF_ROOT ] && rm -fr $KARAF_ROOT $STAGE/apps $STAGE/config
30 + ;;
31 + secure)
32 + SECURE="true"
33 + ;;
34 + *)
35 + break
36 + ;;
37 +esac
38 +shift
39 +done
29 40
30 ONOS_IP=${ONOS_IP:-127.0.0.1} 41 ONOS_IP=${ONOS_IP:-127.0.0.1}
31 IP="${1:-$ONOS_IP}" 42 IP="${1:-$ONOS_IP}"
...@@ -43,7 +54,7 @@ fi ...@@ -43,7 +54,7 @@ fi
43 54
44 # If IP is still not surmised or if usage was requested, show usage and IPs. 55 # If IP is still not surmised or if usage was requested, show usage and IPs.
45 if [ -z "$IP" -o "$1" = "-?" -o "$1" = "-h" -o "$1" = "--help" ]; then 56 if [ -z "$IP" -o "$1" = "-?" -o "$1" = "-h" -o "$1" = "--help" ]; then
46 - echo "usage: $(basename $0) [clean] <ip-address>" 57 + echo "usage: $(basename $0) [clean] [secure] <ip-address>"
47 echo "Available IP addresses are:" 58 echo "Available IP addresses are:"
48 validateIp . 59 validateIp .
49 exit 1 60 exit 1
...@@ -71,6 +82,32 @@ if [ ! -d $KARAF_ROOT ]; then ...@@ -71,6 +82,32 @@ if [ ! -d $KARAF_ROOT ]; then
71 rm -rf $KARAF_ROOT/demos 82 rm -rf $KARAF_ROOT/demos
72 fi 83 fi
73 84
85 +if [ "$SECURE" = "true" ]; then
86 + echo "Enabling security mode ONOS..."
87 +
88 + # SM-ONOS step 1: downgrade felix config admin
89 + FELIX_CFG_ADMIN=${FELIX_CFG_ADMIN:-~/Downloads/org.apache.felix.configadmin-1.6.0.jar}
90 + if [ ! -f $FELIX_CFG_ADMIN ]; then
91 + echo "Downloading $FELIX_CFG_ADMIN..."
92 + curl -sL http://archive.apache.org/dist/felix/org.apache.felix.configadmin-1.6.0.jar > $FELIX_CFG_ADMIN
93 + fi
94 + [ ! -f $FELIX_CFG_ADMIN ] && \
95 + echo "Felix config admin not found: $FELIX_CFG_ADMIN" && exit 1
96 +
97 + mkdir -p $KARAF_ROOT/system/org/apache/felix/org.apache.felix.configadmin/1.6.0
98 + cp $FELIX_CFG_ADMIN $KARAF_ROOT/system/org/apache/felix/org.apache.felix.configadmin/1.6.0
99 + perl -pi.old -e "s|org.apache.felix.configadmin/1.8.0|org.apache.felix.configadmin/1.6.0|g" \
100 + $KARAF_ROOT/etc/startup.properties
101 +
102 + # SM-ONOS step 2: stage ONOS Felix framework security (will get downloaded on demand); end
103 +
104 + # SM-ONOS step 3.1: configure karaf
105 + perl -pi.old -e "s|#java.security.policy|java.security.policy|" \
106 + $KARAF_ROOT/etc/system.properties
107 + perl -pi.old -e "s|#org.osgi.framework.security|org.osgi.framework.security|" \
108 + $KARAF_ROOT/etc/system.properties
109 +fi
110 +
74 if ! grep -q "/onos-features/" $KARAF_ROOT/etc/org.apache.karaf.features.cfg; then 111 if ! grep -q "/onos-features/" $KARAF_ROOT/etc/org.apache.karaf.features.cfg; then
75 # Patch the Apache Karaf distribution file to add ONOS features repository 112 # Patch the Apache Karaf distribution file to add ONOS features repository
76 echo "Adding ONOS feature repository..." 113 echo "Adding ONOS feature repository..."
...@@ -81,6 +118,10 @@ fi ...@@ -81,6 +118,10 @@ fi
81 if ! grep -q ",onos-api," $KARAF_ROOT/etc/org.apache.karaf.features.cfg; then 118 if ! grep -q ",onos-api," $KARAF_ROOT/etc/org.apache.karaf.features.cfg; then
82 # Patch the Apache Karaf distribution file to load default ONOS boot features 119 # Patch the Apache Karaf distribution file to load default ONOS boot features
83 export BOOT_FEATURES="webconsole,onos-api,onos-core,onos-incubator,onos-cli,onos-rest,onos-gui" 120 export BOOT_FEATURES="webconsole,onos-api,onos-core,onos-incubator,onos-cli,onos-rest,onos-gui"
121 + if [ "$SECURE" = "true" ]; then
122 + # SM-ONOS Step 3.2: add onos-security to featuresBoot
123 + export BOOT_FEATURES="onos-security,$BOOT_FEATURES"
124 + fi
84 echo "Adding ONOS boot features $BOOT_FEATURES..." 125 echo "Adding ONOS boot features $BOOT_FEATURES..."
85 perl -pi.old -e "s|^(featuresBoot=.*)|\1,$BOOT_FEATURES|" \ 126 perl -pi.old -e "s|^(featuresBoot=.*)|\1,$BOOT_FEATURES|" \
86 $KARAF_ROOT/etc/org.apache.karaf.features.cfg 127 $KARAF_ROOT/etc/org.apache.karaf.features.cfg
......