bernd commited on 2009-03-19 08:17:31
Zeige 5 geänderte Dateien mit 29 Einfügungen und 33 Löschungen.
git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1310 87cf0b9e-d624-0410-a070-f6ee81989793
... | ... |
@@ -9,14 +9,12 @@ function validate_data($post) |
9 | 9 |
{ |
10 | 10 |
DEBUG('Validating Data:'); |
11 | 11 |
DEBUG($post); |
12 |
- $fields = array('adminuser', 'adminpassword', 'adminemail', 'sitename', 'siteemail', 'dbhandle'); |
|
12 |
+ $fields = array('adminuser', 'adminpassword', 'adminemail', 'sitename', 'siteemail'); |
|
13 | 13 |
foreach ($fields AS $field) |
14 | 14 |
if ((! isset($post[$field])) || $post[$field] == '') |
15 | 15 |
system_failure('Nicht alle Werte angegeben ('.$field.')'); |
16 | 16 |
|
17 |
- $username = mysql_real_escape_string($_SESSION['userinfo']['username']); |
|
18 |
- $dbname = $username.'_'.$post['dbhandle']; |
|
19 |
- $dbpassword = create_webapp_mysqldb($post['dbhandle']); |
|
17 |
+ $dbdata = create_webapp_mysqldb('drupal6', $post['sitename']); |
|
20 | 18 |
|
21 | 19 |
$passwordhash = md5( $post['adminpassword'] ); |
22 | 20 |
|
... | ... |
@@ -25,9 +23,9 @@ adminpassword={$passwordhash} |
25 | 23 |
adminemail={$post['adminemail']} |
26 | 24 |
sitename={$post['sitename']} |
27 | 25 |
siteemail={$post['siteemail']} |
28 |
-dbname={$dbname} |
|
29 |
-dbuser={$dbname} |
|
30 |
-dbpass={$dbpassword}"; |
|
26 |
+dbname={$dbdata['dbname']} |
|
27 |
+dbuser={$dbdata['dbuser']} |
|
28 |
+dbpass={$dbdata['dbpass']}"; |
|
31 | 29 |
DEBUG($data); |
32 | 30 |
return $data; |
33 | 31 |
} |
... | ... |
@@ -9,14 +9,12 @@ function validate_data($post) |
9 | 9 |
{ |
10 | 10 |
DEBUG('Validating Data:'); |
11 | 11 |
DEBUG($post); |
12 |
- $fields = array('adminuser', 'adminpassword', 'adminemail', 'wikiname', 'dbhandle'); |
|
12 |
+ $fields = array('adminuser', 'adminpassword', 'adminemail', 'wikiname'); |
|
13 | 13 |
foreach ($fields AS $field) |
14 | 14 |
if ((! isset($post[$field])) || $post[$field] == '') |
15 | 15 |
system_failure('Nicht alle Werte angegeben ('.$field.')'); |
16 | 16 |
|
17 |
- $username = mysql_real_escape_string($_SESSION['userinfo']['username']); |
|
18 |
- $dbname = $username.'_'.$post['dbhandle']; |
|
19 |
- $dbpassword = create_webapp_mysqldb($post['dbhandle']); |
|
17 |
+ $dbdata = create_webapp_mysqldb('mediawiki', $post['wikiname']); |
|
20 | 18 |
|
21 | 19 |
$salt = random_string(8); |
22 | 20 |
$salthash = ':B:' . $salt . ':' . md5( $salt . '-' . md5( $post['adminpassword'] )); |
... | ... |
@@ -25,9 +23,9 @@ function validate_data($post) |
25 | 23 |
adminpassword={$salthash} |
26 | 24 |
adminemail={$post['adminemail']} |
27 | 25 |
wikiname={$post['wikiname']} |
28 |
-dbname={$dbname} |
|
29 |
-dbuser={$dbname} |
|
30 |
-dbpass={$dbpassword}"; |
|
26 |
+dbname={$dbdata['dbname']} |
|
27 |
+dbuser={$dbdata['dbuser']} |
|
28 |
+dbpass={$dbdata['dbpass']}"; |
|
31 | 29 |
DEBUG($data); |
32 | 30 |
return $data; |
33 | 31 |
} |
... | ... |
@@ -61,32 +61,40 @@ function get_url_for_dir($docroot, $cutoff = '') |
61 | 61 |
} |
62 | 62 |
|
63 | 63 |
|
64 |
-function create_webapp_mysqldb($handle) |
|
64 |
+function create_webapp_mysqldb($application, $sitename) |
|
65 | 65 |
{ |
66 | 66 |
// dependet auf das mysql-modul |
67 | 67 |
require_once('modules/mysql/include/mysql.php'); |
68 | 68 |
|
69 | 69 |
$username = mysql_real_escape_string($_SESSION['userinfo']['username']); |
70 |
- if ($handle == '') |
|
71 |
- input_error('Kein Datenbank-Handle angegeben'); |
|
72 |
- $handle = $username.'_'.$handle; |
|
70 |
+ $description = "Automatisch erzeugte Datenbank für {$application} ({$sitename})"; |
|
73 | 71 |
|
74 |
- if (! validate_mysql_username($handle)) |
|
75 |
- { |
|
76 |
- system_failure('Ungültiges MySQL-Handle'); |
|
77 |
- } |
|
72 |
+ // zuerst versuchen wir username_webappname. Wenn das nicht klappt, dann wird hochgezählt |
|
73 |
+ $handle = $username.'_'.$application; |
|
78 | 74 |
|
79 |
- if (has_mysql_user($handle) || has_mysql_database($handle)) |
|
75 |
+ if (validate_mysql_username($handle) && validate_mysql_dbname($handle) && ! (has_mysql_user($handle) || has_mysql_database($handle))) |
|
80 | 76 |
{ |
81 |
- system_failure('Eine Datenbank oder einen Datenbank-Benutzer mit diesem Namen gibt es bereits!'); |
|
77 |
+ create_mysql_database($handle, $description); |
|
78 |
+ create_mysql_account($handle, $description); |
|
79 |
+ set_mysql_access($handle, $handle, true); |
|
80 |
+ $password = random_string(10); |
|
81 |
+ set_mysql_password($handle, $password); |
|
82 |
+ return array('dbuser' => $handle, 'dbname' => $handle, 'dbpass' => $password); |
|
82 | 83 |
} |
83 | 84 |
|
85 |
+ for ($i = 0; $i < 100 ; $i++) { |
|
86 |
+ $handle = $username.'_'.$i; |
|
87 |
+ if (validate_mysql_username($handle) && validate_mysql_dbname($handle) && ! (has_mysql_user($handle) || has_mysql_database($handle))) |
|
88 |
+ { |
|
84 | 89 |
create_mysql_database($handle); |
85 | 90 |
create_mysql_account($handle); |
86 | 91 |
set_mysql_access($handle, $handle, true); |
87 | 92 |
$password = random_string(10); |
88 | 93 |
set_mysql_password($handle, $password); |
89 |
- return $password; |
|
94 |
+ return array('dbuser' => $handle, 'dbname' => $handle, 'dbpass' => $password); |
|
95 |
+ } |
|
96 |
+ } |
|
97 |
+ system_failure('Konnte keine Datenbank erzeugen. Bitte melden Sie diesen Umstand den Administratoren!'); |
|
90 | 98 |
} |
91 | 99 |
|
92 | 100 |
|
... | ... |
@@ -64,10 +64,6 @@ else |
64 | 64 |
<h5>E-Mail-Adresse der Seite</h5> |
65 | 65 |
<p>Wenn die Website E-Mails versendet (z.B. für neue Benutzer, bei kommentaren auf einzelnen Seiten, ...) erscheint diese Adresse als Absender. |
66 | 66 |
<p><label for="siteemail">E-Mail-Adresse:</label> <input type="text" id="siteemail" name="siteemail" value="'.$_SESSION['userinfo']['username'].'@'.$config['masterdomain'].'" /></p> |
67 |
- |
|
68 |
- <h5>Datenbank-Kürzel</h5> |
|
69 |
- <p>Drupal benötigt eine MySQL-Datenbank. Dieses Programm wird automatisch eine Datenbank für Sie anlegen. Damit Sie diese später erkennen und verwalten können, wird ein Kürzel benötigt. Der Name der Datenbank wird nachher aus Ihrem Benutzernamen und diesem Kürzel erzeugt. Die Eingabe hier darf keine Leer- oder Sonderzeichen enthalten und nur wenige Zeichen lang sein.</p> |
|
70 |
- <p><label for="dbhandle">Kürzel für Datenbankname:</label> <input type="text" name="dbhandle" id="dbhandle" value="drupal6" /></p> |
|
71 | 67 |
</div> |
72 | 68 |
|
73 | 69 |
<h4>Drupal-Administrator</h4> |
... | ... |
@@ -60,10 +60,6 @@ else |
60 | 60 |
<h5>Name des Wikis</h5> |
61 | 61 |
<p>Jedes MediaWiki benötigt einen griffigen Namen. Der Name kann entweder in »WikiSchreibweise« (zusammengezogene Wörter mit großgeschriebenen Anfangsbuchstaben) oder in normaler Schreibweise sein.</p> |
62 | 62 |
<p><label for="wikiname">Wiki-Name:</label> <input type="text" id="wikiname" name="wikiname" /></p> |
63 |
- |
|
64 |
- <h5>Datenbank-Kürzel</h5> |
|
65 |
- <p>Ein MediaWiki benötigt eine MySQL-Datenbank. Dieses Programm wird automatisch eine Datenbank für Sie anlegen. Damit Sie diese später erkennen und verwalten können, wird ein Kürzel benötigt. Der Name der Datenbank wird nachher aus Ihrem Benutzernamen und diesem Kürzel erzeugt. Die Eingabe hier darf keine Leer- oder Sonderzeichen enthalten und nur wenige Zeichen lang sein.</p> |
|
66 |
- <p><label for="dbhandle">Kürzel für Datenbankname:</label> <input type="text" name="dbhandle" id="dbhandle" value="wiki" /></p> |
|
67 | 63 |
</div> |
68 | 64 |
|
69 | 65 |
<h4>Wiki-Administrator</h4> |
70 | 66 |