Zer0Galaxy
-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Сообщения, опубликованные пользователем 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
А вот результат работы:
-
3
-
-
Не, Алекс, что то ты в настройках ОС затронул. Раньше сервера, которые в серверную стойку вставляются общались друг с другом посредством проводных плат. Теперь отказываются. Пришлось заменить проводные платы беспроводными.
Вопрос решен. Нужно было снять и снова поставить серверные стойки
-
На Луа можешь? А то я компилятор cpp уже сто лет как удалил
-
П.С. Дима! Что даст нам пеленгатор? Дальность до репитера приватного сообщения, или его коры?
Только дальность. Но его можно запустить на планшете и за небольшое время обнаружить точку. Радиус обнаружения - 400 блоков. Пеленгатор снабжен звуковой сигнализацией, что позволяет двигаться не глядя на экран планшета.
-
1
-
-
Пеленгатор готов. Можешь временно разрешить точки чтоб обкатать его?
-
Берусь изготовить пеленгатор точек доступа.
-
1
-
-
Не думаю, что точек доступа очень много. Рано или поздно они себя проявят, как проявила точка Троянчика. Можно сделать пеленг, в конце концов.
-
Относительно беспроводных точек доступа согласен на 100%. Это зло которое надо искоренять. А вот проводной коммутатор вещь весьма полезная. Мало того, что без него проблематично связать два компьютера в сеть так, что бы они не путали мониторы. У меня еще каким то образом перестала работать локалка, которая коммутатор вообще не использовала. Другими словами, внесенная коррекция как то отразилась на работе обычных сетевых карт. Можно ли точку доступа вообще исключить из крафта, а коммутатор оставить как был?
-
Пока решается вопрос с проводными свитчами, в ON-роутеры временно установлены беспроводные сетевые платы. В связи с этим изменились IP адреса всех абонентов Сети. В остальном Сеть работоспособна.
Теперь о хорошем.
Начал работу первый WEB-сервер под именем "info", дублирующий информацию с инфопанели, установленной на спауне.
В отсутствии браузера сервер представляет собой чисто научный интерес, но желающие уже могут с ним поэкспериментировать.
Помимо команды ping, сервер обрабатывает команды list и get.
list - возвращает сериализованную таблицу файлов, доступных для считывания.
get - принимает в качестве параметра имя файла и возвращает его содержимое.
Ниже приведены скрины с примерами работы функций list и get
-
5
-
-
И в одночасье с этим в результате сильнейших магнитных солнечных бурь была полностью выведена из строя вся микроэлектроника Wi-Fi точек доступа и сетевые свитчи фирмы OpenComputers.
С WiFi понятно, но как магнитные бури затронули проводные свитчи? Алекс, почини пожалуйста. У меня локальная сеть не работает, а без нее 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.
-
1
-
-
В общем, никакого дюпа и диверсии. Просто у Троянчика стоит точка доступа, а она, как оказалось, ретранслирует все беспроводные пакеты. Если рядом поставить еще одну, они начинают бесконечно перекидывать пакеты друг другу.
-
сервер непонятно почему повторяет сообщения аж четыре раза,Дело в том, что у Троянчика в привате стоял вайфай с таким же id как и у твоего роутера. Он и дублировал пакеты.
Как такое получилось, не знаю, но без дюпа здесь не обошлось.
-
Конечно! Такие моменты даже не спрашивай. Есть бункер под спавном (лючок "Не влезай, убьет") Спавн охвачен ЧР на 9x9 вроде. А лучше в банке давай его влепим. Там куча подсобных помещений на первом этаже, в моей берлоге можно под первой кабинкой. Поставь там себе /sethome router да и все.
Банк тоже охвачен ЧР.
Не позволяет в админпривате ставить. Даже с /ic

-
Меня в первую очередь интересует наличие чанклоадера. В админприватах будем ставить креативные компы, в частных - обычные.
-
Алекс, можно ли в районе спауна установить WiFi роутер?
Есть ли там работающий чанклоадер?
А где есть?
-
Наверное, на Луа, но сперва нужно написать что нибудь вроде:
function split(text, sep) sep = sep or "\n" local lines = {} local pos = 1 while true do local b,e = text:find(sep, pos) if not b then table.insert(lines, text:sub(pos)) break end table.insert(lines, text:sub(pos, b-1)) pos = e + 1 end return lines end-
1
-
-
split("a,b,c", ",") --> {"a", "b", "c"}Это на каком языке?
-
1
-
-
Нео, не будь жертвой предвзятости. И IP и MAC это всего лишь набор байт, только один почему то выражают десятичными числами, а другой шестнадцатеричными. Суть их от этого не меняется, хоть римскими записывай.
Или ты думаешь, что перебирать можно только цифры, а буквы никак? Или ты думаешь, что кому-то кроме тебя придет в голову умножать и делить IP-адреса? Или я должен менять структуру адреса, что бы облегчить тебе задачу пингования всех компьютеров Сети? Максимум, что я могу для тебя сделать, это добавить в роутер функцию, по которой он будет возвращать адреса всех связанных с ним компьютеров. Имея эту функцию и немного мозгов можно с легкостью вычислить структуру всей Сети.
А теперь о хорошем. Запущен в опытную эксплуатацию первый WiFi-роутер. Координаты его пока не разглашаю, хотя кое для кого это уже не секрет. Готов помочь любому желающему в установке и настройке подобных роутеров.
-
3
-
-
Обоснуй зачем и я сделаю из цифр
-
Кто mac-адреса называет ip?
Это именно IP. MAC гораздо длиннее
-
К сожалению, Нео нам не помогает. Так бы мы за день всё закончили. Может он пушкой займется?
-
Сейчас это первоочередная задача. Крутой сделал доступ из OpenNet в Internet, но прикол в том, что связанная плата в крафте дороже чем интернет-плата. Нужно упрощать доступ к ON, а это можно сделать только через WiFi или проводные роутеры
-
Хочу рассказать об изменениях, произошедших в развитии OpenNet.
Во-первых создан и функционирует DNS-сервер.
Во-вторых реализована служба, позволяющая пользователям OpenNet получать доступ к сети Интернет.
Чуть ниже по порядку.
Что такое DNS-сервер и зачем он нужен?
Предположим, два пользователя Сети, Петя и Вася, обмениваются ON-сообщениями. Как это выглядело до сих пор: Петя, чтобы послать сообщение Васе, должен знать его IP. Именно на этот IP и отправляется сообщение. Вот так это можно представить графически
Сообщение проходит через ряд роутеров, которые и определяют путь прохождения. Как видим, в самом сообщении присутствуют IP-адреса получателя и отправителя.
Но, запомнить Васин IP в виде набора букв и цифр довольно сложно. Да и что делать если Вася сменил IP и не успел предупредить Петю? На помощь приходит DNS-сервер. Он позволяет зарегистрировать в сети уникальное имя и связать его с определенным IP. Начинается всё с регистрации имени
Как видно из рисунка, для регистрации DNS-имени, Вася посылает на сервер определенную посылку, в которой указывает желаемое имя, связанный с ним IP и пароль, который потребуется в случае необходимости внесения изменений. На рисунке я изобразил, что клиентский компьютер направляет сообщение прямо в DNS-сервер. Это конечно не так. Сообщение пройдет как минимум через роутер ef4. Мне просто не хотелось затемнять рисунок.
После регистрации имени, Петя может отправлять сообщение не на "ef4.d69", а на зарегистрированное имя "Vasya". Вот так это будет выглядеть:
Роутер 7e3, получив сообщение для получателя "Vasya", запрашивает IP у DNS-сервера и заменяет адрес получателя на этот IP. Но это не всё. Какое то время роутер продолжает помнить этот IP и последующие сообщения для получателя "Vasya" будет отправлять без обращения к DNS-серверу. Время это составляет ~25 минут.
-
4
-

OpenNet: Продолжение
в Сетевые технологии
Опубликовано:
С введением системы WiFi роутеров, для подключения к ON связанная плата не нужна. Достаточно иметь беспроводную плату и находится в зоне покрытия WiFi роутера. Но роутер на сегодняшний день только один. Если Вы живете вдали от спауна, то скорее всего подключиться не сможете. В этом случае можете попросить меня установить роутер, а можете организовать свой собственный роутер и стать провайдером. Для этого понадобится связанная плата, которую можно получить у меня.