ispCP - Board - Support
Automatic subdomain creation PLUS more... - Printable Version

+- ispCP - Board - Support (http://www.isp-control.net/forum)
+-- Forum: ispCP Omega Contributions Area (/forum-40.html)
+--- Forum: Enhancements (/forum-43.html)
+--- Thread: Automatic subdomain creation PLUS more... (/thread-5573.html)



Automatic subdomain creation PLUS more... - bulforce - 01-30-2009 05:09 PM

Hello Everybody,

I have a little problem trying to figure out few things... Here is what i am trying to achieve.

I want users(random surfers) to be able to create new websites automatically as subdomains(for now, later as domains too).
But note that the site cannot be blank, i want them to have pre-installed CMS that i already have.

Currently i successfully created a web form that asks the user for the desired subdomain name and upon submit the domain is created in the system along with all files and directory structure. (dirty hack as usual)

However i get stuck on the point where the cms files needs to be copied in the newly created directory for the subdomain. I have tried php copy(), it was crying for basedir restrictions, disable it in php.ini but continue to cry "permissions denied". Then i decide to try shell_exec but it was crying because of disabled functions in effect, after removing the restriction there was no more errors, however no file was copied either. So i put everything back to normal in php.ini and start backtracing the normal creation of htdocs/* files... if i am not wrong it looks like its been handled by perl scripts withing the engine/ folder. Unfortunatelly perl is nothing that i know or even been exposed to, so i came here to ask for a little help.

How can i replace the default index page ?

here is my roadmap.
1. Automatic subdomain creation (Done, needs some tweaking)
2. Automatic Dump CMS files in /htdocs (STUCK)
3. Automatic Create mysql database and dump some data in it! (Pending)
4. Automatic Post Process (Pending)

Any help will be greatly appreciated.

Thank you


RE: Automatic subdomain creation PLUS more... - joximu - 01-30-2009 05:20 PM

put the cms here:
/var/www/ispcp/gui/domain_default_page


about automatic domain registraton:
take care that no foreign domains can be registered. eg. gmail.com, hotmail.com - otherwise a customer can register this domain on your server, add a catch-all account and then get all mails to gmail.com and hotmail.com from the other customers of your server who send mails using your server.

/J


RE: Automatic subdomain creation PLUS more... - bulforce - 01-30-2009 05:37 PM

I tried as you said just now, but nothing happened. All file permissions were set properly.
I wish it was that easy Smile


I am aware of the mail kidnapping variant, domain registration will be added in the future and will go trough some manual activation/validation.

Also the users wont get any access to the system at all anyway, just username and password for the cms.

Thanks

ADD:
Actually i just noticed the subdomain that i added while /var/www/ispcp/gui/domain_default_page was containing the CMS file. Is now displayed with status "Unknown Error" and i cannot even delete it trough the client interface.


RE: Automatic subdomain creation PLUS more... - ceco91 - 01-30-2009 06:22 PM

Make a tar.bz2 with you CMS file and put it in /var/www/ispcp/gui/domain_default_page.

You should edit some perl' files.
IN /var/www/ispcp/engine/ispcp-dmn-mngr you should add in "dmn_add_httpd_file_data()":

Code:
sys_command("$main::cfg{'CMD_CP'} -p $main::cfg{'GUI_ROOT_DIR'}/domain_default_page/<you archive> $www_dir/$dmn_name/htdocs");
#Now the archive is copied in your domain htdocs directory
sys_command("$main::cfg{'
CMD_TAR'} -jzf $www_dir/$dmn_name/htdocs<your archive>");
#You have your cms extracted
sys_command('$main::cfg{'CMD_CHOWN'} $sys_user:$sys_user $www_dir/$dmn_name/htdocs/* -R');
sys_command('$main::cfg{'CMD_CHMOD'} 0644 $www_dir/$dmn_name/htdocs/* -R');
sys_command('$main::cfg{'CMD_CP'} $www_dir/$dmn_name/htdocs/<your archive> -f');

I don't know how to configure the cms but this will deploy your cms, I think.

Sorry for editing. I use too much copy-paste Smile


RE: Automatic subdomain creation PLUS more... - bulforce - 01-31-2009 09:06 AM

Thank you for your reply!

However i have little bit different approach. I am trying to do all those file manipulations within the ispcp-sub-mngr right after
Code:
opendir(DIR, "$sub_dir/htdocs/images/");
        my @files = readdir(DIR);
        closedir(DIR);

        foreach (@files) {
            # ignore . and .. :
            next if ($_ eq "." || $_ eq "..");
            $rs = setfmode("$sub_dir/htdocs/images/$_", $sys_user, $sys_group, 0644);
            return $rs if ($rs != 0);
        }

Thanks to ceco that help me to understand better how ispcp and perl are working i can now write things like:
Code:
$rs = sys_command("$main::cfg{'CMD_CP'} -rp $main::cfg{'GUI_ROOT_DIR'}/domain_default_page/cms-pakage/* $sub_dir/htdocs/");
return $rs if ($rs != 0);
## Files were copied
Which works perfectly fine, however... the following
Code:
$rs = sys_command("$main::cfg{'CMD_RM'} $sub_dir/htdocs/images $sub_dir/htdocs/index.html -RF");
return $rs if ($rs != 0);
or
Code:
$rs = sys_command("$main::cfg{'CMD_TAR'} -zxv $sub_dir/htdocs/cms-pakage.tgz");
return $rs if ($rs != 0);
Are resulting an errors and putting the subdomain in a "Unknown Error" Status

Quick look at the ispcp mysql database reveals this error messages:
Code:
sys_command() | ERROR: External command '/bin/rm /var/www/virtual/abc.com//123/htdocs/images /var/www/virtual/abc.com//123/htdocs/index.html -R' returned '1' status !
and
sys_command() | ERROR: External command '/bin/tar -zxv /var/www/virtual/abc.com//123/htdocs/cms-pakage.tgz' returned '2' status !


I believe that the problem is with the //, and i am wondering why $sub_dir translates to //123 instead of /123

Any ideas ?

Thank you


RE: Automatic subdomain creation PLUS more... - ceco91 - 01-31-2009 07:48 PM

That means that your sub process has failed with error code 2.

You should test every command in bash window.


RE: Automatic subdomain creation PLUS more... - bulforce - 02-06-2009 08:50 AM

Just to let you know that i have some problems so i decide to upgrade ispcp to the latest nightly and now the commands are working good. I have few more questions if somebody can help me will be great.

1st
i have a file .../gui/tools/builder/adder.php that consist just of a modified subdomain add form. The data from the form is passed to modified copy of subdomain_add.php file that i am keeping in the same ..../builder/ dir.

I want to wrap my code in ispcp-sub-mngr with some if statement because now every subdomain i create no mather trough where is getting equiped with my cms files.
Here is the code:

Quote: foreach (@files) {
# ignore . and .. :
next if ($_ eq "." || $_ eq "..");
$rs = setfmode("$sub_dir/htdocs/images/$_", $sys_user, $sys_group, 0644);
return $rs if ($rs != 0);
}
## LINE 1524
## MOD "DEPLOY CMS"
$rs = sys_command("$main::cfg{'CMD_CP'} -rp $main::cfg{'GUI_ROOT_DIR'}/domain_default_page/cms-pakage/* $sub_dir/htdocs/");
return $rs if ($rs != 0);
## Files were copied
$rs = sys_command("$main::cfg{'CMD_RM'} -rf $sub_dir/htdocs/images $sub_dir/htdocs/index.html");
return $rs if ($rs != 0);

## END "DEPLOY CMS"


}

push_el(\@main::el, 'sub_add_httpd_file_data()', 'Ending...');

return 0;


2nd
Any ideas where should i start the automatic mysql db creation and the initial dump of data?

Thank you


RE: Automatic subdomain creation PLUS more... - ephigenie - 02-06-2009 09:02 AM

Right after you copied the data.
Just create a new db based on the subdomain name and then fill it with content from a dummy db maybe with importing a sql file into your newly created db like on a shell :

mysql --password=<newpass> -u <subuser> -p -U <newdb> < dummy-cms.sql

after it :
mysql --password=<newpass> -u <subuser> -p -U <newdb> -e "update users set password = crypt('newpassword');"
Or write it directly in perl this depends on your knowledge.
Have a look at the ispcp-setup or the upgrade script to find out how to do it in perl.


RE: Automatic subdomain creation PLUS more... - bulforce - 02-06-2009 09:18 AM

Thank you.

I will try your advice and will post back.