Open username1565 opened 5 years ago
Иногда, проще выразить мысль простым рисунком. Поэтому, можно было бы ещё встроить literallycanvas, как на https://2ch.hk/test/ ну, чтобы картинки можно было рисовать и сразу же отправлять. Но как это сделать - не знаю...
UPD: Прицепил рисовалку попроще, на одну страничку.
Надо где-то в Aggregator.cs засунуть
GC.Collect();
или
GC.WaitForPendingFinalizers();
по критерию:
long usedMemory = GC.GetTotalMemory(false);
Console.WriteLine("ParseText, in foreach cycle - usedMemory: "+usedMemory);
Чтобы не съедало много памяти при Collect'e.
Не знаю куда это прописать, куда уже только не совал эти строчки, но иногда всё-равно получается вот такой Throw Error:
Необработанное исключение: OutOfMemoryException.
UPD: Наконец-то я разрулил это.
Может... Как-то... Keep-alive HTTP-connections сделать?
А то много соединений открывается, XHR-запросы
эти шлются целая куча их (в консоли браузера видно).
Ну что за фигня?
Можно было бы, наверное, одно соединение открыть и много данных туда приёмо-передавать... Но как это сделать?.. Не знаю...
P.S.: Вот здесь, я вижу keep-alive-соединения в фаерволе: https://github.com/alexmelyon/nanoboard Они не открываются каждый раз, при collect'e картинок. Данные картинок идут по одному соединению. Надо будет код поколупать, и возможно для HTTP-соединения сделать подобное, отключив XHR-запросы как-то...
Может... Как-то... Keep-alive HTTP-connections сделать? А то много соединений открывается,
XHR-запросы
эти шлются целая куча их (в консоли браузера видно). Ну что за фигня? Можно было бы, наверное, одно соединение открыть и много данных туда приёмо-передавать... Но как это сделать?.. Не знаю...P.S.: Вот здесь, я вижу keep-alive-соединения в фаерволе: https://github.com/alexmelyon/nanoboard Они не открываются каждый раз, при collect'e картинок. Данные картинок идут по одному соединению. Надо будет код поколупать, и возможно для HTTP-соединения сделать подобное, отключив XHR-запросы как-то...
Нашёл WebSockets под .NET Framework 4.0 (net40): https://github.com/username1565/Fleck2 Удалось даже сконпелировать и получить DLL-ку. Вижу Newtonsoft.Json.dll как-то инклюдится туда, в борду и код. Поэтому, можно было бы, наверное, и WebSocket'ы в неё прицепить, чтобы одно соединение открывалось, и трафик внутри него гонялся, а не дофигища целая соединений, которые открываются XHR-запросами и закрываются. Вебсокеты в этом плане лучше, а ещё лучше - сокеты. Но как их вписать туда, конечно же - я не знаю.
Надо бы реализовать полноценный long-pooling
но чё-то руки никак не доходят.
Пока-что, просто используются различные таймауты,
но запросов отправляется - всё-равно дофига, как и соединений.
Всё это видно в консоли браузера, и в фаерволе, а также в ">netstat -an";
long-pooling
я так и не реализовал, просто потому,
что на некоторые запросы сервер отвечает с кодом "404" и прочими ошибками,
после чего соединение закрывается и через время - снова отправляется новый запрос.
А надо не отвечать ничем, чтобы отправленный запрос - "повис в ожидании",
и чтобы пока нет ответа - вообще не слался никакой другой запрос,
и чтобы соединение было одно.
Вот до этого всего, руки как раз-таки и не доходят, потому что там всё это надо обрабатывать, и тестить, и куча хендлеров всяких этих, и ваще, в голове не помещается вся эта система, и проще уж тупо - нифига не делать.
Есть бредовая идея - перепилить наноборду на JavaScript, все базы засунуть в LocalStorage браузера и сделать её client-side - только в браузере, ведь она - изначально без серверов. Но тогда, базы будут занимать 20 мегабайт где-то, и браузер может крашится от всей этой фигни. Зато, можно было бы криптовать базу в LocalStorage и жать её - каким-нибудь deflate, как в zip-архивах, и заодно, качать в папку загрузок, очищая LocalStorage. А файл - распаковывать рядом с html-файлом и подгружать оттуда данные, инклюдя его как скрипт.
Попробовать реализовать Collect PNG
- прямо через TOR
, из тредов на .onion-доменах
,
например с треда на лунной борде http://nichank62kpkrxvg.onion/res/5833.html
В этом треде: http://127.0.0.1:7346/pages/index.html#thread547039e7d112741f2bc2a0b25f863c82
не отображаются картинки в некоторых версиях mozilla firefox
но в 360 Extreme Explorer и Google Chrome - отображаются.
При этом, картинки .webp
, а имя файла - .jpg
.
Надо изменить на .webp
, но не пойму где.
Если запустить одну наноборду на порту 7347, скачать посты, а затем, вместе с ней - запустить другую наноборду на порту 7346, то с первого nanodb-сервера, можно слить посты, по адресу: http://127.0.0.1:7346/pages/TEST_download-upload-posts.html
Есть идея, прокинуть 127.0.0.1:7346 на какой-либо домен, или ещё лучше - на onion-домен, чтобы наноборда всегда была онлайн, в TOR'e.
Также, можно загрузить посты на первый nanodb.exe-сервер. Таким образом, bitmessage транспорт может быть не нужен, так как можно пушить посты на onion-серверы. Из этого вырастает ещё одна идея - стеганографировать внутри пикч, помимо постов - ещё и onion-адреса для координации.
Как всё это закодить, конечно же не знаю, хэххэх... Но думаю что только вместе - мы разберёмся, а то мне как-то впадло одному тут городить неведомое.
В общем, посоны, надо что-то вроде наноборды,
без мочи (каждый сам себе моча), опенсорц и чтобы p2p
!
Кажется, что наноборду можно развить до уровня p2p-борды, сделав движок p2p-имиджборды, с открытым исходным кодом, чтобы синхронизировала инфу эта борда по принципу bitTorrent закачек, соединяясь с разными пирами в децентрализованной сети.
Первое, что приходит на ум - это TOX-протокол, так как TOX - p2p-программа, и может работать даже в LAN. Там, можно создавать групповые чаты, и работает асимметричное шифрование, которое - хуй взломаешь. Можно делиться файлами, и отправлять картинки. Чем не имиджборда?
Но там нет системы тредов, ответов, постов, нитей, цепочек ответов, трипкодов, бампов, сажи, и всего такого, то есть если делать борду, то придётся всё перепиливать нафиг. Такие дела.
Было бы годно ещё что-то вроде BitTorrent'a, эдакая децентрализованная раздача постов, как частей некоего динамического файла. Разумеется, в зашифрованном виде. Можно было бы даже при помощи XOR и различных раздач - сделать отрицаемое шифрование.
Пример (4-байтные файлы):
A=00001111 11110000 01010101 11111111 — файл, раздачу которого преследуют копирасты
B=00111101 10101000 10010101 11110110 — нагенерированный рандом
C=00110010 01011000 11000000 00001001 = A xor B . Неотличим от файла, заполненного случайными данными
D=10101010 10101010 10101010 10101010 — файл, на раздачу которого копирастам похуй
E=10011000 11110010 01101010 10100011 = C xor D
Раздаю С и E, xor которых дает неинтересный копирастам файл D.
Другие пользователи таким же образом раздают B и (D' xor B),
где D' — такой же неинтересный копирастам файл.
Таким образом, одновременно раздаются B и C, xor которых даст A.
"Четырёхбайтными файлами" могут быть части некоей динамически-изменяющейся по размеру - bitTorrent-раздачи.
Предлагаю запилить отдельный сервер (lite-server), для пробрасывания в TOR. Он может запускаться на следующем порту 7346+1 = 7347, и прослушиваться там, параллельно с полным сервером.
С этим lite-сервер'ом, аноны, отправляя на него запросы через TOR, аноны смогут:
На полном сервере админ, сможет просмотреть список репортов, и удалить пост. На полном сервер - можно удалить репорты. (* смотри "мочерация нанобороды")
Дальше... Некоторые функции из API для lite-сервера можно было бы отключить, а лучше сделать отдельное API.
(* мочерация нанобороды ) К вышеуказанной мере я очень отрицательно отношусь, потому что статья 19 "Всеобщей декларации ООН о правах человека" гласит следующее:
Статья 19
Каждый человек имеет право на свободу убеждений и на свободное выражение их;
это право включает свободу беспрепятственно придерживаться своих убеждений
и свободу искать, получать и распространять информацию
и идеи любыми средствами и независимо от государственных границ.
Модерация в любой форме - нарушает эту статью, а значит - нарушает права человека. Однако, в конце концов, для защиты от тех же вайпов - всё-же необходимо удалять посты. К тому же, админ, как владелец сервера и хранилища данных, может позволить себе удалить что угодно, даже всю наноборду. Если кого не устраивает удаление постов, вырождающееся в повышенный уровень цензуры - просто поднимайте свой сервер, вешайте в TOR, хостите его и синхронизируйте посты там. Благо то, что исходный код открыт.
Кто что думает по этому поводу? Ваши предложения, пожелания? В общем, я начал всё это пилить. Если получится сделать - просто выложу код, а там уже сами смотрите.
Нашёл вот такой менеджер загрузок -> мой форк - здесь: Компилируется на Windows XP с .NET Framework 4.0. Как его пришпандорить сюда - пока не пойму, но можно было бы, куда-то, в Aggregator.cs это дело присунуть, и под консоль переписать, чтобы многопоточно, с докачкой, пикчи качались, и чтобы прогресс отображался ещё... Остальные менеджеры загрузок - требуют .NET Framework 4.5 и выше, поэтому - сразу нафиг их.
Наверняка, можно было бы сделать динамические пароли, а то одним лишь паролем nano3, все нанопосты в пикчах шифровать - ну это воопстшче не комильфо.
Можно было бы сделать паролем каждого нанопоста - хэш поста, ответом к которому он является. Эдакие динамические пароли. Но как закодить это я чё-то - не пойму.
А ещё, у меня есть аналог Энигмы на isaacCSPRNG, вот тут Исходник - вот здесь: https://github.com/username1565/isaacCSPRNG/ Можно было бы хэш поста, к котрому отвечает нанон, как seed использовать для этого скрипта, и постить кракозябры, а расшифровывать скриптами на клиенте. Тогда вообще борода была бы не только стеганографическая, но ещё и криптографическая.