136 lines
2.2 KiB
Python
136 lines
2.2 KiB
Python
|
|
def api_macro_login(
|
||
|
|
environment : str,
|
||
|
|
username : str,
|
||
|
|
password : str
|
||
|
|
):
|
||
|
|
if ((username is None) or (password is None)):
|
||
|
|
raise ValueError("username or password not given")
|
||
|
|
else:
|
||
|
|
response = (
|
||
|
|
api_call(
|
||
|
|
environment,
|
||
|
|
None,
|
||
|
|
"account",
|
||
|
|
"login",
|
||
|
|
{
|
||
|
|
"user": username,
|
||
|
|
"pass": password,
|
||
|
|
}
|
||
|
|
)
|
||
|
|
)
|
||
|
|
return response["_accesstoken"]
|
||
|
|
|
||
|
|
|
||
|
|
def api_macro_logout(
|
||
|
|
environment : str,
|
||
|
|
accesstoken : str
|
||
|
|
):
|
||
|
|
response = api_call(
|
||
|
|
environment,
|
||
|
|
accesstoken,
|
||
|
|
"account",
|
||
|
|
"logout",
|
||
|
|
{
|
||
|
|
}
|
||
|
|
)
|
||
|
|
return None
|
||
|
|
|
||
|
|
|
||
|
|
def api_macro_info(
|
||
|
|
environment : str,
|
||
|
|
username : str,
|
||
|
|
password : str
|
||
|
|
):
|
||
|
|
accesstoken = api_macro_login(environment, username, password)
|
||
|
|
info = api_call(
|
||
|
|
environment,
|
||
|
|
accesstoken,
|
||
|
|
"account",
|
||
|
|
"info",
|
||
|
|
{
|
||
|
|
}
|
||
|
|
)
|
||
|
|
api_macro_logout(environment, accesstoken)
|
||
|
|
return info
|
||
|
|
|
||
|
|
|
||
|
|
def api_macro_list(
|
||
|
|
environment : str,
|
||
|
|
username : str,
|
||
|
|
password : str,
|
||
|
|
domain : str
|
||
|
|
):
|
||
|
|
accesstoken = api_macro_login(environment, username, password)
|
||
|
|
info = api_call(
|
||
|
|
environment,
|
||
|
|
accesstoken,
|
||
|
|
"nameserver",
|
||
|
|
"info",
|
||
|
|
{
|
||
|
|
"domain": domain,
|
||
|
|
}
|
||
|
|
)
|
||
|
|
api_macro_logout(environment, accesstoken)
|
||
|
|
return info
|
||
|
|
|
||
|
|
|
||
|
|
def api_macro_save(
|
||
|
|
environment : str,
|
||
|
|
username : str,
|
||
|
|
password : str,
|
||
|
|
domain : str,
|
||
|
|
name : str,
|
||
|
|
type_ : str,
|
||
|
|
content : str
|
||
|
|
):
|
||
|
|
accesstoken = api_macro_login(environment, username, password)
|
||
|
|
info = api_call(
|
||
|
|
environment,
|
||
|
|
accesstoken,
|
||
|
|
"nameserver",
|
||
|
|
"info",
|
||
|
|
{
|
||
|
|
"domain": domain,
|
||
|
|
}
|
||
|
|
)
|
||
|
|
matching = list(
|
||
|
|
filter(
|
||
|
|
lambda record: ((record["name"] == (name + "." + domain)) and (record["type"] == type_)),
|
||
|
|
info["record"]
|
||
|
|
)
|
||
|
|
)
|
||
|
|
count = len(matching)
|
||
|
|
if (count == 0):
|
||
|
|
result = api_call(
|
||
|
|
environment,
|
||
|
|
accesstoken,
|
||
|
|
"nameserver",
|
||
|
|
"createRecord",
|
||
|
|
{
|
||
|
|
"domain": domain,
|
||
|
|
"name": name,
|
||
|
|
"type": type_,
|
||
|
|
"content": content,
|
||
|
|
}
|
||
|
|
)
|
||
|
|
id_ = result["id"]
|
||
|
|
log("created record %u" % id_)
|
||
|
|
elif (count == 1):
|
||
|
|
id_ = matching[0]["id"]
|
||
|
|
result = api_call(
|
||
|
|
environment,
|
||
|
|
accesstoken,
|
||
|
|
"nameserver",
|
||
|
|
"updateRecord",
|
||
|
|
{
|
||
|
|
"id": id_,
|
||
|
|
"content": content,
|
||
|
|
}
|
||
|
|
)
|
||
|
|
log("updated record %u" % id_)
|
||
|
|
else:
|
||
|
|
log("found multiple records with this name and type")
|
||
|
|
api_macro_logout(environment, accesstoken)
|
||
|
|
|
||
|
|
|