Compare commits

...

22 Commits

Author SHA1 Message Date
49f39726e5 Adding A type record dns adding 2020-12-13 17:00:19 +01:00
b762463de9 Pylint 2020-12-13 14:44:00 +01:00
f81c156097 Update drone.yml
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-29 11:12:41 +01:00
1e621d3ab9 Update drone.yml
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-29 10:59:23 +01:00
f28ef80208 Update drone.yml
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-29 10:56:22 +01:00
ea3d47a9bc Update drone.yml
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-29 10:52:24 +01:00
c808018c21 Update drone.yml
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-29 10:50:23 +01:00
7001dbe550 Update dron ci
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-28 18:42:37 +01:00
584ad86f33 switching to alpine python
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-28 18:36:20 +01:00
46883644b2 Adding pylint install to drone ci
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-28 18:25:51 +01:00
0db7f68ae8 fixing image name in drone config
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-28 18:16:10 +01:00
72530e2db5 fixing image name in drone config
Some checks failed
continuous-integration/drone/push Build encountered an error
2020-11-28 18:14:39 +01:00
43a2ddc152 Adding architecture to drone config
Some checks failed
continuous-integration/drone/push Build encountered an error
2020-11-28 18:12:36 +01:00
6d98a877e1 Adding drone-ci
Some checks failed
continuous-integration/drone/push Build was killed
2020-11-28 18:02:07 +01:00
834b214dcf Update gitignore 2020-11-28 18:01:43 +01:00
4d125b09cf Adding descr on argument 2020-11-28 17:37:44 +01:00
5c91678ac6 Using default TTL 2020-04-07 14:23:44 +02:00
0d9360c809 Adding test if subdomain already exists 2020-04-07 13:50:07 +02:00
93b83f08d0 Function to add CNAME entry to zone 2020-04-07 12:08:52 +02:00
93ee76e130 Update gitignore 2020-03-13 11:14:03 +01:00
5c8238bed3 Adding removing redirection functionality 2020-03-13 11:13:41 +01:00
f1bbd0c274 Update README 2020-03-13 10:56:47 +01:00
7 changed files with 80 additions and 15 deletions

17
.drone.yml Normal file
View File

@@ -0,0 +1,17 @@
kind: pipeline
type: docker
name: syntax
platform:
os: linux
arch: arm
steps:
- name: syntax
pull: if-not-exists
image: python:3.7-slim-buster
commands:
- apt update
- apt install -y pylint libcurl4-openssl-dev libssl-dev python-dev gcc
- pip3 install -r requirements.txt
- pylint *.py

3
.gitignore vendored
View File

@@ -1,3 +1,6 @@
!.drone.yml
# IGNORE
data/*
*.yml
*.conf
*.swp

View File

@@ -2,5 +2,6 @@
Needed files:
* ovh.conf as explained here : https://github.com/ovh/python-ovh
* creds.yml containing nextcloud credentials for bill upload
* ovh.conf as explained here : https://github.com/ovh/python-ovh.
* creds.yml containing nextcloud credentials for bill upload.
* data directory next to scripts.

View File

@@ -2,8 +2,8 @@
import requests
import ovh
import pycurl
import yaml
import pycurl
try:
input = raw_input
@@ -24,7 +24,7 @@ for bill in bills:
f.write(r.content)
f.close()
url += bill + ".pdf"
with open('/dev/null','wb') as output:
with open('/dev/null', 'wb') as output:
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.USERPWD, '%s:%s' %(username, password))
@@ -34,7 +34,7 @@ for bill in bills:
status = c.getinfo(c.RESPONSE_CODE)
c.close()
output.close()
if (status == 404):
if status == 404:
file = open(file_path)
c = pycurl.Curl()
c.setopt(c.URL, url)

View File

@@ -1,18 +1,41 @@
#!/usr/bin/python3
import requests
import argparse
import json
import ovh
import pycurl
import argparse
import requests
try:
input = raw_input
except NameError:
pass
parser = argparse.ArgumentParser(description='Process arguments')
parser.add_argument('domain', metavar='method', type=str, help='Function to use')
parser.add_argument('--method', metavar='fr', type=str, help='domain to request from')
def addCNAME(client,domain,fr,to):
result = client.get(base_url + "/record",fieldType="CNAME",subDomain=fr)
if not result:
result = client.post(base_url + "/record",fieldType="CNAME",subDomain=fr,target=to)
print(json.dumps(result,indent=4))
result = client.post(base_url+ "/refresh")
print("Refresh zone trigger")
else:
print("CNAME already existing")
def addA(client,domain,fr,to):
result = client.get(base_url + "/record",fieldType="A",subDomain=fr)
if not result:
result = client.post(base_url + "/record",fieldType="A",subDomain=fr,target=to)
print(json.dumps(result,indent=4))
result = client.post(base_url+ "/refresh")
print("Refresh zone trigger")
else:
print("A record already existing")
parser = argparse.ArgumentParser(description="Process arguments")
parser.add_argument("domain", metavar="domain", type=str, help="Domain to request")
parser.add_argument("--method", metavar="type", type=str, help="Function to use. Ex: addCNAME")
parser.add_argument("--src", metavar="src", type=str, help="Source subdomain")
parser.add_argument("--dest", metavar="dst", type=str, help="Dest IP or domain")
args = parser.parse_args()
# Instantiate. Visit https://api.ovh.com/createToken/?GET=/me
@@ -20,7 +43,13 @@ args = parser.parse_args()
client = ovh.Client()
# Grab bill list
zone = client.get('/domain/zone/' + args.domain + '/record')
for id in zone:
entry = client.get('/domain/zone/' + args.domain + '/record/'+str(id))
base_url = "/domain/zone/" + args.domain
zone = client.get(base_url + "/record")
if args.method == "list":
for id in zone:
entry = client.get(base_url + "/record/"+str(id))
print(entry)
elif args.method == "addCNAME":
addCNAME(client,args.domain,args.src,args.dest)
elif args.method == "addA":
addA(client,args.domain,args.src,args.dest)

View File

@@ -15,7 +15,7 @@ def writeRedirectionsToFile(client,domain):
file.write(redirection['from']+','+redirection['to']+','+redirection['id']+'\n')
file.close()
def checkRedirExists(client,domain, fr,to):
def checkRedirExists(client,domain,fr,to):
mailbox = client.get('/email/domain/' + domain + '/redirection')
for id in mailbox:
redirection = client.get('/email/domain/' + domain +'/redirection/'+str(id))
@@ -33,6 +33,15 @@ def addRedirection(client,domain,fr,to):
print(json.dumps(result,indent=4))
return 0
def delRedirection(client,domain,fr,to):
id_redir = checkRedirExists(client,domain,fr,to)
if not id_redir:
return False
else:
result = client.delete('/email/domain/'+ domain +'/redirection/' + str(id_redir))
print(json.dumps(result,indent=4))
return 0
parser = argparse.ArgumentParser(description='Process arguments')
parser.add_argument('method', metavar='method', type=str, help='Function to use')
parser.add_argument('domain', metavar='domain', type=str, help='domain')
@@ -52,3 +61,5 @@ if (args.method == "write"):
elif (args.method == "add"):
if not (checkRedirExists(client,args.domain,args.fr,args.to)):
addRedirection(client,args.domain,args.fr,args.to)
elif (args.method == "del"):
status = delRedirection(client,args.domain,args.fr,args.to)

4
requirements.txt Normal file
View File

@@ -0,0 +1,4 @@
argparse
pycurl
ovh
requests