source: n4d-cdlocker-client/trunk/fuentes/lliurex-cdlocker.install/usr/share/n4d/python-plugins/CDLockerClient.py @ 5974

Last change on this file since 5974 was 5974, checked in by hectorgh, 2 years ago

updated lock trigger function

File size: 2.3 KB
Line 
1#!/usr/bin/env python
2import re
3from shutil import copy2
4import os
5import threading
6import subprocess
7
8class CDLockerClient:
9       
10        def __init__(self):
11               
12                self.etc_udev_file="/etc/udev/rules.d/60-cdrom_id.rules"
13                self.udev_file="/lib/udev/rules.d/60-cdrom_id.rules"
14               
15        #def init
16
17
18        def startup(self,options):
19               
20                t = threading.Thread(target=self._startup)
21                t.daemon = True
22                t.start()
23               
24        #def startup
25
26
27        def _startup(self):
28               
29                try:
30                       
31                        if objects.has_key("VariablesManager"):
32                                objects["VariablesManager"].register_trigger("CDLOCKER","CDLockerClient",self.lock_trigger)
33                        self.get_value()
34                        self.lock_trigger()
35                       
36                except Exception as e:
37                        print str(e)
38                       
39        #def _startup
40       
41
42        def get_value(self):
43
44                # Making sure we're able to read CDLOCK_ACTIVE var from server
45                tries=10
46                for x in range(0,tries):
47               
48                        self.var=objects["VariablesManager"].get_variable("CDLOCKER")
49                        if self.var != None:
50                                self.lock_trigger(self.var)
51                                break
52                        else:
53                                time.sleep(1)
54                               
55                if self.var== None:
56                        self.var={}
57                        self.var["enabled"]=False
58               
59        #def get_value
60       
61
62        def is_enabled(self):
63               
64                try:
65                        return self.var["enabled"]
66                except:
67                        return False
68               
69        #def is_enabled
70       
71
72        def lock_trigger(self,lock_state=None):
73               
74                if lock_state!=None:
75                        self.var=lock_state
76               
77                if self.is_enabled():
78                        self.lock()
79                else:
80                        self.unlock()
81                       
82        #def lock_trigger
83       
84
85        def refresh_udev(self):
86
87                os.system("udevadm control --reload-rules")
88                os.system("udevadm trigger")
89
90        #def refresh_udev
91       
92       
93        def create_etc_file(self):
94               
95                try:
96                        f=open(self.udev_file)
97                        lines=f.readlines()
98                        f.close()
99
100                        f=open(self.etc_udev_file,"w")
101                        f.write("# ### FILE AUTOMATICALLY GENERATED BY N4D-CDLOCKER-CLIENT ### #\n\n")
102                        for line in lines:
103                                if line.find("ENV{DISK_EJECT_REQUEST}")==0:
104                                        line="# DISABLED BY LLIUREX\n# " + line
105                                f.write(line)
106                        f.close()
107                        return True
108                       
109                except:
110                        return False
111               
112        #def create_etc_file
113
114
115        def lock(self):
116
117                if self.create_etc_file:
118                        self.refresh_udev()
119                        os.system("eject -i on /dev/sr0")
120                        os.system("chmod 0700 /usr/bin/eject")
121                        return True
122                else:
123                        return False
124               
125        #def lock
126
127
128        def unlock(self):
129
130                if os.path.exists(self.etc_udev_file):
131                        os.remove(self.etc_udev_file)
132
133                self.refresh_udev()
134                os.system("eject -i off /dev/sr0")
135                os.system("chmod 0755 /usr/bin/eject")
136
137                return True
138
139        #def unlock
140
Note: See TracBrowser for help on using the repository browser.