aboutsummaryrefslogtreecommitdiff
blob: 8bb3515b1e973829c02add44014ae9175082ea8d (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
<?

    // Gentoaster installer
    // Licensed under GPL v3, see COPYING file
    
    // Check we're running as root
    $processUser = posix_getpwuid(posix_geteuid());
    if($processUser['name'] != "root") {
    	die("This installer must be run as root\n");
    }
    
    // Load the configurations (the web config chainloads the daemon config)
    echo "Loading configuration\n";
    require_once "web/config.php";
    
    // Basic configuration path sanity checks
    echo "Checking configuration sanity\n";
    if(!file_exists(GENTOASTER_PATH."/install.php")) {
    	die("GENTOASTER_PATH is set incorrectly\n");
    }
    
    // Check database configuration is sane 
    echo "Connecting to database\n";
    $db = new mysqli(
        MYSQL_HOSTNAME, 
        MYSQL_USERNAME,
        MYSQL_PASSWORD
    );
        
    if (mysqli_connect_errno()) {
       die("Could not connect to MySQL server: ".mysqli_connect_error()."\n");
    }
    
    // If we reached here, MySQL details are fine
    echo "Database connection is OK\n";
    
    
    // Make sure we have a dump file to use
    if (file_exists(GENTOASTER_PATH."/gentoaster.sql")) {
    	// Prep MySQL details for shell args
	    $mysqlHostname = escapeshellarg(MYSQL_HOSTNAME);
	    $mysqlUsername = escapeshellarg(MYSQL_USERNAME);
	    $mysqlDatabase = mysql_escape_string(MYSQL_DATABASE);
	    
	    // Create shell component for password if required
	    if (strlen(MYSQL_PASSWORD) > 0) {
	    	$mysqlPassword = " -p ".escapeshellarg(MYSQL_PASSWORD)." ";
	    } else {
	    	$mysqlPassword = " ";
	    }
	    
	    // Drop any existing database here
	    system('echo "DROP DATABASE IF EXISTS '.$mysqlDatabase.';" | mysql -u '.$mysqlUsername.$mysqlPassword);
	    
	    // Create a new database
	    system('echo "CREATE DATABASE '.$mysqlDatabase.';" | mysql -u '.$mysqlUsername.$mysqlPassword);
	    
	    // Import the database dump into that database
	    system('mysql -u '.$mysqlUsername.$mysqlPassword.$mysqlDatabase.' < gentoaster.sql');
    } else {
    	die("SQL file not found, check GENTOASTER_PATH\n");
    }
    
    // Add the initscript for the daemon
    echo "Adding initscript symlink\n";
    system("rm -f /etc/init.d/gentoaster");
    system("ln -s ".GENTOASTER_PATH."/gentoaster /etc/init.d/gentoaster");
    system("chmod +x ".GENTOASTER_PATH."/gentoaster");
    
    echo "Starting Gentoaster daemon\n";
    exec("/etc/init.d/gentoaster start");
    
   	echo "If you didn't see any errors, the install was successful\n";
   	echo "Try visiting the site at ".GENTOASTER_URL." to make sure everything works\n";