Skip to content

Commit 559c570

Browse files
committed
RC version
0 parents  commit 559c570

28 files changed

+829
-0
lines changed

.gitignore

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
.idea/
2+
3+
# Byte-compiled / optimized / DLL files
4+
__pycache__/
5+
*.py[cod]
6+
*$py.class
7+
8+
# C extensions
9+
*.so
10+
11+
# Distribution / packaging
12+
.Python
13+
build/
14+
develop-eggs/
15+
dist/
16+
downloads/
17+
eggs/
18+
.eggs/
19+
lib/
20+
lib64/
21+
parts/
22+
sdist/
23+
var/
24+
wheels/
25+
*.egg-info/
26+
.installed.cfg
27+
*.egg
28+
29+
# PyInstaller
30+
# Usually these files are written by a python script from a template
31+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
32+
*.manifest
33+
*.spec
34+
35+
# Installer logs
36+
pip-log.txt
37+
pip-delete-this-directory.txt
38+
39+
# Unit test / coverage reports
40+
htmlcov/
41+
.tox/
42+
.coverage
43+
.coverage.*
44+
.cache
45+
nosetests.xml
46+
coverage.xml
47+
*.cover
48+
.hypothesis/
49+
50+
# Translations
51+
*.mo
52+
*.pot
53+
54+
# Django stuff:
55+
*.log
56+
local_settings.py
57+
58+
# Flask stuff:
59+
instance/
60+
.webassets-cache
61+
62+
# Scrapy stuff:
63+
.scrapy
64+
65+
# Sphinx documentation
66+
docs/_build/
67+
68+
# PyBuilder
69+
target/
70+
71+
# Jupyter Notebook
72+
.ipynb_checkpoints
73+
74+
# pyenv
75+
.python-version
76+
77+
# celery beat schedule file
78+
celerybeat-schedule
79+
80+
# SageMath parsed files
81+
*.sage.py
82+
83+
# Environments
84+
.env
85+
.venv
86+
env/
87+
venv/
88+
ENV/
89+
90+
# Spyder project settings
91+
.spyderproject
92+
.spyproject
93+
94+
# Rope project settings
95+
.ropeproject
96+
97+
# mkdocs documentation
98+
/site
99+
100+
# mypy
101+
.mypy_cache/

README.rst

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
DirectAdmin Server Agent
2+
3+
* https://www.directadmin.com/search_versions.php?query=_pre.sh
4+
* https://www.directadmin.com/search_versions.php?query=_post.sh

dasa/__init__.py

Whitespace-only changes.

dasa/ciapi.py

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import requests
2+
from dasa.config import config
3+
4+
5+
def get_session():
6+
s = requests.Session()
7+
s.headers.update({'X-DASA-Key': config.get('api_key')})
8+
return s

dasa/cmd/__init__.py

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import sys
2+
import logging
3+
4+
root = logging.getLogger()
5+
root.setLevel(logging.INFO)
6+
7+
ch = logging.StreamHandler(sys.stdout)
8+
ch.setLevel(logging.DEBUG)
9+
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
10+
ch.setFormatter(formatter)
11+
root.addHandler(ch)

dasa/cmd/dns_write_post.py

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
s = ciapi.get_session()
8+
s.post(config.get('api_base_url') + 'system/directadmin/dns_write_post',
9+
json=os.environ,
10+
timeout=config.get('api_timeout'))
11+
12+
if s.status_code != 200:
13+
print(s.json().get('message'))
14+
exit(1)

dasa/cmd/domain_change_post.py

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
s = ciapi.get_session()
8+
9+
# domain_create_post for newdomain
10+
json = os.environ
11+
old_domain = json.domain
12+
json.domain = json.newdomain
13+
del json.newdomain
14+
s.post(config.get('api_base_url') + 'system/directadmin/domain_create_post',
15+
json=json,
16+
timeout=config.get('api_timeout'))
17+
18+
if s.status_code == 404:
19+
print(s.json().get('message'))
20+
exit(0)
21+
22+
if s.status_code != 200:
23+
print(s.json().get('message'))
24+
exit(1)
25+
26+
# domain_destroy_post for (old) domain
27+
json.domain = old_domain
28+
s.post(config.get('api_base_url') + 'system/directadmin/domain_destroy_post',
29+
json=json,
30+
timeout=config.get('api_timeout'))
31+
32+
if s.status_code == 404:
33+
print(s.json().get('message'))
34+
exit(0)
35+
36+
if s.status_code != 200:
37+
print(s.json().get('message'))
38+
exit(1)

dasa/cmd/domain_change_pre.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
s = ciapi.get_session()
8+
9+
# pre-clear via domain_create_pre
10+
json = os.environ
11+
json.domain = json.newdomain
12+
del json.newdomain
13+
s.post(config.get('api_base_url') + 'system/directadmin/domain_create_pre',
14+
json=json,
15+
timeout=config.get('api_timeout'))
16+
17+
if s.status_code == 404:
18+
print(s.json().get('message'))
19+
exit(0)
20+
21+
if s.status_code != 200:
22+
print(s.json().get('message'))
23+
exit(1)

dasa/cmd/domain_create_post.py

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
if 'username' not in os.environ or 'domain' not in os.environ:
8+
print('Required environment variables missing, expecting: username, domain')
9+
exit(1)
10+
11+
# Set SpamAssassin options
12+
if os.path.isfile('/etc/virtual/' + os.environ.get('domain') + '/filter.conf'):
13+
with open('/etc/virtual/' + os.environ.get('domain') + '/filter.conf', 'a') as f:
14+
f.write("high_score=15\nhigh_score_block=yes\nwhere=userspamfolder\n")
15+
16+
with open('/usr/local/directadmin/data/task.queue', 'a') as f:
17+
f.write('action=rewrite&value=filter&user=' + os.environ.get('username'))
18+
19+
# Report to CIAPI
20+
s = ciapi.get_session()
21+
s.post(config.get('api_base_url') + 'system/directadmin/domain_create_post',
22+
json=os.environ,
23+
timeout=config.get('api_timeout'))
24+
25+
if s.status_code == 404:
26+
print(s.json().get('message'))
27+
exit(0)
28+
29+
if s.status_code != 200:
30+
print(s.json().get('message'))
31+
exit(1)

dasa/cmd/domain_create_pre.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
s = ciapi.get_session()
8+
s.post(config.get('api_base_url') + 'system/directadmin/domain_create_pre',
9+
json=os.environ,
10+
timeout=config.get('api_timeout'))
11+
12+
if s.status_code == 404:
13+
print(s.json().get('message'))
14+
exit(0)
15+
16+
if s.status_code != 200:
17+
print(s.json().get('message'))
18+
exit(1)

dasa/cmd/domain_destroy_post.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
s = ciapi.get_session()
8+
s.post(config.get('api_base_url') + 'system/directadmin/domain_destroy_post',
9+
json=os.environ,
10+
timeout=config.get('api_timeout'))
11+
12+
if s.status_code == 404:
13+
print(s.json().get('message'))
14+
exit(0)
15+
16+
if s.status_code != 200:
17+
print(s.json().get('message'))
18+
exit(1)
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
s = ciapi.get_session()
8+
s.post(config.get('api_base_url') + 'system/directadmin/domain_pointer_create_post',
9+
json=os.environ,
10+
timeout=config.get('api_timeout'))
11+
12+
if s.status_code == 404:
13+
print(s.json().get('message'))
14+
exit(0)
15+
16+
if s.status_code != 200:
17+
print(s.json().get('message'))
18+
exit(1)

dasa/cmd/domain_pointer_create_pre.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
s = ciapi.get_session()
8+
s.post(config.get('api_base_url') + 'system/directadmin/domain_pointer_create_pre',
9+
json=os.environ,
10+
timeout=config.get('api_timeout'))
11+
12+
if s.status_code == 404:
13+
print(s.json().get('message'))
14+
exit(0)
15+
16+
if s.status_code != 200:
17+
print(s.json().get('message'))
18+
exit(1)
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
s = ciapi.get_session()
8+
s.post(config.get('api_base_url') + 'system/directadmin/domain_pointer_destroy_post',
9+
json=os.environ,
10+
timeout=config.get('api_timeout'))
11+
12+
if s.status_code == 404:
13+
print(s.json().get('message'))
14+
exit(0)
15+
16+
if s.status_code != 200:
17+
print(s.json().get('message'))
18+
exit(1)

dasa/cmd/spamassassin_edit_pre.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import os
2+
3+
4+
def fail_for_regular_use(message):
5+
# https: // www.directadmin.com / features.php?id = 1466
6+
if 'login_as_master_name' not in os.environ:
7+
print('Modyfikowanie tych opcji SpamAssassin jest zablokowane.')
8+
print(message)
9+
exit(1)
10+
11+
12+
# https://www.directadmin.com/features.php?id=1702
13+
def main():
14+
if 'where' in os.environ and os.environ.get('where') == 'inbox' or os.environ.get('where') == 'userspamfolder':
15+
fail_for_regular_use('Spam możesz przekazywać do katalogu spam lub usuwać.')
16+
17+
if 'high_score_block' in os.environ and os.environ.get('high_score_block') == 'no':
18+
fail_for_regular_use('Usuwanie wysoko punktowanego spamu musi być włączone.')
19+
20+
if 'high_score' in os.environ:
21+
hs = int(os.environ.get('high_score'))
22+
if hs == 0 or hs > 15:
23+
fail_for_regular_use('Maksymalna wartość wysoko punktowanego spamu to 15.')
24+
25+
if 'required_hits' in os.environ:
26+
if os.environ.get('required_hits') == 'custom':
27+
rh = float(os.environ.get('required_hits_custom'))
28+
else:
29+
rh = float(os.environ.get('required_hits'))
30+
31+
if rh > 5.0:
32+
fail_for_regular_use('Maksymalna wartość spamu to 5.0.')

dasa/cmd/user_activate_post.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
from dasa import ciapi
3+
from dasa.config import config
4+
5+
6+
def main():
7+
s = ciapi.get_session()
8+
s.post(config.get('api_base_url') + 'system/directadmin/user_activate_post',
9+
json=os.environ,
10+
timeout=config.get('api_timeout'))
11+
12+
if s.status_code == 404:
13+
print(s.json().get('message'))
14+
exit(0)
15+
16+
if s.status_code != 200:
17+
print(s.json().get('message'))
18+
exit(1)

0 commit comments

Comments
 (0)