Пример #1
0
        public Task <ActionResult> Create([Bind(Include = "SoftwareId,Name,Changelog")] Release release, string blobUrl)
        {
            if (ModelState.IsValid)
            {
                if (blobUrl != null && blobUrl.Length > 0)
                {
                    bool error = false;

                    // Check Software Version
                    var m = RegexHelper.SoftwareName.Match(release.Name);
                    if (!m.Success)
                    {
                        ViewBag.NameError = "Your prefix and suffix aren't valid values. The prefix is not optional.";
                        error             = true;
                    }
                    // If the uploaded file is not a tarfile, return with error
                    if (!RegexHelper.FwBlobUrl.IsMatch(blobUrl))
                    {
                        ViewBag.FileError = "URL must link to tarfile in an Azure BLOB storage container named 'fwupdates' packed with update data and a script named 'apply.sh'";
                        error             = true;
                    }
                    // If the software version already exists
                    if (db.Releases.Any(s => s.Name.ToLower().Equals(release.Name.ToLower())))
                    {
                        ViewBag.NameError = "This software version already exists.";
                        error             = true;
                    }
                    if (error)
                    {
                        return(Task.Factory.StartNew <ActionResult>(
                                   () => {
                            var softwareVersions = db.SoftwareVersions.ToList();
                            return View("Create", new SoftwareViewCreate
                            {
                                Release = null,
                                SoftwareVersions = softwareVersions
                            });
                        }));
                    }

                    // Ok, form is valid
                    // Read associated SoftwareVersion
                    // Get the group
                    var prefix          = m.Groups[1].Value;
                    var suffix          = m.Groups[4].Value;
                    var releaseNum      = Int32.Parse(m.Groups[2].Value);
                    var softwareVersion = db.SoftwareVersions.FirstOrDefault(sv => sv.Prefix.Equals(prefix) && sv.Suffix.Equals(suffix));
                    // If we don't find a SoftwareVersion in database, create a new one
                    if (softwareVersion == null)
                    {
                        softwareVersion = new SoftwareVersion
                        {
                            Prefix = prefix,
                            Suffix = suffix,
                            // First release
                            CurrentReleaseNum = 1
                        };
                        db.SoftwareVersions.Add(softwareVersion);
                    }
                    else
                    {
                        if (softwareVersion.CurrentReleaseNum + 1 != releaseNum)
                        {
                            ViewBag.NameError = "The release number is not correct.";
                            return(Task.Factory.StartNew <ActionResult>(
                                       () => {
                                var softwareVersions = db.SoftwareVersions.ToList();
                                return View("Create", new SoftwareViewCreate
                                {
                                    Release = null,
                                    SoftwareVersions = softwareVersions
                                });
                            }));
                        }
                        softwareVersion.CurrentReleaseNum = releaseNum;
                    }
                    // Add reference to SoftwareVersion to Release
                    release.SoftwareVersionId = softwareVersion.SoftwareVersionId;
                    release.Num = softwareVersion.CurrentReleaseNum;

                    try
                    {
                        release.Status = "Uploaded";
                        release.Author = "SWT";
                        release.Date   = DateTime.Now;
                        // Add to database
                        db.Releases.Add(release);
                        db.SaveChanges();

                        var location = Server.MapPath("~/sw-updates/" + release.Name);
                        PortalUtils.CreateNewFirmwareUpdateTask(blobUrl, location, release.SoftwareId);
                        return(Task.Factory.StartNew <ActionResult>(
                                   () => {
                            return RedirectToAction("Index");
                        }));
                        //return RedirectToAction("Index");
                    }
                    catch (Exception e)
                    {
                        release.Status = "Error during initialization";
                        db.SaveChanges();
                    }
                }
            }

            return(Task.Factory.StartNew <ActionResult>(
                       () => {
                return View(release);
            }));
        }
        private void BindUserSpace()
        {
            //cmdSave.Attributes.Add("AutoPostback", "true");
            spanSpace.Visible    = false;
            pnlViewSpace.Visible = false;
            pnlEditSpace.Visible = false;

            lnkCurrentPage.Text = PortalUtils.GetLocalizedPageName(PortalUtils.GetCurrentPageId());

            if (PanelSecurity.PackageId > 0)
            {
                // space
                PackageInfo package = ES.Services.Packages.GetPackage(PanelSecurity.PackageId);
                if (package != null)
                {
                    spanSpace.Visible    = true;
                    pnlViewSpace.Visible = true;

                    lnkSpace.Text        = PortalAntiXSS.EncodeOld(package.PackageName);
                    lnkSpace.NavigateUrl = PortalUtils.GetSpaceHomePageUrl(package.PackageId);

                    cmdSpaceName.Text        = PortalAntiXSS.EncodeOld(package.PackageName);
                    lblSpaceDescription.Text = PortalAntiXSS.EncodeOld(package.PackageComments);

                    UserInfo user = UsersHelper.GetUser(PanelSecurity.SelectedUserId);
                    if (user != null)
                    {
                        lblUserAccountName.Text = PortalAntiXSS.EncodeOld(string.Format("{0} -", user.Username));
                    }

                    lnkCurrentPage.NavigateUrl = PortalUtils.NavigatePageURL(
                        PortalUtils.GetCurrentPageId(), "SpaceID", PanelSecurity.PackageId.ToString());
                }
            }
            else
            {
                //   pnlViewUser.Visible = true;

                // user
                UserInfo user = UsersHelper.GetUser(PanelSecurity.SelectedUserId);
                if (user != null)
                {
                    //      lblUsername.Text = user.Username;

                    lnkCurrentPage.NavigateUrl = PortalUtils.NavigatePageURL(
                        PortalUtils.GetCurrentPageId(), "UserID", PanelSecurity.SelectedUserId.ToString());
                }
            }

            // organization
            bool orgVisible = (PanelRequest.ItemID > 0 && Request[DefaultPage.PAGE_ID_PARAM].Equals(PID_SPACE_EXCHANGE_SERVER, StringComparison.InvariantCultureIgnoreCase));

            spanOrgn.Visible = orgVisible;

            if (orgVisible)
            {
                // load organization details
                Organization org = ES.Services.Organizations.GetOrganization(PanelRequest.ItemID);

                lnkOrgn.NavigateUrl = PortalUtils.EditUrl(
                    "ItemID", PanelRequest.ItemID.ToString(), ORGANIZATION_CONTROL_KEY,
                    "SpaceID=" + PanelSecurity.PackageId.ToString());
                lnkOrgn.Text = org.Name;

                string curCtrlKey = PanelRequest.Ctl.ToLower();
                string ctrlKey    = PortalUtils.GetGeneralESControlKey(Request[DefaultPage.CONTROL_ID_PARAM].ToLower(System.Globalization.CultureInfo.InvariantCulture));

                if (curCtrlKey == "edit_user")
                {
                    ctrlKey = PanelRequest.Context.ToLower() == "user" ? "users" : PanelRequest.Context.ToLower() == "journalingmailbox" ? "journaling_mailboxes" : "mailboxes";
                }
                else if (curCtrlKey == "mailbox_memberof")
                {
                    ctrlKey = PanelRequest.Context.ToLower() == "journalingmailbox" ? "journaling_mailboxes" : "mailboxes";
                }

                ModuleDefinition definition = PortalConfiguration.ModuleDefinitions[EXCHANGE_SERVER_MODULE_DEFINTION_ID];
                ModuleControl    control    = null;
                if (!String.IsNullOrEmpty(ctrlKey) && definition.Controls.ContainsKey(ctrlKey))
                {
                    control = definition.Controls[ctrlKey];
                }

                if (control != null)
                {
                    if (!String.IsNullOrEmpty(control.Src))
                    {
                        lnkOrgCurPage.Text        = PortalUtils.GetLocalizedString(DM_FOLDER_VIRTUAL_PATH + control.Src, PAGE_NANE_KEY);
                        lnkOrgCurPage.NavigateUrl = PortalUtils.EditUrl(
                            "ItemID", PanelRequest.ItemID.ToString(), ctrlKey,
                            "SpaceID=" + PanelSecurity.PackageId.ToString());
                    }
                }
            }
        }
Пример #3
0
 public string GetUserHomeUrl(int userId)
 {
     return(PortalUtils.GetUserHomePageUrl(userId));
 }