<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/wiki/DE/Resource_Web_Access?action=history&amp;feed=atom</id>
	<title>DE/Resource Web Access - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/wiki/DE/Resource_Web_Access?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=DE/Resource_Web_Access&amp;action=history"/>
	<updated>2026-05-30T02:52:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=DE/Resource_Web_Access&amp;diff=75210&amp;oldid=prev</id>
		<title>Shady: The translations I make are copy-paste, it forces me to make changes on the site because I don't want even the slightest mistake. Best regards Shady</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=DE/Resource_Web_Access&amp;diff=75210&amp;oldid=prev"/>
		<updated>2022-06-30T20:47:16Z</updated>

		<summary type="html">&lt;p&gt;The translations I make are copy-paste, it forces me to make changes on the site because I don&amp;#039;t want even the slightest mistake. Best regards Shady&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Der Multi Theft Auto Server bietet eine Weboberfläche, die Ressourcen auf verschiedene Weise nutzen können. Dieses Dokument soll erklären, was diese Möglichkeiten sind und wie man sie nutzt.&lt;br /&gt;
{{Hinweis: Wenn Sie nach einer Anleitung suchen, wie Sie den Webbrowser im Spiel benutzen und Webseiten mit CEF erstellen können, besuchen Sie bitte stattdessen [[CEF_Tutorial|CEF Tutorial]].}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Dieses System besteht aus zwei Hauptbestandteilen. Der erste ist ein Standard-Webserver, der es Webbrowsern ermöglicht, Seiten und Dateien anzufordern, die Sie in einer Ressource haben. Der zweite ist ein System, das es Webbrowsern ermöglicht, Funktionen aufzurufen, die Sie aus Ihrer Ressource exportiert haben.&lt;br /&gt;
&lt;br /&gt;
==Pages==&lt;br /&gt;
===Specifying a file in the meta===&lt;br /&gt;
Sie können in der Metadatei Ihrer Ressource angeben, dass bestimmte Dateien über den Webserver zugänglich sind. Zu diesem Zweck fügen Sie eine Zeile hinzu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html src=&amp;quot;filename.ext&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Sie können diese Datei dann über Ihren Webbrowser aufrufen: http://host:port/resourcename/filename.ext&amp;lt;br/&amp;gt;&lt;br /&gt;
Zum Beispiel auf einem lokal gehosteten Server, der den Standard-HTTP-Port verwendet und die Webmap gestartet hat: http://127.0.0.1:22005/webmap/map.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Binary files===&lt;br /&gt;
Trotz des irreführenden Namens können Dateien, die mit dem html-Knoten angegeben werden, von beliebigem Typ sein. Handelt es sich um Binärdateien (z. B. Bilder, Zip-Dateien), müssen Sie dies in der Metadatei angeben, indem Sie dem Knoten &amp;quot;html&amp;quot; den Zusatz &amp;quot;raw=&amp;quot;true&amp;quot; hinzufügen. Dies bedeutet, dass die Dateien nicht vorverarbeitet werden, bevor sie an den Webbrowser gesendet werden.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html src=&amp;quot;image.gif&amp;quot; raw=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parsed files===&lt;br /&gt;
Wenn eine Datei in der Metadatei nicht als &amp;quot;raw&amp;quot; angegeben ist, wird sie durch einen Präprozessor geleitet, bevor sie an den Client zurückgegeben wird. Dieser Präprozessor funktioniert ähnlich wie PHP oder ASP, verwendet aber Lua. Sie können Standard-MTA-Skripte in HTML-Seiten einbetten und so die Ausgabe steuern. Es funktionieren fast alle Standard-MTA-Funktionen sowie eine Reihe spezieller [[Template:HTTP functions|HTTP Functions]], wie z. B. [[httpWrite]], eine Funktion, die Text in den Puffer ausgibt.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        This resource is called &amp;lt;* httpWrite( getResourceName(getThisResource()) ) *&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es gibt eine Abkürzung (wie bei PHP und ASP) für diesen Code, d.h. Sie können den obigen Code auch so schreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        This resource is called &amp;lt;* = getResourceName(getThisResource()) *&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abgesehen von den HTTP-Funktionen hat eingebettetes Lua Zugriff auf die folgenden Umgebungsvariablen, die Informationen darüber enthalten, wie die Seite angefordert wurde:&lt;br /&gt;
* table '''requestHeaders''': Dies ist eine Tabelle mit allen Kopfzeilen, die mit der Seite angefordert wurden. Sie können die zurückgegebenen Kopfzeilen mit [[httpSetResponseHeader]] einstellen. &lt;br /&gt;
* table '''form''': Dies ist eine Tabelle, die alle Formulardaten enthält, die per HTTP POST an die Seite übermittelt wurden, kombiniert mit allen Variablen, die im Querystring mit HTTP GET übergeben wurden.&lt;br /&gt;
* table '''cookies''': Dies ist eine Tabelle mit allen Cookies. Sie können Cookies mit [[httpSetResponseCookie]] ändern.&lt;br /&gt;
* string '''hostname''': Dies ist eine Zeichenkette, die die IP-Adresse oder den Hostnamen enthält, der die Seite angefordert hat.&lt;br /&gt;
* string '''url''': Dies ist die URL der Seite.&lt;br /&gt;
* account '''user''': Dies ist das Konto des aktuellen Benutzers.&lt;br /&gt;
{{New feature/item|3.0159|1.5.8|20828|&lt;br /&gt;
* string '''requestBody''': Dies ist der Text der Anfrage.&lt;br /&gt;
* string '''method''': Dies ist die Anfragemethode.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Es ist wichtig zu beachten, dass geparste Dateien in einer vom restlichen Code Ihrer Ressource getrennten virtuellen Maschine ausgeführt werden. Wenn Sie also eine Funktion im Hauptcode Ihrer Ressource aufrufen möchten, müssen Sie die Funktion exportieren und die [[call]]-Funktion aus Ihrer geparsten Datei verwenden.&lt;br /&gt;
&lt;br /&gt;
Sie können festlegen, dass bestimmte exportierte Funktionen in Ihrer Ressource über die HTTP-Schnittstelle aufgerufen werden können. Alle SDKs (siehe unten) ermöglichen es Ihnen, diese Funktionen von einem entfernten Standort aus aufzurufen. &lt;br /&gt;
&lt;br /&gt;
Um eine exportierte http-zugängliche Funktion anzugeben, fügen Sie Ihrer meta.xml-Datei Folgendes hinzu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;export function='functionName' http='true' /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können Ihre Funktion wie jede andere Funktion kodieren und so viele Werte zurückgeben, wie Sie wollen, einschließlich Tabellen und Ressourcen und der wichtigsten Elemente. Sie ''cannot'' jedoch keine anderen 'userdata'-Werte wie [[xmlnode|xmlnodes]] oder Funktionen zurückgeben.&lt;br /&gt;
&lt;br /&gt;
===Protocol===&lt;br /&gt;
{{Hinweis: Sie müssen das nicht wissen, es sei denn, Sie schreiben Ihren eigenen HTTP-Anfragecode. Sie können einfach eine der [[#SDK|SDKs listed below]].}}&lt;br /&gt;
&lt;br /&gt;
Aufrufe erfolgen durch die Anfrage ''&amp;lt;nowiki&amp;gt;http://&amp;lt;your IP&amp;gt;:&amp;lt;your port&amp;gt;/&amp;lt;resource_name&amp;gt;/call/&amp;lt;exported_function_name&amp;gt;&amp;lt;/nowiki&amp;gt;'' per HTTP POST. Der Körper der Anfrage sollte ein JSON-Array mit den Argumenten für die Funktion sein.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage gibt als HTTP-Antwort ein JSON-Array mit den Werten zurück, die von der Funktion zurückgegeben wurden.&lt;br /&gt;
&lt;br /&gt;
Der Server unterstützt die HTTP-Basic-Authentifizierung und Sie können den Zugriff über die ACL und das integrierte Kontensystem konfigurieren.&lt;br /&gt;
&lt;br /&gt;
===Calls from the HTTP web interface===&lt;br /&gt;
Die Verwendung von Anrufen ist wahrscheinlich am einfachsten über die Webschnittstelle und kann fast nahtlos erfolgen.&lt;br /&gt;
&lt;br /&gt;
Fügen Sie dies zunächst in Ihre meta.xml-Datei ein:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;include resource=&amp;quot;ajax&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zweitens, fügen Sie folgendes zu der &amp;lt;head&amp;gt; Abschnitt der Seite, von der aus Sie aufrufen möchten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;* = exports.ajax:start(getResourceName(getThisResource())) *&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schließlich können Sie einen Javascript-Block auf Ihrer Seite erstellen und Ihre Funktionen so aufrufen, als ob sie lokal wären. Der einzige Unterschied ist, dass die Aufrufe asynchron sind - Sie sollten eine Callback-Funktion als letztes Argument für Ihren Aufruf angeben. Diese wird aufgerufen, wenn die Funktion zurückkehrt.&lt;br /&gt;
&lt;br /&gt;
Hier ist ein einfaches Beispiel.&lt;br /&gt;
&lt;br /&gt;
'''meta.xml'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta&amp;gt;&lt;br /&gt;
   &amp;lt;include resource=&amp;quot;ajax&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;script src='code.lua' /&amp;gt;&lt;br /&gt;
   &amp;lt;html src='page.htm' default='true' /&amp;gt;&lt;br /&gt;
   &amp;lt;export function='showChatMessage' http='true' /&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''code.lua'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showChatMessage ( message )&lt;br /&gt;
    outputChatBox ( message )&lt;br /&gt;
    return 5;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''page.htm'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;* = exports.ajax:start(getResourceName(getThisResource())) *&amp;gt;&lt;br /&gt;
        &amp;lt;script type='text/javascript'&amp;gt;&lt;br /&gt;
            function say() {&lt;br /&gt;
                var message = document.getElementById('message')&lt;br /&gt;
                showChatMessage ( message.value, &lt;br /&gt;
                    function ( number ) {&lt;br /&gt;
                        // the function has been called and returned something&lt;br /&gt;
                        message.value = &amp;quot;The function returned &amp;quot; + number;&lt;br /&gt;
                    }&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
        &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;input type='text' id='message' /&amp;gt;&amp;lt;input type='button' value='say' onclick='say();' /&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Ressourcen ''resourcebrowser'', ''resourcecemanager'' und ''webadmin'' können Sie (fairly complex) Beispiele dafür sehen, wie dies gemacht werden kann.&lt;br /&gt;
&lt;br /&gt;
==Securing the web interface==&lt;br /&gt;
Die [[ACL]] hat eine Reihe von Rechten, die beeinflussen können, auf welche Dateien zugegriffen werden kann.&lt;br /&gt;
{{Deprecated feature|3.0139|1.3.1|&lt;br /&gt;
* general.http: If disabled, none of the HTTP files can be accessed (except by game clients)&lt;br /&gt;
** '''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.''&lt;br /&gt;
** '''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.''&lt;br /&gt;
* resource.'''ResourceName''': If disabled, none of the files in the resource can be accessed&lt;br /&gt;
* resource.'''ResourceName'''.file.'''FileName''': If disabled, the file named cannot be accessed&lt;br /&gt;
* resource.'''ResourceName'''.function.'''FunctionName''': If disabled, the function cannot be called&lt;br /&gt;
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.&lt;br /&gt;
}}&lt;br /&gt;
{{New_feature|3.0139|1.3.1|&lt;br /&gt;
* '''resource.ResourceName.http''': Wenn diese Option aktiviert ist, ist die Ressource über http://server_ip:22005/ResourceName/ zugänglich.&lt;br /&gt;
Dies funktioniert wie bei anderen ACL-Rechten - Sie können es nur für Admin-Benutzer oder für jede andere Benutzergruppe aktivieren, die Sie wünschen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SDK==&lt;br /&gt;
Es gibt eine Reihe so genannter &amp;quot;SDKs&amp;quot;, die es Ihnen ermöglichen, den Server über andere Programmiersprachen anzusprechen. Mit diesen können Sie (theoretisch) ganze Spielmodi schreiben. In der Praxis ist das wahrscheinlich keine gute Idee, aber es ist nützlich für Statistiken und die Verwaltung. Das PHP SDK ist die am weitesten entwickelte Version. Es steht Ihnen frei, Ihre eigenen SDKs zu modifizieren oder zu erstellen - wenn Sie das tun, schicken Sie uns bitte eine Kopie.&lt;br /&gt;
&lt;br /&gt;
* [[JavaSDK|Java SDK]]&lt;br /&gt;
* [[Javascript SDK]]&lt;br /&gt;
* [https://www.npmjs.com/package/mtasa Node.js SDK]&lt;br /&gt;
* [[Perl SDK]]&lt;br /&gt;
* [[PHP SDK]]&lt;br /&gt;
* [[CSharp SDK|C# SDK]]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[callRemote]] - Ermöglicht es Spielservern, Funktionen auf PHP-Seiten (mit dem PHP SDK) und auf anderen Spielservern aufzurufen.&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
&lt;br /&gt;
[[en:Resource Web Access]]&lt;br /&gt;
[[fr:Ressource Acces Internet]]&lt;br /&gt;
[[hu:Resource Web Access]]&lt;br /&gt;
[[pt-br:Acesso_web_via_recursos]]&lt;br /&gt;
[[ru:Resource Web Access]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Shady</name></author>
	</entry>
</feed>