コード例 #1
0
        private void CreateTechnicPermissionInfo(Mcmod mod, PermissionPolicy pl, string customPermissionText, string modlink)
        {
            string ps = string.Format("{0}({1}) by {2}{3}At {4}{3}Permissions are {5}{3}", mod.Name, mod.Modid, GetAuthors(mod), Environment.NewLine, modlink, pl);

            if (!string.IsNullOrWhiteSpace(customPermissionText))
            {
                ps += customPermissionText + Environment.NewLine;
            }
            File.AppendAllText(_technicPermissionList, ps + Environment.NewLine);
        }
コード例 #2
0
        private void CreateTechnicPermissionInfo(Mcmod mod, PermissionPolicy pl, string customPermissionText = null)
        {
            string modlink = _ftbPermsSqLhelper.GetPermissionFromModId(mod.Modid).modAuthors;

            while (string.IsNullOrWhiteSpace(modlink) || !Uri.IsWellFormedUriString(modlink, UriKind.Absolute))
            {
                modlink = Prompt.ShowDialog("What is the link to " + mod.Name + "?", "Mod link", false, Prompt.ModsLeftString(_totalMods, _currentMod));
                if (!Uri.IsWellFormedUriString(modlink, UriKind.Absolute))
                {
                    MessageBox.Show("Not a proper url");
                }
            }
            CreateTechnicPermissionInfo(mod, pl, customPermissionText, modlink);
        }
コード例 #3
0
        public override async Task <AuthorizationPolicy> GetPolicyAsync(string policyName)
        {
            var policy = await base.GetPolicyAsync(policyName);

            if (policy == null && PermissionPolicy.TryGetPermission(policyName, out var permission))
            {
                policy = new AuthorizationPolicyBuilder()
                         .AddRequirements(new PermissionRequirement(permission))
                         .Build();

                _options.AddPolicy(policyName, policy);
            }

            return(policy);
        }
コード例 #4
0
        public static void Configure(ConfigurationExpression configuration)
        {
            configuration.For <SecurityController>().DenyAnonymousAccess();

            configuration.For <PermissionController>().DenyAnonymousAccess();

            configuration.For <PasswordController>(x => x.ForgotPasswordAsync(null)).AllowAny();
            configuration.For <PasswordController>(x => x.ResetPasswordAsync(null)).AllowAny();
            configuration.For <PasswordController>(x => x.ChangeMyPasswordAsync(null)).AddPolicy(new PermissionPolicy(Permissions.userChangePassword));
            configuration.For <PasswordController>(x => x.ChangeMyPasswordExpiredAsync(null)).AllowAny();

            configuration.For <SettingsController>(t => t.Get(false)).DenyAnonymousAccess();
            configuration.For <SettingsController>(t => t.GetLayoutSkin(false)).AllowAny();
            configuration.For <SettingsController>(t => t.Set(null)).AddPolicy(new PermissionPolicy(Permissions.manageGeneralSettings));

            configuration.For <LogController>().AllowAny();
            configuration.For <LogController>(l => l.Get(null)).AllowAny();

            configuration.For <RoleController>(t => t.List()).AddPolicy(new PermissionPolicy(Permissions.managerProfile));

            var permissionPolicyUserList = new PermissionPolicy(Permissions.manageUser);

            permissionPolicyUserList.Add(Permissions.managerProfile);
            configuration.For <UserController>(x => x.GetList(null)).AddPolicy(permissionPolicyUserList);
            configuration.For <UserController>(x => x.GetItem(0)).AddPolicy(new PermissionPolicy(Permissions.manageUser));
            configuration.For <UserController>(x => x.GetEmail(0)).DenyAuthenticatedAccess();
            configuration.For <UserController>(x => x.GetMyAccount()).DenyAnonymousAccess();
            configuration.For <UserController>(x => x.GetMyAvatar()).DenyAnonymousAccess();
            configuration.For <UserController>(x => x.CreateAsync(null)).AddPolicy(new PermissionPolicy(Permissions.manageUser));
            configuration.For <UserController>(x => x.UpdateAsync(null)).AddPolicy(new PermissionPolicy(Permissions.manageUser));
            configuration.For <UserController>(x => x.UpdateMyAccountAsync(null)).DenyAnonymousAccess();

            configuration.For <GroupController>(x => x.List()).AddPolicy(new PermissionPolicy(Permissions.managerProfile));
            configuration.For <GroupController>(x => x.CreateAsync(null)).AddPolicy(new PermissionPolicy(Permissions.managerProfile));
            configuration.For <GroupController>(x => x.UpdateAsync(null)).AddPolicy(new PermissionPolicy(Permissions.managerProfile));
            configuration.For <GroupController>(x => x.UpdatePermissionsAsync(null)).AddPolicy(new PermissionPolicy(Permissions.managerProfile));
            configuration.For <GroupController>(x => x.UpdateUsersAsync(null)).AddPolicy(new PermissionPolicy(Permissions.managerProfile));

            configuration.For <APIClientController>(p => p.Delete(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));
            configuration.For <APIClientController>(p => p.Post(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));
            configuration.For <APIClientController>(p => p.Put(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));
            configuration.For <APIClientController>(p => p.PutSecret(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));
            configuration.For <APIClientController>(t => t.Get(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));

            configuration.For <FilesController>(t => t.Index(null)).AllowAny();
        }
コード例 #5
0
        public virtual IPermission SetPermissionPolicy(PermissionPolicy policy)
        {
            PolicyPermission operationPermission = new PolicyPermission(SecurityOperation.NoAccess);

            switch (policy)
            {
            case PermissionPolicy.AllowAllByDefault:
                operationPermission.Operations = SecurityOperation.FullAccess;
                break;

            case PermissionPolicy.ReadOnlyAllByDefault:
                operationPermission.Operations = SecurityOperation.Read;
                break;

            case PermissionPolicy.DenyAllByDefault:
                break;

            default:
                break;
            }
            permissions.Add(operationPermission);
            return(operationPermission);
        }
コード例 #6
0
        private Boolean AreModDone(Mcmod mod)
        {
            if (!IsFullyInformed(mod))
            {
                return(false);
            }
            OwnPermissionsSqlHelper ownPermissionsSqlHelper = new OwnPermissionsSqlHelper();
            bool b = ownPermissionsSqlHelper.DoUserHavePermission(mod.Modid).HasPermission;

            if (b)
            {
                return(true);
            }
            if (_solderHelper.CreateTechnicPack.Checked && _solderHelper.TechnicPermissions.Checked)
            {
                if (_ftbPermissionsSqlHelper.FindPermissionPolicy(mod.Modid,
                                                                  _solderHelper.TechnicPublicPermissions.Checked) != PermissionPolicy.Open)
                {
                    return(false);
                }
            }
            if (!_solderHelper.CreateFTBPack.Checked)
            {
                return(true);
            }
            PermissionPolicy p = _ftbPermissionsSqlHelper.FindPermissionPolicy(mod.Modid,
                                                                               _solderHelper.PublicFTBPack.Checked);

            if (p == PermissionPolicy.Open || p == PermissionPolicy.FTB)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #7
0
        public void CreateFtbPackZip(Mcmod mod, string modfile)
        {
            if (mod.IsSkipping)
            {
                return;
            }
            string fileName = modfile.Substring(modfile.LastIndexOf(Globalfunctions.PathSeperator) + 1);

            if (IsWierdMod(fileName) == 0)
            {
                return;
            }
            string modMd5 = SqlHelper.CalculateMd5(modfile);

            if (!mod.IsIgnore)
            {
                if (!mod.UseShortName)
                {
                    _modsSqLhelper.AddMod(mod.Name, mod.Modid, mod.Version, mod.Mcversion, fileName, modMd5, false);
                }
                if (true)
                {
                    #region Permissions checking
                    PermissionPolicy permLevel = _ftbPermsSqLhelper.FindPermissionPolicy(mod.Modid, PublicFTBPack.Checked);

                    string         overwritelink;
                    OwnPermissions ownPermissions;
                    switch (permLevel)
                    {
                    case PermissionPolicy.Open:
                        break;

                    case PermissionPolicy.Notify:
                        ownPermissions = _ownPermsSqLhelper.DoUserHavePermission(mod.Modid);
                        if (!ownPermissions.HasPermission)
                        {
                            overwritelink = Prompt.ShowDialog(string.Format("{0} requires that you notify the author of inclusion.{1}Please provide proof(an imgur link) that you have done this:{1}Enter \"skip\" to skip the mod.", mod.Name, Environment.NewLine), mod.Name).Replace(" ", "");
                            while (true)
                            {
                                if (overwritelink.ToLower().Equals("skip".ToLower()))
                                {
                                    mod.IsSkipping = true;
                                    return;
                                }
                                if (Uri.IsWellFormedUriString(overwritelink, UriKind.Absolute))
                                {
                                    if (overwritelink.ToLower().Contains("imgur"))
                                    {
                                        _ownPermsSqLhelper.AddOwnModPerm(mod.Name, mod.Modid, overwritelink);
                                        //Get Author
                                        string a = _ftbPermsSqLhelper.GetPermissionFromModId(mod.Modid).modAuthors;
                                        CreateFtbPermissionInfo(mod.Name, mod.Modid, a, overwritelink);
                                        break;
                                    }
                                    MessageBox.Show("Not an imgur link");
                                }
                                else
                                {
                                    MessageBox.Show("Invalid url");
                                }
                                overwritelink = Prompt.ShowDialog(string.Format("{0} requires that you notify the author of inclusion.{1}Please provide proof(an imgur link) that you have done this:{1}Enter \"skip\" to skip the mod.", mod.Name, Environment.NewLine), mod.Name, true, Prompt.ModsLeftString(_totalMods, _currentMod)).Replace(" ", "");
                            }
                        }
                        else
                        {
                            //Get Author
                            string a = _ftbPermsSqLhelper.GetPermissionFromModId(mod.Modid).modAuthors;
                            CreateFtbPermissionInfo(mod.Name, mod.Modid, a, ownPermissions.PermissionLink);
                        }
                        break;

                    case PermissionPolicy.FTB:
                        break;

                    case PermissionPolicy.Request:
                        ownPermissions = _ownPermsSqLhelper.DoUserHavePermission(mod.Modid);
                        if (!ownPermissions.HasPermission)
                        {
                            overwritelink = Prompt.ShowDialog(string.Format("This mod requires that you request permissions from the Mod Author of {0}{1}Please provide proof(an imgur link) that you have this permission:{1}Enter \"skip\" to skip the mod.", mod.Name, Environment.NewLine), mod.Name, true, Prompt.ModsLeftString(_totalMods, _currentMod)).Replace(" ", "");
                            while (true)
                            {
                                if (overwritelink.ToLower().Equals("skip".ToLower()))
                                {
                                    mod.IsSkipping = true;
                                    return;
                                }
                                if (Uri.IsWellFormedUriString(overwritelink, UriKind.Absolute))
                                {
                                    if (overwritelink.ToLower().Contains("imgur"))
                                    {
                                        _ownPermsSqLhelper.AddOwnModPerm(mod.Name, mod.Modid, overwritelink);
                                        //Get Author
                                        string a = _ftbPermsSqLhelper.GetPermissionFromModId(mod.Modid).modAuthors;
                                        CreateFtbPermissionInfo(mod.Name, mod.Modid, a, overwritelink);
                                        break;
                                    }
                                    MessageBox.Show("Not an imgur link");
                                }
                                else
                                {
                                    MessageBox.Show("Invalid url");
                                }
                                overwritelink = Prompt.ShowDialog(string.Format("This mod requires that you request permissions from the Mod Author of {0}{1}Please provide proof(an imgur link) that you have this permission:{1}Enter \"skip\" to skip the mod.", mod.Name, Environment.NewLine), mod.Name, true, Prompt.ModsLeftString(_totalMods, _currentMod)).Replace(" ", "");
                            }
                        }
                        else
                        {
                            //Get Author
                            string a = _ftbPermsSqLhelper.GetPermissionFromModId(mod.Modid).modAuthors;
                            CreateFtbPermissionInfo(mod.Name, mod.Modid, a, ownPermissions.PermissionLink);
                        }
                        break;

                    case PermissionPolicy.Closed:
                        ownPermissions = _ownPermsSqLhelper.DoUserHavePermission(mod.Modid);
                        if (!ownPermissions.HasPermission)
                        {
                            overwritelink = Prompt.ShowDialog(string.Format("The FTB permissionsheet states that permissions for {0} is closed.{1}Please provide proof(an imgur link) that this is not the case:{1}Enter \"skip\" to skip the mod.", mod.Name, Environment.NewLine), mod.Name, true, Prompt.ModsLeftString(_totalMods, _currentMod)).Replace(" ", "");
                            while (true)
                            {
                                if (overwritelink.ToLower().Equals("skip".ToLower()))
                                {
                                    mod.IsSkipping = true;
                                    return;
                                }
                                if (Uri.IsWellFormedUriString(overwritelink, UriKind.Absolute))
                                {
                                    if (overwritelink.ToLower().Contains("imgur"))
                                    {
                                        _ownPermsSqLhelper.AddOwnModPerm(mod.Name, mod.Modid, overwritelink);
                                        //Get Author
                                        string a = _ftbPermsSqLhelper.GetPermissionFromModId(mod.Modid).modAuthors;
                                        CreateFtbPermissionInfo(mod.Name, mod.Modid, a, overwritelink);
                                        break;
                                    }
                                    MessageBox.Show("Not an imgur link");
                                }
                                else
                                {
                                    MessageBox.Show("Invalid url");
                                }
                                overwritelink = Prompt.ShowDialog(string.Format("The FTB permissionsheet states that permissions for {0} is closed.{1}Please provide proof(an imgur link) that this is not the case:{1}Enter \"skip\" to skip the mod.", mod.Name, Environment.NewLine), mod.Name, true, Prompt.ModsLeftString(_totalMods, _currentMod)).Replace(" ", "");
                            }
                        }
                        else
                        {
                            //Get Author
                            string a = _ftbPermsSqLhelper.GetPermissionFromModId(mod.Modid).modAuthors;
                            CreateFtbPermissionInfo(mod.Name, mod.Modid, a, ownPermissions.PermissionLink);
                        }
                        break;

                    case PermissionPolicy.Unknown:
                        ownPermissions = _ownPermsSqLhelper.DoUserHavePermission(mod.Modid);
                        if (!ownPermissions.HasPermission)
                        {
                            overwritelink = Prompt.ShowDialog(string.Format("Permissions for {0} is unknown{1}Please provide proof(an imgur link) of permissions:{1}Enter \"skip\" to skip the mod.", mod.Name, Environment.NewLine), mod.Name, true, Prompt.ModsLeftString(_totalMods, _currentMod)).Replace(" ", "");
                            while (true)
                            {
                                if (overwritelink.ToLower().Equals("skip".ToLower()))
                                {
                                    mod.IsSkipping = true;
                                    return;
                                }
                                if (Uri.IsWellFormedUriString(overwritelink, UriKind.Absolute))
                                {
                                    if (overwritelink.ToLower().Contains("imgur"))
                                    {
                                        break;
                                    }
                                    MessageBox.Show("Not an imgur link");
                                }
                                else
                                {
                                    MessageBox.Show("Invalid url");
                                }
                                overwritelink = Prompt.ShowDialog(string.Format("Permissions for {0} is unknown{1}Please provide proof(an imgur link) of permissions:{1}Enter \"skip\" to skip the mod.", mod.Name, Environment.NewLine), mod.Name, true, Prompt.ModsLeftString(_totalMods, _currentMod)).Replace(" ", "");
                            }
                            string modLink;
                            while (true)
                            {
                                modLink = Prompt.ShowDialog(string.Format("Please provide a link to {0}:{1}Enter \"skip\" to skip the mod.", mod.Name, Environment.NewLine), mod.Name).Replace(" ", "");
                                if (modLink.ToLower().Equals("skip".ToLower()))
                                {
                                    mod.IsSkipping = true;
                                    return;
                                }
                                if (Uri.IsWellFormedUriString(modLink, UriKind.Absolute))
                                {
                                    _ownPermsSqLhelper.AddOwnModPerm(mod.Name, mod.Modid, overwritelink, modLink);
                                    break;
                                }
                                MessageBox.Show("Invalid url");
                            }
                            string a = GetAuthors(mod);
                            CreateOwnPermissionInfo(mod.Name, mod.Modid, a, overwritelink, modLink);
                        }
                        else
                        {
                            string a = GetAuthors(mod);
                            CreateOwnPermissionInfo(mod.Name, mod.Modid, a, ownPermissions.PermissionLink, ownPermissions.ModLink);
                        }
                        break;
                    }
                    #endregion
                }
            }

            if (string.IsNullOrWhiteSpace(_ftbModpackArchive))
            {
                while (string.IsNullOrWhiteSpace(_modpackName))
                {
                    _modpackName = Prompt.ShowDialog("What is the Modpack Name?", "Modpack Name");
                }
                while (string.IsNullOrWhiteSpace(_modpackVersion))
                {
                    _modpackVersion = Prompt.ShowDialog("What Version is the modpack?", "Modpack Version");
                }
                if (string.IsNullOrWhiteSpace(_modpackArchive))
                {
                    _modpackArchive    = Path.Combine(_outputDirectory, string.Format("{0}-{1}.zip", _modpackName, _modpackVersion));
                    _ftbModpackArchive = Path.Combine(_outputDirectory, _modpackName + "-" + _modpackVersion + "-FTB" + ".zip");
                }
            }


            string tempModDirectory = Path.Combine(_outputDirectory, "minecraft", "mods");
            Directory.CreateDirectory(tempModDirectory);
            string tempFile          = Path.Combine(tempModDirectory, fileName);
            int    index             = tempFile.LastIndexOf(Globalfunctions.PathSeperator);
            string tempFileDirectory = tempFile.Remove(index);
            Directory.CreateDirectory(tempFileDirectory);
            File.Copy(modfile, tempFile, true);

            if (Globalfunctions.IsUnix())
            {
                Environment.CurrentDirectory = _outputDirectory;
                _startInfo.FileName          = "zip";
                _startInfo.Arguments         = string.Format("-r \"{0}\" \"{1}\"", _ftbModpackArchive, "minecraft");
            }
            else
            {
                Environment.CurrentDirectory = _outputDirectory;
                _startInfo.Arguments         = string.Format("a -y \"{0}\" \"{1}\"", _ftbModpackArchive, "minecraft");
            }

            _process.StartInfo = _startInfo;
            _process.Start();
            _process.WaitForExit();
            Directory.Delete(tempModDirectory, true);

            if (mod.HasBeenWritenToModlist)
            {
                return;
            }
            File.AppendAllText(_modlistTextFile, mod.Name + Environment.NewLine);
            mod.HasBeenWritenToModlist = true;
        }
コード例 #8
0
        private void ShowPermissions()
        {
            textBoxTechnicLicenseLink.Text    = String.Empty;
            textBoxTechnicModLink.Text        = String.Empty;
            textBoxTechnicPermissionLink.Text = String.Empty;
            textBoxFTBLicenseLink.Text        = String.Empty;
            textBoxFTBModLink.Text            = String.Empty;
            textBoxFTBPermissionLink.Text     = String.Empty;
            if (technicPermissions.Visible)
            {
                PermissionPolicy technicPermissionLevel =
                    _ftbPermissionsSqlHelper.FindPermissionPolicy(textBoxModID.Text,
                                                                  _solderHelper.TechnicPublicPermissions.Checked);
                Debug.WriteLine(technicPermissionLevel);
                switch (technicPermissionLevel)
                {
                case PermissionPolicy.Open:
                    permissionTechnicOpen.Checked = true;
                    break;

                case PermissionPolicy.Notify:
                    permissionTechnicNotify.Checked = true;
                    break;

                case PermissionPolicy.FTB:
                    permissionTechnicFTBExclusive.Checked = true;
                    break;

                case PermissionPolicy.Request:
                    permissionTechnicRequest.Checked = true;
                    break;

                case PermissionPolicy.Closed:
                    permissionTechnicClosed.Checked = true;
                    break;

                case PermissionPolicy.Unknown:
                    permissionTechnicUnknown.Checked = true;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (FTBPermissions.Visible)
            {
                PermissionPolicy ftbPermissionLevel = _ftbPermissionsSqlHelper.FindPermissionPolicy(textBoxModID.Text,
                                                                                                    _solderHelper.PublicFTBPack.Checked);
                Debug.WriteLine(ftbPermissionLevel);
                switch (ftbPermissionLevel)
                {
                case PermissionPolicy.Open:
                    permissionFTBOpen.Checked = true;
                    break;

                case PermissionPolicy.Notify:
                    permissionFTBNotify.Checked = true;
                    break;

                case PermissionPolicy.FTB:
                    permissionFTBFTBExclusive.Checked = true;
                    break;

                case PermissionPolicy.Request:
                    permissionFTBRequest.Checked = true;
                    break;

                case PermissionPolicy.Closed:
                    permissionFTBClosed.Checked = true;
                    break;

                case PermissionPolicy.Unknown:
                    permssionFTBUnknown.Checked = true;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            Permission modlinkPerm = _ftbPermissionsSqlHelper.GetPermissionFromModId(textBoxModID.Text);

            if (modlinkPerm == null)
            {
                if (technicPermissions.Visible)
                {
                    textBoxTechnicModLink.Text = String.Empty;
                }
                if (FTBPermissions.Visible)
                {
                    textBoxFTBModLink.Text = String.Empty;
                }
            }
            else
            {
                if (technicPermissions.Visible)
                {
                    textBoxTechnicModLink.Text = modlinkPerm.modLink;
                }
                if (FTBPermissions.Visible)
                {
                    textBoxFTBModLink.Text = modlinkPerm.modLink;
                }
            }
            Permission licenseLinkPerm = _ftbPermissionsSqlHelper.GetPermissionFromModId(textBoxModID.Text);

            if (licenseLinkPerm == null)
            {
                if (technicPermissions.Visible)
                {
                    textBoxTechnicLicenseLink.Text = String.Empty;
                }
                if (FTBPermissions.Visible)
                {
                    textBoxFTBLicenseLink.Text = String.Empty;
                }
            }
            else
            {
                if (technicPermissions.Visible)
                {
                    textBoxTechnicLicenseLink.Text = licenseLinkPerm.licenseLink;
                }
                if (FTBPermissions.Visible)
                {
                    textBoxFTBLicenseLink.Text = licenseLinkPerm.licenseLink;
                }
            }
            OwnPermissionsSqlHelper ownPermissionsSqlHelper = new OwnPermissionsSqlHelper();
            OwnPermissions          permissions             = ownPermissionsSqlHelper.DoUserHavePermission(textBoxModID.Text);

            if (!permissions.HasPermission)
            {
                textBoxTechnicPermissionLink.Text = String.Empty;
                textBoxFTBPermissionLink.Text     = String.Empty;
            }
            else
            {
                if (!String.IsNullOrWhiteSpace(permissions.PermissionLink))
                {
                    textBoxTechnicPermissionLink.Text = permissions.PermissionLink;
                    textBoxFTBPermissionLink.Text     = permissions.PermissionLink;
                }
                if (!String.IsNullOrWhiteSpace(permissions.ModLink))
                {
                    textBoxTechnicModLink.Text = permissions.ModLink;
                    textBoxFTBModLink.Text     = permissions.ModLink;
                }
                if (!String.IsNullOrWhiteSpace(permissions.LicenseLink))
                {
                    textBoxTechnicLicenseLink.Text = permissions.LicenseLink;
                    textBoxFTBLicenseLink.Text     = permissions.LicenseLink;
                }
            }
        }
コード例 #9
0
 private void CreateTechnicPermissionInfo(Mcmod mod, PermissionPolicy pl, string customPermissionText, string modlink)
 {
     string ps = string.Format("{0}({1}) by {2}{3}At {4}{3}Permissions are {5}{3}", mod.Name, mod.Modid, GetAuthors(mod), Environment.NewLine, modlink, pl);
     if (!string.IsNullOrWhiteSpace(customPermissionText))
     {
         ps += customPermissionText + Environment.NewLine;
     }
     File.AppendAllText(_technicPermissionList, ps + Environment.NewLine);
 }
コード例 #10
0
 private void CreateTechnicPermissionInfo(Mcmod mod, PermissionPolicy pl, string customPermissionText = null)
 {
     string modlink = _ftbPermsSqLhelper.GetPermissionFromModId(mod.Modid).modAuthors;
     while (string.IsNullOrWhiteSpace(modlink) || !Uri.IsWellFormedUriString(modlink, UriKind.Absolute))
     {
         modlink = Prompt.ShowDialog("What is the link to " + mod.Name + "?", "Mod link", false, Prompt.ModsLeftString(_totalMods, _currentMod));
         if (!Uri.IsWellFormedUriString(modlink, UriKind.Absolute))
         {
             MessageBox.Show("Not a proper url");
         }
     }
     CreateTechnicPermissionInfo(mod, pl, customPermissionText, modlink);
 }