Ru-Board.club
← Вернуться в раздел «Системы управления сайтами»

» Клонические войны малышей

Автор: newcontinent
Дата сообщения: 05.02.2006 20:05
Вот уже и развернулись на плоскости просторов инет-фронтов нешуточные малышовые войны храбрых нюкеров. Шутки-шутками но становятся понятными многие ужасные факты, увы, к сожалению, свершавшиеся с жителями нашей Родины. Несмотря на появление диковинной техники, о которой только только подозревали предшествующие поколения, люди со своим внутренним устройством остались ровно те же. По сути какая разница по какому поводу писать откровенный донос на соседа: по поводу спорной комнаты в общей коммуналке или парочки спорных скриптовых закорючек спёртых по случаю у соседа "автора". Глаза горят одинаковым нездоровым праведным блеском.
Нижеследующий автор очередного памфлета за всеобщую справедливость совершенно правильно спрятал свою истинную личину за интернетовским ником. Но двусмысленная хитрость автора заключается также и в том, что воюю за справедливость с ненавистным ему "автором" системы SlAED он заодно рассказывает как снять "защиту", впринципе, с любого клона phpNuke. Что ж вот вам и справедливость на самое лицо. Самая современная, законная нашенская справедливость во все красе.

Интересно и это всё, что может дать людям так называемое "авторское право"?
В нижнеследующем памфлете неизвестный ICQ-автор взялся вывести на чистую воду несчастного Эдуарда - "автора" портовой системы SLAED CMS

Для снятия защиты с CMS потребуется: всего лишь редактор PHP: типа editplus.com или встроенный в WINDOWS-дебильный notepad.

Какие же файлы будет править злорбный, но справедливый поборник чистой правды:
- function/function.php , admin/function.php , admin/modules/settings.php

Сделайте резервную копию файлов. Можно использовать в редакторе PHP Expert Editor функцию File/Create BAK-file before writing, данная функция делает резервные копии файлов перед записью ваших исправлений.

Капец, Сделано!

Теперь уже осторожненько автор памфлета уже начинает подходить к заветному изменению/снятию самого ненавистного копирайта. Поражает просто-таки невероятная, непостижимая сложность открытого автором процесса взлома несчастной CMS.

Открываем файл function/function.php . Находим в функции online (около 467 строки) строчки:

if ($license != base64_decod e('UG9 3ZXJlZCBieSA8YSBocm VmPSJo dHRwOi8vd3d3L nNsYWVkLm5ldCIgdGFyZ2V0PSJfY mxhbmsiIHRpdGxlPSJT TEFFRCBDTVMiPlNMQUVEI ENNUzwvYT 4sIHJlbGVhc2V kIHV uZGVyIHRoZSA8 YSBocmVmPSJ odHRwOi8vd3 d3L mdudS5vc mciI HRhcmdldD0iX2 JsYW5rIiB0a X RsZT0iR05VL0 dQTCI+R05VL0d QTwvYT4gbGljZW5zZ S48YnI+')) { die(base64_de c ode('PGJyPjxicj48Y2VudGVyPjxpbWcgc3 JjPSJpbWFn ZXMvbG9nb y5n aWYiPjxic j48YnI+PGI+RGFyaW5nI GN vc HlyaWdodHMgb2Ygc3lzdGV tLC B5b3UgYnJlYWsgdGhlIGx pY2Vuc2Ugb2YgdXNlITwvY2Vud GVyPjwvYj4=')); }


Заменяем данные строчки на такие: (Обалдеть! каково мастерство автора) /*if ($license != base64_deco de('UG93ZXJlZCB ieSA8YSBo cmVmPSJodHRw Oi8vd3d3 LnNsYW VkLm5ldCIgdGFyZ2 V0PSJfYm xhbmsiIHRpdGxl PSJTTEFFRCBDTVMiPlNMQ UVEIENNUzwvYT4sIHJlbGVh c2 V kIH VuZGVyIHRoZSA8YSBo cm VmPSJodHRwOi8vd3 d3LmdudS5vcmciIHRh cmdldD0iX 2JsYW5rIiB0aXRsZT0i R05VL 0d QTCI+ R05VL0dQTDwvYT 4gbG ljZW5zZS48YnI+'))

{ die(base64_decode('PGJy Pjxicj48Y2VudGVyPjxpb Wc gc3JjPSJpbWFnZXMvb G9n by5naWYiPjxicj48YnI+ PGI+RGFyaW5nIGNvcH lyaWdod HMgb2 Ygc3lzdGVtL C B5b3UgYnJlYWs gdG hlIGxpY2Vuc2Ugb2Y gdXNlITwvY2VudGVyPj wvYj4=')); }*/

Сохраняем и закрываем файл. (Конечно, конечно истинному взломщику следует оббязательно сохранить и закрыть файл


Открываем файл admin/function.php Находим в функции online (около 223 строки) строчки:

if ($license != base64_decode('UG93ZX Jl ZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnNs YWVkLm5ldCIgdGFyZ2V0PSJfY mxhb msiI HRpdGxlPSJTTEFFR CBDTVMiPlNMQU VEIENNUzwv Y T4sIHJlbGVhc2VkIHVuZGVyIH RoZSA8YSBocmVmPSJodHRwOi8 vd3 d3LmdudS5 vcmciIHRhcmdl dD0iX2JsYW5rIiB0aXRs ZT 0iR0 5VL0dQTCI+R05 VL0dQTDwvYT4gbGljZW5zZS48Y nI+')) { die(ba se64 _decode('PGJyPjxicj48Y2VudGV yPjxpbWcgc3JjPSJpbWFnZXM vbG9nby5naWYiPjxicj48Y nI+P GI+ RGFyaW5nIGNvcHly aWdod HMgb2Ygc 3lzdGVtLCB5b3U gYnJlYWsgdGhlI GxpY2Vuc2Ugb2YgdXNlITwvY2VudGVyPjwvYj4=')); }

Заменяем данные строчки на такие: /*if ($license != base64_decode('UG93ZXJlZ CBieSA8YSB ocm VmPSJodHRwOi8v d3d3LnNsYWVkLm5ld CIgdGFyZ 2 V0PSJfYmxhbms iIHRp dGxl PSJTTEFFRCBDTVM iPl NMQUVEIENNUzwvYT4sIHJlbG Vhc2VkIHVuZGVyI HRoZSA8YSB ocmVmP SJodHRwOi8vd 3d3LmdudS5vcmciIHRh cmdldD0iX2JsYW5rIiB0aXR sZT0iR05VL0dQTCI+R05VL0 dQTDwvYT4gbGljZW5 zZ S48YnI+')) { die( base64_decode('PGJyPjxicj48 Y2VudGVyPjxpbWcgc3JjPSJpbWFnZXMvb G 9nby5naWYiPjxicj48Yn I+PGI+RGFya W5nIGNvcHlyaWdodHMgb2 Ygc3lzdGVtLCB 5 b3UgYnJlYWsgdGhlIGx pY2V uc2Ugb2YgdXNlIT wvY2 VudGVyPjwv Yj4=')); }*/


И теперь самое последнее... Открываем файл admin/modules/settings.php

Находим 398 (примерно) строчку: $content .= "\$license = base64_decode('UG93ZXJl ZCBieSA8YS BocmVmPSJodHRwOi8 vd 3d3LnNsYWV kLm5ldCIgdGFyZ 2V0PSJ fYmxhbmsiIHRpdG xlPSJTTEFFRC BDTVMiP lNMQUVEIEN NUz wvYT4sIHJlbG Vhc2VkIHVuZGVyI HRoZSA8YS BocmVm PSJodHRwOi8vd3 d3LmdudS5 vcmciIHRh cmdld D0iX2JsYW5rIiB0aXRsZT0iR05V L0dQTCI+R05VL0d QTD wvYT4gbGl jZW5zZ S48YnI+');\n"; Заменяем на: $content .= "\$license = \"GOODS!<br>\";\n";

Теперь на сайте не будет отображаться: Powered by SLAED CMS, released under the GNU/GPL license.
а будут Ваши вписанные в файл admin/modules/settings.php GOODS!

Вы можете вместо GOOD! вписать любые данные, которые как вам кажется, должны показываться у Вас на сайте.
Помните, что снятие копирайта это нарушение авторских прав!
Я Вам советую купить систему SLAED CMS или договориться о снятии копирайта, но думаю договориться не удастся. Эдик просто так не отдает свое, знаю из личного опыта. Так же совету не говорить, что это ВАША собственная система, так как все можно узнать и по используемому коду, который могут просмотреть любые пользователи.

_____________________________________________________________

Ловок. Ловок! Ах джо чего Ж Ловок Шельмец!!!
И как всё это у него ловко, да складно получилось!! Это вам не хухры-мухры!
Комментс: Забавно сколько истинного таланта, задора, профессиональной желчи удалось излить одному очередному "автору" на другого очередного "автора" Бррр...
Кррррасссоттттааа та татта тата
Но на этом справедливый поборник справедливости не остановился, а решил-таки уже окончательно и бесповоротно раздавить нечестного на руку коллегу.
И добвал уже совершено разоблачительный текстик, выводящий на чистую воду несчастного нечистивца.
Кстати не забыл при этом основательно прорекламировать парочку своих кровных заинтересованных в уничтожении конкурента ресурсов
И всё бы ничего если бы автор пасквиля-разоблачения не стал бы пошло и мерзко прятатать свою истинное "имя" за номером ICQ
_____________________________________________________________

Данная статья должна расцениваться как благодарность от пользователей системы, тем кто придумал все лучшие возможности к системе SLAED CMS, хотя на эти возможности разрешение не кто не давал и даже не получил слова спасибо.

Система SLAED CMS базируется на основе PHP-Nuke 7.6 + патч безопасности 2.9 в данной CMS использованы практический все лучше разработки из таких популярных клонов как

RNuke - rusnuke.com Автор: Владимир Хмелек - VHS )

EdogsNuke - edogs.ru Автор: Olga & Sergey - EdogsNuke )

XNukee - xnuke.info Автор: Tibor

Система защиты в SLAED MyNukeSecurity Автор: Wind

Дампер базы данных был создан на основе скрипта dumper 1.6 - zapimir.net Автор: Zapimir Примечания Алисы : Действительно, реально полезное и серьёзное дополнение почти к любому скрипту работающему с базой данных. Реальнеое практическое спасибо автору ZapimirУ. В принципе прямого отношения к ругаемой CMS отношения не имеет, впрочем как и вообще к PHP-Nuke

Функция online была оптимизирована - cms-engine.info Автор: Strula

Модуль Topics был оптимизирован - cms-engine.info Автор: Strula

Функция autonews была оптимизирована - cms-engine.info Автор: Strula

Конвертор БД из PHP-Nuke в SLAED - cms-engine.info Автор: Strula

в качестве модуля опросов использован модуль Voiting автора к сожалению не помню использовано из XNuke : Кэширование вынос оптимизированных функций в отдельные файлы

Список функций и возможностей взятых из этих систем:
1) RNuke :

Функции которые стоят в SLAED CMS:

function is_admin function is_admin($admin) { global $prefix, $db, $admintrue;
if (!isset($admintrue)) {
if (!is_array($admin)) {
$admin = base64_decode($admin);
$admin = addslashes($admin);
$admin = explode(":", $admin);
$aid = addslashes($admin[0]);
$pwd = "$admin[1]";
} else {
$aid = addslashes($admin[0]);
$pwd = "$admin[1]";
}
if ($aid != "" && $pwd != "") {
$aid = substr("$aid", 0,25);
list($pass) = $db->sql_fetchrow($db->sql_query("SELECT pwd FROM ".$prefix."_authors WHERE aid='$aid'"));
if ($pass == $pwd && $pass != "") {
$admintrue = 1;
return 1;
}
}
$admintrue = 0;
return 0;
}
if ($admintrue == 1) {
return 1;
} else {
return 0;
}
}








function is_user function is_user($user) {
global $prefix, $db, $user_prefix, $usertrue;
if (!isset($usertrue)) {
if (!is_array($user)) {
$user = base64_decode($user);
$user = addslashes($user);
$user = explode(":", $user);
$uid = "$user[0]";
$pwd = "$user[2]";
} else {
$uid = "$user[0]";
$pwd = "$user[2]";
}
$uid = addslashes($uid);
$uid = intval($uid);
if ($uid != "" && $pwd != "") {
list($pass) = $db->sql_fetchrow($db->sql_query("SELECT user_password FROM ".$user_prefix."_users WHERE user_id='$uid'"));
if ($pass == $pwd && $pass != "") {
$usertrue = 1;
return 1;
}
}
$usertrue = 0;
return 0;
}
if ($usertrue == 1) {
return 1;
} else {
return 0;
}
}







function blocks function blocks($side) {
global $storynum, $prefix, $multilingual, $currentlang, $db, $admin, $user, $name, $home, $pos, $blockfile;
static $barr;
if ($multilingual == 1) {
$querylang = "AND (blanguage='$currentlang' OR blanguage='')";
} else {
$querylang = "";
}
if (strtolower($side[0]) == "l") {
$pos = "l";
} elseif (strtolower($side[0]) == "r") {
$pos = "r";
} elseif (strtolower($side[0]) == "c") {
$pos = "c";
} elseif (strtolower($side[0]) == "d") {
$pos = "d";
} elseif (strtolower($side[0]) == "b") {
$pos = "b";
} elseif (strtolower($side[0]) == "f") {
$pos = "f";
}
$side = $pos;
if (!isset($barr)) {
$result = $db->sql_query("SELECT bid, bkey, title, content, url, blockfile, view, expire, action, bposition, which FROM ".$prefix."_blocks WHERE active='1' $querylang ORDER BY weight ASC");
while(list($bid, $bkey, $title, $content, $url, $blockfile, $view, $expire, $action, $bposition, $which) = $db->sql_fetchrow($result)) {
$bid = intval($bid);
$view = intval($view);
$where_mas = explode(",", $which);
$barr[]= array($bid, $bkey, $title, $content, $url, $blockfile, $view, $expire, $action, $bposition, $where_mas);
}
}
for ($i=0; $i<sizeof($barr); $i++) {
list($bid, $bkey, $title, $content, $url, $blockfile, $view, $expire, $action, $bposition, $where_mas)=$barr[$i];
$flag_where = 0;
if ((sizeof($where_mas) == 1)) {
$flag_where = 1;
} else {
if ($home == 1 && $where_mas[0] == "home") {
$flag_where = 1;
} else {
foreach ($where_mas as $key => $val) {
if ($val == $name) {
$flag_where = 1;
}
}
}
}
if ($flag_where) {
if ($bposition == $side) {
$now = time();
if ($expire != 0 AND $expire <= $now) {
if ($action == "d") {
$db->sql_query("UPDATE ".$prefix."_blocks SET active='0', expire='0' WHERE bid='$bid'");
return;
} elseif ($action == "r") {
$db->sql_query("DELETE FROM ".$prefix."_blocks WHERE bid='$bid'");
return;
}
}
if ($bkey == "admin") {
adminblock();
} elseif ($bkey == "userbox") {
userblock();
} elseif ($bkey == "") {
if ($view == 0) {
render_blocks($side, $blockfile, $title, $content, $bid, $url);
} elseif ($view == 1 AND is_user($user) OR is_admin($admin)) {
render_blocks($side, $blockfile, $title, $content, $bid, $url);
} elseif ($view == 2 AND is_admin($admin)) {
render_blocks($side, $blockfile, $title, $content, $bid, $url);
} elseif ($view == 3 AND !is_user($user) OR is_admin($admin)) {
render_blocks($side, $blockfile, $title, $content, $bid, $url);
}
}
}
}
}
}







function cookiedecode function cookiedecode($user) {
global $cookie, $db, $user_prefix, $admintrue, $usertrue;
if (!isset($usertrue) OR !isset($admintrue)) {
static $pass;
if(!is_array($user)) {
$user = base64_decode($user);
$user = addslashes($user);
$cookie = explode(":", $user);
} else {
$cookie = $user;
}
if (!isset($pass)) {
$result = $db->sql_query("SELECT user_password FROM ".$user_prefix."_users WHERE username='$cookie[1]' ORDER BY user_password DESC");
list($pass) = $db->sql_fetchrow($result);
}
if ($cookie[2] == $pass && $pass != "") {
return $cookie;
}
unset($user);
unset($cookie);
} else {
return;
}
}







Оригинальные функции от RNuke:



function is_admin function is_admin($admin) {
global $prefix, $db, $admintrue;
if (!isset($admintrue)){
if(!is_array($admin)) {
$admin = addslashes($admin);
$admin = base64_decode($admin);
$admin = explode(":", $admin);
$aid = "$admin[0]";
$pwd = "$admin[1]";
} else {
$aid = "$admin[0]";
$pwd = "$admin[1]";
}
if ($aid != "" AND $pwd != "") {
$aid = substr("$aid", 0,25);
$result = $db->sql_query("SELECT pwd FROM ".$prefix."_authors WHERE aid='$aid'");
$row = $db->sql_fetchrow($result);
$pass = $row['pwd'];
if($pass == $pwd && $pass != "") {
$admintrue=1;
return 1;
}
}
$admintrue=0;
return 0;
}
if ($admintrue==1){
return 1;
} else {
return 0;
}
}







function is_user function is_user($user) {
global $prefix, $db, $user_prefix, $usertrue;
if (!isset($usertrue)){
if(!is_array($user)) {
$user = addslashes($user);
$user = base64_decode($user);
$user = explode(":", $user);
$uid = "$user[0]";
$pwd = "$user[2]";
} else {
$uid = "$user[0]";
$pwd = "$user[2]";
}
$uid = addslashes($uid);
$uid = intval($uid);
if ($uid != "" AND $pwd != "") {
$result = $db->sql_query("SELECT user_password FROM ".$user_prefix."_users WHERE user_id='$uid'");
$row = $db->sql_fetchrow($result);
$pass = $row['user_password'];
if($pass == $pwd && $pass != "") {
$usertrue=1;
return 1;
}
}
$usertrue=0;
return 0;
}
if ($usertrue==1){
return 1;
} else {
return 0;
}
}







function blocks function blocks($side) {
global $storynum, $prefix, $multilingual, $currentlang, $db, $admin, $user;
static $barr;
if ($multilingual == 1) {
$querylang = "AND (blanguage='$currentlang' OR blanguage='')";
} else {
$querylang = "";
}
if (strtolower($side[0]) == "l") {
$pos = "l";
} elseif (strtolower($side[0]) == "r") {
$pos = "r";
} elseif (strtolower($side[0]) == "c") {
$pos = "c";
} elseif (strtolower($side[0]) == "d") {
$pos = "d";
}
$side = $pos;
if (!isset($barr)){
$sql = "SELECT bid, bkey, title, content, url, blockfile, view, expire, action, subscription, bposition, blocktemplate FROM ".$prefix."_blocks WHERE active='1' $querylang ORDER BY weight ASC";
$result = $db->sql_query($sql);
while(list($bid, $bkey, $title, $content, $url, $blockfile, $view, $expire, $action, $subscription, $bposition, $blocktemplate) = $db->sql_fetchrow($result)) {
$bid = intval($bid);
$view = intval($view);
$barr[]= array($bid, $bkey, $title, $content, $url, $blockfile, $view, $expire, $action, $subscription, $bposition, $blocktemplate);
}
}
for ($i=0; $i<sizeof($barr); $i++){
list ($bid, $bkey, $title, $content, $url, $blockfile, $view, $expire, $action, $subscription, $bposition, $blocktemplate)=$barr[$i];
if ($bposition==$side){
$now = time();
if ($sub == 0 OR ($sub == 1 AND !paid())) {
if ($expire != 0 AND $expire <= $now) {
if ($action == "d") {
$db->sql_query("UPDATE ".$prefix."_blocks SET active='0', expire='0' WHERE bid='$bid'");
return;
} elseif ($action == "r") {
$db->sql_query("DELETE FROM ".$prefix."_blocks WHERE bid='$bid'");
return;
}
}
if ($view == 0) {
render_blocks($side, $blockfile, $title, $content, $bid, $url, $blocktemplate);
} elseif ($view == 1 AND is_user($user) || is_admin($admin)) {
render_blocks($side, $blockfile, $title, $content, $bid, $url, $blocktemplate);
} elseif ($view == 2 AND is_admin($admin)) {
render_blocks($side, $blockfile, $title, $content, $bid, $url, $blocktemplate);
} elseif ($view == 3 AND !is_user($user) || is_admin($admin)) {
render_blocks($side, $blockfile, $title, $content, $bid, $url, $blocktemplate);
}
}
}
}
}







function cookiedecode function cookiedecode($user) {
global $cookie, $db, $user_prefix, $usertrue, $admintrue;
if (!isset($usertrue) OR !isset($admintrue)){
static $pass;
if(!is_array($user)) {
$user = base64_decode($user);
$cookie = explode(":", $user);
} else {
$cookie = $user;
}
if (!isset($pass)) {
$sql = "SELECT user_password FROM ".$user_prefix."_users WHERE username='$cookie[1]' Order by user_password DESC";
$result = $db->sql_query($sql);
list($pass) = $db->sql_fetchrow($result);
}
if ($cookie[2] == $pass && $pass != "") { return $cookie; }
unset($user);
unset($cookie);
} else {
return;
}
}





Первоначально функция была взята из RNuke

В версии SLAED 1.7 Pro функция cookiedecode была изменена на функцию из EdogsNuke

Также кроме функция из RNuke было использовано:

Возможность сохранения основных настроек сайта в файл конфигурации

Использован оптимизированный модуль News от создателя RNuke

Оптимизированный Блок навигации и блок опросов

Отладчик SQL запросов также взят из CMS RNuke

2) EdogsNuke :

Функции которые стоят в SLAED CMS :

function cookiedecode function cookiedecode($user) {
global $cookie;
if (is_user($user)) {
$cookie = explode(":", addslashes(base64_decode($user)));
return $cookie;
}
}


Оригинал из EdogsNuke


function cookiedecode function cookiedecode($user)
{
global $cookie;
if (is_user($user)) {
$cookie = explode(":", base64_decode($user));
return $cookie;
}
}


Это основные функции системы, возможно есть еще функции, которые мы не углядели, но думаю и этого хватит чтоб сказать спасибо.

Про графику писать много не буду, так как графика действительно доступна для скачивания и на неё некто вето не накладывал и те кто её используют, пусть используют раз нравиться. Я лично тоже использую на сайте не свои графические элементы, но там где я их беру их можно брать бесплатно.

Желаю всем успехов и закончу статью последними словами Эдуарда в ICQ:

Eduard (19:33:16 4/02/2006)

В общем оправдыватся перед тобой я не собераюсь, удачного плаванья, капитан!

Удачи Всем!

Не забыл шельмец пожелать всем нам. Спасибо ему.
Видимо чувствуя, что делает, что-то не то, то, что останется с ним по жизни теперь на всю жизнь, автор сего пасквиля довольно изящно и умело оправдаллся на форуме мол: "Вот после этого я ущел с слаеда.нет так как понял, что в слаеде есть дыры, о которых говорить не следует, надо молчать, т.е. способ этот еще при ссср был, всегда говорить, что все хорошо. я лично хоть и родился при этом но такую тактику я ненавижу."
И всё бы ничего если бы автор пасквиля-разоблачения не стал бы пошло и мерзко прятатать свою истинное "имя" за номером ICQ
Пусть и это останется для потомков рукописи как известно не горят.

Алиса В. Волконская.







Клонические войны
Натали Кай: Удивительно и отвратительно наблюдать за грязной разборкой так называемых "авторов". Честно говоря копирайтить в нюке вообще нечего. Это то же самое, что копирайтить "while" или "if". Все клоны PHP-Nuke так или иначе стибренные и подсмотренные идеи. А уж сравнивать коды функций применяемых практически в любом скрипте = это уж увольте и вовсе просто дебильно. Вывод побыстрей бы закончили разбор грязного белья своих скриптов и перешли бы к более плодотворному усовершенствованию общеизвестных скриптов, без дурацкой балтовни про авторское право.
Тем более Алисой В указаны вполне логичные и естественные пути развития CMS. И сделаны практические версии общих сриптов, для коллективного совершенствования
Первая клоническая антитабличная оптимизация PHP-Nuke 7.9 от newcontinent.ru можно легко скачать
и потрясающая по простоте и изяществу замысла
версия "Пятница-13". (Средняя механизация PHP-Nuke) newcontinent.ru 2006-01-13 (вторая клоническая ) можно легко скачать
Конечно над версиями следует ещё немало поработать, но уже сейчас это отличная чистая основа для совместного и эффективного творчества настоящих мастеров, а не злобных болтунов про авторское право.
Автор: fathersGrave
Дата сообщения: 05.02.2006 20:32
Бредовые расстройства мучают? По какому поводу психоз?
Вы похоже не в тот форум излили душу. К сожалению, на Ру-Борде пока нет раздела психореабилитации.

Страницы: 1

Предыдущая тема: Серьёзный большой портал.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.