HU/Resource Web Access: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Created page with "TODO")
 
mNo edit summary
 
(24 intermediate revisions by 4 users not shown)
Line 1: Line 1:
TODO
A Multi Theft Auto Server egy olyan webes felületet biztosít, melyet a resource-ok sokféle módon tudnak használni. Ennek a dokumentumnak az a célja, hogy elmagyarázza mik ezek a módszerek, és hogy hogyan kell őket használni.
==Összefoglalás==
Két fontos rész alkotja ezt a rendszert. Az első az egy szabványos webszerver, amely lehetővé teszi a webböngészők számára, hogy oldalakat, és fájlokat kérjenek a resource-ból. A második egy olyan rendszer, amely lehetővé teszi a webböngészők számára, hogy a resource-ból exportált function-öket meghívja.
 
==Oldalak==
===A fájl megadása a meta-ban===
Megadhatja a resource meta fájljában, hogy bizonyos fájlok hozzáférhetőek legyenek a webszerveren keresztül. Ehhez adja hozzá ezt a sort:
<syntaxhighlight lang="xml">
<html src="filename.ext" />
</syntaxhighlight>
Ezt követően elérheti ezt a fájlt a webböngészőn keresztül: http://host:port/resourcename/filename.ext<br/>
Például, egy localisan futattott szerveren az alapéretelmezett http port-ot használja a webmap indításakor: http://127.0.0.1:22005/webmap/map.htm
 
===Bináris fájlok===
A félrevezető név ellenére a ''html'' segítségével megadott fájlok bármilyen típusúak lehetnek. Ha ezek bináris fájlok (például képek, zip fájlok), akkor meg kell adnia ezt a meta fájlban a ''raw="true"'' hozzáadásával a ''html''-hez. Ez azt jelenti, hogy a fájlok nem kerülnek előfeldolgozásra mielőtt a webböngészőnek küldenénk.
 
Például:
<syntaxhighlight lang="xml">
<html src="image.gif" raw="true" />
</syntaxhighlight>
 
===Parsed files===
Ha egy fájlt nem adjuk meg a meta-ban, mint "raw", akkor az végig megy egy előfeldolgozáson mielőtt a klienshez visszatérne. Ez az előfeldolgosás hasonlóképp műkodik, mint a PHP-nál vagy ASP-nél, csak LUA-t használ. A szabványos MTA szkripteket beágyazhatja a HTML oldalakba, ellenőrizve a kimenetet. Szinte az összes szabványos MTA funkciók működnek, plusz néhány speciális [[Template:HTTP functions|HTTP funkciók]], mint például [[httpWrite]], ez egy olyan function, amely szöveget küld a pufferbe.
 
Például:
<syntaxhighlight lang="html4strict">
<html>
    <body>
        This resource is called <* httpWrite( getResourceName(getThisResource()) ) *>
    </body>
<html>
</syntaxhighlight>
 
Itt egy rövidítés (gyakori a PHP-ban és az ASP-ben) azaz, a fenti kódot írhajta így is:
 
<syntaxhighlight lang="html4strict">
<html>
    <body>
        This resource is called <* = getResourceName(getThisResource()) *>
    </body>
<html>
</syntaxhighlight>
 
A HTTP funkcióktól eltekintve a beágyazott Lua a következő környezeti változókhoz fér hozzá, amelyek információkat tartalmaznak az oldalak kérésével kapcsolatban:
* '''requestHeaders''' tábla: Ez a tábla tartalmazza az összes fejlécet, melyek az oldal által lettek lekérdezve. A visszaadott fejléceket beállíthatja a  [[httpSetResponseHeader]] segítségével.
* '''form''' tábla: Ez egy tábla, ami tartalmazza a HTTP GET query string és HTTP POST form paramétereket.
* '''cookies''' tábla: Ez egy táblázat az összes cookie-ről. A [[httpSetResponseCookie]] használatával modosíthatja a cookie-ket.
* '''hostname''' string : Ez egy string, mely tartalmazza az oldal által kért IP címet, vagy hostname-t.
* '''url''' string : Ez az oldal URL-je.
* '''user''' account : Ez a jelenlegi felhasználó accountja.
 
Fontos megjegyezni, hogy az elemzett fájlok külön virtuális gépen futnak a resource kódjának többi részétől. Ha egy function-t szeretne meghívni a resource fő kódjában, akkor exportálnia kell a function-t az elemzett fájlból a [[call]] function használatával.
 
==Calls==
Megadhatja, hogy a resourceban lévő exportált függvények meghívhatóak legyenek a HTTP felületről. Az összes SDKs (lentebb listázva) lehetővé teszi, hogy ezeket a függvényeket meghívja egy távolabbi helyről.
 
Ahhoz, hogy egy http-n keresztül elérhető függvényt létrehozzon, adja hozzá a következő sort a meta.xml fájlba:
<syntaxhighlight lang="xml">
<export function='functionName' http='true' />
</syntaxhighlight>
 
Írhatja úgy is a függvényét, mint bármilyen normális függvényt, visszakapva annyi értéket, amennyit csak szeretne, beleértve a táblákat, resource-okat, és a legfontosabb elemeket. Nem térhet vissza más userdata értékkel, mint pl az [[xmlnode|xmlnode]], vagy függvények.
 
===Protokoll===
{{note_box_hu|Nem szükséges tudnia ezeket, hacsak nem a saját HTTP kódját írja. Csak az alábbiakban [[#SDK|felsorolt ​​SDK-k]] egyikét használhatja.}}
 
Calls are done by requesting ''<nowiki>http://<your IP>:<your port>/<resource_name>/call/<exported_function_name></nowiki>'' using HTTP POST. The body of the request should be a JSON array of the arguments for the function.
 
The request will return a JSON array of the value(s) returned from the function as the HTTP response.
 
The server supports HTTP Basic authentication and you can configure access via the ACL and the built-in accounts system.
 
===Calls from the HTTP web interface===
Using calls is probably easiest from the web interface and can be done almost seamlessly.
 
First, add this to your meta.xml file:
<syntaxhighlight lang="xml">
<include resource="ajax" />
</syntaxhighlight>
 
Secondly, add the following to the <head> section of the page you want to call from:
<syntaxhighlight lang="lua">
<* = exports.ajax:start(getResourceName(getThisResource())) *>
</syntaxhighlight>
 
Finally, you can create a javascript block in your page and call your functions almost as if they were local. The only difference is that the calls are aysnchronous - you should specify a callback function as the last argument for your call. This is called when the function returns.
 
Here's a simple example.
 
'''meta.xml'''
<syntaxhighlight lang="xml">
<meta>
  <include resource="ajax" />
  <script src='code.lua' />
  <html src='page.htm' default='true' />
  <export function='showChatMessage' http='true' />
</meta>
</syntaxhighlight>
 
'''code.lua'''
<syntaxhighlight lang="lua">
function showChatMessage ( message )
    outputChatBox ( message )
    return 5;
end
</syntaxhighlight>
 
'''page.htm'''
<syntaxhighlight lang="html4strict">
<html>
    <head>
        <* = exports.ajax:start(getResourceName(getThisResource())) *>
        <script type='text/javascript'>
            function say() {
                var message = document.getElementById('message')
                showChatMessage ( message.value,
                    function ( number ) {
                        // the function has been called and returned something
                        message.value = "The function returned " + number;
                    }
                );
            }
        </script>
    </head>
    <body>
        <input type='text' id='message' /><input type='button' value='say' onclick='say();' />
    </body>
</html>
</syntaxhighlight>
 
You can see (fairly complex) examples of how this can be done in the resources ''resourcebrowser'', ''resourcemanager'' and ''webadmin''.
 
==Securing the web interface==
The [[ACL]] has a number of rights that can affect what files can be accessed.
{{Deprecated feature|3.0139|1.3.1|
* general.http: If disabled, none of the http files can be accessed (except by game clients)
** '''Important Note''': ''If 'general.http' is enabled, http access to all resources (for that ACL) is enabled by default. To disable http access you have to explicitly block access to resources that contain exported http functions.''
** '''Important Note''': ''If 'general.http' is enabled on an ACL which has a user with no password (i.e. user.* or user.guest or user.http_guest), it is essential that you explicitly block access to resources that contain exported http functions.''
* resource.'''ResourceName''': If disabled, none of the files in the resource can be accessed
* resource.'''ResourceName'''.file.'''FileName''': If disabled, the file named cannot be accessed
* resource.'''ResourceName'''.function.'''FunctionName''': If disabled, the function cannot be called
These work as with other ACL rights - you can disable them for normal users and just enable them for Admin users, or any other group of users you wish.
}}
{{New_feature|3.0139|1.3.1|
* '''resource.ResourceName.http''': If enabled, the resource will be accessible from http://server_ip:22005/ResourceName/
This works as with other ACL rights - You can enable it just for Admin users, or any other group of users you wish.
}}
 
==SDK==
There are a number of so-called 'SDKs' available that allow you to interface with the server from other programming languages. With these you could (in theory) write whole gamemodes. In practice this is probably a bad idea, but it is useful for statistics and administration. The PHP SDK is the most developed version. Feel free to modify or create your own SDKs - if you do please send us a copy.
 
* [[JavaSDK|Java SDK]]
* [[Javascript SDK]]
* [[Perl SDK]]
* [[PHP SDK]]
* [[CSharp SDK|C# SDK]]
 
==See Also==
[[callRemote]] - Allows game servers to call functions on PHP pages (with the PHP SDK) and on other game servers.
 
[[Category:Translated/Scripting Concepts]]
 
[[en:Resource Web Access]]
[[fr:Ressource Acces Internet]]
[[hu:Resource Web Access]]
[[pt-br:Acesso_web_via_recursos]]
[[ru:Resource Web Access]]
 
[[Category:Tutorials]]
 
==Fordította==
* '''''[https://wiki.multitheftauto.com/wiki/User:Surge Surge]'''''

Latest revision as of 21:49, 21 February 2021

A Multi Theft Auto Server egy olyan webes felületet biztosít, melyet a resource-ok sokféle módon tudnak használni. Ennek a dokumentumnak az a célja, hogy elmagyarázza mik ezek a módszerek, és hogy hogyan kell őket használni.

Összefoglalás

Két fontos rész alkotja ezt a rendszert. Az első az egy szabványos webszerver, amely lehetővé teszi a webböngészők számára, hogy oldalakat, és fájlokat kérjenek a resource-ból. A második egy olyan rendszer, amely lehetővé teszi a webböngészők számára, hogy a resource-ból exportált function-öket meghívja.

Oldalak

A fájl megadása a meta-ban

Megadhatja a resource meta fájljában, hogy bizonyos fájlok hozzáférhetőek legyenek a webszerveren keresztül. Ehhez adja hozzá ezt a sort:

<html src="filename.ext" />

Ezt követően elérheti ezt a fájlt a webböngészőn keresztül: http://host:port/resourcename/filename.ext
Például, egy localisan futattott szerveren az alapéretelmezett http port-ot használja a webmap indításakor: http://127.0.0.1:22005/webmap/map.htm

Bináris fájlok

A félrevezető név ellenére a html segítségével megadott fájlok bármilyen típusúak lehetnek. Ha ezek bináris fájlok (például képek, zip fájlok), akkor meg kell adnia ezt a meta fájlban a raw="true" hozzáadásával a html-hez. Ez azt jelenti, hogy a fájlok nem kerülnek előfeldolgozásra mielőtt a webböngészőnek küldenénk.

Például:

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

Parsed files

Ha egy fájlt nem adjuk meg a meta-ban, mint "raw", akkor az végig megy egy előfeldolgozáson mielőtt a klienshez visszatérne. Ez az előfeldolgosás hasonlóképp műkodik, mint a PHP-nál vagy ASP-nél, csak LUA-t használ. A szabványos MTA szkripteket beágyazhatja a HTML oldalakba, ellenőrizve a kimenetet. Szinte az összes szabványos MTA funkciók működnek, plusz néhány speciális HTTP funkciók, mint például httpWrite, ez egy olyan function, amely szöveget küld a pufferbe.

Például:

<html>
    <body>
        This resource is called <* httpWrite( getResourceName(getThisResource()) ) *>
    </body>
<html>

Itt egy rövidítés (gyakori a PHP-ban és az ASP-ben) azaz, a fenti kódot írhajta így is:

<html>
    <body>
        This resource is called <* = getResourceName(getThisResource()) *>
    </body>
<html>

A HTTP funkcióktól eltekintve a beágyazott Lua a következő környezeti változókhoz fér hozzá, amelyek információkat tartalmaznak az oldalak kérésével kapcsolatban:

  • requestHeaders tábla: Ez a tábla tartalmazza az összes fejlécet, melyek az oldal által lettek lekérdezve. A visszaadott fejléceket beállíthatja a httpSetResponseHeader segítségével.
  • form tábla: Ez egy tábla, ami tartalmazza a HTTP GET query string és HTTP POST form paramétereket.
  • cookies tábla: Ez egy táblázat az összes cookie-ről. A httpSetResponseCookie használatával modosíthatja a cookie-ket.
  • hostname string : Ez egy string, mely tartalmazza az oldal által kért IP címet, vagy hostname-t.
  • url string : Ez az oldal URL-je.
  • user account : Ez a jelenlegi felhasználó accountja.

Fontos megjegyezni, hogy az elemzett fájlok külön virtuális gépen futnak a resource kódjának többi részétől. Ha egy function-t szeretne meghívni a resource fő kódjában, akkor exportálnia kell a function-t az elemzett fájlból a call function használatával.

Calls

Megadhatja, hogy a resourceban lévő exportált függvények meghívhatóak legyenek a HTTP felületről. Az összes SDKs (lentebb listázva) lehetővé teszi, hogy ezeket a függvényeket meghívja egy távolabbi helyről.

Ahhoz, hogy egy http-n keresztül elérhető függvényt létrehozzon, adja hozzá a következő sort a meta.xml fájlba:

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

Írhatja úgy is a függvényét, mint bármilyen normális függvényt, visszakapva annyi értéket, amennyit csak szeretne, beleértve a táblákat, resource-okat, és a legfontosabb elemeket. Nem térhet vissza más userdata értékkel, mint pl az xmlnode, vagy függvények.

Protokoll

Megjegyzés: Nem szükséges tudnia ezeket, hacsak nem a saját HTTP kódját írja. Csak az alábbiakban felsorolt ​​SDK-k egyikét használhatja.

Calls are done by requesting http://<your IP>:<your port>/<resource_name>/call/<exported_function_name> using HTTP POST. The body of the request should be a JSON array of the arguments for the function.

The request will return a JSON array of the value(s) returned from the function as the HTTP response.

The server supports HTTP Basic authentication and you can configure access via the ACL and the built-in accounts system.

Calls from the HTTP web interface

Using calls is probably easiest from the web interface and can be done almost seamlessly.

First, add this to your meta.xml file:

<include resource="ajax" />

Secondly, add the following to the <head> section of the page you want to call from:

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

Finally, you can create a javascript block in your page and call your functions almost as if they were local. The only difference is that the calls are aysnchronous - you should specify a callback function as the last argument for your call. This is called when the function returns.

Here's a simple example.

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/javascript'>
            function say() {
                var message = document.getElementById('message')
                showChatMessage ( message.value, 
                    function ( number ) {
                        // the function has been called and returned something
                        message.value = "The function returned " + number;
                    }
                );
            }
        </script>
    </head>
    <body>
        <input type='text' id='message' /><input type='button' value='say' onclick='say();' />
    </body>
</html>

You can see (fairly complex) examples of how this can be done in the resources resourcebrowser, resourcemanager and webadmin.

Securing the web interface

The ACL has a number of rights that can affect what files can be accessed.

This works as with other ACL rights - You can enable it just for Admin users, or any other group of users you wish.

SDK

There are a number of so-called 'SDKs' available that allow you to interface with the server from other programming languages. With these you could (in theory) write whole gamemodes. In practice this is probably a bad idea, but it is useful for statistics and administration. The PHP SDK is the most developed version. Feel free to modify or create your own SDKs - if you do please send us a copy.

See Also

callRemote - Allows game servers to call functions on PHP pages (with the PHP SDK) and on other game servers.

Fordította