30 посетителей на сайте. Из них:
Пользователи6
Роботы24
Список пользователей
Mayr Сейчас на сайте
Valutko Сейчас на сайте
Никита Сабуров Сейчас на сайте
Aliksandr Cernov Сейчас на сайте
Aurora Online Сейчас на сайте
Ab Antonian Сейчас на сайте
WiseBear Сейчас на сайте
Татьяна Усанова Был(a) в сети 4 минуты назад
Vanez Spartakov Был(a) в сети 4 минуты назад
ccx vcccdv Был(a) в сети 4 минуты назад
Рома Гайнуллин Был(a) в сети 6 минут назад
Егор Петров Был(a) в сети 11 минут назад
Nikita Kotov Был(a) в сети 12 минут назад
AZKЕ versach Был(a) в сети 18 минут назад
Даниил Девелоп Был(a) в сети 19 минут назад
xomkaaa —- Был(a) в сети 20 минут назад
Михаил Был(a) в сети 21 минуту назад
Данил Волосников Был(a) в сети 30 минут назад
Артем Власов Был(a) в сети 37 минут назад
LIMMA 86 Был(a) в сети 38 минут назад
Bce Bblpy6au Был(a) в сети 41 минуту назад
0987654321 Был(a) в сети 42 минуты назад
kinolog2019 Был(a) в сети 49 минут назад
Original Nuras Был(a) в сети 49 минут назад
Debik Был(a) в сети 52 минуты назад
KAT Был(a) в сети 55 минут назад
ГРИГОРИЙ ШАРОВ Был(a) в сети 58 минут назад
Был(a) в сети 1 час назад
матвей к Был(a) в сети 1 час назад
BeDa Был(a) в сети 1 час назад
Ivan Baev Был(a) в сети 1 час назад
Александр Лысков Был(a) в сети 1 час назад
Алексей Каратаев Был(a) в сети 1 час назад
Мирик Шестаков Был(a) в сети 1 час назад
SashaChullkov Был(a) в сети 1 час назад
Зубков Иван Был(a) в сети 1 час назад
L A V I R Был(a) в сети 1 час назад
Ратмир Андреев Был(a) в сети 2 часа назад
Azazel Был(a) в сети 2 часа назад
Алексей Гусаков Был(a) в сети 2 часа назад
W?nnky - Был(a) в сети 2 часа назад
Ярослав Горбатенко Был(a) в сети 2 часа назад
Астемир Махошев Был(a) в сети 2 часа назад
Дмитрий Был(a) в сети 2 часа назад
Владимир Bob Был(a) в сети 2 часа назад
Владислав Черемных Был(a) в сети 2 часа назад
meow youtube Был(a) в сети 2 часа назад
Дмитрий Давыдов Был(a) в сети 2 часа назад
Dato Guliazali195 Был(a) в сети 3 часа назад
Костя костивич Был(a) в сети 3 часа назад
Матвей Был(a) в сети 3 часа назад
Нет Имени Был(a) в сети 3 часа назад
Vizzy Rp Был(a) в сети 3 часа назад
Organizator Volhrbnik Был(a) в сети 3 часа назад
Toha 2010 Был(a) в сети 3 часа назад
Андрей Смотрич Был(a) в сети 3 часа назад
Дмитрий Кудряшов Был(a) в сети 3 часа назад
Картошка Тимур Был(a) в сети 3 часа назад
Даниил Смирнов Был(a) в сети 3 часа назад
Aleksandr Feofilov Был(a) в сети 3 часа назад
спец аккаунт Был(a) в сети 3 часа назад
kazinoradi kalov Был(a) в сети 3 часа назад
Bunda Legends Был(a) в сети 3 часа назад
Kuraidesu Был(a) в сети 3 часа назад
Муся Осевна Был(a) в сети 4 часа назад
Был(a) в сети 4 часа назад
Сергей Попов Был(a) в сети 4 часа назад
Дима Был(a) в сети 4 часа назад
Радмир Сотрудка Был(a) в сети 4 часа назад
Олежка Бебнев Был(a) в сети 4 часа назад
Макс Уваров Был(a) в сети 4 часа назад
Никита Дружинин Был(a) в сети 4 часа назад
Бой Сима Был(a) в сети 4 часа назад
Dyde Max Был(a) в сети 5 часов назад
Михаил Шеленков Был(a) в сети 5 часов назад
Мистер Позитивчик Был(a) в сети 5 часов назад
Александр Коровин Был(a) в сети 5 часов назад
Gringo Jack Был(a) в сети 5 часов назад
Paradoks ParadoksOVICH Был(a) в сети 5 часов назад
Алексей Smoking Был(a) в сети 5 часов назад
Александр Чернышев Был(a) в сети 5 часов назад
Виктор Моисеенко Был(a) в сети 6 часов назад
Enotik Был(a) в сети 6 часов назад
Илья Коренец Был(a) в сети 6 часов назад
squad busters Был(a) в сети 6 часов назад
Анастасия Басова Был(a) в сети 6 часов назад
Савелий Пономарёв Был(a) в сети 6 часов назад
Игорь Свиридов Был(a) в сети 6 часов назад
Владимир Волошин Был(a) в сети 6 часов назад
степан толстоухов Был(a) в сети 6 часов назад
Максим Дип Был(a) в сети 6 часов назад
В ПУТЬ В ПУТЬ Был(a) в сети 6 часов назад
Nikolay Gevorgyan Был(a) в сети 6 часов назад
Vanek Kurnikov Был(a) в сети 6 часов назад
Александр Был(a) в сети 6 часов назад
Denys Kz Был(a) в сети 6 часов назад
Grull Был(a) в сети 7 часов назад
vkaremulin Был(a) в сети 7 часов назад
Наталья Лисицына Был(a) в сети 7 часов назад
максим Макс Был(a) в сети 7 часов назад
Илья Был(a) в сети 7 часов назад
NO Был(a) в сети 8 часов назад
Евгений Был(a) в сети 8 часов назад
xman manes Был(a) в сети 8 часов назад
Артур Томилин Был(a) в сети 8 часов назад
Давид Был(a) в сети 8 часов назад
issqvm Был(a) в сети 8 часов назад
Ярослав Был(a) в сети 8 часов назад
Ff Gg Был(a) в сети 8 часов назад
VideoFM [Нарезки] Был(a) в сети 9 часов назад
イロタナ リトラクタ Был(a) в сети 9 часов назад
Director Krennik Был(a) в сети 9 часов назад
Александр Губанов Был(a) в сети 10 часов назад
Екатерина Глухова Был(a) в сети 10 часов назад
Div Bytes Был(a) в сети 10 часов назад
Никита Зюкин Был(a) в сети 10 часов назад
Был(a) в сети 10 часов назад
netGio Был(a) в сети 11 часов назад
Артем Бирюля Был(a) в сети 12 часов назад
Маутрахал Алимджон Был(a) в сети 12 часов назад
Асхьаб Вараев Был(a) в сети 12 часов назад
дима фёдоров Был(a) в сети 12 часов назад
Ольга М Был(a) в сети 12 часов назад
Павел Пилипенко Был(a) в сети 12 часов назад
Давид Архип Был(a) в сети 13 часов назад
Тимерлан Зиннуров Был(a) в сети 13 часов назад
Инна Шава Был(a) в сети 14 часов назад
AMIR. TN Был(a) в сети 14 часов назад
14GO Был(a) в сети 17 часов назад
Глеб Иосиф Был(a) в сети 17 часов назад
hedackwood Был(a) в сети 17 часов назад
Accidentally Был(a) в сети 17 часов назад
просто Стас Был(a) в сети 17 часов назад
Dimas Был(a) в сети 17 часов назад
No ob Был(a) в сети 17 часов назад
DIMER Был(a) в сети 18 часов назад
Luis manuel baez Был(a) в сети 18 часов назад
Сергей Ефимов Был(a) в сети 18 часов назад
Вадим Имба Был(a) в сети 19 часов назад
Clopo Alex Был(a) в сети 19 часов назад
Alexandr Был(a) в сети 19 часов назад
HypoFen Был(a) в сети 19 часов назад
Климентий Был(a) в сети 19 часов назад
Список ботов
rambler (24)

Следите за нами!

Веб-доступ к ресурсам - как можно связать сайт и ресурсы

Описание

Сервер Multi Theft Auto предоставляет веб-интерфейс, который может различными способами использоваться ресурсами. Цель данной статьи - объяснить, что это за способы и как их можно использовать.


Обзор

У данной системы две ключевые составные части. Первая - стандартный веб-сервер, разрешающий веб-браузерам запрашивать страницы и файлы, которые входят в ресурсы. Вторая - система, разрешающая браузерам вызывать функции, которые вы экспортировали из своих ресурсов.

Страницы

Указание файла в meta

В meta-файле вашего ресурса вы можете указать доступность определенных файлов через веб-браузер. Чтобы это сделать, добавьте строку:

<html src="имяфайла.расширение" />

Затем вы сможете получить доступ к этому файлу через веб-браузер по адресу: http://адрес:порт/имяресурса/имяфайла.расширение

Например, на локальном сервере, использующем http-порт по умолчанию с запущенным webmap это: http://127.0.0.1:22005/webmap/map.htm


Бинарные файлы

Несмотря на обманчивое название, файлы, указанные с использованием узла html, могут быть любого типа. Если они являются бинарными (двоичными) файлами (типа картинок, zip-архивов), вам понадобится указать это в meta-файле, добавив raw="true" к узлу (строке с) html. Это значит, что файлы не будут предварительно обрабатываться перед отправкой веб-браузеру.

Например:

<html src="image.gif" raw="true" />

Анализируемые файлы

Если файл не имеет в meta-файле пометки "raw", тогда перед тем, как быть возвращенным клиенту, он проходит через процессор предварительной обработки. Этот препроцессор в целом работает как в PHP или ASP, но использует LUA. Вы можете встраивать стандартные MTA-скрипты вовнутрь HTML-страниц, имея контроль над выводом. Работают почти все стандартные функции MTA, плюс к ним добавляются еще некоторые специальные HTTP функции, такие как httpWrite - функция, выводящая текст в буфер.

Например:

<html>
    <body>
        Этот ресурс называется <* httpWrite( getResourceName(getThisResource()) ) *>
    </body>
<html>

Имеется краткая альтернатива (совместно с PHP и ASP) этого кода, а это значит, что код выше можно также записать как:

<html>
    <body>
        Этот ресурс называется <* = getResourceName(getThisResource()) *>
    </body>
<html>

Отдельно от HTTP функций, встроенный Lua имеет доступ к следующим переменным среды, содержащим информацию про то, как была запрошена страница:

  • table requestHeaders: Эта таблица содержит все заголовки, которые были запрошены со страницей. Вы можете установить возвращаемые заголовки через использование httpSetResponseHeader.
  • table form: Эта таблица содержит все данные формы, переданные странице с использованием HTTP POST совмщенно с любыми переменными, переданными в строке запроса с HTTP GET.
  • table cookies: Это таблица со всеми cookies. Вы можете редактировать cookies с использованием httpSetResponseCookie.
  • string hostname: Это строка, содержащая IP адрес или имя хоста, запросившего страницу.
  • string url: Это URL страницы.
  • account user: Это аккаунт текущего пользователя.

Важно заметить, что анализируемые файлы запущены в отдельной от остального кода вашего ресурса виртуальной машине. Следовательно, если вы хотите вызвать функцию из основного кода вашего ресурса, вам понадобится ее экспортировать и воспользоваться функцией call из анализируемого файла.

Вызовы

Вы можете указать, чтобы определенные экспортированные функции вашего ресурса могли быть вызваны через HTTP-интерфейс. Все SDK (указанные ниже) позволяют вам вызывать эти функции удаленно.

Для указания экспортированной функции, доступной по http, добавьте в файл meta.xml следующее:

<export function='functionName' http='true' />

Вы можете писать свою функцию как и любую другую обычную, возвращать сколько вам угодно много значений, включия таблицы, ресурсы и, что более важно, элементы. Тем не менее вы не можете возвращать другие значения 'userdata' типа xmlnodes или функций.

Протокол

Note: Вам не нужно этого знать за исключением случаев, если вы пишете свой собственный код HTTP-запроса. Можно просто воспользоваться одним из SDK, указанных ниже.

Вызовы выполняются через запрос http://<ваш IP>:<ваш порт>/<имя_ресурса>/call/<имя_экспортированной_функции> с использованием HTTP POST. Тело запроса должно быть JSON массивом из аргументов для функции.

Запрос возвратит JSON-массив значений, возвращенных функцией как HTTP-ответ.

Сервер поддерживает HTTP Basic идентификацию, вы можете конфигурировать доступ через ACL и встроенную систему аккаунтов.

Вызовы из HTTP веб-интерфейса

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

Во-первых, добавьте в файл meta.xml следующее:

<include resource="ajax" />

Во-вторых, в секцию <head> страницы, из который вы хотите производить вызов, добавьте следующее:

<* = exports.ajax:start(getResourceName(getThisResource())) *>

Наконец, вы можете создать на своей странице jаvascript-блок и вызывать свои функции практически так же, как если бы они были локальными. Единственное различие в том, что вызовы асинхронны - вам следует указывать callback-функцию последним аргументом для своего вызова. Она будет использоваться для возврата каких-либо значений основной функцией.

Вот простой пример.

meta.xml

<meta>
   <include resource="ajax" />
   <script src='code.lua' />
   <html src='page.htm' default='true' />
   <export function='showChatMessage' http='true' />
</meta>

code.lua

function showChatMessage ( message )
    outputChatBox ( message )
    return 5;
end

page.htm

<html>
    <head>
        <* = exports.ajax:start(getResourceName(getThisResource())) *>
        <script type='text/jаvascript'>
            function say() {
                var message = document.getElementById('message')
                showChatMessage ( message.value, 
                    function ( number ) {
                        // функция была вызвана и что-то вернула
                        message.value = "Функция вернула " + number;
                    }
                );
            }
        </script>
    </head>
    <body>
        <input type='text' id='message' /><input type='button' value='say' onclick='say();' />
    </body>
</html>

Вы можете видеть (довольно сложные) образцы того, как это можно сделать, в ресурсах resourcebrowserresourcemanager и webadmin.

Обезопашивание веб-интерфейса

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

  • general.http: Если выключен, никакие из http файлов не будут доступны (за исключением игровых клиентов)
  • resource.ResourceName: Если выключен, никакие из файлов ресурса не будут доступны
  • resource.ResourceName.file.FileName: Если выключен, файл с данным названием не будет доступен
  • resource.ResourceName.function.FunctionName: Если выключен, функцию невозможно будет вызвать

Они работают как и другие ACL права - вы можете их отключить для обычных пользователей и просто включить для группы Admin, или любой другой, которой вы пожелаете.

SDK

Доступно некоторое количество так называемых 'SDK', которые позволяют вам сообщаться с сервером через другие языки программирования. С их помощью вы (теоретически) можете писать целые игровые режимы. На практике, возможно, не очень хорошая идея, но это тем не менее является очень полезным для статистики и администрирования. PHP SDK - наиболее развитая версия. Не стесняйтесь модифицировать или создавать собственные SDK - если решитесь, пожалуйста, пришлите нам копию.





Автор публикации:

WiseBear WiseBear

Скачать:

Скачать

Дата:
Автор ресурса:

Автор не указан

Введение в скриптинг
Введение в скриптинг
12.02.2021, Статьи
Введение в скриптинг 2
Введение в скриптинг 2
24.12.2020, Клиенты MTA
Обучение LUA
Обучение LUA
24.12.2020, Статьи
Руководство по отладке - как найти ошибки в ваших скриптах
Руководство по отладке - как найти ошибки в ваших
24.12.2020, Статьи

Нет комментариев.Оставишь комментарий?