diff options
author | ng0 <ng0@n0.is> | 2019-09-11 10:56:20 +0000 |
---|---|---|
committer | ng0 <ng0@n0.is> | 2019-09-11 10:56:20 +0000 |
commit | d5bd0b9e37d5c5b1bf1c0af6af2dea5ad471b3ce (patch) | |
tree | 2b7c02ea075548a816e1fa31b27f9b62e0ea874a | |
parent | 9f69f52d0009cb64e0c6d5715fb531af409b5abb (diff) | |
download | gnunet-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.
-rw-r--r-- | contrib/scripts/gnunet_janitor.py.in | 24 | ||||
-rw-r--r-- | contrib/scripts/terminate.py.in | 37 |
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 | |||
31 | import signal | 31 | import signal |
32 | import terminate | 32 | import terminate |
33 | 33 | ||
34 | if os.name == 'nt': | ||
35 | from win32com.client import GetObject | ||
36 | WMI = GetObject('winmgmts:') | ||
37 | |||
38 | |||
39 | def get_process_list(): | 34 | def 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 @@ | |||
24 | import sys | 24 | import sys |
25 | import subprocess | 25 | import subprocess |
26 | import os | 26 | import os |
27 | if os.name == 'nt': | ||
28 | import win32api | ||
29 | import win32process | ||
30 | 27 | ||
31 | 28 | ||
32 | class dummyobj (object): | 29 | class dummyobj (object): |
@@ -34,35 +31,9 @@ class dummyobj (object): | |||
34 | 31 | ||
35 | 32 | ||
36 | def safe_terminate_process_by_pid(pid, code): | 33 | def 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 | ||
48 | def safe_terminate_process(proc, code): | 38 | def 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() | ||