HU/Resource Web Access: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
 
(12 intermediate revisions by 2 users not shown)
Line 10: Line 10:
</syntaxhighlight>
</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/>
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 helyileg futattott szerveren az alapéretelmezett http port-ot használja a webmap indításakor: http://127.0.0.1:22005/webmap/map.htm
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===
===Bináris fájlok===
Line 42: Line 42:
</syntaxhighlight>
</syntaxhighlight>


Aside from HTTP functions, embedded Lua has access to the following environment variables that contain information about how the page was requested:
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:
* table '''requestHeaders''': This is a table containing all the headers that were requested with the page. You can set returned headers using [[httpSetResponseHeader]].  
* '''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.  
* table '''form''': This is a table containing all the form data submitted to the page using HTTP POST combined with any variables passed in the querystring with HTTP GET.
* '''form''' tábla: Ez egy tábla, ami tartalmazza a HTTP GET query string és HTTP POST form paramétereket.
* table '''cookies''': This is a table of all the cookies. You can modify cookies using [[httpSetResponseCookie]].
* '''cookies''' tábla: Ez egy táblázat az összes cookie-ről. A [[httpSetResponseCookie]] használatával modosíthatja a cookie-ket.
* string '''hostname''': This is a string containing the IP address or hostname that requested the page.
* '''hostname''' string : Ez egy string, mely tartalmazza az oldal által kért IP címet, vagy hostname-t.
* string '''url''': This is the URL of the page.
* '''url''' string : Ez az oldal URL-je.
* account '''user''': This is the account of the current user.
* '''user''' account : Ez a jelenlegi felhasználó accountja.


It's important to note that parsed files are run in a separate virtual machine from the rest of your resource's code. As such, if you want to call a function in your resource's main code, you need to export the function and use the [[call]] function from your parsed file.
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==
==Calls==
You can specify that certain exported functions in your resource are able to be called from the HTTP interface. All the SDKs (listed below) allow you to call these functions from a remote location.  
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.  


To specify an exported http-accessible function, add the following to your meta.xml file:
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">
<syntaxhighlight lang="xml">
<export function='functionName' http='true' />
<export function='functionName' http='true' />
</syntaxhighlight>
</syntaxhighlight>


You can code your function just as you would any normal function, returning as many values as you want, including tables and resources and most importantly elements. You ''cannot'' however return other 'userdata' values such as [[xmlnode|xmlnodes]] or functions.
Í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.


===Protocol===
===Protokoll===
{{note_box|You don't need to know this unless you're writing your own HTTP request code. You can just use one of the [[#SDK|SDKs listed below]].}}
{{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.
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.
Line 158: Line 158:
==See Also==
==See Also==
[[callRemote]] - Allows game servers to call functions on PHP pages (with the PHP SDK) and on other game servers.
[[callRemote]] - Allows game servers to call functions on PHP pages (with the PHP SDK) and on other game servers.
[[Category:Scripting Concepts]]
 
[[Category:Translated/Scripting Concepts]]
 
[[en:Resource Web Access]]
[[en:Resource Web Access]]
[[fr:Ressource Acces Internet]]
[[hu:Resource Web Access]]
[[pt-br:Acesso_web_via_recursos]]
[[ru:Resource Web Access]]
[[ru:Resource Web Access]]
[[Category:Tutorials]]
[[Category:Tutorials]]


==Fordította==
==Fordította==
* '''''[https://wiki.multitheftauto.com/wiki/User:Surge Surge]'''''
* '''''[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