LlRequestSecureURL: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
m Removed the warning & information regarding the self-signed certificate, since LL already replaced it with a bona-fide one |
||
(3 intermediate revisions by 3 users not shown) | |||
Line 4: | Line 4: | ||
|return_type=key|return_subtype=handle | |return_type=key|return_subtype=handle | ||
|func_footnote | |func_footnote | ||
|func_desc=Requests one HTTPS:// (SSL) | |func_desc=Requests one {{mono|HTTPS://}} ({{Wikipedia|SSL}}) {{Wikipedia|URL}} for use by this [[object]]. The [[http_request]] [[event]] is triggered with result of the request. [[LSL_HTTP_server#Introduction|HTTPS-in]] uses port {{mono|12043}}. | ||
|return_text=used for identifying the result of the request in the [[http_request]] [[event]]. | |return_text=used for identifying the result of the request in the [[http_request]] [[event]]. | ||
|spec | |spec | ||
|caveats=*HTTPS-in uses port 12043 (that port is in the URL returned by this method). | |caveats=*HTTPS-in uses port {{mono|12043}} (that port is in the URL returned by this method). | ||
*When a region is (re)started all [[http_request|HTTP server]] URLs are automatically released and invalidated. | *When a [[region]] is (re)started all [[http_request|HTTP server]] URLs are automatically released and invalidated. | ||
**Use [[CHANGED_REGION_START]] to detect this so new URL can be requested. | **Use [[CHANGED_REGION_START]] to detect this so a new URL can be requested. | ||
|constants | |constants | ||
|examples= | |examples= | ||
{{LSL Tip|Never ever forget to release a URL again which you have requested! URLs are region resources just like prims. If you take them all you can get into big trouble with the | {{LSL Tip|Never ever forget to release a URL again which you have requested! URLs are region resources just like prims. If you take them all you can get into big trouble with the [[Private Region|region owner]] and/or [[Estate Manager|estate managers]].}} | ||
Requesting a secure URL | Requesting a secure URL: | ||
< | <syntaxhighlight lang="lsl2"> | ||
string secureUrl; | string secureUrl; | ||
key urlRequestId; | key urlRequestId; | ||
Line 119: | Line 118: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
|helpers | |helpers | ||
|mode= | |mode= |
Latest revision as of 12:53, 20 May 2025
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: key llRequestSecureURL( );0.0 | Forced Delay |
10.0 | Energy |
Requests one HTTPS:// ( SSL)
URL for use by this object. The http_request event is triggered with result of the request. HTTPS-in uses port 12043.
Returns a handle (a key) used for identifying the result of the request in the http_request event.
Caveats
- HTTPS-in uses port 12043 (that port is in the URL returned by this method).
- When a region is (re)started all HTTP server URLs are automatically released and invalidated.
- Use CHANGED_REGION_START to detect this so a new URL can be requested.
Examples
![]() |
Important: Never ever forget to release a URL again which you have requested! URLs are region resources just like prims. If you take them all you can get into big trouble with the region owner and/or estate managers. |
Requesting a secure URL:
string secureUrl;
key urlRequestId;
key selfCheckRequestId;
request_secure_url()
{
llReleaseURL(secureUrl);
secureUrl = "";
urlRequestId = llRequestSecureURL();
}
throw_exception(string inputString)
{
key owner = llGetOwner();
llInstantMessage(owner, inputString);
// yeah, bad way to handle exceptions by restarting.
// However this is just a demo script...
llResetScript();
}
default
{
on_rez(integer start_param)
{
llResetScript();
}
changed(integer change)
{
if (change & (CHANGED_OWNER | CHANGED_INVENTORY))
{
llReleaseURL(secureUrl);
secureUrl = "";
llResetScript();
}
if (change & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT))
request_secure_url();
}
state_entry()
{
request_secure_url();
}
http_request(key id, string method, string body)
{
integer responseStatus = 400;
string responseBody = "Unsupported method";
if (method == URL_REQUEST_DENIED)
throw_exception("The following error occurred while attempting to get a free URL for this device:\n \n" + body);
else if (method == URL_REQUEST_GRANTED)
{
secureUrl = body;
key owner = llGetOwner();
llLoadURL(owner, "Click to visit my URL!", secureUrl);
// check every 5 mins for dropped URL
llSetTimerEvent(300.0);
}
else if (method == "GET")
{
responseStatus = 200;
responseBody = "Hello world!";
}
// else if (method == "POST") ...;
// else if (method == "PUT") ...;
// else if (method == "DELETE") { responseStatus = 403; responseBody = "forbidden"; }
llHTTPResponse(id, responseStatus, responseBody);
}
http_response(key id, integer status, list metaData, string body)
{
if (id == selfCheckRequestId)
{
// If you're not usually doing this,
// now is a good time to get used to doing it!
selfCheckRequestId = NULL_KEY;
if (status != 200)
request_secure_url();
}
else if (id == NULL_KEY)
throw_exception("Too many HTTP requests too fast!");
}
timer()
{
selfCheckRequestId = llHTTPRequest(secureUrl,
[HTTP_METHOD, "GET",
HTTP_VERBOSE_THROTTLE, FALSE,
HTTP_BODY_MAXLENGTH, 16384],
"");
}
}
See Also
Functions
• | llRequestURL | |||
• | llGetFreeURLs | |||
• | llReleaseURL | |||
• | llHTTPResponse | |||
• | llGetHTTPHeader |
Articles
• | LSL http server |