source: server/bin/setserveraddr @ 6958249

Last change on this file since 6958249 was 4816ea5, checked in by OpenGnSys Support Team <soporte-og@…>, 5 years ago

#971 Remove ogAdmAgent initialization

All the functionalities of the ogAdmAgent are now in the ogAdmServer.
So, the it is not needed anymore.

This commit remove the installation and update of the ogAdmAgent, adds a
check to remove it if exists and removes it from the OpenGnsys init
script.

A future patch will remove all the code related to the ogAdmAgent.

  • Property mode set to 100755
File size: 5.0 KB
Line 
1#!/bin/bash
2
3#/**
4#@file    setserveraddr
5#@brief   Assign default IP address to OpenGnsys services.
6#@usage   setserveraddr { IPAddress | NetIface }
7#@param   IPAddress  IP address assigned to a network interface
8#@param   NetIface   network interface name defined by the operating system
9#@version Initial version.
10#@author  Ramón M. Gómez - ETSII Univ. Sevilla
11#@date    2011-01-25
12#@version 1.0.5 - Regenerate configuration files.
13#@author  Ramón M. Gómez - ETSII Univ. Sevilla
14#@date    2014-06-06
15#@version 1.1.1 - Updating menu URLs and PXE files.
16#@author  Ramón M. Gómez - ETSII Univ. Sevilla
17#@date    2018-11-15
18#*/ ##
19
20
21# Variables.
22OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
23PXEDIRS="$OPENGNSYS/tftpboot/menu.lst $OPENGNSYS/tftpboot/grub"
24DEFAULTFILE=/etc/default/opengnsys
25
26# Functions.
27source $OPENGNSYS/lib/ogfunctions.sh || exit 1
28
29# Show help or version number.
30[ "$*" == "help" ] && help
31[ "$*" == "version" ] && version
32# Checking parameters.
33[ "$USER" != "root" ] && raiseError access "Need to be root"
34[ $# -ne 1 ] && raiseError usage
35[ -r $DEFAULTFILE ] || raiseError access "Cannot read default configuration file"
36for f in $OPENGNSYS/{etc/{ogAdmServer,ogAdmRepo}.cfg,www/controlacceso.php,client/ogClient/cfg/ogclient.cfg}; do
37        [ -w $f ] || raiseError access "Cannot write to file: $f"
38done
39
40# Detecting network interfaces.
41DEVICES=$(ip -o link show up | awk -F: '$2!~/lo/ {print $2}')
42for DEV in $DEVICES; do
43        # If the network interface is found, get its IP address.
44        IP=$(ip -o addr show dev "$DEV" | awk '$3~/inet$/ {sub (/\/.*/, ""); print ($4)}')
45        if [ "$DEV" == "$1" ] || [ "$IP" == "$1" ]; then
46                SERVERIP="$IP"
47                SERVERDEV="$DEV"
48        fi
49done
50
51# Checking if IP address has been detected.
52if [ -n "$SERVERIP" ]; then
53        # Showing warning to inform that initiated clients may hang.
54        read -rp "WARNING: initiated clients can hang. Continue? (y/n): " ANSWER
55        [ "${ANSWER,,}" != "y" ] && raiseError cancel "Do nothing"
56        # Temporary files.
57        tmpfile=$(mktemp /tmp/og.XXXXX)
58        trap "rm -f $tmpfile" 1 2 3 6 9 15
59
60        # Checking whether the DHCP settings need to be changed.
61        CHANGE=0
62        for f in /etc/{dhcp,hcp3}/dhcpd.conf; do
63                if [ -f $f ]; then
64                        # Changing DHCP "next-server" parameter.
65                        file="${f/./-$SERVERDEV.}"
66                        sed -e "s/next-server.*/next-server $SERVERIP;/" \
67                            -e "s/option routers ;/option routers ${SERVERIP%.*}.1;/" $file >$tmpfile
68                        # Copying and linking file if there are changes.
69                        if [ ! $f -ef $file ] || ! diff -q $tmpfile $file &>/dev/null; then
70                                mv $tmpfile $file
71                                chmod 644 $file
72                                ln -f $file $f
73                                CHANGE=1
74                        fi
75                fi
76        done
77        # Restarting DHCP service if its configuration has changed.
78        if [ $CHANGE == 1 ]; then
79                for s in isc-dhcp-server dhcp3-server dhcpd; do
80                        restart $s &>/dev/null && break
81                done
82        else
83                echo "DHCP configuration has not changed."
84        fi
85
86        # Saving old IP address.
87        source $OPENGNSYS/etc/ogAdmServer.cfg
88        OLDSERVERIP=$ServidorAdm
89        # Checking if configuration files need to be modified.
90        CHANGE=0
91        for f in $OPENGNSYS/{etc/{ogAdmServer,ogAdmRepo}.cfg,www/controlacceso.php}; do
92                # Updating configuration variables (if URL does not contain "localhost").
93                sed -e "s,\(ServidorAdm\|IPlocal\)=.*,\1=$SERVERIP," \
94                    -e "s,^INTERFACE=.*,INTERFACE=$SERVERDEV," \
95                    -e "s,UrlMenu=https?://\([^/]*\)/\(.*\),UrlMenu=https://$SERVERIP/\2," \
96                    -e '/localhost/!s,https\?://[^/]*/\(.*\),https://'$SERVERIP'/\1,' $f >$tmpfile
97                file="${f/./-$SERVERDEV.}"
98                # Copying updated file, if needed.
99                if [ ! $f -ef $file ] || ! diff -q $tmpfile $file &>/dev/null; then
100                        cp $tmpfile $file
101                        ln -f $file $f
102                        CHANGE=1
103                fi
104        done
105
106        # Processing when something has changed.
107        if [ $CHANGE == 1 ]; then
108                # Config ogClient.
109                sed -i -e "s/^ip=.*/ip=$SERVERIP/g" \
110                    -e "s/^url=https:\/\/[0-9\.]*\//url=https:\/\/$SERVERIP\//g" \
111                    $OPENGNSYS/client/ogClient/cfg/ogclient.cfg
112                # Restart OpenGnsys services.
113                echo "Restarting services..."
114                restart opengnsys >/dev/null
115                source $DEFAULTFILE
116                # If OpenGnsys Server is active, updating the database.
117                if [ "$RUN_OGADMSERVER" == "yes" ]; then
118                        # Updating IP addresses and menu URLs.
119                        dbexec "
120UPDATE entornos
121   SET ipserveradm='$SERVERIP'
122 WHERE identorno=1;
123UPDATE repositorios
124   SET ip='$SERVERIP'
125 WHERE ip='$OLDSERVERIP';
126UPDATE menus
127   SET htmlmenupub = REPLACE(htmlmenupub, '$OLDSERVERIP', '$SERVERIP'),
128       htmlmenupri = REPLACE(htmlmenupri, '$OLDSERVERIP', '$SERVERIP');"
129                        # Updating all PXE files.
130                        find $PXEDIRS -name "01-*" -exec sed -i -e "s/$OLDSERVERIP/$SERVERIP/g" {} \;
131                fi
132
133                # Showing manual task to do after execution.
134                cat << EOT
135Default server interface set to: $SERVERDEV ($SERVERIP)
136
137Manual tasks:
138- Check DHCP configuration file and restart service, if needed.
139- Check PXE files.
140- Log-in as Web Console user:
141  - Check menu URLs.
142- Note: Run "settoken" script to update authentication tokens.
143EOT
144        else
145                # Showing message if nothing changes.
146                echo "Default interface has not changed: $1"
147        fi
148else
149        # Error if network interface is not found.
150        raiseError notfound "Network device"
151fi
152
153# Removing temporary files.
154rm -f $tmpfile
155
Note: See TracBrowser for help on using the repository browser.