本文整理汇总了Python中common.logger.Logger.info方法的典型用法代码示例。如果您正苦于以下问题:Python Logger.info方法的具体用法?Python Logger.info怎么用?Python Logger.info使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类common.logger.Logger
的用法示例。
在下文中一共展示了Logger.info方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from common.logger import Logger [as 别名]
# 或者: from common.logger.Logger import info [as 别名]
class PortManager:
# Port Manager: calls necessary managers and utilities to generate parameters for sql.
# List of valid ports it can receive is taken from the Configuration setup.
#
validPortNumbers = ()
def __init__(self):
self.g_config = GlobalConfig()
self.validPortNumbers = self.g_config.get_ports()
self.date_time_field = self.g_config.get_db_datetime_name()
self.log = Logger().get('reportserver.manager.PortManager.PortManager')
def isPortValid(self, port_number):
if (port_number in self.validPortNumbers):
return True
else:
return False
def getPort(self, port_number, uom, unit):
self.log.info("Retrieving port:" + str(port_number) + "uom:" + uom + " size: " + str(unit))
items = []
if self.isPortValid(port_number):
results = DatabaseHandler().get_json_by_time(port_number, uom, unit)
items = utilities.process_data(results)
port_json = {
'port': str(port_number),
'timespan': uom + "=" + str(unit),
'items':items
}
return port_json
def get_port_attack_count(self, tablename, unit, uom):
fromDate = dateTimeUtility.get_begin_date_iso(unit, uom)
sql = "select count(distinct session) as total_attacks from %s where %s >= '%s' " %(tablename, self.date_time_field, fromDate)
self.log.debug("sql is:" + sql)
result = DatabaseHandler().query_db(sql)[0]
return int(result['total_attacks'])
def get_unique_ips(self, tablename, unit, uom):
fromDate = dateTimeUtility.get_begin_date_iso(unit, uom)
sql = "select count(distinct peerAddress) as unique_ips from %s where %s >= '%s' " % (tablename, self.date_time_field, fromDate)
self.log.debug("sql is:" + sql)
result = DatabaseHandler().query_db(sql)[0]
return int(result['unique_ips'])
示例2: __init__
# 需要导入模块: from common.logger import Logger [as 别名]
# 或者: from common.logger.Logger import info [as 别名]
class DatabaseHandler:
def __init__(self):
self.global_config = GlobalConfig()
self.db_path = self.global_config['Database']['path']
self.log = Logger().get('reportserver.dao.DatabaseHandler.DatabaseHandler')
# Connect to given database.
# Defaults to the honeypot db, but another path can be passed in (mainly for testing).
# Database needs to exist first.
def connect(self, database_name):
if (database_name == None):
database_name = self.db_path
if not os.path.exists(database_name):
self.log.error("Database does not exist in path: " + database_name)
return None
try:
conn = sqlite3.connect(database_name)
except sqlite3.OperationalError as oe:
self.log.error("****Problem connecting to database*** at: " + database_name)
self.log.error(oe)
else:
return conn
# Query DB and return JSON
def query_db(self, query, args=(), one=False, db=None):
#print ("#debug args are: " +str(args))
cur = self.connect(db).cursor()
cur.execute(query, args)
r = [dict((cur.description[i][0], value) \
for i, value in enumerate(row)) for row in cur.fetchall()]
cur.connection.close()
return (r[0] if r else None) if one else r
# Unit of Measure could be "weeks", "days", "hours", "minutes".
# Return all data from the DB within that measure of time as JSON.
def get_json_by_time(self, portnumber, uom, units):
begin_date_iso = dateTimeUtility.get_begin_date_iso(uom, units)
tableName = self.global_config.get_plugin_config(portnumber)['table']
date_time_field = self.global_config.get_db_datetime_name()
# query = query_db("SELECT * FROM %s where (datetime > '%s')" % (tableName, query_date_iso))
queryString = "SELECT * FROM %s where %s >= '%s' order by id, %s" % (tableName, date_time_field, begin_date_iso, date_time_field)
#args = (tableName, date_time_field, begin_date_iso)
self.log.info("queryString is: " + str(queryString))
#print ("args to use: " + str(args))
results = self.query_db(queryString)
self.log.debug("results: " + str(results))
return results
示例3: __init__
# 需要导入模块: from common.logger import Logger [as 别名]
# 或者: from common.logger.Logger import info [as 别名]
class IpsServiceHandler:
def __init__(self):
self.log = Logger().get("reportserver.manager.IpsServiceHandler.py")
def process(self, rqst, path_tokens, query_tokens):
uom = None
units = None
self.log.info("processing ipaddress request:" + str(path_tokens) + str(query_tokens))
try:
time_period = utilities.validate_time_period(query_tokens)
uom = time_period[0]
units = time_period[1]
except ValueError:
rqst.badRequest(units)
return
if len(path_tokens) == 5:
ipaddress = path_tokens[4].strip()
self.log.debug("requested: " + str(ipaddress))
if ipaddress is not None or ipaddress is not "":
try:
ipaddress = utilities.validate_ipaddress(ipaddress)
self.get_ips_data_by_time(rqst, ipaddress, uom, units)
except ValueError:
rqst.badRequest(badIpAddress)
return
elif ipaddress == None or ipaddress == "":
self.get_ips_data_by_time(rqst, "", uom, units)
else:
rqst.badRequest()
return
elif len(path_tokens) == 4:
self.get_ips_list_json(rqst, uom, units)
else:
rqst.badRequest()
return
def get_ips_data_by_time(self, rqst, ipaddress, uom, units):
ips_manager = IpsManager()
addressjsondata = ips_manager.get_data(ipaddress, uom, units)
if addressjsondata is not None:
# send response:
rqst.sendJsonResponse(addressjsondata, 200)
else:
rqst.notFound()
def get_ips_list_json(self, rqst, uom, units):
response = "{not implemented yet.}"
rqst.sendJsonResponse(response, 200)
示例4: __init__
# 需要导入模块: from common.logger import Logger [as 别名]
# 或者: from common.logger.Logger import info [as 别名]
class IpsManager:
# Ips Manager: calls necessary managers and utilities to generate parameters for sql.
#
validPortNumbers = ()
def __init__(self):
self.g_config = GlobalConfig()
self.valid_port_numbers = self.g_config.get_ports()
self.date_time_field = self.g_config.get_db_datetime_name()
self.log = Logger().get('reportserver.manager.IpsManager.py')
def get_data(self, ipaddress, uom, unit):
self.log.info("Retrieving ipaddress data: " + str(ipaddress) + " uom: " + uom + " size: " + str(unit))
port_data = []
for port in self.valid_port_numbers:
results = self.get_json_by_ip(port, ipaddress, uom, unit)
items = utilities.process_data(results)
port_data.append({port:items})
port_json = {
'ipaddress': str(ipaddress),
'timespan': uom + "=" + str(unit),
'ports':port_data
}
return port_json
def get_json_by_ip(self, portnumber, ipaddress, uom, units):
begin_date_iso = dateTimeUtility.get_begin_date_iso(uom, units)
table_name = self.g_config.get_plugin_config(portnumber)['table']
date_time_field = self.g_config.get_db_datetime_name()
# query = query_db("SELECT * FROM %s where (datetime > '%s')" % (tableName, query_date_iso))
queryString = "SELECT * FROM %s where %s >= '%s' and peerAddress = '%s' order by id, %s" % (
table_name, date_time_field, begin_date_iso, ipaddress, date_time_field)
# args = (tableName, date_time_field, begin_date_iso)
self.log.info("queryString is: " + str(queryString))
# print ("args to use: " + str(args))
results = DatabaseHandler().query_db(queryString)
self.log.debug("results: " + str(results))
return results
示例5: NetworkListener
# 需要导入模块: from common.logger import Logger [as 别名]
# 或者: from common.logger.Logger import info [as 别名]
class NetworkListener(Thread):
def __init__(self, listening_address, config, framework):
super().__init__()
self._config = config
self._listening_address = listening_address
self._port = config['port']
self._framework = framework
self._session_socket = None
self._lock = Lock()
self._running = False
self.__connection_count = 0
self._logger = Logger().get('framework.networklistener.NetworkListener')
@property
def connection_count(self):
with self._lock:
return self.__connection_count
@connection_count.setter
def connection_count(self, val):
with self._lock:
self.__connection_count = val
# Override
def run(self):
self._running = True
self._logger.info('%s plugin listener started on port %d'
% (self._config['moduleClass'], self._port))
while self._running:
self._session_socket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
self._session_socket.setsockopt(
socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self._session_socket.bind((self._listening_address, self._port))
self._session_socket.listen(1)
self.start_listening(self._session_socket)
self._session_socket.close()
self.connection_count += 1
self._logger.info('%s plugin listener on port %d shutting down'
% (self._config['moduleClass'], self._port))
self._session_socket = None
def start_listening(self, local_socket):
try:
(new_socket, addr) = local_socket.accept()
if self._running:
self._logger.info('New connection from %s on port %d'
% (addr, self._port))
self._framework.spawn(new_socket, self._config)
except ConnectionAbortedError as e:
if not self._running:
return
raise e
except OSError as e:
if e.errno == 22 and not self._running:
return
raise e
except Exception as e:
self._logger.error('Error on connection: %s' % e)
raise e
def shutdown(self):
self._running = False
if self._session_socket:
if platform.system() == 'Linux':
self._session_socket.shutdown(socket.SHUT_RDWR)
else:
self._session_socket.close()
self.join()
示例6: PortsServiceHandler
# 需要导入模块: from common.logger import Logger [as 别名]
# 或者: from common.logger.Logger import info [as 别名]
class PortsServiceHandler():
def __init__(self):
self.log = Logger().get('reportserver.server.PortServiceHandler.PortServiceHandler')
def process(self, rqst, path_tokens, query_tokens):
uom = None
units = None
self.log.info("processing ports request:" + str(path_tokens) + str(query_tokens))
if len(query_tokens) > 0:
try:
time_period = utilities.validate_time_period(query_tokens)
uom = time_period[0]
units = time_period[1]
except ValueError:
rqst.badRequest(units)
return
# default if we aren't given valid uom and units
if uom is None or units is None:
uom = "days"
units = 1
if len(path_tokens) == 5:
portNbr = utilities.validate_port_number(path_tokens[4])
self.log.debug("requested: " + str(portNbr))
if portNbr is not None and 0 < portNbr < 9000:
self.get_port_data_by_time(rqst, portNbr, uom, units)
elif portNbr == None or "":
self.get_port_list_json(rqst, uom, units)
else:
rqst.badRequest()
return
elif len(path_tokens) == 4:
self.get_port_list_json(rqst, uom, units)
else:
rqst.badRequest()
return
def get_port_list_json(self,rqst, uom, units):
jsondata = self.construct_port_summary_list(rqst, uom, units)
rqst.sendJsonResponse(jsondata, 200)
def get_port_data_by_time(self, rqst, portnumber, uom, units):
portmgr = PortManager()
portjsondata = portmgr.getPort(portnumber, uom, units)
if portjsondata is not None:
# send response:
rqst.sendJsonResponse(portjsondata, 200)
else:
rqst.notFound()
def construct_port_summary_list(self, rqst, uom, units):
g_config = GlobalConfig()
plugins_dictionary = g_config.get_plugin_dictionary()
json_list = []
for key, val in plugins_dictionary.items():
json_list.append(self.construct_port_summary(rqst, val['port'], val['table'], uom, units))
return json_list
def construct_port_summary(self, rqst, portnumber, tablename, uom, units):
portmgr = PortManager()
port_attacks = portmgr.get_port_attack_count(tablename, uom, units)
unique_ips = portmgr.get_unique_ips(tablename, uom, units)
timespan = uom+"="+str(units)
response_json = {
'port': str(portnumber),
'total_attacks': str(port_attacks),
'unique_ipaddresses': str(unique_ips),
'timespan':timespan,
'rel_link': rqst.get_full_url_path() + "/ports/" + str(portnumber)+"?" + timespan
}
return response_json
示例7: WorldmapServiceHandler
# 需要导入模块: from common.logger import Logger [as 别名]
# 或者: from common.logger.Logger import info [as 别名]
class WorldmapServiceHandler():
def __init__(self):
self.log = Logger().get('reportserver.manager.WorldmapServiceManager.py')
self.global_config = GlobalConfig()
self.global_config.read_plugin_config()
self.global_config.read_global_config()
def process(self, rqst, path_tokens, query_tokens):
global have_basemap
if not have_basemap:
err_msg = \
('<html><head><title>WorldMap</title></head><body>'
'To enable WorldMap generation, please visit '
'<a href="https://recce7.github.io/">the documentation</a> and '
'follow the directions for installing the Basemap library.'
'</body></html>')
rqst.send_response(200)
#todo make this configurable for allow-origin
rqst.send_header("Access-Control-Allow-Origin","http://localhost:8000")
rqst.send_header('Content-Type', 'text/html')
rqst.send_header('Content-Length', len(err_msg))
rqst.end_headers()
rqst.flush_headers()
rqst.wfile.write(bytes(err_msg, "utf-8"))
rqst.wfile.flush()
return
uom = None
units = None
self.log.info("processing ipaddress request:" + str(path_tokens) + str(query_tokens))
try:
time_period = utilities.validate_time_period(query_tokens)
uom = time_period[0]
units = time_period[1]
except ValueError:
rqst.badRequest(units)
return
if len(path_tokens) >= 5:
rqst.badRequest()
return
else:
self.construct_worldmap(rqst, uom, units)
def construct_worldmap(self, rqst, uom, units):
#call to construct port list
#find unique ips by port
#merge the results togoether
#build the map
#probably want to look at the PortsServiceHandler.py or IpsServiceHandler.py to follow those patterns.
ip_map = pickle.loads(pickle_bytes)
pts = self.get_point_list(uom, units)
for pt in pts:
srclat, srclong = pt
x, y = ip_map(srclong, srclat)
plt.plot(x, y, 'o', color='#ff0000', ms=2.7, markeredgewidth=1.0)
plt.savefig('reportserver/worldmap.png', dpi=600)
img = Image.open('reportserver/worldmap.png')
draw = ImageDraw.Draw(img)
font = ImageFont.truetype(
"/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 175)
draw.text((50, 50), "Unique IP addresses: last %s %s" % (units, uom),
(0, 0, 0), font=font)
font = ImageFont.truetype(
"/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 125)
draw.text((50, 325), "Total: %s" % (len(pts)),
(0, 0, 0), font=font)
# draw = ImageDraw.Draw(img)
# draw = ImageDraw.Draw(img)
img.save("reportserver/worldmap.png")
rqst.sendPngResponse("reportserver/worldmap.png", 200)
def get_point_list(self, uom, units):
begin_date = dateTimeUtility.get_begin_date_iso(uom, units)
query_string = ('select lat,long '
'from ('
'select distinct lat,long,timestamp, ip '
'from ipInfo '
'where lat is not null '
'and long is not null '
'and datetime(timestamp) > datetime(\'' + begin_date + '\')'
');')
connection = sqlite3.connect(self.global_config['Database']['path'])
cursor = connection.cursor()
return cursor.execute(query_string).fetchall()
示例8: __init__
# 需要导入模块: from common.logger import Logger [as 别名]
# 或者: from common.logger.Logger import info [as 别名]
class Database:
def __init__(self):
self.global_config = GlobalConfig()
self.log = Logger().get('database.database.Database')
def create_default_database(self):
"""
Calls methods needed to create the database.
"""
self.create_db_dir()
self.create_db()
# Execute scripts BEFORE updating schema
run_db_scripts(self.global_config)
self.update_schema()
def create_db_dir(self):
"""
Creates the database directory if it doesn't already exist.
"""
# if database directory does not exist create it
db_path = self.global_config['Database']['path']
(db_dir, db_name) = ntpath.split(db_path)
if not os.path.isdir(db_dir):
self.log.info("Database directory not found, "
"creating database directory...")
os.mkdir(db_dir)
def create_db(self):
"""
Creates the database if it doesn't already exist.
"""
# if database file does not exist in the directory, create it
(db_dir, db_name) = ntpath.split(self.global_config['Database']['path'])
if not os.path.exists(self.global_config['Database']['path']):
self.log.info("Database file not found, creating database file...")
# this actually creates the database file
connection = sqlite3.connect(self.global_config['Database']['path'])
connection.close()
def update_schema(self):
"""
Updates the database when columns have been added to, or
removed from, the schema.
"""
# Create any new tables that have been added to the plugin
# config schema.
db_tables = DataValidator().get_tables()
cfg_tables = get_config_table_list(
self.global_config.get_ports(),
self.global_config.get_plugin_dictionary())
table_diff = list(set(cfg_tables) - set(db_tables))
self.create_non_exist_tables(table_diff)
# Populate the newly created tables with their column
# definitions.
DataValidator().update_tables_and_schema()
self.update_table_structure()
def create_non_exist_tables(self, table_diff):
"""
create tables that do not exist from the table difference between the current database and the configuration
"""
if len(table_diff) > 0:
for table in table_diff:
Table_Init.create_table(table, self.global_config)
self.log.info('Updated database schema, table names now match configuration.')
else:
self.log.info('Database Schema and Configuration table names already match.')
def create_dict_config_column_list(self):
"""
get a dictionary of tables and corresponding columns from the config
"""
config_column_lists = {}
for port in self.global_config.get_ports():
value = self.global_config.get_plugin_dictionary().get(port)
config_column_lists[value.get('table')] = value.get('tableColumns')
return config_column_lists
def create_dict_transformed_column_list(self, database_column_lists):
"""
returns only custom plugin defined columns from database schema i.e.
ignores default columns
"""
transformed_db_column_list = {}
for table in database_column_lists:
col_list = database_column_lists[table]
transformed_db_column_list[table] = []
# default column ids to ignore
default_list = []
for default in default_columns:
default_list.append(default[0])
for column in col_list:
# ignores the default columns
#.........这里部分代码省略.........
示例9: __init__
# 需要导入模块: from common.logger import Logger [as 别名]
# 或者: from common.logger.Logger import info [as 别名]
class _Framework:
def __init__(self, plugin_cfg_path, global_cfg_path):
self._global_config = GlobalConfig(plugin_cfg_path, global_cfg_path)
self._plugin_imports = {}
self._listener_list= {}
self._running_plugins_list = []
self._data_manager = None
self._shutting_down = False
self._log = None
self._pid = os.getpid()
def start(self):
self.set_shutdown_hook()
print('Press Ctrl+C to exit.')
if not self.drop_permissions():
return
self._global_config.read_global_config()
self.start_logging()
self._global_config.read_plugin_config()
self._data_manager = DataManager()
self._data_manager.start()
self.start_listeners()
def start_logging(self):
log_path = self._global_config['Framework']['logName']
log_level = self._global_config['Framework']['logLevel']
self._log = Logger(log_path, log_level).get('framework.frmwork.Framework')
self._log.info('RECCE7 started (PID %d)' % self._pid)
@staticmethod
def drop_permissions():
if os.getuid() != 0:
return True
dist_name = os.getenv('RECCE7_OS_DIST')
users_dict = {
'centos': ('nobody', 'nobody'),
'debian': ('nobody', 'nogroup')
}
if dist_name not in users_dict:
print(
'Unable to lower permission level - not continuing as\n'
'superuser. Please set the environment variable\n'
'RECCE7_OS_DIST to one of:\n\tcentos\n\tdebian\n'
'or rerun as a non-superuser.')
return False
lowperm_user = users_dict[dist_name]
nobody_uid = pwd.getpwnam(lowperm_user[0]).pw_uid
nogroup_gid = grp.getgrnam(lowperm_user[1]).gr_gid
os.setgroups([])
os.setgid(nogroup_gid)
os.setuid(nobody_uid)
os.umask(0o077)
return True
def create_import_entry(self, port, name, clsname):
imp = import_module('plugins.' + name)
self._plugin_imports[port] = getattr(imp, clsname)
def start_listeners(self):
ports = self._global_config.get_ports()
for port in ports:
plugin_config = self._global_config.get_plugin_config(port)
module = plugin_config['module']
clsname = plugin_config['moduleClass']
self.create_import_entry(port, module, clsname)
address = self._global_config['Framework']['listeningAddress']
listener = NetworkListener(address, plugin_config, self)
listener.start()
self._listener_list[port] = listener
def set_shutdown_hook(self):
signal.signal(signal.SIGINT, self.shutdown)
def shutdown(self, *args):
self._shutting_down = True
self._log.debug('Shutting down network listeners')
for listener in self._listener_list.values():
listener.shutdown()
self._log.debug('Shutting down plugins')
for plugin in self._running_plugins_list:
plugin.shutdown()
self._log.debug('Shutting down data manager')
self._data_manager.shutdown()
print('Goodbye!')
#
# Framework API
#
#.........这里部分代码省略.........