/usr/bin/mojomojo_spawn_db.pl is in libmojomojo-perl 1.11+dfsg-3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | #!/usr/bin/env perl
=head1 NAME
mojomojo_spawn_db.pl - hash plain text passwords
=head1 AUTHOR
Jonathan Rockway <jrockway@cpan.org>
=head1 COPYRIGHT
2007 Jonathan Rockway <jrockway@cpan.org>
=cut
BEGIN { $ENV{CATALYST_DEBUG} = 0 }
use strict;
use warnings;
use FindBin '$Bin';
use lib "$Bin/../lib";
use MojoMojo::Schema;
use Config::JFDI;
use Getopt::Long;
my $jfdi = Config::JFDI->new(name => "MojoMojo");
my $config = $jfdi->get;
my ($dsn, $user, $password, $unicode_option);
my $default_user = $ENV{USER} || 'unknown';
my %opts = (
wiki_name => $config->{name},
admin_username => 'admin',
admin_password => 'admin',
admin_fullname => $default_user,
admin_email => "$default_user\@localhost",
anonymous_email => 'anonymous.coward@localhost',
);
my $help;
GetOptions(
'help' => \$help,
'dsn:s' => \$dsn,
'db-user:s' => \$user,
'db-password:s' => \$password,
'wiki:s' => \$opts{wiki_name},
'admin-username:s' => \$opts{admin_username},
'admin-password:s' => \$opts{admin_password},
'admin-fullname:s' => \$opts{admin_fullname},
'admin-email:s' => \$opts{admin_email},
'anon-email:s' => \$opts{anonymous_email},
);
if ($help) {
print <<"EOF";
mojomojo_spawn_db.pl ...
This script looks in the mojomojo.conf file for database connection
info if none is passed on the command line. Set the MOJOMOJO_CONFIG
environment variable to tell it where the file is.
Accepts the following options:
--dsn Default taken from mojomojo.conf
--db-user Default taken from mojomojo.conf
--db-password Default taken from mojomojo.conf
--wiki Wiki name, default taken from mojomojo.conf
--admin-username Admin username, default is admin
--admin-password Admin password, default is admin
--admin-fullname Admin name, default is $default_user
--admin-email Admin email address, default is $default_user\@localhost
--anon-email Anon user email address, default is anonymous.coward\@localhost
EOF
exit;
}
eval {
if (!$dsn)
{
if (ref $config->{'Model::DBIC'}->{'connect_info'}) {
$dsn = $config->{'Model::DBIC'}->{'connect_info'}->{dsn};
$user = $config->{'Model::DBIC'}->{'connect_info'}->{user};
$password = $config->{'Model::DBIC'}->{'connect_info'}->{password};
# Determine database type amongst: SQLite, Pg or MySQL
my $db_type = lc($dsn =~ m/^dbi:(\w+)/);
my %unicode_connection_for_db = (
'sqlite' => { sqlite_unicode => 1 },
'pg' => { pg_enable_utf8 => 1 },
'mysql' => { mysql_enable_utf8 => 1 },
);
$unicode_option = $unicode_connection_for_db{$db_type};
}
else {
$dsn = $config->{'Model::DBIC'}->{'connect_info'};
}
}
};
if ($@) {
die "Your DSN line in mojomojo.conf doesn't look like a valid DSN."
. " Add one, or pass it on the command line.";
}
die "No valid Data Source Name (DSN).\n" if !$dsn;
$dsn =~ s/__HOME__/$FindBin::Bin\/\.\./g;
my $schema = MojoMojo::Schema->connect($dsn, $user, $password, $unicode_option)
or die "Failed to connect to database";
# Check if database is already deployed by
# examining if the table Person exists and has a record.
eval { $schema->resultset('MojoMojo::Schema::Result::Person')->count };
if (!$@) {
die "You have already deployed your database\n";
}
print <<"EOF";
Creating a new wiki ...
dsn: $dsn
wiki name: $opts{wiki_name}
admin username: $opts{admin_username}
admin password: $opts{admin_password}
admin name: $opts{admin_fullname}
admin email: $opts{admin_email}
anon email: $opts{anonymous_email}
EOF
print "Deploying schema to $dsn\n";
$schema->deploy;
$schema->create_initial_data($config, \%opts);
|