Jump to content

Search the Community

Showing results for tags 'http'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Important News
    • Announcements
  • People Forum
    • Your Avatar
    • Make Friends
    • Lifestyles and Relationships
    • Role Play
    • General Discussion Forum
    • Forums Feedback
    • Second Life Education and Nonprofits
  • Places and Events Forum
    • Favorite Destinations
    • Upcoming Events and Activities
    • Games in Second Life
  • Official Contests, Events & Challenges
    • Challenges
    • Contests
  • Creation Forum
    • Fashion
    • Art, Music and Photography
    • Animation Forum
    • Bakes on Mesh
    • Environmental Enhancement Project
    • Machinima Forum
    • Building and Texturing Forum
    • Mesh
    • LSL Scripting
    • Experience Tools Forum
  • Technology Forum
    • Second Life Server
    • Second Life Viewer
    • Second Life Web
    • General Second Life Tech Discussion
    • Mobile
  • Commerce Forum
    • Merchants
    • Inworld Employment
    • Wanted
  • Land Forum
    • General Discussion
    • Mainland
    • Linden Homes
    • Wanted
    • Regions for Sale
    • Regions for Rent
  • International Forum
    • Deutsches Forum
    • Foro en español
    • Forum in italiano
    • Forum français
    • 日本語フォーラム
    • 한국어 포럼
    • Fórum em português
    • Forum polskie
    • المنتدى العربي
    • Türkçe Forum
    • Форум по-русски
  • Answers
    • Abuse and Griefing
    • Account
    • Avatar
    • Creation
    • Inventory
    • Getting Started
    • Controls
    • Land
    • Linden Dollars (L$)
    • Shopping
    • Technical
    • Viewers
    • Everything Else
    • International Answers


  • Commerce
  • Featured News
  • Inworld
  • Tools and Technology
  • Tips and Tricks
  • Land
  • Community News


  • English
  • Deutsch
  • Français
  • Español
  • Português
  • 日本語
  • Italiano
  • Pусский
  • Türkçe

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



About Me

Member Title

Found 12 results

  1. A few of the features of LSL HTTP usage will be changing slightly as a part of the migration to using cloud hosted simulators. Our hope is that these changes will not cause any problems, but hope and testing are two different things, so... If you are the creator of LSL scripts that use any of the features discussed below, or you use scripts that rely on external HTTP services that were created by someone else, you should test them as soon as possible and report any problems in Jira. As sandboxes where you can test with these changes are deployed, we will post notices in this thread. Some of what is described below is pretty geeky - mostly that doesn't matter because if you can test your scripts and they work (on the new systems), then you didn't make any of the available mistakes and don't need changes. If you are not able to figure out why your scripts fail with these changes, file a Jira and we'll try to help. llHTTPRequest - Outbound HTTP The interface to this method is not changing (aside from one additional error check - see below), but some of its behavior on the network will change in ways that may confuse servers that are doing inappropriate checks. HTTP requests from LSL to external systems have always been routed through an HTTP proxy, and that will still be true, but in the past it was a proxy dedicated to each simulator host; now the proxy will be in a pool of separate servers as shown here: This means that: The IP address of the HTTP client from the HTTP server will not be the same as the IP address of the simulator that the request was sent from; the hostname returned by looking up the client (proxy) address will not be the simulator host. Some timeout behaviors for servers that do not respond quickly enough may change slightly. The body of some error responses from the proxies may change, including the content type. Different requests from a given simulator may be routed through different proxies, and requests from different simulators may go through the same proxy (potentially even on the same TCP connection). Scripts that make more than one HTTP request that overlap in time may see changes in the order that those requests arrive at the server and/or the order in which the responses are returned (ordering has never been guaranteed). The IP addresses for simulators will be in different ranges and unpredictable; if your server is checking whether or not requests are coming from the simulator addresses in our current datacenter, you will need to remove those checks. We will not be able to provide documentation of the IP addresses of simulators or the proxies. None of this should bother the use case of a script using HTTP to communicate with another script; those requests just loop through the same proxies even now, but note the llRequestURL section below. The llHTTPRequest parameter HTTP_CUSTOM_HEADER may not be used to set values for the 'Connection' or 'Host' headers; a check is being added so that any call that attempts to do so will throw an error and abort the request (at present these header names are allowed, but the values are usually not actually used or sent to the remote server, which is misleading). lRequestURL or llRequestSecureURL Note this earlier post on not checking the domain part of the URL allocated to your script. A hostname lookup for a simulator IP address will not return the same name that appears in URLs returned by these methods. That is - looking up the IP address for a simulator name will return the correct address for that simulator, but looking up the name for that address will return a different name. This sort of asymmetry is not unusual, and will be the norm for many of our services in the cloud.
  2. Hello Community, i have a basic implementation to: 1-request http-in URL [OK] 2-access it from out-world python code [NOK] I am using python requests library to access the URL with GET method (tried POST too), as below: url = 'http://simhost-0b0f86c450b540326.agni.secondlife.io:12046/cap/.......' requests.get(url, verify=False) i also tried using urlib library: urllib.urlopen(url,{'key':'value'}) and both options keeps me with the same unsuccessful response: HTTP Error 502: Proxy Error Do you have any light? Thanks in advance
  3. Bois... i think i finaly got in over my head big time. I'm working on a script that will work like a interactive cleverbot (because that seams like a good idear after 2020 >.<) I'm trying to make a script that can read the <p>Content</p> tags on my website- Tho i don't seam to be able to limit it. Here is the code and sorry for bad english in advance. key http_request_id; default { state_entry() { http_request_id = llHTTPRequest("https://purge-0.000webhostapp.com/SL.html", [], ""); } http_response(key request_id, integer status, list metadata, string body) { if (request_id != http_request_id) return; // exit if unknown vector COLOR_GREEN = <0.0, 1.0, 0.0>; float OPAQUE = 1.0; llSetText(body, COLOR_GREEN, OPAQUE); } } Thanks in advance for the help! this forum is the best! Link to the web ofc: https://purge-0.000webhostapp.com/SL.html ~Perg0
  4. Just in case you missed the post in the LSL Scripting forum, upcoming changes to LSL http-out are now live on some beta grid regions. Details are in the original post:
  5. Issue is now resolved - Thank you Hello all, I've searched in a lot of places and can't seem to find an answer. I have an object that makes several HTTP Requests via llHttpRequest, the problem is that every time it does there seems to be some kind of default "particle" animation consisting of white dots (see image). They appear every single time a request gets made, and it occurs when attached to an avatar or rezzed. Only the owner of the object can see their own objects' particles, but I really need to disable them. I have tried: llParticleSystem([]); Any information would be appreciated. Thanks
  6. Now with the new functions that were released onto the Wiki, a lot of my web servers used a Name2Key service(Such as W-Hat, or similar). One problem we were having is some services are not 100% reliable. Every now and then, we had NULL_KEYs returned. These scripts we made; we used as a backup when the online services were not working or did not produce the desired result. This is not meant to be used as an alternative to Name2Key with LSL scripts, it is used for websites that need Name2Key and are looking for a backup to their current Name2Key. This could obviously be expanded and is very basic. I would expand on this to allow multiple in-world servers in case of an outage and make it update to the prim's URLs into a database and not a text file. Server Directory/Structure /Name2Key | | - .htaccess | - index.php Once your directory is set up on your server, here are the files! .httaccess RewriteEngine On RewriteBase / RewriteRule ^(.*)$ index.php?name=$1 [L,QSA] index.php <?php if(!empty($_GET['name'])) { if($_GET['name'] == "update_url") { $fh = fopen("server_url.txt","w"); fwrite($fh,base64_decode($_GET['url'])); fclose($fh); } else { header("Content-Type: text/plain"); $fh = fopen("server_url.txt","r"); $url = fread($fh, filesize("server_url.txt")); fclose($fh); $ch = curl_init($url); curl_setopt_array($ch,array( CURLOPT_RETURNTRANSFER=>TRUE, CURLOPT_POST=>TRUE, CURLOPT_HEADER=>"application/x-www-form-urlencoded", CURLOPT_POSTFIELDS=>base64_encode($_GET['name']) )); $data = curl_exec($ch); curl_close($ch); echo $data; } } Now for the in-world scripts. This is meant to go into a single prim and be left to sit there. Name2Key.lsl string update_url = "http://WebsiteName.com/Name2Key/update_url&url="; string url; key urlRequestId; key selfCheckRequestId; key name_query; key return_key; request_url() { llReleaseURL(url); url = ""; llSetTimerEvent(0.0); urlRequestId = llRequestURL(); } throw_exception(string inputString) { llInstantMessage(llGetOwner(), inputString); llResetScript(); } default { state_entry() { request_url(); } on_rez(integer start_param) { llResetScript(); } changed(integer change) { if (change & CHANGED_OWNER | CHANGED_REGION | CHANGED_REGION_START) llResetScript(); } timer() { selfCheckRequestId = llHTTPRequest(url,[HTTP_METHOD, "GET",HTTP_VERBOSE_THROTTLE, FALSE,HTTP_BODY_MAXLENGTH, 16384],""); } dataserver(key i, string d) { if(i == name_query) { if(d != NULL_KEY) { llHTTPResponse(return_key,200,d); } else { llHTTPResponse(return_key,200,NULL_KEY); } } } 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) { url = body; llHTTPRequest(update_url+""+llStringToBase64(url),[HTTP_METHOD,"GET",HTTP_VERBOSE_THROTTLE,FALSE],""); llSetTimerEvent(300.0); } else if (method == "GET") { llHTTPResponse(id, 400, "Unsupported Method"); } else if (method == "POST") { body = llBase64ToString(body); name_query = llRequestUserKey(body); return_key = id; } } http_response(key id, integer status, list metaData, string body) { if (id == selfCheckRequestId) { selfCheckRequestId = NULL_KEY; if (status != 200) request_url(); } else if (id == NULL_KEY) throw_exception("Too many HTTP requests too fast!"); } } As I said, this is not a "finished" product, as it still needs some upgrades. We highly recommend that you use it as a backup to other online Name2Key Services when you get a NULL_KEY. Hope this helps out other users!
  7. At the present time there does not seem to be a reasonable method to retrieve In-World Textures from a Secure HTTPS web page. For example, if you try using the URL: https://secondlife.com/app/image/d2773340-b1dd-b030-e9bf-2c2851000283/2 That resolves to the following URL: http://texture-service.agni.lindenlab.com/d2773340-b1dd-b030-e9bf-2c2851000283/320x240.jpg/ But notice that the first part has been changed from https:// to http:// ... GACK! Any secure web page that attempts to include an In-World Texture will trigger a "mixed content" warning in every browser out there. If you try and pre-resolve the second URL but manually stick an https:// on the front, you get an interesting error. (In Chrome it's a Privacy Error because the source is not secure.) Sooooo .. Linden Lab? What are your plans for providing a secure web service for In-World Textures? Can we get something going since it seems Secure Hosting is a nearly free and easily obtained technology these days? In the meantime, does anyone have any hacks or tricks that might get around this issue ... or maybe just sees that I've totally missed some obvious thing. I'd appreciate any help that folks can provide. Thanks in advance.
  8. I'm running into a deadline for an LSL project i want to complete and am looking to get a shortcut from someone i'm sure already knows the answer to. I've used this bounty like scheme in the past and it worked well so i thought i'd try it again. I will revise/delete this post after the bounty has been paid. Needing a solution for: I have a LSL list in script in a HUD i offer for sale. The list is currently about 8KB in size and could grow to as large as 16KB. Example list entries look like ["O019: Fire",<255,70,0>,"R029: Plasa Red",<225,0,60>,"LCyan",<29.07,202.98,234.09>...] I own an off grid server that can be accessed by PHP and MYSQL I'd like to have each customer of a HUD i'm building to be able to "save" this LSL list which would message my PHP/MYSQL server and store this list against the llGetOwner() UUID I'd like to then be able to "restore" this list where my PHP/MYSQL list would then retrieve this list from my PHP/MYSQL server using the UUID as the key and update my LSL list This needs to be as atomic as possible. I'm not ok with breaking the 16KB list into several HTTP requests as it might corrupt the data. It would be much better for the entire save/restore to fail than it would be to have it partially update. It needs to follow basic security standards not allowing special characters like " and ' to break the PHP/MYSQL script. I've done this before using HTTP Get syntax and i'm pretty sure with HTTP GET you can't include sufficient information to allow it to store 16KB of data. I'm suspecting this will require the use of HTTP Put to push the data to my external server. Steps to get paid the bounty Message Stefan Buscaylet and ask what ever questions you have. Agree to that you'll offer full source code that has full royality free license to use in my application and you're welcome to use or sell the code again for your application. Stefan agrees to never publish the source of the code offered. Develop the solution and test yourself Pass Stefan an LSL script with full rights that I can put into a prim that when touched demostrates the storage and retrival of the LSL list upto 16KB in size and includes the code to compare the two lists to ensure they are identical. Stefan may stuff in other UUIDs to demostrate it can store multiple UUIDs Stefan pays 50% of the bounty to your paypal. At which point you pass me the full source code of the PHP and MYSQL code. Stefan pays you the remaining 50% bounty. If you'd prefer to have a trusted 3rd party involved that we can both agree to that is fine also. I promise you i'm not trying to scam anyone. I hope this is a good deal for someone. I suspect someone who has done this before can write this in 2-3 hours. If not lets talk. Thank you for your professional consideration. ---Stefan Buscaylet
  9. We are continuing to update the reliability and stability of the LSL HTTP functionality in LSL. The latest changes involve validating the MIME type values: The HTTP_MIMETYPE parameter to llHTTPRequest is checked. LSL will validate these for proper format; requests that attempt to send an improperly formatted type will send a debug channel error, not send the request, and return a null request key. If you use the new HTTP_ACCEPT option to llHTTPRequest (which allows you to further restrict the type your script expects), the Content-Type of the response is checked to see that it matches your restriction; if it does not, the http_response event will be a 415 error and the body will be "Unsupported or unknown Content-Type". Incoming HTTP requests to a script check to see if the Content-Type in the request is formatted correctly and that it is an allowed type (it always checked for allowed types). Previously, it was possible to send a type that was syntactically invalid but matched an allowed wildcard type. Incoming parameters are not validated. If an incoming request has an improperly formatted or unacceptable MIME type, LSL responds with a 415 error response and no event is generated for the script. Valid MIME type format looks like “type/subtype; parameters” (the semicolon and parameters may be omitted). LSL does not validate the content of the optional parameter section. Testing Your Scripts We have made simulators implementing these checks available; regions where you can test your scripts are listed below. Please do so as soon as possible and make any required changes. Agni regions: Magnum Sandbox 1 Magnum Sandbox 2 Magnum Sandbox 3 Aditi regions: Bonifacio Sandbox Artifex Examples Some examples of valid calls to llHTTPRequest include: key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, “text/plain;charset-utf8” ], “my body” ); key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, “application/x-www-form-urlencoded” ], “body=stuff” ); key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "multipart/mixed; boundary=\"---1234567890---\"" ], “The body as multipart” ); NOTE WELL: Calls similar to the following will now be errors; they will trigger a debug error and return a Null key from llHTTPRequest. The invalid values in these examples did not trigger errors before (they probably would have caused problems on some web servers). key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "text/application/xml” ], “my body” ); The value for HTTP_MIMETYPE has too many sections (more than one '/'); it does not follow the type/subtype pattern. Values like this one used to be on the wiki page for llHTTPRequest; they were never valid but were not checked. key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "text/xmll charset=utf8” ], “my body” ); No semicolon after the mime type. key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "text / xml” ], “my body” ); The value for HTTP_MIMETYPE includes spaces in the type/subtype section. key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "text/xml\n” ], “my body” ); The value for HTTP_MIMETYPE includes a control character (A newline.) We'll be watching this thread and will try to clarify any questions or problems you encounter. Go forth and test please!
  10. Can a HTTP Proxy & SOCKS 5 Proxy IP Address be used to proxy login to the second life grid,with the SL-Viewer? What port number would be used for the login?
  11. Just like Authentication flow, which outlines the process by which the viewer establishes connections with a number of components,Server architecture,i.e the way viewer interacts with the Second Life servers, I want to know the flow in which SL is get connected with the web application. I want to connect SL with a web app written in python flask.when the URL created using python flask is hit from SL the response will be received by SL. what must be the flow for connection.? my web service will send request to sl web server..then how is the connection established?can you plz explain me in detail just like the Authentication flow explained in Second Life Wiki > Open Source > Authentication Flow.. thank you
  12. Just like Authentication flow, which outlines the process by which the viewer establishes connections with a number of components,Server architecture,i.e the way viewer interacts with the Second Life servers, I want to know the flow in which SL is get connected with the web application. I want to connect SL with a web app written in python flask.when the URL created using python flask is hit from SL the response will be received by SL. what must be the flow for connection.? my web service will send request to sl web server..then how is the connection established?can you plz explain me in detail just like the Authentication flow explained in Second Life Wiki > Open Source > Authentication Flow.. thank you
  • Create New...