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 @@ + + + + + + PDNS Manager - Domains + + + + + + + + + + + + + + + +
+ + +

Install PDNS Manager

+
+ + + + + + + +
+
+

Database

+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+

Admin

+ +
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
+ + + + diff --git a/js/install.js b/js/install.js new file mode 100644 index 0000000..b3f8c68 --- /dev/null +++ b/js/install.js @@ -0,0 +1,71 @@ +/* + * Copyright 2016 Lukas Metzger . + * + * 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. + */ + +$(document).ready(function() { + + $('#buttonInstall').click(function(evt){ + evt.preventDefault(); + checkSettings(); + }); + + $('#adminPassword2').bind("change keyup paste", function() { + if($('#adminPassword').val() == $('#adminPassword2').val()) { + $(this).parent().removeClass("has-error"); + } else { + $(this).parent().addClass("has-error"); + } + }) +}); + +function checkSettings() { + + if($('#adminPassword').val() != $('#adminPassword2').val()) { + $('#adminPassword2').parent().addClass("has-error"); + } + + if($('#adminPassword').val().length <= 0) { + $('#adminPassword').parent().addClass("has-error"); + } + + if($('#adminName').val().length <= 0) { + $('#adminName').parent().addClass("has-error"); + } + + var data = { + host: $('#dbHost').val(), + user: $('#dbUser').val(), + password: $('#dbPassword').val(), + database: $('#dbDatabase').val(), + port: $('#dbPort').val(), + userName: $('#adminName').val(), + userPassword: $('#adminPassword').val() + }; + + $.post( + "api/install.php", + JSON.stringify(data), + function(data) { + if(data.status == "error") { + $('#alertFailed').text(data.message); + $('#alertFailed').slideDown(600); + } else if(data.status == "success") { + location.assign("index.php"); + } + }, + "json" + ); +} +