From bc49a0bc5df9e600af1e291fad3719949a592685 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 6 May 2011 00:09:08 +0100 Subject: Add "dump asset" command to the asset service for debugging purposes. This command dumps the asset with the given id to a file with the same name. --- OpenSim/Services/AssetService/AssetService.cs | 43 +++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index e1f90b6..25a91f2 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -26,9 +26,12 @@ */ using System; +using System.Collections.Generic; +using System.IO; using System.Reflection; using Nini.Config; using log4net; +using NDesk.Options; using OpenSim.Framework; using OpenSim.Framework.Console; using OpenSim.Data; @@ -60,6 +63,13 @@ namespace OpenSim.Services.AssetService "delete asset", "delete asset ", "Delete asset from database", HandleDeleteAsset); + + MainConsole.Instance.Commands.AddCommand("kfs", false, + "dump asset", + "dump asset ", + "Dump asset to a file", + "The filename is the same as the ID given.", + HandleDumpAsset); if (m_AssetLoader != null) { @@ -189,6 +199,39 @@ namespace OpenSim.Services.AssetService return false; } + + void HandleDumpAsset(string module, string[] args) + { + if (args.Length < 3) + { + MainConsole.Instance.Output("Usage is dump asset "); + return; + } + + string rawAssetId = args[2]; + UUID assetId; + + if (!UUID.TryParse(rawAssetId, out assetId)) + { + MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid ID format", rawAssetId); + return; + } + + AssetBase asset = m_Database.GetAsset(assetId); + if (asset == null) + { + MainConsole.Instance.OutputFormat("ERROR: No asset found with ID {0}", assetId); + return; + } + + using (FileStream fs = new FileStream(rawAssetId, FileMode.CreateNew)) + { + using (BinaryWriter bw = new BinaryWriter(fs)) + { + bw.Write(asset.Data); + } + } + } void HandleShowDigest(string module, string[] args) { -- cgit v1.1 From 46baadbb65ac82260f46e580addda2f45efee120 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 6 May 2011 00:22:19 +0100 Subject: remove the NDesk.Options using since didn't end up needing it --- OpenSim/Services/AssetService/AssetService.cs | 1 - 1 file changed, 1 deletion(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index 25a91f2..80d58e1 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -31,7 +31,6 @@ using System.IO; using System.Reflection; using Nini.Config; using log4net; -using NDesk.Options; using OpenSim.Framework; using OpenSim.Framework.Console; using OpenSim.Data; -- cgit v1.1 From 9ff94a3a443e7c912ad33c3117b824469e38a130 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 6 May 2011 21:58:41 +0100 Subject: Say which filename an asset has been dumped to on a successful dump --- OpenSim/Services/AssetService/AssetService.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index 80d58e1..915596e 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -223,13 +223,17 @@ namespace OpenSim.Services.AssetService return; } - using (FileStream fs = new FileStream(rawAssetId, FileMode.CreateNew)) + string fileName = rawAssetId; + + using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) { using (BinaryWriter bw = new BinaryWriter(fs)) { bw.Write(asset.Data); } - } + } + + MainConsole.Instance.OutputFormat("Asset dumped to file {0}", fileName); } void HandleShowDigest(string module, string[] args) -- cgit v1.1 From 621279e4984fbea49a8bdf451fb132d68749f25e Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 6 May 2011 22:04:26 +0100 Subject: on asset "show digest" command, print out the asset type name (e.g. texture) as well as its number --- OpenSim/Services/AssetService/AssetService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index 915596e..03b660d 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -256,7 +256,7 @@ namespace OpenSim.Services.AssetService MainConsole.Instance.Output(String.Format("Name: {0}", asset.Name)); MainConsole.Instance.Output(String.Format("Description: {0}", asset.Description)); - MainConsole.Instance.Output(String.Format("Type: {0}", asset.Type)); + MainConsole.Instance.Output(String.Format("Type: {0} (type number = {1})", (AssetType)asset.Type, asset.Type)); MainConsole.Instance.Output(String.Format("Content-type: {0}", asset.Metadata.ContentType)); MainConsole.Instance.Output(String.Format("Flags: {0}", asset.Metadata.Flags.ToString())); -- cgit v1.1 From 913e6b70c66d7c8f2e273f057995dc20d6a0e8a5 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 6 May 2011 22:13:56 +0100 Subject: minor: slightly shorten "show digest" printing code --- OpenSim/Services/AssetService/AssetService.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index 03b660d..851b7b4 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -254,11 +254,11 @@ namespace OpenSim.Services.AssetService int i; - MainConsole.Instance.Output(String.Format("Name: {0}", asset.Name)); - MainConsole.Instance.Output(String.Format("Description: {0}", asset.Description)); - MainConsole.Instance.Output(String.Format("Type: {0} (type number = {1})", (AssetType)asset.Type, asset.Type)); - MainConsole.Instance.Output(String.Format("Content-type: {0}", asset.Metadata.ContentType)); - MainConsole.Instance.Output(String.Format("Flags: {0}", asset.Metadata.Flags.ToString())); + MainConsole.Instance.OutputFormat("Name: {0}", asset.Name); + MainConsole.Instance.OutputFormat("Description: {0}", asset.Description); + MainConsole.Instance.OutputFormat("Type: {0} (type number = {1})", (AssetType)asset.Type, asset.Type); + MainConsole.Instance.OutputFormat("Content-type: {0}", asset.Metadata.ContentType); + MainConsole.Instance.OutputFormat("Flags: {0}", asset.Metadata.Flags); for (i = 0 ; i < 5 ; i++) { -- cgit v1.1