-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdomain-list-ctrl.py
68 lines (56 loc) · 1.91 KB
/
domain-list-ctrl.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Imports
from sqlite3 import connect
from argparse import ArgumentParser,ArgumentDefaultsHelpFormatter
from re import match,compile
# Regex argument check
arg_check = compile('(?P<active>enabled)|(?P<inactive>disabled)')
# Service Parameters
db_path = '/etc/pihole/gravity.db'
# Get Argument from CLI
def getArg():
parser = ArgumentParser(
description="Change blacklist/whitelist state in Gravity",
formatter_class=ArgumentDefaultsHelpFormatter
)
parser.add_argument(
"state",
help="Select state: enabled/disabled"
)
parser.add_argument(
"-c",'--comment_groups',
default=[],
nargs='*',
help=(
"Select mapped comment as a flag"
" on the basis of which to change the status"
)
)
args = parser.parse_args()
pair = vars(args)
value_match = match(arg_check,pair['state'])
if value_match:
if value_match.group('active'):
return str(1), pair['comment_groups']
elif value_match.group('inactive'):
return str(0), pair['comment_groups']
else:
print('Invalid argument')
exit()
# Make changes to Gravity.DB: 'domainlist' table
def dbConnect(gravity_path,comment_flag_list,state):
if comment_flag_list == []:
print(
'\nEmpty comment field, reffer to /path/domain-list-ctrl.py --help'
'\n[-c OPTIONAL ARGUMENT]\n\nExiting programm\n')
exit()
db_connection = connect(gravity_path)
db_cursor = db_connection.cursor()
for each_comment in comment_flag_list:
db_cursor.execute(
"UPDATE domainlist SET enabled = "
"{0} WHERE comment = '{1}'".format(state,each_comment))
db_connection.commit()
# Main
if __name__ == "__main__":
working_state,comment_group_list = getArg()
dbConnect(db_path,comment_group_list,working_state)