Skip to content
This repository was archived by the owner on Nov 22, 2024. It is now read-only.

Commit 1eed90b

Browse files
committed
CloudFlare API v4 complete rewrite. Added all API calls. Added examples. Added CLU tool. Added initial tests. Updated README
1 parent edefd99 commit 1eed90b

22 files changed

Lines changed: 1499 additions & 131 deletions

CloudFlare/__init__.py

Lines changed: 297 additions & 0 deletions
Large diffs are not rendered by default.

CloudFlare/exceptions.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
class CloudFlareError(Exception):
3+
def __init__(self, code, message):
4+
self.code = code
5+
self.message = message
6+
7+
def __int__(self):
8+
return self.code
9+
10+
def __str__(self):
11+
return self.message
12+
13+
class CloudFlareAPIError(CloudFlareError):
14+
pass
15+
16+
class CloudFlareInternalError(CloudFlareError):
17+
pass
18+

CloudFlare/read_configs.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import os
2+
import re
3+
import ConfigParser
4+
5+
def read_configs():
6+
7+
# envioronment variables override config files
8+
email = os.getenv('CF_API_EMAIL')
9+
token = os.getenv('CF_API_KEY')
10+
certtoken = os.getenv('CF_API_CERTKEY')
11+
12+
# grab values from config files
13+
config = ConfigParser.RawConfigParser()
14+
config.read(['.cloudflare.cfg', os.path.expanduser('~/.cloudflare.cfg'), os.path.expanduser('~/.cloudflare/cloudflare.cfg')])
15+
16+
if email is None:
17+
try:
18+
email = re.sub(r"\s+", '', config.get('CloudFlare', 'email'))
19+
except:
20+
email = None
21+
22+
if token is None:
23+
try:
24+
token = re.sub(r"\s+", '', config.get('CloudFlare', 'token'))
25+
except:
26+
token = None
27+
28+
if certtoken is None:
29+
try:
30+
certtoken = re.sub(r"\s+", '', config.get('CloudFlare', 'certtoken'))
31+
except:
32+
certtoken = None
33+
34+
return [ email, token, certtoken ]
35+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
def sanitize_secrets(secrets):
22
redacted_phrase = 'REDACTED'
33

4+
if secrets is None:
5+
return None
6+
47
secrets_copy = secrets.copy()
58
if 'password' in secrets_copy:
69
secrets_copy['password'] = redacted_phrase
710
elif 'X-Auth-Key' in secrets_copy:
811
secrets_copy['X-Auth-Key'] = redacted_phrase
12+
elif 'X-Auth-User-Service-Key' in secrets_copy:
13+
secrets_copy['X-Auth-User-Service-Key'] = redacted_phrase
914

1015
return secrets_copy

0 commit comments

Comments
 (0)