~feng-kylin/youker-assistant/youker-assistant

« back to all changes in this revision

Viewing changes to backends/youker-assistant-daemon/src/cleaner/__init__.py

  • Committer: lixiang
  • Date: 2018-03-06 03:13:06 UTC
  • Revision ID: lixiang@kylinos.cn-20180306031306-fd7qnru3vm4a1xjd
Rewrite with Qt5, and add system monitor

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python
2
 
# -*- coding: utf-8 -*-
3
 
### BEGIN LICENSE
4
 
# Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd
5
 
# This program is free software: you can redistribute it and/or modify it
6
 
# under the terms of the GNU General Public License version 3, as published
7
 
# by the Free Software Foundation.
8
 
#
9
 
# This program is distributed in the hope that it will be useful, but
10
 
# WITHOUT ANY WARRANTY; without even the implied warranties of
11
 
# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
12
 
# PURPOSE.  See the GNU General Public License for more details.
13
 
#
14
 
# You should have received a copy of the GNU General Public License along
15
 
# with this program.  If not, see <http://www.gnu.org/licenses/>.
16
 
### END LICENSE
17
 
 
18
 
import os
19
 
import sys
20
 
import apt
21
 
import apt_pkg
22
 
import shutil
23
 
import commands
24
 
import threading
25
 
import ctypes
26
 
from apt.progress.base import InstallProgress
27
 
import time
28
 
import historyclean
29
 
import cookiesclean
30
 
import searchsame
31
 
import diskanalyse
32
 
import osslim
33
 
import common
34
 
import cacheclean
35
 
import oldkernel
36
 
import systemhistory
37
 
import dashhistory
38
 
import softwareconfigfile
39
 
 
40
 
HOMEDIR = ''
41
 
 
42
 
def get_user_homedir(homedir):
43
 
    global HOMEDIR
44
 
    HOMEDIR = homedir
45
 
 
46
 
def return_homedir_sysdaemon():
47
 
    global HOMEDIR
48
 
    return HOMEDIR
49
 
 
50
 
# clean up by one key
51
 
class OneKeyClean():
52
 
    def __init__(self):
53
 
        self.objunneed = CleanTheUnneed()
54
 
        self.objcache = CleanTheCache()
55
 
 
56
 
    def get_onekey_crufts(self, sesdaemon, mode_list):
57
 
        homedir = common.return_homedir_sesdaemon()
58
 
        crufts_dic = {}
59
 
        total_dic = {}
60
 
        flag_dic = {'history': False, 'cookies': False, 'cache': False}
61
 
        for mode in mode_list:
62
 
            flag_dic['%s' % mode] = True
63
 
        time.sleep(1)
64
 
        if flag_dic['history']:
65
 
            historysize = 0
66
 
            objhg = historyclean.HistoryClean(homedir)
67
 
            filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir))
68
 
            if os.path.exists(filepathf):
69
 
                tempf_list = objhg.scan_firefox_history_records(filepathf)
70
 
                for onef in tempf_list:
71
 
                    sesdaemon.display_scan_process(onef[1])
72
 
                    #sesdaemon.display_scan_process_msg(onef[1])
73
 
                    historysize += onef[2]
74
 
            filepathc = "%s/.config/chromium/Default/History" % homedir
75
 
            if os.path.exists(filepathc):
76
 
                run = common.process_pid("chromium-browser")
77
 
                if not run:
78
 
                    tempc_list = objhg.scan_chromium_history_records(filepathc)
79
 
                    for onec in tempc_list:
80
 
                        sesdaemon.display_scan_process(onec[1])
81
 
                        #sesdaemon.display_scan_process_msg(onec[1])
82
 
                        historysize += onec[2]
83
 
            total_dic['history'] = str(historysize)
84
 
            sesdaemon.total_data_transmit('h', total_dic['history'])
85
 
        time.sleep(1)
86
 
        if flag_dic['cookies']:
87
 
            cookiessize = 0
88
 
            objcg = cookiesclean.CookiesClean(homedir)
89
 
            filepathff = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir))
90
 
            if os.path.exists(filepathff):
91
 
                pamf = [filepathff, 'moz_cookies', 'baseDomain']
92
 
                tempff_list = objcg.scan_cookies_records(pamf[0], pamf[1], pamf[2])
93
 
                for oneff in tempff_list:
94
 
                    sesdaemon.display_scan_process(oneff[0])
95
 
                    #sesdaemon.display_scan_process_msg(oneff[0])
96
 
                    cookiessize += oneff[1]
97
 
            filepathcc = "%s/.config/chromium/Default/Cookies" % homedir
98
 
            if os.path.exists(filepathcc):
99
 
                pamc = [filepathcc, 'cookies', 'host_key']
100
 
                tempcc_list = objcg.scan_cookies_records(pamc[0], pamc[1], pamc[2])
101
 
                for onecc in tempcc_list:
102
 
                    sesdaemon.display_scan_process(onecc[0])
103
 
                    #sesdaemon.display_scan_process_msg(onecc[0])
104
 
                    cookiessize += onecc[1]
105
 
            total_dic['cookies'] = str(cookiessize)
106
 
            sesdaemon.total_data_transmit('k', total_dic['cookies'])
107
 
        time.sleep(1)
108
 
        if flag_dic['cache']:
109
 
            cachesize = 0
110
 
            objcache = cacheclean.CacheClean()
111
 
            apt_path = "/var/cache/apt/archives"
112
 
            temp_apt_list = objcache.scan_apt_cache(apt_path)
113
 
            for oneapt in temp_apt_list:
114
 
                sesdaemon.display_scan_process(oneapt)
115
 
                #sesdaemon.display_scan_process_msg(oneapt)
116
 
                cachesize += os.path.getsize(oneapt)
117
 
            swcenterpath = '%s/.cache/software-center' % homedir
118
 
            temp_swcenter_list = objcache.public_scan_cache(swcenterpath)
119
 
            for oneswcenter in temp_swcenter_list:
120
 
                sesdaemon.display_scan_process(oneswcenter)
121
 
                #sesdaemon.display_scan_process_msg(oneswcenter)
122
 
                if os.path.isdir(oneswcenter):
123
 
                    cachesize += common.get_dir_size(oneswcenter)
124
 
                else:
125
 
                    cachesize += os.path.getsize(oneswcenter)
126
 
            total_dic['cache'] = common.confirm_filesize_unit(cachesize)
127
 
            sesdaemon.total_data_transmit('c', total_dic['cache'])
128
 
 
129
 
    def clean_all_onekey_crufts(self, sysdaemon, mode_list):
130
 
        homedir = return_homedir_sysdaemon()
131
 
        flag_dic = {'history': False, 'cookies': False, 'cache': False}
132
 
        for mode in mode_list:
133
 
            flag_dic['%s' % mode] = True
134
 
        #if flag_dic['cache']:
135
 
        time.sleep(1)
136
 
        if mode_list[0] in '1':
137
 
            try:
138
 
                objclean = FunctionOfClean()
139
 
                objcache = cacheclean.CacheClean()
140
 
                apt_path = "/var/cache/apt/archives"
141
 
                temp_apt_list = objcache.scan_apt_cache(apt_path)
142
 
                for cachea in temp_apt_list:
143
 
                    sysdaemon.status_for_quick_clean('apt', cachea)
144
 
                    objclean.clean_the_file(cachea)
145
 
                sysdaemon.status_for_quick_clean('apt', 'end')
146
 
 
147
 
                swcenterpath = '%s/.cache/software-center' % homedir
148
 
                temp_swcenter_list = objcache.public_scan_cache(swcenterpath)
149
 
                for caches in temp_swcenter_list:
150
 
                    sysdaemon.status_for_quick_clean('software_center', caches)
151
 
                    objclean.clean_the_file(caches)
152
 
                sysdaemon.status_for_quick_clean('software_center', 'end')
153
 
            except Exception, e:
154
 
                sysdaemon.clean_error_onekey('ce')
155
 
            else:
156
 
                sysdaemon.clean_complete_onekey('c')
157
 
        #if flag_dic['history']:
158
 
        time.sleep(1)
159
 
        if mode_list[1] in '1':
160
 
            try:
161
 
                sysdaemon.status_for_quick_clean('firefoxhistory', 'start')
162
 
                objca = historyclean.HistoryClean(homedir)
163
 
                filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir))
164
 
                objca.clean_firefox_all_records(filepathf)
165
 
                sysdaemon.status_for_quick_clean('firefoxhistory', 'end')
166
 
 
167
 
                run = common.process_pid("chromium-browser")
168
 
                if not run:
169
 
                    sysdaemon.status_for_quick_clean('chromiumhistory', 'start')
170
 
                    filepathc = "%s/.config/chromium/Default/History" % homedir
171
 
                    objca.clean_chromium_all_records(filepathc)
172
 
                    sysdaemon.status_for_quick_clean('chromiumhistory', 'end')
173
 
            except Exception, e:
174
 
                sysdaemon.clean_error_onekey('he')
175
 
            else:
176
 
                sysdaemon.clean_complete_onekey('h')
177
 
                
178
 
        #if flag_dic['cookies']:
179
 
        time.sleep(1)
180
 
        if mode_list[2] in '1':
181
 
            try:
182
 
                objcc = cookiesclean.CookiesClean(homedir)
183
 
                sysdaemon.status_for_quick_clean('firefoxcookies', 'start')
184
 
                filepathfc = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir))
185
 
                pamfc = [filepathfc, 'moz_cookies', 'baseDomain']
186
 
                objcc.clean_all_records(pamfc[0], pamfc[1], pamfc[2])
187
 
                sysdaemon.status_for_quick_clean('firefoxcookies', 'end')
188
 
                
189
 
                sysdaemon.status_for_quick_clean('chromiumcookies', 'start')
190
 
                filepathcc = "%s/.config/chromium/Default/Cookies" % homedir
191
 
                pamcc = [filepathcc, 'cookies', 'host_key']
192
 
                objcc.clean_all_records(pamcc[0], pamcc[1], pamcc[2])
193
 
                sysdaemon.status_for_quick_clean('chromiumcookies', 'end')
194
 
            except Exception, e:
195
 
                sysdaemon.clean_error_onekey('ke')
196
 
            else:
197
 
                sysdaemon.clean_complete_onekey('k')
198
 
        sysdaemon.clean_complete_onekey('o')
199
 
 
200
 
# the functions of search the same files
201
 
class SearchTheSame():
202
 
    def __init__(self):
203
 
        self.objs = searchsame.SearchSame()
204
 
 
205
 
    def get_scan_result(self, path):
206
 
        self.path = path
207
 
        self.objs.search_by_style(self.path)
208
 
        samefile_list = self.objs.adjust_the_dic()
209
 
        return samefile_list
210
 
 
211
 
# the functions of manage the large files
212
 
class ManageTheLarge():
213
 
    def __init__(self):
214
 
        self.objl = diskanalyse.DiskAnalyse()
215
 
 
216
 
#    def get_large_files(self, size, path, sesdaemon):
217
 
#        objlg = diskanalyse.DiskAnalyse()
218
 
#        finalsize = size * 1024 * 1024
219
 
#        largefile_list = objlg.hundred_large_files(finalsize, path)
220
 
#        for one in largefile_list:
221
 
#            sesdaemon.data_transmit_by_large(common.confirm_filesize_unit(one[0]), one[1])
222
 
#        sesdaemon.large_transmit_complete()
223
 
 
224
 
    def get_scan_result(self, size, path):
225
 
        self.path = path
226
 
        finalsize = size * 1024 * 1024
227
 
        #self.objl.hundred_large_files(finalsize, self.path)
228
 
        #self.objl.type_of_file()
229
 
        largefile_dic = self.objl.adjust_the_list(finalsize, self.path)
230
 
        return largefile_dic
231
 
        
232
 
# the functions of clean the browser history
233
 
class CleanTheHistory():
234
 
    def __init__(self):
235
 
        pass
236
 
 
237
 
    #def new_get_history_crufts(self, flag, sesdaemon):
238
 
    #    homedir = common.return_homedir_sesdaemon()
239
 
    #    objhg = historyclean.HistoryClean(homedir)
240
 
    #    crufts_list = []
241
 
    #    cache = common.get_cache_list()
242
 
 
243
 
    #    if flag in "firefox":
244
 
    #        if cache['firefox'].is_installed:
245
 
    #            filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir))
246
 
    #            if not common.process_pid("firefox"):
247
 
    #                if os.path.exists(filepathf):
248
 
    #                    temp_list = objhg.scan_firefox_history_records(filepathf)
249
 
    #                    sesdaemon.data_transmit_by_history(sum([sin[2] for sin in temp_list]))
250
 
    #            else:
251
 
    #                sesdaemon.browser_status_by_history('fruning')
252
 
    #        else:
253
 
    #            sesdaemon.history_transmit_complete('funinstall')
254
 
    #    if flag in "chromium":
255
 
    #        if cache['chromium'].is_installed:
256
 
    #            filepathc = "%s/.config/chromium/Default/History" % homedir
257
 
    #            if not common.process_pid("chromium-browser"):
258
 
    #                if os.path.exists(filepathc):
259
 
    #                    temp_list = objhg.scan_chromium_history_records(filepathc)
260
 
    #                    sesdaemon.data_transmit_by_history(sum([sin[2] for sin in temp_list]))
261
 
    #            else:
262
 
    #                sesdaemon.browser_status_by_history('cruning')
263
 
    #        else:
264
 
    #            sesdaemon.history_transmit_complete('cuninstall')
265
 
 
266
 
    def get_history_crufts(self, flag):
267
 
        homedir = common.return_homedir_sesdaemon()
268
 
        objhg = historyclean.HistoryClean(homedir)
269
 
        crufts_list = []
270
 
        cache = common.get_cache_list()
271
 
 
272
 
        if flag in "firefox":
273
 
            filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir))
274
 
            if cache['firefox'].is_installed:
275
 
                if os.path.exists(filepathf):
276
 
                    temp_list = objhg.scan_firefox_history_records(filepathf)
277
 
                    crufts_list = ["%s<2_2>%s<2_2>%s" % (str(each[0]), each[1], str(each[2])) for each in temp_list]
278
 
            else:
279
 
                return 'No'
280
 
        if flag in "chromium":
281
 
            filepathc = "%s/.config/chromium/Default/History" % homedir
282
 
            if cache['chromium-browser'].is_installed:
283
 
                if os.path.exists(filepathc):
284
 
                    run = common.process_pid("chromium-browser")
285
 
                    if not run:
286
 
                        temp_list = objhg.scan_chromium_history_records(filepathc)
287
 
                        crufts_list = ["%s<2_2>%s<2_2>%s" % (str(each[0]), each[1], str(each[2])) for each in temp_list]
288
 
                    else:
289
 
                        return 'True'
290
 
            else:
291
 
                return 'No'
292
 
        return crufts_list
293
 
 
294
 
    def clean_all_history_crufts(self, flag):
295
 
        homedir = return_homedir_sysdaemon()
296
 
        objca = historyclean.HistoryClean(homedir)
297
 
        running = False
298
 
 
299
 
        if flag in "firefox":
300
 
            filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir))
301
 
            objca.clean_firefox_all_records(filepathf)
302
 
        if flag in "chromium":
303
 
            run = common.process_pid("chromium-browser")
304
 
            if not run:
305
 
                filepathc = "%s/.config/chromium/Default/History" % homedir
306
 
                objca.clean_chromium_all_records(filepathc)
307
 
            else:
308
 
                running = True
309
 
        return running
310
 
 
311
 
# the function of clean the system history
312
 
class CleanSystemHistory():
313
 
    def get_scan_result(self, homedir = ''):
314
 
        objhg = systemhistory.SystemHistory()
315
 
        url = objhg.scan_the_xml(homedir)
316
 
        return url
317
 
 
318
 
    def clean_the_cruftlist(self):
319
 
        global HOMEDIR
320
 
        objhc = systemhistory.SystemHistory()
321
 
        objhc.clean_the_xml(HOMEDIR)
322
 
 
323
 
 
324
 
# the function of clean the dash history
325
 
class CleanDashHistory():
326
 
    def get_scan_result(self, homedir = ''):
327
 
        objhg = dashhistory.DashHistory(homedir)
328
 
        num = objhg.scan_the_records()
329
 
        return num
330
 
 
331
 
    def clean_the_cruftlist(self):
332
 
        global HOMEDIR
333
 
        objhc = dashhistory.DashHistory(HOMEDIR)
334
 
        objhc.clean_the_records()
335
 
 
336
 
# the function of clean the cookies
337
 
class CleanTheCookies():
338
 
    def __init__(self, daemon_obj):
339
 
        self.daemon_obj = daemon_obj
340
 
 
341
 
    def get_cookie_crufts(self, flag, sesdaemon):
342
 
        homedir = common.return_homedir_sesdaemon()
343
 
        objcg = cookiesclean.CookiesClean(homedir)
344
 
        cache = common.get_cache_list()
345
 
        crufts_list = []
346
 
 
347
 
        if flag in "firefox":
348
 
            if cache["firefox"].is_installed:
349
 
                filepathf = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir))
350
 
                if os.path.exists(filepathf):
351
 
                    pamf = [filepathf, 'moz_cookies', 'baseDomain']
352
 
                    temp_firefox_list = objcg.scan_cookies_records(pamf[0], pamf[1], pamf[2])
353
 
                    for one in temp_firefox_list:
354
 
                        sesdaemon.data_transmit_by_cookies("firefox", one[0], str(one[-1]))
355
 
                    sesdaemon.cookies_transmit_complete('firefox')
356
 
            else:
357
 
                sesdaemon.cookies_transmit_complete('funinstall')
358
 
 
359
 
        if flag in "chromium":
360
 
            if cache["chromium-browser"].is_installed:
361
 
                filepathc = "%s/.config/chromium/Default/Cookies" % homedir
362
 
                if os.path.exists(filepathc):
363
 
                    pamc = [filepathc, 'cookies', 'host_key']
364
 
                    temp_chromium_list = objcg.scan_cookies_records(pamc[0], pamc[1], pamc[2])
365
 
                    for one in temp_chromium_list:
366
 
                        sesdaemon.data_transmit_by_cookies("chromium", one[0], str(one[-1]))
367
 
                    sesdaemon.cookies_transmit_complete('chromium')
368
 
            else:
369
 
                sesdaemon.cookies_transmit_complete('cuninstall')
370
 
 
371
 
    def get_cookies_crufts(self, flag):
372
 
        homedir = common.return_homedir_sesdaemon()
373
 
        objcg = cookiesclean.CookiesClean(homedir)
374
 
        crufts_list = []
375
 
 
376
 
        if flag in "firefox":
377
 
            filepathf = common.analytical_profiles_file(homedir) + "cookies.sqlite"
378
 
            if os.path.exists(filepathf):
379
 
                pamf = [filepathf, 'moz_cookies', 'baseDomain']
380
 
                temp_list = objcg.scan_cookies_records(pamf[0], pamf[1], pamf[2])
381
 
                crufts_list = ["%s<2_2>%s" % (eachone[0], str(eachone[-1])) for eachone in temp_list]
382
 
            else:
383
 
                crufts_list.append('None')
384
 
                return crufts_list
385
 
        if flag in "chromium":
386
 
            filepathc = "%s/.config/chromium/Default/Cookies" % homedir
387
 
            if os.path.exists(filepathc):
388
 
                pamc = [filepathc, 'cookies', 'host_key']
389
 
                temp_list = objcg.scan_cookies_records(pamc[0], pamc[1], pamc[2])
390
 
                crufts_list = ["%s<2_2>%s" % (eachone[0], str(eachone[-1])) for eachone in temp_list]
391
 
            else:
392
 
                crufts_list.append('None')
393
 
                return crufts_list
394
 
 
395
 
        return crufts_list
396
 
 
397
 
    def clean_one_cookies_cruft(self, flag, domain):
398
 
        homedir = return_homedir_sysdaemon()
399
 
        objcc = cookiesclean.CookiesClean(homedir)
400
 
 
401
 
        if flag in "firefox":
402
 
            filepathf = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir))
403
 
            pamf = [filepathf, 'moz_cookies', 'baseDomain', domain]
404
 
            objcc.clean_cookies_record(pamf[0], pamf[1], pamf[2], pamf[3])
405
 
        if flag in "chromium":
406
 
            filepathc = "%s/.config/chromium/Default/Cookies" % homedir
407
 
            pamc = [filepathc, 'cookies', 'host_key', domain]
408
 
            objcc.clean_cookies_record(pamc[0], pamc[1], pamc[2], pamc[3])
409
 
            
410
 
    def clean_all_cookies_crufts(self, flag):
411
 
        homedir = return_homedir_sysdaemon()
412
 
        objcc = cookiesclean.CookiesClean(homedir)
413
 
 
414
 
        if flag in "firefox":
415
 
            filepathf = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir))
416
 
            pamf = [filepathf, 'moz_cookies', 'baseDomain']
417
 
            objcc.clean_all_records(pamf[0], pamf[1], pamf[2])
418
 
        if flag in "chromium":
419
 
            filepathc = "%s/.config/chromium/Default/Cookies" % homedir
420
 
            pamc = [filepathc, 'cookies', 'host_key']
421
 
            objcc.clean_all_records(pamc[0], pamc[1], pamc[2])
422
 
 
423
 
# the function of scan the unneedpackages
424
 
class CleanTheUnneed():
425
 
    def __init__(self):
426
 
        self.objc = osslim.OsSlim()
427
 
 
428
 
    def get_scan_result(self):
429
 
        namesummarysize = self.objc.get_spare_packages()
430
 
        return namesummarysize
431
 
 
432
 
# the function of clean old kernel
433
 
class CleanTheOldkernel():
434
 
    def __init__(self):
435
 
        pass
436
 
 
437
 
    def get_oldkernel_crufts(self):
438
 
        objc = oldkernel.OldKernel()
439
 
        pkgobj_list = objc.scan_oldkernel_packages()
440
 
        crufts_list = ["%s<2_2>%s" % (pkg.name, pkg.installed.summary, common.confirm_filesize_unit(pkg.installed.installed_size))for pkg in pkgobj_list]
441
 
        return crufts_list
442
 
 
443
 
# the function of clean spare packages
444
 
class CleanTheSpare():
445
 
    def __init__(self):
446
 
        pass
447
 
 
448
 
    def get_all_package_crufts(self, mode_list, sesdaemon):
449
 
        if 'unneed' in mode_list:
450
 
            upkg_obj = osslim.OsSlim()
451
 
            temp_unneed_list = upkg_obj.scan_spare_packages()
452
 
            for upkg in temp_unneed_list:
453
 
                sesdaemon.data_transmit_by_package('unneed', upkg.name, upkg.installed.summary, common.confirm_filesize_unit(upkg.installed.installed_size))
454
 
        
455
 
        if 'oldkernel' in mode_list:
456
 
            opkg_obj = oldkernel.OldKernel()
457
 
            temp_oldkernel_list = opkg_obj.scan_oldkernel_packages()
458
 
            for opkg in temp_oldkernel_list:
459
 
                sesdaemon.data_transmit_by_package('oldkernel', opkg.name, opkg.installed.summary, common.confirm_filesize_unit(opkg.installed.installed_size))
460
 
 
461
 
        if 'configfile' in mode_list:
462
 
            spkg_obj = softwareconfigfile.SoftwareConfigfile()
463
 
            temp_configfile_list = spkg_obj.scan_configfile_packages()
464
 
            for spkg in temp_configfile_list:
465
 
                sesdaemon.data_transmit_by_package('configfile', spkg.name, '', '')
466
 
        sesdaemon.package_transmit_complete()
467
 
 
468
 
# the function of scan the cache
469
 
class CleanTheCache():
470
 
    def __init__(self):
471
 
        self.objc = cacheclean.CacheClean()
472
 
 
473
 
    def get_all_cache_crufts(self, mode_list, flag, sesdaemon):
474
 
        homedir = common.return_homedir_sesdaemon()
475
 
 
476
 
        if 'apt' in mode_list:
477
 
            aptpath = "/var/cache/apt/archives"
478
 
            temp_apt_list = self.objc.scan_apt_cache(aptpath)
479
 
            for one in temp_apt_list:
480
 
                sesdaemon.data_transmit_by_cache('apt', one, 'False', '%s' % common.confirm_filesize_unit(os.path.getsize(one)))
481
 
 
482
 
        if 'software-center' in mode_list:
483
 
            softwarecenterpath = "%s/.cache/software-center" % homedir
484
 
            temp_softwarecenter_list = self.objc.public_scan_cache(softwarecenterpath)
485
 
            for one in temp_softwarecenter_list:
486
 
                if os.path.isdir(one):
487
 
                    sesdaemon.data_transmit_by_cache('software-center', one, 'True', common.confirm_filesize_unit(common.get_dir_size(one)))
488
 
                else:
489
 
                    sesdaemon.data_transmit_by_cache('software-center', one, 'False', common.confirm_filesize_unit(os.path.getsize(one)))
490
 
 
491
 
        if 'thumbnails' in mode_list:
492
 
            thumbnailspath = "%s/.cache/thumbnails" % homedir
493
 
            temp_thumbnails_list = self.objc.public_scan_cache(thumbnailspath)
494
 
            for one in temp_thumbnails_list:
495
 
                if os.path.isdir(one):
496
 
                    sesdaemon.data_transmit_by_cache('thumbnails', one, 'True', common.confirm_filesize_unit(common.get_dir_size(one)))
497
 
                else:
498
 
                    sesdaemon.data_transmit_by_cache('thumbnails', one, 'False',common.confirm_filesize_unit(os.path.getsize(one)))
499
 
        if 'firefox' in mode_list:
500
 
            firefoxpath = "%s/.cache/mozilla/firefox/%s" % (homedir, common.analytical_profiles_file(homedir))
501
 
            #sesdaemon.path_transmit_by_cache('firefox', firefoxpath)
502
 
            temp_firefox_list = self.objc.firefox_scan_cache(firefoxpath)
503
 
            for one in temp_firefox_list:
504
 
                if os.path.isdir(one):
505
 
                    sesdaemon.data_transmit_by_cache('firefox', one, 'True', common.confirm_filesize_unit(common.get_dir_size(one)))
506
 
                else:
507
 
                    sedaemon.data_transmit_by_cache('firefox', one, 'False', common.confirm_filesize_unit(os.path.getsize(one)))
508
 
        if 'chromium' in mode_list:
509
 
            chromiumpath = "%s/.cache/chromium/Default" % homedir
510
 
            #sesdaemon.path_transmit_by_cache('chromium', chromiumpath)
511
 
            temp_chromium_list = self.objc.public_scan_cache(chromiumpath)
512
 
            for one in temp_chromium_list:
513
 
                if os.path.isdir(one):
514
 
                    sesdaemon.data_transmit_by_cache('chromium', one, 'True', common.confirm_filesize_unit(common.get_dir_size(one)))
515
 
                else:
516
 
                    sesdaemon.data_transmit_by_cache('chromium', one, 'False',common.confirm_filesize_unit(os.path.getsize(one)))
517
 
 
518
 
        sesdaemon.cache_transmit_complete(flag)
519
 
 
520
 
# the function of clean cruft files and cruft packages
521
 
#class FunctionOfClean(threading.Thread):
522
 
class FunctionOfClean():
523
 
    def __init__(self):
524
 
        #threading.Thread.__init__(self)
525
 
        #self.msgdaemon = msgdaemon
526
 
        pass
527
 
 
528
 
    def clean_the_file(self, cruft):
529
 
        tmp = cruft.encode("UTF-8")
530
 
        #sysdaemon.data_of_remove_file(tmp)
531
 
        if tmp:
532
 
            if os.path.isdir(tmp):
533
 
                shutil.rmtree(tmp)
534
 
            else:
535
 
                os.remove(tmp)
536
 
 
537
 
    #def clean_the_file(self, cruftlist):
538
 
    #    threading.Thread(target=self.clean_the_file_thread, args=(cruftlist,), name='CleanFile').start()
539
 
 
540
 
    def clean_the_package(self, cruftlist, sysdaemon):
541
 
        if cruftlist:
542
 
            cache = common.get_cache_list()
543
 
            cache.open()
544
 
            for cruft in cruftlist:
545
 
                pkg = cache[cruft]
546
 
                if pkg.is_installed:
547
 
                    pkg.mark_delete()
548
 
                else:
549
 
                    pkg.mark_delete(purge=True)
550
 
            iprogress = MyInstallProgress(sysdaemon)
551
 
            cache.commit(None, iprogress)
552
 
 
553
 
    def purge_the_package(self, cruftlist, sysdaemon):
554
 
        if cruftlist:
555
 
            cache = common.get_cache_list()
556
 
            cache.open()
557
 
            for cruft in cruftlist:
558
 
                pkg = cache[cruft]
559
 
                pkg.mark_delete(purge=True)
560
 
            iprogress = MyInstallProgress(sysdaemon)
561
 
            cache.commit(None, iprogress)
562
 
 
563
 
    #def clean_the_package(self, cruftlist):
564
 
    #    threading.Thread(target=self.clean_the_package_thread, args=(cruftlist,), name='CleanPackage').start()
565
 
 
566
 
class MyInstallProgress(InstallProgress):
567
 
        def __init__(self, sysdaemon):
568
 
            InstallProgress.__init__(self)
569
 
            self.sysdaemon = sysdaemon
570
 
 
571
 
        def status_change(self, pkg, percent, status):
572
 
            self.sysdaemon.status_remove_packages("apt_pulse", "percent: %s, status: %s" % (str(int(percent)), status))
573
 
 
574
 
        def error(self, errorstr):
575
 
            pass
576
 
        
577
 
        def finish_update(self):
578
 
            self.sysdaemon.status_remove_packages("apt_stop", "")
579
 
 
580
 
        def start_update(self):
581
 
            self.sysdaemon.status_remove_packages("apt_start", "")
582
 
 
583
 
def cancel_mainpage_function(target_tid, exception):
584
 
    pass
585
 
    #found = False
586
 
    #target_tid = 0
587
 
    #for tid, tobj in threading._active.items():
588
 
    #    if tobj is thread_obj:
589
 
    #        found = True
590
 
    #        target_tid = tid
591
 
    #        break
592
 
    #if not found:
593
 
    #    raise ValueError("Invalid thread object")
594
 
#    res = ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(target_tid), ctypes.py_object(exception))
595
 
 
596
 
#    if res = 0:
597
 
#        raise ValueError("Invalid thread ID")
598
 
#    elif res > 1:
599
 
#        ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(target_tid), None)
600
 
#        raise SystemError("PyThreadState_SetAsyncExc failed")
601
 
 
602
 
def get_threadid(thread_obj):
603
 
    found = False
604
 
    target_tid = 0
605
 
    for tid, tobj in threading._active.items():
606
 
        if tobj is thread_obj:
607
 
            found = True
608
 
            target_tid = tid
609
 
            break
610
 
    if not found:
611
 
        raise ValueError("Invalid thread object")
612
 
    return target_tid
613
 
 
614
 
 
615
 
class MainPage():
616
 
    def __init__(self):
617
 
        pass
618
 
 
619
 
    def get_cache(self, sesdaemon):
620
 
        flag = False
621
 
        totalsize = 0
622
 
        homedir = ''
623
 
        cache_obj = cacheclean.CacheClean()
624
 
        if sesdaemon:
625
 
            homedir = common.return_homedir_sesdaemon()
626
 
        else:
627
 
            homedir = return_homedir_sysdaemon()
628
 
 
629
 
        self.cache_dic = {'apt':[], 'softwarecenter':[], 'thumbnail':[]}
630
 
        aptpath = "/var/cache/apt/archives"
631
 
        temp_apt_list = cache_obj.scan_apt_cache(aptpath)
632
 
        if sesdaemon:
633
 
            for one in temp_apt_list:
634
 
                self.cache_dic['apt'].append(one)
635
 
                totalsize += common.get_size(one)
636
 
                sesdaemon.check_scan_garbage_process(one)
637
 
        else:
638
 
            for one in temp_apt_list:
639
 
                self.cache_dic['apt'].append(one)
640
 
        softwarecenterpath = "%s/.cache/software-center" % homedir
641
 
        temp_softwarecenter_list = cache_obj.public_scan_cache(softwarecenterpath)
642
 
        if sesdaemon:
643
 
            for one in temp_softwarecenter_list:
644
 
                self.cache_dic['softwarecenter'].append(one)
645
 
                totalsize += common.get_size(one)
646
 
                sesdaemon.check_scan_garbage_process(one)
647
 
        else:
648
 
            for one in temp_softwarecenter_list:
649
 
                self.cache_dic['softwarecenter'].append(one)
650
 
        thumbnailspath = "%s/.cache/thumbnails" % homedir
651
 
        try:
652
 
            temp_thumbnails_list = cache_obj.public_scan_cache(thumbnailspath)
653
 
        except Exception, e:
654
 
            print e
655
 
        if sesdaemon:
656
 
            for one in temp_thumbnails_list:
657
 
                self.cache_dic['thumbnail'].append(one)
658
 
                totalsize += common.get_size(one)
659
 
                sesdaemon.check_scan_garbage_process(one)
660
 
        else:
661
 
            for one in temp_thumbnails_list:
662
 
                self.cache_dic['thumbnail'].append(one)
663
 
        if sesdaemon:
664
 
            for key in self.cache_dic.keys():
665
 
                if self.cache_dic[key]:
666
 
                    flag = True
667
 
                    break
668
 
            if flag:
669
 
                sesdaemon.scan_complete('True')
670
 
            else:
671
 
                sesdaemon.scan_complete('False')
672
 
            size_str = common.confirm_filesize_unit(totalsize)
673
 
            sesdaemon.check_scan_complete(size_str)
674
 
        else:
675
 
            pass
676
 
 
677
 
    def clean_cache(self, sysdaemon):
678
 
        totalsize = 0
679
 
        self.get_cache(None)
680
 
        for key in self.cache_dic.keys():
681
 
            for f in self.cache_dic[key]:
682
 
                totalsize += common.get_size(f)
683
 
                if os.path.isdir(f):
684
 
                    sysdaemon.info_for_mainpage_clean(f)
685
 
                    shutil.rmtree(f)
686
 
                else:
687
 
                    sysdaemon.info_for_mainpage_clean(f)
688
 
                    os.remove(f)
689
 
        size_str = common.confirm_filesize_unit(totalsize)
690
 
        sysdaemon.mainpage_clean(size_str)
691
 
#----------------------------NEW YOUKER--------------------
692
 
 
693
 
#---------------------SubPage---------------------
694
 
 
695
 
def append_cacheinfo_to_list(belong, path):
696
 
    info = []
697
 
    info.append('Belong:%s' % belong)
698
 
    info.append('Path:%s' % path)
699
 
    if os.path.isdir(path):
700
 
        info.append('Type:directory')
701
 
        info.append('Size:%s' % common.confirm_filesize_unit(common.get_dir_size(path)))
702
 
    else:
703
 
        info.append('Type:file')
704
 
        info.append('Size:%s' % common.confirm_filesize_unit(os.path.getsize(path)))
705
 
 
706
 
    return info
707
 
 
708
 
def interface_get_subpage_session(session, mode_dic):
709
 
    homedir = common.return_homedir_sesdaemon()
710
 
 
711
 
    cache = mode_dic.get('Cache', [])
712
 
    if cache:
713
 
        cache_obj = cacheclean.CacheClean()
714
 
        if 'apt' in cache:
715
 
            aptpath = "/var/cache/apt/archives"
716
 
            apt_list = cache_obj.scan_apt_cache(aptpath)
717
 
            for value in apt_list:
718
 
                info = append_cacheinfo_to_list('Cache.apt', value)
719
 
 
720
 
                session.subpage_data_signal(info)
721
 
        #else:
722
 
            #info = []
723
 
            #info.append('Belong:Cache.apt')
724
 
            #info.append('')
725
 
            #session.subpage_data_signal(info)
726
 
 
727
 
        if 'software-center' in cache:
728
 
            swcenterpath = "%s/.cache/software-center" % homedir
729
 
            swcenter_list = cache_obj.public_scan_cache(swcenterpath)
730
 
            for value in swcenter_list:
731
 
                info = append_cacheinfo_to_list('Cache.software-center', value)
732
 
                session.subpage_data_signal(info)
733
 
        #else:
734
 
            #info = []
735
 
            #info.append('Belong:Cache-apt')
736
 
            #info.append('')
737
 
            #session.subpage_data_signal(info)
738
 
 
739
 
        if 'thumbnails' in cache:
740
 
            thumbnailspath = "%s/.cache/thumbnails" % homedir
741
 
            thumbnails_list = cache_obj.public_scan_cache(thumbnailspath)
742
 
            for value in thumbnails_list:
743
 
                info = append_cacheinfo_to_list('Cache.thumbnails', value)
744
 
                session.subpage_data_signal(info)
745
 
        #else:
746
 
            #info = []
747
 
            #info.append('Belong:Cache.thumbnails')
748
 
            #info.append('')
749
 
            #session.subpage_data_signal(info)
750
 
 
751
 
 
752
 
        if 'firefox' in cache:
753
 
            firefoxpath = "%s/.cache/mozilla/firefox/%s" % (homedir, common.analytical_profiles_file(homedir))
754
 
            firefox_cache_list = cache_obj.firefox_scan_cache(firefoxpath)
755
 
            for value in firefox_cache_list:
756
 
                info = append_cacheinfo_to_list('Cache.firefox', value)
757
 
                session.subpage_data_signal(info)
758
 
        #else:
759
 
            #info = []
760
 
            #info.append('Belong:Cache.firefox')
761
 
            #info.append('')
762
 
            #session.subpage_data_signal(info)
763
 
 
764
 
        if 'chromium' in cache:
765
 
            chromiumpath = "%s/.cache/chromium/Default" % homedir
766
 
            chromium_cache_list = cache_obj.public_scan_cache(chromiumpath)
767
 
            for value in chromium_cache_list:
768
 
                info = append_cacheinfo_to_list('Cache.chromium', value)
769
 
                session.subpage_data_signal(info)
770
 
        #else:
771
 
            #info = []
772
 
            #info.append('Belong:Cache.chromium')
773
 
            #info.append('')
774
 
            #session.subpage_data_signal(info)
775
 
 
776
 
        session.subpage_status_signal('Complete:Cache')
777
 
 
778
 
    cookies = mode_dic.get('Cookies', [])
779
 
    if cookies:
780
 
        cache = common.get_cache_list()
781
 
        cookies_obj = cookiesclean.CookiesClean(homedir)
782
 
        
783
 
 
784
 
        if 'firefox' in cookies:
785
 
            if cache['firefox'].is_installed:
786
 
                ffcpath = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir))
787
 
                if os.path.exists(ffcpath):
788
 
                    ffcpam = [ffcpath, 'moz_cookies', 'baseDomain']
789
 
                    firefox_cookies_list = cookies_obj.scan_cookies_records(ffcpam[0], ffcpam[1], ffcpam[2])
790
 
 
791
 
                    for value in firefox_cookies_list:
792
 
                        info = []
793
 
                        info.append('Belong:Cookies.firefox')
794
 
                        info.append('Content:%s' % value[0])
795
 
                        info.append('Count:%s' % str(value[-1]))
796
 
                        session.subpage_data_signal(info)
797
 
                    
798
 
                else:
799
 
                    info = []
800
 
                    info.append('Belong:Cookies.firefox')
801
 
                    info.append('')
802
 
                    session.subpage_data_signal(info)
803
 
            else:
804
 
                session.subpage_error_signal('Uninstalled:Firefox')
805
 
                    
806
 
        
807
 
        if 'chromium' in cookies:
808
 
            try:
809
 
                pkg = cache['chromium-browser']
810
 
            except KeyError:
811
 
                pass
812
 
            else:
813
 
                if pkg.is_installed:
814
 
                    chcpath = "%s/.config/chromium/Default/Cookies" % homedir
815
 
                    if os.path.exists(chcpath):
816
 
                        chcpam = [chcpath, 'cookies', 'host_key']
817
 
                        chromium_cookies_list = cookies_obj.scan_cookies_records(chcpam[0], chcpam[1], chcpam[2])
818
 
                        for value in chromium_cookies_list:
819
 
                            info = []
820
 
                            info.append('Belong:Cookies.chromium')
821
 
                            info.append('Content:%s' % value[0])
822
 
                            info.append('Count:%s' % str(value[-1]))
823
 
                            session.subpage_data_signal(info)
824
 
                    else:
825
 
                        info = []
826
 
                        info.append('Belong:Cookies.chromium')
827
 
                        info.append('')
828
 
                        session.subpage_data_signal(info)
829
 
                else:
830
 
                    session.subpage_error_signal('Uninstalled:Chromium')
831
 
        session.subpage_status_signal('Complete:Cookies')
832
 
 
833
 
 
834
 
    history = mode_dic.get('History', [])
835
 
    if history:
836
 
        cache = common.get_cache_list()
837
 
        brohistory_obj = historyclean.HistoryClean(homedir)
838
 
 
839
 
        if 'firefox' in history:
840
 
            if cache['firefox'].is_installed:
841
 
                ffhpath = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir))
842
 
                if os.path.exists(ffhpath):
843
 
                    firefox_history_list = brohistory_obj.scan_firefox_history_records(ffhpath)
844
 
                    #for single in firefox_history_list:
845
 
                    #    info = []
846
 
                    #    info.append('Belong:History.firefox')
847
 
                    #    info.append('Id:%s' % str(single[0]))
848
 
                    #    info.append('Url:%s' % single[1])
849
 
                    #    info.append('Count:%s' % str(single[2]))
850
 
                    #    session.subpage_data_signal(info)
851
 
                    info = []
852
 
                    info.append('Belong:History.firefox')
853
 
                    info.append('Count:%s' % str(len(firefox_history_list)))
854
 
                    session.subpage_data_signal(info)
855
 
                else:
856
 
                    info = []
857
 
                    info.append('Belong:History.firefox')
858
 
                    info.append('')
859
 
                    session.subpage_data_signal(info)
860
 
                    
861
 
            else:
862
 
                session.subpage_error_signal('Uninstalled:Firefox')
863
 
 
864
 
        if 'chromium' in history:
865
 
            chhpath = "%s/.config/chromium/Default/History" % homedir
866
 
            try:
867
 
                pkg = cache['chromium-browser']
868
 
            except KeyError:
869
 
                pass
870
 
            else:
871
 
                if pkg.is_installed:
872
 
                    run = common.process_pid("chromium-browser")
873
 
                    if not run:
874
 
                        chromium_history_list = brohistory_obj.scan_chromium_history_records(chhpath)
875
 
                        #for single in chromium_history_list:
876
 
                        #    info = []
877
 
                        #    info.append('Belong:History.chromium')
878
 
                        #    info.append('Id:%s' % str(single[0]))
879
 
                        #    info.append('Url:%s' % single[1])
880
 
                        #    info.append('Count:%s' % str(single[2]))
881
 
                        #    session.subpage_data_signal(info)
882
 
                        info = []
883
 
                        info.append('Belong:History.chromium')
884
 
                        info.append('Count:%s' % str(len(chromium_history_list)))
885
 
                        session.subpage_data_signal(info)
886
 
                    else:
887
 
                        session.subpage_error_signal('Working:Chromium')
888
 
                else:
889
 
                    session.subpage_error_signal('Uninstalled:Chromium')
890
 
        if 'bash' in history:
891
 
            path = os.path.join(homedir, ".bash_history")
892
 
            size = 0
893
 
            if os.path.exists(path):
894
 
                size = common.confirm_filesize_unit(os.path.getsize(path))
895
 
                info = []
896
 
                info.append('Belong:History.bash')
897
 
                info.append('Size:%s' % str(size))
898
 
                info.append('Path:%s' % path)
899
 
                session.subpage_data_signal(info)
900
 
            else:
901
 
                pass
902
 
            
903
 
 
904
 
        if 'X11' in history:
905
 
            x11_list = [os.path.join(homedir, x) for x in os.listdir(homedir) if x.startswith(".xsession-errors")]
906
 
            for value in x11_list:
907
 
                info = append_cacheinfo_to_list('History.X11', value)
908
 
                session.subpage_data_signal(info)
909
 
 
910
 
        if 'system' in history:
911
 
            syshistory_obj = systemhistory.SystemHistory()
912
 
            url_list = syshistory_obj.scan_the_xml(homedir)
913
 
            #for value in url_list:
914
 
            #    info = []
915
 
            #    info.append('Belong:History.system')
916
 
                #info.append('Count:%s' % len(url_list))
917
 
            #    info.append('Href:%s' % value)
918
 
            #    session.subpage_data_signal(info)
919
 
            info = []
920
 
            info.append('Belong:History.system')
921
 
            info.append('Count:%s' % str(len(url_list)))
922
 
            session.subpage_data_signal(info)
923
 
        session.subpage_status_signal('Complete:History')
924
 
 
925
 
    packages = mode_dic.get('Packages', [])
926
 
    if packages:
927
 
        if 'unneed' in packages:
928
 
            unneed_obj = osslim.OsSlim()
929
 
            
930
 
            unneed_packages_list = unneed_obj.get_unneed_packages()
931
 
            for value in unneed_packages_list:
932
 
                info = value.split(";")
933
 
                info.insert(0, 'Belong:Packages.unneed')
934
 
                session.subpage_data_signal(info)
935
 
        
936
 
        if 'oldkernel' in packages:
937
 
            oldkernel_obj = oldkernel.OldKernel()
938
 
 
939
 
            oldkernel_list = oldkernel_obj.get_oldkernel_packages()
940
 
            for value in oldkernel_list:
941
 
                info = value.split(";")
942
 
                info.insert(0, 'Belong:Packages.oldkernel')
943
 
                session.subpage_data_signal(info)
944
 
        
945
 
        if 'configfile' in packages:
946
 
            configfile_obj = softwareconfigfile.SoftwareConfigfile()
947
 
            
948
 
            configfile_list = configfile_obj.get_configfile_packages()
949
 
            for value in configfile_list:
950
 
                info = value.split(";")
951
 
                info.insert(0, 'Belong:Packages.configfile')
952
 
                session.subpage_data_signal(info)
953
 
        session.subpage_status_signal('Complete:Packages')
954
 
    session.subpage_status_signal('Complete:All')
955
 
 
956
 
 
957
 
def interface_remove_file_system(system, fp):
958
 
        filepath = fp.encode("UTF-8")
959
 
        if os.path.exists(fp):
960
 
            info = []
961
 
            if os.path.isdir(filepath):
962
 
                info.append('Path:%s' % filepath)
963
 
                info.append('Size:%s' % common.confirm_filesize_unit(common.get_dir_size(filepath)))
964
 
                shutil.rmtree(filepath)
965
 
                system.subpage_data_signal(info)
966
 
            else:
967
 
                info.append('Path:%s' % filepath)
968
 
                info.append('Size:%s' % common.confirm_filesize_unit(os.path.getsize(filepath)))
969
 
                os.remove(filepath)
970
 
                system.subpage_data_signal(info)
971
 
        else:
972
 
            system.subpage_error_signal('Non-existent:%s' % filepath)
973
 
 
974
 
def interface_remove_firefox_history_system(system):
975
 
    homedir = return_homedir_sysdaemon()
976
 
    firefox_history_obj = historyclean.HistoryClean(homedir)
977
 
 
978
 
    ffhpath = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir))
979
 
    firefox_history_obj.clean_firefox_all_records(ffhpath)
980
 
 
981
 
    system.subpage_status_signal('Complete:History.firefox', 'history')
982
 
 
983
 
def interface_remove_system_history_system(system):
984
 
    homedir = return_homedir_sysdaemon()
985
 
    system_history_obj = systemhistory.SystemHistory()
986
 
    system_history_obj.clean_the_xml(homedir)
987
 
    system.subpage_status_signal('Complete:History.system', 'history')
988
 
 
989
 
def interface_remove_chromium_history_system(system):
990
 
    homedir = return_homedir_sysdaemon()
991
 
    chromium_history_obj = historyclean.HistoryClean(homedir)
992
 
 
993
 
    run = common.process_pid("chromium-browser")
994
 
    if not run:
995
 
        chhpath = "%s/.config/chromium/Default/History" % homedir
996
 
        chromium_history_obj.clean_chromium_all_records(chhpath)
997
 
        system.subpage_status_signal('Complete:History.chromium', 'history')
998
 
    else:
999
 
        system.subpage_error_signal('Working:Chromium')
1000
 
 
1001
 
def interface_remove_firefox_cookies_system(system, domain):
1002
 
    homedir = return_homedir_sysdaemon()
1003
 
    firefox_cookies_obj = cookiesclean.CookiesClean(homedir)
1004
 
    #print(domain)
1005
 
 
1006
 
    ffcpath = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir))
1007
 
    ffcpam = [ffcpath, 'moz_cookies', 'baseDomain', domain]
1008
 
    firefox_cookies_obj.clean_cookies_record(ffcpam[0], ffcpam[1], ffcpam[2], ffcpam[3])
1009
 
    system.subpage_status_signal('Complete:Cookies.firefox', domain)
1010
 
 
1011
 
def interface_remove_chromium_cookies_system(system, domain):
1012
 
    homedir = return_homedir_sysdaemon()
1013
 
    chromium_cookies_obj = cookiesclean.CookiesClean(homedir)
1014
 
    
1015
 
    chcpath = "%s/.config/chromium/Default/Cookies" % homedir
1016
 
    chcpam = [chcpath, 'cookies', 'host_key', domain]
1017
 
    chromium_cookies_obj.clean_cookies_record(chcpam[0], chcpam[1], chcpam[2], chcpam[3])
1018
 
    system.subpage_status_signal('Complete:Cookies.chromium', domain)
1019
 
    
1020
 
 
1021
 
def interface_remove_package_system(system, packagename):
1022
 
        if packagename:
1023
 
            cache = common.get_cache_list()
1024
 
            cache.open()
1025
 
            try:
1026
 
                pkg = cache[packagename]
1027
 
            except KeyError:
1028
 
                system.subpage_error_signal('Non-existent:%s' % packagename)
1029
 
            if pkg.is_installed:
1030
 
                pkg.mark_delete()
1031
 
            else:
1032
 
                pkg.mark_delete(purge=True)
1033
 
            iprogress = NewInstallProgress(system)
1034
 
            cache.commit(None, iprogress)
1035
 
 
1036
 
class NewInstallProgress(InstallProgress):
1037
 
    def __init__(self, system):
1038
 
        InstallProgress.__init__(self)
1039
 
        self.system = system
1040
 
 
1041
 
    def status_change(self, pkg, percent, status):
1042
 
        #self.system.status_remove_packages("apt_pulse", "percent: %s, status: %s" % (str(int(percent)), status))
1043
 
        info = []
1044
 
        info.append('Pkg:%s' % pkg)
1045
 
        info.append('Percent:%s' % str(int(percent)))
1046
 
        info.append('Status:%s' % status)
1047
 
        self.system.subpage_data_signal(info)
1048
 
        #self.system.subpage_status_signal(info, 'apt')
1049
 
 
1050
 
    def error(self, errorstr):
1051
 
        pass
1052
 
 
1053
 
    def finish_update(self):
1054
 
        #self.system.status_remove_packages("apt_stop", "")
1055
 
        self.system.subpage_status_signal('Complete:', 'apt')
1056
 
 
1057
 
    def start_update(self):
1058
 
        #self.system.status_remove_packages("apt_start", "")
1059
 
        self.system.subpage_status_signal('Start:', 'apt')