Что значит пиринговая передача данных. Электронные библиотеки, дистанционное обучение, сервисы, пиринговые сети. Некоторые недостатки пиринговой модели

Пиринговая сеть, она же одноранговая, она же децентрализованная, она же peer-to-peer («равный к равному»), она же P2P, является компьютерной сетью без управляющих серверов. Ну, или почти без таковых - гибридная, совмещающая преимущества разных технологий. Так или иначе, компьютеры пользователей подключаются друг к другу напрямую и общаются действительно на равных. Впрочем, как всегда, обо всём будем рассказывать по порядку.

Суть

Для сравнения рассмотрим работу обычной сети, например, всемирной паутины (World Wide Web). Сайты размещаются на серверах. Клиенты подключаются к оным серверам и запрашивают опубликованные веб-страницы и прочие файлы. То есть, обязательно должен быть компьютер, на котором размещается тот или иной ресурс с конкретным доменным именем, привязанным к конкретному адресу IP .

Теперь представьте себе, что своеобразным сервером становится каждый компьютер в сети - у него можно брать данные. Но одновременно остаётся и клиентом - запрашивает сам всё то, что нужно пользователю. А тот или иной файл существует не по конкретному адресу, как во всемирной паутине , а у всех, кто не поленился сделать копии. Информация хранится не в одном месте, а распределена среди равноправных участников.

Если во всемирной паутине происходит отключение или сбой сервера , то на сайт зайти нельзя, скачать оттуда что-либо не получится. Однако в пиринговой сети опубликованное имеет хорошие шансы остаться доступным.

Выпал в оффлайн один из обладателей копии файла - возьмём у другого. Может, уже и третий себе скачал - тогда добудем у него. И потом сами позволим всем желающим скопировать полученное.

Торренты

Естественно, когда разговор заходит о пиринговых сетях, сразу вспоминаются торренты. Их центрами ошибочно считают сайты-треккеры. Но это всего лишь хранилища параметров подключений.

Пользователь получает вышеуказанные параметры (в виде торрент-файла), входит в пиринговую сеть - и начинает скачивать файл по кусочкам, уже никак не взаимодействуя с треккером. Причём, одновременно служит и сервером, отдавая полученные кусочки другим скачивающим.

У такой системы есть недостатки. Чтобы появилась возможность раздобыть файл, его кто-то должен раздавать. То есть, обладатель полного файла (а не кусочков) обязан быть онлайн. Он называется «сеятель» (seeder).

Кто успел загрузить файл полностью, может тут же стать таким «сеятелем». Не успел? Значит, он пока просто один из «пиров» (peer), обменивающихся фрагментами файла. И чем больше участников, тем быстрее складываются оные кусочки в единое целое.

Если же все обладатели полного файла находятся оффлайн, то никто ничего не загрузит, увы.

Технология торрентов без проблем работает в локальной сети (например, в сети провайдера), без выхода в интернет. Конечно, если там есть чем обмениваться.

Skype

Да, сеть Skype - тоже пиринговая. Однако не в чистом виде, поскольку координационный сервер всё же имеется.

Когда клиент желает кому-либо позвонить, то главный сервер выдаёт ключи шифрования для установки защищённого соединения. После чего, как говорится, умывает руки. Дальше обмен данными происходит уже напрямую, от компьютера к компьютеру. (Подключённые машины называются нодами, от английского «node» - «узел».)

В общем, одной локальной сети недостаточно, потому что на стадии соединения требуется доступ к интернету.

На центральном сервере Skype также хранятся данные о клиентах. Списки контактов, суммы на счету (для оплаты звонков на обычные телефоны), пользовательские имена и пароли.

В сети Skype компьютер может внезапно, не спрашивая разрешения и не предупреждая, стать супернодом - суперузлом. И прокачивать чужие данные, помогая кому-то общаться.

Впрочем, если скорость обмена трафиком у вас не очень высокая, то вам такая участь, скорее всего, не грозит.

Вычислительные сети

«Зачем строить громадный суперкомпьютер, если можно сложить его из великого множества обычных?» - примерно так подумали хитрые разработчики из фирмы Sony , запуская в обиход свои игровые приставки. - «Пусть Sony Playstation объединяются в пиринговую сеть!»

Почему в пиринговую? Потому что для обычной нужен сервер, который очень быстро впадёт в ступор из-за сумасшедшей нагрузки. А при использовании одноранговой структуры каждый участник обрабатывает часть циркулирующих данных, и нагрузка распределяется между всеми.

Финансы

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

Однако надёжность - сугубо технологическая, никаких других гарантий нет. Всё держится на энтузиазме участников и благосклонности интернет-магазинов, принимающих платежи в виртуальной валюте Bitcoin .

Ещё один недостаток: разбухание копий базы данных со сведениями о транзакциях. Тем или иным образом, но расплачиваться доводится за всё.

Безопасность

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

К торрентам лучше подключаться, работая в UNIX-подобных операционных системах. В Mac OS, GNU/Linux, *BSD.

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

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

Резюмируем

Если никто не раздаёт файл в торрентах, то его, вероятно, можно найти и скачать обычным способом с обычного сервера, по протоколам FTP или HTTP . (Речь идёт, конечно, только о легальных загрузках.) Например, такие альтернативы практически всегда предоставляются для желающих получить тот или иной дистрибутив GNU/Linux.

Если нет возможности или желания пользоваться Skype, то можно обойтись, к примеру, только ICQ (правда, там при передаче файлов тоже устанавливается прямое соединение между компьютерами). Да и участие в системе Bitcoin - дело совершенно добровольное.

В общем, пиринговые сети - это удобно и нередко даже весьма полезно, однако жизненной необходимости в них нет.

Они привлекают свободолюбивых, которым нравится децентрализация и даже некоторая анархия, но все эти преимущества - не более чем иллюзия. Почему? По одной простой причине: каждый пользователь всецело зависит от провайдера. А полностью независимую сеть, свою собственную и никем не контролируемую, можно организовать только в весьма скромных масштабах.

Предыдущие публикации:

Федеральное агенство по образованию

Государственное образовательное учреждение высшего

профессианального образования

Ульяновский государственный университет

Инзенский филиал

Курсовая работа

по предмету: «Информационные технологии»

на тему: «Пиринговые сети. Понятия и виды»

Выполнила: студентка

группы БУА-07

Введение.......................................................................................................... 3

Глава 1. Пиринговые сети............................................................................... 4

1.1 Общие понятие.......................................................................................... 4

1.2 Одноранговая сеть.................................................................................... 7

1.3 Пиринговая файлообменная сеть........................................................... 13

Глава 2. Сети и протоколы........................................................................... 15

2.1 eDonkey2000 (сеть). ................................................................................. 15

Поиск............................................................................................................. 15

Межсерверные соединения........................................................................... 16

2.2 Kad Network............................................................................................ 17

Использование............................................................................................... 17

2.3 BitTorrent................................................................................................. 18

Принцип работы протокола......................................................................... 18

Общие особенности....................................................................................... 19

Протоколы и порты...................................................................................... 19

Файл метаданных.......................................................................................... 20

Трекер............................................................................................................ 20

Работа без трекера........................................................................................ 21

Super seeding (cупер-сид).............................................................................. 21

Две ошибки начинающих пиров.................................................................. 22

Терминология................................................................................................ 22

Программы-клиенты..................................................................................... 23

Глава 3. Программы для работы с пиринговыми сетями........................... 26

3.1 Perfect Dark (P2P).................................................................................... 26

Безопасность.................................................................................................. 26

Открытое тестирование................................................................................. 27

Особенности работы..................................................................................... 27

3.2 eMule........................................................................................................ 28

Глава 4. История пиринговых сетей............................................................ 33

Карающая рука закона................................................................................. 34

Партизанская тактика обмена....................................................................... 34

Король умер, да здравствует король!......................................................... 36

Обмен под контролем................................................................................... 37

Заключение.................................................................................................... 39

Список используемых источников:.............................................................. 41


Все мы каким-то образом делимся информацией с окружающими нас людьми. В случае, когда мы делимся файлами с помощью программ типа еМул, еДонки, КаЗа и им подобных, такого рода обмен сопряжён с работой огромной машины, принципы работы которой, её истоки и идеи, на которых она построена, мы зачастую представляем себе довольно слабо. Данный пробел и предназначена восполнить эта статья.

Необходимость иметь доступ к огромному количеству информации, лежащей на других компьютерах, сначала породила локальные сети. Это помогло на некоторое время, но объединить таким образом большое количество компьютеров оказалось невозможно. Возможность же доступа к файлам, возможно имеющихся у кого-то ещё, была очень заманчива. Поэтому была предложена система, позволяющая принимать и передавать файлы с каждого компьютера, с которым есть связь и на котором имеется определенное программное обеспечение. Такие системы получили название п2п (p2p) или пиринговых (peer-to-peer) сетей. Это словосочетание можно перевести как «равноправный обмен». Это значит, что вы, имея некоторые файлы, которые могут быть интересны кому-то ещё, разрешаете желающим их у вас скопировать, а взамен получаете возможность получить файлы, необходимые вам, от тех, у кого они есть.

Актуальность темы: Т.к. в настоящее время Интернет получает всё большую и большую распространённость, использование пиринговых сетей является актуальнее с каждым днём. Ведь на сегодняшний день найти нужный файл (любимый фильм, новую программу для своего «электронного друга», только что вышедшею песню любимой звезды, книгу и просто какой-либо интересующий вас файл) намного проще если вы знаете что такое пиринговые сети, и знаете как ими пользоваться.

Задачи: Изучить назначение пиринговых сетей, типы, использование пиринговых сетей. Познать с помощью какого контента возможно пользоваться пиринговыми сетями.


Одной из основных трудностей реализации подобного обмена являлось то, что было необходимо каким-то образом найти тех, у кого есть то, что вам нужно. Для решения этой проблемы существуют два основных пути: централизованый и распределённый серверы. В случае работы с централизованым сервером каждый пользователь должен зарегистрироваться на этом сервере, который соберёт информацию о пользователе (файлы, доступные для обмена, идентификатор пользователя и т.д.), а затем внесёт эту информацию в свою базу данных, по которой и будет в дальнейшем идти поиск. Все запрошеные пользователем файлы будут искаться в базе данных центрального сервера, а найденные ссылки будут передаваться пользователю для установления прямой связи именно с тем компьютером, на котором есть нужная информация. Именно на таком принципе работает популярная КаЗа (KaZaa) и многие другие пиринговые приложения. Описанный способ обмена файлами с помощью одного или нескольких центральных серверов основан на так называемом протоколе ФастТрак (FastTrack), который является коммерческим, что несколько негативно влияет на разработку приложений, его использующих.

Во втором случае, когда центрального сервера не существует, используется протокол Гнутелла (Gnutella), который передаёт запрос пользователя не центральному серверу, а непосредственно другим компьютерам сети. То есть пользователь сам является и клиентом, и сервером пиринговой сети. Такого рода системы менее требовательны к приёму и регистрации новых членов и отличаются огромной скоростью распространения запроса. По сути, количество опрошеных источников увеличивается в геометрической прогрессии. Примером приложения, использующего этот подход, может служить Морфеус (Morpheus).

Несмотря на то, что протокол Гнутелла является некоммерческим, то есть бесплатным для использования, сравнение этих двух протоколов заканчивается не в его пользу. Протокол ФастТрак осуществляет более эффективный поиск, чётче обрабатывает запросы и в целом является более стабильным. Это, однако, вовсе не означает, что Гнутелла обречена на вымирание, но печальный опыт того же Морфеуса, вначале использовавшего ФастТрак и бывшего одним из лидеров среди пиринговых приложений, а затем перешедшего на Гнутеллу и сразу потерявшего лидирующие позиции, достаточно хорошо описывает сложившуюся ситуацию.

Несомненным первопроходцем пиринговых систем стал Напстер (Napster), на свою беду попавший под горячую руку защитников авторских прав. Через несколько месяцев после появления Напстера свет увидел ещё одного новорожденного в той же семье: ИМеш (IMesh). В отличие от почившего Напстера, ИМеш жив и поныне, хотя в последнее время участились сообщения о сбоях на центральном сервере. Возраст, знаете ли, не шутка...

После закрытия Напстера пиринговые приложения стали появляться с чудовищной скоростью и к настоящему времени их существует довольно много. Периодически одни погибают, другие рождаются и перерождаются. Одним из самых известных в мире является КаЗа, а в рунете – разновидности еМул (eMule) и еДонки (eDonkey).

На самом деле, ослик и мул, как их называют те, кто ими пользуется, являются в некотором смысле промежуточными системами между распределёнными и централизоваными системами: существуют центральные сервера, которые обрабатывают запросы пользователей (осло- и муловодов соответственно), но таких серверов достаточно много, что позволяет с одной стороны их не перегружать, но с другой стороны несколько усложняет поиск, так как обновление и получение информации с других серверов занимает некоторое время.

В целом осёл и мул имеют очень много общего, но их сравнение выходит за рамки данной статьи и заслуживает дополнительного более подробного освещения. Это уже не говоря о различных версиях ослика и наличии еМул Плюс (eMule Plus), который, к слову, тоже имеется в нескольких ипостасях.

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

1. После скачивания не удаляйте файл сразу. Пока есть возможность – подержите и дайте его скачать другим.2. Не зажимайте скорость исходящего соединения без необходимости. Конечно, это нагрузка на ваш компьютер, но ведь другие тоже хотят что-то получить.3. Делитесь файлами. Если у вас есть то, что может быть интересно кому-то ещё (например, номер вашей кредитной карточки или коллекция фотографий шнурков от ботинок), не держите это в тёмном и пыльном углу диска: выложите для всеобщего доступа и пусть все удивятся, как много денег у вас было на карточке.Вот, собственно, и все правила. Правда несложные?

Высшая ценность человеческой цивилизации, на современном этапе ее развития, - информация. Кто владеет актуальной информацией - имеет деньги, власть, влияние на сильных мира сего. Не удивительно, что огромное развитие получила всемирная информационная сеть «Интернет» и количество персональных компьютеров, имеющихся у населения Земли, растет в геометрической прогрессии. Появление интернета привело к развитию локальных информационных сетей, следующим этапом эволюции которых стали пиринговые информационные сети. Эта статья максимально доступно расскажет об основных моментах, необходимых для понимания устройства и принципов работы пиринговых сетей.

Пиринговые, или как их еще называют, р2р (peer-to-peer) сети относятся к одному из двух видов. Общая суть их работы, раскрывается в дословном переводе словосочетания peer-to-peer: равноправный обмен. Вы предоставляете доступ к файлам своего компьютера, в качестве компенсации, получая доступ к файлам всех остальных участников сети. В случае неработоспособности сети необходим вызов IT специалиста .

Виды пиринговых сетей

  • Сеть с централизованным сервером. Если вы хотите стать участником такой сети, то должны будете пройти регистрацию на центральном сетевом сервере. После чего, сервер самостоятельно соберет всю необходимую информацию о вашем компьютере. В перечень собираемой информации войдут: IP адрес, общедоступные для скачивания файлы и некоторые другие данные. Собранные сведения составляют единую базу серверных данных, по которой будет производиться, в дальнейшем, поиск для скачивания информации на компьютеры участников сети. Для обслуживания таких сетей, создана, например, известная программа-клиент «KaZaa», которая использует протокол FastTrack.
  • Сеть с распределенным сервером. Если ваш компьютер подключен к сети такого вида, он является и клиентом, и сервером, использующим для своей работы протокол «Gnutella». Если вы пожелаете скачать файл с одного из компьютеров такой сети, ваш компьютер пошлет запрос не на сервер, а непосредственно в тот компьютер, на котором находится нужный файл.

Преимущество сетей данного вида очевидны:

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

Недостатков у этой сети немного. Например, не все пользователи одинаково регулярно и тщательно производят обслуживание серверов, в результате чего, по сети могут разгуливать разнообразные компьютерные вирусы.
Согласно протоколу «Gnutella», работает предложение «Морфеус», увеличивающее число опрашиваемых, в процессе поиска, источников в геометрической прогрессии.

Кодекс участника пиринговой сети

Как говорил один пират, кодекс - не свод правил, а собрание рекомендаций, необязательных для соблюдения. Но, если не хотите, чтобы вас прокляли, придерживайтесь ряда простых условностей:

  • Не удаляйте файл, сразу после того, как закончилась загрузка: возможно, другие пользователи сети тоже захотят его скачать.
  • Не вздумайте ограничивать скорость раздачи и загрузки.
  • Предоставляйте доступ, к максимальному числу файлов, находящихся на вашем компьютере.

В качестве примера текущий движок позволяет добавлять такие сервисы как:

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

Сайт в соответствии с последними веяниями имеет адаптивный дизайн и вполне корректно отображается и редактируется на мобильных устройствах.

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

Возможно, некоторым разработчикам будет интересно поучаствовать в данном проекте - привнести новые возможности, расширить функционал, добавить фичи или улучшить дизайн существующего движка. Велком! Буду весьма признателен любой помощи.

Инфраструктура проекта

Установка серверного ПО

Для поддержки проекта и развития сети любой желающий может предоставить свои серверные ресурсы. Для этого на своем сервере необходимо установить и запустить серверную ноду.
  1. Перед установкой ноды необходимо убедиться, что на сервере уже установлена платформа Node.js или установить ее в соответствии с инструкцией
  2. Скачать репозиторий с github

    Git clone https://github.com/basenetwork/base.server-node

  3. Установить модуль sqlite3 для Node.js

    Cd base.server-node && npm install sqlite3 --build-from-source && cd ..

  4. запустить ноду nohup base.server-node/base.node.js --size=32 >/var/log/base.node.log &
В качестве параметра size необходимо указать свободный объем на диске (в ГБ), который вы готовы выделить под ноду.
Для работы ноды необходимо выделить внешний IP адрес и свободный порт. По умолчанию система попытается автоматически использовать один из внешних IP адресов в списке network interfaces операционной системы. Возможно вручную указать IP-адрес и порт, используя параметры запуска --host и --port:

Nohup base.server-node/base.node.js --size=32 --host=41.34.55.66 --port=2222 >/var/log/base.node.log &
Проверить работоспособность ноды можно, сделав http-запрос к веб-серверу:

Curl http://41.34.55.66:2222/-/about

Исходный код

Со всеми исходниками проекта можно ознакомится на GitHub - github.com/basenetwork . Аккаунт содержит несколько репозиториев:
  • base.server-node
    Собственно, сама серверная нода. Репозиторий написан на Node.js. Инструкция по установке base-ноды на свой сервер была представлена выше.
  • client-js
    Клиентское ядро. Проект написан на JavaScript. Включает в себя базовые функции по работе с системой. Это непосредственно тот самый код, который подгружается при открытии любого сайта системы - http://base.network/core.js Сайтовым движкам для работы с сетью ядро предоставляет специальный API - baseAPI
  • site-engine-js
    Сайтовый движок. Написан на JavaScript с использованием библиотеки React.js. В качестве фреймворка для верстки и стилей использует Bootstrap v3. Это собственно тот код, который организует структуру сайтов, их внешнее представление. Реализует систему редактирования контента для владельцев сайтов. В данный момент в качестве теста движком реализованы такие сервисы как блоги, фотоальбомы и списки медиа, а также систему комментариев к постам и фотографиям. Движок не работает напрямую с сетью, а использует для этого специально предоставленный ядром API.
  • static-builder
    Специально разработанный билдер статических файлов. Билдер написан на Node.js. Работа билдера заключается в компиляции всех статических файлов в один единственный javascript-файл. Необходим для компиляции ядра и движка сайта. Скомпилированный файл включает в себя полностью весь функционал для работы с сайтом: программный код, логику, формы, стили, шрифты и иконки, используемые в оформлении сайта. Полученный файл выкладывается в сеть и подгружается пользователем в качестве движка один единственный раз, при посещении сайта.
    Билдер в css-файлах стилей непосредственно вместо ссылок на шрифты и иконки вставляет закодированное в base64 их содержимое. А уже полученные css-файлы, а также скомпилированные js и jsx объединяет в один единственный js-файл.
К сожалению, еще пока не создано подробной документации по проекту. Нет детального описания структуры репозиториев и протоколов обмена. Функционал не покрыт тестами (исходный код для ознакомления представлен в весьма сыром виде). Надеюсь, что ситуация будет исправлена в ближайшем времени.

Планы

  • Доработать сайтовый движок. Переработать дизайн и повысить юзабилити существующего функционала. Добавить ряд полезных функций, чтобы по функционалу не уступать современным социальным сетям.
  • Локализовать веб-интерфейс для популярных языков.
  • Добавить сервис личных сообщений с обеспечением полной анонимности. Сервис помимо шифрования непосредственно содержимого сообщений будет скрывать сам факт переписки двух лиц, чего сложно добиться с использованием централизованной системы. Реализация такого сервиса требует лишь небольших доработок сайтового движка на стороне клиента. Серверная часть уже сейчас вполне готова для воплощения подобного функционала.
  • Переписать серверное ПО на языке GO, поскольку скорость работы с криптографического алгоритмами на Node.js оставляет желать лучшего.
  • Покрыть весь функционал тестами.
  • Составить подробную документацию к проекту, API и протоколам общения клиент-сервер.
  • Создать своего рода Store сайтовых движков, сервисов и плагинов, а также стилей и дизайн-тем.

Поддержка проекта

Как вы наверное уже заметили, проект пока что находится в стадии становления и ему крайне требуется ваша помощь. Помочь проекту может каждый, кому небезразличны принципы свободы распространения информации в современном мире. Ваши советы, отзывы и предложения по улучшению проекта уже являются ощутимой помощью.

Кроме того, если у вас в распоряжении имеются сервера, либо на ваших персональных машинах есть выделенный канал, вы можете предоставить небольшую часть своих машинных ресурсов для развития сети. С инструкцией по установке серверной ноды вы можете ознакомится выше или на github . Также будут крайне важны ваши отзывы о работе установленного серверного ПО.
Веб-разработчики, владеющие Node.js, могут предложить свои доработки и советы по оптимизации серверного ПО.

Веб-дизайнеры, HTML-верстальщики, программисты, имеющие опыт работы на JavaScript, могут принять участие в развитии сайтового движка и его отдельных сервисов. Приветствуется также и разработка собственного сайтового движка с нуля.

Спасибо за поддержку!

Заключение

И в заключение немного лирики. Цензура в современном мире - это большая глупость. Любые идеи, неважно технические или гуманитарные, развиваются одинаково  -  они растут одна из другой, бесконечной цепочкой. Идея имеет право быть высказанной и услышанной в её оригинальном виде, без искажений и цензуры. Однако в современных реалиях рукописи вполне неплохо горят и написанное пером нещадно вырубается топорами. И, как ни печально осознавать это, но задуманный как рупор свободы, Интернет в руках правительств стран и государств превратился в инструмент всеохватывающего контроля. Причем контроля настолько неприкрытого, что все чаще продвинутая часть общества задается вопросом: а есть ли свобода слова в интернете? Можем ли мы с его помощью открыто заявлять о чем-то действительно важном? Видим ли на его просторах всю палитру разнохарактерных независимых мнений? Добавить метки

В качестве примера текущий движок позволяет добавлять такие сервисы как:

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

Сайт в соответствии с последними веяниями имеет адаптивный дизайн и вполне корректно отображается и редактируется на мобильных устройствах.

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

Возможно, некоторым разработчикам будет интересно поучаствовать в данном проекте - привнести новые возможности, расширить функционал, добавить фичи или улучшить дизайн существующего движка. Велком! Буду весьма признателен любой помощи.

Инфраструктура проекта

Установка серверного ПО

Для поддержки проекта и развития сети любой желающий может предоставить свои серверные ресурсы. Для этого на своем сервере необходимо установить и запустить серверную ноду.
  1. Перед установкой ноды необходимо убедиться, что на сервере уже установлена платформа Node.js или установить ее в соответствии с инструкцией
  2. Скачать репозиторий с github

    Git clone https://github.com/basenetwork/base.server-node

  3. Установить модуль sqlite3 для Node.js

    Cd base.server-node && npm install sqlite3 --build-from-source && cd ..

  4. запустить ноду nohup base.server-node/base.node.js --size=32 >/var/log/base.node.log &
В качестве параметра size необходимо указать свободный объем на диске (в ГБ), который вы готовы выделить под ноду.
Для работы ноды необходимо выделить внешний IP адрес и свободный порт. По умолчанию система попытается автоматически использовать один из внешних IP адресов в списке network interfaces операционной системы. Возможно вручную указать IP-адрес и порт, используя параметры запуска --host и --port:

Nohup base.server-node/base.node.js --size=32 --host=41.34.55.66 --port=2222 >/var/log/base.node.log &
Проверить работоспособность ноды можно, сделав http-запрос к веб-серверу:

Curl http://41.34.55.66:2222/-/about

Исходный код

Со всеми исходниками проекта можно ознакомится на GitHub - github.com/basenetwork . Аккаунт содержит несколько репозиториев:
  • base.server-node
    Собственно, сама серверная нода. Репозиторий написан на Node.js. Инструкция по установке base-ноды на свой сервер была представлена выше.
  • client-js
    Клиентское ядро. Проект написан на JavaScript. Включает в себя базовые функции по работе с системой. Это непосредственно тот самый код, который подгружается при открытии любого сайта системы - http://base.network/core.js Сайтовым движкам для работы с сетью ядро предоставляет специальный API - baseAPI
  • site-engine-js
    Сайтовый движок. Написан на JavaScript с использованием библиотеки React.js. В качестве фреймворка для верстки и стилей использует Bootstrap v3. Это собственно тот код, который организует структуру сайтов, их внешнее представление. Реализует систему редактирования контента для владельцев сайтов. В данный момент в качестве теста движком реализованы такие сервисы как блоги, фотоальбомы и списки медиа, а также систему комментариев к постам и фотографиям. Движок не работает напрямую с сетью, а использует для этого специально предоставленный ядром API.
  • static-builder
    Специально разработанный билдер статических файлов. Билдер написан на Node.js. Работа билдера заключается в компиляции всех статических файлов в один единственный javascript-файл. Необходим для компиляции ядра и движка сайта. Скомпилированный файл включает в себя полностью весь функционал для работы с сайтом: программный код, логику, формы, стили, шрифты и иконки, используемые в оформлении сайта. Полученный файл выкладывается в сеть и подгружается пользователем в качестве движка один единственный раз, при посещении сайта.
    Билдер в css-файлах стилей непосредственно вместо ссылок на шрифты и иконки вставляет закодированное в base64 их содержимое. А уже полученные css-файлы, а также скомпилированные js и jsx объединяет в один единственный js-файл.
К сожалению, еще пока не создано подробной документации по проекту. Нет детального описания структуры репозиториев и протоколов обмена. Функционал не покрыт тестами (исходный код для ознакомления представлен в весьма сыром виде). Надеюсь, что ситуация будет исправлена в ближайшем времени.

Планы

  • Доработать сайтовый движок. Переработать дизайн и повысить юзабилити существующего функционала. Добавить ряд полезных функций, чтобы по функционалу не уступать современным социальным сетям.
  • Локализовать веб-интерфейс для популярных языков.
  • Добавить сервис личных сообщений с обеспечением полной анонимности. Сервис помимо шифрования непосредственно содержимого сообщений будет скрывать сам факт переписки двух лиц, чего сложно добиться с использованием централизованной системы. Реализация такого сервиса требует лишь небольших доработок сайтового движка на стороне клиента. Серверная часть уже сейчас вполне готова для воплощения подобного функционала.
  • Переписать серверное ПО на языке GO, поскольку скорость работы с криптографического алгоритмами на Node.js оставляет желать лучшего.
  • Покрыть весь функционал тестами.
  • Составить подробную документацию к проекту, API и протоколам общения клиент-сервер.
  • Создать своего рода Store сайтовых движков, сервисов и плагинов, а также стилей и дизайн-тем.

Поддержка проекта

Как вы наверное уже заметили, проект пока что находится в стадии становления и ему крайне требуется ваша помощь. Помочь проекту может каждый, кому небезразличны принципы свободы распространения информации в современном мире. Ваши советы, отзывы и предложения по улучшению проекта уже являются ощутимой помощью.

Кроме того, если у вас в распоряжении имеются сервера, либо на ваших персональных машинах есть выделенный канал, вы можете предоставить небольшую часть своих машинных ресурсов для развития сети. С инструкцией по установке серверной ноды вы можете ознакомится выше или на github . Также будут крайне важны ваши отзывы о работе установленного серверного ПО.
Веб-разработчики, владеющие Node.js, могут предложить свои доработки и советы по оптимизации серверного ПО.

Веб-дизайнеры, HTML-верстальщики, программисты, имеющие опыт работы на JavaScript, могут принять участие в развитии сайтового движка и его отдельных сервисов. Приветствуется также и разработка собственного сайтового движка с нуля.

Спасибо за поддержку!

Заключение

И в заключение немного лирики. Цензура в современном мире - это большая глупость. Любые идеи, неважно технические или гуманитарные, развиваются одинаково  -  они растут одна из другой, бесконечной цепочкой. Идея имеет право быть высказанной и услышанной в её оригинальном виде, без искажений и цензуры. Однако в современных реалиях рукописи вполне неплохо горят и написанное пером нещадно вырубается топорами. И, как ни печально осознавать это, но задуманный как рупор свободы, Интернет в руках правительств стран и государств превратился в инструмент всеохватывающего контроля. Причем контроля настолько неприкрытого, что все чаще продвинутая часть общества задается вопросом: а есть ли свобода слова в интернете? Можем ли мы с его помощью открыто заявлять о чем-то действительно важном? Видим ли на его просторах всю палитру разнохарактерных независимых мнений? Добавить метки