? Редактирование: Post:21.body Сохранить Удалить Закрыть
Инициализация...

Самое новое

СледитьСлежу
+ Создать новую тему
FAQ | En-Zer0Talk | Блоги о разработке: gomzik'a / kostaNew
Загрузка...

Title

Body
^1 ^2 added ━ автор user_name
More topics

Main ZeroNet news How did you find ZeroNet?

Follow in NewsfeedFollowing

RFC: переработка плагина AnnounceShare

@gitcenter:

@caryoscelus:

Я смотрел код AnnounceShare и возникли следующие соображения:

  1. Плагин позволяет шарить только списки трекеров zero://. Следует разрешить обмен не только трекерами zero://, но любыми поддерживаемыми. (Потом напилим плагин, который заполняет список исправными bittorrent трекерами из сторонних источников.)

  2. Следует развернуть взаимодействие AnnounceShare и Bootstrapper в обратном направлении.

    • Сейчас: "AnnounceShare проверяет, запущен ли Bootstrapper, и если да, добавляет текущие IP-адреса в список трекеров."
    • Нужно: "Bootstrapper определяет, на каких адресах работает, и передаёт их в AnnounceShare."
    • (После этого станет намного проще переделать Bootstrapper для работы на адресах .onion, в том числе и на неизменных между перезагрузками.)
  3. Вести учёт количества трекеров не суммарно, а отдельно для каждого протокола: bit torrent udp, bit torrent http(s), zero.

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

Цель топика: Выслушать конструктивные замечания и предложения.

В частности, беспокоят вопросы организационного плана:

  1. Имеет смысл делать под py2 или py3?
  2. Переработать плагин целиком и делать PR на всё сразу, или PR-ить в апстрим мелкими кусочками?
^5 ^6 geekless отправил on Jul 02, 2019
Please sign innew comment
Войти как...
Отправить
You are running out of your allowed space, please contact the site's admin at unknown to raise your limit.
user_nameadded ^1 ^2
Ответить
Body
fanton Jul 10, 2019 ^1 ^2
Ответить

gitcentermobile: "Держу в курсе": я все же начал разработку своей реализации на JavaScript, с нуля. Пока доволен, может получиться лучше оригинальной.

Было бы круто еще уметь заводить ZN через i2p )

anothernekoon Jul 09, 2019 ^1 ^2
Ответить

if0: Будет прикольно, когда одна часть пользователей форума, не будет видеть сообщения и топики другой части пользователей одного форума.

Только новые и только временно.

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

Даже на разных планетах данные рано или поздно переедут.

geeklesson Jul 07, 2019 ^1 ^2
Ответить

if0: Будет прикольно, когда одна часть пользователей форума, не будет видеть сообщения и топики другой части пользователей одного форума.

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

if0on Jul 07, 2019 ^1 ^2
Ответить

anotherneko: Но с другой стороны для zn сильная связность и не нужна особо.

Будет прикольно, когда одна часть пользователей форума, не будет видеть сообщения и топики другой части пользователей одного форума.

anothernekoon Jul 06, 2019 ^1 ^2
Ответить

geekless: Фактически он предложил сеть разбить на два слабосвязанных сегмента,

Но с другой стороны для zn сильная связность и не нужна особо.

Для узлов на слабом канале можно рассмотреть вариант делегирования запросов к узлам (сидящим на жирном канале), объявившим себя DHT-агрегаторами или шлюзами.

Что-то вроде аналога --routing=dhtclient у ipfs?

geekless: IPFS вообще жрёт ресурсы как не в себя, но я не разбирался, с чем это связано.

Отключение dht как раз и снижает потребление ресурсов радикально.

gitcentermobileon Jul 06, 2019 ^1 ^2
Ответить

geekless: Экстремально. Посмотрим, что получится. У меня вопрос - как там с настоящей многопоточностью, в серверном js?

Есть. Нужно думать, но вполне можно добавить.

Свои плагины под nofishевскую версию ты забросишь?

Ну так они уже доделаны, в принципе. Разве что хотфиксы писать, но я пока не решил, заброшу это или нет.

geeklesson Jul 06, 2019 ^1 ^2
Ответить

gitcentermobile: [...]

Экстремально. Посмотрим, что получится. У меня вопрос - как там с настоящей многопоточностью, в серверном js?

Свои плагины под nofishевскую версию ты забросишь?

gitcentermobileon Jul 06, 2019 ^1 ^2
Ответить

geekless: Кто-то уже пытался: https://github.com/ZeroNetJS

Да, пытался. Но у меня появились свои идеи на счёт архитектуры, чтобы можно было сделать лучше, чем в оригинале. Плюс хочется все побольше автоматизировать (в плане разработки). Поэтому свое.

geeklesson Jul 06, 2019 ^1 ^2
Ответить

gitcentermobile: "Держу в курсе": я все же начал разработку своей реализации на JavaScript, с нуля. Пока доволен, может получиться лучше оригинальной.

Кто-то уже пытался: https://github.com/ZeroNetJS

gitcentermobileon Jul 06, 2019 ^2 ^3
Ответить

"Держу в курсе": я все же начал разработку своей реализации на JavaScript, с нуля. Пока доволен, может получиться лучше оригинальной.

geeklesson Jul 06, 2019 ^1 ^2
Ответить

anotherneko: У того же ipfs dht трафик составляет порядка мегабита в обе стороны

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

geeklesson Jul 06, 2019 ^1 ^2
Ответить

anotherneko: Но ведь DHT действительно весьма жирный по трафику. У того же ipfs dht трафик составляет порядка мегабита в обе стороны, 24/7 и пользователи с ограничением по трафику могут не оценить лишние 20Гб в сутки.

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

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

pizdahdon Jul 06, 2019 ^1 ^2
Ответить

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

anothernekoon Jul 06, 2019 ^1 ^2
Ответить

geekless: Протокол требует "слишком много" пропускной способности сети.

Но ведь DHT действительно весьма жирный по трафику. У того же ipfs dht трафик составляет порядка мегабита в обе стороны, 24/7 и пользователи с ограничением по трафику могут не оценить лишние 20Гб в сутки.

geeklesson Jul 05, 2019 ^1 ^2
Ответить

(link)

I think DHT would be an improvement in some situations, so it would be a great addition, but I'm not sure if we should enable it by default. Depends on the resource usage or as a fallback if low amount of trackers are available.

По-моему, это клиника.

caryosceluson Jul 05, 2019 ^2 ^3
Ответить

geekless: Краткий результат моего с ним общения: "Обмена списками торрент-трекеров нет и не будет. Потому что я так сказал."
Пофиг, что зеро-трекеров работает 10 штук на весь интернет, а публичных торрент-трекеров только в одном частном списке на гитхабе больше 60 штук.
Я хотел сесть за проектирование плагина для DHT, который будет использовать существующую инфраструктуру всех DHT-пиров торрента для своего блага (и прозрачно переходить на собственный протокол при работе через тор), но теперь всерьёз подозреваю, что PR завернут с теми же возражениями "потому что гладиолоус":

Торренты не поддерживают адреса onion.
Протокол требует "слишком много" пропускной способности сети.
Зеро-трекера и PEX достаточно для всех.

На вопрос, будет ли он принимать PR с DHT, он не ответил.
Какая-либо логика в этих возражениях отсутствует, если подходить с инженерной точки зрения, но присутствует, если предположить, что весь смысл в том, что пользователи ZeroNet сидели в своей песочнице, подконтрольной разработчику ядра, и носа в большой мир не выказывали.
Обмен осуществляется только списками трекеров, поднятых средствами самой ZeroNet, и только теми, что осмелились работать на публичных IP. Чтобы было, куда ОМОНом вламываться? Какое совпадение!
Извините за паранойю, но другого объяснения у меня нет. Абсолютная глупость или диверсия. Nofish на глупого не похож. Как-то так.

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

Раз пошла движуха на тему форков / альтернативных имплементаций, я тоже свои мысли потом напишу (не по сетевой части, я тут почти полный ноль, а вот по поводу api/движков/js)

geeklesson Jul 05, 2019 ^1 ^2
Ответить

@gitcenter:

Я сделал организацию на гитхабе и послал тебе инвайт.

Завёл бранч plugins, специально под плагины и под прочее, что будет мерджиться с кодом nofish-а без конфликтов: https://github.com/zeronet-enhanced/ZeroNet/commits/plugins

Заливай туда свои плагины, если хочешь. Будем доделывать всё то, до чего Царь не опускается.

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

Если будут расхождения по коду ядра, придётся еще и сложными мерджами с конфликтами заниматься, но пока так живём.

fanton Jul 05, 2019 ^1 ^2
Ответить

[if0] Только за пределами ZN

Разумеется.

if0on Jul 05, 2019 ^1 ^2
Ответить

fant: Пилите свое.Пилите. Свое.Время все расставит по местам. Я гарантирую это )

Верно. Только за пределами ZN, что бы не потратить зря свои силы, которые можно использовать куда более рациональным спсособом. Уже второй человек, принимающий участие в его развити, имеет сомнения по поводу действий (в частности, не полной их адекватности) его создателя, который проявляет однозначное желание самолично "рулить всем".

if0on Jul 05, 2019 ^1 ^2
Ответить

geekless:
Обмен осуществляется только списками трекеров, поднятых средствами самой ZeroNet, и только теми, что осмелились работать на публичных IP. Чтобы было, куда ОМОНом вламываться? Какое совпадение!
Извините за паранойю, но другого объяснения у меня нет. Абсолютная глупость или диверсия. Nofish на глупого не похож. Как-то так.

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

fanton Jul 05, 2019 ^1 ^2
Ответить

Пилите свое.
Пилите. Свое.
Время все расставит по местам. Я гарантирую это )

geeklesson Jul 05, 2019 ^3 ^4
Ответить

caryoscelus: Мне казалось какой-то обмен был, но может что-то и путаю

Краткий результат моего с ним общения: "Обмена списками торрент-трекеров нет и не будет. Потому что я так сказал."

Пофиг, что зеро-трекеров работает 10 штук на весь интернет, а публичных торрент-трекеров только в одном частном списке на гитхабе больше 60 штук.

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

  1. Торренты не поддерживают адреса onion.
  2. Протокол требует "слишком много" пропускной способности сети.
  3. Зеро-трекера и PEX достаточно для всех.

На вопрос, будет ли он принимать PR с DHT, он не ответил.

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

Обмен осуществляется только списками трекеров, поднятых средствами самой ZeroNet, и только теми, что осмелились работать на публичных IP. Чтобы было, куда ОМОНом вламываться? Какое совпадение!

Извините за паранойю, но другого объяснения у меня нет. Абсолютная глупость или диверсия. Nofish на глупого не похож. Как-то так.

caryosceluson Jul 04, 2019 ^1 ^2
Ответить

geekless: Нет смысла добавлять трекер себе в конфиг, будешь как дурак один сидеть на этом трекере. Без автоматического обмена это не имеет никакого смысла.

А, ну в этом смысле м.б. Мне казалось какой-то обмен был, но может что-то и путаю

geeklesson Jul 04, 2019 ^1 ^2
Ответить

caryoscelus: Разве?

Нет смысла добавлять трекер себе в конфиг, будешь как дурак один сидеть на этом трекере. Без автоматического обмена это не имеет никакого смысла.

caryosceluson Jul 04, 2019 ^1 ^2
Ответить

против того, чтобы пользователи сами добавляли трекеры

Разве?

geeklesson Jul 04, 2019 ^1 ^2
Ответить

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

У кого были конспиративные теории, пора доставать их.

geeklesson Jul 03, 2019 ^2 ^3
Ответить

Залил бранчи:

TrackerList - плагин, подтягивающий трекеры из списка по указанному URL или файловому пути. По умолчанию - с https://github.com/ngosang/trackerslist.

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

Тестируйте.

Если всё работает нормально:

  • Узел, на котором запущен TrackerList вместе с переделанным AnnounceShare, должен содержать целую кучу трекеров в списке.
  • Узел, на котором работает только переделанный AnnounceShare, должен (в конечном итоге) через обмен трекерами найти все виды поддерживаемых трекеров: zero, http(s), udp (если есть открытый порт).

Второе условие довольно сложно проверить in the wild, потому что нужно чтобы среди всех тысяч узлов, тестируемый узел приконнектился именно к моему (или к вашему, где вы запустили TrackerList).

caryosceluson Jul 03, 2019 ^1 ^2
Ответить

geekless: Покритиковать - это дело. Я в питоне не разбираюсь. xD

Тут скорее дело не в питоне, а в императивном vs функциональном подходах. Я так-то тоже всех деталей не помню / не знаю, но к счастью map и filter названия почти универсальные, а дальше help(map) подсказывает порядок аргументов

geeklesson Jul 03, 2019 ^1 ^2
Ответить

caryoscelus: Да собственно я во внутренностях 0нет и не разбираюсь. Разве что покритиковать императивный код?..

Покритиковать - это дело. Я в питоне не разбираюсь. xD

caryosceluson Jul 03, 2019 ^2 ^3
Ответить

Что-то уведомление мне не пришло, теперь уже и не знаю, что могу добавить. Да собственно я во внутренностях 0нет и не разбираюсь. Разве что покритиковать императивный код?..

filter(None, map(self.getNormalizedTrackerProtocol, supported_trackers))
gitcenteron Jul 03, 2019 ^2 ^3
Ответить

geekless: Придумал, как объехать проблему. :D
def getSupportedProtocols(self):
if not self.site_announcer:
return None

    supported_trackers = self.site_announcer.getSupportedTrackers()

    protocols = {}
    for tracker_address in supported_trackers:
        protocol = self.getNormalizedTrackerProtocol(tracker_address)
        if not protocol:
            continue
        protocols[protocol] = True

    protocols = list(protocols.keys())

    self.log.debug("Supported tracker protocols: %s" % protocols)

    return protocols

В Python вроде есть set, должно покрасивее получиться

def getSupportedProtocols(self):
    if not self.site_announcer:
        return None

    supported_trackers = self.site_announcer.getSupportedTrackers()

    protocols = set()
    for tracker_address in supported_trackers:
        protocol = self.getNormalizedTrackerProtocol(tracker_address)
        if not protocol:
            continue
        protocols.add(protocol)

    self.log.debug("Supported tracker protocols: %s" % protocols)

    return list(protocols)
geeklesson Jul 03, 2019 ^1 ^2
Ответить

geekless: А вот список поддерживаемых протоколов не вижу, как получить. Придется хардкодить.

Придумал, как объехать проблему. :D

    def getSupportedProtocols(self):
        if not self.site_announcer:
            return None

        supported_trackers = self.site_announcer.getSupportedTrackers()

        protocols = {}
        for tracker_address in supported_trackers:
            protocol = self.getNormalizedTrackerProtocol(tracker_address)
            if not protocol:
                continue
            protocols[protocol] = True

        protocols = list(protocols.keys())

        self.log.debug("Supported tracker protocols: %s" % protocols)

        return protocols
geeklesson Jul 02, 2019 ^1 ^2
Ответить

Распарсить адрес трекера я могу при помощи site_announcer.getAddressParts(), проверить поддержку протокола -- при помощи site_announcer.getTrackerHandler(). А вот список поддерживаемых протоколов не вижу, как получить. Придется хардкодить.

geeklesson Jul 02, 2019 ^1 ^2
Ответить

Для начала пришлось пропатчить сборку образа. А то оно норовило пересобирать образ полностью с нуля каждый раз:

diff --git a/Dockerfile b/Dockerfile
index 75d18a37..b85d44f1 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,8 +3,7 @@ FROM alpine:3.8
 #Base settings
 ENV HOME /root

-#Add Zeronet source
-COPY . /root
+COPY requirements.txt /root/requirements.txt

 #Install ZeroNet
 RUN apk --no-cache --no-progress add python3 python3-dev gcc libffi-dev musl-dev make tor openssl \
@@ -13,6 +12,8 @@ RUN apk --no-cache --no-progress add python3 python3-dev gcc libffi-dev musl-dev
  && echo "ControlPort 9051" >> /etc/tor/torrc \

  && echo "CookieAuthentication 1" >> /etc/tor/torrc


+#Add Zeronet source
+COPY . /root
 VOLUME /root/data

 #Control if Tor proxy is started
geeklesson Jul 02, 2019 ^1 ^2
Ответить

gitcenter: py3 однозначно, nofish сказал, что на py2 будут только хотфиксы.

Ок.

gitcenteron Jul 02, 2019 ^4 ^5
Ответить

Имеет смысл делать под py2 или py3?

py3 однозначно, nofish сказал, что на py2 будут только хотфиксы.

Переработать плагин целиком и делать PR на всё сразу, или PR-ить в апстрим мелкими кусочками?

Если делать по кусочкам, больше вероятность того, что смерджат.

This page is a snapshot of ZeroNet. Start your own ZeroNet for complete experience. Learn More