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

Programist135

Пользователи
  • Публикации

    90
  • Зарегистрирован

  • Посещение

  • Победитель дней

    8

Сообщения, опубликованные пользователем Programist135


  1. я так и не понял, тут используется адрессация по машинным или же у тебя есть какой-то свой адрессный протокол?

    Ну ты запрашиваешь у сервера домен один раз, он тебе адрес. А дальше по принятому адресу общаешься.


  2. Именем p135, представляю вам программу! Две программы!

     

    Ладно, без шуток. Всем привет. Я разрабатываю mcGSM. А соответственно нужны будут DNS для удобного доступа. Пока на разработку времени нет, но я уже написал модуль для этой штуки. Пока не для этой, а для простых модемов. Потом переделаю. Ладно, не медлим, давайте.

     

    Это DNS. Да, он самый с доменами второго уровня (p135.ru, mcdns.net, ...). Значит у него есть две части: сервер и клиент. Работает он по такому принципу:

     

    Компьютер запрашивает у DNS-сервера адрес, при помощи библиотеки. DNS-сервер ищет в своей папке сначала домен этого адреса, затем сам адрес. Например, p135.ru будет находится здесь: /dns/ru/p135.dns. В файле содержится адрес регистратора - он отправляется тому, кто запросил. Если адреса не существует, то отправляется сигнал, что "адреса p135.net не существует"

     

    Надеюсь понятно обьяснил. Код:

     

    Сервер: http://pastebin.com/5VnJQawh

    Клиентская библиотека: http://pastebin.com/YzwiG4gb

     

    И так, перейдём к настройке.

     

    Сервер:

    1. Ставим комп (или сервер) с модемом (какой хотите, проводной, беспроводной, dial-up...)
    2. Создаём папку dns в корне (или другую, только в переменной dir не забудьте поправить)
    3. В этой папке создаём папки с названиями доменов: ru, com, net, io, какие хотите
    4. Скачиваем и запускаем сервер.

    [!] Если кто-то попытается зарегистрировать домен, например, ty, то у него ничего не выйдет. Система не позволит. Чтобы разрешить, также создайте папку ty.

     

    Клиент:

    1. Скачиваем библиотеку
    2. Открываем её редактором edit
    3. Изменяем переменную "dns_server" на адрес вашего сервера (отображается при запуске)
    4. Сохраняем
    5. ...

    Пример пользования клиентом:

    lua> dns=require("dns")
    lua> =dns.register("p135.ru") -- регистрируем
    true
    lua> =dns.get("p135.ru") -- получаем ip этого домена
    "de63ba47-beb6-4055-a016-e4090c18cdb5" 
    lua> =dns.register("p135.ru")
    false -- домен уже существует
    lua> =dns.register("p135.ty")
    false -- нельзя, мы не разрешили регистрировать домены ty
    lua> =dns.register("p135.io")
    true -- можно зарегистрировать второй домен на один и тот же адрес - оба будут направлять на него
    
    

    Вот и всё. Спасибо за прочтение. Да кстати, dns.get(...) выполняется практически моментально. В следующей версии планирую сделать домены третьего уровня, а также красивый графический интерфейс для сервера. Забыл сказать, проект называется mcDNS. Почему не OpenDNS? Потому что это уже реально существующий проект. Ну, и пример в картинках

    XaHnT0P.pngKFzsiMA.png

    • Нравится 9

  3. Меня смущает вот этот код:

    local function stop()
        local running = false
    end
    

    Что это? Возможно по-этому у тебя не работает выход, но я стал копать дальше:

    ...
    local function run()
        oldPix = gpu.get(mouseX, mouseY)
        gpu.set(mouseX, mouseY, "█")
        local running = true
        while running do
            local _, _, key, code = event.pull("key_down")
            if key == 0 and code == 88 then
                stop()
    ...
    

    Тайна функции stop() раскрылась. Ты создаёшь в данном случае две разные переменные running, которые не зависят друг от друга. Надо было сделать так:

    local running = true
    local function stop()
        running = false
    end
    

    и убрать строчку 47 в твоей программе.

     

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

    Сделал я так. Проблема осталась. Ещё когда нажимаешь Ctrl+Alt+C появляется ещё один курсор (надо жмякать несколько раз чтобы остановить прогу вместе с OpenOS)


  4. Решил я написать мышь через клавиатуру, запустил, нажал F10, курсор появился и двигается влево-вправо, но случилось неприятное: не работает передвижение курсора вниз-вверх, плюс курсор ввода продолжает мигать. Ещё не работает кнопка F12, которая останавливает программу. Код:

     

    http://pastebin.com/CfHV57NX


  5. И так. Сделал генерацию одновременно и публичного и приватного RSA-ключа. Данные НИКАКИЕ не требуются. Программа генерирует рандомно. Сейчас она на тестировании, завтра выложу, сегодня времени нет.


  6. Всем привет, с вами снова Programist135, и я решил создать генератор SSH-ключей. Программа простенькая, так что выполните эту команду:

     

    wget https://preview.c9users.io/programist135/programfiles/Programist135/ssh-keygen.lua ssh-keygen.lua

     

    И запустите ssh-keygen. За 1 момент программа сгенерирует ключ размером 128 байт и сохранит его в файл, напишет в какой. А с вами был Programist135, до новых встреч!

     

    P. S. RandomSSH это моя "выдуманная" технология.

     

    Ожидали больше текста? Извините что разочаровал :)


  7. Лёша, я думаю что чем длиннее фраза, тем надёжнее. Вон в Clash of Clans начал себе ник менять, меня просят целиком и полностью слово ПОДТВЕРДИТЬ. Вот.


    Забыл написать: корзина находится по адресу /usr/.$RecycleBin. Через ls /usr мы её не увидим, потому что имя файла начинается с точки. Все файлы восстанавливаются НЕ туда, где они были, а в папку /restored/.


  8. - Так. Удалю ка я файл govnokod.lua
        *набрал rm go*
        *TAB*
        *набралось gorod*
        *ENTER*
    О НЕТ!! Я удалил нужный файл!! АА!!!!

    - Так. Удалю ка я файл govnokod.lua
        *набрал rm go*
        *TAB*
        *набралось gorod*
        *ENTER*
        *файл успешно перемещён в корзину...*
    - АА!! О, точно есть же корзина.
        *recycle -r gorod*
        *файл восстановлен...*
    - Ух...


    И так, всем здравствуйте. С вами снова Programist135, и я решил убить > 2 часов на то, чтобы защитить вас от случайного удаления нужных файлов. Эта программа называется "Корзина"
    Все мы знаем корзину в Windows, Linux, Ubuntu... поэтому я решил реализовать это и в OpenOS. Ну что-ж, выполните в консоли вот эту команду!
                                        
    pastebin run QFZ0uHCk

    Для загрузки нескольких файлов я воспользовался вот этой программой >>> http://computercraft.ru/topic/1145-oc-ustanovschik-programm

    Приступим к обзору. Я решил написать все функции "корзины" в библиотеке, а вызывать из программы. Поэтому сама программа так мало весит =)

    Команды:
        

     

        recycle -r имя_файла
            Восстанавливает файл имя_файла из корзины. Если его там нет, выдаёт предупреждение.
        recycle -c
            ПОЛНОСТЬЮ очищает корзину. Перед очисткой просит ввести слово "ПОДТВЕРДИТЬ".
        recycle -d имя_файла
            Удаляет файл имя_файла из КОРЗИНЫ навсегда. Перед удалением просит ввести слово "ДА".
        recycle -l
            Показывает все те файлы и папки, которые находятся в КОРЗИНЕ.
        



    Вы спросите: "Эй прог, а как переместить файл в корзину?". Тут всё просто. Я отредактировал файл rm.lua. Использование такое:
        


        rm [-vn] <filename1> [<filename2> [...]]
          v выводит сообщения, что сейчас происходит.
          Но! Будьте осторожней с функцией n. Она удаляет все выбранные файлы БЕЗ ПЕРЕМЕЩЕНИЯ В КОРЗИНУ! Перед этим действием просит подтверждение.
        



    Ну вот и всё. На написание этой статьи я потратил 20 минут. А с вами был Programist135, если вдруг найдёте нерабочую функцию или баг, обязательно напишите мне сюда, я исправлю. Увидимся!

     

    И да, чуть не забыл: небольшой пример работы.

    post-11994-0-48841200-1446448627_thumb.png

    • Нравится 7
×
×
  • Создать...