IRCP

- information gathering tool for irc servers
git clone git://git.acid.vegas/IRCP.git
Log | Files | Refs | Archive | README | LICENSE

commit c6c746117c341936e440af8538585ec2bbbaffe8
parent 45100452dac71f2fa468ed76c0629f281c1d00ac
Author: acidvegas <acid.vegas@acid.vegas>
Date: Tue, 30 May 2023 02:49:13 -0400

Simplified parser for easy usage with grep

Diffstat:
Mparser.py | 47+++++++++--------------------------------------

1 file changed, 9 insertions(+), 38 deletions(-)

diff --git a/parser.py b/parser.py
@@ -5,64 +5,35 @@ import json
 import os
 import sys
 
-def parse(line, raw): # TODO: finish adding custom outputs for certain fields
+def parse(data, raw=True):
 	if not raw:
-		args    = line.split()
-		numeric = args[1]
-		data    = ' '.join(args[3:])
+		data = ' '.join(line.split()[3:])
 		if data[:1] == ':':
 			data = data[1:]
-		if numeric == '001' and len(args) >= 7 and data.lower().startswith('welcome to the '):
-			return args[6]
-		elif numeric == '002' and len(line.split('running version ')) == 2:
-			return line.split('running version ')[1]
-		elif numeric == '003':
-			check = [item for item in ('This server was cobbled together ','This server was created ','This server has been started ','This server was last re(started) on ','This server was last (re)started on ') if data.startswith(item)]
-			if check:
-				return data.replace(check[0],'')
-		elif numeric == '004' and len(args) >= 5:
-			return args[4]
-		elif numeric == '005':
-			return data.split(' :')[0]
-		elif numeric == '006':
-			while data[:1] in ('-','|',' ','`'):
-				data = data[1:]
-			return data.split()[0]
-	return line if raw else data
+	print(data)
+	return data
 
 # Main
 if len(sys.argv) >= 2:
-	check  = sys.argv[1]
+	option  = sys.argv[1]
 	raw    = True
-	stats  = False
 	if len(sys.argv) == 3:
 		if sys.argv[2] == 'clean':
 			raw = False
-		elif sys.argv == 'stats':
-			stats = True
 	logs  = os.listdir('logs')
 	found = list()
 	for log in logs:
 		with open('logs/'+log) as logfile:
 			data = json.loads(logfile.read())
-			if check in data:
-				data = data[check]
+			if option in data:
+				data = data[option]
 				if type(data) == str:
-					print(parse(data, raw))
 					found.append(parse(data, raw))
 				elif type(data) == list:
 					for item in data:
-						print(parse(item, raw))
 						found.append(parse(item, raw))
-	if stats:
-		database = dict()
-		for item in found:
-			if item not in database:
-				database[item] = 1
-			else:
-				database[item] +=1
-	print(database)
-	print(f'\nFound {len(found)} results in {len(logs)} logs')
+	if found:
+		print(f'\nfound {len(found)} results in {len(logs)} logs')
 else:
 	print('usage: python parser.py <field> [clean]\n')
 	print('       <field> may be any item in the snapshots (001, NOTICE, 464, etc)')