<?php
define('H', $_SERVER['DOCUMENT_ROOT']);
define('SYS', H.'/system');
session_name('GOsid');
session_start() or die('Session error');
ob_start();
/* Errors display */
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
ini_set('error_reporting', E_ALL);
/* Connect DB */
if (file_exists(SYS.'/config.ini')) {
$set = parse_ini_file(SYS.'/config.ini');
} else {
echo 'Config file missing';
exit;
}
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_INDEX;
try {
$db = new mysqli($set['dbhost'], $set['dbuser'], $set['dbpass'], $set['dbname']);
} catch (Exception $e) {
echo '<img src="/assets/img/db_err.jpg" alt="шо?"></div>';
exit;
}
/* Language */
$locale = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : 'ru';
if (($locale != 'ru' && 'ru_ru') && empty($_COOKIE['lang'])) {
$language = 'en';
} else {
$language = isset($_COOKIE['lang']) ? guard($_COOKIE['lang']) : 'ru';
}
if (file_exists(SYS.'/langs/'.$language.'.ini')) {
$lang = parse_ini_file(SYS.'/langs/'.$language.'.ini');
} else {
echo 'Language file missing';
}
/* Theme */
$theme = empty($_COOKIE['theme']) ? "_dark" : "";
/* Ip, user agent, page*/
$ip = input($_SERVER['REMOTE_ADDR']);
$ua = isset($_SERVER['HTTP_USER_AGENT']) ? input($_SERVER['HTTP_USER_AGENT']) : 'NULLED_USER_AGENT';
$curUrl = input($_SERVER['REQUEST_URI']);
/* Admin */
if (isset($_COOKIE['uslog']) and isset($_COOKIE['uspass'])) {
$uslog = input($_COOKIE['uslog']);
$uspass = input($_COOKIE['uspass']);
$admin = $db->query("SELECT * FROM `admin` WHERE `login` = '$uslog' and `pass` = '$uspass' LIMIT 1")->fetch_assoc();
if (isset($admin['id'])) {
if ($admin['login'] != $uslog or $admin['pass'] != $uspass) {
setcookie('uslog', '', time() - 86400*31);
setcookie('uspass', '', time() - 86400*31);
}
}
$adm = $db->query("SELECT * FROM `admin` WHERE `login` = '$uslog' and `pass`='$uspass' LIMIT 1")->fetch_assoc();
if (isset($admin['id']) and $adm['login'] != $uslog or $adm['pass'] != $uspass) {
setcookie('uslog', '', time() - 86400*31);
setcookie('uspass', '', time() - 86400*31);
}
}
/* Users */
if (isset($_COOKIE['userid']) and isset($_COOKIE['pass'])) {
$userid = input($_COOKIE['userid']);
$pass = input($_COOKIE['pass']);
$user = $db->query("SELECT * FROM `users` WHERE `id` = '$userid' and `password` = '$pass' LIMIT 1")->fetch_assoc();
$db->query("UPDATE `users` SET `date_last` = '".time()."' WHERE `id` = '$userid'");
if ($user['ip'] == null or $user['ip'] != $ip) {
$db->query("UPDATE `users` SET `ip` = '".$ip."', `ua` = '".$ua."' WHERE `id` = '$userid'");
}
if (isset($user['id'])) {
if ($user['id'] != $userid or $user['password'] != $pass) {
setcookie('userid', '', time() - 86400*31);
setcookie('pass', '', time() - 86400*31);
}
}
$usr = $db->query("SELECT * FROM `users` WHERE `id` = '$userid' and `password`='$pass' LIMIT 1")->fetch_assoc();
if (isset($user['id']) and $usr['id'] != $userid or $usr['password'] != $pass) {
setcookie('userid', '', time() - 86400*31);
setcookie('pass', '', time() - 86400*31);
}
}
/* Username */
if (isset($_COOKIE['username'])) {
$_COOKIE['username'];
} else {
$_COOKIE['username'] = null;
}
if (isset($user)) {
$_COOKIE['username'] = $user['login'];
}
/* Device */
function isMobile() {
global $ua;
return preg_match('/(Android|iPod|iPhone|Symbian|WindowsPhone|WP7|WP8|Opera M|java|webOS|BlackBerry|Mobile|HTC_|Fennec|Avantgo|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|wos)/i', $ua);
}
function isBot() {
global $ua;
return preg_match('/(GOloadBot|Bot|compatible|Yandex|Google|Bingbot|Twitterbot|facebookexternalhit|Facebot|Slurp|Yahoo|DuckDuckBot|Baiduspider|ia_archiver|W3C_Validator|Validator.nu|PR-CY.RU|Chrome-Lighthouse|Mail.Ru|AhrefsBot|uCrawler|dotbot|MJ12bo|psbot|Aport|Liveinternet|Dataprovider|vkShare)/i', $ua);
}
function isApp() {
global $ua;
return preg_match('/(Dalvik|okhttp|AndroidDownloadManager)/i', $ua);
}
function isApi() {
global $curUrl;
return preg_match('/(\/api\/)/i', $curUrl);
}
if (isMobile()) {
$device = '1';
} else {
$device = '0';
}
if (isBot()) {
$device = '2';
}
if (isApp()) {
$device = '3';
}
if (isApi()) {
if (!isApp()) {
$device = '4';
}
}
/* Guests */
$guest = $db->query("SELECT * FROM `guest` WHERE `ip` = '$ip' and `ua`= '$ua'")->fetch_assoc();
if ($guest == 0) {
$db->query("INSERT INTO `guest` SET `ip` = '$ip', `ua` = '$ua', `perehodov` = '0', `gde` = '".$curUrl."', `time` = '".time()."', `device` = '$device'");
} else {
$db->query("UPDATE `guest` SET `perehodov` = `perehodov` +1, `gde` = '".$curUrl."', `time` = '".time()."', `device` = '$device' WHERE `id` = '".$guest['id']."'");
}
/* Times */
function vremya($time = null) {
global $language, $lang;
if (!$time) $time = time();
$data = date('j.n.y', $time);
if ($time == time())
$res = $lang['now'];
elseif ($data == date('j.n.y'))
$res = $lang['today'].' '.date('G:i', $time);
elseif ($data == date('j.n.y', time() - 86400))
$res = $lang['yesterday'].' '.date('G:i', $time);
elseif ($data == date('j.n.y', time() + 86400))
$res = $lang['tomorrow'].' '.date('G:i', $time);
else {
if ($language == 'en') {
$m = array ('0', '\j\a\n', '\f\e\b', '\m\a\r', '\a\p\r', '\m\a\y', '\j\u\n', '\j\u\l', '\a\u\g', '\s\e\p', '\o\c\t', '\n\o\v', '\d\e\c');
$res = date('j '.$m[date('n', $time)].' Y \a\t G:i', $time);
} else {
$m = array ('0', 'янв', 'фев', 'мар', 'апр', 'мая', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек');
$res = date('j '.$m[date('n', $time)].' Y в G:i', $time);
}
}
return $res;
}
/* Units */
function sizer($size) {
$o = 1;
while ($size > 1024) {
$size = round($size / 1024, 1);
$o++;
}
switch ($o) {
case (1):
$o = 'b'; break;
case (2):
$o = 'Kb'; break;
case (3):
$o = 'Mb'; break;
case (4):
$o = 'Gb'; break;
}
return $size.$o;
}
/* Rounding count */
function count_round($var) {
if ($var >= 1000) {
$c = round($var);
$c_number_format = number_format($c);
$c_array = explode(',', $c_number_format);
$c_parts = array('K', 'M', 'B', 'T');
$c_count_parts = count($c_array) - 1;
$rounded = $c;
$rounded = $c_array[0].((int)$c_array[1][0] !== 0 ? '.'.$c_array[1][0]: '');
$rounded .= $c_parts[$c_count_parts - 1];
return $rounded;
}
return $var;
}
/* Pagination */
function page($k_page = 1) {
$page = 1;
$page = guard($page);
$k_page = guard($k_page);
if (isset($_GET['selection'])) {
if ($_GET['selection'] == 'top')
$page = guard(intval($k_page));
elseif (is_numeric($_GET['selection']))
$page = guard(intval($_GET['selection']));
}
if ($page < 1) $page = 1;
if ($page > $k_page) $page = $k_page;
return $page;
}
function k_page($k_post = 0, $k_p_str = 10) {
if ($k_post != 0) {
$v_pages = ceil($k_post / $k_p_str);
return $v_pages;
}
else return 1;
}
function pagination($link = '?', $k_page = 1, $page = 1, $sort = null) {
if ($page < 1) $page = 1;
$page = guard($page);
$k_page = guard($k_page);
echo '
<ul class="menu pagination">';
if ($page > 1) echo '
<a class="pagination-arrow arrow-left" href="'.$link.'/'.($page-1).$sort.'"><i class="material-icons">keyboard_arrow_left</i></a>';
else echo '
<li class="pagination-arrow arrow-left"><i class="material-icons">keyboard_arrow_left</i></li>';
if ($page != 1)
echo '
<a class="pagination-number" href="'.$link.'/1'.$sort.'">1</a>';
else echo '
<li class="pagination-number current-number">1</li>';
for ($ot =- 2; $ot <= 2; $ot++) {
if ($page + $ot > 1 && $page + $ot < $k_page) {
if ($ot ==- 2 && $page + $ot > 2) echo '
<li class="pagination-number">...</li>';
if ($ot != 0) echo '
<a class="pagination-number" href="'.$link.'/'.($page+$ot).$sort.'" >'.($page+$ot).'</a>';
else echo '
<li class="pagination-number current-number">'.($page+$ot).'</li>';
if ($ot == 2 && $page + $ot < $k_page - 1) echo '
<li class="pagination-number">...</li>';
}
}
if ($page != $k_page) echo '
<a class="pagination-number" href="'.$link.'/last'.$sort.'" >'.$k_page.'</a>';
elseif ($k_page > 1) echo '
<li class="pagination-number current-number">'.$k_page.'</li>';
if ($page < $k_page) echo '
<a class="pagination-arrow arrow-right" href="'.$link.'/'.($page+1).$sort.'"><i class="material-icons">keyboard_arrow_right</i></a>';
else echo '
<li class="pagination-arrow arrow-right"><i class="material-icons">keyboard_arrow_right</i></li>';
echo '
</ul>';
}
/* Errors*/
function error($var) {
global $lang, $admin, $user;
echo '
<div class="menu">
<center>
<div><b>'.$var.'</b></div>
<a onclick="window.history.back();">'.$lang['go_back'].'</a>
</center>
</div>
</div>
';
require_once SYS.'/foot.php';
exit;
}
/* Filter */
function guard($var) {
return htmlspecialchars(trim(stripslashes($var)));
}
/* Encrypt */
function encrypt($var) {
return md5(base64_encode(md5($var)));
}
/* Input */
function input($var) {
global $db;
return $db->real_escape_string(guard($var));
}
/* Output */
function output($var) {
return htmlentities($var);
}
/* Redirect */
function go($var) {
header('Location: '.$var);
exit;
}
/* Emoji */
function emoji($var) {
$var = str_replace('#a01', '<img class="emoji" src="/assets/img/emoji/001.jpg">', $var);
$var = str_replace('#a02', '<img class="emoji" src="/assets/img/emoji/002.jpg">', $var);
$var = str_replace('#a03', '<img class="emoji" src="/assets/img/emoji/003.jpg">', $var);
$var = str_replace('#a04', '<img class="emoji" src="/assets/img/emoji/004.jpg">', $var);
$var = str_replace('#a05', '<img class="emoji" src="/assets/img/emoji/005.jpg">', $var);
$var = str_replace('#a06', '<img class="emoji" src="/assets/img/emoji/006.jpg">', $var);
$var = str_replace('#a07', '<img class="emoji" src="/assets/img/emoji/007.jpg">', $var);
$var = str_replace('#a08', '<img class="emoji" src="/assets/img/emoji/008.jpg">', $var);
$var = str_replace('#a09', '<img class="emoji" src="/assets/img/emoji/009.jpg">', $var);
$var = str_replace('#y10', '<img class="emoji" src="/assets/img/emoji/010.jpg">', $var);
$var = str_replace('#y11', '<img class="emoji" src="/assets/img/emoji/011.jpg">', $var);
$var = str_replace('#y12', '<img class="emoji" src="/assets/img/emoji/012.jpg">', $var);
$var = str_replace('#y13', '<img class="emoji" src="/assets/img/emoji/013.jpg">', $var);
$var = str_replace('#y14', '<img class="emoji" src="/assets/img/emoji/014.jpg">', $var);
$var = str_replace('#y15', '<img class="emoji" src="/assets/img/emoji/015.jpg">', $var);
$var = str_replace('#y16', '<img class="emoji" src="/assets/img/emoji/016.jpg">', $var);
$var = str_replace('#y17', '<img class="emoji" src="/assets/img/emoji/017.jpg">', $var);
$var = str_replace('#y18', '<img class="emoji" src="/assets/img/emoji/018.jpg">', $var);
$var = str_replace('#y19', '<img class="emoji" src="/assets/img/emoji/019.jpg">', $var);
$var = str_replace('#z20', '<img class="emoji" src="/assets/img/emoji/020.jpg">', $var);
$var = str_replace('#z21', '<img class="emoji" src="/assets/img/emoji/021.jpg">', $var);
$var = str_replace('#z22', '<img class="emoji" src="/assets/img/emoji/022.jpg">', $var);
return $var;
}
/* Auto removal */
if ($db->query('SELECT COUNT(*) FROM `file` WHERE `time` < '.time())->num_rows != 0) {
$q = $db->query('SELECT * FROM `file` WHERE `time` < '.time());
while ($file = $q->fetch_assoc()) {
unlink(H.'/files/'.$file['file']);
$db->query('DELETE FROM `file` WHERE `id` = '.$file['id']);
$db->query('DELETE FROM `komm` WHERE `file` = '.$file['id']);
}
}
/* Ads */
$ads_url = '/ads';
$ads_out = '/ads';
$ads_img = 'placeholder.png';
$ads_text = 'Купить рекламу';
/* Ban */
$ban = array(
'83.220.238.111',
'109.70.100.21',
'35.0.127.52',
'95.153.134.17',
'89.146.108.211',
'185.100.87.206',
'23.129.64.155',
'212.47.229.4'
);
$count = count($ban);
for ($i = 0; $i < $count; $i++) {
if ($ip == $ban[$i]) {
header('HTTP/2.0 403 Forbidden');
die('Пошёл нахуй отсюда.');
}
}
?>