diff options
Diffstat (limited to 'FS/bin')
-rwxr-xr-x | FS/bin/freeside-init-config | 92 | ||||
-rwxr-xr-x | FS/bin/freeside-setup | 27 | ||||
-rwxr-xr-x | FS/bin/freeside-upgrade | 8 |
3 files changed, 122 insertions, 5 deletions
diff --git a/FS/bin/freeside-init-config b/FS/bin/freeside-init-config new file mode 100755 index 000000000..a186d1a85 --- /dev/null +++ b/FS/bin/freeside-init-config @@ -0,0 +1,92 @@ +#!/usr/bin/perl -Tw + +use strict; +use vars qw($opt_u $opt_f $opt_v); +use Getopt::Std; +use IO::File; +use FS::UID qw(adminsuidsetup checkeuid dbh); +use FS::CurrentUser; +use FS::Record qw(qsearch); + + +die "Not running uid freeside!" unless checkeuid(); + +getopts("u:vf"); +my $dir = shift or die &usage; + +$FS::CurrentUser::upgrade_hack = 1; +adminsuidsetup $opt_u; #$user; + +$|=1; + +my $conf = new FS::Conf; +if (!scalar(qsearch('conf', {})) || $opt_f) { + + foreach my $item ( $conf->config_items() ) { + insert_config_item($item,$dir); + } + + # ugly pseudo false laziness with Conf.pm + foreach my $item ( map { my $basename = basename($_); + $basename =~ /^(.*)$/; + $basename = $1; + new FS::ConfItem { + 'key' => $basename, + 'type' => '', + } + } glob($dir. '/invoice_template_*'), + glob($dir. '/invoice_html_*'), + glob($dir. '/invoice_htmlnotes_*'), + glob($dir. '/invoice_latex_*'), + glob($dir. '/invoice_latexnotes_*') + ) { + + insert_config_item($item,$dir); + + } + + foreach my $item ( map { my $basename = basename($_); + $basename =~ /^(.*)$/; + $basename = $1; + new FS::ConfItem { + 'key' => $basename, + 'type' => 'binary', + } + } glob($dir. '/logo_*.png'), + glob($dir. '/logo_*.eps') + ) { + + insert_config_item($item,$dir); + + } + +} + +warn "Freeside database initialized - committing transaction\n" if $opt_v; + +dbh->commit or die dbh->errstr; +dbh->disconnect or die dbh->errstr; + +warn "Configuration initialization committed successfully\n" if $opt_v; + +sub insert_config_item { + local $/; + my ($item,$dir) = @_; + my $key = $item->key; + if (-e "$dir/$key") { + warn "Inserting $key\n" if $opt_v; + my $value = readline(new IO::File "$dir/$key"); + if ($item->type eq 'binary'){ + $conf->set_binary($key, $value); + }else{ + $conf->set($key, $value); + } + } +} + +sub usage { + die "Usage:\n freeside-init-config directory [ -v ] [ -f ]\n" + # [ -u user ] for devel/multi-db installs +} + +1; diff --git a/FS/bin/freeside-setup b/FS/bin/freeside-setup index ddc210f50..bce5a0aeb 100755 --- a/FS/bin/freeside-setup +++ b/FS/bin/freeside-setup @@ -19,12 +19,15 @@ die "Not running uid freeside!" unless checkeuid(); # map { lc($FS::raddb::attrib{$_}) => $_ } keys %FS::raddb::attrib; getopts("u:vd:"); -#my $user = shift or die &usage; +my $config_dir = shift || 'conf' ; +$config_dir =~ /^([\w.:=]+)$/ + or die "unacceptable configuration directory name"; +$config_dir = $1; -getsecrets($opt_u); #$user); +getsecrets($opt_u); #needs to match FS::Record -my($dbdef_file) = "%%%FREESIDE_CONF%%%/dbdef.". datasrc; +my($dbdef_file) = "/usr/local/etc/newtest/dbdef.". datasrc; ### @@ -88,7 +91,9 @@ $dbdef->save($dbdef_file); ### $FS::CurrentUser::upgrade_hack = 1; +$FS::UID::callback_hack = 1; my $dbh = adminsuidsetup $opt_u; #$user; +$FS::UID::callback_hack = 0; #create tables $|=1; @@ -105,6 +110,20 @@ dbdef_create($dbh, $dbdef_file); delete $FS::Schema::dbdef_cache{$dbdef_file}; #force an actual reload reload_dbdef($dbdef_file); +warn "Freeside schema initialized - commiting transaction\n" if $opt_v; + +$dbh->commit or die $dbh->errstr; +$dbh->disconnect or die $dbh->errstr; + +warn "Database schema committed successfully\n" if $opt_v; + +my $init_config = "freeside-init-config"; +$init_config .= " -v" if $opt_v; +$init_config .= " -u $opt_u" if $opt_u; +$init_config .= " $config_dir"; +system "$init_config" ; + +$dbh = adminsuidsetup $opt_u; create_initial_data('domain' => $opt_d); warn "Freeside database initialized - commiting transaction\n" if $opt_v; @@ -121,7 +140,7 @@ sub dbdef_create { # reverse engineer the schema from the DB and save to file } sub usage { - die "Usage:\n freeside-setup -d domain.name [ -v ]\n" + die "Usage:\n freeside-setup -d domain.name [ -v ] [ config/dir ]\n" # [ -u user ] for devel/multi-db installs } diff --git a/FS/bin/freeside-upgrade b/FS/bin/freeside-upgrade index 3a4e4f8e3..5c646fec2 100755 --- a/FS/bin/freeside-upgrade +++ b/FS/bin/freeside-upgrade @@ -46,6 +46,12 @@ dbdef_create($dbh, $dbdef_file); $dbh->disconnect or die $dbh->errstr; +unless ( $DRY_RUN ) { + my $init_config = "freeside-init-config -u $user "; + $init_config .= "%%%FREESIDE_CONF%%%/conf.". datasrc; + system "$init_config" ; +} + ### sub dbdef_create { # reverse engineer the schema from the DB and save to file @@ -64,7 +70,7 @@ freeside-upgrade - Upgrades database schema for new freeside verisons. =head1 SYNOPSIS - freeside-adduser [ -d ] [ -q | -v ] + freeside-upgrade [ -d ] [ -q | -v ] =head1 DESCRIPTION |