31 посетитель на сайте. Из них:
Пользователи5
Гости2
Роботы24
Список пользователей
Артемиз Сейчас на сайте
Олег Коваленко Сейчас на сайте
Nurlan Rzabeyli Сейчас на сайте
Кірюхін Максим Сейчас на сайте
24kvan Сейчас на сайте
Алексей Конев Был(a) в сети 5 минут назад
Михаил Дмитриевич Был(a) в сети 8 минут назад
АЛЕВТИНА Валенкова Был(a) в сети 8 минут назад
Rauan Был(a) в сети 10 минут назад
. Был(a) в сети 11 минут назад
BORZ Был(a) в сети 13 минут назад
Fade C-OPS Был(a) в сети 15 минут назад
Redbyl Был(a) в сети 25 минут назад
11e1 Был(a) в сети 29 минут назад
HiTmAn_7777 Был(a) в сети 33 минуты назад
DIBROL Был(a) в сети 44 минуты назад
HACK HOST Был(a) в сети 49 минут назад
Hipex Pombao Был(a) в сети 52 минуты назад
# Dr5k1N Был(a) в сети 55 минут назад
Duma 𖦏 Был(a) в сети 57 минут назад
Михаил Потапыч Был(a) в сети 1 час назад
Rafael Gc Был(a) в сети 1 час назад
Асхьаб Вараев Был(a) в сети 1 час назад
Маркіян Мельник Был(a) в сети 1 час назад
Роман Римар Был(a) в сети 1 час назад
Владислав Синявский Был(a) в сети 1 час назад
Константин Клочков Был(a) в сети 1 час назад
AKULA Был(a) в сети 2 часа назад
Clopo Alex Был(a) в сети 2 часа назад
Никита Незлобин Был(a) в сети 2 часа назад
Equanimity Был(a) в сети 2 часа назад
ХЗ Был(a) в сети 2 часа назад
medison Был(a) в сети 2 часа назад
MILERKILLER Был(a) в сети 2 часа назад
Dima Федоренко Был(a) в сети 2 часа назад
Алексей Был(a) в сети 2 часа назад
WiseBear Был(a) в сети 2 часа назад
Алексей Алексей Был(a) в сети 2 часа назад
black Sdp Был(a) в сети 2 часа назад
митя педросян Был(a) в сети 3 часа назад
Владислав Брянский Был(a) в сети 3 часа назад
Hoshi Был(a) в сети 3 часа назад
Sasha Peresvetik Был(a) в сети 3 часа назад
Danger Karleon Был(a) в сети 3 часа назад
destroy Был(a) в сети 3 часа назад
senya holod Был(a) в сети 3 часа назад
Николай Капалин Был(a) в сети 3 часа назад
Артём Артёмов Был(a) в сети 3 часа назад
ADR Был(a) в сети 3 часа назад
Александр Flow Был(a) в сети 3 часа назад
Gretta Frovsky Был(a) в сети 3 часа назад
Demon Был(a) в сети 3 часа назад
Maks Kolcov Был(a) в сети 3 часа назад
Black Wolf Был(a) в сети 3 часа назад
Artem35745687648 Был(a) в сети 3 часа назад
0987654321 Был(a) в сети 4 часа назад
Артем Бахия Был(a) в сети 4 часа назад
Sda Esj Был(a) в сети 4 часа назад
Влад Был(a) в сети 4 часа назад
Илья Был(a) в сети 4 часа назад
Sharing Был(a) в сети 4 часа назад
Ximic8881 Был(a) в сети 4 часа назад
Айнур Валеев Был(a) в сети 4 часа назад
Anton Lyavin Был(a) в сети 4 часа назад
Dato Guliazali195 Был(a) в сети 4 часа назад
Sergo MSK Был(a) в сети 4 часа назад
Артем Фукаляк Был(a) в сети 4 часа назад
Дима Борисов Был(a) в сети 4 часа назад
Vadik Nikitin Был(a) в сети 4 часа назад
Kolya32777 Был(a) в сети 4 часа назад
Matvey Был(a) в сети 4 часа назад
Макс Уваров Был(a) в сети 4 часа назад
азіз Был(a) в сети 4 часа назад
Айбол Князбаев Был(a) в сети 4 часа назад
David Был(a) в сети 5 часов назад
Thang Le Был(a) в сети 5 часов назад
Holandec Captain Был(a) в сети 5 часов назад
Вася Михайлюк Был(a) в сети 5 часов назад
Назар Галковский Был(a) в сети 5 часов назад
Jedelmen Jedelmen Был(a) в сети 5 часов назад
Артемий Фролов Был(a) в сети 5 часов назад
Егор Ванилин Был(a) в сети 5 часов назад
servers minecraft Был(a) в сети 5 часов назад
Darius Cruger Был(a) в сети 5 часов назад
mazi kh Был(a) в сети 5 часов назад
Мохьмад Борз Был(a) в сети 5 часов назад
Никита Буян Был(a) в сети 6 часов назад
Взрыв Эмоций Был(a) в сети 6 часов назад
Олег Хардлайн Был(a) в сети 6 часов назад
Repx Был(a) в сети 6 часов назад
Medjc livu Был(a) в сети 6 часов назад
MAYOROV Был(a) в сети 6 часов назад
ALEX KULISH Был(a) в сети 6 часов назад
ИВан Пакер Был(a) в сети 6 часов назад
45mobot Был(a) в сети 7 часов назад
Женя Трефилов Был(a) в сети 7 часов назад
Федор Капустин Был(a) в сети 7 часов назад
hard Был(a) в сети 7 часов назад
Rufat85 Стримы Был(a) в сети 7 часов назад
Коля Ангеловский Был(a) в сети 7 часов назад
Benny Был(a) в сети 7 часов назад
Zoli GO Был(a) в сети 7 часов назад
Овоу Оакл Был(a) в сети 7 часов назад
miks Был(a) в сети 8 часов назад
HepBHblu Был(a) в сети 8 часов назад
GREENDNS Был(a) в сети 8 часов назад
Евгений Дарков Был(a) в сети 8 часов назад
Алёша Сажин Был(a) в сети 8 часов назад
Был(a) в сети 8 часов назад
Daniel Mos Был(a) в сети 8 часов назад
Арсений Был(a) в сети 8 часов назад
db9vol Был(a) в сети 8 часов назад
obito64 Был(a) в сети 9 часов назад
Roders Games Был(a) в сети 9 часов назад
Дмитрий Давыдов Был(a) в сети 9 часов назад
MINDOR ROLEPLAY Был(a) в сети 9 часов назад
ИВАН Был(a) в сети 9 часов назад
Сергей Шемет Был(a) в сети 10 часов назад
HIRO VODOVOZ Был(a) в сети 10 часов назад
atarkin2 Был(a) в сети 11 часов назад
Евгений Иванцов Был(a) в сети 11 часов назад
Егор Был(a) в сети 11 часов назад
and0110 Был(a) в сети 11 часов назад
SabirQasim Mahmudzade Был(a) в сети 11 часов назад
Boston City Был(a) в сети 11 часов назад
XaNzAdA Был(a) в сети 11 часов назад
Даниил Девелоп Был(a) в сети 13 часов назад
Олександр Торнадо Был(a) в сети 13 часов назад
Гуг Гуг Был(a) в сети 13 часов назад
Denis Gromov Был(a) в сети 14 часов назад
イロタナ リトラクタ Был(a) в сети 15 часов назад
Night Был(a) в сети 15 часов назад
Hinata Huyga Был(a) в сети 16 часов назад
Noel Stollen Был(a) в сети 16 часов назад
Александр Пушкин Был(a) в сети 17 часов назад
Donni Garcia Был(a) в сети 18 часов назад
Gaijin Был(a) в сети 19 часов назад
Zendaya Coleman Был(a) в сети 19 часов назад
Иван Иманалиев Был(a) в сети 19 часов назад
Иван Какаев Был(a) в сети 19 часов назад
Соло Ананас Был(a) в сети 20 часов назад
Льоша Пупко Был(a) в сети 20 часов назад
SaneX Был(a) в сети 20 часов назад
Хамзат Был(a) в сети 21 час назад
Victor Был(a) в сети 21 час назад
Игорь Брянский Был(a) в сети 21 час назад
Keyden Gutierrez Был(a) в сети 21 час назад
Alex Был(a) в сети 21 час назад
Список ботов
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

Скачать:

Скачать

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

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

Веб-доступ к ресурсам - как можно связать сайт и ресурсы
Mapmanager
Mapmanager
12.02.2021, Уроки Скриптинг Мта
Mapmanager 2
Mapmanager 2
12.02.2021, Уроки Скриптинг Мта
Как попасть в группу "Премиум
Как попасть в группу "Премиум
09.01.2021, Новости
pDownloader
pDownloader
02.11.2020, Скрипты Мта

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