34 посетителя на сайте. Из них:
Пользователи5
Роботы29
Список пользователей
Weshnovsky Lord Сейчас на сайте
علی محمد شیخپور Сейчас на сайте
R.S Tutorsツ Сейчас на сайте
mustafa Был(a) в сети 4 минуты назад
Сергей Шемет Был(a) в сети 4 минуты назад
Максим Третьяков Был(a) в сети 8 минут назад
Дима Крут Был(a) в сети 18 минут назад
ALO SEKRET Был(a) в сети 22 минуты назад
Ваня Старков иван Был(a) в сети 29 минут назад
DeriMe Jol Был(a) в сети 33 минуты назад
tactical Был(a) в сети 41 минуту назад
Batuhan Sanlı Был(a) в сети 42 минуты назад
Ілюха Был(a) в сети 45 минут назад
Владимир Иванович Был(a) в сети 47 минут назад
Учет Расходов Был(a) в сети 1 час назад
Саша Тайченачев Был(a) в сети 1 час назад
пончик 2000 Был(a) в сети 1 час назад
Maxim Zalupkin Был(a) в сети 1 час назад
Александр Был(a) в сети 1 час назад
Хомячок ツ Был(a) в сети 1 час назад
Любимов Владимир Был(a) в сети 1 час назад
magasha drive Был(a) в сети 1 час назад
Саша Был(a) в сети 1 час назад
Nn Memfiz Был(a) в сети 1 час назад
Даниил Девелоп Был(a) в сети 1 час назад
Roma Roma Был(a) в сети 1 час назад
Куаныш Оралханнов Был(a) в сети 2 часа назад
Был(a) в сети 2 часа назад
db9vol Был(a) в сети 2 часа назад
Ximic8881 Был(a) в сети 2 часа назад
WiseBear Был(a) в сети 2 часа назад
Kuralay Был(a) в сети 2 часа назад
Богдан Был(a) в сети 2 часа назад
Arsenikum Был(a) в сети 2 часа назад
LIMMA 86 Был(a) в сети 2 часа назад
Merkz Live Был(a) в сети 2 часа назад
Pirzrak Был(a) в сети 2 часа назад
conexion Был(a) в сети 2 часа назад
Егор Дроботун Был(a) в сети 2 часа назад
KaRSHyGa BaKyTKaLieV Был(a) в сети 2 часа назад
Костя Абакумов Был(a) в сети 2 часа назад
Егор Был(a) в сети 2 часа назад
костя лось Был(a) в сети 3 часа назад
Саня Был(a) в сети 3 часа назад
Давид Романов Был(a) в сети 3 часа назад
Владимир Поделякин Был(a) в сети 3 часа назад
Сергей Ковалевский Был(a) в сети 3 часа назад
Misha Kalshev Был(a) в сети 3 часа назад
Иван Соболев Был(a) в сети 3 часа назад
Accidentally Был(a) в сети 3 часа назад
Был(a) в сети 3 часа назад
Tima Markov Был(a) в сети 3 часа назад
Pein Master Был(a) в сети 3 часа назад
shaffyuu Был(a) в сети 4 часа назад
Сеня Был(a) в сети 4 часа назад
Денис Был(a) в сети 4 часа назад
Squeezy Pp Был(a) в сети 4 часа назад
Polkovnik Был(a) в сети 4 часа назад
Дима Был(a) в сети 4 часа назад
Ваня Волков Был(a) в сети 4 часа назад
Rinat Был(a) в сети 4 часа назад
илья Был(a) в сети 4 часа назад
SHELD Был(a) в сети 5 часов назад
gsnv. Был(a) в сети 5 часов назад
Ferman Production! Был(a) в сети 5 часов назад
Okoldovany Был(a) в сети 5 часов назад
saddasda Был(a) в сети 5 часов назад
Grisha Lav Был(a) в сети 5 часов назад
Alex Zyntera Был(a) в сети 5 часов назад
Дмитрий Был(a) в сети 5 часов назад
Владимир Жданов Был(a) в сети 5 часов назад
Такси Максим Был(a) в сети 5 часов назад
Vekia45 Был(a) в сети 6 часов назад
Волк Был(a) в сети 6 часов назад
Илья Зонов Был(a) в сети 6 часов назад
Павел Евдокимов Был(a) в сети 6 часов назад
Евгений Холодов Был(a) в сети 6 часов назад
Лёша Кочергин Был(a) в сети 6 часов назад
maxxis Был(a) в сети 7 часов назад
Damentoo Был(a) в сети 7 часов назад
Микола Копистинський Был(a) в сети 7 часов назад
Asyrafi Hahaha Был(a) в сети 7 часов назад
Makeshov Был(a) в сети 7 часов назад
TechTrend Был(a) в сети 7 часов назад
V_a_l_e_r_y_44_ Был(a) в сети 8 часов назад
Arizona Toxic Был(a) в сети 8 часов назад
Андрій Лакуста Был(a) в сети 8 часов назад
Кирилл Чебочкин Был(a) в сети 9 часов назад
егор дергач Был(a) в сети 9 часов назад
Сергей Медведев Был(a) в сети 9 часов назад
davad dav Был(a) в сети 9 часов назад
Dato Guliazali195 Был(a) в сети 10 часов назад
Захар Был(a) в сети 10 часов назад
Крысурсы Был(a) в сети 10 часов назад
Малик Алимамедов Был(a) в сети 10 часов назад
Sergo MSK Был(a) в сети 10 часов назад
Никита Карабанов Был(a) в сети 11 часов назад
Алексей Был(a) в сети 12 часов назад
Qusii 111 Был(a) в сети 12 часов назад
Абдуррахман Гаджиев Был(a) в сети 13 часов назад
Sirena game Был(a) в сети 13 часов назад
Хирадманд Рахматов Был(a) в сети 13 часов назад
Mirze Был(a) в сети 13 часов назад
TOKSYCHNIE Был(a) в сети 14 часов назад
Andrej Simovic Был(a) в сети 14 часов назад
Deved Был(a) в сети 14 часов назад
Ahmedin Zuličević Был(a) в сети 14 часов назад
Анатолий Бандит Был(a) в сети 15 часов назад
Дмитрий Киричук Был(a) в сети 15 часов назад
Badabum Tv Live Был(a) в сети 16 часов назад
Misha Bos Был(a) в сети 16 часов назад
Another Был(a) в сети 17 часов назад
Том Паттисон Был(a) в сети 17 часов назад
Ayasofya Gaming AG Был(a) в сети 17 часов назад
Ostap Был(a) в сети 17 часов назад
Список ботов
rambler (29)

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

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

Описание

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

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