-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfocus_time.py
executable file
·120 lines (99 loc) · 4.1 KB
/
focus_time.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/python3
# Library imports
# Version 1.05
import hashlib
import requests
import json
import os
import re
# Variables
sys_hosts = "/etc/hosts"
service_script_url = "https://raw.githubusercontent.com/NoUselessTime/focus_time/main/195c4de4050d9f9dc30ff973a3485f53.py"
service_script_path = "/usr/local/bin/SysTimeMgr/SysTimeMgr.py"
service_script_dir = "/usr/local/bin/SysTimeMgr"
unit_url = "https://raw.githubusercontent.com/NoUselessTech/focus_time/main/195c4de4050d9f9dc30ff973a3485f53.service"
unit_path = "/etc/systemd/system/SysTimeMgr.service"
unit_dir = "/etc/systemd/system/"
crontab = "/etc/crontab"
one_liner = 'https://raw.githubusercontent.com/.*/focus_time/main/focus_time.py'
one_liner_pattern = re.compile(one_liner)
cron_entry = '* * * * * root /usr/bin/python3 -c "import requests; import os; exec(requests.get(\'https://raw.githubusercontent.com/NoUselessTech/focus_time/main/focus_time.py\').text)"\n'
focus_time_regex = re.compile("focus_time")
block_list_url = 'https://8a85v0qev8.execute-api.us-east-2.amazonaws.com/Production/blocklist/current'
xmind_sys_real = 'net.xmind.XMind'
xmind_sys_fake = 'xmind'
# Functions
def maintain_persistance():
if os.path.isdir(service_script_dir) == False:
os.mkdir(service_script_dir)
if os.path.isdir(unit_dir) == False:
os.mkdir(unit_dir)
service_script = requests.get(service_script_url).text
with open(service_script_path, "w") as script_file:
script_file.write(service_script)
script_file.close()
unit_text = requests.get(unit_url).text
with open(unit_path, "w") as unit_file:
unit_file.write(unit_text)
unit_file.close()
lines = ""
with open(crontab, "r") as file:
lines = file.readlines()
file.close()
with open(crontab, "w") as file:
for line in lines:
if focus_time_regex.search(line) == None:
file.write(line)
file.close()
cron_set = False
with open(crontab, "r") as file:
lines = file.readlines()
for line in lines:
if one_liner_pattern.search(line) != None:
cron_set = True
file.close()
if cron_set == False:
with open(crontab, "a") as file:
file.write(cron_entry)
file.close()
def get_time_info():
try:
current_time = requests.get("https://www.timeapi.io/api/Time/current/zone?timeZone=America/Costa_Rica")
results = json.loads(current_time.content)
return [results['dayOfWeek'].upper(), results['hour']]
except:
current_time = requests.get("https://www.timeapi.io/api/Time/current/zone?timeZone=America/Costa_Rica")
results = json.loads(current_time.content)
return [results['dayOfWeek'].upper(), results['hour']]
def get_blocklist():
blocklist_json = requests.get(block_list_url).text
return json.loads(blocklist_json)
def set_block(time_info):
blocklist = get_blocklist()
with open(sys_hosts, "w") as hosts:
for website in blocklist['websites']:
url = website['url']
if ( website['days'][time_info[0]][time_info[1]] == False ):
hosts.write(f"127.0.0.1 {url} www.{url} mail.{url} web.{url}\n")
hosts.write("127.0.0.1 localhost\n")
hosts.write("127.0.1.1 pop-os\n")
hosts.write("::1 ip6-localhost ip6-loopback\n")
hosts.write("fe00::0 ip6-localnet\n")
hosts.write("ff00::0 ip6-mcastprefix\n")
hosts.write("ff02::1 ip6-allnodes\n")
hosts.write("ff02::1 ip6-allnodes\n")
hosts.write("ff02::3 ip6-allhosts\n")
hosts.close()
def block_xmind():
os.system("mv /var/lib/flatpak/app/net.xmind.XMind /var/lib/flatpak/app/xmind >/dev/null 2>&1")
def enable_xmind():
os.system("mv /var/lib/flatpak/app/xmind /var/lib/flatpak/app/net.xmind.XMind >/dev/null 2>&1")
# Script
time_info = get_time_info()
maintain_persistance()
try:
os.system("systemctl enable SysTimeMgr.service >/dev/null 2>&1")
os.system("systemctl start SysTimeMgr.service >/dev/null 2>&1")
except:
print("That didn't work...")
set_block(time_info)