forked from harlo/UnveillanceAnnex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
reset.py
107 lines (80 loc) · 2.95 KB
/
reset.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
import os
from sys import exit
from fabric.api import local, settings
from fabric.operations import prompt
from crontab import CronTab
from conf import DEBUG, ANNEX_DIR, MONITOR_ROOT, BASE_DIR, getConfig
from Utils.funcs import forceQuitUnveillance
from setup import initAnnex
if __name__ == "__main__":
this_dir = os.getcwd()
annex_includes = None
restore_from = None
try:
annex_includes = getConfig('annex_includes')
except KeyError as e: pass
print "****************************** [ IMPORTANT!!!! ] ******************************"
print "Do you want to save the documents added to your annex so far? (y or n)"
do_evacuate = False if prompt("[DEFAULT y]: ") == "n" else True
if do_evacuate:
from evacuate import evacuate
default_evac_root = os.path.join(os.path.expanduser('~'), "UNVEILLANCE_MEDIA_EVACUATED")
print "Where should these documents be evacuated to?"
print "i.e. /full/path/to/root"
evac_root = prompt("[DEFAULT %s]: " % default_evac_root)
if len(evac_root) == 0:
evac_root = default_evac_root
try:
restore_from = evacuate(evac_root=evac_root, omit_list=annex_includes)[0]
except:
print "Evacuation failed. Continue? (y or n)"
if prompt("[DEFAULT n]: ") != "y":
exit(-1)
print "Force-Quitting old instance"
forceQuitUnveillance()
with settings(warn_only=True):
local("rm %s/*.txt" % MONITOR_ROOT)
try:
cron = CronTab(tabfile=os.path.join(MONITOR_ROOT, "uv_cron.tab"))
for job in cron:
job.enable(False)
cron.remove_all()
with settings(warn_only=True):
local("crontab -r")
local("rm %s" % os.path.join(MONITOR_ROOT, "uv_cron.tab"))
except IOError as e:
pass
cron = CronTab(tab='# Unveillance CronTab')
cron_job = cron.new(
command="%s %s >> %s" % (getConfig('python_home'), os.path.join(BASE_DIR, 'clear_logs.py'), os.path.join(MONITOR_ROOT, "api.log.txt")),
comment="clear_logs")
try:
uv_log_cron = getConfig('uv_log_cron')
except Exception as e:
uv_log_cron = None
if uv_log_cron is None: uv_log_cron = 3
cron_job.every(uv_log_cron).days()
cron_job.enable()
cron.write(os.path.join(MONITOR_ROOT, "uv_cron.tab"))
with settings(warn_only=True):
os.chdir(ANNEX_DIR)
local("rm -rf .data")
# TODO: this should be sudoered for the unveillance user
print "****************************** [ IMPORTANT!!!! ] ******************************"
print "The next command requires sudo."
print "If you can do sudo without a password, press ENTER."
print "Or else, type it in here"
sudo_pwd = prompt("[DEFAULT None]: ")
local("%s rm -rf .git" % ("sudo" if len(sudo_pwd) == 0 else "echo \"%s\n\" | sudo -S" % sudo_pwd))
local("rm *")
initAnnex(ANNEX_DIR, BASE_DIR, getConfig('python_home'))
os.chdir(ANNEX_DIR)
if annex_includes is not None:
for _, _, files in os.walk(annex_includes):
for f in files:
local("cp %s ." % os.path.join(annex_includes, f))
# this should not be recursive.
break
os.chdir(this_dir)
if restore_from is not None: exit(1)
exit(0)