diff --git a/api/install.php b/api/install.php new file mode 100644 index 0000000..701b38f --- /dev/null +++ b/api/install.php @@ -0,0 +1,114 @@ +. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +if(file_exists("../config/config-user.php")) { + echo "Permission denied!"; + exit(); +} + +//Get input +$input = json_decode(file_get_contents('php://input')); + +//Database command +$sql = " +CREATE TABLE IF NOT EXISTS domains ( + id int(11) NOT NULL AUTO_INCREMENT, + name varchar(255) NOT NULL, + master varchar(128) DEFAULT NULL, + last_check int(11) DEFAULT NULL, + type varchar(6) NOT NULL, + notified_serial int(11) DEFAULT NULL, + account varchar(40) DEFAULT NULL, + PRIMARY KEY (id), + UNIQUE KEY name_index (name) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE IF NOT EXISTS permissions ( + user int(11) NOT NULL, + domain int(11) NOT NULL, + PRIMARY KEY (user,domain), + KEY domain (domain) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE IF NOT EXISTS records ( + id int(11) NOT NULL AUTO_INCREMENT, + domain_id int(11) DEFAULT NULL, + name varchar(255) DEFAULT NULL, + type varchar(6) DEFAULT NULL, + content varchar(255) DEFAULT NULL, + ttl int(11) DEFAULT NULL, + prio int(11) NOT NULL DEFAULT '0', + change_date int(11) DEFAULT NULL, + PRIMARY KEY (id), + KEY rec_name_index (name), + KEY nametype_index (name,type), + KEY domain_id (domain_id) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE IF NOT EXISTS user ( + id int(11) NOT NULL AUTO_INCREMENT, + name varchar(50) NOT NULL, + password varchar(200) NOT NULL, + type varchar(20) NOT NULL, + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +ALTER TABLE permissions + ADD CONSTRAINT permissions_ibfk_2 FOREIGN KEY (domain) REFERENCES domains (id), + ADD CONSTRAINT permissions_ibfk_1 FOREIGN KEY (user) REFERENCES user (id); + +"; + + +$db = @new mysqli($input->host, $input->user, $input->password, $input->database, $input->port); + + +if($db->connect_error) { + $retval['status'] = "error"; + $retval['message'] = $db->connect_error; +} else { + $passwordHash = password_hash($input->userPassword, PASSWORD_DEFAULT); + + $db->multi_query($sql); + while ($db->next_result()) {;} + + $stmt = $db->prepare("INSERT INTO user(name,password,type) VALUES (?,?,'admin')"); + $stmt->bind_param("ss", $input->userName, $passwordHash); + $stmt->execute(); + $stmt->close(); + + $configFile = Array(); + + $configFile[] = 'host) . "';"; + $configFile[] = '$config[\'db_user\'] = \'' . addslashes($input->user) . "';"; + $configFile[] = '$config[\'db_password\'] = \'' . addslashes($input->password) . "';"; + $configFile[] = '$config[\'db_name\'] = \'' . addslashes($input->database) . "';"; + $configFile[] = '$config[\'db_port\'] = ' . addslashes($input->port) . ";"; + + file_put_contents("../config/config-user.php", implode("\n", $configFile)); + + $retval['status'] = "success"; +} + + +if(isset($retval)) { + echo json_encode($retval); +} else { + echo "{}"; +} diff --git a/install.php b/install.php new file mode 100644 index 0000000..52c124b --- /dev/null +++ b/install.php @@ -0,0 +1,113 @@ + + + + +
+