updating the list of ports used by RIFT
[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 8443 -j DNAT --to-destination "rift_ip
110     print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 8008 -j DNAT --to-destination "rift_ip
111     print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 8009 -j DNAT --to-destination "rift_ip
112     print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 80 -j DNAT --to-destination "rift_ip
113     #print "-A PREROUTING -d "VCA_IP" -p tcp -m tcp --dport 443 -j DNAT --to-destination "juju_ip
114     #print "-A PREROUTING -d "VCA_IP" -p tcp -m tcp --dport 17070 -j DNAT --to-destination "juju_ip
115     print "#End autogeneration by nat_osm"
116     osmpre=0;
117     donepre=1;
118     next;
119 }
120 osmpre==1 {next;}
121 innatpre==1 && /\:INPUT/ {
122     innatpre=0;
123     if (donepre==0) {
124         print "#Autogenerated by nat_osm"
125         print "-A PREROUTING -d "RO_IP" -p tcp -m tcp --dport 9090 -j DNAT --to-destination "openmano_ip
126         print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 8000 -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 "UI_IP" -p tcp -m tcp --dport 8009 -j DNAT --to-destination "rift_ip
130         print "-A PREROUTING -d "UI_IP" -p tcp -m tcp --dport 80 -j DNAT --to-destination "rift_ip
131         #print "-A PREROUTING -d "VCA_IP" -p tcp -m tcp --dport 443 -j DNAT --to-destination "juju_ip
132         #print "-A PREROUTING -d "VCA_IP" -p tcp -m tcp --dport 17070 -j DNAT --to-destination "juju_ip
133         print "#End autogeneration by nat_osm"
134         donepre=1;
135     }
136     print;
137     next;
138 }
139
140 innat==1 && /\:POSTROUTING/ {
141     innatpost=1;
142     print;
143     next;
144 }
145 innatpost==1 && /\#Autogenerated by nat_osm/ {
146     osmpost=1;
147     next;
148 }
149 osmpost==1 && /#End autogeneration by nat_osm/ {
150     print "#Autogenerated by nat_osm"
151     print "-A POSTROUTING -s "rift_ip"/24 -d "rift_ip" -p tcp --dport 8443 -j MASQUERADE"
152     #print "-A POSTROUTING -s "rift_ip" -p tcp -m tcp --dport 9090 -d "openmano_ip" -j SNAT --to "UI_IP
153     #print "-A POSTROUTING -s "rift_ip" -p tcp -m tcp --dport 17070 -d "juju_ip" -j SNAT --to "UI_IP
154     print "#End autogeneration by nat_osm"
155     osmpost=0;
156     donepost=1;
157     next;
158 }
159 osmpost==1 {next;}
160 innatpost==1 && /COMMIT/ {
161     innatpost=0;
162     innat=0;
163     if (donepost==0) {
164         print "#Autogenerated by nat_osm"
165         print "-A POSTROUTING -s "rift_ip"/24 -d "rift_ip" -p tcp --dport 8443 -j MASQUERADE"
166         #print "-A POSTROUTING -s "rift_ip" -p tcp -m tcp --dport 9090 -d "openmano_ip" -j SNAT --to "UI_IP
167         #print "-A POSTROUTING -s "rift_ip" -p tcp -m tcp --dport 17070 -d "juju_ip" -j SNAT --to "UI_IP
168         print "#End autogeneration by nat_osm"
169         donepost=1;
170     }
171     print;
172     next;
173 }
174 {
175     print
176 }
177 ' /etc/iptables/rules.v4 > testfile.tmp && mv testfile.tmp /etc/iptables/rules.v4
178
179 service netfilter-persistent restart
180