12 посетителей на сайте. Из них:
Гости1
Роботы11
Список пользователей
TimaMagOut Был(a) в сети 5 минут назад
Daniil Suvorov Был(a) в сети 6 минут назад
Damien Tatarinoff Был(a) в сети 7 минут назад
Кирилл Морозов Был(a) в сети 11 минут назад
Базаев Денис Был(a) в сети 12 минут назад
Сеня Был(a) в сети 14 минут назад
Kenan B Был(a) в сети 17 минут назад
Даниил Кошкин Был(a) в сети 19 минут назад
Фейсит Про Был(a) в сети 23 минуты назад
Семен Был(a) в сети 24 минуты назад
JDM HARD Был(a) в сети 25 минут назад
WiseBear Был(a) в сети 26 минут назад
Катана Баженов Был(a) в сети 29 минут назад
Flesex Был(a) в сети 30 минут назад
[ГСЗФ] Tommy_Doms Был(a) в сети 32 минуты назад
Илья Был(a) в сети 39 минут назад
Булочка Жареная Был(a) в сети 40 минут назад
Tiktok Был(a) в сети 40 минут назад
Kirill Был(a) в сети 40 минут назад
Zona Был(a) в сети 42 минуты назад
KAAs Был(a) в сети 44 минуты назад
Александр Аозамасов Был(a) в сети 53 минуты назад
VALIK Был(a) в сети 56 минут назад
антон смольянинов Был(a) в сети 56 минут назад
ярослав стрельников Был(a) в сети 58 минут назад
Кирилл Батурин Был(a) в сети 1 час назад
Mysterio Был(a) в сети 1 час назад
butu111 Был(a) в сети 1 час назад
Бутебродник Был(a) в сети 1 час назад
Артем Банников Был(a) в сети 1 час назад
Кастилион Блек Был(a) в сети 1 час назад
арсений дпс Был(a) в сети 1 час назад
even Был(a) в сети 1 час назад
Алексей LooDrive Был(a) в сети 1 час назад
Никита Буян Был(a) в сети 1 час назад
ppp Был(a) в сети 1 час назад
Ага Был(a) в сети 1 час назад
НАБЛЮДАТЕЛЬ ВАС Был(a) в сети 2 часа назад
Mta Top Был(a) в сети 2 часа назад
Ivan Baev Был(a) в сети 2 часа назад
Шуленко Богдан Был(a) в сети 2 часа назад
Давид Ахмедов Был(a) в сети 2 часа назад
Иван Бытин Был(a) в сети 2 часа назад
Polik Был(a) в сети 2 часа назад
Makeshov Был(a) в сети 2 часа назад
Дзамболат Сидаков Был(a) в сети 2 часа назад
Arbbyt Был(a) в сети 2 часа назад
Андрій Лакуста Был(a) в сети 2 часа назад
oskar. Был(a) в сети 2 часа назад
Даник Топ Был(a) в сети 2 часа назад
Максим Непомнящий Был(a) в сети 3 часа назад
megatrottil Был(a) в сети 3 часа назад
Михаил Рыбак Был(a) в сети 3 часа назад
Ахмед Ахмедов Был(a) в сети 3 часа назад
zloidw Был(a) в сети 3 часа назад
Иван Бутенко Был(a) в сети 3 часа назад
Bozestvennyy Sportik Был(a) в сети 3 часа назад
Rom Ram Был(a) в сети 3 часа назад
Савелий Пономарёв Был(a) в сети 3 часа назад
de nis Был(a) в сети 3 часа назад
Ргрг Ргрг Был(a) в сети 3 часа назад
conexion Был(a) в сети 3 часа назад
Asliddin Akromov Был(a) в сети 3 часа назад
Константин Баталов Был(a) в сети 3 часа назад
Haron Был(a) в сети 3 часа назад
Clopo Alex Был(a) в сети 3 часа назад
ONARETEV Был(a) в сети 4 часа назад
Biff Legenda Был(a) в сети 4 часа назад
meow youtube Был(a) в сети 4 часа назад
ds Был(a) в сети 4 часа назад
Саша красный Был(a) в сети 4 часа назад
Grom_777 Valeron Был(a) в сети 4 часа назад
nite red Был(a) в сети 4 часа назад
Vlad Belka Был(a) в сети 4 часа назад
Fortnite Был(a) в сети 4 часа назад
EX EX Был(a) в сети 5 часов назад
Paulo Guilherme Был(a) в сети 5 часов назад
Вадии Хомутов Был(a) в сети 5 часов назад
Rudolf Был(a) в сети 5 часов назад
Артем Был(a) в сети 5 часов назад
Mefik_12 YT Был(a) в сети 5 часов назад
trava Был(a) в сети 5 часов назад
akisjocek2 akisjocek2 Был(a) в сети 5 часов назад
MACAN Был(a) в сети 5 часов назад
issqvm Был(a) в сети 5 часов назад
Том Март Был(a) в сети 6 часов назад
Святослав Наконечний Был(a) в сети 6 часов назад
Police Mirka Был(a) в сети 6 часов назад
I11bm I11bm Был(a) в сети 6 часов назад
Dement Был(a) в сети 6 часов назад
егор Был(a) в сети 6 часов назад
Владимир Баскаков Был(a) в сети 6 часов назад
Btoome Amerilovurs Был(a) в сети 6 часов назад
Плешков Кирилл Был(a) в сети 6 часов назад
Данил Был(a) в сети 6 часов назад
CaxaROkLR Был(a) в сети 7 часов назад
Nikita Bot Был(a) в сети 7 часов назад
SwiftKey Flow Был(a) в сети 7 часов назад
Serhii Pashchenko Был(a) в сети 7 часов назад
pain playa Был(a) в сети 7 часов назад
Dmitriy Polinok Был(a) в сети 7 часов назад
samp Net Был(a) в сети 7 часов назад
Ab Antonian Был(a) в сети 7 часов назад
Максим Олисов Был(a) в сети 7 часов назад
Александр Был(a) в сети 7 часов назад
Абама Like Был(a) в сети 7 часов назад
Luca Pawn Был(a) в сети 8 часов назад
Амогус Был(a) в сети 8 часов назад
Дауд Был(a) в сети 8 часов назад
Hoool Был(a) в сети 8 часов назад
Ражаб Магомедов Был(a) в сети 8 часов назад
Дмитрий Давыдов Был(a) в сети 8 часов назад
Dato Guliazali195 Был(a) в сети 8 часов назад
Fanis Б Был(a) в сети 8 часов назад
дидибок Был(a) в сети 8 часов назад
Макс Уваров Был(a) в сети 8 часов назад
Артем Москалев Был(a) в сети 9 часов назад
Олдмикс Ххшка Был(a) в сети 9 часов назад
Mich Был(a) в сети 9 часов назад
Владислав Ершихин Был(a) в сети 9 часов назад
Василий Был(a) в сети 9 часов назад
Valutko Был(a) в сети 9 часов назад
Селим Селимов Был(a) в сети 10 часов назад
DD _Oscar Был(a) в сети 10 часов назад
Григорий Ларьков Был(a) в сети 10 часов назад
Был(a) в сети 10 часов назад
rekl Был(a) в сети 10 часов назад
Марина Бахвалова Был(a) в сети 11 часов назад
POZET1V BLOCK STRIKE Был(a) в сети 11 часов назад
solfetka 12 Был(a) в сети 11 часов назад
Bonskiyy Был(a) в сети 11 часов назад
Joker Joker Был(a) в сети 11 часов назад
Был(a) в сети 11 часов назад
Асга Был(a) в сети 11 часов назад
Диана Матвеева Был(a) в сети 11 часов назад
Вввв Был(a) в сети 11 часов назад
Олексій Колованов Был(a) в сети 11 часов назад
0987654321 Был(a) в сети 12 часов назад
Никита Был(a) в сети 12 часов назад
Роберт Азатян Был(a) в сети 12 часов назад
Был(a) в сети 12 часов назад
Руслан Мехтиев Был(a) в сети 12 часов назад
Дамир Бакиров Был(a) в сети 12 часов назад
Михаил Смирнов Был(a) в сети 12 часов назад
Сережа Косов Был(a) в сети 12 часов назад
Владимир Волошин Был(a) в сети 12 часов назад
Путин Владимир Владимирович Был(a) в сети 13 часов назад
123 Был(a) в сети 13 часов назад
Алексей Был(a) в сети 13 часов назад
Паша Лапиев Был(a) в сети 14 часов назад
Simax Majestic Был(a) в сети 14 часов назад
Иван Был(a) в сети 14 часов назад
Barbaros Family Был(a) в сети 15 часов назад
Роман Хмелевский Был(a) в сети 15 часов назад
Дима Номонов Был(a) в сети 16 часов назад
Артем Был(a) в сети 17 часов назад
Standoff 2 Standoff 2 Был(a) в сети 17 часов назад
Евгений Федин Был(a) в сети 17 часов назад
ХИТРЫЙ Был(a) в сети 17 часов назад
Jonathan Luís Был(a) в сети 19 часов назад
Макс Шарнев Был(a) в сети 19 часов назад
elena Timosheshka Был(a) в сети 19 часов назад
Виталий Лежнев Был(a) в сети 19 часов назад
Нет Имени Был(a) в сети 20 часов назад
vdsfrwe wqeqewq Был(a) в сети 21 час назад
Fly0s Xd Был(a) в сети 21 час назад
LIMSUN Был(a) в сети 22 часа назад
Антон Прохоров Был(a) в сети 22 часа назад
Савелий Был(a) в сети 22 часа назад
Никита Матрунич Был(a) в сети 22 часа назад
Кавказ Серго Был(a) в сети 22 часа назад
Jaguar Hack Был(a) в сети 22 часа назад
Сын Мрази Был(a) в сети 23 часа назад
Felix Tymanov Был(a) в сети 23 часа назад
Список ботов
rambler (11)

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

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

Описание

Сервер 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, Статьи

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