summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@vps-18a7a2b7.vps.ovh.ca>2024-02-09 23:18:34 -0500
committerroot <root@vps-18a7a2b7.vps.ovh.ca>2024-02-09 23:22:44 -0500
commit3caec789c3a6b1f6a6223def2469cdd2118f3c51 (patch)
treefd42bea16f875cc12c683fe35ebabb4004c4e287
parent76cb8ce78ebacdc4ae7482763675a34b5cb85a3a (diff)
enable-default-ssl.bash
logs into remote debian machine and fixes https on default-ssl to use LetsEncrypt. In one command!
-rwxr-xr-xenable-default-ssl.bash281
1 files changed, 281 insertions, 0 deletions
diff --git a/enable-default-ssl.bash b/enable-default-ssl.bash
new file mode 100755
index 0000000..351b42a
--- /dev/null
+++ b/enable-default-ssl.bash
@@ -0,0 +1,281 @@
1#!/bin/bash
2template()
3{
4base64 -d <<.
5PE1Eb21haW4ge1NJVEVfTkFNRX0+CiAgICAgICAgTURDb250YWN0RW1haWwgd2VibWFzdGVyQHtT
6SVRFX05BTUV9CiAgICAgICAgTURDZXJ0aWZpY2F0ZUFncmVlbWVudCBhY2NlcHRlZAogICAgICAg
7IE1EUmVxdWlyZUh0dHBzIHRlbXBvcmFyeQo8L01Eb21haW4+CjxWaXJ0dWFsSG9zdCAqOjQ0Mz4K
8CVNlcnZlck5hbWUge1NJVEVfTkFNRX0KCVNlcnZlckFkbWluIHdlYm1hc3RlckB7U0lURV9OQU1F
9fQoKCURvY3VtZW50Um9vdCAvdmFyL3d3dy9odG1sCgoJIyBBdmFpbGFibGUgbG9nbGV2ZWxzOiB0
10cmFjZTgsIC4uLiwgdHJhY2UxLCBkZWJ1ZywgaW5mbywgbm90aWNlLCB3YXJuLAoJIyBlcnJvciwg
11Y3JpdCwgYWxlcnQsIGVtZXJnLgoJIyBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0
12aGUgbG9nbGV2ZWwgZm9yIHBhcnRpY3VsYXIKCSMgbW9kdWxlcywgZS5nLgoJI0xvZ0xldmVsIGlu
13Zm8gc3NsOndhcm4KCglFcnJvckxvZyAkXHtBUEFDSEVfTE9HX0RJUlx9L2Vycm9yLmxvZwoJQ3Vz
14dG9tTG9nICRce0FQQUNIRV9MT0dfRElSXH0vYWNjZXNzLmxvZyBjb21iaW5lZAoKCSMgRm9yIG1v
15c3QgY29uZmlndXJhdGlvbiBmaWxlcyBmcm9tIGNvbmYtYXZhaWxhYmxlLywgd2hpY2ggYXJlCgkj
16IGVuYWJsZWQgb3IgZGlzYWJsZWQgYXQgYSBnbG9iYWwgbGV2ZWwsIGl0IGlzIHBvc3NpYmxlIHRv
17CgkjIGluY2x1ZGUgYSBsaW5lIGZvciBvbmx5IG9uZSBwYXJ0aWN1bGFyIHZpcnR1YWwgaG9zdC4g
18Rm9yIGV4YW1wbGUgdGhlCgkjIGZvbGxvd2luZyBsaW5lIGVuYWJsZXMgdGhlIENHSSBjb25maWd1
19cmF0aW9uIGZvciB0aGlzIGhvc3Qgb25seQoJIyBhZnRlciBpdCBoYXMgYmVlbiBnbG9iYWxseSBk
20aXNhYmxlZCB3aXRoICJhMmRpc2NvbmYiLgoJI0luY2x1ZGUgY29uZi1hdmFpbGFibGUvc2VydmUt
21Y2dpLWJpbi5jb25mCgoJIyAgIFNTTCBFbmdpbmUgU3dpdGNoOgoJIyAgIEVuYWJsZS9EaXNhYmxl
22IFNTTCBmb3IgdGhpcyB2aXJ0dWFsIGhvc3QuCglTU0xFbmdpbmUgb24KCgkjICAgQSBzZWxmLXNp
23Z25lZCAoc25ha2VvaWwpIGNlcnRpZmljYXRlIGNhbiBiZSBjcmVhdGVkIGJ5IGluc3RhbGxpbmcK
24CSMgICB0aGUgc3NsLWNlcnQgcGFja2FnZS4gU2VlCgkjICAgL3Vzci9zaGFyZS9kb2MvYXBhY2hl
25Mi9SRUFETUUuRGViaWFuLmd6IGZvciBtb3JlIGluZm8uCgkjICAgSWYgYm90aCBrZXkgYW5kIGNl
26cnRpZmljYXRlIGFyZSBzdG9yZWQgaW4gdGhlIHNhbWUgZmlsZSwgb25seSB0aGUKCSMgICBTU0xD
27ZXJ0aWZpY2F0ZUZpbGUgZGlyZWN0aXZlIGlzIG5lZWRlZC4KCSNTU0xDZXJ0aWZpY2F0ZUZpbGUg
28ICAgICAvZXRjL3NzbC9jZXJ0cy9zc2wtY2VydC1zbmFrZW9pbC5wZW0KCSNTU0xDZXJ0aWZpY2F0
29ZUtleUZpbGUgICAvZXRjL3NzbC9wcml2YXRlL3NzbC1jZXJ0LXNuYWtlb2lsLmtleQoKCSMgICBT
30ZXJ2ZXIgQ2VydGlmaWNhdGUgQ2hhaW46CgkjICAgUG9pbnQgU1NMQ2VydGlmaWNhdGVDaGFpbkZp
31bGUgYXQgYSBmaWxlIGNvbnRhaW5pbmcgdGhlCgkjICAgY29uY2F0ZW5hdGlvbiBvZiBQRU0gZW5j
32b2RlZCBDQSBjZXJ0aWZpY2F0ZXMgd2hpY2ggZm9ybSB0aGUKCSMgICBjZXJ0aWZpY2F0ZSBjaGFp
33biBmb3IgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZS4gQWx0ZXJuYXRpdmVseQoJIyAgIHRoZSByZWZl
34cmVuY2VkIGZpbGUgY2FuIGJlIHRoZSBzYW1lIGFzIFNTTENlcnRpZmljYXRlRmlsZQoJIyAgIHdo
35ZW4gdGhlIENBIGNlcnRpZmljYXRlcyBhcmUgZGlyZWN0bHkgYXBwZW5kZWQgdG8gdGhlIHNlcnZl
36cgoJIyAgIGNlcnRpZmljYXRlIGZvciBjb252aW5pZW5jZS4KCSNTU0xDZXJ0aWZpY2F0ZUNoYWlu
37RmlsZSAvZXRjL2FwYWNoZTIvc3NsLmNydC9zZXJ2ZXItY2EuY3J0CgoJIyAgIENlcnRpZmljYXRl
38IEF1dGhvcml0eSAoQ0EpOgoJIyAgIFNldCB0aGUgQ0EgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9u
39IHBhdGggd2hlcmUgdG8gZmluZCBDQQoJIyAgIGNlcnRpZmljYXRlcyBmb3IgY2xpZW50IGF1dGhl
40bnRpY2F0aW9uIG9yIGFsdGVybmF0aXZlbHkgb25lCgkjICAgaHVnZSBmaWxlIGNvbnRhaW5pbmcg
41YWxsIG9mIHRoZW0gKGZpbGUgbXVzdCBiZSBQRU0gZW5jb2RlZCkKCSMgICBOb3RlOiBJbnNpZGUg
42U1NMQ0FDZXJ0aWZpY2F0ZVBhdGggeW91IG5lZWQgaGFzaCBzeW1saW5rcwoJIwkgIHRvIHBvaW50
43IHRvIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlcy4gVXNlIHRoZSBwcm92aWRlZAoJIwkgIE1ha2VmaWxl
44IHRvIHVwZGF0ZSB0aGUgaGFzaCBzeW1saW5rcyBhZnRlciBjaGFuZ2VzLgoJI1NTTENBQ2VydGlm
45aWNhdGVQYXRoIC9ldGMvc3NsL2NlcnRzLwoJI1NTTENBQ2VydGlmaWNhdGVGaWxlIC9ldGMvYXBh
46Y2hlMi9zc2wuY3J0L2NhLWJ1bmRsZS5jcnQKCgkjICAgQ2VydGlmaWNhdGUgUmV2b2NhdGlvbiBM
47aXN0cyAoQ1JMKToKCSMgICBTZXQgdGhlIENBIHJldm9jYXRpb24gcGF0aCB3aGVyZSB0byBmaW5k
48IENBIENSTHMgZm9yIGNsaWVudAoJIyAgIGF1dGhlbnRpY2F0aW9uIG9yIGFsdGVybmF0aXZlbHkg
49b25lIGh1Z2UgZmlsZSBjb250YWluaW5nIGFsbAoJIyAgIG9mIHRoZW0gKGZpbGUgbXVzdCBiZSBQ
50RU0gZW5jb2RlZCkKCSMgICBOb3RlOiBJbnNpZGUgU1NMQ0FSZXZvY2F0aW9uUGF0aCB5b3UgbmVl
51ZCBoYXNoIHN5bWxpbmtzCgkjCSAgdG8gcG9pbnQgdG8gdGhlIGNlcnRpZmljYXRlIGZpbGVzLiBV
52c2UgdGhlIHByb3ZpZGVkCgkjCSAgTWFrZWZpbGUgdG8gdXBkYXRlIHRoZSBoYXNoIHN5bWxpbmtz
53IGFmdGVyIGNoYW5nZXMuCgkjU1NMQ0FSZXZvY2F0aW9uUGF0aCAvZXRjL2FwYWNoZTIvc3NsLmNy
54bC8KCSNTU0xDQVJldm9jYXRpb25GaWxlIC9ldGMvYXBhY2hlMi9zc2wuY3JsL2NhLWJ1bmRsZS5j
55cmwKCgkjICAgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIChUeXBlKToKCSMgICBDbGllbnQgY2VydGlm
56aWNhdGUgdmVyaWZpY2F0aW9uIHR5cGUgYW5kIGRlcHRoLiAgVHlwZXMgYXJlCgkjICAgbm9uZSwg
57b3B0aW9uYWwsIHJlcXVpcmUgYW5kIG9wdGlvbmFsX25vX2NhLiAgRGVwdGggaXMgYQoJIyAgIG51
58bWJlciB3aGljaCBzcGVjaWZpZXMgaG93IGRlZXBseSB0byB2ZXJpZnkgdGhlIGNlcnRpZmljYXRl
59CgkjICAgaXNzdWVyIGNoYWluIGJlZm9yZSBkZWNpZGluZyB0aGUgY2VydGlmaWNhdGUgaXMgbm90
60IHZhbGlkLgoJI1NTTFZlcmlmeUNsaWVudCByZXF1aXJlCgkjU1NMVmVyaWZ5RGVwdGggIDEwCgoJ
61IyAgIFNTTCBFbmdpbmUgT3B0aW9uczoKCSMgICBTZXQgdmFyaW91cyBvcHRpb25zIGZvciB0aGUg
62U1NMIGVuZ2luZS4KCSMgICBvIEZha2VCYXNpY0F1dGg6CgkjICAgIFRyYW5zbGF0ZSB0aGUgY2xp
63ZW50IFguNTA5IGludG8gYSBCYXNpYyBBdXRob3Jpc2F0aW9uLiAgVGhpcyBtZWFucyB0aGF0Cgkj
64ICAgIHRoZSBzdGFuZGFyZCBBdXRoL0RCTUF1dGggbWV0aG9kcyBjYW4gYmUgdXNlZCBmb3IgYWNj
65ZXNzIGNvbnRyb2wuICBUaGUKCSMgICAgdXNlciBuYW1lIGlzIHRoZSBgb25lIGxpbmUnIHZlcnNp
66b24gb2YgdGhlIGNsaWVudCdzIFguNTA5IGNlcnRpZmljYXRlLgoJIyAgICBOb3RlIHRoYXQgbm8g
67cGFzc3dvcmQgaXMgb2J0YWluZWQgZnJvbSB0aGUgdXNlci4gRXZlcnkgZW50cnkgaW4gdGhlIHVz
68ZXIKCSMgICAgZmlsZSBuZWVkcyB0aGlzIHBhc3N3b3JkOiBgeHhqMzFaTVRaemtWQScuCgkjICAg
69byBFeHBvcnRDZXJ0RGF0YToKCSMgICAgVGhpcyBleHBvcnRzIHR3byBhZGRpdGlvbmFsIGVudmly
70b25tZW50IHZhcmlhYmxlczogU1NMX0NMSUVOVF9DRVJUIGFuZAoJIyAgICBTU0xfU0VSVkVSX0NF
71UlQuIFRoZXNlIGNvbnRhaW4gdGhlIFBFTS1lbmNvZGVkIGNlcnRpZmljYXRlcyBvZiB0aGUKCSMg
72ICAgc2VydmVyIChhbHdheXMgZXhpc3RpbmcpIGFuZCB0aGUgY2xpZW50IChvbmx5IGV4aXN0aW5n
73IHdoZW4gY2xpZW50CgkjICAgIGF1dGhlbnRpY2F0aW9uIGlzIHVzZWQpLiBUaGlzIGNhbiBiZSB1
74c2VkIHRvIGltcG9ydCB0aGUgY2VydGlmaWNhdGVzCgkjICAgIGludG8gQ0dJIHNjcmlwdHMuCgkj
75ICAgbyBTdGRFbnZWYXJzOgoJIyAgICBUaGlzIGV4cG9ydHMgdGhlIHN0YW5kYXJkIFNTTC9UTFMg
76cmVsYXRlZCBgU1NMXyonIGVudmlyb25tZW50IHZhcmlhYmxlcy4KCSMgICAgUGVyIGRlZmF1bHQg
77dGhpcyBleHBvcnRhdGlvbiBpcyBzd2l0Y2hlZCBvZmYgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMs
78CgkjICAgIGJlY2F1c2UgdGhlIGV4dHJhY3Rpb24gc3RlcCBpcyBhbiBleHBlbnNpdmUgb3BlcmF0
79aW9uIGFuZCBpcyB1c3VhbGx5CgkjICAgIHVzZWxlc3MgZm9yIHNlcnZpbmcgc3RhdGljIGNvbnRl
80bnQuIFNvIG9uZSB1c3VhbGx5IGVuYWJsZXMgdGhlCgkjICAgIGV4cG9ydGF0aW9uIGZvciBDR0kg
81YW5kIFNTSSByZXF1ZXN0cyBvbmx5LgoJIyAgIG8gT3B0UmVuZWdvdGlhdGU6CgkjICAgIFRoaXMg
82ZW5hYmxlcyBvcHRpbWl6ZWQgU1NMIGNvbm5lY3Rpb24gcmVuZWdvdGlhdGlvbiBoYW5kbGluZyB3
83aGVuIFNTTAoJIyAgICBkaXJlY3RpdmVzIGFyZSB1c2VkIGluIHBlci1kaXJlY3RvcnkgY29udGV4
84dC4KCSNTU0xPcHRpb25zICtGYWtlQmFzaWNBdXRoICtFeHBvcnRDZXJ0RGF0YSArU3RyaWN0UmVx
85dWlyZQoJPEZpbGVzTWF0Y2ggIlxcLig/OmNnaXxzaHRtbHxwaHRtbHxwaHApJCI+CgkJU1NMT3B0
86aW9ucyArU3RkRW52VmFycwoJPC9GaWxlc01hdGNoPgoJPERpcmVjdG9yeSAvdXNyL2xpYi9jZ2kt
87YmluPgoJCVNTTE9wdGlvbnMgK1N0ZEVudlZhcnMKCTwvRGlyZWN0b3J5PgoKCSMgICBTU0wgUHJv
88dG9jb2wgQWRqdXN0bWVudHM6CgkjICAgVGhlIHNhZmUgYW5kIGRlZmF1bHQgYnV0IHN0aWxsIFNT
89TC9UTFMgc3RhbmRhcmQgY29tcGxpYW50IHNodXRkb3duCgkjICAgYXBwcm9hY2ggaXMgdGhhdCBt
90b2Rfc3NsIHNlbmRzIHRoZSBjbG9zZSBub3RpZnkgYWxlcnQgYnV0IGRvZXNuJ3Qgd2FpdCBmb3IK
91CSMgICB0aGUgY2xvc2Ugbm90aWZ5IGFsZXJ0IGZyb20gY2xpZW50LiBXaGVuIHlvdSBuZWVkIGEg
92ZGlmZmVyZW50IHNodXRkb3duCgkjICAgYXBwcm9hY2ggeW91IGNhbiB1c2Ugb25lIG9mIHRoZSBm
93b2xsb3dpbmcgdmFyaWFibGVzOgoJIyAgIG8gc3NsLXVuY2xlYW4tc2h1dGRvd246CgkjICAgIFRo
94aXMgZm9yY2VzIGFuIHVuY2xlYW4gc2h1dGRvd24gd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBjbG9z
95ZWQsIGkuZS4gbm8KCSMgICAgU1NMIGNsb3NlIG5vdGlmeSBhbGVydCBpcyBzZW5kIG9yIGFsbG93
96ZWQgdG8gcmVjZWl2ZWQuICBUaGlzIHZpb2xhdGVzCgkjICAgIHRoZSBTU0wvVExTIHN0YW5kYXJk
97IGJ1dCBpcyBuZWVkZWQgZm9yIHNvbWUgYnJhaW4tZGVhZCBicm93c2Vycy4gVXNlCgkjICAgIHRo
98aXMgd2hlbiB5b3UgcmVjZWl2ZSBJL08gZXJyb3JzIGJlY2F1c2Ugb2YgdGhlIHN0YW5kYXJkIGFw
99cHJvYWNoIHdoZXJlCgkjICAgIG1vZF9zc2wgc2VuZHMgdGhlIGNsb3NlIG5vdGlmeSBhbGVydC4K
100CSMgICBvIHNzbC1hY2N1cmF0ZS1zaHV0ZG93bjoKCSMgICAgVGhpcyBmb3JjZXMgYW4gYWNjdXJh
101dGUgc2h1dGRvd24gd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQsIGkuZS4gYQoJIyAgICBT
102U0wgY2xvc2Ugbm90aWZ5IGFsZXJ0IGlzIHNlbmQgYW5kIG1vZF9zc2wgd2FpdHMgZm9yIHRoZSBj
103bG9zZSBub3RpZnkKCSMgICAgYWxlcnQgb2YgdGhlIGNsaWVudC4gVGhpcyBpcyAxMDAlIFNTTC9U
104TFMgc3RhbmRhcmQgY29tcGxpYW50LCBidXQgaW4KCSMgICAgcHJhY3RpY2Ugb2Z0ZW4gY2F1c2Vz
105IGhhbmdpbmcgY29ubmVjdGlvbnMgd2l0aCBicmFpbi1kZWFkIGJyb3dzZXJzLiBVc2UKCSMgICAg
106dGhpcyBvbmx5IGZvciBicm93c2VycyB3aGVyZSB5b3Uga25vdyB0aGF0IHRoZWlyIFNTTCBpbXBs
107ZW1lbnRhdGlvbgoJIyAgICB3b3JrcyBjb3JyZWN0bHkuCgkjICAgTm90aWNlOiBNb3N0IHByb2Js
108ZW1zIG9mIGJyb2tlbiBjbGllbnRzIGFyZSBhbHNvIHJlbGF0ZWQgdG8gdGhlIEhUVFAKCSMgICBr
109ZWVwLWFsaXZlIGZhY2lsaXR5LCBzbyB5b3UgdXN1YWxseSBhZGRpdGlvbmFsbHkgd2FudCB0byBk
110aXNhYmxlCgkjICAga2VlcC1hbGl2ZSBmb3IgdGhvc2UgY2xpZW50cywgdG9vLiBVc2UgdmFyaWFi
111bGUgIm5va2VlcGFsaXZlIiBmb3IgdGhpcy4KCSMgICBTaW1pbGFybHksIG9uZSBoYXMgdG8gZm9y
112Y2Ugc29tZSBjbGllbnRzIHRvIHVzZSBIVFRQLzEuMCB0byB3b3JrYXJvdW5kCgkjICAgdGhlaXIg
113YnJva2VuIEhUVFAvMS4xIGltcGxlbWVudGF0aW9uLiBVc2UgdmFyaWFibGVzICJkb3duZ3JhZGUt
114MS4wIiBhbmQKCSMgICAiZm9yY2UtcmVzcG9uc2UtMS4wIiBmb3IgdGhpcy4KCSMgQnJvd3Nlck1h
115dGNoICJNU0lFIFsyLTZdIiBcXAoJIwlub2tlZXBhbGl2ZSBzc2wtdW5jbGVhbi1zaHV0ZG93biBc
116XAoJIwlkb3duZ3JhZGUtMS4wIGZvcmNlLXJlc3BvbnNlLTEuMAoKPC9WaXJ0dWFsSG9zdD4K
117.
118}
119
120dependencies_source()
121{
122base64 -d <<.
123IyEvYmluL2ZhbHNlCgppbnRlcnNlY3Rpb24oKQp7CiAgICAgICAgY29tbSAtMTIgIiRAIgp9Cgpk
124aWZmZXJlbmNlKCkKewogICAgICAgIGNvbW0gLTIzICIkQCIKfQoKZXh0cmFjdF93b3JkcygpCnsK
125ICAgICAgICBncmVwIC1vIC1FICdcYlx3K1xiJyB8IHNvcnQgLXUKfQoKaW1tZWRpYXRlX2RlcGVu
126ZGVuY2llczEoKQp7CiAgICAgICAgaW50ZXJzZWN0aW9uIFwKICAgICAgICAgICAgICAgIDwoY29t
127cGdlbiAtQSBmdW5jdGlvbiB8IHNvcnQgLXUpIFwKICAgICAgICAgICAgICAgIDwoZGVjbGFyZSAt
128ZiAiJDEiIHwgZXh0cmFjdF93b3JkcykKfQoKaW1tZWRpYXRlX2RlcGVuZGVuY2llcygpCnsKICAg
129ICAgICAoZm9yIGYKICAgICAgICBkbwogICAgICAgICAgICAgICAgaW1tZWRpYXRlX2RlcGVuZGVu
130Y2llczEgIiRmIgogICAgICAgIGRvbmUpIHwgc29ydCAtdQp9CgpyZWN1cnNpdmVfZGVwZW5kZW5j
131aWVzKCkKewogICAgICAgIGxvY2FsIHNlZW49KCkKICAgICAgICB3aGlsZSBbICQjIC1ndCAwIF0K
132ICAgICAgICBkbwogICAgICAgICAgICAgICAgc2Vlbis9KCIkQCIpCiAgICAgICAgICAgICAgICBz
133ZXQgLS0gJChkaWZmZXJlbmNlIDwoaW1tZWRpYXRlX2RlcGVuZGVuY2llcyAiJEAiKSBcCiAgICAg
134ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwocHJpbnRmICclc1xuJyAiJHtzZWVuW0Bd
135fSIgfCBzb3J0IC11KSkKICAgICAgICBkb25lCiAgICAgICAgcHJpbnRmICclc1xuJyAiJHtzZWVu
136W0BdfSIKfQo=
137.
138}
139
140bash_rpc_source()
141{
142base64 -d <<.
143IyEvYmluL2ZhbHNlCgpjb21tYW5kIC12IHJlY3Vyc2l2ZV9kZXBlbmRlbmNpZXMgPi9kZXYvbnVs
144bCB8fApzb3VyY2UgZGVwZW5kZW5jaWVzLmJhc2gKCiMgSW5wdXQ6ICRCQVNIX1JQQ19SRU1PVEVf
145REVTVCAtIGhvc3RuYW1lIHBhc3NlZCB0byBzc2ggKHVzZXMgc3NoIGhvc3QgYWxpYXNlcykKIyBJ
146bnB1dDogJEJBU0hfUlBDX1NTSF9PUFRJT05TIC0gb3B0aW9uIGFyZ3VtZW50cyBwYXNzZWQgdG8g
147c3NoICh0aGV5IHByZWNlZGUgJy0tJykKIyBJbnB1dDogIiQwIiAtIGNvcGllZCB0byByZW1vdGUg
148YmFzaCdzICQwCiMgSW5wdXQ6ICQxIC0gc2hlbGwgc2NyaXB0IHNvdXJjZSBjb2RlIHRvIHJ1biBp
149biB0aGUgcmVtb3RlIGJhc2gKIyBJbnB1dDogJDIsICQzLCAuLi4gLSBjb21tYW5kIGxpbmUgYXJn
150dW1lbnRzIHBhc3NlZCB0byB0aGUgcmVtb3RlIGJhc2ggYXMgJDEsICQyLCAuLi4KIyBJbnB1dDog
151c3RkaW4sIHN0ZG91dCwgc3RkZXJyOiBwYXNzZWQgdG8gdGhlIHJlbW90ZSBiYXNoIG92ZXIgc3No
152CiMgSW5wdXQ6ICIkU0hFTEwiIC0gcmVtb3RlIHNoZWxsIHRvIGxhdW5jaCAoYmV0dGVyIGJlIGJh
153c2gpCl9fYmFzaHJwY19fcmVtb3RlX3J1bl9zY3JpcHQoKQp7CiAgICAgICAgbG9jYWwgc2NyaXB0
154PSIkMSIKICAgICAgICBzaGlmdAogICAgICAgIEJBU0hfUlBDX1NIRUxMX09QVElPTlM9KC0tbm9y
155YyAtLW5vcHJvZmlsZSkKICAgICAgICAjIHByaW50ZiAnREVCVUc6PCVzPlxuJyAiJHtCQVNIX1JQ
156Q19TU0hfT1BUSU9OU1tAXX0iID4mMgogICAgICAgIGV4ZWMgc3NoIFwKICAgICAgICAgICAgICAg
157ICIke0JBU0hfUlBDX1NTSF9PUFRJT05TW0BdfSIgLS0gXAogICAgICAgICAgICAgICAgIiR7QkFT
158SF9SUENfUkVNT1RFX0RFU1Q6LWxvY2FsaG9zdH0iIFwKICAgICAgICAgICAgICAgICIkU0hFTEwi
159ICIke0JBU0hfUlBDX1NIRUxMX09QVElPTlNbQF19IiBcCiAgICAgICAgICAgICAgICAtYyAiJHtz
160Y3JpcHRAUX0iIFwKICAgICAgICAgICAgICAgICIkMCIgIiR7QEBRfSIKfQoKd2l0aF9zc2hfb3B0
161aW9ucygpIHsgX19iYXNocnBjX193aXRoX3NzaF9vcHRpb25zICIkQCI7IH0KX19iYXNocnBjX193
162aXRoX3NzaF9vcHRpb25zKCkKewogICAgICAgIGxvY2FsIC1hIEJBU0hfUlBDX1NTSF9PUFRJT05T
163CiAgICAgICAgd2hpbGUgWyAiJDEiICE9ICctLScgXQogICAgICAgIGRvCiAgICAgICAgICAgICAg
164ICBpZiBbICQjIC1ndCAwIF0KICAgICAgICAgICAgICAgIHRoZW4KICAgICAgICAgICAgICAgICAg
165ICAgICAgQkFTSF9SUENfU1NIX09QVElPTlMrPSgiJDEiKQogICAgICAgICAgICAgICAgICAgICAg
166ICBzaGlmdAogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAg
167ZmkKICAgICAgICAgICAgICAgID4mMiBwcmludGYgJyVzOiBFcnJvcjogJXNcbicgIiQwIiBcCid3
168aXRoX3NzaF9vcHRpb25zKCk6IGV4cGVjdGVkIGFyZ3VtZW50ICItLSIgbm90IGZvdW5kJwogICAg
169ICAgICAgICAgICAgZXhpdCAxCiAgICAgICAgZG9uZQogICAgICAgIHNoaWZ0CiAgICAgICAgIiRA
170Igp9Cgp3aXRoX3NzaF9vcHRpb24oKSB7IF9fYmFzaHJwY19fd2l0aF9zc2hfb3B0aW9uICIkQCI7
171IH0KX19iYXNocnBjX193aXRoX3NzaF9vcHRpb24oKQp7CiAgICAgICAgbG9jYWwgLWEgQkFTSF9S
172UENfU1NIX09QVElPTlM9KCIke0JBU0hfUlBDX1NTSF9PUFRJT05TW0BdfSIpCiAgICAgICAgQkFT
173SF9SUENfU1NIX09QVElPTlMrPSgiJDEiKQogICAgICAgIHNoaWZ0CiAgICAgICAgIiRAIgp9Cgoj
174IFByZXNlcnZlcyB0aGUgcmVzdCBvZiBzdGRpbiBmb3IgdGhlIGNvbW1hbmQuCl9fYmFzaHJwY19f
175ZXZhbF9zdGRpbigpCnsKICAgICAgICBbICIkMSIgXSAmJiByZWFkIC1OIiQxIiAtciB8fCByZXR1
176cm4KCiAgICAgICAgIyBQcmVwYXJlICIkQCIgZm9yIHNjcmlwdCBleGVjdXRpb24gY29udGV4dC4K
177ICAgICAgICBzaGlmdAoKICAgICAgICAjIEV2ZW4gdW5zZXQgUkVQTFkgdG8gbGVhdmUgcHJpc3Rp
178bmUgZW52aXJvbm1lbnQuCiAgICAgICAgZXZhbCAidW5zZXQgUkVQTFk7ICRSRVBMWSIKfQoKX19i
179YXNocnBjX19ydW5fZnVuY3Rpb25fc2ltcGxlKCkKewogICAgICAgIHNjcmlwdF9zb3VyY2U9JChk
180ZWNsYXJlIC1mICIkMSIgJiYgcHJpbnRmICciJEAiO1xuJykKICAgICAgICBfX2Jhc2hycGNfX3Jl
181bW90ZV9ydW5fc2NyaXB0ICBcCiAgICAgICAgICAgICAgICAiJHNjcmlwdF9zb3VyY2UiIFwKICAg
182ICAgICAgICAgICAgICIkQCIKfQoKX19iYXNocnBjX19ub3R0eV9zdGFnZTEoKQp7CiAgICAgICAg
183WyAiJDEiIF0gJiYKICAgICAgICByZWFkIC1OIiQxIiAtciAmJiAjIFJlYWQgc2NyaXB0IGZyb20g
184c3RkaW4sIG11bmdlcyBSRVBMWQogICAgICAgIHNoaWZ0ICYmICMgUHJlcGFyZSAiJEAiIGZvciBz
185Y3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCiAgICAgICAgZXZhbCAidW5zZXQgUkVQTFk7ICRSRVBM
186WSIgIyBVbnNldCBtdW5nZWQgUkVQTFkgaW4gZXhlYyBjb250ZXh0Cn0KCl9fYmFzaHJwY19fcmVt
187b3RlX3J1bl9zdGFnZTFfbm90dHkoKQp7CiAgICAgICAgc3RhZ2UxX3NvdXJjZT0kKAogICAgICAg
188ICAgICAgICAgZGVjbGFyZSAtZiBfX2Jhc2hycGNfX25vdHR5X3N0YWdlMSB8CiAgICAgICAgICAg
189ICAgICAgICAgICAgIHNlZCAtRW5lICdzL14gezR9Ly9wJwogICAgICAgICkKICAgICAgICBzdGFn
190ZTJfc291cmNlPSQxCiAgICAgICAgc2hpZnQKICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmlu
191dGYgJyVzJyAiJHN0YWdlMl9zb3VyY2UiCiAgICAgICAgICAgICAgICBjYXQKICAgICAgICB9IHwK
192ICAgICAgICAgICAgICAgIF9fYmFzaHJwY19fcmVtb3RlX3J1bl9zY3JpcHQgXAogICAgICAgICAg
193ICAgICAgICAgICAgICAiJHN0YWdlMV9zb3VyY2UiICIkeyNzdGFnZTJfc291cmNlfSIgXAogICAg
194ICAgICAgICAgICAgICAgICAgICAiJEAiCn0KCl9fYmFzaHJwY19fcmVhZF9zdGRpbigpCnsKICAg
195ICAgICBSRVBMWT0KICAgICAgICByZWFkIC1yIC1OMjE0NzQ4MzY0NyB8fCBbICIkUkVQTFkiIF0K
196fQoKX19iYXNocnBjX190dHlfc3RhZ2UxKCkKewogICAgICAgIGxvY2FsIFNFVF9URVJNPSIkMSIK
197ICAgICAgICBsb2NhbCBQUkVMVURFPSJzaGlmdDske0JBU0hfUlBDX1RSQUNFX1JFTU9URTorIHNl
198dCAteDt9IgogICAgICAgIF9fYmFzaHJwY19fcmVhZF9zdGRpbiA8PEVORAojIFdlIHNhdmVkIHN0
199YWdlMiBpbiBURVJNLgojIFN0b3JlIGl0IGluIHBhcmFtZXRlciAxOgpzZXQgLS0gIlwkVEVSTSIg
200IlwkQCIKIyBSZXN0b3JlIG9yaWdpbmFsIFRFUk06ClRFUk09JHtTRVRfVEVSTUBRfQojIFJ1biBz
201dGFnZTI6CnNvdXJjZSA8KHByaW50ZiAnJXNcbiVzJyAke1BSRUxVREVAUX0gIlwkMSIpCkVORAog
202ICAgICAgIHByaW50ZiAnJXMnICIkUkVQTFkiCn0KCl9fYmFzaHJwY19fcmVtb3RlX3J1bl9zdGFn
203ZTFfdHR5KCkKewogICAgICAgIHN0YWdlMl9zb3VyY2U9JDEKICAgICAgICBzdGFnZTFfc291cmNl
204PSQoX19iYXNocnBjX190dHlfc3RhZ2UxICIkVEVSTSIgfCBncmVwIC12ICdeIycpCiAgICAgICAg
205c2hpZnQKICAgICAgICAoCiAgICAgICAgICAgICAgICAjIHByaW50ZiAnREVCVUcyOjwlcz5cbicg
206IiR7QkFTSF9SUENfU1NIX09QVElPTlNbQF19IiA+JjIKICAgICAgICAgICAgICAgIFRFUk09IiRz
207dGFnZTJfc291cmNlIiBcCiAgICAgICAgICAgICAgICAgICAgICAgIF9fYmFzaHJwY19fd2l0aF9z
208c2hfb3B0aW9uIC10IFwKICAgICAgICAgICAgICAgICAgICAgICAgX19iYXNocnBjX19yZW1vdGVf
209cnVuX3NjcmlwdCBcCiAgICAgICAgICAgICAgICAgICAgICAgICIkc3RhZ2UxX3NvdXJjZSIgIiRA
210IgogICAgICAgICkKfQoKcmVtb3RlX3J1bl9mdW5jdGlvbigpCnsKICAgICAgICBtYWluPSQxCiAg
211ICAgICAgIyBmdW5jcz0kKGNvbXBnZW4gLUEgZnVuY3Rpb24pCiAgICAgICAgZnVuY3M9JChyZWN1
212cnNpdmVfZGVwZW5kZW5jaWVzICIkbWFpbiIpCiAgICAgICAgc3RhZ2UyX3NvdXJjZT0kKAogICAg
213ICAgICAgICAgICAgZGVjbGFyZSAtZiAkZnVuY3MKICAgICAgICAgICAgICAgIHByaW50ZiAnIiRA
214IlxuJwogICAgICAgICkKICAgICAgICBpZiBbIC10IDAgXQogICAgICAgIHRoZW4KICAgICAgICAg
215ICAgICAgIF9fYmFzaHJwY19fcmVtb3RlX3J1bl9zdGFnZTFfdHR5ICIkc3RhZ2UyX3NvdXJjZSIg
216IiRAIgogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIF9fYmFzaHJwY19fcmVtb3RlX3J1bl9z
217dGFnZTFfbm90dHkgIiRzdGFnZTJfc291cmNlIiAiJEAiCiAgICAgICAgZmkKfQoK
218.
219}
220
221apply_template()
222{
223 ctpl -c "$(printf 'SITE_NAME="%s";' "$1")" <(template)
224}
225
226mv_idempotent()
227{
228 if diff -s "$1" "$2" >/dev/null 2>&1
229 then
230 rm -- "$1"
231 else
232 mv -v --suffix=~"$(date -Ins)" --backup -T -- "$1" "$2"
233 fi
234}
235
236install_prerequisites()
237{
238 command -v ctpl >/dev/null &&
239 command -v apache2ctl >/dev/null ||
240 apt install --no-upgrade ctpl apache2
241 a2query -m md >/dev/null || a2enmod md >&2
242 a2query -m ssl >/dev/null || a2enmod ssl >&2
243}
244
245main()
246{
247 set -e
248 set -o pipefail
249
250 install_prerequisites
251 REAL_OUT=/etc/apache2/sites-available/default-ssl.conf
252 TMP_OUT=$REAL_OUT.tmp
253 set -- "$(hostname --fqdn)"
254 apply_template "$1" > "$TMP_OUT"
255 mv_idempotent "$TMP_OUT" "$REAL_OUT"
256 a2query -s default-ssl >/dev/null || a2ensite default-ssl >&2
257
258 staging=/etc/apache2/md/staging/$1
259 domains=/etc/apache2/md/domains/$1
260 if [ -f "$domains"/pubcert.pem ] # Success!
261 then
262 ls -lR -- "$domains" >&2
263 elif [ -f "$staging"/pubcert.pem ] # Probably done, just need to reload:
264 then
265 set -x
266 systemctl reload apache2
267 elif [ -d "$staging" ] # Still trying, probably just need to wait:
268 then
269 ls -lR -- "$staging" >&2
270 else # Probably first run, just installed:
271 set -x
272 systemctl reload apache2
273 fi
274 exit
275}
276
277eval "$(dependencies_source)"
278eval "$(bash_rpc_source)"
279
280target=${1:-$(hostname --fqdn)}
281BASH_RPC_REMOTE_DEST=$target remote_run_function main