aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorng0 <ng0@n0.is>2019-09-11 10:56:20 +0000
committerng0 <ng0@n0.is>2019-09-11 10:56:20 +0000
commitd5bd0b9e37d5c5b1bf1c0af6af2dea5ad471b3ce (patch)
tree2b7c02ea075548a816e1fa31b27f9b62e0ea874a /contrib
parent9f69f52d0009cb64e0c6d5715fb531af409b5abb (diff)
downloadgnunet-d5bd0b9e37d5c5b1bf1c0af6af2dea5ad471b3ce.tar.gz
gnunet-d5bd0b9e37d5c5b1bf1c0af6af2dea5ad471b3ce.zip
contrib: gnunet_janitor, terminate: remove win32 functionalities.
This commit is questionable, but since I removed win32 code this code no longer has any purpose.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/scripts/gnunet_janitor.py.in24
-rw-r--r--contrib/scripts/terminate.py.in37
2 files changed, 11 insertions, 50 deletions
diff --git a/contrib/scripts/gnunet_janitor.py.in b/contrib/scripts/gnunet_janitor.py.in
index 79e32fb90..b0b50ca76 100644
--- a/contrib/scripts/gnunet_janitor.py.in
+++ b/contrib/scripts/gnunet_janitor.py.in
@@ -11,7 +11,7 @@
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU Affero General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>. 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# 17#
@@ -31,24 +31,14 @@ import time
31import signal 31import signal
32import terminate 32import terminate
33 33
34if os.name == 'nt':
35 from win32com.client import GetObject
36 WMI = GetObject('winmgmts:')
37
38
39def get_process_list(): 34def get_process_list():
40 result = [] 35 result = []
41 if os.name == 'nt': 36 pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
42 processes = WMI.InstancesOf('Win32_Process') 37 for pid in pids:
43 for p in processes: 38 with open(os.path.join('/proc', pid, 'cmdline'), 'rb') as p:
44 result.append((p.Properties_('ProcessId').Value, re.sub(r'(.+)\.exe', r'\1', p.Properties_('Name').Value))) 39 cmdline = p.read().split('\x00')
45 else: 40 if len(cmdline) > 0:
46 pids = [pid for pid in os.listdir('/proc') if pid.isdigit()] 41 result.append((pid, cmdline[0]))
47 for pid in pids:
48 with open(os.path.join('/proc', pid, 'cmdline'), 'rb') as p:
49 cmdline = p.read().split('\x00')
50 if len(cmdline) > 0:
51 result.append((pid, cmdline[0]))
52 return result 42 return result
53 43
54 44
diff --git a/contrib/scripts/terminate.py.in b/contrib/scripts/terminate.py.in
index 161b4db61..f57ac6167 100644
--- a/contrib/scripts/terminate.py.in
+++ b/contrib/scripts/terminate.py.in
@@ -11,7 +11,7 @@
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU Affero General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>. 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# 17#
@@ -24,9 +24,6 @@
24import sys 24import sys
25import subprocess 25import subprocess
26import os 26import os
27if os.name == 'nt':
28 import win32api
29 import win32process
30 27
31 28
32class dummyobj (object): 29class dummyobj (object):
@@ -34,35 +31,9 @@ class dummyobj (object):
34 31
35 32
36def safe_terminate_process_by_pid(pid, code): 33def safe_terminate_process_by_pid(pid, code):
37 if os.name == 'nt': 34 # XXX (F821): Undefined name 'SIGKILL'
38 p = dummyobj() 35 return os.kill(int(pid), SIGKILL)
39 p._handle = win32api.OpenProcess(2 | 1024 | 8 | 32 | 16, 0, pid)
40 result = safe_terminate_process(p, code)
41 win32api.CloseHandle(p._handle)
42 return result
43 else:
44 # XXX (F821): Undefined name 'SIGKILL'
45 return os.kill(int(pid), SIGKILL)
46 36
47 37
48def safe_terminate_process(proc, code): 38def safe_terminate_process(proc, code):
49 if os.name == 'nt': 39 return proc.kill()
50 cp = win32api.GetCurrentProcess()
51 result = False
52 dupproc = win32api.DuplicateHandle(cp, proc._handle, cp, 2 | 1024 | 8 | 32 | 16, 0, 0)
53 try:
54 exitcode = win32process.GetExitCodeProcess(dupproc)
55 if exitcode == 0x103:
56 kernel32 = win32api.GetModuleHandle("kernel32")
57 exitprocess = win32api.GetProcAddress(kernel32, "ExitProcess")
58 th, tid = win32process.CreateRemoteThread(dupproc, None, 0, exitprocess, code, 0)
59 win32api.CloseHandle(th)
60 result = True
61 else:
62 result = True
63 # except failed to get exit code? failed to get module handle?
64 finally:
65 win32api.CloseHandle(dupproc)
66 return result
67 else:
68 return proc.kill()