]> git.proxmox.com Git - mirror_acme.sh.git/blob - deploy/mydevil.sh
add parked_domans
[mirror_acme.sh.git] / deploy / mydevil.sh
1 #!/usr/bin/env sh
2
3 # MyDevil.net API (2019-02-03)
4 #
5 # MyDevil.net already supports automatic Let's Encrypt certificates,
6 # except for wildcard domains.
7 #
8 # This script depends on `devil` command that MyDevil.net provides,
9 # which means that it works only on server side.
10 #
11 # Author: Marcin Konicki <https://ahwayakchih.neoni.net>
12 #
13 ######## Public functions #####################
14
15 # Usage: mydevil_deploy domain keyfile certfile cafile fullchain
16 mydevil_deploy() {
17 _cdomain="$1"
18 _ckey="$2"
19 _ccert="$3"
20 _cca="$4"
21 _cfullchain="$5"
22 ip=""
23
24 _debug _cdomain "$_cdomain"
25 _debug _ckey "$_ckey"
26 _debug _ccert "$_ccert"
27 _debug _cca "$_cca"
28 _debug _cfullchain "$_cfullchain"
29
30 if ! _exists "devil"; then
31 _err "Could not find 'devil' command."
32 return 1
33 fi
34
35 ip=$(mydevil_get_ip "$_cdomain")
36 if [ -z "$ip" ]; then
37 _err "Could not find IP for domain $_cdomain."
38 return 1
39 fi
40
41 # Delete old certificate first
42 _info "Removing old certificate for $_cdomain at $ip"
43 devil ssl www del "$ip" "$_cdomain"
44
45 # Add new certificate
46 _info "Adding new certificate for $_cdomain at $ip"
47 devil ssl www add "$ip" "$_cfullchain" "$_ckey" "$_cdomain" || return 1
48
49 return 0
50 }
51
52 #################### Private functions below ##################################
53
54 # Usage: ip=$(mydevil_get_ip domain.com)
55 # echo $ip
56 mydevil_get_ip() {
57 devil dns list "$1" | cut -w -s -f 3,7 | grep "^A$(printf '\t')" | cut -w -s -f 2 || return 1
58 return 0
59 }