public static void Main(string[] args, KeyStorage keyStorage) { if (args.Length != 4) { throw new HelpException("Missing arguments"); } //Storage Repo repo = Repo.Create(args [1]); repo = new EncryptedRepo(repo, keyStorage); //Find message Chunk chunk = null; if (args [2].Length == 64) { ChunkHash id = ChunkHash.FromHashBytes(Hash.FromString(args [2]).bytes); chunk = repo.ReadChunk(id); } else { ICollection <ChunkHash> messages = repo.GetMessageList("file"); foreach (ChunkHash bh in messages) { if (bh.ToString().StartsWith(args [2])) { chunk = repo.ReadChunk(bh); } } } Message message = Message.FromChunk(chunk, keyStorage); if (message == null) { Console.Error.WriteLine("Message not found"); return; } TreeMessage tm = message as TreeMessage; if (tm == null) { Console.Error.WriteLine("Not a TreeMessage: " + message.GetType().Name); return; } Console.WriteLine("Found TreeMessage " + tm.Name); string targetPath = Path.Combine(args [3], tm.Name); TreeChunk.Extract(repo, ChunkHash.FromHashBytes(tm.TreeChunkHash), targetPath); }
public static void Main(string[] args, KeyStorage keyStorage) { if (args.Length != 2) { throw new HelpException("Missing arguments"); } //Repo Repo repo = Repo.Create(args [1]); //Find message ICollection <ChunkHash> messages = repo.GetMessageList("file"); EncryptedRepo es = new EncryptedRepo(repo, keyStorage); //Iterate over all messages foreach (ChunkHash mid in messages) { Console.Write(mid.ToString().Substring(0, 10) + "... "); Message message = Message.FromChunk(es.ReadChunk(mid), keyStorage); //No key found if (message == null) { Console.WriteLine("no key"); continue; } if (message.Signature != null) { Console.Write("(signed by " + message.Signature.Name + ") "); } TreeMessage tm = message as TreeMessage; if (tm != null) { Console.WriteLine("TreeMessage " + tm.Name); continue; } RouteMessage rm = message as RouteMessage; if (rm != null) { Console.WriteLine("RouteMessage to " + rm.To); continue; } Console.WriteLine("unknown message type: " + message.GetType().Name); } }