Modified for Freeside 1.7.2
authorrsiddall <rsiddall>
Sun, 8 Jul 2007 03:37:03 +0000 (03:37 +0000)
committerrsiddall <rsiddall>
Sun, 8 Jul 2007 03:37:03 +0000 (03:37 +0000)
install/rpm/freeside-install [new file with mode: 0755]

diff --git a/install/rpm/freeside-install b/install/rpm/freeside-install
new file mode 100755 (executable)
index 0000000..f6f11db
--- /dev/null
@@ -0,0 +1,227 @@
+#!/bin/sh
+# This is based on the Fedora Core 3 INSTALL file, modified using the information in the Freeside Wiki
+# It's intended to be a universal Freeside installation script, but it's nowhere near that yet.
+#
+
+# Primary domain - see the Wiki
+DOMAIN=
+# Package manager to use
+PACKAGER=
+# Main freeside user
+USER=
+# Name for database for this instance of freeside
+DBNAME=freeside
+
+# Parse the command line arguments
+#parse_cli_arguments()
+#{
+       while getopts "hd:n:p:u:" flag
+       do
+               case $flag in
+               d)
+                       NEWVAL=`echo $OPTARG | tr '[A-Z]' '[a-z]'`
+                       if [ "x$DOMAIN" -ne "x" ] ; then
+                               echo STDERR "Domain already set to $DOMAIN.  Changing to $NEWVAL"
+                       fi
+                       DOMAIN=$NEWVAL;;
+               h)
+                       usage;;
+               n)
+                       # We don't lowercase the database name
+                       if [ "x$DBNAME" -ne "x" ] ; then
+                               echo STDERR "Database name already set to $DBNAME.  Changing to $OPTARG"
+                       fi
+                       DBNAME=$OPTARG;;
+               p)
+                       NEWVAL=`echo $OPTARG | tr '[A-Z]' '[a-z]'`
+                       if [ "x$PACKAGER" -ne "x" ] ; then
+                               echo STDERR "Packager already set to $PACKAGER.  Changing to $NEWVAL"
+                       fi
+                       PACKAGER=$NEWVAL;;
+               u)
+                       # We don't lowercase the user name
+                       if [ "x$USER" -ne "x" ] ; then
+                               echo STDERR "Main freeside web user already set to $USER.  Changing to $OPTARG"
+                       fi
+                       USER=$OPTARG;;
+               esac
+       done
+#}
+
+usage()
+{
+       echo "freeside-install is a utility to install the Freeside ISP billing system."
+       echo "Usage:    freeside-install -d <domain> -n <database name> -p <packager> -u <first web user>"
+       echo "where:"
+       echo "  domain is the required first domain, usually the ISP's main customer domain"
+       echo "  database name is the name of the database for this instance of Freeside - defaults to freeside"
+       echo "  packager is the package management tool you want to use: RPM, CPAN, etc."
+        exit 1
+}
+
+apologize()
+{
+       echo "Sorry, this version of freeside-install is non-functional.  Feel free to contribute fixes"
+       echo "See http://www.sisd.com/mediawiki/index.php/Freeside:1.7:Documentation:Installation for information on how to install Freeside"
+       exit 1
+}
+
+install_perl_module()
+{
+       # We should do something smarter than this, checking to see if the module was installed
+       # and falling back to another package manager (or two) if not
+       echo "$MODULE: $CPAN"
+       case $PACKAGER in
+       apt)
+               # apt-get install $CPAN;
+               ;;
+       cpan)
+               # cpan install $CPAN;
+               ;;
+       cpan2rpm)
+               # cpan2rpm $CPAN;
+               # rpm -Uvh /usr/src/redhat/RPMS/*/perl-$CPAN*.rpm
+               ;;
+       rpm)
+               # Nothing to do; RPM should already be installed?
+               ;;
+       yum)
+               # yum install perl-$CPAN;
+               ;;
+       esac
+}
+
+install_all_perl_modules()
+{
+       while read MODULE CPAN
+       do
+               install_perl_module $MODULE $CPAN;
+       done <<EOF
+# Probably included in the distro
+libnet         Net::Cmd
+libwww-perl    Bundle::LWP
+URI
+HTML::Tagset
+HTML::Parser 
+HTML::Mason
+Text::Template
+DBI
+DBD::Pg
+MailTools      Mail::Internet
+MIME::Tools
+TimeDate       Date::Format
+Locale-Codes   Locale::Country
+DateTime 
+# Less common modules
+Chart  Chart::Base
+Cache::Cache
+NetAddr::IP
+String::Approx
+Locale::SubCountry
+Frontier::RPC2
+Term::ReadKey
+Date::Manip
+DateTime::Format::Strptime
+Text::CSV_XS 
+# Rare modules
+Business::CreditCard
+Net::Whois::Raw
+DBIx::DBSchema
+Tie::IxHash
+Crypt::PasswdMD5
+Time::Duration
+File::CounterFile
+IPC::Run3
+Net::SSH
+String::ShellQuote
+JSON
+HTML::Widgets::SelectLayers
+Color::Scheme
+Lingua::EN::NameParse
+Lingua::EN::Inflect 
+# Optional modules - we'll add them anyway
+Fax::Hylafax::Client
+Apache::DBI
+EOF
+}
+
+# Create the freeside user account and create the database in PostgreSQL
+add_freeside_user()
+{
+       /usr/sbin/useradd freeside
+       chsh freeside -s /bin/bash
+}
+
+start_pg()
+{
+       /sbin/chkconfig postgresql on
+       /etc/init.d/postgresql start
+}
+
+create_freeside_pg_user_and_db()
+{
+       echo "Creating Freeside database user for Pg"
+       su postgres -c "createuser -P -A -d freeside"
+
+       echo "Creating the $DBNAME database"
+       su freeside -c "createdb -E sql_ascii $DBNAME"
+}
+
+# Install Freeside's Perl modules, create the configuration, and create the first user
+install_freeside()
+{
+##     cd ../../..
+       make install-perl-modules
+       make create-config
+}
+
+add_freeside_system_users()
+{
+       echo "Creating Freeside system users"
+       for SYSUSER in fs_queue fs_daily fs_selfservice ; do
+               su freeside -c "freeside-adduser -g 1 $SYSUSER"
+       done
+}
+
+add_first_freeside_user()
+{
+       echo "Creating first Freeside application user"
+       su freeside -c "freeside-adduser -g 1 $USER"
+       su freeside -c "htpasswd -c /usr/local/etc/freeside/htpasswd $USER"
+}
+
+setup_freeside_database()
+{
+       echo "Setting up Freeside for $DOMAIN"
+       su freeside -c "freeside-setup -d $DOMAIN"
+}
+
+# Should check that we're root...
+
+#parse_cli_arguments;
+
+if [ "x$USER" = "x" ]; then
+        usage;
+fi
+
+if [ "x$DOMAIN" = "x" ]; then
+        usage;
+fi
+
+if [ "$PACKAGER" -ne "rpm" ]; then
+       install_all_perl_modules;
+       install_freeside;
+fi
+
+start_pg;
+
+create_freeside_pg_user_and_db;
+
+setup_freeside_database;
+
+add_freeside_system_users;
+
+add_first_freeside_user;
+
+exit 0;
+