blessing-skin-server/ajax.php

181 lines
5.7 KiB
PHP
Raw Normal View History

<?php
/**
* @Author: printempw
* @Date: 2016-01-16 23:01:33
* @Last Modified by: prpr
2016-02-03 10:32:48 +08:00
* @Last Modified time: 2016-02-03 10:29:58
*
* All ajax requests will be handled here
*/
2016-01-17 10:53:10 +08:00
header('Access-Control-Allow-Origin: *');
session_start();
2016-02-02 21:52:53 +08:00
$dir = dirname(__FILE__);
require "$dir/includes/autoload.inc.php";
require "$dir/config.php";
database::checkConfig();
2016-02-02 21:52:53 +08:00
if (isset($_POST['uname'])) {
$user = new user($_POST['uname']);
2016-01-17 15:15:56 +08:00
} else {
utils::raise('1', 'Empty username.');
}
2016-02-02 21:52:53 +08:00
$action = isset($_GET['action']) ? $_GET['action'] : "login";
$json = null;
if ($action == "login") {
if (checkInput()) {
2016-02-02 21:52:53 +08:00
if (!$user->is_registered) {
$json['errno'] = 1;
$json['msg'] = "Non-existent user.";
} else {
2016-02-02 21:52:53 +08:00
if ($user->checkPasswd($_POST['passwd'])) {
$json['errno'] = 0;
$json['msg'] = 'Logging in succeed!';
2016-02-02 21:52:53 +08:00
$json['token'] = $user->getToken();
$_SESSION['token'] = $user->getToken();
} else {
$json['errno'] = 1;
$json['msg'] = "Incorrect usename or password.";
}
}
}
2016-01-17 15:15:56 +08:00
} else if ($action == "register") {
if (checkInput()) {
2016-02-02 21:52:53 +08:00
if (!$user->is_registered) {
2016-01-17 10:53:10 +08:00
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// If amout of registered accounts of IP is more than allowed mounts,
// then reject the registration.
if ($user->db->getNumRows('ip', $ip) < REGS_PER_IP) {
2016-01-17 10:53:10 +08:00
// use once md5 to encrypt password
2016-02-02 21:52:53 +08:00
if ($user->register(md5($_POST['passwd']), $ip)) {
2016-01-17 10:53:10 +08:00
$json['errno'] = 0;
$json['msg'] = "Registered successfully.";
} else {
$json['errno'] = 1;
$json['msg'] = "Uncaught error.";
}
} else {
$json['errno'] = 1;
$json['msg'] = "You can't create more than ".REGS_PER_IP." accounts with this IP.";
2016-01-17 10:53:10 +08:00
}
2016-01-17 10:53:10 +08:00
} else {
$json['errno'] = 1;
$json['msg'] = "User already existed.";
}
}
2016-01-17 15:15:56 +08:00
} else if ($action == "upload") {
2016-02-03 10:27:15 +08:00
if (utils::getValue('token', $_SESSION) == $user->getToken()) {
if (checkFile()) {
2016-02-02 21:52:53 +08:00
if ($file = utils::getValue('skin_file', $_FILES)) {
if ($user->setTexture('skin', $file)) {
2016-02-03 10:32:48 +08:00
$json['skin']['errno'] = 0;
$json['skin']['msg'] = "Skin uploaded successfully.";
2016-01-17 10:53:10 +08:00
} else {
2016-02-03 10:32:48 +08:00
$json['skin']['errno'] = 1;
$json['skin']['msg'] = "Uncaught error.";
2016-01-17 10:53:10 +08:00
}
}
2016-02-02 21:52:53 +08:00
if ($file = utils::getValue('cape_file', $_FILES)) {
if ($user->setTexture('cape', $file)) {
2016-02-03 10:32:48 +08:00
$json['cape']['errno'] = 0;
$json['cape']['msg'] = "Cape uploaded successfully.";
2016-01-17 10:53:10 +08:00
} else {
2016-02-03 10:32:48 +08:00
$json['cape']['errno'] = 1;
$json['cape']['msg'] = "Uncaught error.";
2016-01-17 10:53:10 +08:00
}
}
}
} else {
$json['errno'] = 1;
$json['msg'] = "Invalid token.";
}
2016-01-17 15:15:56 +08:00
} else if ($action == "logout") {
2016-02-02 21:52:53 +08:00
if (utils::getValue('token', $_SESSION)) {
2016-01-17 15:15:56 +08:00
session_destroy();
$json['errno'] = 0;
$json['msg'] = 'Session destroyed.';
} else {
$json['errno'] = 1;
$json['msg'] = 'No available session.';
}
}
function checkInput() {
global $json;
if (!$_POST['uname']) {
$json['errno'] = 1;
$json['msg'] = 'Empty username!';
return false;
}
if (!$_POST['passwd']) {
$json['errno'] = 1;
$json['msg'] = "Empty password!";
return false;
}
return true;
}
function checkFile() {
global $json;
2016-02-02 21:52:53 +08:00
if (!(utils::getValue('skin_file', $_FILES) || utils::getValue('cape_file', $_FILES))) {
$json['errno'] = 1;
$json['msg'] = "No input file selected.";
return false;
}
/**
* Check for skin_file
*/
2016-02-02 21:52:53 +08:00
if ((utils::getValue('skin_file', $_FILES)["type"] == "image/png") || (utils::getValue('skin_file', $_FILES)["type"] == "image/x-png")) {
// if error occured while uploading file
2016-02-02 21:52:53 +08:00
if (utils::getValue('skin_file', $_FILES)["error"] > 0) {
2016-01-17 12:20:09 +08:00
$json['errno'] = 1;
2016-02-02 21:52:53 +08:00
$json['msg'] = utils::getValue('skin_file', $_FILES)["error"];
return false;
}
} else {
2016-02-02 21:52:53 +08:00
if (utils::getValue('skin_file', $_FILES)) {
2016-01-17 15:15:56 +08:00
$json['errno'] = 1;
$json['msg'] = 'Skin file type error.';
return false;
} else {
2016-02-03 10:32:48 +08:00
$json['skin']['errno'] = 0;
$json['skin']['msg'] = 'No skin file selected.';
2016-01-17 15:15:56 +08:00
}
}
/**
* Check for cape_file
*/
2016-02-02 21:52:53 +08:00
if ((utils::getValue('cape_file', $_FILES)["type"] == "image/png") || (utils::getValue('cape_file', $_FILES)["type"] == "image/x-png")) {
// if error occured while uploading file
2016-02-02 21:52:53 +08:00
if (utils::getValue('cape_file', $_FILES)["error"] > 0) {
2016-01-17 12:20:09 +08:00
$json['errno'] = 1;
2016-02-02 21:52:53 +08:00
$json['msg'] = utils::getValue('cape_file', $_FILES)["error"];
return false;
}
} else {
2016-02-02 21:52:53 +08:00
if (utils::getValue('cape_file', $_FILES)) {
2016-01-17 15:15:56 +08:00
$json['errno'] = 1;
$json['msg'] = 'Cape file type error.';
return false;
} else {
2016-02-03 10:32:48 +08:00
$json['cape']['errno'] = 0;
$json['cape']['msg'] = 'No cape file selected.';
2016-01-17 15:15:56 +08:00
}
}
return true;
}
echo json_encode($json);