1 |
diff -urN smeserver-bridge-interface-0.2.old/root/etc/rc.d/init.d/bridge smeserver-bridge-interface-0.2/root/etc/rc.d/init.d/bridge |
2 |
--- smeserver-bridge-interface-0.2.old/root/etc/rc.d/init.d/bridge 2013-11-11 17:18:21.000000000 +0000 |
3 |
+++ smeserver-bridge-interface-0.2/root/etc/rc.d/init.d/bridge 1970-01-01 01:00:00.000000000 +0100 |
4 |
@@ -1,175 +0,0 @@ |
5 |
-#!/bin/bash |
6 |
-# Bridge service on SME |
7 |
-# This service will configure a bridge interface on your server |
8 |
-# allowing each enslaved interfaces to act as a switch port. |
9 |
- |
10 |
-# Source function library. |
11 |
-. /etc/rc.d/init.d/functions |
12 |
- |
13 |
-# Bridge Interface |
14 |
-BRIDGE_IF=$(/sbin/e-smith/db configuration getprop bridge bridgeInterface) |
15 |
-BRIDGE_PROMISC=$(/sbin/e-smith/db configuration getprop bridge Promiscuous) |
16 |
- |
17 |
-# Define list of TAP interfaces to be bridged, |
18 |
-# for example tap="tap0 tap1 tap2". |
19 |
-# Defaults is tap0 |
20 |
-TAP_IF=$(/sbin/e-smith/db configuration getprop bridge tapInterface) |
21 |
-# Replace ; and , with spaces |
22 |
-TAP_IF=$(echo $TAP_IF | sed -e "s/[,;]/ /g") |
23 |
- |
24 |
-# Define physical ethernet interface to be bridged |
25 |
-# with TAP interface(s) above. |
26 |
-ETH_IF=$(/sbin/e-smith/db configuration getprop bridge ethernetInterface) |
27 |
-ETH_MAC=$(/sbin/e-smith/db configuration getprop InternalInterface HWAddress) |
28 |
-ETH_IP=$(/sbin/e-smith/db configuration get LocalIP) |
29 |
-ETH_MASK=$(/sbin/e-smith/db configuration getprop InternalInterface Netmask) |
30 |
- |
31 |
-# System mode: serveronly, server&gateway ... |
32 |
-MODE=$(/sbin/e-smith/db configuration get SystemMode) |
33 |
- |
34 |
-# Path of openvpn binary |
35 |
-openvpn="" |
36 |
-openvpn_locations="/usr/sbin/openvpn /usr/local/sbin/openvpn" |
37 |
-for location in $openvpn_locations |
38 |
-do |
39 |
- if [ -f "$location" ] |
40 |
- then |
41 |
- openvpn=$location |
42 |
- fi |
43 |
-done |
44 |
- |
45 |
-# Check that binary exists |
46 |
-if ! [ -f $openvpn ] |
47 |
-then |
48 |
- echo "openvpn binary not found" |
49 |
- exit 0 |
50 |
-fi |
51 |
- |
52 |
- |
53 |
- |
54 |
-# Sub to reconfigure the firewall |
55 |
-firewall(){ |
56 |
- /sbin/e-smith/expand-template /etc/rc.d/init.d/masq >/dev/null 2>&1 |
57 |
- /sbin/service masq restart >/dev/null 2>&1 |
58 |
-} |
59 |
- |
60 |
-# Sub to restart dhcpd |
61 |
-dhcpd(){ |
62 |
- /usr/bin/sv t dhcpd |
63 |
-} |
64 |
- |
65 |
-# Sub to reconfigures routes and defaults gateway |
66 |
-routes(){ |
67 |
- # We need to push all the routes of local networks as the interface has changed |
68 |
- for NET in $(/sbin/e-smith/db networks keys); do |
69 |
- SYSTEM=$(/sbin/e-smith/db networks getprop $NET SystemLocalNetwork) |
70 |
- if (! test $SYSTEM); then |
71 |
- NETMASK=$(/sbin/e-smith/db networks getprop $NET Mask) |
72 |
- ROUTER=$(/sbin/e-smith/db networks getprop $NET Router) |
73 |
- /sbin/route add -net $NET netmask $NETMASK gw $ROUTER >/dev/null 2>&1 |
74 |
- fi |
75 |
- done |
76 |
- |
77 |
- # If the server runs in serveronly, we need to reconfigure the default gateway: |
78 |
- if [ $MODE == 'serveronly' ]; then |
79 |
- GW=$(/sbin/e-smith/db configuration get GatewayIP) |
80 |
- /sbin/route add default gw $GW >/dev/null 2>&1 |
81 |
- fi |
82 |
-} |
83 |
- |
84 |
-start(){ |
85 |
- # First, create the bridge interface |
86 |
- /usr/sbin/brctl addbr $BRIDGE_IF |
87 |
- |
88 |
- # Then, create the tap interface(s) and enslave it in the bridge one |
89 |
- for t in $TAP_IF; do |
90 |
- $openvpn --mktun --dev $t >/dev/null 2>&1 |
91 |
- /sbin/ifconfig $t 0.0.0.0 promisc up >/dev/null 2>&1 |
92 |
- /usr/sbin/brctl addif $BRIDGE_IF $t >/dev/null 2>&1 |
93 |
- done |
94 |
- |
95 |
- # Now make the real ethernet interface promiscuous |
96 |
- /sbin/ifconfig $ETH_IF 0.0.0.0 promisc up >/dev/null 2>&1 |
97 |
- sleep 1 |
98 |
- |
99 |
- # And add it to the bridge |
100 |
- /usr/sbin/brctl addif $BRIDGE_IF $ETH_IF >/dev/null 2>&1 |
101 |
- |
102 |
- [ -n "$ETH_MAC" ] && /sbin/ifconfig $BRIDGE_IF hw ether $ETH_MAC |
103 |
- |
104 |
- [ "$BRIDGE_PROMISC" == "yes" ] && /sbin/ifconfig $BRIDGE_IF promisc |
105 |
- |
106 |
- # Now configure the LocalIP on the bridge interface |
107 |
- /sbin/e-smith/db configuration setprop InternalInterface Name $BRIDGE_IF |
108 |
- /sbin/ifconfig $BRIDGE_IF $ETH_IP netmask $ETH_MASK >/dev/null 2>&1 |
109 |
- |
110 |
- # Push the routes for the new interface |
111 |
- routes |
112 |
- |
113 |
- # Now we have to reconfigure the firewall |
114 |
- firewall |
115 |
- |
116 |
- # And dhcpd (the configuration file is expanded each time the service starts |
117 |
- # so no need to do it manually |
118 |
- dhcpd |
119 |
-} |
120 |
- |
121 |
-stop(){ |
122 |
- # Shutdown the bridge and remove it |
123 |
- /sbin/ifconfig $BRIDGE_IF down >/dev/null 2>&1 |
124 |
- /usr/sbin/brctl delbr $BRIDGE_IF >/dev/null 2>&1 |
125 |
- |
126 |
- # Then delete each tap interfaces |
127 |
- for t in $TAP_IF; do |
128 |
- $openvpn --rmtun --dev $t >/dev/null 2>&1 |
129 |
- done |
130 |
- |
131 |
- # Reconfigure the ethernet interface |
132 |
- /sbin/e-smith/db configuration setprop InternalInterface Name $ETH_IF |
133 |
- /sbin/ifconfig $ETH_IF $ETH_IP netmask $ETH_MASK up -promisc >/dev/null 2>&1 |
134 |
- |
135 |
- # Push the routes |
136 |
- routes |
137 |
- |
138 |
- # restart the firewall |
139 |
- firewall |
140 |
- |
141 |
- # and dhcp |
142 |
- dhcpd |
143 |
-} |
144 |
- |
145 |
-case "$1" in |
146 |
- start) |
147 |
- echo -n $"Starting Bridge Service: " |
148 |
- start |
149 |
- RETVAL=$? |
150 |
- ;; |
151 |
- stop) |
152 |
- echo -n $"Stoping Bridge Service: " |
153 |
- stop |
154 |
- RETVAL=$? |
155 |
- ;; |
156 |
- restart) |
157 |
- echo -n $"Restarting Bridge Service: " |
158 |
- stop && start |
159 |
- RETVAL=$? |
160 |
- ;; |
161 |
- adjust) |
162 |
- echo -n $"Restarting Bridge Service: " |
163 |
- stop && start |
164 |
- RETVAL=$? |
165 |
- ;; |
166 |
- *) |
167 |
- echo "Usage: $0 start|stop|restart" |
168 |
- ;; |
169 |
-esac |
170 |
- |
171 |
-if [ $RETVAL -eq 0 ]; then |
172 |
- echo_success |
173 |
-else |
174 |
- echo_failure |
175 |
-fi |
176 |
-echo |
177 |
- |
178 |
-exit $RETVAL |
179 |
- |
180 |
diff -urN smeserver-bridge-interface-0.2.old/root/usr/lib/systemd/system/bridge-interface.service smeserver-bridge-interface-0.2/root/usr/lib/systemd/system/bridge-interface.service |
181 |
--- smeserver-bridge-interface-0.2.old/root/usr/lib/systemd/system/bridge-interface.service 1970-01-01 01:00:00.000000000 +0100 |
182 |
+++ smeserver-bridge-interface-0.2/root/usr/lib/systemd/system/bridge-interface.service 2021-01-22 06:44:05.543729313 +0000 |
183 |
@@ -0,0 +1,9 @@ |
184 |
+[Unit] |
185 |
+Description=Bridge Interface for VPN use. |
186 |
+After=network.target |
187 |
+[Service] |
188 |
+Type=forking |
189 |
+ExecStart=/usr/sbin/bridge-interface start |
190 |
+ExecStop=/usr/sbin/bridge-interface stop |
191 |
+[Install] |
192 |
+WantedBy=sme-server.target |
193 |
diff -urN smeserver-bridge-interface-0.2.old/root/usr/sbin/bridge-interface smeserver-bridge-interface-0.2/root/usr/sbin/bridge-interface |
194 |
--- smeserver-bridge-interface-0.2.old/root/usr/sbin/bridge-interface 1970-01-01 01:00:00.000000000 +0100 |
195 |
+++ smeserver-bridge-interface-0.2/root/usr/sbin/bridge-interface 2021-01-21 18:29:24.609405670 +0000 |
196 |
@@ -0,0 +1,178 @@ |
197 |
+#!/bin/bash |
198 |
+# Bridge service on SME |
199 |
+# This service will configure a bridge interface on your server |
200 |
+# allowing each enslaved interfaces to act as a switch port. |
201 |
+ |
202 |
+# Source function library. |
203 |
+. /etc/rc.d/init.d/functions |
204 |
+ |
205 |
+# Bridge Interface |
206 |
+BRIDGE_IF=$(/sbin/e-smith/db configuration getprop bridge bridgeInterface) |
207 |
+BRIDGE_PROMISC=$(/sbin/e-smith/db configuration getprop bridge Promiscuous) |
208 |
+ |
209 |
+# Define list of TAP interfaces to be bridged, |
210 |
+# for example tap="tap0 tap1 tap2". |
211 |
+# Defaults is tap0 |
212 |
+TAP_IF=$(/sbin/e-smith/db configuration getprop bridge tapInterface) |
213 |
+# Replace ; and , with spaces |
214 |
+TAP_IF=$(echo $TAP_IF | sed -e "s/[,;]/ /g") |
215 |
+ |
216 |
+# Define physical ethernet interface to be bridged |
217 |
+# with TAP interface(s) above. |
218 |
+ETH_IF=$(/sbin/e-smith/db configuration getprop bridge ethernetInterface) |
219 |
+ETH_MAC=$(/sbin/e-smith/db configuration getprop InternalInterface HWAddress) |
220 |
+ETH_IP=$(/sbin/e-smith/db configuration get LocalIP) |
221 |
+ETH_MASK=$(/sbin/e-smith/db configuration getprop InternalInterface Netmask) |
222 |
+ |
223 |
+# System mode: serveronly, server&gateway ... |
224 |
+MODE=$(/sbin/e-smith/db configuration get SystemMode) |
225 |
+ |
226 |
+# Path of openvpn binary |
227 |
+openvpn="" |
228 |
+openvpn_locations="/usr/sbin/openvpn /usr/local/sbin/openvpn" |
229 |
+for location in $openvpn_locations |
230 |
+do |
231 |
+ if [ -f "$location" ] |
232 |
+ then |
233 |
+ openvpn=$location |
234 |
+ fi |
235 |
+done |
236 |
+ |
237 |
+# Check that binary exists |
238 |
+if ! [ -f $openvpn ] |
239 |
+then |
240 |
+ echo "openvpn binary not found" |
241 |
+ exit 0 |
242 |
+fi |
243 |
+ |
244 |
+ |
245 |
+ |
246 |
+# Sub to reconfigure the firewall |
247 |
+firewall(){ |
248 |
+ /sbin/e-smith/expand-template /etc/rc.d/init.d/masq >/dev/null 2>&1 |
249 |
+ #/sbin/service masq restart >/dev/null 2>&1 |
250 |
+ systemctl restart masq >/dev/null 2>&1 |
251 |
+ |
252 |
+} |
253 |
+ |
254 |
+# Sub to restart dhcpd |
255 |
+dhcpd(){ |
256 |
+ #/usr/bin/sv t dhcpd |
257 |
+ systemctl restart dhcpd |
258 |
+} |
259 |
+ |
260 |
+# Sub to reconfigures routes and defaults gateway |
261 |
+routes(){ |
262 |
+ # We need to push all the routes of local networks as the interface has changed |
263 |
+ for NET in $(/sbin/e-smith/db networks keys); do |
264 |
+ SYSTEM=$(/sbin/e-smith/db networks getprop $NET SystemLocalNetwork) |
265 |
+ if (! test $SYSTEM); then |
266 |
+ NETMASK=$(/sbin/e-smith/db networks getprop $NET Mask) |
267 |
+ ROUTER=$(/sbin/e-smith/db networks getprop $NET Router) |
268 |
+ /sbin/route add -net $NET netmask $NETMASK gw $ROUTER >/dev/null 2>&1 |
269 |
+ fi |
270 |
+ done |
271 |
+ |
272 |
+ # If the server runs in serveronly, we need to reconfigure the default gateway: |
273 |
+ if [ $MODE == 'serveronly' ]; then |
274 |
+ GW=$(/sbin/e-smith/db configuration get GatewayIP) |
275 |
+ /sbin/route add default gw $GW >/dev/null 2>&1 |
276 |
+ fi |
277 |
+} |
278 |
+ |
279 |
+start(){ |
280 |
+ # First, create the bridge interface |
281 |
+ /usr/sbin/brctl addbr $BRIDGE_IF |
282 |
+ |
283 |
+ # Then, create the tap interface(s) and enslave it in the bridge one |
284 |
+ for t in $TAP_IF; do |
285 |
+ $openvpn --mktun --dev $t >/dev/null 2>&1 |
286 |
+ /sbin/ifconfig $t 0.0.0.0 promisc up >/dev/null 2>&1 |
287 |
+ /usr/sbin/brctl addif $BRIDGE_IF $t >/dev/null 2>&1 |
288 |
+ done |
289 |
+ |
290 |
+ # Now make the real ethernet interface promiscuous |
291 |
+ /sbin/ifconfig $ETH_IF 0.0.0.0 promisc up >/dev/null 2>&1 |
292 |
+ sleep 1 |
293 |
+ |
294 |
+ # And add it to the bridge |
295 |
+ /usr/sbin/brctl addif $BRIDGE_IF $ETH_IF >/dev/null 2>&1 |
296 |
+ |
297 |
+ [ -n "$ETH_MAC" ] && /sbin/ifconfig $BRIDGE_IF hw ether $ETH_MAC |
298 |
+ |
299 |
+ [ "$BRIDGE_PROMISC" == "yes" ] && /sbin/ifconfig $BRIDGE_IF promisc |
300 |
+ |
301 |
+ # Now configure the LocalIP on the bridge interface |
302 |
+ /sbin/e-smith/db configuration setprop InternalInterface Name $BRIDGE_IF |
303 |
+ /sbin/ifconfig $BRIDGE_IF $ETH_IP netmask $ETH_MASK >/dev/null 2>&1 |
304 |
+ |
305 |
+ # Push the routes for the new interface |
306 |
+ routes |
307 |
+ |
308 |
+ # Now we have to reconfigure the firewall |
309 |
+ firewall |
310 |
+ |
311 |
+ # And dhcpd (the configuration file is expanded each time the service starts |
312 |
+ # so no need to do it manually |
313 |
+ dhcpd |
314 |
+} |
315 |
+ |
316 |
+stop(){ |
317 |
+ # Shutdown the bridge and remove it |
318 |
+ /sbin/ifconfig $BRIDGE_IF down >/dev/null 2>&1 |
319 |
+ /usr/sbin/brctl delbr $BRIDGE_IF >/dev/null 2>&1 |
320 |
+ |
321 |
+ # Then delete each tap interfaces |
322 |
+ for t in $TAP_IF; do |
323 |
+ $openvpn --rmtun --dev $t >/dev/null 2>&1 |
324 |
+ done |
325 |
+ |
326 |
+ # Reconfigure the ethernet interface |
327 |
+ /sbin/e-smith/db configuration setprop InternalInterface Name $ETH_IF |
328 |
+ /sbin/ifconfig $ETH_IF $ETH_IP netmask $ETH_MASK up -promisc >/dev/null 2>&1 |
329 |
+ |
330 |
+ # Push the routes |
331 |
+ routes |
332 |
+ |
333 |
+ # restart the firewall |
334 |
+ firewall |
335 |
+ |
336 |
+ # and dhcp |
337 |
+ dhcpd |
338 |
+} |
339 |
+ |
340 |
+case "$1" in |
341 |
+ start) |
342 |
+ echo -n $"Starting Bridge Service: " |
343 |
+ start |
344 |
+ RETVAL=$? |
345 |
+ ;; |
346 |
+ stop) |
347 |
+ echo -n $"Stoping Bridge Service: " |
348 |
+ stop |
349 |
+ RETVAL=$? |
350 |
+ ;; |
351 |
+ restart) |
352 |
+ echo -n $"Restarting Bridge Service: " |
353 |
+ stop && start |
354 |
+ RETVAL=$? |
355 |
+ ;; |
356 |
+ adjust) |
357 |
+ echo -n $"Restarting Bridge Service: " |
358 |
+ stop && start |
359 |
+ RETVAL=$? |
360 |
+ ;; |
361 |
+ *) |
362 |
+ echo "Usage: $0 start|stop|restart" |
363 |
+ ;; |
364 |
+esac |
365 |
+ |
366 |
+if [ $RETVAL -eq 0 ]; then |
367 |
+ echo_success |
368 |
+else |
369 |
+ echo_failure |
370 |
+fi |
371 |
+echo |
372 |
+ |
373 |
+exit $RETVAL |
374 |
+ |