git.schokokeks.org
Repositories
Help
Report an Issue
webinterface.git
Code
Commits
Branches
Tags
Suche
Strukturansicht:
436ac80
Branches
Tags
master
ticket
webinterface.git
modules
webapps
include
webapp-installer.php
erlaube automatisches upgrade für drupal5
bernd
commited
436ac80
at 2009-11-20 09:54:46
webapp-installer.php
Blame
History
Raw
<?php require_once('inc/base.php'); function create_new_webapp($appname, $directory, $url, $data) { if (directory_in_use($directory)) system_failure('Sie haben erst kürzlich eine Anwendung in diesem Verzeichnis installieren lassen. Aus Sicherheitsgründen können Sie in diesem Verzeichnis am selben Tag nicht schon wieder eine Anwendung installieren.'); $username = mysql_real_escape_string($_SESSION['userinfo']['username']); $appname = mysql_real_escape_string($appname); $directory = mysql_real_escape_string($directory); $url = mysql_real_escape_string($url); $data = mysql_real_escape_string($data); db_query("INSERT INTO vhosts.webapp_installer (appname, directory, url, state, username, data) VALUES ('{$appname}', '{$directory}', '{$url}', 'new', '{$username}', '{$data}')"); } function request_update($appname, $directory, $url) { if (directory_in_use($directory)) system_failure('Sie haben erst kürzlich eine Anwendung in diesem Verzeichnis installieren lassen oder ein Update in diesem Verzeichnis angefordert. Bitte warten Sie bis diese Aktion durchgeführt wurde.'); $username = mysql_real_escape_string($_SESSION['userinfo']['username']); $appname = mysql_real_escape_string($appname); $directory = mysql_real_escape_string($directory); $url = maybe_null(mysql_real_escape_string($url)); db_query("INSERT INTO vhosts.webapp_installer (appname, directory, url, state, username) VALUES ('{$appname}', '{$directory}', {$url}, 'old', '{$username}')"); } function directory_in_use($directory) { $directory = mysql_real_escape_string($directory); $result = db_query("SELECT id FROM vhosts.webapp_installer WHERE (state IN ('new','old') OR DATE(lastchange)=CURDATE()) AND directory='{$directory}'"); if (mysql_num_rows($result) > 0) return true; return false; } function upgradeable($appname, $version) { DEBUG("Is {$appname}-{$version} upgradeable?"); if ($appname == 'Drupal') { DEBUG("found Drupal!"); if (substr($version, 0, 2) == '5.') { DEBUG("found Drupal-5.*!"); return 'drupal5'; } if (substr($version, 0, 2) == '6.') { DEBUG("found Drupal-6.*!"); return 'drupal6'; } DEBUG("Version: ".substr($version, 0, 2)); } elseif ($appname == 'MediaWiki') { DEBUG("found MediaWiki"); return 'mediawiki'; } DEBUG("found no upgradeable webapp!"); return NULL; } function get_url_for_dir($docroot, $cutoff = '') { if (substr($docroot, -1) == '/') $docroot = substr($docroot, 0, -1); $docroot = mysql_real_escape_string($docroot); $result = db_query("SELECT `ssl`, IF(FIND_IN_SET('aliaswww', options), CONCAT('www.',fqdn), fqdn) AS fqdn FROM vhosts.v_vhost WHERE docroot IN ('{$docroot}', '{$docroot}/') LIMIT 1"); if (mysql_num_rows($result) < 1) { if (!strstr($docroot, '/')) return NULL; return get_url_for_dir(substr($docroot, 0, strrpos($docroot, '/')), substr($docroot, strrpos($docroot, '/')).$cutoff); } $tmp = mysql_fetch_assoc($result); $prefix = 'http://'; if ($tmp['ssl'] == 'forward' || $tmp['ssl'] == 'https') $prefix = 'https://'; return $prefix.$tmp['fqdn'].$cutoff; } function create_webapp_mysqldb($application, $sitename) { // dependet auf das mysql-modul require_once('modules/mysql/include/mysql.php'); $username = mysql_real_escape_string($_SESSION['userinfo']['username']); $description = "Automatisch erzeugte Datenbank für {$application} ({$sitename})"; // zuerst versuchen wir username_webappname. Wenn das nicht klappt, dann wird hochgezählt $handle = $username.'_'.$application; if (validate_mysql_username($handle) && validate_mysql_dbname($handle) && ! (has_mysql_user($handle) || has_mysql_database($handle))) { logger(LOG_INFO, "webapps/include/webapp-installer", "create", "creating db and user »{$handle}«"); create_mysql_database($handle, $description); create_mysql_account($handle, $description); set_mysql_access($handle, $handle, true); $password = random_string(10); set_mysql_password($handle, $password); return array('dbuser' => $handle, 'dbname' => $handle, 'dbpass' => $password); } for ($i = 0; $i < 100 ; $i++) { $handle = $username.'_'.$i; if (validate_mysql_username($handle) && validate_mysql_dbname($handle) && ! (has_mysql_user($handle) || has_mysql_database($handle))) { logger(LOG_INFO, "webapps/include/webapp-installer", "create", "creating db and user »{$handle}«"); create_mysql_database($handle, $description); create_mysql_account($handle, $description); set_mysql_access($handle, $handle, true); $password = random_string(10); set_mysql_password($handle, $password); return array('dbuser' => $handle, 'dbname' => $handle, 'dbpass' => $password); } } system_failure('Konnte keine Datenbank erzeugen. Bitte melden Sie diesen Umstand den Administratoren!'); }