Exemplo n.º 1
0
        public virtual PackageHeader CreatePackageHeader(byte[] data, int offset, int length)
        {
            #if DEBUG_CORE
            Debug.Log("[PackageFactory CreatePackageHeader] create package header start", Unity.Debug.LogLevel.Socket);
            #endif

            if (length >= HeaderSize())
            {
                PackageHeader head = new PackageHeader();
                if (head.Unserial(data, offset))
                {
                    #if DEBUG_CORE
                    Debug.Log("[PackageFactory CreatePackageHeader] create package header success", Unity.Debug.LogLevel.Socket);
                    #endif

                    return(head);
                }
            }

            #if DEBUG_CORE
            Debug.Log("[PackageFactory CreatePackageHeader] create package header failed", Unity.Debug.LogLevel.Socket);
            #endif

            return(null);
        }
Exemplo n.º 2
0
        public void Add(
            string name,
            int packageDuesInMonth,
            bool isActive,
            bool isOpenEnd,
            decimal freezeFee,
            IEnumerable <PackageDetailViewModel> detail)
        {
            var head = new PackageHeader();

            head.Name = name;
            head.PackageDuesInMonth = packageDuesInMonth;
            head.IsActive           = isActive;
            head.OpenEnd            = isOpenEnd;
            head.FreezeFee          = freezeFee;
            EntityHelper.SetAuditFieldForInsert(head, principal.Identity.Name);
            context.Add(head);
            foreach (PackageDetailViewModel detailLine in detail)
            {
                var obj = new PackageDetail();
                obj.ItemID        = detailLine.ItemID;
                obj.PackageID     = detailLine.PackageID;
                obj.Quantity      = detailLine.Quantity;
                obj.UnitPrice     = detailLine.UnitPrice;
                obj.UnitName      = detailLine.UnitName;
                obj.PackageHeader = head;
                context.Add(obj);
            }
            context.SaveChanges();
        }
Exemplo n.º 3
0
        public static void GenerateHashlist(string workingPath, PackageDatabase bundleDB)
        {
            List <string> bundles = Directory.EnumerateFiles(workingPath, "all_*.bundle").ToList();

            foreach (string file in bundles)
            {
                if (file.EndsWith("_h.bundle"))
                {
                    continue;
                }

                PackageHeader bundle = new PackageHeader(file);
                foreach (PackageFileEntry be in bundle.Entries)
                {
                    DatabaseEntry ne = bundleDB.EntryFromID(be.ID);
                    if (ne == null)
                    {
                        continue;
                    }

                    if (ne._path == 0x9234DD22C60D71B8 && ne._extension == 0x9234DD22C60D71B8)
                    {
                        GenerateHashlist(workingPath, Path.Combine(workingPath, file.Replace("_h", "")), be);
                        return;
                    }
                }
            }
        }
Exemplo n.º 4
0
        public void Update(
            int id,
            string name,
            int packageDuesInMonth,
            bool isActive,
            bool isOpenEnd,
            decimal freezeFee,
            IEnumerable <PackageDetailViewModel> detail)
        {
            context.Delete(
                context.PackageDetails.Where(row => row.PackageID == id));

            PackageHeader head = context.PackageHeaders.Single(row => row.ID == id);

            head.Name = name;
            head.PackageDuesInMonth = packageDuesInMonth;
            head.IsActive           = isActive;
            head.OpenEnd            = isOpenEnd;
            head.FreezeFee          = freezeFee;
            EntityHelper.SetAuditFieldForUpdate(head, principal.Identity.Name);
            foreach (PackageDetailViewModel detailLine in detail)
            {
                var obj = new PackageDetail();
                obj.ItemID        = detailLine.ItemID;
                obj.PackageID     = detailLine.PackageID;
                obj.Quantity      = detailLine.Quantity;
                obj.UnitPrice     = detailLine.UnitPrice;
                obj.UnitName      = detailLine.UnitName;
                obj.PackageHeader = head;
                context.Add(obj);
            }
            context.SaveChanges();
        }
Exemplo n.º 5
0
        /// <summary>
        /// Closes the package, optionally leaving the output stream open.
        /// </summary>
        /// <param name="leaveOutputOpen"><c>true</c> to leave the output stream open.</param>
        public void Close(bool leaveOutputOpen)
        {
            if (packageOut != null)
            {
                // Append the terminating entry.

                new PackageEntry(this).Serialize(packageOut);

                // Before we close the package, we need to compute the MD5
                // hash of everything after the header in the output stream
                // and update the hash in the header.

                var header = new PackageHeader();

                packageOut.Position = cbHeader;
                header.Hash         = MD5Hasher.Compute(packageOut, packageOut.Length - cbHeader);

                packageOut.Position = 0;
                header.Seralize(packageOut);

                if (!leaveOutputOpen)
                {
                    packageOut.Close();
                }

                packageOut = null;
            }

            if (packageIn != null)
            {
                packageIn.Close();
                packageIn = null;
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Saves this instance, aka overwrites the file header.
        /// </summary>
        public void Save()
        {
            var head = new FileHeader
            {
                Signature  = PackCommon.Header,
                Revision   = (uint)Revision,
                EntryCount = Count,
                Path       = Root,
                Ft1        = Created.ToFileTime(),
                Ft2        = Modified.ToFileTime()
            };

            var pkgHead = new PackageHeader
            {
                EntryCount      = Count,
                InfoHeaderSize  = 0,
                DataSectionSize = (uint)(_source.Length - _dataStart),
                BlankSize       = 0,
                Zero            = new byte[16]
            };

            var infos = new List <Tuple <byte[], PackageItemInfo> >();

            foreach (var e in _entries.Values)
            {
                var info = new PackageItemInfo
                {
                    CompressedSize   = e.SizeInPack,
                    DecompressedSize = e.DecompressedSize,
                    IsCompressed     = e.IsCompressed,
                    Offset           = (uint)e.DataOffset,
                    Seed             = e.CryptoSeed,
                    CreationTime     = e.CreatedDate.ToFileTime(),
                    CreationTime2    = e.CreatedDate.ToFileTime(),
                    LastAccessTime   = e.AccessDate.ToFileTime(),
                    ModifiedTime     = e.ModifiedDate.ToFileTime(),
                    ModifiedTime2    = e.ModifiedDate.ToFileTime(),
                };

                var bytes = PackCommon.EncodeName(e.Name.PadRight(e.MaxNameLength, '\0'));

                infos.Add(Tuple.Create(bytes, info));
                pkgHead.InfoHeaderSize += bytes.Length + StructUtil.SizeOf <PackageItemInfo>();
            }

            pkgHead.BlankSize = (int)(_dataStart -
                                      (StructUtil.SizeOf <FileHeader>() + StructUtil.SizeOf <PackageHeader>() +
                                       pkgHead.InfoHeaderSize));

            pkgHead.InfoHeaderSize += pkgHead.BlankSize;

            _source.Position = 0;
            head.WriteToStream(_source);
            pkgHead.WriteToStream(_source);
            foreach (var i in infos)
            {
                _source.Write(i.Item1, 0, i.Item1.Length);
                i.Item2.WriteToStream(_source);
            }
        }
Exemplo n.º 7
0
        public void Update(
            int id,
            string name,
            int packageDuesInMonth,
            bool isActive,
            bool isOpenEnd,
            decimal freezeFee,
            IEnumerable <PackageDetailViewModel> detail)
        {
            ctx.PackageDetails.DeleteAllOnSubmit(
                ctx.PackageDetails.Where(row => row.PackageID == id));

            PackageHeader head = ctx.PackageHeaders.Single(row => row.ID == id);

            head.Name = name;
            head.PackageDuesInMonth = packageDuesInMonth;
            head.IsActive           = isActive;
            head.OpenEnd            = isOpenEnd;
            head.FreezeFee          = freezeFee;
            EntityHelper.SetAuditFieldForUpdate(head, HttpContext.Current.User.Identity.Name);
            foreach (PackageDetailViewModel item in detail)
            {
                PackageDetail obj = new PackageDetail();
                obj.ItemID    = item.ItemID;
                obj.PackageID = item.PackageID;
                obj.Quantity  = item.Quantity;
                obj.UnitPrice = item.UnitPrice;
                head.PackageDetails.Add(obj);
                ctx.PackageDetails.InsertOnSubmit(obj);
            }
            ctx.SubmitChanges();
        }
Exemplo n.º 8
0
 protected void gvwMaster_RowCommand(object sender, GridViewCommandEventArgs e)
 {
     try
     {
         if (e.CommandName == "EditRow")
         {
             int id = Convert.ToInt32(e.CommandArgument);
             RowID = id;
             mvwForm.SetActiveView(viwAddEdit);
             PackageHeader package = packageProvider.Get(id);
             ddlDuesInMonth.SelectedValue = package.PackageDuesInMonth.ToString();
             txtName.Text        = package.Name;
             chkIsActive.Checked = package.IsActive;
             Detail             = packageProvider.GetDetail(id).ToList();
             chkOpenEnd.Checked = package.OpenEnd;
             txtFreezeFee.Text  = Convert.ToString(package.FreezeFee);
             RefreshDetail();
             txtName.Focus();
         }
         else if (e.CommandName == "DefineClass")
         {
             int id = Convert.ToInt32(e.CommandArgument);
             RowID = id;
             mvwForm.SetActiveView(viwAddEdit2);
             RefreshActiveClassInPackages();
         }
     }
     catch (Exception ex)
     {
         mvwForm.SetActiveView(viwRead);
         WebFormHelper.SetLabelTextWithCssClass(lblMessage, ex.Message, LabelStyleNames.ErrorMessage);
     }
 }
        public void PrintMigratedWithFailure(PackageHeader oldPkg, PackageHeader newPkg,
                                             Dictionary <string, object> oldProperties, Dictionary <string, object> newProperties)
        {
            XmlElement   pkg  = result.CreateElement("package");
            XmlAttribute name = result.CreateAttribute("name");

            name.Value = oldPkg.name;
            pkg.Attributes.Append(name);
            result.SelectSingleNode("PackagesMigrationReport/MigratedWithFailure").AppendChild(pkg);

            XmlElement oldPs = result.CreateElement("oldProperties");
            XmlElement newPs = result.CreateElement("newProperties");

            foreach (KeyValuePair <string, object> entry in oldProperties)
            {
                XmlElement   prop   = result.CreateElement(entry.Key);
                XmlAttribute oldVal = result.CreateAttribute("oldValue");
                XmlAttribute newVal = result.CreateAttribute("newValue");
                oldVal.Value = entry.Value.ToString();
                newVal.Value = newProperties[entry.Key].ToString();
                prop.Attributes.Append(oldVal);
                prop.Attributes.Append(newVal);
                pkg.AppendChild(prop);
            }

            result.Save(resultXmlPath);
        }
Exemplo n.º 10
0
        //package unserial
        public Package CreatePackage(byte[] data, int offset, int length)
        {
            #if DEBUG_CORE
            Debug.Log("[PackageFactory CreatePackage] create package start, length:" + length.ToString(), Unity.Debug.LogLevel.Socket);
            #endif

            if (data.Length >= (offset + length))
            {
                PackageHeader header = this.CreatePackageHeader(data, offset, length);
                if (header != null && (length - HeaderSize()) >= header.Length)
                {
                    int dataLen = header.Length;

                    #if DEBUG_CORE
                    Debug.Log("[PackageFactory CreatePackage] create package success, message id: " + header.MessageId.ToString() + " body length:" + header.Length.ToString(), Unity.Debug.LogLevel.Socket);
                    #endif

                    Package p = this.CreatePackage();
                    p.Header = header;
                    p.Data   = new byte[dataLen]; //必须提交取出header.Length,因在把其设置到package时,它的Length会被旧data重写
                    Array.Copy(data, offset + HeaderSize(), p.Data, 0, header.Length);
                    return(p);
                }
            }

            #if DEBUG_CORE
            Debug.Log("[PackageFactory CreatePackage] create package failed", Unity.Debug.LogLevel.Socket);
            #endif

            return(null);
        }
Exemplo n.º 11
0
        public void BuildEntries(PackageHeader header, PackageDatabase db)
        {
            this.treeBundleEntries.Children.Clear();
            this.treeReferenceEntries.Children.Clear();
            this.ClearEntryFields();
            this.Title = String.Format("{0} - Bundle Inspector", header.Name.ToString());

            this.lookup_db = db;
            foreach (PackageFileEntry entry in header.Entries)
            {
                DatabaseEntry db_ent = db.EntryFromID(entry.ID);

                string path = db_ent != null?General.GetFullFilepath(db_ent, db) : entry.ID.ToString();

                this.treeBundleEntries.Children.Add(
                    new TreeItem {
                    Text = path, Tag = entry
                }
                    );
            }

            foreach (PackageFooterEntry entry in header.References)
            {
                this.treeReferenceEntries.Children.Add(
                    new TreeItem {
                    Text = String.Format("{0}.{1}", entry.Path.ToString(), entry.Extension.ToString()), Tag = entry
                }
                    );
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Writes a package header with a zeroed MD5 hash.  We'll come back
        /// and update this when we compute the hash during <see cref="Close()" />.
        /// </summary>
        private void Create()
        {
            var header = new PackageHeader();

            packageOut.SetLength(0);
            header.Seralize(packageOut);
            cbHeader = (int)packageOut.Position;
        }
Exemplo n.º 13
0
        public void LoadPackages(string filename)
        {
            this.CurrentProgressString = "Beginning Operation";

            this.PackageHeaders = new SortedDictionary <Idstring, PackageHeader>();

            this.CurrentProgressString = "Loading Existing Hashes";

            App.Instance.LoadHashlists();

            this.CurrentProgressString = "Loading Database";
            //Load Bundle Database
            this.BundleDB = new PackageDatabase(filename);

            this.CurrentProgressString = "Loading Hashlist";
            General.LoadHashlist(this.WorkingDirectory, this.BundleDB);

            this.CurrentProgressString = "Registering File Entries";
            Dictionary <uint, FileEntry> fileEntries = this.DatabaseEntryToFileEntry(this.BundleDB.GetDatabaseEntries());

            this.CurrentProgressString = "Loading Packages";

            List <string> files = Directory.EnumerateFiles(this.WorkingDirectory, "*.bundle").ToList();

            for (int i = 0; i < files.Count; i++)
            {
                string file = files[i];
                if (file.EndsWith("_h.bundle"))
                {
                    continue;
                }

                PackageHeader bundle = new PackageHeader();
                if (!bundle.Load(file))
                {
                    continue;
                }

                this.CurrentProgressString = String.Format("Loading Package {0}/{1}", i, files.Count);
                this.AddBundleEntriesToFileEntries(fileEntries, bundle.Entries);
                this.PackageHeaders.Add(bundle.Name, bundle);
            }

            this.CurrentProgressString = "Registring Folder Layout";
            this.Root = new FolderItem(fileEntries)
            {
                Path = "assets", Name = "assets"
            };
            foreach (FileEntry entry in fileEntries.Values)
            {
                this.RawFiles.Add(new Tuple <Idstring, Idstring, Idstring> (entry._path, entry._language, entry._extension), entry);
            }

            this.finishedLoad = true;
            HashIndex.Clear();
            GC.Collect();
            this.CurrentProgressString = "Finishing";
        }
Exemplo n.º 14
0
        public void ExtractBundle(PackageHeader bundle, string bundle_id)
        {
            string bundle_file = Path.Combine(StaticStorage.settings.AssetsFolder, bundle_id + ".bundle");

            if (!File.Exists(bundle_file))
            {
                string error_message = "Bundle file does not exist.";
                MessageBox.Show(error_message);
                TextWriteLine(error_message);
                return;
            }
            using (FileStream fs = new FileStream(bundle_file, FileMode.Open, FileAccess.Read))
            {
                using (BinaryReader br = new BinaryReader(fs))
                {
                    for (; current_bundle_progress < current_bundle_total_progress; current_bundle_progress++)
                    {
                        PackageFileEntry be = bundle.Entries[(int)current_bundle_progress];
                        if (this.terminate)
                        {
                            break;
                        }

                        string path = Path.Combine(extract_folder, this.GetFileName(be));

                        if (StaticStorage.settings.IgnoreExistingFiles && File.Exists(path))
                        {
                            continue;
                        }

                        string folder = Path.GetDirectoryName(path);

                        if (!String.IsNullOrWhiteSpace(folder) && !Directory.Exists(folder))
                        {
                            Directory.CreateDirectory(folder);
                        }

                        if (be.Length == 0 && File.Exists(path))
                        {
                            continue;
                        }

                        fs.Position = be.Address;
                        byte[] data;
                        if (be.Length == -1)
                        {
                            data = br.ReadBytes((int)(fs.Length - fs.Position));
                        }
                        else
                        {
                            data = br.ReadBytes((int)be.Length);
                        }

                        File.WriteAllBytes(path, data);
                    }
                }
            }
        }
Exemplo n.º 15
0
        protected byte[] AddHeader(byte[] data)
        {
            byte[] re;
            int    length = data.Length;

            byte[] len = ByteConverter.Int2Byte(length);
            re = PackageHeader.Concat(len).Concat(data).ToArray();
            return(re);
        }
Exemplo n.º 16
0
        public void TestViewPackageDetailsCommand()
        {
            // Arrange
            string      packageToOpen = "Sample View Extension";
            List <User> packageAuthor = new List <User> {
                new User {
                    _id = "1", username = "******"
                }
            };
            string packageDescription = "Dynamo sample view extension.";

            PackageDetailsViewExtension.PackageManagerClientViewModel = ViewModel.PackageManagerClientViewModel;

            PackageHeader packageHeader = new PackageHeader
            {
                _id      = null,
                name     = packageToOpen,
                versions = PackageVersions,
                latest_version_update = System.DateTime.Now,
                num_versions          = PackageVersions.Count,
                comments          = null,
                num_comments      = 0,
                latest_comment    = null,
                votes             = 0,
                downloads         = 0,
                repository_url    = null,
                site_url          = null,
                banned            = false,
                deprecated        = false,
                @group            = null,
                engine            = null,
                license           = null,
                used_by           = null,
                host_dependencies = Hosts,
                num_dependents    = 0,
                description       = packageDescription,
                maintainers       = packageAuthor,
                keywords          = null
            };
            PackageManagerSearchElement packageManagerSearchElement = new PackageManagerSearchElement(packageHeader);

            PackageDetailsViewExtension.OpenPackageDetails(packageManagerSearchElement);
            PackageDetailsView packageDetailsView = PackageDetailsViewExtension.PackageDetailsView;

            Assert.IsInstanceOf <PackageDetailsViewModel>(packageDetailsView.DataContext);
            PackageDetailsViewModel packageDetailsViewModel = packageDetailsView.DataContext as PackageDetailsViewModel;

            // Act
            PackageDetailsViewExtension.PackageManagerClientViewModel
            .DynamoViewModel
            .OnViewExtensionOpenWithParameterRequest("Package Details", packageManagerSearchElement);

            // Assert
            Assert.AreEqual(packageToOpen, packageDetailsViewModel.PackageName);
            Assert.AreEqual(packageAuthor.First().username, packageDetailsViewModel.PackageAuthorName);
            Assert.AreEqual(packageDescription, packageDetailsViewModel.PackageDescription);
        }
Exemplo n.º 17
0
        /// <summary>
        /// Outputs the pack file to the given stream.
        /// </summary>
        /// <param name="dst">The DST.</param>
        public void SaveTo(Stream dst)
        {
            var head = new FileHeader
            {
                Signature  = PackCommon.Header,
                Revision   = Revision,
                EntryCount = _entries.Count,
                Path       = Root,
                Ft1        = DateTime.UtcNow.ToFileTimeUtc(),
                Ft2        = DateTime.UtcNow.ToFileTimeUtc()
            };

            var pkgHead = new PackageHeader
            {
                EntryCount      = _entries.Count,
                InfoHeaderSize  = 0,
                DataSectionSize = (uint)_bodyStream.Position,
                BlankSize       = 0,
                Zero            = new byte[16]
            };

            var infos = new List <Tuple <byte[], PackageItemInfo> >();

            foreach (var e in _entries)
            {
                var info = new PackageItemInfo()
                {
                    CompressedSize   = e.SizeInPack,
                    DecompressedSize = e.DecompressedSize,
                    IsCompressed     = e.IsCompressed,
                    Offset           = (uint)e.DataOffset,
                    Seed             = e.CryptoSeed,
                    CreationTime     = e.CreatedDate.ToFileTime(),
                    CreationTime2    = e.CreatedDate.ToFileTime(),
                    ModifiedTime     = e.ModifiedDate.ToFileTime(),
                    ModifiedTime2    = e.ModifiedDate.ToFileTime(),
                    LastAccessTime   = e.AccessDate.ToFileTime()
                };

                var bytes = PackCommon.EncodeName(e.Name);

                infos.Add(Tuple.Create(bytes, info));
                pkgHead.InfoHeaderSize += bytes.Length + StructUtil.SizeOf <PackageItemInfo>();
            }

            head.WriteToStream(dst);
            pkgHead.WriteToStream(dst);
            foreach (var i in infos)
            {
                dst.Write(i.Item1, 0, i.Item1.Length);
                i.Item2.WriteToStream(dst);
            }

            _bodyStream.Position = 0;
            _bodyStream.CopyTo(dst);
        }
Exemplo n.º 18
0
 private void ReadHeader(PackageHeader packageHeader)
 {
     if (packageHeader?.Created != null)
     {
         DateTime dateTime;
         if (DateTime.TryParse(packageHeader.Created.Value, out dateTime))
         {
             Document.CreatedOn = dateTime;
         }
     }
 }
Exemplo n.º 19
0
        /// <summary>
        ///     Adds a PackageHeader, recently downloaded from the Package Manager, to Search
        /// </summary>
        /// <param name="packageHeader">A PackageHeader object</param>
        public void Add(PackageHeader packageHeader)
        {
            var searchEle = new PackageManagerSearchElement(packageHeader);

            SearchDictionary.Add(searchEle, searchEle.Name);
            if (packageHeader.keywords != null && packageHeader.keywords.Count > 0)
            {
                SearchDictionary.Add(searchEle, packageHeader.keywords);
            }
            SearchDictionary.Add(searchEle, searchEle.Description);
        }
        private void Init(Stream input)
        {
            if (input.Length < 0x100)
            {
                throw new Exception(
                          "Invalid Savedata!\nData is too short for it to be valid, please select a valid save file");
            }
            long val = input.ReadInt32(true);

            if (val != (long)PackageHeader.Mc02)
            {
                input.Position -= 4;
                val             = input.ReadInt64(true);
                if (val != (long)PackageHeader.Fb)
                {
                    throw new Exception("Invalid Package Header!");
                }
            }
            PackageHeader = (PackageHeader)val;
            bool isbigendian = PackageHeader == PackageHeader.Mc02;

            if (PackageHeader == PackageHeader.Mc02)
            {
                InitMcPackage(input);
            }
            else
            {
                InitFbPackage(input);
            }
            uint hash = input.ReadUInt32(isbigendian);

            Header = input.ReadBytes(HeaderLength - 4);
            var crc = new DA3CRC();

            if (crc.Compute(Header) != hash)
            {
                throw new Exception(
                          "Header data did not pass intergrity check!\nPlease choose a valid unmodified save to proceed");
            }
            hash = input.ReadUInt32(isbigendian);
            var  data  = input.ReadBytes(DataLength - 4);
            uint xhash = crc.Compute(data);

            if (hash != xhash)
            {
                throw new Exception(
                          "Save data did not pass the intergrity check!\nPlease choose a valid unmodified save to proceed");
            }

            var xio = new DAIIO(data, isbigendian);

            DataStructure = new SaveDataStructure().Read(xio);
            xio.Close();
        }
Exemplo n.º 21
0
        public void TestOpenDependencyDetails()
        {
            // Arrange
            string packageToOpen      = "Sample View Extension";
            string packageAuthor      = "DynamoTeam";
            string packageDescription = "Dynamo sample view extension.";

            PackageDetailsViewExtension.PackageManagerClientViewModel = ViewModel.PackageManagerClientViewModel;

            PackageHeader packageHeader = new PackageHeader
            {
                _id      = null,
                name     = string.Empty,
                versions = PackageVersions,
                latest_version_update = System.DateTime.Now,
                num_versions          = PackageVersions.Count,
                comments          = null,
                num_comments      = 0,
                latest_comment    = null,
                votes             = 0,
                downloads         = 0,
                repository_url    = null,
                site_url          = null,
                banned            = false,
                deprecated        = false,
                @group            = null,
                engine            = null,
                license           = null,
                used_by           = null,
                host_dependencies = Hosts,
                num_dependents    = 0,
                description       = null,
                maintainers       = UsersList,
                keywords          = null
            };
            PackageManagerSearchElement packageManagerSearchElement = new PackageManagerSearchElement(packageHeader);

            PackageDetailsViewExtension.OpenPackageDetails(packageManagerSearchElement);
            PackageDetailsView packageDetailsView = PackageDetailsViewExtension.PackageDetailsView;

            Assert.IsInstanceOf <PackageDetailsViewModel>(packageDetailsView.DataContext);
            PackageDetailsViewModel packageDetailsViewModel = packageDetailsView.DataContext as PackageDetailsViewModel;

            // Act
            packageDetailsViewModel.OpenDependencyDetails(packageToOpen);

            // Assert
            PackageDetailsView      newPackageDetailsView      = PackageDetailsViewExtension.PackageDetailsView;
            PackageDetailsViewModel newPackageDetailsViewModel = newPackageDetailsView.DataContext as PackageDetailsViewModel;

            Assert.AreEqual(packageToOpen, newPackageDetailsViewModel.PackageName);
            Assert.AreEqual(packageAuthor, newPackageDetailsViewModel.PackageAuthorName);
            Assert.AreEqual(packageDescription, newPackageDetailsViewModel.PackageDescription);
        }
Exemplo n.º 22
0
 void btnInspectPackage_Click(object sender, EventArgs e)
 {
     if (this._focused_package != null)
     {
         PackageHeader package = this.Browser.PackageHeaders[this._focused_package];
         new PackageInspector(package, this.Browser.BundleDB).Show();
     }
     else
     {
         MessageBox.Show("You must select a package to inspect!", "Further Action Required!", MessageBoxType.Information);
     }
 }
Exemplo n.º 23
0
    //[System.Web.Services.WebMethod]
    //public static void PM_LoadPackageDetail(string contractNo)
    //{
    //    using (FitnessDataContext ctx = new FitnessDataContext())
    //    {
    //        ContractProvider contractProvider = new ContractProvider(ctx);
    //        PackageProvider packageProvider = new PackageProvider(ctx);
    //        PackageHeader pkg = contractProvider.GetPackageInContract(contractNo);
    //        IEnumerable<PackageDetailViewModel> package = packageProvider.GetDetail(pkg.ID);
    //        page._PackageDetail = package.ToList();
    //        page.gvwPackage.DataSource = package;
    //        page.gvwPackage.DataBind();
    //        page.CalculateTotalInvoiceAndPayment();
    //        page.txtNotes.Text = contractNo;
    //    }
    //}

    private void LoadPackageDetail()
    {
        PackageHeader pkg = contractProvider.GetPackageInContract(txtContractNo.Text);
        IEnumerable <PackageDetailViewModel> package = packageProvider.GetDetail(pkg.ID);

        _PackageDetail        = package.ToList();
        gvwPackage.DataSource = package;
        gvwPackage.DataBind();
        CalculateTotalInvoiceAndPayment();

        lblPackage.Text = pkg.Name;
    }
Exemplo n.º 24
0
    public void execute()
    {
        var browser = Utils.CurrentWindow;

        using (StreamWriter file = new StreamWriter("packages.txt"))
        {
            foreach (var pair in browser.PackageHeaders)
            {
                PackageHeader package = pair.Value;
                if (package.Name.HasUnHashed)
                {
                    file.WriteLine("@" + package.Name);
                    Console.WriteLine("Current pacakge " + package.Name.UnHashed);
                }
                else
                {
                    Console.WriteLine("Current pacakge " + package.Name.Hashed);
                    Console.WriteLine("[Warning] no unhashed name, cannot add this pacakge to the list.");
                }
                foreach (PackageFileEntry entry in package.Entries)
                {
                    Idstring path = browser.DB.EntryFromID(entry.ID).Path;
                    Idstring ext  = browser.DB.EntryFromID(entry.ID).Extension;
                    if (path.HasUnHashed)
                    {
                        if (package.Name.HasUnHashed)
                        {
                            file.WriteLine(path.UnHashed + "." + ext.UnHashed);
                        }
                        else
                        {
                            Console.WriteLine("File " + path.Hashed + " has no unhashed name, cannot add to the list.");
                        }
                    }
                }
            }

            file.WriteLine("@other");
            foreach (var pair in HashIndex.Hashes)
            {
                if (pair.Value.HasUnHashed)
                {
                    string unhashed = pair.Value.UnHashed;
                    if (!unhashed.Contains("/") && !unhashed.Contains("PassThroughGP") && !unhashed.Contains("pln_") && !unhashed.Contains("achievement_"))
                    {
                        file.WriteLine(unhashed);
                    }
                }
            }
        };
    }
Exemplo n.º 25
0
    /// ------------------------------------------------------------------------------
    /// <summary>
    /// 发送消息
    /// </summary>
    /// ------------------------------------------------------------------------------
    public void SendMessage(PackageHeader pMsg)
    {
        if (mClient != null)
        {
            mSendBuffer.Flush();

            // 序列消息到 stream 中
            pMsg.serialize(ref mSendBuffer);

            // 序列到网络中
            mClient.GetStream().Write(mSendBuffer.ToBytes(), 0, mSendBuffer.Writelength());
            mClient.GetStream().Flush();
        }
    }
Exemplo n.º 26
0
        public override void WriteBundle(PackageHeader header, string bundle_id)
        {
            if (ListOptions.BundleInfo.Count == 0)
            {
                return;
            }

            this.Output.AppendLine();
            for (int i = 0; i < this.ListOptions.BundleInfo.Count; i++)
            {
                ListBundleOption opt = this.ListOptions.BundleInfo[i];
                this.Output.Append((i == 0 ? "" : ",") + "\"" + opt.StringFunc(Parent, header, bundle_id) + "\"");
            }
            this.WriteEmptyBundleColumns = false;
        }
Exemplo n.º 27
0
        public virtual void WriteBundle(PackageHeader header, string bundle_id)
        {
            if (ListOptions.BundleInfo.Count == 0)
            {
                return;
            }

            this.Output.AppendLine();
            for (int i = 0; i < this.ListOptions.BundleInfo.Count; i++)
            {
                ListBundleOption opt = this.ListOptions.BundleInfo[i];
                this.Output.Append((i == 0 ? "" : " - ") + opt.StringFunc(Parent, header, bundle_id));
            }
            this.Output.AppendLine((this.ListOptions.EntryInfo.Count > 0 ? ":" : ""));
        }
Exemplo n.º 28
0
        /// <summary>
        /// Reads the package infos.
        /// </summary>
        /// <param name="packageHeader">The package header.</param>
        /// <exception cref="System.Exception">Entry ' + name + ' is corrupted!</exception>
        private void ReadPackageInfos(PackageHeader packageHeader)
        {
            var infoHeader = new byte[packageHeader.InfoHeaderSize];

            _source.Read(infoHeader, 0, infoHeader.Length);

            var ptr = 0;

            for (var i = 0; i < packageHeader.EntryCount; i++)
            {
                int nameSectionLength;
                if (infoHeader[ptr] < 4)
                {
                    nameSectionLength = 0x10 * (infoHeader[ptr] + 1);
                }
                else if (infoHeader[ptr] == 4)
                {
                    nameSectionLength = 0x60;
                }
                else
                {
                    nameSectionLength = BitConverter.ToInt32(infoHeader, ptr + 1) + 5;
                }

                var lengthSize = (infoHeader[ptr] > 4 ? 5 : 1);

                var nameStart     = ptr + lengthSize;
                var maxNameLength = nameSectionLength - lengthSize - 1;                 // 1 for the trailing \0, which we don't care about.

                var name = Encoding.UTF8.GetString(infoHeader, nameStart, maxNameLength).TrimEnd('\0');

                ptr += nameSectionLength;

                var info = infoHeader.GetStruct <PackageItemInfo>(ptr);

                if (info.Zero != 0)
                {
                    throw new Exception("Entry '" + name + "' is corrupted!");
                }

                _entries[name.NormalizePath()] = new PackEntry(info, name, maxNameLength);

                ptr += StructUtil.SizeOf <PackageItemInfo>();
            }
        }
Exemplo n.º 29
0
        /// <summary>
        /// Add Package Header to Package
        /// </summary>
        public void CreateHeader()
        {
            PackageHeader header = new PackageHeader();

            header.XPDLVersion = new XPDLVersion()
            {
                Value = XpdlInfo.Version
            };
            header.Vendor = new Vendor()
            {
                Value = Assembly.GetExecutingAssembly().GetName().Name
            };
            //To Utc date time format
            header.Created = new Created()
            {
                Value = XpdlInfo.GetUtcDateTime(_document.CreatedOn)
            };
            Package.PackageHeader = header;
        }
Exemplo n.º 30
0
        public void FilterFuturePackages_IEnumerableTuplePackageHeaderPackageVersion_ReturnsCorrectResults()
        {
            var pkgVersion063 = new PackageVersion()
            {
                engine_version = "0.6.3"
            };

            var pkgVersion080 = new PackageVersion()
            {
                engine_version = "0.8.0"
            };

            var pkg063 = new PackageHeader()
            {
                name = "063",
                versions = new List<PackageVersion>()
                {
                    pkgVersion063
                }
            };

            var pkg080 = new PackageHeader()
            {
                name = "080",
                versions = new List<PackageVersion>()
                {
                    pkgVersion080
                }
            };

            var pkgList = new List<Tuple<PackageHeader, PackageVersion>>()
            {
                new Tuple<PackageHeader, PackageVersion>(pkg063, pkgVersion063),
                new Tuple<PackageHeader, PackageVersion>(pkg080, pkgVersion080),
            };

            var dynamoVersion = Version.Parse("0.7.1");
            var filteredPkgList = pkgList.FilterFuturePackages(dynamoVersion);

            Assert.AreEqual(1, filteredPkgList.Count());
            Assert.AreEqual("080", filteredPkgList.First().Item1.name);
        }
Exemplo n.º 31
0
        public void FilterFuturePackages_IEnumerableTuplePackageHeaderPackageVersion_ReturnsCorrectResults()
        {
            var pkgVersion063 = new PackageVersion()
            {
                engine_version = "0.6.3"
            };

            var pkgVersion080 = new PackageVersion()
            {
                engine_version = "0.8.0"
            };

            var pkg063 = new PackageHeader()
            {
                name     = "063",
                versions = new List <PackageVersion>()
                {
                    pkgVersion063
                }
            };

            var pkg080 = new PackageHeader()
            {
                name     = "080",
                versions = new List <PackageVersion>()
                {
                    pkgVersion080
                }
            };

            var pkgList = new List <Tuple <PackageHeader, PackageVersion> >()
            {
                new Tuple <PackageHeader, PackageVersion>(pkg063, pkgVersion063),
                new Tuple <PackageHeader, PackageVersion>(pkg080, pkgVersion080),
            };

            var dynamoVersion   = Version.Parse("0.7.1");
            var filteredPkgList = pkgList.FilterFuturePackages(dynamoVersion);

            Assert.AreEqual(1, filteredPkgList.Count());
            Assert.AreEqual("080", filteredPkgList.First().Item1.name);
        }
		public string Decrypt(string path)
		{
			FileStream readerStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
			Reader reader = new Reader(readerStream, Endian.Big);
			PackageData = ReadHeader(reader);

			if (!IsValidPKG(PackageData))
				return "";

			switch (PackageData.pkg_type)
			{
				case 0x01:
					AESKeys = PKG_PS3;
					break;
				case 0x02:
					AESKeys = PKG_PSP;
					break;

				default:
					return "";
			}

			return DecryptWrite(path, reader);
		}
Exemplo n.º 33
0
 /// <summary>
 ///     Adds a PackageHeader, recently downloaded from the Package Manager, to Search
 /// </summary>
 /// <param name="packageHeader">A PackageHeader object</param>
 public void Add(PackageHeader packageHeader)
 {
     var searchEle = new PackageManagerSearchElement(packageHeader);
     SearchDictionary.Add(searchEle, searchEle.Name);
     if (packageHeader.keywords != null && packageHeader.keywords.Count > 0)
         SearchDictionary.Add(searchEle, packageHeader.keywords);
     SearchDictionary.Add(searchEle, searchEle.Description);
     SearchAndUpdateResultsSync(SearchText);
 }
Exemplo n.º 34
0
        protected void ReceiverLoop()
        {
            byte[] packageHeaderBuff = new byte[packageHeaderSize], packagePayloadBuff = null;
            int packageBytesRead = 0, expectedSize = -1, amnt = 0;
            PackageHeader lastHeader = new PackageHeader();

            while (!Disposed)
            {
                packageBytesRead = 0;
                expectedSize = -1;
                amnt = 0;
                packagePayloadBuff = null;

                while (true)
                {
                    if (packagePayloadBuff == null)
                        //  No payload buffer means we're reading a header.
                        try
                        {
                            //Console.WriteLine("HEADER Receipt start.");

                            //stream.BeginRead(packageHeaderBuff, 0, packageHeaderSize, LowStartGettingPackages_Callback, null);
                            //amnt = stream.Read(packageHeaderBuff, 0, packageHeaderSize);
                            amnt = streamOut.Read(packageHeaderBuff, packageBytesRead, packageHeaderSize - packageBytesRead);
                        }
                        catch (ObjectDisposedException x)
                        {
                            _CheckIfStopped(x);

                            return;
                        }
                        catch (Exception x)
                        {
                            _OnPipeFailure(x, false, null);

                            return;
                        }
                    else
                        try
                        {
                            //Console.WriteLine("PAYLOAD Receipt start.");

                            //stream.BeginRead(packagePayloadBuff, packageBytesRead - packageHeaderSize, expectedSize - packageBytesRead, LowStartGettingPackages_Callback, ar.AsyncState);
                            amnt = streamOut.Read(packagePayloadBuff, packageBytesRead - packageHeaderSize, expectedSize - packageBytesRead);
                        }
                        catch (ObjectDisposedException x)
                        {
                            _CheckIfStopped(x);

                            return;
                        }
                        catch (Exception x)
                        {
                            _OnPipeFailure(x, false, null);

                            return;
                        }

                    if (amnt == 0)
                    {
                        _CheckIfStopped(null);

                        return;
                    }

                    packageBytesRead += amnt;

                    __addReceived(amnt);

                    if (packageBytesRead == packageHeaderSize)
                    {
                        Struct_mapping.ByteArrayToStructure(packageHeaderBuff, ref lastHeader);
                        uint len = lastHeader.Size;

                        expectedSize = (int)len + packageHeaderSize;

                        packagePayloadBuff = new byte[len];
                    }

                    if (packageBytesRead == expectedSize)
                    {
                        try
                        {
                            OnInternalPackageReceived(new Package(lastHeader, packagePayloadBuff));
                        }
                        finally
                        {
                            packagePayloadBuff = null;

                            //  Getting ready to receive the next package header here.
                        }

                        break;
                    }
                }
            }
        }//*/
		public PackageHeader ReadHeader(Reader reader)
		{
			PackageHeader header = new PackageHeader();
			header.magic = reader.ReadBytes(0x04);
			Array.Reverse(header.magic);

			reader.Position = 0x07;
			header.pkg_type = reader.ReadByte();

			reader.Position = 0x08;
			header.pkg_info_offset = reader.ReadUInt32();

			reader.Position = 0x0C;
			header.pkg_info_count = reader.ReadUInt32();

			reader.Position = 0x10;
			header.header_size = reader.ReadUInt32();

			reader.Position = 0x14;
			header.item_count = reader.ReadUInt32();

			reader.Position = 0x18;
			header.total_size = reader.ReadUInt64();

			reader.Position = 0x20;
			header.data_offset = reader.ReadUInt64();

			reader.Position = 0x28;
			header.data_size = reader.ReadUInt64();

			reader.Position = 0x30;
			header.contentid = reader.ReadString(0x24);

			reader.Position = 0x60;
			header.digest = reader.ReadBytes(0x10);
			Array.Reverse(header.digest);

			reader.Position = 0x70;
			header.pkg_data_riv = reader.ReadBytes(0x10);
			Array.Reverse(header.pkg_data_riv);

			reader.Position = 0x80;
			header.header_cmac_hash = reader.ReadBytes(0x10);
			Array.Reverse(header.header_cmac_hash);

			reader.Position = 0x90;
			header.header_npdrm_signature = reader.ReadBytes(0x28);
			Array.Reverse(header.header_npdrm_signature);

			reader.Position = 0xB8;
			header.header_sha1_hash = reader.ReadBytes(0x08);
			Array.Reverse(header.header_sha1_hash);

			return header;
		}
		public string GetFolderName(PackageHeader header)
		{
			string[] contentid = header.contentid.Split('-');
			return contentid[1].Replace("_00", "");
		}
		public static bool IsValidPKG(PackageHeader header)
		{
			byte[] magic = header.magic;
			if (magic[0] == 0x7F && magic[1] == 0x50 && magic[2] == 0x4B && magic[3] == 0x47) // Check String
				return true;

			return false;
		}