c4a78575b695caf3fe78bed715c6d80bfba94d07
bernd Webapp-Installer, erste Ver...

bernd authored 15 years ago

1) <?php
2) 
3) require_once('inc/base.php');
4) 
5) function create_new_webapp($appname, $directory, $url, $data)
6) {
bernd Doppelte webapp-installer-t...

bernd authored 15 years ago

7)   if (directory_in_use($directory))
bernd Bugfixes beim Webapp-installer

bernd authored 15 years ago

8)     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.');
bernd Webapp-Installer, erste Ver...

bernd authored 15 years ago

9)   $username = mysql_real_escape_string($_SESSION['userinfo']['username']);
10)   $appname = mysql_real_escape_string($appname);
11)   $directory = mysql_real_escape_string($directory);
12)   $url = mysql_real_escape_string($url);
13)   $data = mysql_real_escape_string($data);
bernd Bugfixes beim Webapp-installer

bernd authored 15 years ago

14)   db_query("INSERT INTO vhosts.webapp_installer (appname, directory, url, state, username, data) VALUES ('{$appname}', '{$directory}', '{$url}', 'new', '{$username}', '{$data}')");
bernd Webapp-Installer, erste Ver...

bernd authored 15 years ago

15) }
16) 
17) 
bernd * alle internen Links sinnv...

bernd authored 15 years ago

18) function request_update($appname, $directory, $url)
19) {
bernd Doppelte webapp-installer-t...

bernd authored 15 years ago

20)   if (directory_in_use($directory))
21)     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.');
bernd * alle internen Links sinnv...

bernd authored 15 years ago

22)   $username = mysql_real_escape_string($_SESSION['userinfo']['username']);
23)   $appname = mysql_real_escape_string($appname);
24)   $directory = mysql_real_escape_string($directory);
25)   $url = maybe_null(mysql_real_escape_string($url));
bernd Bugfixes beim Webapp-installer

bernd authored 15 years ago

26)   db_query("INSERT INTO vhosts.webapp_installer (appname, directory, url, state, username) VALUES ('{$appname}', '{$directory}', {$url}, 'old', '{$username}')");
bernd * alle internen Links sinnv...

bernd authored 15 years ago

27) }
28) 
bernd Doppelte webapp-installer-t...

bernd authored 15 years ago

29) function directory_in_use($directory)
30) {
31)   $directory = mysql_real_escape_string($directory);
bernd Bugfixes beim Webapp-installer

bernd authored 15 years ago

32)   $result = db_query("SELECT id FROM vhosts.webapp_installer WHERE (state IN ('new','old') OR DATE(lastchange)=CURDATE()) AND directory='{$directory}'");
bernd Doppelte webapp-installer-t...

bernd authored 15 years ago

33)   if (mysql_num_rows($result) > 0)
34)     return true;
35)   return false;
36) }
bernd * alle internen Links sinnv...

bernd authored 15 years ago

37) 
38) function upgradeable($appname, $version)
39) {
40)   DEBUG("Is {$appname}-{$version} upgradeable?");
41)   if ($appname == 'Drupal')
42)   {
43)     DEBUG("found Drupal!");
44)     if (substr($version, 0, 2) == '6.')
45)     {
46)       DEBUG("found Drupal-6.*!");
47)       return 'drupal6';
48)     }
49)     DEBUG("Version: ".substr($version, 0, 2));
50)   }
bernd Bugfixes beim Webapp-installer

bernd authored 15 years ago

51)   elseif ($appname == 'MediaWiki')
52)   {
53)     DEBUG("found MediaWiki");
54)     return 'mediawiki';
55)   }
bernd * alle internen Links sinnv...

bernd authored 15 years ago

56)   DEBUG("found no upgradeable webapp!");
57)   return NULL;
58) }
59) 
60) 
61) function get_url_for_dir($docroot, $cutoff = '')
62) {
63)   if (substr($docroot, -1) == '/')
64)     $docroot = substr($docroot, 0, -1);
65)   $docroot = mysql_real_escape_string($docroot);
66)   $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");
67)   if (mysql_num_rows($result) < 1)
68)   {
69)     if (!strstr($docroot, '/'))
70)       return NULL;
71)     return get_url_for_dir(substr($docroot, 0, strrpos($docroot, '/')), substr($docroot, strrpos($docroot, '/')).$cutoff);
72)   } 
73)   $tmp = mysql_fetch_assoc($result);
74)   $prefix = 'http://';
75)   if ($tmp['ssl'] == 'forward' || $tmp['ssl'] == 'https')
76)     $prefix = 'https://';
77)   return $prefix.$tmp['fqdn'].$cutoff;
78) }
79) 
80) 
bernd Frage Datenbank-Kürzel nich...

bernd authored 15 years ago

81) function create_webapp_mysqldb($application, $sitename)
bernd Webapp-Installer, erste Ver...

bernd authored 15 years ago

82) {
83)   // dependet auf das mysql-modul
84)   require_once('modules/mysql/include/mysql.php'); 
85)   
86)   $username = mysql_real_escape_string($_SESSION['userinfo']['username']);
bernd Frage Datenbank-Kürzel nich...

bernd authored 15 years ago

87)   $description = "Automatisch erzeugte Datenbank für {$application} ({$sitename})";
bernd Webapp-Installer, erste Ver...

bernd authored 15 years ago

88)   
bernd Frage Datenbank-Kürzel nich...

bernd authored 15 years ago

89)   // zuerst versuchen wir username_webappname. Wenn das nicht klappt, dann wird hochgezählt
90)   $handle = $username.'_'.$application;
91)   
92)   if (validate_mysql_username($handle) && validate_mysql_dbname($handle) && ! (has_mysql_user($handle) || has_mysql_database($handle)))
bernd Webapp-Installer, erste Ver...

bernd authored 15 years ago

93)   {
bernd stringlänge mit strlen und...

bernd authored 15 years ago

94)     logger(LOG_INFO, "webapps/include/webapp-installer", "create", "creating db and user »{$handle}«");
bernd Frage Datenbank-Kürzel nich...

bernd authored 15 years ago

95)     create_mysql_database($handle, $description);
96)     create_mysql_account($handle, $description);
97)     set_mysql_access($handle, $handle, true);
98)     $password = random_string(10);
99)     set_mysql_password($handle, $password);
100)     return array('dbuser' => $handle, 'dbname' => $handle, 'dbpass' => $password);
bernd Webapp-Installer, erste Ver...

bernd authored 15 years ago

101)   }
102) 
bernd Frage Datenbank-Kürzel nich...

bernd authored 15 years ago

103)   for ($i = 0; $i < 100 ; $i++) {
104)     $handle = $username.'_'.$i;
105)     if (validate_mysql_username($handle) && validate_mysql_dbname($handle) && ! (has_mysql_user($handle) || has_mysql_database($handle)))
106)     {
bernd stringlänge mit strlen und...

bernd authored 15 years ago

107)       logger(LOG_INFO, "webapps/include/webapp-installer", "create", "creating db and user »{$handle}«");
bernd Bugfixes beim Webapp-installer

bernd authored 15 years ago

108)       create_mysql_database($handle, $description);
109)       create_mysql_account($handle, $description);
bernd Frage Datenbank-Kürzel nich...

bernd authored 15 years ago

110)       set_mysql_access($handle, $handle, true);
111)       $password = random_string(10);
112)       set_mysql_password($handle, $password);
113)       return array('dbuser' => $handle, 'dbname' => $handle, 'dbpass' => $password);
114)     }
bernd Webapp-Installer, erste Ver...

bernd authored 15 years ago

115)   }
bernd Frage Datenbank-Kürzel nich...

bernd authored 15 years ago

116)   system_failure('Konnte keine Datenbank erzeugen. Bitte melden Sie diesen Umstand den Administratoren!');