2
# -*- coding: utf-8 -*-
5
# Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd
6
# This program is free software: you can redistribute it and/or modify it
7
# under the terms of the GNU General Public License version 3, as published
8
# by the Free Software Foundation.
10
# This program is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranties of
12
# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
13
# PURPOSE. See the GNU General Public License for more details.
15
# You should have received a copy of the GNU General Public License along
16
# with this program. If not, see <http://www.gnu.org/licenses/>.
31
import dbus.mainloop.glib
32
from gi.repository import GObject
34
#import aptsources.sourceslist
38
from server import PolicyKitService
39
from policykit import UK_ACTION_YOUKER
42
from detailinfo.cpuinfo import DetailInfo
43
from beautify.sound import Sound
44
from beautify.others import Others
45
#from appcollections.monitorball.monitor_ball import MonitorBall
46
#from softwarecenter.apt_daemon import AptDaemon
47
from beautify.theme import Theme
48
log = logging.getLogger('Daemon')
51
INTERFACE = 'com.ubuntukylin.youker'
54
#------------------------------------apt start----------------------------
55
from apt_handler import AppActions, AptHandler, WorkitemError
57
# def __init__(self, pkgname, action, kwargs):
58
# self.pkgname = pkgname
59
# self.action = action
60
# self.kwargs = kwargs
62
#class WorkThread(threading.Thread):
63
# def __init__(self, dbusDaemon):
64
# threading.Thread.__init__(self)
65
# self.dbusDaemon = dbusDaemon
66
# print "$$$$$$$$$$$$$$ ", type(self.dbusDaemon)
70
# if len(self.dbusDaemon.worklist) == 0:
74
# self.dbusDaemon.mutex.acquire()
75
# item = self.dbusDaemon.worklist.pop(0) #get first item and remove it from list
76
# self.dbusDaemon.mutex.release()
79
# func = getattr(self.dbusDaemon.aptHandler, item.action)
81
# print "Error action: ", item
83
# res = func(item.pkgname,item.kwargs)
85
# print "Action exec failed..."
86
# except WorkitemError as e:
87
# kwarg = {"apt_appname": item.pkgname,
88
# "apt_percent": str(-e.errornum),
89
# "action": str(item.action),
91
# self.dbusDaemon.youker_apt_signal("apt_error", kwarg)
94
#------------------------------------apt end----------------------------
96
class Daemon(PolicyKitService):
97
def __init__ (self, bus, mainloop):
98
self.infoconf = DetailInfo()
99
self.otherconf = Others()
100
self.soundconf = Sound()
101
# self.ballconf = MonitorBall()
102
self.themeconf = Theme()
103
# self.daemonsame = cleaner.SearchTheSame()
104
# self.daemonlarge = cleaner.ManageTheLarge()
105
# self.daemonunneed = cleaner.CleanTheUnneed()
106
# self.daemonclean = cleaner.FunctionOfClean()
107
self.daemononekey = cleaner.OneKeyClean()
108
# self.daemoncache = cleaner.CleanTheCache()
109
# self.daemonApt = AptDaemon()
110
#self.daemonApt = AptDaemon(self)
112
#--------------apt start----------------
113
self.aptHandler = AptHandler(self)
115
# self.mutex = threading.RLock()
116
# self.worker_thread = WorkThread(self)
117
# self.worker_thread.setDaemon(True)
118
# self.worker_thread.start()
119
#--------------apt end----------------
121
bus_name = dbus.service.BusName(INTERFACE, bus=bus)
122
PolicyKitService.__init__(self, bus_name, UKPATH)
123
self.mainloop = mainloop
125
@dbus.service.method(INTERFACE, in_signature='', out_signature='')
129
#--------------apt start----------------
130
# def add_worker_item(self, item):
131
# print "####add_worker_item:", item
132
# self.mutex.acquire()
133
# self.worklist.append(item)
134
# self.mutex.release()
136
# package download status signal
140
stop:all work is finish
141
done:all items download finished
143
fetch:one item download finished
144
pulse:download status, this msg given a string like dict
146
a message of type, sometimes is None
148
@dbus.service.signal(INTERFACE, signature='sas')
149
def youker_fetch_signal(self, type, msg):
152
# package install/update/remove signal
158
pulse:work status, this msg given a string like dict
160
a message of type, sometimes is None
162
@dbus.service.signal(INTERFACE, signature='sas')
163
def youker_apt_signal(self, type, msg):
166
def start_install_uk(self, pkgName):
167
self.aptHandler.install(pkgName)
169
# install package sa:youker_fetch_signal() and youker_apt_signal()
170
#sudo apt-get install youker-assistant=1.3.1-0ubuntu1
171
@dbus.service.method(INTERFACE, in_signature='s', out_signature='b', sender_keyword='sender')
172
def install(self, pkgName, sender=None):
173
print "####install: ",pkgName
174
# item = WorkItem(pkgName, AppActions.INSTALL, None)
175
# self.add_worker_item(item)
176
# self.aptHandler.install(pkgName)
177
thread.start_new_thread(self.start_install_uk, (pkgName,))
178
print "####install return"
181
def start_update_source_list(self):
182
self.aptHandler.update()
184
@dbus.service.method(INTERFACE, in_signature='', out_signature='b', sender_keyword='sender')
185
def update(self, sender=None):
186
thread.start_new_thread(self.start_update_source_list, ())
187
# self.aptHandler.update()
190
# @dbus.service.method(INTERFACE, in_signature='as', out_signature='b', sender_keyword='sender')
191
# def upgrade(self, pkgNames, sender=None):
192
# print "####upgrade: ", pkgNames
193
# item = WorkItem(pkgNames, AppActions.UPGRADE, None)
194
# self.add_worker_item(item)
195
# # self.aptHandler.upgrade_pkg(pkgName)
196
# print "####upgrade return"
198
#--------------apt end----------------
201
@dbus.service.method(INTERFACE, in_signature='s', out_signature='')
202
def set_homedir(self, homedir):
203
self.soundconf.set_homedir(homedir)
205
@dbus.service.method(INTERFACE, in_signature='s', out_signature='')
206
def adjust_cpufreq_scaling_governer(self, value):
207
cpufreq_file = "/etc/init.d/cpufrequtils"
209
if os.path.exists(cpufreq_file):
210
fp = open(cpufreq_file, "rw+")
213
if line.startswith("GOVERNOR="):
214
if value not in line:
215
oldvalue = line.split("=")[1].replace('"', '').replace('\n', '')
219
if oldvalue not in ['', None] and value not in ['', None]:
220
cmd = "sed -i 's/%s/%s/g' %s" % (oldvalue, value, cpufreq_file)
222
os.system('service cpufrequtils restart')
224
fpath = os.path.expanduser("/sys/devices/system/cpu/")
225
for line in os.listdir(fpath):
226
line = line.strip('\n')
227
#pattern = re.compile(r'cpu.*[0-9]$')
228
pattern = re.compile(r'cpu.*\d\Z')
229
m = pattern.match(line)
231
filepath = "/sys/devices/system/cpu/%s/cpufreq/scaling_governor" % line
232
if os.path.exists(filepath):
233
cmd = 'echo %s > %s' % (value, filepath)
236
@dbus.service.method(INTERFACE, in_signature='', out_signature='as')
237
def get_cpufreq_scaling_governer_list(self):
238
cmd = "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"
240
msg = fp.read().strip('\n')
243
if msg not in ['', None]:
244
cpulist = msg.split(' ')
247
@dbus.service.method(INTERFACE, in_signature='', out_signature='s')
248
def get_current_cpufreq_scaling_governer(self):
249
cmd = "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
251
msg = fp.read().strip('\n')
255
@dbus.service.method(INTERFACE, in_signature='s', out_signature='b')
256
def copy_file(self, filename):
257
des_path = '/var/lib/youker-assistant-daemon/custom'
258
filename = filename.encode('utf-8')
259
if not os.path.exists(des_path):
260
os.makedirs(des_path)
262
shutil.copy(filename, des_path)
268
@dbus.service.method(INTERFACE, in_signature='s', out_signature='b')
269
def delete_file(self, filename):
270
filename = filename.encode('utf-8')
271
# output = open("/tmp/default.txt", 'w+')
272
# output.write(filename)
274
# fp = open("/tmp/default.txt", "w")
275
# print >> fp, "--------------"
276
# print >> fp, filename
277
# print >> fp, "------22222222--------"
279
# if os.path.exists(filename):
280
if os.path.isfile(filename):
289
@dbus.service.method(INTERFACE, in_signature='s', out_signature='b')
290
def set_cursor_theme_with_root(self, theme):
291
return self.themeconf.set_cursor_theme_with_root(theme)
293
@dbus.service.method(INTERFACE, in_signature='s', out_signature='b', sender_keyword='sender')
294
def kill_root_process(self, pid, sender=None):
295
status = self._check_permission(sender, UK_ACTION_YOUKER)
298
cmd = 'kill -9 %s' % pid
299
subprocess.Popen(cmd, shell=True, close_fds=True)#加上close_fds=True,避免子进程一直存在
302
@dbus.service.method(INTERFACE, in_signature='', out_signature='b')
303
def kill_uk_process(self):
304
cmd = 'killall youker-assistant'
305
subprocess.Popen(cmd, shell=True, close_fds=True)#加上close_fds=True,避免子进程一直存在
308
@dbus.service.method(INTERFACE, in_signature='s', out_signature='')
309
def set_user_homedir(self, homedir):
310
cleaner.get_user_homedir(homedir)
312
@dbus.service.method(INTERFACE, in_signature='', out_signature='s')
313
def get_system_daemon(self):
314
return "SystemDaemon"
316
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
317
def get_computer_info(self):
318
return self.infoconf.get_computer()
320
@dbus.service.method(INTERFACE, in_signature='', out_signature='s')
321
def get_os_name(self):
322
return self.infoconf.get_os_name()
324
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
325
def get_cpu_info(self):
326
return self.infoconf.get_cpu()
328
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
329
def get_board_info(self):
330
return self.infoconf.get_board()
332
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
333
def get_memory_info(self):
334
return self.infoconf.get_memory()
336
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
337
def get_harddisk_info(self):
338
return self.infoconf.get_disk()
340
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
341
def get_networkcard_info(self):
342
return self.infoconf.get_network()
344
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
345
def get_monitor_info(self):
346
return self.infoconf.get_monitor()
348
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
349
def get_cdrom_info(self):
350
return self.infoconf.get_dvd()
352
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
353
def get_audiocard_info(self):
354
return self.infoconf.get_multimedia()
356
@dbus.service.method(INTERFACE, in_signature='', out_signature='s')
357
def get_time_value(self):
358
return self.infoconf.uptimeinfo()
360
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}')
361
def get_sensor_info(self):
362
return self.infoconf.get_sensors()
364
@dbus.service.method(INTERFACE, in_signature='', out_signature='b')
365
def judge_sensors_exists_hb(self):
366
return self.infoconf.judge_sensors_exists()
369
# -------------------------sound-------------------------
371
@dbus.service.method(INTERFACE, in_signature='', out_signature='as')
372
def get_sound_themes(self):
373
return self.soundconf.get_sound_themes()
375
# get sound files in current sound theme
376
@dbus.service.method(INTERFACE, in_signature='', out_signature='as')
377
def get_sounds(self):
378
return self.soundconf.get_sounds()
380
# replace a sound file
381
@dbus.service.method(INTERFACE, in_signature='ss', out_signature='')
382
def replace_sound_file(self, newSoundFile, targetSoundFile):
383
self.soundconf.replace_sound_file(newSoundFile, targetSoundFile)
385
# restore a sound file
386
@dbus.service.method(INTERFACE, in_signature='s', out_signature='')
387
def restore_sound_file(self, targetSoundFile):
388
self.soundconf.restore_sound_file(targetSoundFile)
390
# restore all sound file in current sound theme
391
@dbus.service.method(INTERFACE, in_signature='s', out_signature='')
392
def restore_all_sound_file(self, soundTheme):
393
self.soundconf.restore_all_sound_file(soundTheme)
395
# -------------------------others-------------------------
397
# custom plymouth bg by plymouthName
398
@dbus.service.method(INTERFACE, in_signature='s', out_signature='')
399
def custom_plymouth_bg(self, plymouthName):
400
self.otherconf.custom_plymouth_bg(plymouthName)
402
# add new custom plymouth
403
@dbus.service.method(INTERFACE, in_signature='ss', out_signature='')
404
def add_new_plymouth(self, customBG, plymouthName):
405
self.otherconf.add_new_plymouth(customBG, plymouthName)
407
# get existing plymouth list
408
@dbus.service.method(INTERFACE, in_signature='', out_signature='as')
409
def get_existing_plymouth_list(self):
410
return self.otherconf.get_existing_plymouth_list()
412
# check and save current plymouth when init
413
@dbus.service.method(INTERFACE, in_signature='', out_signature='')
414
def plymouth_init_check(self):
415
self.otherconf.plymouth_init_check()
418
@dbus.service.method(INTERFACE, in_signature='s', out_signature='s')
419
def get_image_path(self,name):
420
return self.otherconf.get_image_path(name)
422
# Delete the boot animation from the list
423
@dbus.service.method(INTERFACE, in_signature='s', out_signature='s')
424
def delete_plymouth(self,plymouthName):
425
return self.otherconf.delete_plymouth(plymouthName)
427
# -------------------------monitorball-------------------------
429
# @dbus.service.method(INTERFACE, in_signature='', out_signature='')
430
# def cleanup_memory(self):
431
# self.ballconf.cleanup_memory()
432
# -------------------------monitorball end-------------------------
434
@dbus.service.signal(INTERFACE, signature='s')
435
def clean_complete_onekey(self, msg):
438
@dbus.service.signal(INTERFACE, signature='s')
439
def clean_error_onekey(self, msg):
442
@dbus.service.signal(INTERFACE, signature='ss')
443
def status_for_quick_clean(self, flag, status):
446
# a dbus method which means clean complete
447
@dbus.service.signal(INTERFACE, signature='s')
448
def clean_complete(self, msg):
451
# a dbus method which means quit clean by clicking the policykit's quit button
452
@dbus.service.signal(INTERFACE, signature='b')
453
def quit_clean(self, status):
456
# a dbus method which means clean single complete
457
@dbus.service.signal(INTERFACE, signature='s')
458
def clean_single_complete(self, msg):
461
# a dbus method which means an error occurred
462
@dbus.service.signal(INTERFACE, signature='s')
463
def clean_error(self, msg):
466
# a dbus method which means an single error occurred
467
@dbus.service.signal(INTERFACE, signature='s')
468
def clean_single_error(self, msg):
471
@dbus.service.method(INTERFACE, in_signature='as', out_signature='', sender_keyword='sender')
472
def onekey_clean_crufts_function(self, mode_list, sender=None):
473
status = self._check_permission(sender, UK_ACTION_YOUKER)
475
self.revoke_clean_onekey('yes')
478
self.revoke_clean_onekey('no')
479
daemononekey = cleaner.OneKeyClean()
481
t = threading.Thread(target = daemononekey.clean_all_onekey_crufts, args = (self, mode_list))
483
#daemononekey.clean_all_onekey_crufts(self, mode_list)
485
self.clean_error_msg('onekey')
487
self.clean_complete_msg('onekey')
489
# @dbus.service.method(INTERFACE, in_signature='as', out_signature='', sender_keyword='sender')
490
# def onekey_clean_crufts_function_by_threading(self, mode_list, sender=None):
491
# status = self._check_permission(sender, UK_ACTION_YOUKER)
493
# self.revoke_clean_onekey('yes')
496
# self.revoke_clean_onekey('no')
497
# daemononekey = cleaner.OneKeyClean()
499
# t = threading.Thread(target = daemononekey.clean_all_onekey_crufts, args = (self, mode_list))
500
# #daemononekey.clean_all_onekey_crufts(self, mode_list)
501
# except Exception, e:
502
# self.clean_error_msg('onekey')
504
# self.clean_complete_msg('onekey')
508
def onekey_clean_cancel_function(self, t):
509
daemononekey.cancel_onekey_clean(t, SystemExit)
511
# @dbus.service.method(INTERFACE, in_signature='s', out_signature='', sender_keyword='sender')
512
# def history_clean_records_function(self, flag, sender=None):
513
# status = self._check_permission(sender, UK_ACTION_YOUKER)
515
# self.clean_complete_msg('')
517
# daemonhistory = cleaner.CleanTheHistory()
519
# running = daemonhistory.clean_all_history_crufts(flag)
520
# except Exception, e:
521
# self.clean_error_msg(flag)
523
# self.clean_complete_msg(flag)
525
# @dbus.service.method(INTERFACE, in_signature='', out_signature='', sender_keyword='sender')
526
# def clean_system_history(self, sender=None):
527
# status = self._check_permission(sender, UK_ACTION_YOUKER)
529
# self.clean_complete_msg('')
531
# daemonsystem = cleaner.CleanSystemHistory()
533
# daemonsystem.clean_the_cruftlist()
534
# except Exception, e:
535
# self.clean_error_msg('system')
537
# self.clean_complete_msg('system')
539
#@dbus.service.method(INTERFACE, in_signature='', out_signature='', sender_keyword='sender')
540
#def clean_dash_history(self, sender=None):
541
# status = self._check_permission(sender, UK_ACTION_YOUKER)
543
# self.clean_complete_msg('')
545
# daemondash = cleaner.CleanDashHistory()
547
# daemondash.clean_the_cruftlist()
548
# except Exception, e:
549
# self.clean_error_msg('dash')
551
# self.clean_complete_msg('dash')
553
# @dbus.service.method(INTERFACE, in_signature = 'as', out_signature = '', sender_keyword = 'sender')
554
# def cookies_clean_record_function(self, flag, sender=None):
555
# status = self._check_permission(sender, UK_ACTION_YOUKER)
557
# self.clean_single_complete_msg('')
559
# daemoncookies = cleaner.CleanTheCookies(None)
561
# daemoncookies.clean_one_cookies_cruft(flag[0], flag[1])
562
# except Exception, e:
563
# self.clean_single_error_msg('cookies')
565
# self.clean_single_complete_msg('cookies')
567
# @dbus.service.method(INTERFACE, in_signature = 's', out_signature = '', sender_keyword = 'sender')
568
# def cookies_clean_records_function(self, flag, sender = None):
569
# status = self._check_permission(sender, UK_ACTION_YOUKER)
571
# self.quit_clean_work(flag)
573
# daemoncookies = cleaner.CleanTheCookies(None)
575
# daemoncookies.clean_all_cookies_crufts(flag)
576
# except Exception, e:
577
# self.clean_error_msg(flag)
579
# self.clean_complete_msg(flag)
581
# the function of clean files
582
### input-['filepath', 'file...] output-''
583
# @dbus.service.method(INTERFACE, in_signature='ass', out_signature='', sender_keyword='sender')
584
# def clean_file_cruft(self, cruft_list, flagstr, sender=None):
585
# status = self._check_permission(sender, UK_ACTION_YOUKER)
587
# self.clean_complete_msg('')
590
# for cruft in cruft_list:
591
# self.daemonclean.clean_the_file(cruft)
592
# except Exception, e:
593
# self.clean_error_msg(flagstr)
595
# self.clean_complete_msg(flagstr)
597
#def dbusstring_to_string(self, string):
598
# tmp_string = str(string)
600
# tmp_list = re.findall(patt, tmp_string)
601
# return [ok.split("'")[1] for ok in tmp_list]
603
def clean_complete_msg(self, para):
604
self.clean_complete(para)
606
# def quit_clean_work(self, para):
607
# self.quit_clean(para)
608
# def quit_clean_work(self, status):
609
# self.quit_clean(status)
611
def clean_single_complete_msg(self, para):
612
self.clean_single_complete(para)
614
def clean_error_msg(self, para):
615
self.clean_error(para)
617
def clean_single_error_msg(self, para):
618
self.clean_single_error(para)
620
def revoke_clean_onekey(self, para):
621
self.clean_complete_onekey(para)
623
# a dbus method which means clean complete
624
# @dbus.service.signal(INTERFACE, signature='s')
625
# def finish_clean(self, msg):
628
@dbus.service.signal(INTERFACE, signature='ss')
629
def status_remove_packages(self, type, msg):
632
# a dbus method which means an error occurred
633
# @dbus.service.signal(INTERFACE, signature='s')
634
# def sudo_clean_error(self, msg):
637
# the function of clean packages
638
### input-['packagename', 'pack...] output-''
639
# @dbus.service.method(INTERFACE, in_signature='ass', out_signature='', sender_keyword='sender')
640
# def clean_package_cruft(self, cruftlist, flag, sender=None):
641
# status = self._check_permission(sender, UK_ACTION_YOUKER)
643
# self.finish_clean_msg('')
646
# self.daemonclean.clean_the_package(cruftlist, self)
647
# except Exception, e:
648
# self.sudo_clean_error_msg(flag)
650
# self.finish_clean_msg(flag)
652
# def finish_clean_msg(self, para):
653
# self.finish_clean(para)
655
# def sudo_clean_error_msg(self, para):
656
# self.sudo_clean_error(para)
658
#-----START-----------NEW-YOUKER---------------------------
661
# @dbus.service.method(INTERFACE, in_signature='a{sv}', out_signature='', sender_keyword='sender')
662
# def remove_select_items(self, mode_dic, sender=None):
663
# status = self._check_permission(sender, UK_ACTION_YOUKER)
665
# self.quit_clean(False)
666
## self.quit_clean_work()
669
# self.quit_clean(True)
670
def start_clean_all(self, mode_dic):
671
filecache = mode_dic.get('file', [])
673
for tmpName in filecache:
674
cleaner.interface_remove_file_system(self, tmpName)
676
packagecache = mode_dic.get('package', [])
678
for pkgName in packagecache:
679
cleaner.interface_remove_package_system(self, pkgName)
681
bashhistory = mode_dic.get('bash-history', [])
683
for tmpName in bashhistory:
684
cleaner.interface_remove_file_system(self, tmpName)
686
x11history = mode_dic.get('x11-history', [])
688
for tmpName in x11history:
689
cleaner.interface_remove_file_system(self, tmpName)
691
firefoxhistory = mode_dic.get('firefox-history', [])
693
cleaner.interface_remove_firefox_history_system(self)
695
chromiumhistory = mode_dic.get('chromium-history', [])
697
cleaner.interface_remove_chromium_history_system(self)
699
systemhistory = mode_dic.get('system-history', [])
701
cleaner.interface_remove_system_history_system(self)
703
firefoxcookies = mode_dic.get('firefox-cookie', [])
705
for domain in firefoxcookies:
706
cleaner.interface_remove_firefox_cookies_system(self, domain)
708
chromiumcookies = mode_dic.get('chromium-cookie', [])
710
for domain in chromiumcookies:
711
cleaner.interface_remove_chromium_cookies_system(self, domain)
713
self.subpage_status_signal('Complete:All', "finish")
715
@dbus.service.method(INTERFACE, in_signature='a{sv}', out_signature='', sender_keyword='sender')
716
def remove_select_items(self, mode_dic, sender=None):
717
status = self._check_permission(sender, UK_ACTION_YOUKER)
719
self.quit_clean(False)
722
self.quit_clean(True)
723
thread.start_new_thread(self.start_clean_all, (mode_dic,))
724
# @dbus.service.method(INTERFACE, in_signature='s', out_signature='', sender_keyword='sender')
725
# def remove_file(self, fp):
726
# status = self._check_permission(sender, UK_ACTION_YOUKER)
728
# self.revoke_clean_onekey('yes')
731
# self.revoke_clean_onekey('no')
732
# cleaner.interface_remove_file_system(self, fp)
734
# @dbus.service.method(INTERFACE, in_signature='s', out_signature='', sender_keyword='sender')
735
# def remove_package(self, pkgname, sender=None):
736
# status = self._check_permission(sender, UK_ACTION_YOUKER)
738
# self.revoke_clean_onekey('yes')
741
# self.revoke_clean_onekey('no')
742
# cleaner.interface_remove_package_system(self, pkgname)
744
# @dbus.service.method(INTERFACE, in_signature='', out_signature='', sender_keyword='sender')
745
# def remove_firefox_history(self, sender=None):
746
# status = self._check_permission(sender, UK_ACTION_YOUKER)
748
# self.revoke_clean_onekey('yes')
751
# self.revoke_clean_onekey('no')
752
# cleaner.interface_remove_firefox_history_system(self)
754
# @dbus.service.method(INTERFACE, in_signature='', out_signature='', sender_keyword='sender')
755
# def remove_chromium_history(self, sender=None):
756
# status = self._check_permission(sender, UK_ACTION_YOUKER)
758
# self.revoke_clean_onekey('yes')
761
# self.revoke_clean_onekey('no')
762
# cleaner.interface_remove_chromium_history_system(self)
764
# @dbus.service.method(INTERFACE, in_signature='s', out_signature='', sender_keyword='sender')
765
# def remove_firefox_cookies(self, domain, sender=None):
766
# status = self._check_permission(sender, UK_ACTION_YOUKER)
768
# self.revoke_clean_onekey('yes')
771
# self.revoke_clean_onekey('no')
772
# cleaner.interface_remove_firefox_cookies_system(self, domain)
774
# @dbus.service.method(INTERFACE, in_signature='s', out_signature='', sender_keyword='sender')
775
# def remove_chromium_cookies(self, domain, sender=None):
776
# status = self._check_permission(sender, UK_ACTION_YOUKER)
778
# self.revoke_clean_onekey('yes')
781
# self.revoke_clean_onekey('no')
782
# cleaner.interface_remove_chromium_cookies_system(self, domain)
784
@dbus.service.signal(INTERFACE, signature='as')
785
def subpage_data_signal(self, msg):
788
@dbus.service.signal(INTERFACE, signature='ss')
789
def subpage_status_signal(self, msg, domain):
792
@dbus.service.signal(INTERFACE, signature='s')
793
def subpage_error_signal(self, msg):
795
#-----END------------NEW-YOUKER---------------------------
797
if __name__ == '__main__':
798
os.environ["TERM"] = "xterm"
799
os.environ["PATH"] = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin"
800
os.environ["DEBIAN_FRONTEND"] = "noninteractive"
801
if os.path.exists("/var/lib/apt/lists/lock"):
802
os.remove("/var/lib/apt/lists/lock")
803
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
804
#gobject.threads_init()
805
#mainloop = gobject.MainLoop()
806
GObject.threads_init()
807
mainloop = GObject.MainLoop()
808
signal.signal(signal.SIGINT, lambda : mainloop.quit())
809
Daemon(dbus.SystemBus(), mainloop)