![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
SuperMax |
![]()
Сообщение
#1
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 341 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Идея:
разработать различное API для работы с сетью Интернет Задача 1. Таблица рекордов в общих штрихах серверная часть: сервер БД WEB интерфейс - регистрация пользователя логин-пароль (дабы таблицы рекордов были персонализированными) - регистрация игры и получение уникального ID игры - просмотр рекордов/статистики игр итд итп API для AZБК - авторизация игры - авторизация пользователя - добавление рекорда клиентская часть на AZ* - авторизация игры - авторизация пользователя - добавление рекорда Задача 2. Сетевые диски возможность подключения в режиме R/O или R/W образа дисков на сервере UPD 2024-03-17 разрисовываю детально и начинаю делать UPD 2024-03-24 планируется такой пакет команд AZ 61 авторизация пользователя по хешу 62 регистрация пользователя 63 передача параметров из буфера на сервер 64 считывание таблицы рекордов с сервера в файл на карточке начал делать команды UPD 2024-03-25 долго не хотел этим заниматься, но видимо пришло время сделаю сетевой сервер дисков иначе говоря будет возможность цеплять любые сетевые диски как устройства AZ или будет отдельный драйвер - еще не решил но суть именно такая - блочное сетевое устройство начал писать сервер - демон на сях UPD 2024-12-02 итого API HOF реализовано в полной мере в "тетрис" имплементировано API HOF успешно работает - аутентификация игры - аутентификация пользователя - регистрация пользователя - регистрация игры осталось прикрутить ачивки и вывод таблицы рекордов видео выложено тут https://t.me/pdp11_az/15708/21177 UPD 2025-01-04 проект сетевых дисков "получил время" на разработку - хоть я и начал думать на демоном, но реально начал писать только в конце декабря а сейчас, соответственно я хорошо продвинулся в этом направлении прямо сейчас уже работает демон обслуживающий монтирование R/O любых образов дисков из архива https://mirrors.pdp-11.ru/ максимальное количество одновременно открытых файлов для работы - 20тысяч демон способен обслужить до 5k запросов в секунду полный набор команд демона, я еще не реализовал и не прикрутил средства борьбы с DDOS [у меня есть опыт и готовые модули для этого тоже есть] теперь можно очертить проект сетевых дисков более четко: 1. диски из архива можно монтировать прямо при помощи API 2. максимальная длина пути - 384 символа (самый длинный путь в архиве сейчас 366, соответственно точно хватит ) 3. все диски из архива монтируются только R/O режиме 4. пользователи смогут заводить свои персональные зоны с дисками которые можно будет монтировать в монопольном RW режиме (он будет по-умолчанию) иначе говоря это будут "персональные облака типа one drive" [TODO] 5. для авторизации будет использовать функционал HOF - иначе говоря это будет единая учетка и для рекордов и для своих облачных дисков 6. ограничений на количество ваших AZ контроллеров работающих под одной учеткой не будет. 7. будет реализована полностью сетевая загрузка с сетевых дисков - иначе говоря можно будет вообще не хранить свои образа на карточке [TODO] UPD 2025-01-06 1. будет 4 пространства сетевых дисков N:/ - это архив в текущем виде - те все что угодно можно монтировать R:/ репозиторий - буду формировать внятный набор дисков - прошу коллег подключаться к этому процессу P:/ - персональное облако, будет доступно и на запись но доступ только для себя S:/ - shared - облако для возможности делится с кем-то дисками и доступом к ним досутп будет управляемый ————- по времени реализации N: и R: - будут сейчас P: и S: - позднее тк это надо дописать авторизацию и прочее в демоне ибо сейчас он просто сетевой сервер -------------------- Живы будем - Не помрем !
|
![]() ![]() |
SuperMax |
![]() ![]()
Сообщение
#2
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 341 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Сетевое API - AZSERVER
редакция от 2025-01-11 Концепция сетевых дисков: 1. Технически это блочный интерфейс к любому файлу расположенному в пространстве имен. 2. На данный момент поддержаны 2 пространства имен N:\ и R:\ 3. Пространство N: - сетевой диск из архива - те любой образ c https://mirrors.pdp-11.ru/ данный путь считается корнем соответственно для монтирования диска OVERKIL.IMG расположенного по пути https://mirrors.pdp-11.ru/_bk0010-11-11m/so...collection/IMG/ надо указать следующее имя файла N:/_bk0010-11-11m/soft/SuperMax_collection/IMG/OVERKIL.IMG 4. Форматы запросов и ответов (упакованные структуры) указаны ниже. Лицензирование В связи с тем, что сетевое API создается в расчете на все ретроплатформы, API является открытым решением, единственным условием использования которого в своих решениях является обязательное указание MAXIOL Landisk technology ® это должно быть указано и в документации на Ваше решение и при использовании данной функции на стороне ретроплатформы. Данные для подключения: DNS name - landisk.maxiol.com TCP Port - 34162 Структуры Код // структура пакета запроса typedef __packed struct landisk_reqest { unsigned int num_block; // номер блока (32 бита) unsigned short int command; // команда unsigned char reserved[32]; // зарезервировано unsigned char data[512]; // данные - если они отправляются char path[386]; // путь до диска unsigned short int crc; // CRC команды } landisk_reqest_t; при открытии файла блок данных (data) рассматривается как пакет информации Код // структура пакета открытия файла, информационные параметры typedef __packed struct landisk_reqest_status { unsigned long timestamp; // локальное время контроллера (unix-time) unsigned long uptime; // аптайм в секундах unsigned long ip_addr; // локальный ip адрес контроллера unsigned long dns_srv1; // ip адреса DNS-серверов unsigned long dns_srv2; unsigned short int tzone; // таймзона в минутах unsigned short int platform; // номер платформы unsigned short int controller; // тип контроллера unsigned short int version; // версия прошивки контроллера char build[32]; // дата билда прошивки контроллера char url[64]; // URL производителя контроллера } landisk_reqest_status_t; пакет информации настоятельно рекомендуется заполнять полностью // номер платформы 1 - PDP-11 - БК 10/11M 2 - PDP-11 - остальные - те ДВК Э60 УКНЦ оригинальные машины итд 3 - MSX если вашей платформы нет в списке - пишите мне // тип контроллера 1 - AZБК 2 - AZ - для всех остальных PDP-11 машин 3 - Carnivore2+ для добавления в список Вашего контроллера - пишите мне. Код // команды #define LANDISK_CMD_OPEN 1 // в ответ успешность/ошибка, и если успешно - размер диска #define LANDISK_CMD_READ 2 // чтение блока #define LANDISK_CMD_WRITE 3 // запись блока #define LANDISK_CMD_CLOSE 4 // закрытие файла #define LANDISK_CMD_OPENDIR 5 // открыть оглавление по указанному пути #define LANDISK_CMD_READDIR 6 // прочитать одну запись оглавления в буфер #define LANDISK_CMD_SEARCH_REQ 7 // послать запрос поиска #define LANDISK_CMD_READ_SREQ 8 // прочитать одну запись результата поиска в буфер Код // структура пакета ответа с данными typedef __packed struct landisk_answer { unsigned short int result; // результат unsigned char data[512]; // принятые данные unsigned short int crc; // CRC ответа } landisk_answer_t; Код // структура пакета ответа статуса файла typedef __packed struct landisk_answer_status { unsigned char fattr; // File attribute unsigned short int fdate; // Fat date unsigned short int ftime; // Fat time unsigned int fsize; // File size } landisk_answer_status_t; это стандартный набор информации о файле-образе в FATформате. Код // ответы #define LANDISK_ANS_OK 0x0000 // команда выполнена успешно #define LANDISK_ANS_ERROR 0x0001 // флаг ошибки, устанавливается при любой ошибке #define LANDISK_ANS_ACCESS_DENIED 0x0002 // нет доступа, устанавливается при любой ошибке доступа #define LANDISK_ANS_NEED_REG 0x0004 // нет доступа - нужна регистрация #define LANDISK_ANS_RO_ONLY 0x0008 // нет доступа на запись- данный диск только для чтения #define LANDISK_ANS_NOT_EXISTS 0x0010 // нет данного образа - неверный путь до файла образа или директории Для расчета CRC используется ф-я ![]() Стратегия работы 1. первая команда должна быть открытие файла (LANDISK_CMD_OPEN) при запросе на открытие надо указать блок параметров (landisk_reqest_status_t) в ответ будет прислан блок landisk_answer_t но data[512] надо рассматривать как landisk_answer_status_t 2. далее можно посылать команды чтения 3. на данный момент поддержаны команды LANDISK_CMD_OPEN, LANDISK_CMD_READ, LANDISK_CMD_WRITE, LANDISK_CMD_CLOSE 4. В конце работы желательно (но не обязательно) послать команды закрытия дисков. Ограничения: 1. не более 100 запросов в секунду с одного IP (иначе сработает блок анти-DDOS и забанит данный IP на некоторое время) 2. не более 10ти "висящих" соединений на IP. -------------------- Живы будем - Не помрем !
|
![]() ![]() |
Текстовая версия | Сейчас: 20.6.2025, 17:54 |