-
Notifications
You must be signed in to change notification settings - Fork 3
/
Emby-Acme.ps1
65 lines (55 loc) · 2.24 KB
/
Emby-Acme.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#requires -runasadministrator
$ErrorActionPreference = "Stop"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet -Force
Install-Module -Name Posh-ACME -Scope AllUsers -Force
Set-PAServer LE_PROD
if (-not (Get-PAAccount | Select-Object -first 1).Contact) {
New-PAAccount -AcceptTOS -Contact "$(Read-Host -Prompt 'Enter email address')"
}
if ($serviceName = (Get-Service | Where-Object { $_.name -match "emby" } | Select-Object -first 1).name) {
$appLocation = (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\$serviceName\Parameters").Application
$location = (Get-Item $appLocation).Directory.Parent.FullName
}
elseif (Test-Path "$Env:APPDATA\Emby-Server") {
$location = "$Env:APPDATA\Emby-Server"
}
else {
$appLocation = Read-Host -Prompt "Enter Emby server location"
if ($appLocation.Length -eq 0) {
throw "Unknown Location"
}
elseif (Test-Path -Path $appLocation -PathType Leaf) {
$location = (Get-Item $appLocation).Directory.Parent.FullName
}
elseif (Test-Path -Path $appLocation -PathType Container) {
$location = (Get-Item $appLocation).Parent.FullName
}
else {
throw "Cannot locate file or folder named $appLocation"
}
}
if (Test-Path "$location\programdata\config\system.xml") {
$serverConfiguration = ([xml](Get-Content "$location\programdata\config\system.xml")).ServerConfiguration
}
elseif (Test-Path "$location\config\system.xml") {
$serverConfiguration = ([xml](Get-Content "$location\config\system.xml")).ServerConfiguration
}
else {
throw "Cannot find system.xml at either $location\programdata\config\system.xml or $location\config\system.xml"
}
$address = $serverConfiguration.WanDdns
if ($address.Length -eq 0) {
throw "Domain name not found in emby config"
}
New-PAOrder $address -PfxPass "" -Force
Invoke-HttpChallengeListener -Verbose
New-PACertificate $address
$certPath = $serverConfiguration.CertificatePath
if ($certPath.Length -eq 0) {
$certPath = "$location\programdata\$address.pfx"
}
$pfxFile = (Get-PACertificate $address | Where-Object { $_.NotAfter -gt (Get-Date) } | Select-Object -first 1).PfxFile
if ($pfxFile.Length -gt 0) {
Copy-Item $pfxFile $certPath -Force
}