user_create_post.sh
Just an update of my original sample code. It's gotten much more involved over the last few months.
#!/usr/bin/perl
&update_aliases;
&log;
if ( $ENV{usertype} eq 'reseller' && $ENV{package} eq 'wholesale' ) {
`cp -R /home/freesites/domains/default/ /home/$ENV{username}/domains/default/`;
`cp -R -f /home/reseller/* /usr/local/directadmin/data/users/$ENV{username}/`;
`chown -R diradmin:diradmin /usr/local/directadmin/data/users/$ENV{username}`;
# `cp -R /usr/local/directadmin/data/users/freesites/packages/webstore.pkg /usr/local/directadmin/data/users/$ENV{username}/packages/ `;
# `cp -R /usr/local/directadmin/data/users/freesites/packages.list /usr/local/directadmin/data/users/$ENV{username}/ `;
# `chown -R $ENV{username}:$ENV{username} /home/$ENV{username}/domains/default/ `;
# `chown -R $ENV{username}:$ENV{username} /usr/local/directadmin/data/users/$ENV{username}/packages/ `;
}
if ( $ENV{package} eq 'webstore' ) {
$database = $ENV{username} . "_" . $ENV{domain} . "_oscommerce";
$database =~ s/\./_/g;
if ( $ENV{creator} eq 'just1host' ) {
`cp -R -p /var/lib/mysql/demo1_demo_just1host_com_oscommerce /var/lib/mysql/$database`;
} else {
`cp -R -p /var/lib/mysql/admin_oscommerce /var/lib/mysql/$database`;
}
`ln -s /home/admin/domains/sharedip/wh1 /home/$ENV{username}/domains/$ENV{domain}/public_html/catalog/images/wh1`;
`chmod -R go+w /home/$ENV{username}/domains/$ENV{domain}/public_html/catalog`;
`chmod 444 /home/$ENV{username}/domains/$ENV{domain}/public_html/catalog/includes/configure.php`;
`chmod 444 /home/$ENV{username}/domains/$ENV{domain}/public_html/catalog/admin/includes/configure.php`;
if ( $database =~ /wholesale/ ) {
`/home/admin/scripts/update_store_stock_status.pl $database`;
}
&create_mysql_user;
&create_osc_admin;
}
if ( $ENV{package} ne 'webstore' && $ENV{creator} ne 'freestores') {
`rm -r -f /home/$ENV{username}/domains/$ENV{domain}/public_html/catalog`;
`rm -f /home/$ENV{username}/domains/$ENV{domain}/public_html/.htaccess`;
}
if ( $ENV{creator} eq 'freestores' ) {
$database = $ENV{username} . "_store";
`cp -R -p /var/lib/mysql/admin_store /var/lib/mysql/$database`;
`chmod -R go+w /home/$ENV{username}/domains/$ENV{domain}/public_html/catalog`;
`chmod 444 /home/$ENV{username}/domains/$ENV{domain}/public_html/catalog/includes/configure.php`;
`chmod 444 /home/$ENV{username}/domains/$ENV{domain}/public_html/catalog/admin/includes/configure.php`;
&create_store_mysql_user;
&create_store_admin;
}
exit;
sub create_store_mysql_user {
use DBI();
$dbh = DBI->connect("dbi:mysql:host=localhost","adminusername","xxxxxx");
$dbh->do("GRANT USAGE ON * . * TO '$ENV{username}_store'\@'localhost';");
$dbh->do("GRANT ALL PRIVILEGES ON `$database` . * TO '$ENV{username}_store'\@'localhost' WITH GRANT OPTION ;");
$dbh->do("SET PASSWORD FOR '$ENV{username}_store'\@'localhost' = PASSWORD('xxxxxx') ");
$dbh->do("FLUSH PRIVILEGES;");
$dbh->disconnect();
}
sub create_store_admin {
$dbh2 = DBI->connect("dbi:mysql:database=$database:host=localhost","$ENV{username}_store","xxxxxx");
$dbh2->do("INSERT INTO `admin` ( `admin_groups_id`, `admin_firstname`, `admin_lastname`, `admin_email_address`, `admin_password` ) VALUES ( '1', 'Store', 'Owner', '$ENV{email}', '901d1d6a604293aa3c58b3f5ff56757c:74') ") || print "Admin Creation Failed";
$dbh2->disconnect();
}
sub create_mysql_user {
use DBI();
$dbh = DBI->connect("dbi:mysql:host=localhost","adminaccount","xxxxxx");
$dbh->do("GRANT USAGE ON * . * TO '$ENV{username}_osc'\@'localhost';");
$dbh->do("GRANT ALL PRIVILEGES ON `$database` . * TO '$ENV{username}_osc'\@'localhost' WITH GRANT OPTION ;");
$dbh->do("SET PASSWORD FOR '$ENV{username}_osc'\@'localhost' = PASSWORD('xxxxxx') ");
$dbh->do("FLUSH PRIVILEGES;");
$dbh->disconnect();
}
sub create_osc_admin {
$dbh2 = DBI->connect("dbi:mysql:database=$database:host=localhost","$ENV{username}_osc","xxxxxx");
$dbh2->do("INSERT INTO `admin` ( `admin_groups_id`, `admin_firstname`, `admin_lastname`, `admin_email_address`, `admin_password` ) VALUES ( '1', 'Store', 'Owner', '$ENV{email}', '901d1d6a604293aa3c58b3f5ff56757c:74') ") || print "Admin Creation Failed";
$dbh2->disconnect();
}
sub update_aliases {
open (ALIASES, "/etc/virtual/$ENV{domain}/aliases");
while (<ALIASES>) {
chomp ($line = $_);
$line =~ s/:fail:/$ENV{email}/g;
$temp .= "$line\n";
}
close ALIASES;
open (ALIASES, "> /etc/virtual/$ENV{domain}/aliases");
print ALIASES $temp;
close ALIASES;
`rm -f -r /home/$ENV{username}/domains/$ENV{domain}/private_html/`;
`ln -s /home/$ENV{username}/domains/$ENV{domain}/public_html /home/$ENV{username}/domains/$ENV{domain}/private_html`;
}
sub log {
open (FILE, "> ./outfile");
foreach $key (sort keys %ENV) {
print FILE $key . ":" . $ENV{$key} . "\n";
}
}