Implemented ssl options for websites
This commit is contained in:
@@ -16,12 +16,14 @@ public class WebsiteService
|
||||
private readonly WebsiteRepository WebsiteRepository;
|
||||
private readonly PleskServerRepository PleskServerRepository;
|
||||
private readonly PleskApiHelper PleskApiHelper;
|
||||
private readonly UserRepository UserRepository;
|
||||
|
||||
public WebsiteService(WebsiteRepository websiteRepository, PleskApiHelper pleskApiHelper, PleskServerRepository pleskServerRepository)
|
||||
public WebsiteService(WebsiteRepository websiteRepository, PleskApiHelper pleskApiHelper, PleskServerRepository pleskServerRepository, UserRepository userRepository)
|
||||
{
|
||||
WebsiteRepository = websiteRepository;
|
||||
PleskApiHelper = pleskApiHelper;
|
||||
PleskServerRepository = pleskServerRepository;
|
||||
UserRepository = userRepository;
|
||||
}
|
||||
|
||||
public async Task<Website> Create(string baseDomain, User owner, PleskServer? ps = null)
|
||||
@@ -149,8 +151,6 @@ public class WebsiteService
|
||||
{
|
||||
var website = EnsureData(w);
|
||||
var certs = new List<string>();
|
||||
|
||||
Logger.Debug("1");
|
||||
|
||||
var data = await ExecuteCli(website.PleskServer, "certificate", p =>
|
||||
{
|
||||
@@ -158,9 +158,7 @@ public class WebsiteService
|
||||
p.Add("-domain");
|
||||
p.Add(w.BaseDomain);
|
||||
});
|
||||
|
||||
Logger.Debug("2");
|
||||
|
||||
|
||||
string[] lines = data.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
foreach (string line in lines)
|
||||
@@ -169,11 +167,6 @@ public class WebsiteService
|
||||
{
|
||||
string[] parts = line.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
foreach (var part in parts)
|
||||
{
|
||||
Logger.Debug(part);
|
||||
}
|
||||
|
||||
if(parts.Length > 6)
|
||||
certs.Add($"{parts[4]} {parts[5]} {parts[6]}");
|
||||
}
|
||||
@@ -187,9 +180,66 @@ public class WebsiteService
|
||||
return certs.ToArray();
|
||||
}
|
||||
|
||||
public async Task CreateSslCertificate()
|
||||
public async Task CreateSslCertificate(Website w)
|
||||
{
|
||||
|
||||
var website = EnsureData(w);
|
||||
|
||||
await ExecuteCli(website.PleskServer, "extension", p =>
|
||||
{
|
||||
p.Add("--exec");
|
||||
p.Add("letsencrypt");
|
||||
p.Add("cli.php");
|
||||
p.Add("-d");
|
||||
p.Add(website.BaseDomain);
|
||||
p.Add("-m");
|
||||
p.Add(website.Owner.Email);
|
||||
});
|
||||
}
|
||||
|
||||
public async Task DeleteSslCertificate(Website w, string name)
|
||||
{
|
||||
var website = EnsureData(w);
|
||||
|
||||
try
|
||||
{
|
||||
await ExecuteCli(website.PleskServer, "site", p =>
|
||||
{
|
||||
p.Add("-u");
|
||||
p.Add(website.BaseDomain);
|
||||
p.Add("-ssl");
|
||||
p.Add("false");
|
||||
});
|
||||
|
||||
try
|
||||
{
|
||||
await ExecuteCli(website.PleskServer, "certificate", p =>
|
||||
{
|
||||
p.Add("--remove");
|
||||
p.Add(name);
|
||||
p.Add("-domain");
|
||||
p.Add(website.BaseDomain);
|
||||
});
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Warn("Error removing ssl certificate");
|
||||
Logger.Warn(e);
|
||||
|
||||
throw new DisplayException("An unknown error occured while removing ssl certificate");
|
||||
}
|
||||
}
|
||||
catch (DisplayException)
|
||||
{
|
||||
// Redirect all display exception to soft error handler
|
||||
throw;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Warn("Error disabling ssl certificate");
|
||||
Logger.Warn(e);
|
||||
|
||||
throw new DisplayException("An unknown error occured while disabling ssl certificate");
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<FileAccess> CreateFileAccess(Website w)
|
||||
@@ -225,10 +275,11 @@ public class WebsiteService
|
||||
|
||||
private Website EnsureData(Website website)
|
||||
{
|
||||
if (website.PleskServer == null)
|
||||
if (website.PleskServer == null || website.Owner == null)
|
||||
return WebsiteRepository
|
||||
.Get()
|
||||
.Include(x => x.PleskServer)
|
||||
.Include(x => x.Owner)
|
||||
.First(x => x.Id == website.Id);
|
||||
|
||||
return website;
|
||||
|
||||
Reference in New Issue
Block a user