4 #LOOPIA_User="username"
6 #LOOPIA_Password="password"
8 LOOPIA_Api
="https://api.loopia.se/RPCSERV"
10 ######## Public functions #####################
12 #Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
17 if ! _loopia_load_config
; then
23 _debug
"First detect the root zone"
24 if ! _get_root
"$fulldomain"; then
28 _debug _sub_domain
"$_sub_domain"
29 _debug _domain
"$_domain"
33 _loopia_add_sub_domain
"$_domain" "$_sub_domain"
34 _loopia_add_record
"$_domain" "$_sub_domain" "$txtvalue"
42 if ! _loopia_load_config
; then
48 _debug
"First detect the root zone"
49 if ! _get_root
"$fulldomain"; then
54 xml_content
=$
(printf '<?xml version="1.0" encoding="UTF-8"?>
56 <methodName>removeSubdomain</methodName>
59 <value><string>%s</string></value>
62 <value><string>%s</string></value>
65 <value><string>%s</string></value>
68 <value><string>%s</string></value>
71 </methodCall>' $LOOPIA_User $LOOPIA_Password "$_domain" "$_sub_domain")
73 response
="$(_post "$xml_content" "$LOOPIA_Api" "" "POST
")"
75 if ! _contains
"$response" "OK"; then
76 _err
"Error could not get txt records"
81 #################### Private functions below ##################################
83 _loopia_load_config
() {
84 LOOPIA_User
="${LOOPIA_User:-$(_readaccountconf_mutable LOOPIA_User)}"
85 LOOPIA_Password
="${LOOPIA_Password:-$(_readaccountconf_mutable LOOPIA_Password)}"
87 if [ -z "$LOOPIA_User" ] ||
[ -z "$LOOPIA_Password" ]; then
91 _err
"You don't specify loopia user and password yet."
92 _err
"Please create you key and try again."
100 _loopia_save_config
() {
101 _saveaccountconf_mutable LOOPIA_User
"$LOOPIA_User"
102 _saveaccountconf_mutable LOOPIA_Password
"$LOOPIA_Password"
105 _loopia_get_records
() {
109 xml_content
=$
(printf '<?xml version="1.0" encoding="UTF-8"?>
111 <methodName>getZoneRecords</methodName>
114 <value><string>%s</string></value>
117 <value><string>%s</string></value>
120 <value><string>%s</string></value>
123 <value><string>%s</string></value>
126 </methodCall>' $LOOPIA_User $LOOPIA_Password "$domain" "$sub_domain")
128 response
="$(_post "$xml_content" "$LOOPIA_Api" "" "POST
")"
129 if ! _contains
"$response" "<array>"; then
144 xml_content
=$
(printf '<?xml version="1.0" encoding="UTF-8"?>
146 <methodName>getDomains</methodName>
149 <value><string>%s</string></value>
152 <value><string>%s</string></value>
155 </methodCall>' $LOOPIA_User $LOOPIA_Password)
157 response
="$(_post "$xml_content" "$LOOPIA_Api" "" "POST
")"
159 h
=$
(echo "$domain" | cut
-d .
-f $i-100)
165 if _contains
"$response" "$h"; then
166 _sub_domain
=$
(printf "%s" "$domain" | cut
-d .
-f 1-$p)
177 _loopia_add_record
() {
182 xml_content
=$
(printf '<?xml version="1.0" encoding="UTF-8"?>
184 <methodName>addZoneRecord</methodName>
187 <value><string>%s</string></value>
190 <value><string>%s</string></value>
193 <value><string>%s</string></value>
196 <value><string>%s</string></value>
202 <value><string>TXT</string></value>
205 <name>priority</name>
206 <value><int>0</int></value>
210 <value><int>60</int></value>
214 <value><string>%s</string></value>
219 </methodCall>' $LOOPIA_User $LOOPIA_Password "$domain" "$sub_domain" "$txtval")
221 response
="$(_post "$xml_content" "$LOOPIA_Api" "" "POST
")"
223 if ! _contains
"$response" "OK"; then
230 _sub_domain_exists
() {
234 xml_content
=$
(printf '<?xml version="1.0" encoding="UTF-8"?>
236 <methodName>getSubdomains</methodName>
239 <value><string>%s</string></value>
242 <value><string>%s</string></value>
245 <value><string>%s</string></value>
248 </methodCall>' $LOOPIA_User $LOOPIA_Password "$domain")
250 response
="$(_post "$xml_content" "$LOOPIA_Api" "" "POST
")"
252 if _contains
"$response" "$sub_domain"; then
258 _loopia_add_sub_domain
() {
262 if _sub_domain_exists
"$domain" "$sub_domain"; then
266 xml_content
=$
(printf '<?xml version="1.0" encoding="UTF-8"?>
268 <methodName>addSubdomain</methodName>
271 <value><string>%s</string></value>
274 <value><string>%s</string></value>
277 <value><string>%s</string></value>
280 <value><string>%s</string></value>
283 </methodCall>' $LOOPIA_User $LOOPIA_Password "$domain" "$sub_domain")
285 response
="$(_post "$xml_content" "$LOOPIA_Api" "" "POST
")"
287 if ! _contains
"$response" "OK"; then