#!/bin/sh # # The contents of this file are subject to the Initial # Developer's Public License Version 1.0 (the "License"); # you may not use this file except in compliance with the # License. You may obtain a copy of the License at # http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. # # Software distributed under the License is distributed AS IS, # WITHOUT WARRANTY OF ANY KIND, either express or implied. # See the License for the specific language governing rights # and limitations under the License. # # The Original Code was created by Mark O'Donohue # for the Firebird Open Source RDBMS project. # # Copyright (c) Mark O'Donohue # and all contributors signed below. # # All Rights Reserved. # Contributor(s): ______________________________________. # Alex Peshkoff # RunUser=firebird export RunUser RunGroup=firebird export RunGroup PidDir=/var/run/firebird export PidDir #------------------------------------------------------------------------ # Get correct options & misc. psOptions=aww export psOptions mktOptions=-q export mktOptions tarOptions=z export tarOptions tarExt=tar.gz export tarExt #------------------------------------------------------------------------ # Add new user and group TryAddGroup() { AdditionalParameter=$1 testStr=`grep firebird /etc/group` if [ -z "$testStr" ] then groupadd $AdditionalParameter firebird fi } TryAddUser() { AdditionalParameter=$1 testStr=`grep firebird /etc/passwd` if [ -z "$testStr" ] then useradd $AdditionalParameter -d @FB_CONFDIR@ -s /sbin/nologin \ -c "Firebird Database Owner" -g firebird firebird fi } addFirebirdUser() { TryAddGroup "-g 84 -r" >/dev/null 2>&1 TryAddGroup "-g 84" >/dev/null 2>&1 TryAddGroup "-r" >/dev/null 2>&1 TryAddGroup " " TryAddUser "-u 84 -r -M" >/dev/null 2>&1 TryAddUser "-u 84 -M" >/dev/null 2>&1 TryAddUser "-r -M" >/dev/null 2>&1 TryAddUser "-M" >/dev/null 2>&1 TryAddUser "-u 84 -r" >/dev/null 2>&1 TryAddUser "-u 84" >/dev/null 2>&1 TryAddUser "-r" >/dev/null 2>&1 TryAddUser " " } #------------------------------------------------------------------------ # Detect Distribution. # AP: very beautiful, but unused. Let's keep alive for a while. (2005) detectDistro() { # it's not provided... if [ -z "$linuxDistro" ] then if [ -e /etc/SuSE-release ] then # SuSE linuxDistro="SuSE" elif [ -e /etc/mandrake-release ] then # Mandrake linuxDistro="MDK" elif [ -e /etc/debian_version ] then # Debian linuxDistro="Debian" elif [ -e /etc/gentoo-release ] then # Debian linuxDistro="Gentoo" elif [ -e /etc/rc.d/init.d/functions ] then # very likely Red Hat linuxDistro="RH" elif [ -d /etc/rc.d/init.d ] then # generic Red Hat linuxDistro="G-RH" elif [ -d /etc/init.d ] then # generic SuSE linuxDistro="G-SuSE" fi fi } #------------------------------------------------------------------------ # print location of init script getInitScriptLocation() { if [ -f /etc/rc.d/init.d/firebird ] then echo -n /etc/rc.d/init.d/firebird elif [ -f /etc/rc.d/rc.firebird ] then echo -n /etc/rc.d/rc.firebird elif [ -f /etc/init.d/firebird ] then echo -n /etc/init.d/firebird fi } #------------------------------------------------------------------------ # stop super server if it is running stopSuperServerIfRunning() { checkString=`ps -eaf | egrep "\b(fbserver|fbguard|fb_smp_server|firebird)\b" |grep -v grep` if [ ! -z "$checkString" ] then init_d=`getInitScriptLocation` if [ -x "$init_d" ] then i=1 while [ $i -le 20 ] do $init_d stop sleep 1 checkString=`ps -eaf | egrep "\b(fbserver|fbguard|fb_smp_server|firebird)\b" |grep -v grep` if [ -z "$checkString" ] then return fi i=$((i+1)) done fi fi } #------------------------------------------------------------------------ # Generate new sysdba password - this routine is used only in the # rpm file not in the install script. generateNewDBAPassword() { # openssl generates random data. openssl /dev/null 2&>/dev/null if [ $? -eq 0 ] then # We generate 20 random chars, strip any '/''s and get the first 8 NewPasswd=`openssl rand -base64 20 | tr -d '/' | cut -c1-8` fi # mkpasswd is a bit of a hassle, but check to see if it's there if [ -z "$NewPasswd" ] then if [ -f /usr/bin/mkpasswd ] then NewPasswd=`/usr/bin/mkpasswd -l 8` fi fi # On some systems the mkpasswd program doesn't appear and on others # there is another mkpasswd which does a different operation. So if # the specific one isn't available then keep the original password. if [ -z "$NewPasswd" ] then NewPasswd="masterkey" fi writeNewPassword $NewPasswd } #------------------------------------------------------------------------ # change init.d RunUser changeInitRunUser() { NewUser=$1 InitFile=`getInitScriptLocation` if [ -f "$InitFile" ] then editFile "$InitFile" FBRunUser "FBRunUser=$NewUser" chmod u=rwx,g=rx,o= "$InitFile" fi } #------------------------------------------------------------------------ # installInitdScript # Everbody stores this one in a seperate location, so there is a bit of # running around to actually get it for each packager. # Update rcX.d with Firebird initd entries # initd script for SuSE >= 7.2 is a part of RPM package installInitdScript() { Arch=$1 if [ "$Arch" != super ]; then return 0 fi srcScript="" initScript= # This is for RH and MDK specific if [ -e /etc/rc.d/init.d/functions ] then srcScript=firebird.init.d.mandrake initScript=/etc/rc.d/init.d/firebird # SuSE specific elif [ -r /etc/SuSE-release ] then srcScript=firebird.init.d.suse initScript=/etc/init.d/firebird rm -f /usr/sbin/rcfirebird ln -s ../../etc/init.d/firebird /usr/sbin/rcfirebird # Debian specific elif [ -r /etc/debian_version ] then srcScript=firebird.init.d.debian initScript=/etc/init.d/firebird rm -f /usr/sbin/rcfirebird ln -s ../../etc/init.d/firebird /usr/sbin/rcfirebird # Slackware specific elif [ -r /etc/slackware-version ] then srcScript=firebird.init.d.slackware initScript=/etc/rc.d/rc.firebird rclocal=/etc/rc.d/rc.local if ! grep -q "$initScript" $rclocal then cat >>$rclocal <