pfpmd существует с 2015 года. Изначально он был попыткой воскресить один ресурс, который назывался лолкс, но теперь это в прошлом. Населен небольшим количеством людей и имеет низкую активность, что и хотелось бы изменить. pfpmd не модерируется, бан невозможен, как и цензура. Логотипом pfpmd является символ Ω, в честь Chaitin omega number https://en.wikipedia.org/wiki/Chaitin's_constant
Фичи pfpmd: -Борды не фиксированы, в форме создания поста можно указать имя новой борды и она будет создана динамически в момент создания поста. -Можно менять описание борды, это может делать любой пользователь сколько угодно раз; -На странице с чатом по дефолту отображаются сообщение не только из чата, но и со всех борд. Это поведение можно изменить в настройках. -На станице чана отображаются треды со всех борд. Но можно отобразить только треды какой-то одной борды, просто перейдя по ссылке этой борды. -Картинки отображаются с некоторых ресурсов, например, imgur, twitter. Также показываются превьюшки видео с youtube и некоторых имиджборд. Список будет пополняться в будущем. -Текстовое поле ввода чата поддерживает подобие командной строки. Есть команды для создания тредов, ответа в тред, изменения описания борды. -Можно скрыть отображение всех сообщений с кириллицей. -Поддерживается форматирование блоков кода. Подсветка синтаксиса реализована через highlight.js и выключена по дефолту, но ее можно включить в настройках. -Поддерживается форматирование математических формул через KaTeX. Но эта фича тоже выключена по дефолту. -Есть страница с логами всех сообщений (включая борды) в обратном по дате порядке. -Пользовательские фильтры. -И многое другое в новом интерфейсе.
Основные принципы:
-Максимальное облегчение сервера, весь (кроме статического) html генерится на клиенте, сервер отправляет клиенту только сырые данные; -Минимум зависимостей у клиентского кода. Всё, за исключение подсветки синтаксиса и математических формул, реализовано на голом javascript, без использования всяких jquery, vue.js и прочих фреймворков. Исходный код KaTeX и highlightjs подгружается только когда фичи включены в настройках. -Отсутствие цензуры.
Планы развития:
-Децентрализация на уровне серверов. Будет множество инстансов pfpmd, которые синхронизируются между собой. Юзер сможет подключаться к любому из серверов, сможет поднять свой. Находится в процессе разработки в данный момент.
Уже сделано:
-Клиентское приложение с консольным интерфейсом и веб интерфейсом. Чтобы юзер мог без запуска торбраузера заходить на pfpmd или вообще без гуйни, а также чтобы иметь свою локальную базу сообщений, по которой можно делать поиск и что угодно. -Допилить дизайн.
Вторым постом будет FAQ. Но, в любом случае, я буду отвечать в тред.
>По ссылке пустая страница без сообщений. Ничего не работает? Надо включить js для pfpmd в настройках noscript. Исходный код не обфусцирован.
>А что если вайпер всё завайпает или даже уронит сервер? Ничего страшного, есть бэкапы, переподнимем, если что.
>Я не могу терпеть спам. Почему бы не чистить говно? 1. У меня нет на это времени. 2. Понятие спама у каждого свое. 3. Юзер может скрывать посты по своим фильтрам. 4. Это нарушает один из основных принципов.
>Есть ссылка в клирнете? Нету, pfpmd доступен только через тор.
>Что означает pfpmd? Ничего, это просто первые пять символом рандомного хостнейма, который сгенерил тор.
>Какая тема общения на pfpmd? У нас в основном общаются люди, которым интересна математика, computer science, программирование, технологии и обсуждение вот этого всего. Но другие темы обсуждать не запрещается.
>>1596 (OP) Главное не сказал: эта параша не способна работать без жабаскрипта, поэтому в скрытосетях - больше чем ненужна.
>Децентрализация на уровне серверов. >Клиентское приложение с консольным интерфейсом >вообще без гуйни, а также чтобы иметь свою локальную базу сообщений, по которой можно делать поиск и что угодно. Вот это уже чуть интереснее.
Под какой лицензией клиентское приложение? Где найти код?
>>1603 >работать без жабаскрипта Шизло, зачем к javascript прицепился? Он в песочнице работает по умолчанию. Начитались хуеты всякой и несут бред свой про js. Вангую, скорее левый exeшник запустят без вопросов, зато не js.
>>1605 >Давай исходники сервера. Старые нет смысла смотреть, т.к. они сейчас переписываются с учётом децентрализации. Выложу уже новые, когда будет бэкенд переписан.
>>1606 >exeшник запустят Эксперт по сетевой безопасности на Win 10 - мне нечего скрывать?
>>1607 >Исходники не обфусцированы, можешь их проверить. А проверять их придеться при каждом обновлении странички? Вдруг изменились после прошлой проверки...
Если вы позиционируете вашу систему борд, как действительно анонимную, а не просто хайпитесь на теме анонимности, то должен быть предусмотрен альтернативный вариант интерфейса, работающий с минимальным функционалом без JS.
>>1612 >А проверять их придеться при каждом обновлении странички? Вдруг изменились после прошлой проверки... В таком случае тебе лучше удалить браузер с компа... И забыть про сайты вобще.
>>1612 >должен быть предусмотрен альтернативный вариант интерфейса, работающий с минимальным функционалом без JS. Да, были мысли об этом, но пока нет времени на это всё. Может быть. Ещё были мысли сделать xmpp бот, но это тоже не в приоритете в данный момент.
Допустим, я доверяю владельцу сайта, но не хочу использовать пердольный клиент. В коде страницы есть две ссылки на js: pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/chat.js http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/lolks.user.js Можно ли как-то сохранить этот JavaScript код локально и при каждом подключении к сайту использовать его вместо скачивания с сервера? А что если скачивать с сервера новую версию и сравнивать построчно с диалоговым окном юзеру - обновить или свалить нахуй? По крайней мере так будет исключена зловредная подмена кода майором на стороне сервера что обычно происходит с JS сайтами даже если изначально скрипт выполнял безобидную функцию.
>>1626 >Можно ли как-то сохранить этот JavaScript код локально и при каждом подключении к сайту использовать его вместо скачивания с сервера? Борьба с причиной подменяется борьбой с последствиями.
>>1627 Вы понимаете значение термина: "анонимность"? Если бы в описании борды его не было, тогда бы никаких вопросов по поводу обязательного использования JS не возникло.
Это не паранойя. В скрытосетях не работают привычные правила клирнета. Ни кто не знает, кто на данный момент контролирует сервер к которому вы подключаететсь, желая остваться анонимным, и какие замыслы на ваш счет у его админа. В связи с чем, любой сайт без исключений, должен считаться враждебно настроенным по отношению к вам, поэтому линия вашего сетевогоо поведения должна выстраиваться в соответсвии с данной аксиомой. Если извесно, что атака может быть проведена при помощи JS, то надо предполагать, что каждый сайт, использующий JS захочет ее провести, подсадив вам еще не извесный эксплоит, а не надеяться на отсутсвие злого умысла или просто беспечно игнорировать его.
Используя клирнет, вы исходите из того, что вам не требуется прикладывать усилия для поддержания анонимности - поэтому паранойя с полным отключением скриптов будет не к месту.
>>1628 Эксплоиты бывают и в рендерере самого хтмл, например. Так говоришь будто браузя клирнет бояться нечего. Эксплоит в браузере может тебе тоже говна наделать.
>>1628 С помощью js нельзя посадить експлойт. если ты, конечно, не используешь в качестве браузера ie6 или другой браузер десятилетней давности. Но тогда ты сам себе дурак, а не злые владельцы враждебно настроенных к тебе ресурсов.
>>1631 >В режиме полной паранойи можно использовать wget Будешь выделяться юзерагентом. Да даже выключенным джс ты уже выделяешься слегка >и валидатор Будешь писать хуйнюшку ищущую подозрительный хтмл? Что-то я сомневаюсь в том что такое в принципе возможно.
Лично меня JS неустраивает тем, что он создан без учета потребностей параноидального пользователя. Вот кусок библиотеки для создания отпечатка пальцев пользователя через JS:
Заметьте, что через doNotTrack брауезера (т.н. сигнал сайту "Не отслеживайте меня") можно отследить пользователя, поскольку не все выставят эту настройку в браузере, а значит это еще один бит идентифицирующей (отличающей одного пользователя от другого) информации.
Также меня расстраивает современная тенденция в защитах на уменьшение энтропии (попытка сделать всех пользователей одинаковыми). В современных условиях, когда корпорации в каждой новой версии софта (будь то браузер или компонент ОС) добваляют или меняют функционал, невозможно отследить все измнения в коде малыми средствами. Также невозможно обучить современного пользователя всем особенностям работы браузера, сетевого стека ОС и др. компонентов; Такая неосведомленность приводит к появлению идентифицирующих битов инфорамации (Через установку плагина / выстваление удобной натройки браузера или компонента ОС (установка нового шрифта, например)). Поэтому я считаю что гораздо выгодней станет дезинформация сервера как о функциональности клиента, так и о текущих настройках в пределе некоторого отрезка времени. Гораздо лучше было бы замаскировать клиента под дерево и спрятать в лесу, чем запихнуть его в сейф и поставить в чистое поле.
>>1628 Есть решения: написать сайт c серверной логикой где будет ограниченная рамками HTML последней версии борда и чат на пхп или в виде конференции xmpp/irc, или свести серверную логику к минимуму написав красивый клиент исполняемый в браузере без зависимости от внешнего софта. Да, отдельный софт вроде IRC клиента написанный сторонними людьми и проверенный кучей человеко-часов надежнее, но он не дает экспириенса который хочет принести нам ОП при этом оставшись сам в выигрыше: минимальный дроч серверной части, по его же словам, чего не дают сделать сдандартный HTTP+HTML тянущий всю страницу для подгрузки одного единственного сообщения, за подобным экспириентсом - добро пожаловать в любой пхп-чатик или доску с картинками в дарквебе. ОП написал некий сервер и дает возможность: зайти на него через браузер с исполнением кода на js или запустить его мокропиську вне браузера. Какое из этих решений надежнее - я не знаю, но доверить исполнение кода с красивостями браузеру который максимально обезопасили разработчики Tor Project в моем понимании надежнее чем запускать ОПовскую мокропиську в консолечке пердоликса где никаких базовых защит совсем нет. Ко всему прочему, исходники и того, и другого не скрываются, а значит их условно возможно проверить. Допустим, мы их проверили для текущей версии, но стоит другая задача: я хочу быть уверен что код исполняемый в браузере тот самый что я скачал в первый раз как только зашел на страницу и полез в исходники, мне нужно запускать только этот скрипт и получить уведомление об обновлении и уже дальше самостоятельно принять решение внес ли автор в код вредоносные элементы или нет. Мой вопрос был таким, и на него ты не ответил: каким образом запустить js код для сайта из локального хранилища, а тот что предлагается сервером, проверить на отличие?
>>1626 >Можно ли как-то сохранить этот JavaScript код локально и при каждом подключении к сайту использовать его вместо скачивания с сервера? Можно. В юзерсприпт весь код просто оборачиваешь.
>А что если скачивать с сервера новую версию и сравнивать построчно с диалоговым окном юзеру - обновить или свалить нахуй? Для этого нужно делать экстеншн браузера. Неплохая идея, кстати. Может он даже пользовался бы популярностью.
>>1635 >Tor Project в моем понимании надежнее чем запускать ОПовскую мокропиську в консолечке пердоликса где никаких базовых защит совсем нет. Да, надо, наверное, в docker контейнер клиент запихнуть, например, тогда будет безопаснее с точки зрения юзера.
>>1636 >Для этого нужно делать экстеншн браузера. Хотя, можно и без экстеншена. Что-то я затупил. Можно в начале юзерсприта добавить код, который будет делать diff и показывать попап просто добавляя элемент на страницу.
Кто-то тут спрашивал про кеширование JS (запрет скачивания). Попробуйте модифицировать https://git.synz.io/Synzvato/decentraleyes/ (там насколько я понял, не только JS локальный, но и fonawesome шрифты и чтот еще. Не углублялся)
Лично я таким не пользуюсь, поскольку сайт который хостит ссылку может точно сказать скачал ли я этот ресурс, или из "кэша" достал. А мне такое не нравится. Вот пруф этой возможности: https://decentraleyes.org/test/ <- тут сайт видит скачал ли я google's jquery скрипт или с диска его запустил. Таким образом он догадывается о наличии подобного плагина, а значит я отличаюсь от других пользователей Тор-Браузера.
>>1632 >Будешь выделяться юзерагентом. С каких пор wget нельзя назначить юзерагент статистичеки самого распространенного браузера? --user-agent=agent-string
>Будешь писать хуйнюшку ищущую подозрительный хтмл? Можно прогнать через валидатор html (tidy, например) на соответствие стандартам, на основании которых создаются парсеры в браузерах. Зачем его самому писать?
>>1633 >Гораздо лучше было бы замаскировать клиента под дерево и спрятать в лесу, чем запихнуть его в сейф и поставить в чистое поле. Если JS отключат несколько анонов, то будет вместо леса будет поле, заставленное сейфами.
>>1641 Так и нужно скачать, сравнить, выдать юзеру диалог с диффом, и спросить дальнейшие действия: запускать или нет. Вообще такую хуйню можно сделать как функцию улучшенных браузерных закладок, и сохранять к к примеру в том числе и сертификат присылаемый сайтом получив Trust on First Use защиту от подмайорных CA которые выдали временный сертификат на валидный домен. В дополнеение можно к ккаждому доменному имени добавлять метадату стянутую из
>>1644 Блядь йобаный Tab. стянутую из info, контакты админа, PGP ключи и все такое, пускай даже и ручками добавленное отдельно. Подойдет такое только для узкого круга любителей олдфажного авторского веба, бо говно за клаудфларой с гигабайтами обфусцированных и сгенерированных на лету скриптов этому соответствовать явно не будет, но сайту вроде ОПского вполне подходит под юзкейс.
>>1643 >Если JS отключат несколько анонов В прошлой версии тор-браузера он был отключен по дефолту. Теперь уже все. Но это не отменяет желания уменьшить поверхность атаки во враждебном окружении.
>>1646 >Теперь уже все. Тор-браузер - универсальный инструмент для широкого круга пользователей, служащий как для проксирования клирнетовских сайтов, так и для доступа ко внутренним - торовским. Всем угодить - невозможно, поэтому видимо с целью популяризации, разрабы решили включить JS, для того что бы не вызвать лишних вопросов и недовольства, сопровождаемого негативной реакцией: "почему ничего не работет? Тор - отстой!" у казуалов уровня вконтактиков. Те, кому надо, смогут легко выключить его через about:config.
>>1647 Его не надо выключать через about:config. Там есть Security level кнопка. Выбираешь safest и будет > Only allows website features required for static sites and basic services. These changes affect images, media, and scripts. > JavaScript is disabled by default on all sites.Some fonts, icons, math symbols, and images are disabled.Audio and video (HTML5 media), and WebGL are click-to-play.
Алсо, по-моему, вы гоните. Всегда js был включён по дефолту в TB, потому что в standard секурити левеле он включён, а standard левел был всегда по дефолту. Может в предыдущей какой-то версии они делали safest по дефолту, тогда я возможно просто это пропустил, но раньше, точно был js включен, как только устанавливаешь TB.
>>1648 >Его не надо выключать через about:config Наверно просто привычка. Что бы наверняка он был отключен, а то вдруг в стандартных пресетах что поменяют при очередном обновлении.
>Всегда js был включён по дефолту в TB Последние года три-четыре он был точно включен. Что было раньше уже не помню.
>>1655 Зачем его делать "клиент-онли"? По любому данные не напрямую будут из базы запрашиваться клиентом, их надо сначала загнать в json на сервере, только потом отдавать клиенту. Проще сразу их загнать в html тем более логика у борды - элментарная зачем из несчастной страницы с постами делать целое "приложение"?
Даже логику чата вполне устешно можно реализовать на серверной стороне. Отправлять обычной формой, запрашивать - страницу с последними сообщениями с пагинацией ранних сообщений. Да и будет ли так востребован чат, когда уже имеется функционал борды? Тем более анонимный чат - мечта для флудера. Или придется запрашивать капчу для каждого сообщения?
>>1656 Почему? Потому что тащить каждый раз с сервера всю страницу на 500 постов с картинками, да еще и разметку к ним это дохуя оверхед будет. Не у всех гигабитный канал в любое время, и тем более не у всех есть быстрые мосты в тор. Давно уже жду нормальной замены электронной почте чтобы можно было делать децентрализованные в т.ч. анонимные форумы и отправлять аттачменты современными протоколами устойчивыми к разрывам, а не костылями из 80-х.
Забыл добавить: главный профит от этого всего конечно серверу. Клиентам может и норм качать всю страницу каждый раз, а аплинк сервера скорее всего просто встанет, нам неизвестно на чем оно хостится и в каких условиях.
>>1685 >Потому что тащить каждый раз с сервера всю страницу на 500 постов с картинками, да еще и разметку к ним это дохуя оверхед будет. Что мешает разбить эти 500 постов на страницы и запрашивать не все сразу, а только требуемую часть?
>Давно уже жду нормальной замены электронной почте чтобы можно было делать децентрализованные в т.ч. анонимные форумы Обратите внимание на Bitmessage. Или на почту и распределенные форумы в сети ZeroNet.
>>1700 То есть ты предлагаешь прокликивать посты по одному или как на форуме из нулевых делить все на странички с десятью сообщениями. А теперь представь что тебе надо сделать поиск без серверной логики. Стандартный Ctrl+F на одной странице работает, в истории мессенджера работает, а на 50 страницах по 10 сообщений не очень, если без аддонов.
>>1706 >Это суть децентрализации(пир ту пир). Речь шла о >И как ты клиент-онли веб-приложения без жиес будешь делать? Кто или что мешает его делать без JS?
Распределенное веб-приложение с JS, на моднючих вебсокетах, уже сделали: ZeroNet называется. Спасибо, но такой жопорукой глюкоубогости даже за вознаграждение не надо.
>>1703 Допустим ты пролистал 49 страниц и находишься сейчас на 50-й. Вместо гружения сервера лишними запросами на поиск слова в его базе и вместо скачивания страницы со всеми сообщениями сызнова, ты ищешь то что у тебя уже есть в кэше. Это и есть оптимизация. Ущербный браузер по дефолту так не умеет, он даже на нескольких открытых страницах искать не умеет.
>>1714 >ты ищешь то что у тебя уже есть в кэше. Какой в этом смысл смысл? Полноценный поиск должен быть полным - по всему сайту или по указанным разделам. Кеш на то и кеш, что в нем всегда будут не полные данные, поэтому результаты поиска также (прчем, гарантированно) будут не полными.
>Ущербный браузер по дефолту так не умеет Он и не должен уметь страдать такой фигней.
Представь, что ты запросил что-то у поисковика, а поисковик ответил: "что-то мне не хочется делать запрос ко всей моей базе, еще нагружать ее придется, давай я специально для тебе поищу по своему кешу за последние 20 минут? Идет?"
>>1596 (OP) >Create Account Nickname: Password: Proof of work: Proof of work calculation instructions: Install hashcash. E.g. in debian: $ sudo apt-get install hashcash Run this command and wait till it returns your PoW: $ hashcash -uPb33 -x pfpmd -m your_nickname The proof of work will look like this: 1:33:210802:your_nickname:pfpmd:CwspS7XCMLELQRy6:000009CQoO