Перейти к содержимому
Zer0Galaxy

OpenNet: Продолжение

Рекомендуемые сообщения

В Центре поиска внеземного разума (ЦПВР) начал работу роутер сети OpenNet. Зона уверенного покрытия охватывает банк, спаун и поселок Кузякино. Подключиться к роутеру можно при помощи беспроводной сетевой карты и библиотеки opennet.lua (см. под спойлером)

 

 

-- Библиотека OpenNet для WiFi-клиента
local component=require("component")
local event = require("event")

local opennet = {}
local ONcard
local LocalIP
local Router
local ONport=1
local ONlong=2
local maxPacketSize

function opennet.ver()
  return "3.1"
end

function opennet.getIP()
  if not component.isAvailable("modem") then
    ONcard=nil
    return nil, "Сетевая карта не обнаружена"
  end
  ONcard=component.modem
  ONcard.open(ONport)
  ONcard.open(ONlong)
  maxPacketSize=ONcard.maxPacketSize()-100
  local ok,err=ONcard.broadcast(ONport,"", "", "getip")
  if not ok then  return ok, err  end
  local Dist=math.huge
  LocalIP=nil
  Router=nil
  while true do
    local ev, addr, rout, _, dist, locip, _, mess = event.pull(1,"modem_message")
    if ev then
      if dist<Dist and addr == ONcard.address and mess == "setip" then
  	    LocalIP=locip Router=rout Dist=dist
	  end
	else
	  if LocalIP then return LocalIP, Dist
	  else  return nil, "Нет ответа от WiFi роутера" end
    end
  end
end

function opennet.send(recIP, ... )
  if not ONcard or not Router then
    return nil, "Сетевая карта не инициализирована"
  end
  return ONcard.send(Router, ONport, recIP, LocalIP, ...)
end

function opennet.receive(timeout)
  local ev
  repeat
    ev = {event.pull(timeout,"modem_message")}
    if not ev[1] then return nil end
  until ev[2] == ONcard.address
  return table.unpack(ev,7)
end

function opennet.sendrec(recIP, ... )
  local ok,err=opennet.send(recIP, ... )
  if ok then
    return opennet.receive(3)
  else
    return ok,err
  end
end

-----------------------------------------------------------------------
return opennet 

 

 

Описание функций библиотеки дано в начале темы. За тем исключением, что функция getIP возвращает, помимо IP, расстояние до роутера. Следите, что бы это расстояние не превышало 350.

Изменено пользователем Zer0Galaxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Центре поиска внеземного разума (ЦПВР) начал работу роутер сети OpenNet. Зона уверенного покрытия охватывает банк, спаун и поселок Кузякино. Подключиться к роутеру можно при помощи беспроводной сетевой карты и библиотеки opennet.lua ...

 

И в одночасье с этим в результате сильнейших магнитных солнечных бурь была полностью выведена из строя вся микроэлектроника Wi-Fi точек доступа и сетевые свитчи фирмы OpenComputers.

 

Отремонтировать их теоретически можно, но генераторы тактовой частоты и микроконтроллеры Atmel Wi-Fi SoC и МК SAM D21 на базе ARM Cortex-M0+ поставлялись нам из солнечной системы Ахерна́р — альфа Эридана, за 13 парсеков от нас. Скрафтить эти микроконтроллеры самим у нас нет никакой возможности.

 

Поэтому на ИТ Wi-Fi точки доступа и сетевые свитчи теперь пока бесполезны.

 

alexcc.Mods.bug:kill(switch_access_point_network)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И в одночасье с этим в результате сильнейших магнитных солнечных бурь была полностью выведена из строя вся микроэлектроника Wi-Fi точек доступа и сетевые свитчи фирмы OpenComputers.

С WiFi понятно, но как магнитные бури затронули проводные свитчи? Алекс, почини пожалуйста. У меня локальная сеть не работает, а без нее OpenNet.  :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пока решается вопрос с проводными свитчами, в ON-роутеры временно установлены беспроводные сетевые платы. В связи с этим изменились IP адреса всех абонентов Сети. В остальном Сеть работоспособна.

Теперь о хорошем.

Начал работу первый WEB-сервер под именем "info", дублирующий информацию с инфопанели, установленной на спауне. 

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

Помимо команды ping, сервер обрабатывает команды list и get.

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

get - принимает в качестве параметра имя файла и возвращает его содержимое.

Ниже приведены скрины с примерами работы функций list и get

post-7-0-56561000-1430296470_thumb.png

post-7-0-63250300-1430296476_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С WiFi понятно, но как магнитные бури затронули проводные свитчи? Алекс, почини пожалуйста. У меня локальная сеть не работает, а без нее OpenNet.  :(

 

Дима, а можно ли обойтись без свитчей вообще в ОNet?

 

Дело в том, что нет никакой разницы по сути между свитчами и точками. Это одно сплошное безумие. Механика работы там походу одинаковая. Нет большой разницы между локальной и воздушной сетью.

Ну и "прошивка" микроконтроллеров тоже одинаковая:

 

Это уже подправленная "прошивка".

 

 

 # Switch and access point network message forwarding logic related stuff.
  switch {

    # This is the size of the queue of a not upgraded switch. Increasing it
    # avoids packets being dropped when many messages are sent in a single
    # burst.
    defaultMaxQueueSize=20

    # The base number of packets that get relayed in one 'cycle'. The
    # cooldown between cycles is determined by the delay.
    defaultRelayAmount=0

    # The delay a switch has by default between relaying packets (in ticks).
    # WARNING: lowering this value will result in higher maximum CPU load,
    # and may in extreme cases cause server lag.
    defaultRelayDelay=5000000

    # This is the amount by which the queue size increases per tier of the
    # hard drive installed in the switch.
    queueSizeUpgrade=10

    # The number of additional packets that get relayed per cycle, based on
    # the tier of RAM installed in the switch. For built-in RAM this
    # increases by one per half-tier, for third-party ram this increases by
    # two per item tier.
    relayAmountUpgrade=0

    # The amount of ticks the delay is *reduced* by per tier of the CPU
    # inserted into a switch.
    relayDelayUpgrade=0
  }

  # The version of OC this config was generated by. This is used to allow the
  # mod to reset parts of the config when their meaning changed across
  # versions, so that the user does not have to delete it.
  version="1.5.8.17"

} 

 

 

 

Дело в том, что не все до конца понимают всю глубину трагедии и не ведают всех тех бед, когда пишут о каких-то фильтрах и ИРКах.

 

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

 

То есть, говоря простым языком, сообщение, которое отослал робот на выдавальщика товаров в Банке по закрытому каналу, перехватывается и дублируется, и выдавальщик без понятия, послал ли это робот опять команду выдать Васе кусочек коблы, или это безумная точка вай-фай какого-то Троянчика, который даже не ведал, что творил, когда ее скрафтил и присобачил к ПК, дюпнула сообщение.   При чем это идет все лавиной, в зависимости от количества точек. И нет никакого способа это остановить или понять, где что!!!!

 

Троянчик по сути, завалил весь ИТ и всю титаническую работу, проведенную для реализации банка и прочее. По сути, угробил всю сеть на ИТ. Мало того, этот баг в моде еще и апгрейтится на количество и скорость ретрансляции сообщений)))))  Чтобы лавина еще больше была! Рай для грифера.

 

Семоро же показывал, как можно завалить сервер 6-ю точками. И не просто зафлудить эфир, а именно завалить сервак!!!!   Про какие фильтры может идти речь??? :facepalm:   Пока на уровне мода не будет блокировки эха, точки и свитчи  - зло во плоти. Зря я поверил на слово Фингеру и Нетису, что там уже все пофиксили это и не заблочил вай-фай точки доступа сразу на ИТ.

 

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

 

Представьте себе картину, когда у вас в транслокаторе или квантовом мосте АЕ системы летают алмазы в сундук или дробилку, какой-то Троянчик в 400-ах блоков от вас крафтит усилитель квантового моста (а может и не один), и по серверу начинает в геометрической прогрессии дюпатся эти алмазы и летать разрастающейся кучей огромным роем по всему серверу по всем инвентарям, своим и чужим, бесконечно повторяясь вновь и вновь, пока не заполнят весь буфер усилителя!   Что вы на это скажете. Разве так должно быть? Это же бред сивой кобылы, так ведь?

 

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

 

Сейчас генератор тактовой частоты в точках просто не работает: http://puu.sh/htZC1/8e627c8ca9.png   Это вынужденная мера, не я так хочу.

 

Где-то в одиночке поиграть с точками можно. Настроить буфер на 1 сообщение, задержку отправки, тайминги. Тогда, да, может и удастся избежать эха. На сервере - это зло во плоти!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Относительно беспроводных точек доступа согласен на 100%. Это зло которое надо искоренять. А вот проводной коммутатор вещь весьма полезная. Мало того, что без него проблематично связать два компьютера в сеть так, что бы они не путали мониторы. У меня еще каким то образом перестала работать локалка, которая коммутатор вообще не использовала. Другими словами, внесенная коррекция как то отразилась на работе обычных сетевых карт. Можно ли точку доступа вообще исключить из крафта, а коммутатор оставить как был?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Дилемма, однако. (думаю)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не думаю, что точек доступа очень много. Рано или поздно они себя проявят, как проявила точка Троянчика. Можно сделать пеленг, в конце концов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Минимум, что нужно сделать, это уничтожить все точки в радиусе 500 блоков от спавна, что как минимум обеспечит работу админ-схем, банков и прочего. Безотлагательно ввести проверку-фильтр меседжа по дальности на всяк пожарный (админ-дальность, первое сообщение привязки и дальнейшая ее проверка, как эталонной, так как в банке ни "гивальщик", ни терминал никуда не катаются, а робот сендит инструкции со своей стандартной точки только), в том же банке. Запретить крафт и установку вай-фай точек. Почистить мир от них по максимуму.  Тогда можно закупать микроконтроллеры в дружественной нам солнечной системе Ахерна́р.

 

Но опять же. Это нас не спасет от того, что где-то возможно останется такая бомба и будет грузить сервак, хоть и не будет мешать работе сети в админ-зоне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Берусь изготовить пеленгатор точек доступа.

Отлично! А я пока заблочу их крафт и плейсинг. Да и вообще сделаю "удалятор" из инвентаря локиблокером.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пеленгатор готов. Можешь временно разрешить точки чтоб обкатать его?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тоже все заблочил. Но если есть работающие точки, они пока будут влиять на банк, и банк будет лавинообразно продавать предметы, циклить покупку.

 

То есть перед "ремонтом" точек нужно пока выключить весь банк с супервайзера, убедится в том, что нет работающих, или ждущих точек методом утомительного реплейсинга топориком терры с ID=531  на ID=0 

 

П.С. Дима!  Что даст нам пеленгатор? Дальность до репитера приватного сообщения, или его коры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если скажете мне ее ID (точки доступа)  - я попробую посмотреть, кто ставил точки за последние 10 дней (логи корпротекта чистятся каждые 10 дней)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

П.С. Дима!  Что даст нам пеленгатор? Дальность до репитера приватного сообщения, или его коры?

Только дальность. Но его можно запустить на планшете и за небольшое время обнаружить точку. Радиус обнаружения - 400 блоков. Пеленгатор снабжен звуковой сигнализацией, что позволяет двигаться не глядя на экран планшета.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только дальность. Но его можно запустить на планшете и за небольшое время обнаружить точку. Радиус обнаружения - 400 блоков. Пеленгатор снабжен звуковой сигнализацией, что позволяет двигаться не глядя на экран планшета.

Ага, отлично. То есть мы шлем в цикле чуть не самому себе приватное смс, и видим дубляж, понимаем, что продублировать его никто не может, кроме "точки", и видим дальность до подозреваемой вай-фай точки. И если бежим куда-то с планшетом, то дальность меняется и пикает ПК? Так?

 

Заблочил банк пока. Дима, там у меня в берлоге под первой кабинкой стоит ПК - супервайзер. Он по вай-файке управляет всем банком, ребутит, блочит, апдейтит и прочее. Чтобы ты знал, на всяк пожарный.

 

http://puu.sh/hv6Cf/e66479c819.png

http://puu.sh/hv6Ff/907339ad03.png

 

Сейчас "отремонтирую" вай-фай точки и можно начинать "охоту на лис".   Плановый рестарт серва  через 33 минуты, в 18-00 по Киеву. После этого точки начнут работать.

А если скажете мне ее ID (точки доступа)  - я попробую посмотреть, кто ставил точки за последние 10 дней (логи корпротекта чистятся каждые 10 дней)

ид точки = 531

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, Дмитрий, за "Пеленгатор"! 

Теперь вай-фай бомберам-гриферам остается только прятаться под бедрок на -400 глубину  :D

 

https://www.youtube.com/watch?v=qXK8zfnUbic

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не, Алекс, что то ты в настройках ОС затронул. Раньше сервера, которые в серверную стойку вставляются общались друг с другом посредством проводных плат. Теперь отказываются. Пришлось заменить проводные платы беспроводными.

 

Вопрос решен. Нужно было снять и снова поставить серверные стойки

Изменено пользователем Zer0Galaxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А OpenNet между тем медленно но уверенно развивается.

Начал свою работу чат-сервер "chatroom". Для подключения к серверу Вам понадобится компьютер или планшет, подключенный к ON, библиотечка thread и конечно же программа чат-клиент.

 

 

------------------------------------------------------------
-- Чат-клиент для работы по сети OpenNet
-- by Zer0Galaxy
------------------------------------------------------------
gpu  = require("component").gpu
text = require("text")
wlen = require("unicode").wlen
beep = require("computer").beep
thread=require("thread")
on   = require("opennet")
term = require("term")
event= require("event")

server=({...})[1]
if not server then
  print("Формат вызова:")
  print("chat <IP или dns-имя сервера>")
  return
end
ev, _, _, _, Name=event.pull(1,"key_up")
if not ev then
  term.write("Нажмите любую клавишу")
  ev, _, _, _, Name=event.pull("key_up")
end

------ Переменные и функции для работы с окном вывода ------
local cursorX, cursorY = 1, 1
local WinW, WinH = gpu.getResolution()
WinH=WinH-2
local Left,Top = 1, 1

function winwrite(value)
  value = text.detab(tostring(value))
  if wlen(value) == 0 then
    return
  end
  do
    local noBell = value:gsub("\a", "")
    if #noBell ~= #value then
      value = noBell
      beep()
    end
  end
  local line, nl
  repeat
    line, value, nl = text.wrap(value, WinW - (cursorX - 1), WinW)
    gpu.set(cursorX+Left-1, cursorY+Top-1, line)
    cursorX = cursorX + wlen(line)
    if nl or (cursorX > WinW) then
      cursorX = 1
      cursorY = cursorY + 1
    end
    if cursorY > WinH then
      gpu.copy(Left, Top+1, WinW, WinH-1, 0, -1)
      gpu.fill(Left, WinH+Top-1, WinW, 1, " ")
      cursorY = WinH
    end
  until not value
end

function winclear()
  gpu.fill(Left, Top, WinW, WinH, " ")
  cursorX, cursorY = 1, 1
  gpu.set(Left, Top+WinH, string.rep("═",WinW-25).."Введите 'quit' для выхода")
end
------------------------------------------------------------

ok,err=on.getIP()
if not ok then
  print(err)
  return
end

function getmess()
  while true do
    local ip,sender,mess=on.receive()
	if ip==server then
	  gpu.setForeground(0xFFFF00)
	  winwrite(sender)
	  if mess then winwrite(": ") else mess="" end
	  gpu.setForeground(0xFFFFFF)
	  winwrite(mess)
	  winwrite("\n")
	end
  end
end

thread.init()
thread.create(getmess)

local History={}

winclear()
on.send(server,"login",Name)
while true do
  term.setCursor(Left, Top+WinH+1)
  term.clearLine()
  mess=term.read(History,false)
  mess=mess:gsub("\n", "")
  if mess=="quit" then break end
  if mess~=History[#History] then History[#History+1]=mess end
  on.send(server,"write",mess)
end
on.send(server,"logout")
os.sleep(1)
thread.killAll() 

 

 

В качестве параметра клиенту нужно указать ip или dns-имя чат-сервера

Пример запуска клиента:

chat chatroom

А вот результат работы:

post-7-0-27940600-1430399150_thumb.png

Изменено пользователем Zer0Galaxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я тоже хочу с вами, но не могу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...