/LabGenReloadedAPI

API закрытого проекта LabGen

Primary LanguageJava

LabGenReloadedAPI

API системы плагинов лабораторных работ закрытого проекта LabGen

Основные особенности проекта LabGen:

  • Платформа для генерации уникальных заданий
  • Система автоматического тестирования программ на языке Java
  • Кроссплатформенность и защищённость
  • Многофункциональная административная панель с ролевой моделью безопасности и разделением прав на учебных дисциплинах
  • Веб-клиент, построенный на фреймворке Bootstrap, с заменяемой темой оформления и полной адаптивностью. Возможность сдавать лабораторные работы с мобильных устройств
  • Возможность интеграции в различные учебные дисциплины путём написания плагинов

Архитектура

Все части проекта изначально были написаны на Java с единой объектно-ориентированной сетевой частью
На данный момент сервер представляет собой симбиоз PHP ядра с локальным API и тестировочного сервиса на Java
Тестирование пользователя/пользовательской программы на Java происходит в реальном времени при помощи WebSocket'а с веб-страницы

Плагины

Плагин должен содержать как минимум одну реализацию PluginBase (логику плагина) и одну реализацию PluginFactory (дескриптор плагина)
В корне архива с плагином должен лежать файл параметров plugin.properties, ключ "factory" которого должен ссылаться на реализацию PluginFactory
PluginFactory обрабатывает запросы о старте тестирования и также идентифицирует сам плагин
PluginBase может подписываться на "события" получения различных сетевых сообщений от клиента и при помощи предоставленных утилит работать с клиентом

В работе

  • Система контроля прав доступа административной панели (DPS - Distributed permission system)
  • Распределение и привязка прав к учебным дисциплинам (CRS - Course role system)
  • Импорт и экспорт данных
  • Массовые операции над объектами системы при помощи логических запросов
  • Защищённая и контроллируемая песочница для исполнения потенциально вредоносного пользовательского кода
  • Автоматическая проверка программ по косвенным признакам и перехват вызовов используемых библиотек
  • Комплексное обеспечение безопасности системы
  • Интеграция редактора методических указаний по лабораторным работам в реальном времени, работающем на языке разметки Markdown
  • Возможность выдачи временных прав администраторам
  • Система достижений студентов для повышения мотивации соревновательным методом
  • Улучшение дизайна административной панели и клиентской части
  • Внедрение "онлайн"-компилятора на странице проекта
  • Интерактивное обучение работе в системе при первом входе
  • Увеличение количества тем и интеграция редактора тем

Скриншоты

image image image image image image