diff options
-rw-r--r-- | OpenSim/Services/AssetService/AssetService.cs | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index 01a3b3d..fe663eb 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs | |||
@@ -30,6 +30,7 @@ using System.Reflection; | |||
30 | using Nini.Config; | 30 | using Nini.Config; |
31 | using log4net; | 31 | using log4net; |
32 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
33 | using OpenSim.Framework.Console; | ||
33 | using OpenSim.Data; | 34 | using OpenSim.Data; |
34 | using OpenSim.Services.Interfaces; | 35 | using OpenSim.Services.Interfaces; |
35 | using OpenMetaverse; | 36 | using OpenMetaverse; |
@@ -44,6 +45,16 @@ namespace OpenSim.Services.AssetService | |||
44 | 45 | ||
45 | public AssetService(IConfigSource config) : base(config) | 46 | public AssetService(IConfigSource config) : base(config) |
46 | { | 47 | { |
48 | MainConsole.Instance.Commands.AddCommand("kfs", false, | ||
49 | "show digest", | ||
50 | "show digest <ID>", | ||
51 | "Show asset digest", HandleShowDigest); | ||
52 | |||
53 | MainConsole.Instance.Commands.AddCommand("kfs", false, | ||
54 | "delete asset", | ||
55 | "delete asset <ID>", | ||
56 | "Delete asset from database", HandleDeleteAsset); | ||
57 | |||
47 | if (m_AssetLoader != null) | 58 | if (m_AssetLoader != null) |
48 | { | 59 | { |
49 | IConfig assetConfig = config.Configs["AssetService"]; | 60 | IConfig assetConfig = config.Configs["AssetService"]; |
@@ -132,5 +143,69 @@ namespace OpenSim.Services.AssetService | |||
132 | { | 143 | { |
133 | return false; | 144 | return false; |
134 | } | 145 | } |
146 | |||
147 | void HandleShowDigest(string module, string[] args) | ||
148 | { | ||
149 | if (args.Length < 3) | ||
150 | { | ||
151 | MainConsole.Instance.Output("Syntax: show digest <ID>"); | ||
152 | return; | ||
153 | } | ||
154 | |||
155 | AssetBase asset = Get(args[2]); | ||
156 | |||
157 | if (asset == null || asset.Data.Length == 0) | ||
158 | { | ||
159 | MainConsole.Instance.Output("Asset not found"); | ||
160 | return; | ||
161 | } | ||
162 | |||
163 | int i; | ||
164 | |||
165 | MainConsole.Instance.Output(String.Format("Name: {0}", asset.Name)); | ||
166 | MainConsole.Instance.Output(String.Format("Description: {0}", asset.Description)); | ||
167 | MainConsole.Instance.Output(String.Format("Type: {0}", asset.Type)); | ||
168 | MainConsole.Instance.Output(String.Format("Content-type: {0}", asset.Metadata.ContentType)); | ||
169 | |||
170 | for (i = 0 ; i < 5 ; i++) | ||
171 | { | ||
172 | int off = i * 16; | ||
173 | if (asset.Data.Length <= off) | ||
174 | break; | ||
175 | int len = 16; | ||
176 | if (asset.Data.Length < off + len) | ||
177 | len = asset.Data.Length - off; | ||
178 | |||
179 | byte[] line = new byte[len]; | ||
180 | Array.Copy(asset.Data, off, line, 0, len); | ||
181 | |||
182 | string text = BitConverter.ToString(line); | ||
183 | MainConsole.Instance.Output(String.Format("{0:x4}: {1}", off, text)); | ||
184 | } | ||
185 | } | ||
186 | |||
187 | void HandleDeleteAsset(string module, string[] args) | ||
188 | { | ||
189 | if (args.Length < 3) | ||
190 | { | ||
191 | MainConsole.Instance.Output("Syntax: delete asset <ID>"); | ||
192 | return; | ||
193 | } | ||
194 | |||
195 | AssetBase asset = Get(args[2]); | ||
196 | |||
197 | if (asset == null || asset.Data.Length == 0) | ||
198 | { | ||
199 | MainConsole.Instance.Output("Asset not found"); | ||
200 | return; | ||
201 | } | ||
202 | |||
203 | Delete(args[2]); | ||
204 | |||
205 | //MainConsole.Instance.Output("Asset deleted"); | ||
206 | // TODO: Implement this | ||
207 | |||
208 | MainConsole.Instance.Output("Asset deletion not supported by database"); | ||
209 | } | ||
135 | } | 210 | } |
136 | } | 211 | } |