Change in nat_osm to support port 8008
[osm/devops.git] / installers / nat_osm
1 #!/bin/bash
2 #   Copyright 2016 Telefónica Investigación y Desarrollo S.A.U.
3 #
4 #   Licensed under the Apache License, Version 2.0 (the "License");
5 #   you may not use this file except in compliance with the License.
6 #   You may obtain a copy of the License at
7 #
8 #       http://www.apache.org/licenses/LICENSE-2.0
9 #
10 #   Unless required by applicable law or agreed to in writing, software
11 #   distributed under the License is distributed on an "AS IS" BASIS,
12 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 #   See the License for the specific language governing permissions and
14 #   limitations under the License.
15
16 ############
17 # Functions
18 ############
19 usage(){
20     echo -e "usage: $0 [OPTIONS]"
21     echo -e "Install NAT rules for OSM"
22     echo -e "  OPTIONS"
23     echo -e "     -u:  UI/SO (rift) IP address"
24     echo -e "     -r:  RO (openmano) IP address"
25     echo -e "     -v:  VCA (juju) IP address"
26     echo -e "     -h:  show this help"
27 }
28
29 ###################
30 # End of functions
31 ###################
32
33 #Check root privileges
34 [ "$USER" != "root" ] && echo "Needed root privileges (run with sudo)" >&2 && exit 1
35
36 HERE=$(realpath $(dirname $0))
37 OSM_DEVOPS=$(dirname $HERE)
38 OSM_JENKINS="$OSM_DEVOPS/jenkins"
39 . $OSM_JENKINS/common/all_funcs
40
41 #Get default IP address
42 . $OSM_DEVOPS/installers/export_ips
43
44 UI_IP=$DEFAULT_IP
45 RO_IP=$DEFAULT_IP
46 VCA_IP=$DEFAULT_IP
47
48 #read input options
49 while getopts ":u:r:v:h-:" o; do
50     case "${o}" in
51         u)
52             export UI_IP="$OPTARG"
53             ;;
54         r)
55             export RO_IP="$OPTARG"
56             ;;
57         v)
58             export VCA_IP="$OPTARG"
59             ;;
60         h)
61             usage && exit 0
62             ;;
63         -)
64             [ "${OPTARG}" == "help" ] && usage && exit 0
65             echo -e "Invalid option: '--$OPTARG'\nTry $0 --help for more information" >&2
66             exit 1
67             ;;
68         \?)
69             echo -e "Invalid option: '-$OPTARG'\nTry $0 --help for more information" >&2
70             exit 1
71             ;;
72         :)
73             echo -e "Option '-$OPTARG' requires an argument\nTry $0 --help for more information" >&2
74             exit 1
75             ;;
76         *)
77             usage >&2
78             exit -1
79             ;;
80     esac
81 done
82
83 #############
84 # NAT port forwarding configuration
85 #############
86 echo
87 echo "*** Configuring iptables rules ***"
88
89 awk -v RO_IP="$RO_IP" -v VCA_IP="$VCA_IP" -v UI_IP="$UI_IP" -v openmano_ip="$RO_CONTAINER_IP" -v rift_ip="$SO_CONTAINER_IP" -v juju_ip="$VCA_CONTAINER_IP" '
90 BEGIN {innat=0; innatpre=0; osmpre=0; donepre=0; innatpost=0; osmpost=0; donepost=0}
91 /^\*nat/ {
92     innat=1;
93     print;
94     next
95 }
96 innat==1 && /\:PREROUTING/ {
97     innatpre=1;
98     print;
99     next;
100 }
101 innatpre==1 && /\#Autogenerated by nat_osm/ {
102     osmpre=1;
103     next;
104 }
105 osmpre==1 && /#End autogeneration by nat_osm/ {
106     print "#Autogenerated by nat_osm"
107     print "-A PREROUTING -d "RO_IP" -p tcp -m tcp --dport 9090 -j DNAT --to-destination "openmano_ip
108     print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 8000 -j DNAT --to-destination "rift_ip
109     print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 4567 -j DNAT --to-destination "rift_ip
110     print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 8443 -j DNAT --to-destination "rift_ip
111     print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 8008 -j DNAT --to-destination "rift_ip
112     #print "-A PREROUTING -d "VCA_IP" -p tcp -m tcp --dport 443 -j DNAT --to-destination "juju_ip
113     #print "-A PREROUTING -d "VCA_IP" -p tcp -m tcp --dport 17070 -j DNAT --to-destination "juju_ip
114     print "#End autogeneration by nat_osm"
115     osmpre=0;
116     donepre=1;
117     next;
118 }
119 osmpre==1 {next;}
120 innatpre==1 && /\:INPUT/ {
121     innatpre=0;
122     if (donepre==0) {
123         print "#Autogenerated by nat_osm"
124         print "-A PREROUTING -d "RO_IP" -p tcp -m tcp --dport 9090 -j DNAT --to-destination "openmano_ip
125         print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 8000 -j DNAT --to-destination "rift_ip
126         print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 4567 -j DNAT --to-destination "rift_ip
127         print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 8443 -j DNAT --to-destination "rift_ip
128         print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 8008 -j DNAT --to-destination "rift_ip
129         #print "-A PREROUTING -d "VCA_IP" -p tcp -m tcp --dport 443 -j DNAT --to-destination "juju_ip
130         #print "-A PREROUTING -d "VCA_IP" -p tcp -m tcp --dport 17070 -j DNAT --to-destination "juju_ip
131         print "#End autogeneration by nat_osm"
132         donepre=1;
133     }
134     print;
135     next;
136 }
137
138 innat==1 && /\:POSTROUTING/ {
139     innatpost=1;
140     print;
141     next;
142 }
143 innatpost==1 && /\#Autogenerated by nat_osm/ {
144     osmpost=1;
145     next;
146 }
147 osmpost==1 && /#End autogeneration by nat_osm/ {
148     #print "#Autogenerated by nat_osm"
149     #print "-A POSTROUTING -s "rift_ip" -p tcp -m tcp --dport 9090 -d "openmano_ip" -j SNAT --to "UI_IP
150     #print "-A POSTROUTING -s "rift_ip" -p tcp -m tcp --dport 17070 -d "juju_ip" -j SNAT --to "UI_IP
151     #print "#End autogeneration by nat_osm"
152     osmpost=0;
153     donepost=1;
154     next;
155 }
156 osmpost==1 {next;}
157 innatpost==1 && /COMMIT/ {
158     innatpost=0;
159     innat=0;
160     if (donepost==0) {
161         #print "#Autogenerated by nat_osm"
162         #print "-A POSTROUTING -s "rift_ip" -p tcp -m tcp --dport 9090 -d "openmano_ip" -j SNAT --to "UI_IP
163         #print "-A POSTROUTING -s "rift_ip" -p tcp -m tcp --dport 17070 -d "juju_ip" -j SNAT --to "UI_IP
164         #print "#End autogeneration by nat_osm"
165         donepost=1;
166     }
167     print;
168     next;
169 }
170 {
171     print
172 }
173 ' /etc/iptables/rules.v4 > testfile.tmp && mv testfile.tmp /etc/iptables/rules.v4
174
175 service netfilter-persistent restart
176