• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: ARVD-7
Type: New Feature New Feature
Status: Closed Closed
Resolution: Under Advisement
Priority: Nice to have Nice to have
Assignee: Unassigned
Reporter: Discrete Dreamscape
Votes: 9
Watchers: 16
Operations

If you were logged in you would be able to see more operations.
Archived

Export linksets to XML and import back to world

Created: 12/Jun/09 12:35 AM   Updated: 03/Aug/09 08:36 AM
Return to search
Component/s: None
Affects Version/s: None
Fix Version/s: None

Issue Links:
Relates
 


 Description  « Hide
This patch contains a mostly complete set of changes that provide linkset export/import functionality.

The exporter respects permissions. You must be the owner and have full permissions to export a linkset.
It may be worth considering only requiring ownership and modify permissions, since at that point all of an object's properties are visible, anyway.

The exporter does not save prim textures to disk, only keys.
No prim contents are exported.

Objects are saved to XML files containing some nested array and LLSD structures, ordered by link number, and will be restored and linked in the exact same order upon import.
Attached objects can be exported, and their attachment point data (position, rotation) is saved. These items will be automagically worn and adjusted on import.

Most of actual importing is just creating and sending packets directly from the LLSD data in the XML file.

Object exporting is done by right-clicking on an object in-world, selecting More a couple times, and choosing Export.
Importing is done from the File -> Import Linkset option in the menu bar at the top of the UI.
Very large linksets may take time to fully process and update, and will probably appear to just be sitting as a bunch of pieces of plywood for a bit.
No linkset should take more than a couple minutes, at the most, to complete.

The attached patch will apply cleanly to 1.22 source trees. Newer versions may require very slight modification to one of the XML files for the client UI for pie menus – I prefer to kill off the Gestures pie menu button to make room for this, since there's no reason for that to be in there anyway..



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Discrete Dreamscape added a comment - 12/Jun/09 12:36 AM
Thanks to Eddy Styker for the original llsd export skeleton.

lordgreggreg back added a comment - 12/Jun/09 12:42 AM
This is really great work. I know the potential for abuse comes with this being open source, but it is no greater than that of copybot, or any other tool out there. Good code can always be perverted in the wrong hands.

This is a great tool and a wonderful patch to fill in the gaps. Everyone can now have a good simple way to make secure backups of their builds. Thanks very much!


CopyBat Mode added a comment - 12/Jun/09 01:03 AM
Uploaded a second patch with the (pathetic) permissions check removed, because joking aside, this is where it was going to end up, there is no point hiding behind the facade of good intentions.

lordgreggreg back added a comment - 12/Jun/09 01:05 AM
Way to be an ass phox.

CopyBat Mode added a comment - 12/Jun/09 01:11 AM
You say that, but then you accept the griffer version of this patch when I send it on skype.

Way to be two faced greg.

jk, I <3 you.


Napolean Marama added a comment - 12/Jun/09 08:07 AM
This is interesting. o.o

Instantaneous Skute added a comment - 12/Jun/09 10:59 PM
wow I see this one going down.

Instantaneous Skute added a comment - 13/Jun/09 01:23 AM - edited
This is llphail

Anyways I am going to be badass and tell what LL has already released in their source code just no one uses it. So with this you should be able to get textures of your own avatar and other avatars. And thanks to dream for releasing copybot but no ability to download textures. Here is that ability. Your welcome xox.
in llviewermenu.cpp

class LLAvatarTextures : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)

{ LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); if(!obj) return true; LLFloaterAvatarTextures::show(obj->getID()); return true; }

};//neil

go down the page add this

addMenu(new LLAvatarTextures(), "Avatar.Textures");

if you know how to create a viewer you should be able to add it to the pie menu.xml

and if you want to be even more badass. Go to lltexturectrl.cpp and make it so u can either copy the asset uuid
append(mTexturep->getID().asString());

or even download the texture . Its your choice.

So there you have it now you can download the textures instead of recieving a key which has no use other then putting the texture on the object.

I would rather have the real texture.

Rock on to LL's destroyers thanks griffers and friends and descrete and now me.


Discrete Dreamscape added a comment - 13/Jun/09 02:52 AM
As a guide for any further comments, please disregard the above 2 comments and their content, as well as their author.

If you don't have anything constructive to contribute, please don't look at this issue.


lordgreggreg back added a comment - 13/Jun/09 03:01 AM
For those of you not comfortable with compiling your own viewer, the next version of green life will have a version of this patch in it .

This is really excellent code, thank you again discrete ^ ^


Instantaneous Skute added a comment - 13/Jun/09 04:01 AM - edited
Yes I think that viewing other peoples textures as constructive as copybot because the same function was there in the copybot where you can close other people. Which can be easily done in llvoavatar.

I am just saying they have the ability to view textures in copybots well here you go. LL already contributed to it in their main binary source code.

Yes thanks again descrete. But thanks to me a patch to view textures and possible download if you know how to. That should also be implemented in the LL source code under file-save texture as.

Your welcome for my contribution as being constructive as discrete.

heres another patch...

on the .xml files do this instead of their way
<menu_item_call enabled="true" label="Export" mouse_opaque="true" name="Object Export">
<on_click function="Object.Export" />
<on_enable function="Object.EnableExport" />
</menu_item_call>


Jeremy Duport added a comment - 14/Jun/09 05:37 AM - edited
That's not a patch, mister Skute. You should go away now.

Aleric Inglewood added a comment - 18/Jun/09 05:19 PM
I already frown upon making this patch public, because it's TOO simple to circumvent the ownership demand.
If any coder with enough knowledge to "improve" upon this code actually extends this patch (ie, download textures to disk,
export/import prim contents, export attachments, avatars, clothes and so on) then PLEASE keep that to yourself.

You might feel oh so proud you wrote that but that is not a reason to publish it. Hacks like this should NOT
reach mainstream use. If it does, the ONLY effect it will have is that LL will take precautions to make it impossible;
and that spoils it for those who ARE being discreet, and for you, and for those that really only legitmately use it
to make backups of their OWN work (that they have full permissions for thus).

Be professional; hack away - but don't make your work public.


Discrete Dreamscape added a comment - 18/Jun/09 06:00 PM
@Aleric:

I've had this code for months, and up until now, I indeed did not decide to publish it, despite the fact that copybot already exists and performs almost all of this functionality, if not more in some ways.

I decided to publish it at this time because some public viewers also already have this feature available for all, and some who do not are planning their own homebrew solutions. I figure that adding my own solution to the mix will help to either standardise things or at least provide some more options for the implementation.

Yes, it is too simple to circumvent permissions, and it always has been. No one has needed this patch to accomplish the duplication of prims.
I didn't publish this patch because I'm 'proud' of it. In fact, IMO, the code looks like ass and could be written much better.

If you think it's too simple to circumvent, or have code improvements for it, why not post those then? We could even have the original stricken from the site. Your current comment contains none of those, and adds nothing to the conversation.


Aleric Inglewood added a comment - 19/Jun/09 05:40 AM - edited
Dreamscape,

no I add nothing to the conversation in terms of code. That is exactly what I am NOT doing!
I am calling upon everyone to STOP posting patches like this.

I know of several hackers (in the positive meaning of the word: "excellent coders") that wrote their own version of
this and ALL of them based their code on VWR-4165. Imagine what would be the case if that was never posted?
This patch makes it ever easier for not-so-good-coders to actually start USING it (the wrong way). Good coders
could already do that, you opened the way to a much larger group of people.

The argument that other "viewers" already implement this or are going to implement it is NOT an arguement;
if those viewer respect the ownership of objects and only allow people to make backups of their own full-perm
stuff than I only welcome that. If their source code is open source however, then I strongly discourage them to add features beyond what you you posted. In this case open source (available patches, or code) means that you can laugh about that "respecting". I wonder what you were thinking when posting this here saying it respects the ownership. Surely you're not THAT naive? I think you knew that people will use it without that protection and you are obviously ok with it or you would never have posted it.


My Sugarplum added a comment - 19/Jun/09 05:50 AM - edited
Oh golly, I'd call upon you to shut the fuck up.

Oh, PS: The patch at top checks if you're trying to export a full-perm object.


Lonely Bluebird added a comment - 27/Jun/09 02:45 PM
Aleric:

What Discrete is getting at is that there are freely available viewers out there with NO permission check, anyone already has access to this import/export functionality for any object. There isn't anything LL can do because prim information needs to be sent to the viewer in order to display the prims, if they could, they would have done it when copybot was originally created.

Saying not to publish this code is nothing but security through obscurity, it's best that this is out in the open and everyone knows it's possible, instead of it coming as a surprise when it happens.


darling brody added a comment - 10/Jul/09 06:48 AM - edited





QUIT!

Morgaine Dinova added a comment - 27/Jul/09 11:26 PM
Having this out in the open and built into viewers might, with a bit of luck, bring to an end these last 2-3 years of agitated doom-mongering by those content creators who have refused to accept what we've been telling them all along: that this is how SL works, and has always worked, by design.

The assets are there in everyone's viewer for the taking, and they have to be there for SL to work. Copying them or not is not a technological hurdle, but merely a reflection of one's social responsibility and worldview.

Nothing has changed. Those people who want to grab assets from their viewers have always been able to do so ever since libsecondlife was created by reverse engineering SL protocols, which was long before the viewer was open-sourced. And those of us who have preferred to respect permissions out of social responsibility have always done so despite knowing how easy it was not to.

The only difference now is that at long last the few remaining content creators who apparently didn't know about this have to face the facts. Well that can only be good, especially if it stops their doom-mongering.

Did SL collapse when libsecondlife (now libomv) was created? No. Did SL collapse when the viewer went open source? No. Will SL collapse now that a few more people will have permissive clients? No, because the vast majority of people are willing to pay a reasonable price for a useful item from a merchant they value. There's no reason for that to change.

SL is safe. The sky really isn't falling, at least not for that reason.


darling brody added a comment - 28/Jul/09 01:33 AM
Just because pirating is possible dosnt make it right.

If creaters are not paid for their work, they will stop creating. Without creaters SL will be very boring.

QUIT !


Chalice Yao added a comment - 28/Jul/09 04:19 AM - edited
<snip>

Actually posted to the wrong, tho related JIRA.

</snip>


Morgaine Dinova added a comment - 28/Jul/09 08:06 PM
Scary, scary!!! All the creators will be leaving, SL will be a ghost town!!!

Actually, they're not leaving at all, because the vast majority of content creators understand perfectly well how SL is designed to work, and they happily do their business under these conditions since this is the norm for all digital content.

It's only a very few who superglue blinkers to their eyes and then announce our imminent destruction by imaginary monsters. While entertaining, it's not grounded in reality.


Rob Linden added a comment - 02/Aug/09 10:08 PM
Import/export, as implemented like this, is not something we plan to implement. We're also not inclined to use this tracker as a distribution point for this patch, hence we're removing it from here.