Changeset 458
- Timestamp:
- 05/14/08 11:02:21
(8 months ago)
- Author:
- mgoldman
- Message:
Tie log queries together
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r451 |
r458 |
|
| 11 | 11 | import pprint |
|---|
| 12 | 12 | import os |
|---|
| | 13 | from locale import atoi |
|---|
| | 14 | from protocol import Message |
|---|
| 13 | 15 | |
|---|
| 14 | 16 | class Manager: |
|---|
| … | … | |
| 62 | 64 | msg.type = 'query' |
|---|
| 63 | 65 | msg.body = 'all' |
|---|
| 64 | | return msg |
|---|
| 65 | | |
|---|
| 66 | | def requestlog(self): |
|---|
| 67 | | print "Getting logs" |
|---|
| 68 | | msg = protocol.Message() |
|---|
| 69 | | msg.msg = "log" |
|---|
| 70 | | msg.type = "query" |
|---|
| 71 | | msg.body = "ALL" |
|---|
| 72 | | return msg |
|---|
| 73 | | |
|---|
| 74 | | def requestlogdelta(self): |
|---|
| 75 | | print "getting log deltas" |
|---|
| 76 | | msg= protocol.Message() |
|---|
| 77 | | msg.msg = "log" |
|---|
| 78 | | msg.type = "query" |
|---|
| 79 | | msg.body = "UPDATE" |
|---|
| 80 | 66 | return msg |
|---|
| 81 | 67 | |
|---|
| … | … | |
| 212 | 198 | return mgr.query_server(msg) |
|---|
| 213 | 199 | |
|---|
| | 200 | def parsequery(qlist): |
|---|
| | 201 | res = [] |
|---|
| | 202 | ips = [] |
|---|
| | 203 | groups = [] |
|---|
| | 204 | while(qlist != []): |
|---|
| | 205 | tok = qlist.pop(0) |
|---|
| | 206 | if tok == "time": |
|---|
| | 207 | try: |
|---|
| | 208 | res.append(("time",(atoi(qlist.pop(0)), atoi(qlist.pop(0))))) |
|---|
| | 209 | except ValueError: |
|---|
| | 210 | print "Error parsing values." |
|---|
| | 211 | raise ValueError |
|---|
| | 212 | elif tok == "IP": |
|---|
| | 213 | ips.append(qlist.pop(0)) |
|---|
| | 214 | elif tok == "group": |
|---|
| | 215 | groups.append(qlist.pop(0)) |
|---|
| | 216 | else: |
|---|
| | 217 | print "Unknown token: " + tok |
|---|
| | 218 | raise ValueError |
|---|
| | 219 | if ips != []: |
|---|
| | 220 | res.append(("IP", ips)) |
|---|
| | 221 | if groups != []: |
|---|
| | 222 | res.append(("group", groups)) |
|---|
| | 223 | return res |
|---|
| | 224 | |
|---|
| 214 | 225 | def handlelog(manager, arglist): |
|---|
| 215 | 226 | ''' Takes a manager object and the remainder of the command |
|---|
| 216 | 227 | line arguments and processes the log command |
|---|
| 217 | 228 | Current commands: all, delta ''' |
|---|
| 218 | | useage = 'usage: log (all|delta) [ (group|IP) [IP list] ]' |
|---|
| | 229 | useage = 'usage: log (query [restrictions]) | ((all|delta) '\ |
|---|
| | 230 | + '[ (group|IP) [IP list] ])\n'\ |
|---|
| | 231 | + 'restrictions must be in the form:\n'\ |
|---|
| | 232 | + '\ttime <int> <int> # min max in seconds past epoch\n'\ |
|---|
| | 233 | + '\tIP <IP> # dotted quad notation\n'\ |
|---|
| | 234 | + '\tgroup <groupname>\n'\ |
|---|
| | 235 | + 'Note: you can have multiple of each, although multiple'\ |
|---|
| | 236 | + 'times does not make sense.' |
|---|
| 219 | 237 | if(len(arglist) == 0): |
|---|
| 220 | 238 | print useage |
|---|
| … | … | |
| 225 | 243 | targets = (arglist[1], arglist[2:]) |
|---|
| 226 | 244 | if cmd == "all": |
|---|
| 227 | | resp = manager.query_server(manager.requestlog(), targets) |
|---|
| | 245 | resp = manager.query_server(Message("log","query","ALL", targets) |
|---|
| 228 | 246 | elif cmd == "delta": |
|---|
| 229 | | resp = manager.query_server(manager.requestlog(), targets) |
|---|
| | 247 | resp = manager.query_server(Message("log","query","UPDATE", targets) |
|---|
| | 248 | elif cmd == "query": |
|---|
| | 249 | try: |
|---|
| | 250 | query = parsequery(arglist[1:]) |
|---|
| | 251 | resp = manager.query_server(Message("log query", "request", query)) |
|---|
| | 252 | except ValueError: |
|---|
| | 253 | print useage |
|---|
| | 254 | return |
|---|
| 230 | 255 | else: |
|---|
| 231 | 256 | print useage |
|---|
Download in other formats:
* Generating other formats may take time.