blob: ad3fd2bf5ccc4dcb9bc090040e4ec73ad531ae66 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#!/usr/bin/php
<?php
require_once(dirname(__FILE__).'/shared/include/includes.php'); // USE __DIR__ in 5.3.0
function echo_and_query($q) {
global $pdo;
echo $q."\n";
return $pdo->query($q);
}
$interactive=posix_isatty(STDIN);
$opts=getopt('R');
$pdo=new PDO('mysql:host='.$conf['sqlhost'], $conf['sqluser'], $conf['sqlpass']);
if (isset($opts['R'])) {
echo_and_query('DROP DATABASE IF EXISTS `'.$conf['sqldb'].'`');
}
echo_and_query('CREATE DATABASE IF NOT EXISTS `'.$conf['sqldb'].'`'); // We can add charset and collate here if we want
echo_and_query('USE `'.$conf['sqldb'].'`');
sql_row_obj::set_pdo_obj($pdo);
foreach (get_declared_classes() as $class) {
if (!is_subclass_of($class, 'sql_row_obj')) {
continue;
}
$o=new $class(); // TODO this will be static once 5.3.0 is out
if (isset($opts['R'])) {
echo_and_query($o->drop_table());
}
echo_and_query($o->create_table());
}
foreach (get_pkgdirs() as $dir) {
echo 'Creating profile for '.$conf['pkgdir_root'].'/'.$dir.'...';
$profile=new sql_gentoo_profile();
$profile->pkgdir=$dir;
echo "done\n";
echo 'Loading data from '.$conf['pkgdir_root'].'/'.$dir.'/Packages...';
$profile->read_Packages();
echo "done\n";
}
do {
if ($user->email) {
echo 'Invalid entry: '.$user->email."\n";
}
echo 'Admin email address: ';
$user=new sql_user();
$user->email=trim(fgets(STDIN));
if (!$interactive) {
echo "\n";
}
} while (!Validate::email($user->email));
do {
if ($user->name) {
echo 'Invalid entry: '.$user->name."\n";
}
echo 'Admin display name: ';
$user->name=trim(fgets(STDIN));
if (!$interactive) {
echo "\n";
}
} while (!Validate::username($user->name));
if ($interactive) {
system('stty -echo');
}
do {
if ($pass && $passconfirm) {
echo "Entered passwords did not match. Try again.\n";
}
echo 'Admin password: ';
$pass=trim(fgets(STDIN));
echo "\nRepeat password: ";
$passconfirm=trim(fgets(STDIN));
echo "\n";
} while (!$pass || $pass != $passconfirm);
if ($interactive) {
system('stty echo');
}
$user->passhash=substr($pass, 0, 5)=='sha1:'?substr($pass, 5):sha1($pass);
$user->flags='a'; // Admin
$user->write();
?>
|