from dialog import Dialog␊ |
from subprocess import call␊ |
import sys␊ |
import os␊ |
␊ |
# This is almost always a good thing to do at the beginning of your programs.␊ |
locale.setlocale(locale.LC_ALL, '')␊ |
|
AuthUserFile /home/svn/dav_svn.passwd␊ |
</Location>␊ |
"""␊ |
d = Dialog(dialog="dialog", autowidgetsize=True)␊ |
distro = ""␊ |
␊ |
def install_debian_package(package):␊ |
d.infobox(package, title="Installing...")␊ |
# install package␊ |
GIT_DAEMON_CONF = """#!/bin/sh␊ |
exec 2>&1␊ |
echo 'git-daemon starting.'␊ |
exec chpst -ugit:git \␊ |
"$(git --exec-path)"/git-daemon --verbose --base-path=/home/git/repositories /home/git/repositories␊ |
"""␊ |
␊ |
HTACCESS = """␊ |
Options +FollowSymLinks␊ |
RewriteEngine On␊ |
RewriteCond %{REQUEST_FILENAME} !-f␊ |
RewriteCond %{REQUEST_FILENAME} !-d␊ |
RewriteRule ^(.*) /index.php/$1␊ |
"""␊ |
␊ |
FINAL_MSG = """␊ |
I did NOT modify Apache for you -␊ |
In /etc/apache2/sites-available you should find 3 files:␊ |
[1] - indefero.base - this is what is needed for private repos␊ |
[2] - indefero.svn - this is what is needed for subversion repos␊ |
[3] - indefero.hg - this is what is needed for mercurial repos␊ |
Add what you want into your virtualhost config␊ |
SUBVERSION AND MERCURIAL WILL NOT WORK OTHERWISE!␊ |
␊ |
Please add the following to your sudoers (visudo) file - this grants Apache the ability to reload itself:␊ |
www-data ALL=(ALL) NOPASSWD: /etc/init.d/apache2 reload␊ |
␊ |
You will need to edit /home/www/indefero/src/IDF/conf/idf.php and fill in your database information␊ |
Then run:␊ |
php /home/www/pluf/src/migrate.php --conf=IDF/conf/idf.php -a -i -d␊ |
Then finally to create the user:␊ |
php /home/www/indefero/scripts/bootstrap.php␊ |
to create the admin user (username: admin, password: admin)␊ |
"""␊ |
␊ |
AUTHBASIC_PATCH = """␊ |
--- Authbasic.php 2013-07-23 22:33:50.000000000 -0500␊ |
+++ /usr/share/php/File/Passwd/Authbasic.php 2013-06-03 19:07:37.000000000 -0500␊ |
@@ -17,7 +17,7 @@␊ |
* @author Michael Wallner <mike@php.net>␊ |
* @copyright 2003-2005 Michael Wallner␊ |
* @license http://www.php.net/license/3_0.txt PHP License 3.0␊ |
- * @version CVS: $Id$␊ |
+ * @version CVS: $Id: Authbasic.php,v 1.17 2005/03/30 18:33:33 mike Exp $␊ |
* @link http://pear.php.net/package/File_Passwd␊ |
*/␊ |
␊ |
@@ -52,7 +52,7 @@␊ |
*␊ |
* @author Michael Wallner <mike@php.net>␊ |
* @package File_Passwd␊ |
-* @version $Revision$␊ |
+* @version $Revision: 1.17 $␊ |
* @access public␊ |
*/␊ |
class File_Passwd_Authbasic extends File_Passwd_Common␊ |
@@ -79,7 +79,7 @@␊ |
* @var array␊ |
* @access private␊ |
*/␊ |
- var $_modes = array('md5' => 'm', 'des' => 'd', 'sha' => 's');␊ |
+ var $_modes = array('plain' => 'p', 'md5' => 'm', 'des' => 'd', 'sha' => 's');␊ |
␊ |
/**␊ |
* Constructor␊ |
@@ -298,7 +298,7 @@␊ |
$mode = strToLower($mode);␊ |
if (!isset($this->_modes[$mode])) {␊ |
return PEAR::raiseError(␊ |
- sprintf(FILE_PASSWD_E_INVALID_ENC_MODE_STR, $mode),␊ |
+ sprintf(FILE_PASSWD_E_INVALID_ENC_MODE_STR, $this->_mode),␊ |
FILE_PASSWD_E_INVALID_ENC_MODE␊ |
);␊ |
}␊ |
@@ -326,7 +326,9 @@␊ |
return File_Passwd::crypt_des($pass, $salt);␊ |
} elseif ($mode == 'sha') {␊ |
return File_Passwd::crypt_sha($pass, $salt);␊ |
- }␊ |
+ } elseif ($mode == 'plain') {␊ |
+ return $pass;␊ |
+ }␊ |
␊ |
return PEAR::raiseError(␊ |
sprintf(FILE_PASSWD_E_INVALID_ENC_MODE_STR, $mode),␊ |
␊ |
"""␊ |
␊ |
d = Dialog(dialog="dialog", autowidgetsize=True)␊ |
distro = ""␊ |
␊ |
def exit_msg():␊ |
print "Thank you for using the srchub installer\n"␊ |
print "Please send feedback to adamsna@datanethost.net"␊ |
␊ |
def install_cron_jobs():␊ |
return d.yesno("Do you want me to attempt to install the cron jobs?")␊ |
answer = d.yesno("Do you want me to attempt to install the cron jobs?")␊ |
if answer == d.DIALOG_OK:␊ |
d.infobox("Setting up cron jobs...")␊ |
commands = []␊ |
commands.append("0 1 * * * %s" % ("/usr/bin/php5 /home/www/indefero/scripts/activitycron.php"))␊ |
commands.append("*/5 * * * * %s" % ("/bin/sh /home/www/indefero/scripts/SyncMercurial.sh"))␊ |
commands.append("15 * * * * /usr/bin/php5 /home/www/indefero/scripts/calculateforgecron.php")␊ |
commands.append("*/5 * * * * /usr/bin/php5 /home/www/indefero/scripts/queuecron.php")␊ |
for command in commands:␊ |
call(["(crontab -l; echo '%s') | crontab" % command])␊ |
␊ |
def update_mercurial_hooks():␊ |
hgconf = ""␊ |
d.infobox("Checking for mercurial hooks...")␊ |
with open('/etc/mercurial/hgrc', 'r') as content_file:␊ |
hgconf = content_file.read()␊ |
if "hgchangegroup" not in hgconf:␊ |
hgconf += "\n[hooks]\nchangegroup = /home/www/indefero/scripts/hgchangegroup.php"␊ |
with open('/etc/mercurial/hgrc', 'w') as content_file:␊ |
content_file.write(hgconf)␊ |
␊ |
def setup_git_daemon():␊ |
d.infobox("Setting up git daemon...")␊ |
if not os.path.isfile("/etc/sv/git-daemon/run.srchub"):␊ |
call(["mv", "/etc/sv/git-daemon/run", "/etc/sv/git-daemon/run.srchub"])␊ |
with open('/etc/sv/git-daemon/run', 'w') as content_file:␊ |
content_file.write(GIT_DAEMON_CONF)␊ |
call(["adduser", "git"])␊ |
␊ |
def setup_web_links():␊ |
code, user_input = d.inputbox("I need to setup some web links. Where is your web root? (no leading slash)", init="/var/www")␊ |
call(["ln", "-s", "/home/www/indefero/www/index.php", "%s/index.php" % user_input])␊ |
call(["ln", "-s", "/home/www/indefero/www/media", "%s/media" % user_input])␊ |
with open("%s/.htaccess" % user_input, 'w') as content_file:␊ |
content_file.write(HTACCESS)␊ |
␊ |
def install_pear_modules():␊ |
call(["pear", "install", "File_Passwd"])␊ |
call(["pear", "upgrade-all"])␊ |
call(["pear", "install", "--alldeps", "Mail"])␊ |
call(["pear", "install", "--alldeps", "Mail_mime"])␊ |
␊ |
def fix_auth_basic():␊ |
with open('/tmp/patch', 'w') as content_file:␊ |
content_file.write(AUTHBASIC_PATCH)␊ |
call(["patch", "-N", "/usr/share/php/File/Passwd/Authbasic.php", "<", "/tmp/Authbasic.patch"])␊ |
call(["rm /tmp/patch"])␊ |
␊ |
def prep_apache():␊ |
call(["a2enmod", "rewrite"])␊ |
with open('/etc/apache2/sites-available/indefero.base', 'w') as content_file:␊ |
content_file.write(INDEFERO_BASE_APACHE)␊ |
with open('/etc/apache2/sites-available/indefero.hg', 'w') as content_file:␊ |
content_file.write(INDEFERO_HG_APACHE)␊ |
with open('/etc/apache2/sites-available/indefero.svn', 'w') as content_file:␊ |
content_file.write(INDEFERO_SVN_APACHE)␊ |
␊ |
def final_msg():␊ |
d.msgbox(FINAL_MSG)␊ |
␊ |
def install_package(package):␊ |
if distro == "Debian":␊ |
|
if code == d.OK:␊ |
d.gauge_start("Installing...")␊ |
packages = ["git", "mercurial", "subversion", "mariadb-server", "mariadb-client", "libapache2-mod-php5",␊ |
"php5-curl", "php5-mysql", "php5-cli", "git-daemon-run", "gitweb", "php-pear"]␊ |
"php5-curl", "php5-mysql", "php5-cli", "git-daemon-run", "gitweb", "php-pear", "patch"]␊ |
percent = 0␊ |
i = 0␊ |
for package in packages:␊ |
|
install_package(package)␊ |
i += 1␊ |
percent = (i / len(packages)) * 100␊ |
␊ |
d.gauge_stop()␊ |
␊ |
␊ |
d.set_background_title("Srchub Installer")␊ |
|
])␊ |
␊ |
if code == d.OK:␊ |
install_packages()␊ |
if tag == "1": # Install srchub␊ |
pass␊ |
call(["git", "clone", "git://srchub.org/srchub-git.git", "/home/www"])␊ |
␊ |
install_cron_jobs()␊ |
update_mercurial_hooks()␊ |
setup_git_daemon()␊ |
setup_web_links()␊ |
install_pear_modules()␊ |
fix_auth_basic()␊ |
prep_apache()␊ |
final_msg()␊ |
print FINAL_MSG␊ |
else: # Install indefero vanilla␊ |
pass␊ |
call(["git", "clone", "git://srchub.org/indefero.git", "/home/www/indefero"])␊ |
call(["git", "clone", "git://srchub.org/pluf2.git", "/home/www/pluf"])␊ |
␊ |
install_cron_jobs()␊ |
update_mercurial_hooks()␊ |
setup_git_daemon()␊ |
setup_web_links()␊ |
install_pear_modules()␊ |
prep_apache()␊ |
final_msg()␊ |
print FINAL_MSG␊ |
␊ |
␊ |
␊ |
␊ |
␊ |
exit_msg() |
exit_msg()␊ |
sys.exit() |