Пример #1
0
        private void Do(ApprovedDomain site)
        {
            string url = site.DomainName;

            InstallerLog.Verbose($"Installing frapid on domain {url}.");

            try
            {
                var installer = new Installer.Tenant.Installer(url, false);

                installer.Notification += delegate(object sender, string message)
                {
                    if (message.StartsWith("Error"))
                    {
                        this.OnError(sender, message);
                    }
                    else
                    {
                        this.OnNotification(sender, message);
                    }
                };

                installer.InstallAsync().GetAwaiter().GetResult();

                DbInstalledDomains.AddAsync(site).GetAwaiter().GetResult();
                new InstalledDomainSerializer().Add(site);
            }
            catch (Exception ex)
            {
                InstallerLog.Error("Could not install frapid on {url} due to errors. Exception: {Exception}", url, ex);
                throw;
            }
        }
Пример #2
0
        public static void Add(ApprovedDomain tenant)
        {
            string database = TenantConvention.GetDbNameByConvention(tenant.DomainName);

            using (var db = DbProvider.Get(FrapidDbServer.GetSuperUserConnectionString(database, database), database).GetDatabase())
            {
                var sql = new Sql("INSERT INTO account.installed_domains(domain_name, admin_email) SELECT @0, @1;", tenant.DomainName, tenant.AdminEmail);
                db.Execute(sql);
            }
        }
Пример #3
0
        public static void Setup(ApprovedDomain domain)
        {
            var factory   = new StdSchedulerFactory();
            var scheduler = factory.GetScheduler();

            scheduler.Start();

            var job     = JobBuilder.Create <InstallJob>().WithIdentity(domain.DomainName, "install").Build();
            var trigger = TriggerBuilder.Create().WithIdentity(domain.DomainName, "install-trigger").StartAt(DateTimeOffset.UtcNow.AddSeconds(5)).Build();

            scheduler.ScheduleJob(job, trigger);
        }
Пример #4
0
        public static void Add(ApprovedDomain tenant)
        {
            string database = DbConvention.GetDbNameByConvention(tenant.DomainName);

            using (var db = DbProvider.Get(FrapidDbServer.GetSuperUserConnectionString(database)).GetDatabase())
            {
                dynamic poco = new ExpandoObject();
                poco.domain_name = tenant.DomainName;
                poco.admin_email = tenant.AdminEmail;

                db.Insert("account.installed_domains", "domain_id", true, poco);
            }
        }
Пример #5
0
        public string GetBackupDirectory(ApprovedDomain domain, string tenant)
        {
            if (domain.BackupDirectoryIsFixedPath && !string.IsNullOrWhiteSpace(domain.BackupDirectory))
            {
                return(domain.BackupDirectory);
            }

            if (!string.IsNullOrWhiteSpace(domain.BackupDirectory))
            {
                return(HostingEnvironment.MapPath(domain.BackupDirectory));
            }

            string path = $"/Backups/{tenant}/backup";

            return(HostingEnvironment.MapPath(path));
        }
Пример #6
0
        public static async Task CreateUserAsync(string tenant, ApprovedDomain domain)
        {
            if (string.IsNullOrWhiteSpace(domain.AdminEmail) || string.IsNullOrWhiteSpace(domain.BcryptedAdminPassword))
            {
                return;
            }

            var sql = new Sql("INSERT INTO account.users(email, password, office_id, role_id, name, phone)");

            sql.Append("SELECT @0, @1, @2, @3, @4, @5", domain.AdminEmail, domain.BcryptedAdminPassword, 1, 9999, "", "");

            using (var db = DbProvider.Get(FrapidDbServer.GetSuperUserConnectionString(tenant), tenant).GetDatabase())
            {
                await db.NonQueryAsync(sql).ConfigureAwait(false);
            }
        }
Пример #7
0
        public List <string> GetBackupDirectory(ApprovedDomain domain, string tenant)
        {
            var directories = new List <string>();

            if (domain.BackupDirectoryIsFixedPath && !string.IsNullOrWhiteSpace(domain.BackupDirectory))
            {
                directories.Add(domain.BackupDirectory);
            }

            if (!string.IsNullOrWhiteSpace(domain.BackupDirectory))
            {
                directories.Add(PathMapper.MapPath(domain.BackupDirectory));
            }
            else
            {
                string path = $"/Backups/{tenant}/backup";
                directories.Add(PathMapper.MapPath(path));
            }

            foreach (var backup in domain.AlternativeBackups)
            {
                if (!string.IsNullOrWhiteSpace(backup.Path))
                {
                    if (backup.IsFixedPath)
                    {
                        directories.Add(backup.Path);
                    }
                    else
                    {
                        directories.Add(PathMapper.MapPath(backup.Path));
                    }
                }
            }


            return(directories);
        }
Пример #8
0
 public void Add(ApprovedDomain domain)
 {
     this.Domains.Add(domain);
 }
Пример #9
0
 public static async Task AddAsync(ApprovedDomain tenant)
 {
     string database = TenantConvention.GetDbNameByConvention(tenant.DomainName);
     var    sql      = new Sql("INSERT INTO account.installed_domains(domain_name, admin_email) SELECT @0, @1;", tenant.DomainName, tenant.AdminEmail);
     await Factory.NonQueryAsync(database, sql).ConfigureAwait(false);
 }
Пример #10
0
 public void Add(ApprovedDomain domain)
 {
     this.Domains.Add(domain);
 }