1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
From: Marco Bertorello <marco@bertorello.ns0.it>
Date: Thu, 14 Apr 2011 00:11:35 +0200
Subject: 08_foreground_mode
Add a useful switch to denyhost for run in foreground/debugging mode
---
DenyHosts/deny_hosts.py | 9 +++++++--
denyhosts.py | 20 +++++++++++++-------
2 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/DenyHosts/deny_hosts.py b/DenyHosts/deny_hosts.py
index 7a985e6..f308264 100644
--- a/DenyHosts/deny_hosts.py
+++ b/DenyHosts/deny_hosts.py
@@ -41,7 +41,7 @@ error = logging.getLogger("denyhosts").error
class DenyHosts:
def __init__(self, logfile, prefs, lock_file,
ignore_offset=0, first_time=0,
- noemail=0, daemon=0):
+ noemail=0, daemon=0, foreground=0):
self.__denied_hosts = {}
self.__prefs = prefs
self.__lock_file = lock_file
@@ -49,6 +49,7 @@ class DenyHosts:
self.__noemail = noemail
self.__report = Report(prefs.get("HOSTNAME_LOOKUP"), is_true(prefs['SYSLOG_REPORT']))
self.__daemon = daemon
+ self.__foreground = foreground
self.__sync_server = prefs.get('SYNC_SERVER')
self.__sync_upload = is_true(prefs.get("SYNC_UPLOAD"))
self.__sync_download = is_true(prefs.get("SYNC_DOWNLOAD"))
@@ -87,7 +88,7 @@ class DenyHosts:
info("Log file size has not changed. Nothing to do.")
- if daemon:
+ if daemon and not foreground:
info("launching DenyHosts daemon (version %s)..." % VERSION)
#logging.getLogger().setLevel(logging.WARN)
@@ -101,6 +102,10 @@ class DenyHosts:
self.runDaemon(logfile, last_offset)
else:
die("Error creating daemon: %s (%d)" % (retCode[1], retCode[0]))
+ elif foreground:
+ info("launching DenyHosts (version %s)..." % VERSION)
+ self.__lock_file.remove()
+ self.runDaemon(logfile, last_offset)
def killDaemon(self, signum, frame):
diff --git a/denyhosts.py b/denyhosts.py
index 48bd837..727e565 100755
--- a/denyhosts.py
+++ b/denyhosts.py
@@ -34,6 +34,7 @@ def usage():
print " --migrate: migrate your HOSTS_DENY file so that it is suitable for --purge"
print " --purge: expire entries older than your PURGE_DENY setting"
print " --daemon: run DenyHosts in daemon mode"
+ print " --foreground: run DenyHosts in foreground mode"
print " --sync: run DenyHosts synchronization mode"
print " --version: Prints the version of DenyHosts and exits"
@@ -63,6 +64,7 @@ if __name__ == '__main__':
purge = 0
sync_mode = 0
daemon = 0
+ foreground = 0
enable_debug = 0
upgrade099 = 0
args = sys.argv[1:]
@@ -70,8 +72,8 @@ if __name__ == '__main__':
(opts, getopts) = getopt.getopt(args, 'f:c:dinuvps?hV',
["file=", "ignore", "verbose", "debug",
"help", "noemail", "config=", "version",
- "migrate", "purge", "daemon", "sync",
- "upgrade099"])
+ "migrate", "purge", "daemon", "foreground",
+ "sync", "upgrade099"])
except:
print "\nInvalid command line option detected."
usage()
@@ -101,6 +103,8 @@ if __name__ == '__main__':
sync_mode = 1
if opt == '--daemon':
daemon = 1
+ if opt == '--foreground':
+ foreground = 1
if opt == '--upgrade099':
upgrade099 = 1
if opt == '--version':
@@ -131,21 +135,21 @@ if __name__ == '__main__':
lock_file.create()
- if upgrade099 and not daemon:
+ if upgrade099 and not (daemon or foreground):
if not prefs.get('PURGE_DENY'):
lock_file.remove()
die("You have supplied the --upgrade099 flag, however you have not set PURGE_DENY in your configuration file")
else:
u = UpgradeTo099(prefs.get("HOSTS_DENY"))
- if migrate and not daemon:
+ if migrate and not (daemon or foreground):
if not prefs.get('PURGE_DENY'):
lock_file.remove()
die("You have supplied the --migrate flag however you have not set PURGE_DENY in your configuration file.")
else:
m = Migrate(prefs.get("HOSTS_DENY"))
- if purge and not daemon:
+ if purge and not (daemon or foreground):
purge_time = prefs.get('PURGE_DENY')
if not purge_time:
lock_file.remove()
@@ -162,7 +166,9 @@ if __name__ == '__main__':
try:
for f in logfiles:
dh = DenyHosts(f, prefs, lock_file, ignore_offset,
- first_time, noemail, daemon)
+ first_time, noemail, daemon, foreground)
+ except KeyboardInterrupt:
+ pass
except SystemExit, e:
pass
except Exception, e:
@@ -170,7 +176,7 @@ if __name__ == '__main__':
print "\nDenyHosts exited abnormally"
- if sync_mode and not daemon:
+ if sync_mode and not (daemon or foreground):
if not prefs.get('SYNC_SERVER'):
lock_file.remove()
die("You have provided the --sync flag however your configuration file is missing a value for SYNC_SERVER.")
--
|