21 посетитель на сайте. Из них:
Пользователи1
Роботы20
Список пользователей
SpookeCraft Сейчас на сайте
Гордей Липин Был(a) в сети 4 минуты назад
폴리나 만들기 Был(a) в сети 4 минуты назад
Никита Карабанов Был(a) в сети 5 минут назад
Томас Был(a) в сети 6 минут назад
RUSSIA RP Был(a) в сети 6 минут назад
Марат Был(a) в сети 7 минут назад
ꜰɪɴᴅᴀʏ Был(a) в сети 8 минут назад
Demon Был(a) в сети 9 минут назад
Митя Кулешов Был(a) в сети 13 минут назад
Микки Крокодилов Был(a) в сети 14 минут назад
Ilya Andrianov Был(a) в сети 17 минут назад
Carpe Diem Был(a) в сети 19 минут назад
Мар'ян Цісельський Был(a) в сети 23 минуты назад
Николай Мат Был(a) в сети 24 минуты назад
Крысурсы Был(a) в сети 24 минуты назад
Илья Черницких Был(a) в сети 27 минут назад
Magician Был(a) в сети 30 минут назад
HACK HOST Был(a) в сети 31 минуту назад
Сергей Шемет Был(a) в сети 32 минуты назад
Даниил Девелоп Был(a) в сети 33 минуты назад
Dato Guliazali195 Был(a) в сети 34 минуты назад
Антон Ермаков Был(a) в сети 34 минуты назад
Sergo MSK Был(a) в сети 34 минуты назад
marat Был(a) в сети 37 минут назад
イロタナ リトラクタ Был(a) в сети 38 минут назад
Ab Antonian Был(a) в сети 41 минуту назад
Микола Был(a) в сети 44 минуты назад
Win Stalker Был(a) в сети 47 минут назад
Edgar1998 Был(a) в сети 48 минут назад
Влад Чечевичко Был(a) в сети 53 минуты назад
Rauan Был(a) в сети 56 минут назад
Anna Был(a) в сети 58 минут назад
Роман Кузнецов Был(a) в сети 1 час назад
Али Алиев Был(a) в сети 1 час назад
_Mishka _Tsyurniak_ Был(a) в сети 1 час назад
weaxlez Был(a) в сети 1 час назад
Егор Azurov Был(a) в сети 1 час назад
spacex0432 Был(a) в сети 1 час назад
Ислам Журтов Был(a) в сети 1 час назад
Нет Имени Был(a) в сети 1 час назад
REPORT98 Был(a) в сети 2 часа назад
Костик Хвостик Был(a) в сети 2 часа назад
Дмитрий Давыдов Был(a) в сети 2 часа назад
Исраил Цагаев Был(a) в сети 2 часа назад
Рома Барбуца Был(a) в сети 2 часа назад
Андрей Был(a) в сети 2 часа назад
Sda Esj Был(a) в сети 2 часа назад
David Был(a) в сети 2 часа назад
Роман Римар Был(a) в сети 2 часа назад
ARTEM_HOTIKOV Был(a) в сети 2 часа назад
Василий Влащицкий Был(a) в сети 2 часа назад
Санжар Был(a) в сети 2 часа назад
Сармат Магомедов Был(a) в сети 3 часа назад
Kk Qq Был(a) в сети 3 часа назад
Read Pestalic Был(a) в сети 3 часа назад
Rolan lordexkiq Был(a) в сети 3 часа назад
MAYOROV Был(a) в сети 3 часа назад
Nikita Smirnov Был(a) в сети 3 часа назад
абу абушка Был(a) в сети 3 часа назад
Даниил Новиков Был(a) в сети 3 часа назад
Корзун Олександр Был(a) в сети 3 часа назад
Кирилл Был(a) в сети 3 часа назад
Матвей Терещенко Был(a) в сети 3 часа назад
Hivers Nike Был(a) в сети 4 часа назад
Дегтярёв Максим Был(a) в сети 4 часа назад
Никита Вьюгин Был(a) в сети 4 часа назад
mka Был(a) в сети 4 часа назад
Пётр Улиткин Был(a) в сети 4 часа назад
Clopo Alex Был(a) в сети 4 часа назад
db9vol Был(a) в сети 4 часа назад
name no Был(a) в сети 4 часа назад
алекс Был(a) в сети 4 часа назад
KraKen Hack Был(a) в сети 4 часа назад
Иван Был(a) в сети 4 часа назад
Serhii Pashchenko Был(a) в сети 4 часа назад
WiseBear Был(a) в сети 4 часа назад
@lex Был(a) в сети 4 часа назад
Вова Пінчук Был(a) в сети 5 часов назад
NightKill Был(a) в сети 5 часов назад
Ражаб Был(a) в сети 5 часов назад
Вячеслав Иванов Был(a) в сети 5 часов назад
Levon Tumasyan Был(a) в сети 5 часов назад
Данил Степанов Был(a) в сети 5 часов назад
HepBHblu Был(a) в сети 5 часов назад
Толик Киорра Был(a) в сети 5 часов назад
Kolya32777 Был(a) в сети 5 часов назад
Илья Был(a) в сети 5 часов назад
Ganzes Ganzesov Был(a) в сети 6 часов назад
Егор Титаев Был(a) в сети 6 часов назад
Даниил Сила Был(a) в сети 6 часов назад
Никита Гусев Был(a) в сети 6 часов назад
nixware Был(a) в сети 6 часов назад
Бородатый КОМАНДОР Был(a) в сети 6 часов назад
Це Ре Был(a) в сети 6 часов назад
0987654321 Был(a) в сети 6 часов назад
TONI OWNPONI Был(a) в сети 6 часов назад
Medjc livu Был(a) в сети 6 часов назад
євген дубров Был(a) в сети 6 часов назад
Арсений Сарычев Был(a) в сети 6 часов назад
astor Был(a) в сети 6 часов назад
Пумбик Был(a) в сети 6 часов назад
HIRO VODOVOZ Был(a) в сети 7 часов назад
♡ Marlboro Gold ~ Company ♡ Был(a) в сети 7 часов назад
ARSKY Был(a) в сети 7 часов назад
destroy Был(a) в сети 7 часов назад
дима фёдоров Был(a) в сети 8 часов назад
Shin Inzerillo Был(a) в сети 8 часов назад
Артём Груздов Был(a) в сети 8 часов назад
Луна Волкова Был(a) в сети 8 часов назад
Проверка Был(a) в сети 9 часов назад
Дима Казаков Был(a) в сети 9 часов назад
Sanemi Shinazugawa Был(a) в сети 9 часов назад
Дима Гелевей Был(a) в сети 9 часов назад
DIMA_ BYH Был(a) в сети 10 часов назад
MOHAX MOHAX Был(a) в сети 10 часов назад
Виталий Шкарупа Был(a) в сети 10 часов назад
rfewreg Был(a) в сети 10 часов назад
Spidrow Был(a) в сети 10 часов назад
Fejér Alpár Был(a) в сети 10 часов назад
Димитрий Kавалерист Был(a) в сети 11 часов назад
Александр Кречун Был(a) в сети 12 часов назад
Дмитрий Ганев Был(a) в сети 14 часов назад
Тимур Нач Был(a) в сети 14 часов назад
Wananazo Был(a) в сети 14 часов назад
Darius Cruger Был(a) в сети 14 часов назад
Был(a) в сети 15 часов назад
Makeshov Был(a) в сети 15 часов назад
SnowyXOXO 사탄 Был(a) в сети 15 часов назад
R.S Tutorsツ Был(a) в сети 15 часов назад
Владислав Семиохин Был(a) в сети 16 часов назад
Віталій Мельничук Был(a) в сети 16 часов назад
AGGRESS1VEX Был(a) в сети 16 часов назад
Wander Был(a) в сети 16 часов назад
Александр Калашников Был(a) в сети 17 часов назад
James_ LP Был(a) в сети 17 часов назад
Владимир Был(a) в сети 17 часов назад
Рома Бунин Был(a) в сети 17 часов назад
Эрвин Был(a) в сети 17 часов назад
Donni Garcia Был(a) в сети 17 часов назад
Кирилл Семёнов Был(a) в сети 17 часов назад
Был(a) в сети 17 часов назад
mimiha Был(a) в сети 17 часов назад
Список ботов
rambler (19)

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

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

Описание

Сервер 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

Скачать:

Скачать

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

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

Mapmanager
Mapmanager
12.02.2021, Уроки Скриптинг Мта
Mapmanager 2
Mapmanager 2
12.02.2021, Уроки Скриптинг Мта
Как попасть в группу "Премиум
Как попасть в группу "Премиум
09.01.2021, Новости
pDownloader
pDownloader
02.11.2020, Скрипты Мта

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