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

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

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

Тем временем, мной проведена работа по организиции обновления моих серверов (интернет-сервер, и сервер обновлений).

 

[ok=Добавленно автообновление программ из пакета opennet][/ok]

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

Изменена строка установки, теперь она выглядит так:

on=component.modem;e=event;on.open(1)on.broadcast(1,"","","getip")function m()r={e.pull(10,"modem_message")}end;m()ud="update"ip=r[6]function sv()on.send(r[3],1,ud,ip,ud,"getFile","client/"..p)m()filesystem.makeDirectory(filesystem.path(p))f=io.open(p,"w")f:write(r[8])f:close()end p="lib/opennet.lua"sv()p="on/update.lua"sv()loadfile(p)("install")

Напомню, гайд по установке в этом посте.

Еще, по просьбе Алекса, папка /on добавленна в системные пути, и ее не нужно прописывать.

 

 

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

 

Z1QtKpq.png

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


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

Изменена строка установки, теперь она выглядит так:

on=component.modem;e=event;on.open(1)on.broadcast(1,"","","getip")function m()r={e.pull(10,"modem_message")}end;m()ud="update"ip=r[6]function sv()on.send(r[3],1,ud,ip,ud,"getFile","client/"..p)m()filesystem.makeDirectory(filesystem.path(p))f=io.open(p,"w")f:write(r[8])f:close()end p="lib/opennet.lua"sv()p="on/update.lua"sv()loadfile(p)("install")

Не зная логики сервера полагаю, что можно сделать как-то так:

M=component.modem;M.open(1)M.broadcast(1,"","","getip")E=load('R={event.pull(10,"modem_message")}')U="update"E()M.send(R[3],1,U,R[6],U,"getFile","client/boot")E()load(R[8])()

--и развернуто
M=component.modem;
M.open(1)
M.broadcast(1,"","","getip")
E=load('R={event.pull(10,"modem_message")}')
U="update"
E()
M.send(R[3],1,U,R[6],U,"getFile","client/boot")
E()
load(R[8])()

В смысле грузить код из "boot" а в нем уже творить все остальное.

 

ЗЫ

Интерфейс консоли сервера зачотный

    _/_/_/_/  _/_/_/_/  _/_/_/_/  _/_/_/        _/_/       _/_/
   _/    _/  _/        _/        _/    _/    _/    _/   _/    _/
  _/    _/  _/        _/_/_/    _/_/_/      _/    _/   _/    _/
 _/    _/  _/        _/        _/    _/    _/    _/   _/    _/
_/    _/  _/_/_/_/  _/_/_/_/  _/_/_/_/  _/_/_/_/_/_/   _/_/
                                       _/        _/

     _/_/_/_/  _/_/_/      _/_/_/      _/      _/    _/  _/    _/    _/_/_/
    _/        _/    _/  _/    _/  _/_/_/_/_/  _/    _/  _/    _/  _/    _/
   _/        _/_/_/    _/_/_/_/  _/  _/  _/  _/  _/_/  _/_/_/    _/_/_/_/
  _/        _/        _/    _/  _/_/_/_/_/  _/_/  _/  _/    _/  _/    _/
 _/        _/        _/    _/      _/      _/    _/  _/    _/  _/    _/

рулит

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

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


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

Роутер подняли, поднимите и интернет сервер. Установить пока может только файликом.

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


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

Роутер подняли, поднимите и интернет сервер. Установить пока может только файликом.

Хорошо, завтра поставлю. Но нужно будет что бы вы запустили не только ON роутер но и DNS сервер.

 

 

 

В смысле грузить код из "boot" а в нем уже творить все остальное.
Там проблема в архитектуре, которую мне пока не хватает опыта решить.

Дело в том, что opennet-роутеры, которые перенаправляют сообщения от одних компов к другим, работают по своим правилам-протоколам. Эти протоколы прописаны в файле opennet.lua

Например, программист последовательность параметров в on.send() может поменять, и тогда мне нужно будет менять эти последовательности и в установочной строке. Если же грузить "boot" файл, то мне придется менять эти правила уже в 3х местах, что уже накладно.

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

Поэтому нужно еще думать.

 

>>Интерфейс консоли сервера зачотный

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

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


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

Именно мы с монстриком ничего не запускали, мы только проверили, поставив апишку.

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


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

 

 

Роутер подняли, поднимите и интернет сервер.

 

Именно мы с монстриком ничего не запускали, мы только проверили, поставив апишку.
Так роутер работает или нет? Может сегодня будет время, поставлю DNS 

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


Ссылка на сообщение
Поделиться на других сайтах
Так роутер работает или нет? Может сегодня будет время, поставлю DNS

Роутер работает.

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


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

Opennet снова заработал

Восстановлены роутеры, DNS, Internet и Update серверы

Всё это доступно счастливым обладателям жилплощади недалеко от дата-центра (~300 блоков от телепорта).

 

 

Как начать работу с opennet читайте в моем посте.

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


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

Кто возьмет на себя поднятие и поддержание web-сервера?

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


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

Кто возьмет на себя поднятие и поддержание web-сервера?

Хм... Интересно, а откуда брать софт? А веб-сервер и в ДЦ поставить можно.

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


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

Хм... Интересно, а откуда брать софт? 

 

 

-- Web-server by Zer0Galaxy
on = require("opennet")
fs = require("filesystem")
ser = require("serialization").serialize
webDir='/web/'
maxPacketSize=8000
pwd="secret"

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

local sendIP, command
commands={}
function commands.ping()
  return "pong"
end

function commands.ver()
  return "Web-server ver 1.1"
end

function commands.get(path)
  path=path or 'index'
  file=io.open(webDir..path,'r')
  if not file then file=io.open(webDir..'404','r') end
  if file then
    text=file:read("*a") file:close() 
  else 
    text="Файл "..path.." не найден"
  end
  if #text>maxPacketSize then text="Файл слишком большой" end
  return text
end

function commands.list(path)
  local result={}
  path=webDir..(path or "")
  for name in fs.list(path) do
    result[#result+1]=name
  end
  return ser(result)
end

function commands.put(path,text,passwd)
  if passwd==pwd then
    file=io.open(webDir..path,'w')
    if not file then return "Неверное имя файла" end
	file:write(text)
    file:close()
    return "Файл сохранен"
  end
  return "Неверный пароль"
end

while true do
  local dat = {on.receive()}
  sendIP, command = dat[1], dat[2]
  if command then
    if commands[command] then
      on.send(sendIP, command, commands[command](table.unpack(dat,3)) )
    else
      on.send(sendIP, false, command, "Недопустимая команда" )
	end
  end
end 

 

 

Надо только подумать над содержимым страниц

 

А веб-сервер и в ДЦ поставить можно.

Конечно можно

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


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

Большинство уже забыло про такую крутую штуку, как OpenNet, но только не я. Он должен жить! И он будет жить!
В общем, приятные новости из дата-центра: поднят и сконфигурирован первый Web-сервер на новом ИТ, доступный по адресу dcweb. Добавил с десяток страничек, между которыми можно переключаться. И, как вишенка на тортике, можно скачать первый файл с сервера. Серфите, в общем))
 
Ах да, скрины.

 

 

ya1iX8s.png

xgbuyqe.png

 

 

 

Кстати, для ленивых: в западной части ДЦ, у входа, поставил комп с вечно открытым браузером

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

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


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

А как свои сайты добавлять?

Если на существующий сервер - обращайся к владельцу сервера. Если свой сервер хочешь - напишу инструкцию как.

 

А пока планируется переход на новый протокол ОН. Это позволит передавать пакеты произвольной длины (сейчас ограничение 8кБ), а так же будут генерироваться события on_massage по приходу пакета, что позволит обойтись без функции on.receive()

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

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


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

...а так же будут генерироваться события on_massage по приходу пакета, что позволит обойтись без функции on.receive()

А можно будет использовать event.listen?

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


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

А можно будет использовать event.listen?

Конечно. Именно его я и планирую использовать в реализации проекта FTP

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


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

А я создал своё жалкое подобие ssh, которое запускается через костыль

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


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

А я создал своё жалкое подобие ssh, которое запускается через костыль

Хотеть смотреть!

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


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

Хотеть смотреть!

Заходи на сервер в ~10 по мск. Можно и в 8.

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


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

Я так понимаю что OpenNet работает за счет карты-моста но может и по Wi-Fi работать?

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


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

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

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

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

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

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

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

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

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


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