diff --git a/console/asstes/release/4389trh7f8dscvre0.zip b/console/asstes/release/4389trh7f8dscvre0.zip new file mode 100644 index 0000000..45b86dc Binary files /dev/null and b/console/asstes/release/4389trh7f8dscvre0.zip differ diff --git a/console/asstes/root.js b/console/asstes/root.js new file mode 100644 index 0000000..e69de29 diff --git a/console/asstes/shutdown.css b/console/asstes/shutdown.css new file mode 100644 index 0000000..e69de29 diff --git a/console/asstes/startup.js b/console/asstes/startup.js new file mode 100644 index 0000000..e7787b4 --- /dev/null +++ b/console/asstes/startup.js @@ -0,0 +1,57 @@ +var userDeviceArray = [ + { device: 'Android', platform: /Android/ }, + { device: 'iPhone', platform: /iPhone/ }, + { device: 'iPad', platform: /iPad/ }, + { device: 'Symbian', platform: /Symbian/ }, + { device: 'Windows Phone', platform: /Windows Phone/ }, + { device: 'Tablet OS', platform: /Tablet OS/ }, + { device: 'Linux', platform: /Linux/ }, + { device: 'Windows XP (or Server 2003) and older', platform: /Windows NT 5.1/ }, + { device: 'Windows Vista (or Server 2008)', platform: /Windows NT 6.0/ }, + { device: 'Windows 7 (or Server 2008 R2)', platform: /Windows NT 6.1/ }, + { device: 'Windows 8 (or Server 2012)', platform: /Windows NT 6.2/ }, + { device: 'Windows 8.1 (or Server 2012 R2)', platform: /Windows NT 6.3/ }, + { device: 'Windows 10/11 (or Server 2016/2019)', platform: /Windows NT 10.0/ }, + { device: 'Macintosh', platform: /Macintosh/ } + ]; + + var platform = navigator.userAgent; + + // Функция получения платформы ОС + function getPlatform() { + for (var i = 0; i < userDeviceArray.length; i++) { + if (userDeviceArray[i].platform.test(platform)) { + return userDeviceArray[i].device; + } + } + return 'Unknown'; + } + + // Функция имитации запуска ПК + function simulatePCStartup() { + var output = document.getElementById('output'); + + // Функция для добавления строки с задержкой + function addOutputLine(line, delay) { + setTimeout(function () { + output.innerHTML += line + '\n'; + }, delay * 1000); + } + + // Добавление строк с задержкой + addOutputLine('[ 0.00000000] Search shell command prompt', 0); + addOutputLine('[ 1.00000000] Your OS: ' + getPlatform(), 1); + addOutputLine('[ 2.00000000] Initialization shell prompt', 2); + addOutputLine('[ 3.00000000] Startup May Console', 3); + + // Перенаправление на страницу shell/index.html с задержкой + setTimeout(function () { + window.location.href = 'shell/index.html'; + }, 5000); + } + + // Вызов функции имитации запуска ПК при загрузке страницы + window.onload = function () { + simulatePCStartup(); + }; + \ No newline at end of file diff --git a/console/asstes/style.css b/console/asstes/style.css new file mode 100644 index 0000000..f9198e3 --- /dev/null +++ b/console/asstes/style.css @@ -0,0 +1,71 @@ +* { + margin: 0; + padding: 0; +} + +html { + background-color: #000; +} + +body { + -webkit-user-select: none; /* Запрет выделения текста для Chrome, Safari, Opera */ + -moz-user-select: none; /* Запрет выделения текста для Firefox */ + -ms-user-select: none; /* Запрет выделения текста для Internet Explorer и Microsoft Edge */ + user-select: none; /* Запрет выделения текста для большинства браузеров */ +} + +.console { + border-color: darkgray 10px; + background-color: rgb(0, 0, 0); + padding: 10px; + font-family: monospace; + font-size: 20px; + } + + + + #output { + min-height: 10px; + overflow-y: auto; + white-space: pre-wrap; + word-wrap: break-word; + color: #fff; + } + + input { + color: #fff; + width: 100%; + border: none; + background-color: transparent; + outline: none; + font-family: monospace; + font-size: 20px; + } + + ::-webkit-scrollbar { + transition: 0.2s; + background: #000000c9; + backdrop-filter: blur(5px); + margin-right: 5px; + width: 8px; + overflow-y: auto; + scrollbar-color: transparent; +} + +::-webkit-scrollbar-button:hover { + box-shadow: inset 0 0 3px #fafafa; background: snow; +} + +::-webkit-scrollbar-thumb { + background: rgb(255, 255, 255); + +} + +::-webkit-scrollbar-thumb:hover { + background: rgb(255, 255, 255); + animation-duration: 0.5s; +} + +::-webkit-scrollbar-thumb:active { + background: rgb(84, 84, 84); +} diff --git a/console/asstes/system.js b/console/asstes/system.js new file mode 100644 index 0000000..637ff5a --- /dev/null +++ b/console/asstes/system.js @@ -0,0 +1,257 @@ +document.addEventListener('DOMContentLoaded', function() { + const input = document.getElementById('input'); + const output = document.getElementById('output'); + const consoleElement = document.querySelector('.console'); + let canInputCommand = true; + + output.innerHTML += 'May Console 1.0\n'; + output.innerHTML += 'Languange: RU\n'; + output.innerHTML += 'Account: User\n'; + output.innerHTML += '\n'; + output.innerHTML += 'Введи слово hint, чтобы ознакомиться с командами.\n'; + + input.addEventListener('keydown', function(event) { + if (event.key === 'Enter') { + const command = input.value; + input.value = ''; + + output.innerHTML += '> ' + command + '\n'; + + if (canInputCommand) { + executeCommand(command); + } else { + output.innerHTML += 'Подождите, идет выполнение предыдущей команды...\n'; + } + + // Прокрутка командной строки вниз после выполнения команды + consoleElement.scrollTop = consoleElement.scrollHeight; + } + }); + + function executeCommand(command) { + if (command === 'hello') { + output.innerHTML += 'Привет!\n'; + } else if (command === 'time') { + const currentTime = new Date().toLocaleTimeString(); + output.innerHTML += 'Текущее время: ' + currentTime + '\n'; + } else if (command === 'checkversion') { + checkScriptVersion(); + } else if (command.startsWith('execute')) { + executeSubcommand(command); + } else if (command === 'clear') { + clearConsole(); + } else if (command === '--bio:maydilsiel') { + showbio(); + } else if (command === 'graphic_-install') { + installationGraphics(); + } else if (command === 'about-system') { + output.innerHTML += '\n'; + output.innerHTML += 'May Console 1.0\n'; + output.innerHTML += '=========================================\n'; + output.innerHTML += 'Последнее обновление: 27/06/2023 \n'; + output.innerHTML += 'Основан на: JavaScript\n'; + output.innerHTML += 'Работали над консолью Ramzayev German & Ivan Movchan\n'; + output.innerHTML += 'Исходный код проекта: Открыт.\n'; + output.innerHTML += '\n'; + } else if (command === 'hint') { + showHint(); + } else if (command.startsWith('changecolor')) { + const colors = command.substring(12).split(' '); + const textColor = colors[1]; + const backgroundColor = colors[0]; + changeColor(textColor, backgroundColor); + } else { + if (canInputCommand) { + output.innerHTML += 'E: Неизвестная команда: ' + command + '\n'; + } else { + output.innerHTML += 'Подождите, идет выполнение предыдущей команды...\n'; + } + } + + // Прокрутка командной строки вниз после выполнения команды + consoleElement.scrollTop = consoleElement.scrollHeight; + } + + function executeSubcommand(command) { + const subcommand = command.substring(8).trim(); + + if (subcommand === '--help') { + output.innerHTML += 'Доступные подкоманды:\n'; + output.innerHTML += '- execute --9 page=download_-version: Отображает информацию о доступных релизах.\n'; + output.innerHTML += '- execute --9 page=download_-4389trh7f8dscvre0: Отображает информацию о конкретном релизе.\n'; + output.innerHTML += '\n'; + } else if (subcommand === '--9 page=download_-version') { + clearConsole(); + output.innerHTML += 'Выбор релиза\n'; + output.innerHTML += '==================================================\n'; + output.innerHTML += '\n'; + output.innerHTML += 'MayConsole 1.0 [Release code 4389trh7f8dscvre0] [date: 27/06/2023]\n'; + } else if (subcommand === '--9 page=download_-4389trh7f8dscvre0') { + output.innerHTML += 'MayConsole 1.0 [Release code 4389trh7f8dscvre0] [date: 27/06/2023]\n'; + output.innerHTML += '===============================================================================\n'; + output.innerHTML += '\n'; + output.innerHTML += 'Сведение execute --i page=download_-4389trh7f8dscvre0\n'; + } else if (subcommand === '--i page=download_-4389trh7f8dscvre0') { + clearConsole(); + output.innerHTML += 'MayConsole 1.0 [Release code 4389trh7f8dscvre0] [date: 27/06/2023]\n'; + output.innerHTML += '===============================================================================\n'; + output.innerHTML += '\n'; + output.innerHTML += 'Преимущества:\n'; + output.innerHTML += '- Простота использования: Консоль предоставляет удобный интерфейс для взаимодействия с пользователем через командную строку.\n'; + output.innerHTML += '- Гибкость: Вы можете добавлять свои собственные команды и логику обработки в функции `executeCommand` и `executeSubcommand`.\n'; + output.innerHTML += '- Возможность отображать результаты выполнения команд и подкоманд в консоли.\n'; + output.innerHTML += '- Интерактивность: Пользователь может вводить команды и получать ответы в режиме реального времени.\n'; + output.innerHTML += '\n'; + output.innerHTML += 'Недостатки:\n'; + output.innerHTML += '- Отсутствие встроенных механизмов безопасности: Консоль не имеет механизмов защиты от злонамеренных команд или ввода данных, поэтому необходимо самостоятельно обеспечить безопасность и валидацию вводимых команд.\n'; + output.innerHTML += '- Ограниченность функциональности: Консоль может выполнять только те команды, которые были предварительно определены в коде.\n'; + output.innerHTML += '\n'; + output.innerHTML += 'Инструкция по встраиванию:\n'; + output.innerHTML += '1. Редактирование CSS:\n'; + output.innerHTML += ' - Добавьте следующие стили для класса `.console`:\n'; + output.innerHTML += ' ```css\n'; + output.innerHTML += ' .console {\n'; + output.innerHTML += ' height: 300px; /* Высота консоли */\n'; + output.innerHTML += ' overflow-y: auto; /* Включение вертикальной прокрутки */\n'; + output.innerHTML += ' font-family: monospace; /* Шрифт для текста в консоли */\n'; + output.innerHTML += ' }\n'; + output.innerHTML += ' ```\n'; + output.innerHTML += ' - Добавьте следующие стили для класса `.console pre` (для отображения текста в консоли):\n'; + output.innerHTML += ' ```css\n'; + output.innerHTML += ' .console pre {\n'; + output.innerHTML += ' margin: 0;\n'; + output.innerHTML += ' white-space: pre-wrap; /* Обработка переносов строк */\n'; + output.innerHTML += ' word-break: break-all; /* Разбиение слов по слогам */\n'; + output.innerHTML += ' }\n'; + output.innerHTML += ' ```\n'; + output.innerHTML += '\n'; + output.innerHTML += '2. Добавление HTML-кода:\n'; + output.innerHTML += ' - Внутри `<body>` вашего HTML-файла добавьте следующий код:\n'; + output.innerHTML += ' ```html\n'; + output.innerHTML += ' <div class="console">\n'; + output.innerHTML += ' <pre id="output"></pre>\n'; + output.innerHTML += ' </div>\n'; + output.innerHTML += ' <br>\n'; + output.innerHTML += ' <input type="text" id="input" placeholder="Введите команду, для полной подсказки воспользуйтесь командой hint" autofocus>\n'; + output.innerHTML += ' ```\n'; + output.innerHTML += '\n'; + output.innerHTML += '3. Добавление скрипта:\n'; + output.innerHTML += ' - Добавьте скрипт в ваш HTML-файл внутри блока `<script></script>`:\n'; + output.innerHTML += ' ```javascript\n'; + output.innerHTML += ' <script>\n'; + output.innerHTML += ' // Вставьте здесь код, который был предоставлен ранее\n'; + output.innerHTML += ' </script>\n'; + output.innerHTML += ' ```\n'; + output.innerHTML += '\n'; + output.innerHTML += 'После внедрения кода, вы сможете использовать любую команду для выполнения определенной логики в функции `executeSubcommand` в коде JavaScript. Вам необходимо добавить соответствующий блок кода в эту функцию, чтобы обрабатывать и выполнять эту команду соответствующим образом.\n'; + output.innerHTML += 'Для установки данного релиза нужно ввести эту команду с участием execute с ключом [-o]\n'; + + } else if (subcommand === '-o page=download_-4389trh7f8dscvre0') { + output.innerHTML += 'Установка релиза...........' + window.location.href = '../asstes/release/4389trh7f8dscvre0.zip'; + + } else { + output.innerHTML += 'E: Неизвестная подкоманда: ' + subcommand + '\n'; + } + + // Прокрутка командной строки вниз после выполнения подкоманды + consoleElement.scrollTop = consoleElement.scrollHeight; + } + + function clearConsole() { + output.innerHTML = ''; // Очистка содержимого консоли + + // Прокрутка командной строки вниз после очистки + consoleElement.scrollTop = consoleElement.scrollHeight; + } + + function checkScriptVersion() { + output.innerHTML += 'Проверка версии скрипта...\n'; + canInputCommand = false; // Запрет ввода новых команд + + // Здесь можно добавить логику проверки версии скрипта, например, с помощью AJAX-запроса или других методов + // Для примера, использован фиктивный запрос к файлу с информацией о версии + + setTimeout(function() { + output.innerHTML += 'Версия скрипта: 1.0\n'; + canInputCommand = true; // Разрешение ввода новых команд + + // Прокрутка командной строки вниз после проверки версии + consoleElement.scrollTop = consoleElement.scrollHeight; + }, 2000); + } + + function showHint() { + output.innerHTML += 'Доступные команды:\n'; + output.innerHTML += '- hello: Выводит приветствие.\n'; + output.innerHTML += '- time: Выводит текущее время.\n'; + output.innerHTML += '- checkversion: Проверяет версию скрипта.\n'; + output.innerHTML += '- execute --help: Выводит доступные подкоманды для execute.\n'; + output.innerHTML += '- clear: Очищает консоль.\n'; + output.innerHTML += '- about-system: Выводит информацию о системе.\n'; + output.innerHTML += '- hint: Выводит список доступных команд.\n'; + output.innerHTML += '- changecolor : Изменяет цвет фона и текста в консоли.\n'; + output.innerHTML += '\n'; + + // Прокрутка командной строки вниз после вывода подсказки + consoleElement.scrollTop = consoleElement.scrollHeight; + } + + function changeColor(textColor, backgroundColor) { + const consoleStyle = consoleElement.style; + consoleStyle.color = textColor; + consoleStyle.backgroundColor = backgroundColor; + + output.innerHTML += 'Цвет фона и текста изменен.\n'; + + // Прокрутка командной строки вниз после изменения цвета + consoleElement.scrollTop = consoleElement.scrollHeight; + } + + function installationGraphics() { + window.location.href = 'mayinstaller.html'; + output.innerHTML += 'Загрузка в графическую установку.................................\n'; + + // Прокрутка командной строки вниз после изменения цвета + consoleElement.scrollTop = consoleElement.scrollHeight; + } + + function playSoundCloudTrack(trackUrl) { + // Подставьте ваш Client ID вместо YOUR_CLIENT_ID + SC.initialize({ client_id: 'YOUR_CLIENT_ID' }); + + // Получение информации о треке с помощью API + SC.resolve(trackUrl) + .then(function (track) { + var audio = document.getElementById('myAudio'); + + // Установка пути трека в аудио элемент + audio.src = track.stream_url + '?client_id=YOUR_CLIENT_ID'; + + // Воспроизведение трека + audio.play(); + }) + .catch(function (error) { + console.error('Ошибка при загрузке трека:', error); + }); + } + + function showbio() { + clearConsole(); + output.innerHTML += 'БИОГРАФИЯ MAYDILSIEL\n'; + output.innerHTML += '=====================================================\n'; + output.innerHTML += 'Имя: Герман Рамзаев\n'; + output.innerHTML += 'Возраст: 17 (скоро 18)\n'; + output.innerHTML += 'Место жительства: Казахстан\n'; + output.innerHTML += 'Родной язык: Русский\n'; + output.innerHTML += 'Часовой пояс: UTC +06:00\n'; + output.innerHTML += 'Учится на программиста\n'; + output.innerHTML += 'Основной язык программирования: C#\n'; + output.innerHTML += 'Дополнительный язык программирования: Python + JavaScript\n'; + output.innerHTML += 'Изредка использует С++\n'; + output.innerHTML += 'Самостоятельное изучение языка C# важная часть развития для него\n'; + + } + + +}); \ No newline at end of file diff --git a/console/index.html b/console/index.html new file mode 100644 index 0000000..a70dba7 --- /dev/null +++ b/console/index.html @@ -0,0 +1,27 @@ + + + + Запуск + + + + +
+ +

+  
+ + + + diff --git a/console/shell/index.html b/console/shell/index.html new file mode 100644 index 0000000..d8c9959 --- /dev/null +++ b/console/shell/index.html @@ -0,0 +1,29 @@ + + + + Консоль + + + + +
+ +

+    
+ +
+ + + + diff --git a/console/shell/mayinstaller.html b/console/shell/mayinstaller.html new file mode 100644 index 0000000..5065e8f --- /dev/null +++ b/console/shell/mayinstaller.html @@ -0,0 +1,39 @@ + + + + WebOS + + + +
+
+ +
    +
  • О системе
  • +
  • Перезагрузка
  • +
+
+
+ + + +
+
+ +
+
+

Установка MayConsole

+

Добро пожаловать! Данный установщик предназначен для тех, у кого возникли проблемы с установкой через консоль

+



+
+ +
+
+
+ +
+ + + diff --git a/console/shell/script.js b/console/shell/script.js new file mode 100644 index 0000000..de490a5 --- /dev/null +++ b/console/shell/script.js @@ -0,0 +1,71 @@ +// Получаем ссылки на элементы DOM +const startButton = document.querySelector('.start-button'); +const startMenu = document.querySelector('.start-menu-items'); +const startMenuItems = document.querySelectorAll('.start-menu-item'); +const taskbarButtons = document.querySelectorAll('.taskbar-button'); +const windows = document.querySelectorAll('.window'); + +// Добавляем обработчик события для кнопки "Start" +startButton.addEventListener('click', () => { + // Переключаем видимость стартового меню + startMenu.classList.toggle('show'); +}); + +// Закрываем стартовое меню при клике вне его +document.addEventListener('click', (event) => { + if (!event.target.closest('.start-menu')) { + startMenu.classList.remove('show'); + } +}); + +// Добавляем обработчики событий для элементов стартового меню +startMenuItems.forEach((menuItem, index) => { + menuItem.addEventListener('click', () => { + // Открываем окно приложения, связанное с выбранным элементом меню + openWindow(index + 2); // Добавляем 2, чтобы начать с окна 2 + }); +}); + +// Добавляем обработчики событий для кнопок запущенных приложений в таскбаре +taskbarButtons.forEach((button, index) => { + button.addEventListener('click', () => { + // Переключаем активное окно + toggleWindow(index); + }); +}); + +// Функция для переключения активного окна +function toggleWindow(index) { + windows.forEach((window, i) => { + if (i === index) { + // Показываем выбранное окно + window.style.display = 'block'; + } else { + // Скрываем остальные окна + window.style.display = 'none'; + } + }); +} + +// Функция для открытия нового окна приложения +function openWindow(index) { + // Проверяем, есть ли уже открыто окно с таким индексом + const existingWindow = document.querySelector(`.window[data-index="${index}"]`); + if (existingWindow) { + // Переключаемся на существующее окно + toggleWindow(parseInt(existingWindow.dataset.index)); + } else { + // Создаем новое окно с уникальным содержимым + const newWindow = document.createElement('div'); + newWindow.className = 'window'; + newWindow.setAttribute('data-index', index); + newWindow.innerHTML = ` +

Окно ${index}

+

Содержимое окна ${index}.

+ `; + document.querySelector('.desktop').appendChild(newWindow); + + // Переключаемся на новое окно + toggleWindow(index); + } +} diff --git a/console/shell/style/styles.css b/console/shell/style/styles.css new file mode 100644 index 0000000..9304b79 --- /dev/null +++ b/console/shell/style/styles.css @@ -0,0 +1,132 @@ +body { + margin: 0; + padding: 0; + font-family: Arial, sans-serif; +} + +.taskbar { + background-color: #333; + height: 40px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 10px; +} + +.start-menu { + position: relative; +} + +.start-button { + background-color: transparent; + border: none; + color: #fff; + padding: 10px 20px; + font-size: 14px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.start-button:hover { + background-color: rgba(255, 255, 255, 0.1); +} + +.start-menu-items { + position: absolute; + top: 100%; + left: 0; + width: 200px; + background-color: #EEE; + padding: 10px; + list-style: none; + margin: 0; + display: none; +} + +.start-menu-item { + border-radius: 10px; + padding: 10px 10px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.start-menu-item:hover { + background-color: #1100ff; + color: #fff; +} + +.taskbar-buttons { + display: flex; +} + +.taskbar-button { + background-color: transparent; + border: none; + color: #fff; + padding: 10px 20px; + margin-right: 10px; + font-size: 14px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.taskbar-button:hover { + background-color: rgba(255, 255, 255, 0.1); +} + +.desktop { + background-image: linear-gradient(to bottom, #006eff, #b700ff); + height: calc(100vh - 40px); + display: flex; + justify-content: center; + align-items: center; +} + +.window { + background-color: #fff; + width: 400px; + border-radius: 5px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + padding: 20px; + text-align: center; +} + +.window h2 { + font-size: 18px; + margin-bottom: 10px; +} + +.window p { + font-size: 14px; +} + +.start-menu-items.show { + border-radius: 10px; + margin-top: 10px; + display: block; +} + +.buttoninstall { + cursor: pointer; + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + border-radius: 15px; + border: none; + transition: 0.2s; + background-color: #1100ff; + color: #fff; + font-size: 20px; +} + +.buttoninstall:hover { + background-color: #564afa; + color: #fff; +} + +.step20percent { + width: 20px; + height: 100%; + background-color: #ffffff; +}