аэы
This commit is contained in:
parent
e92f792640
commit
79a031401a
@ -7,6 +7,6 @@ The newest generation imageboard.
|
|||||||
|
|
||||||
## Remarks
|
## Remarks
|
||||||
|
|
||||||
- `sudo rm -R /etc/nginx/data/testing/E949/api && sudo cp -R api /etc/nginx/data/testing/E949/ && sudo chown -R http:http /etc/nginx/data/testing/E949/api/`
|
- `sudo rm -r /usr/share/nginx/html/testing/E949 && sudo cp -R . /usr/share/nginx/html/testing/E949/ && sudo chown -R http:http /usr/share/nginx/html/testing`
|
||||||
|
|
||||||
- `#049e59` -> `#094e59`
|
- `#049e59` -> `#094e59`
|
6
TODO.md
6
TODO.md
@ -21,7 +21,7 @@
|
|||||||
- Роли
|
- Роли
|
||||||
- Новичок
|
- Новичок
|
||||||
- Может оценивать посты, но не более n в день
|
- Может оценивать посты, но не более n в день
|
||||||
- Может создавать посты, но не более n в день
|
- Может создавать посты, но не более n в день и только с одобренными тегами
|
||||||
- Может удалять свои посты
|
- Может удалять свои посты
|
||||||
- Может устанавливать себе аватарку
|
- Может устанавливать себе аватарку
|
||||||
- Проверенный
|
- Проверенный
|
||||||
@ -54,8 +54,10 @@
|
|||||||
- Добавление нового
|
- Добавление нового
|
||||||
- Редактирование тегов существующего
|
- Редактирование тегов существующего
|
||||||
- Удаление
|
- Удаление
|
||||||
- Комментарии
|
|
||||||
- Оценки
|
- Оценки
|
||||||
- Количество запросов картинки
|
- Количество запросов картинки
|
||||||
- Статистика по всем картинкам
|
- Статистика по всем картинкам
|
||||||
|
- Комментарии
|
||||||
|
- Теги
|
||||||
|
- Перечень одобренных
|
||||||
- Шаблонная разметка
|
- Шаблонная разметка
|
23
api/_auth.php
Normal file
23
api/_auth.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once("_db.php"); //("api/_db.php");
|
||||||
|
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
$LOGGED_IN = false;
|
||||||
|
|
||||||
|
if (isset($_SESSION["userid"])) {
|
||||||
|
// Check if user still exist
|
||||||
|
$s = $db->prepare("SELECT * FROM users WHERE id = ?");
|
||||||
|
$s->bind_param("s", $_SESSION["userid"]);
|
||||||
|
$s->execute();
|
||||||
|
if (!(bool)$s->get_result()->fetch_assoc()) {
|
||||||
|
session_unset();
|
||||||
|
session_destroy();
|
||||||
|
echo "user id does not exist";
|
||||||
|
die("user id used in session does not exist");
|
||||||
|
}
|
||||||
|
$LOGGED_IN = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
25
api/_config.php
Normal file
25
api/_config.php
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$Config = array();
|
||||||
|
$Config_FileName = "config.json";
|
||||||
|
$Config_PossiblePaths = array(
|
||||||
|
"./" . $Config_FileName,
|
||||||
|
"../" . $Config_FileName,
|
||||||
|
"../../" . $Config_FileName,
|
||||||
|
"../../../" . $Config_FileName,
|
||||||
|
"./api/" . $Config_FileName,
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($Config_PossiblePaths as $path) {
|
||||||
|
if (file_exists($path)) {
|
||||||
|
$content = file_get_contents($path);
|
||||||
|
$Config = json_decode($content, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$Config) {
|
||||||
|
die("invalid configuration file");
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -1,3 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
require_once("_config.php"); //("api/_config.php");
|
||||||
|
|
||||||
|
$db = new mysqli($Config["db"]["addr"], $Config["db"]["user"], $Config["db"]["pass"], $Config["db"]["name"]);
|
||||||
|
|
||||||
?>
|
?>
|
6
api/_errors.php
Normal file
6
api/_errors.php
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Internal errors
|
||||||
|
$Err_Int_JSONEncodeError = "int.jsonencode";
|
||||||
|
|
||||||
|
?>
|
22
api/_json.php
Normal file
22
api/_json.php
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once("_errors.php");
|
||||||
|
|
||||||
|
function ReturnJSONData ($arr) {
|
||||||
|
$data = json_encode($arr);
|
||||||
|
if (!$data) {
|
||||||
|
$data = json_encode(array("error" => $Err_Int_JSONEncodeError));
|
||||||
|
}
|
||||||
|
header("Content-Type: application/json; charset=utf-8");
|
||||||
|
echo $data;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ReturnJSONError ($err, $desc) {
|
||||||
|
ReturnJSONData(array(
|
||||||
|
"error" => $err,
|
||||||
|
"description" => $desc
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
5
api/user/create.php
Normal file
5
api/user/create.php
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
?>
|
14
api/user/index.php
Normal file
14
api/user/index.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once("../_auth.php");
|
||||||
|
require_once("../_json.php");
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
if ($LOGGED_IN) {
|
||||||
|
echo 1;
|
||||||
|
} else {
|
||||||
|
echo 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
8
config.json
Normal file
8
config.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"db": {
|
||||||
|
"addr": "localhost",
|
||||||
|
"name": "e949",
|
||||||
|
"user": "e949",
|
||||||
|
"pass": ""
|
||||||
|
}
|
||||||
|
}
|
@ -13,8 +13,12 @@ Files starting from "_" ("_example.php") are intended for internal use only.
|
|||||||
|
|
||||||
## Version 1
|
## Version 1
|
||||||
|
|
||||||
|
- _config.php: parses configuration file
|
||||||
- _db.php: connection to database and all related
|
- _db.php: connection to database and all related
|
||||||
- _auth.php: things related to authentification
|
- _auth.php: things related to authentification
|
||||||
|
- _errors.php: error strings
|
||||||
|
- _json.php: wrappers for JSON functions
|
||||||
|
|
||||||
- stats.php (GET/POST): all general statistics about this instance
|
- stats.php (GET/POST): all general statistics about this instance
|
||||||
|
|
||||||
- admin/ (POST): private statistics about this instance
|
- admin/ (POST): private statistics about this instance
|
||||||
|
10
docs/DB.md
10
docs/DB.md
@ -24,7 +24,7 @@ mysql -u e949 -p
|
|||||||
USE e949;
|
USE e949;
|
||||||
CREATE TABLE users (
|
CREATE TABLE users (
|
||||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of user',
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of user',
|
||||||
created_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'When account was created',
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When account was created',
|
||||||
login VARCHAR(255) NOT NULL COMMENT 'User login',
|
login VARCHAR(255) NOT NULL COMMENT 'User login',
|
||||||
email VARCHAR(255) NULL COMMENT 'User e-mail address',
|
email VARCHAR(255) NULL COMMENT 'User e-mail address',
|
||||||
password_hash BINARY(32) NOT NULL COMMENT 'User password hash',
|
password_hash BINARY(32) NOT NULL COMMENT 'User password hash',
|
||||||
@ -38,14 +38,14 @@ CREATE TABLE posts (
|
|||||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of post',
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of post',
|
||||||
author_id INT UNSIGNED NOT NULL COMMENT 'Identifier of post author',
|
author_id INT UNSIGNED NOT NULL COMMENT 'Identifier of post author',
|
||||||
comment_section_id INT UNSIGNED NULL COMMENT 'Identifier of post comment section',
|
comment_section_id INT UNSIGNED NULL COMMENT 'Identifier of post comment section',
|
||||||
created_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'When post was published',
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When post was published',
|
||||||
tags VARCHAR(2048) NOT NULL COMMENT 'Comma-delimited list of post tags',
|
tags VARCHAR(2048) NOT NULL COMMENT 'Comma-delimited list of post tags',
|
||||||
title VARCHAR(8192) NULL COMMENT 'Caption for the post',
|
title VARCHAR(8192) NULL COMMENT 'Caption for the post',
|
||||||
votes_up INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of positive reactions',
|
votes_up INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of positive reactions',
|
||||||
votes_down INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of negative reactions',
|
votes_down INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of negative reactions',
|
||||||
views INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of post views',
|
views INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of post views',
|
||||||
pic_path VARCHAR(255) NOT NULL COMMENT 'Path or URL of picture',
|
pic_path VARCHAR(255) NOT NULL COMMENT 'Path or URL of picture',
|
||||||
preview_path VARCHAR(255) NULL COMMENT 'Path or URL of preview version of picture'
|
preview_path VARCHAR(255) NULL COMMENT 'Path or URL of preview version of picture',
|
||||||
comments_enabled BOOL NOT NULL COMMENT 'If comments are enabled',
|
comments_enabled BOOL NOT NULL COMMENT 'If comments are enabled',
|
||||||
edit_lock BOOL NOT NULL DEFAULT FALSE COMMENT 'If redaction of post is locked for anyone, except mods and admins'
|
edit_lock BOOL NOT NULL DEFAULT FALSE COMMENT 'If redaction of post is locked for anyone, except mods and admins'
|
||||||
);
|
);
|
||||||
@ -53,14 +53,14 @@ CREATE TABLE comments (
|
|||||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of comment',
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of comment',
|
||||||
author_id INT UNSIGNED NOT NULL COMMENT 'Identifier of comment author',
|
author_id INT UNSIGNED NOT NULL COMMENT 'Identifier of comment author',
|
||||||
comment_section_id INT UNSIGNED NOT NULL COMMENT 'Identifier of comment section to which the comment belongs',
|
comment_section_id INT UNSIGNED NOT NULL COMMENT 'Identifier of comment section to which the comment belongs',
|
||||||
created_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'When comment was published',
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When comment was published',
|
||||||
contents VARCHAR(8192) NOT NULL COMMENT 'Text of comment',
|
contents VARCHAR(8192) NOT NULL COMMENT 'Text of comment',
|
||||||
needs_check BOOL NOT NULL DEFAULT FALSE COMMENT 'If comment needs approval of moderation'
|
needs_check BOOL NOT NULL DEFAULT FALSE COMMENT 'If comment needs approval of moderation'
|
||||||
);
|
);
|
||||||
CREATE TABLE actions (
|
CREATE TABLE actions (
|
||||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of action',
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of action',
|
||||||
author_id INT UNSIGNED NULL COMMENT 'ID of user, who performed action',
|
author_id INT UNSIGNED NULL COMMENT 'ID of user, who performed action',
|
||||||
created_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'When action was performed',
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When action was performed',
|
||||||
category ENUM('acc_mod', 'publ_mod', 'post', 'comment', 'admin', 'other') NOT NULL COMMENT 'Category of performed action: accounts/publications moderation, etc.',
|
category ENUM('acc_mod', 'publ_mod', 'post', 'comment', 'admin', 'other') NOT NULL COMMENT 'Category of performed action: accounts/publications moderation, etc.',
|
||||||
description VARCHAR(8192) NOT NULL COMMENT 'Description of action'
|
description VARCHAR(8192) NOT NULL COMMENT 'Description of action'
|
||||||
);
|
);
|
||||||
|
6
docs/SERVER CONFIGURATION.md
Normal file
6
docs/SERVER CONFIGURATION.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Web-server configuration
|
||||||
|
|
||||||
|
Restrict access to files:
|
||||||
|
|
||||||
|
- Any file from `api` directory with prepended `_`
|
||||||
|
- `config.json`
|
Loading…
x
Reference in New Issue
Block a user