1
0
mirror of https://github.com/ZeroDream-CN/PHPMC7 synced 2024-11-30 17:52:52 +08:00
PHPMC7/install/index.php

173 lines
7.4 KiB
PHP

<?php
/**
*
* PHPMC 7 Install
*
*/
error_reporting(E_ALL);
function install() {
$db_host = $_POST['db_host'];
$db_port = $_POST['db_port'];
$db_user = $_POST['db_user'];
$db_pass = $_POST['db_pass'];
$db_name = $_POST['db_name'];
$SiteName = $_POST['SiteName'];
$Description = $_POST['Description'];
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
if(!preg_match("/^[A-Za-z0-9\-\_\.]+$/", $db_host)) {
echo "<script>alert('数据库地址不合法!');location='?step=2';</script>";
exit;
}
if(!preg_match("/^[0-9]+$/", $db_port)) {
echo "<script>alert('数据库端口不合法!');location='?step=2';</script>";
exit;
}
if(!preg_match("/^[A-Za-z0-9\-\_\.]+$/", $db_user)) {
echo "<script>alert('数据库账号不合法!');location='?step=2';</script>";
exit;
}
if(empty($db_pass)) {
echo "<script>alert('数据库密码不能为空!');location='?step=2';</script>";
exit;
}
if(!preg_match("/^[A-Za-z0-9\-\_\.]+$/", $db_name)) {
echo "<script>alert('数据库名称不合法!');location='?step=2';</script>";
exit;
}
if(empty($SiteName)) {
$SiteName = "PHPMC 7";
}
if(empty($Description)) {
$Description = "Minecraft 服务器管理系统";
}
if(!preg_match("/^[A-Za-z0-9\-\_\.]+$/", $username)) {
echo "<script>alert('管理员账号不合法!');location='?step=2';</script>";
exit;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "<script>alert('管理员邮箱不合法!');location='?step=2';</script>";
exit;
}
if(empty($password)) {
echo "<script>alert('管理员密码不能为空!');location='?step=2';</script>";
exit;
}
if($password !== $password2) {
echo "<script>alert('两次密码输入不一致!');location='?step=2';</script>";
exit;
}
$db_port = Intval($db_port);
$password = password_hash(md5($password), PASSWORD_BCRYPT);
$conn = mysqli_connect($db_host, $db_user, $db_pass, "", $db_port) or die("<script>alert('无法连接到 MySQL 数据库,请检查。错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_select_db($conn, $db_name) or die("<script>alert('数据库 {$db_name} 不存在!');location='?step=2';</script>");
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "SET FOREIGN_KEY_CHECKS=0;") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "CREATE TABLE `daemon` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`host` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`pass` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '',
`type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`fqdn` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "CREATE TABLE `option` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`value` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "CREATE TABLE `servers` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`daemon` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`maxram` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`jar` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`startcommand` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`stopcommand` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`owner` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`port` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`uuid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`ftppass` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "CREATE TABLE `users` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`username` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`permission` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "INSERT INTO `option` VALUES ('1', 'loginFailed', '0');") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "INSERT INTO `option` VALUES ('2', 'SiteName', '{$SiteName}');") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "INSERT INTO `option` VALUES ('3', 'Description', '{$Description}');") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "INSERT INTO `option` VALUES ('4', 'Theme', 'PHPMC7');") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "INSERT INTO `users` VALUES ('1', '{$username}', '{$password}', '{$email}', 'admin;');") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
mysqli_query($conn, "INSERT INTO `daemon` VALUES ('1', 'Example Daemon', 'http://127.0.0.1:21567/', '123456789', 'windows', '127.0.0.1');") or die("<script>alert('错误:" . mysqli_error($conn) . "');location='?step=2';</script>");
@file_put_contents("../include/data/config.php", '<?php
class Config {
public $conf = Array(
"MySQL" => Array(
"host" => "' . $db_host . '",
"port" => ' . $db_port . ',
"user" => "' . $db_user . '",
"pass" => "' . $db_pass . '",
"name" => "' . $db_name . '"
)
);
public function __call($method, $args) {
if(isset($this->conf[$method])) {
return $this->conf[$method];
} else {
return "";
}
}
public static function __callStatic($method, $args) {
$Config = new Config();
if(isset($Config->conf[$method])) {
return $Config->conf[$method];
} else {
return "";
}
}
}');
@file_put_contents("install.lock", "");
}
if(file_exists("install.lock")) {
echo @file_get_contents("template/locked.html");
exit;
}
if(isset($_GET['step'])) {
switch($_GET['step']) {
case '1':
echo @file_get_contents("template/1.html");
break;
case '2':
echo @file_get_contents("template/2.html");
break;
case '3':
install();
$type = $_SERVER['SERVER_PORT'] == 443 ? "https://" : "http://";
$self = str_replace("index.php", "?installed=true", str_replace("install/", "", $_SERVER['PHP_SELF']));
$connect = "{$type}{$_SERVER['HTTP_HOST']}{$self}";
echo str_replace("{HOME}", $connect, @file_get_contents("template/3.html"));
break;
default:
echo @file_get_contents("template/1.html");
break;
}
exit;
} else {
echo @file_get_contents("template/1.html");
exit;
}