#!/usr/bin/env python2 # You may redistribute this program and/or modify it under the terms of # the GNU General Public License as published by the Free Software Foundation, # either version 3 of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from cjdnsadmin.cjdnsadmin import connectWithAdminInfo; from cjdnsadmin.bencode import *; import sys; def usage(): app = sys.argv[0]; print("Usage: " + app + " "); print(app + " 'INFO' <-- log all INFO and higher (WARN, ERROR, or CRITICAL) messages."); print(app + " '' <-- log everything"); print(app + " '' 'CryptoAuth.c' <-- log everything in CryptoAuth.c"); print(app + " 'INFO' 'CryptoAuth.c' <-- log INFO and higher in CryptoAuth.c"); print(app + " '' 'CryptoAuth.c' 747 <-- print messages from log statement on line 747 of CryptoAuth.c"); print(app + " '' '' 747 <-- print messages from log statements on line 747 of any file at all."); def doLog(data): print str(data['time']) + ' ' + data['level'] + ' ' + data['file'] + ':' + str(data['line']) + ' ' + data['message']; def recieve(cjdns, txid): while True: doLog(cjdns.getMessage(txid)); def main(): cjdns = connectWithAdminInfo(); level = ''; fileName = ''; line = 0; args = len(sys.argv) - 1; if (args == 0): usage(); exit(0); if (args > 0): level = sys.argv[1]; if (args > 1): fileName = sys.argv[2]; if (args > 2): line = int(sys.argv[3]); sub = cjdns.AdminLog_subscribe(line, fileName, level); if (sub['error'] == 'none'): recieve(cjdns, sub['txid']); else: print(sub); try: main() except KeyboardInterrupt: print("") print("Interrupted by user.")