def create_graph(out, graph_name, extension): if not find_executable(DOT_CMD): raise InvalidOperation('GINAUD0030E') DOT_FILE = "/var/log/wok/%s.dot" % graph_name f = open(DOT_FILE, 'w') f.write('digraph G {\n') str_out = out[0] out_list = str_out.split('\n') for each in out_list: each_list = each.split(' ') if len(each_list) == 2: f.write('\t' + '"' + each_list[0] + '"' + ' -> ' + '"' + each_list[1] + '"' + ';\n') f.write('}') f.close() dot_format = "-T" + extension graph_file = \ os.path.join(get_log_download_path(), graph_name + '.' + extension) cmd = [DOT_CMD, dot_format, '-o', graph_file, DOT_FILE] output, error, rc = run_command(cmd) if rc: raise InvalidOperation('GINAUD0027E') os.remove(DOT_FILE)
# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA import os import subprocess from mkgraph import create_graph, DOT_CMD from wok.config import get_log_download_path from wok.exception import OperationFailed, InvalidParameter, InvalidOperation audit_summary_report = \ "%s/audit_summary_report.txt" % get_log_download_path() class GraphsModel(object): def __init__(self, **kargs): pass @staticmethod def is_feature_available(): return os.path.exists(DOT_CMD) def get_list(self, _filter): try: filter = str(_filter) params = filter.split(',') if len(params) != 4:
def __init__(self, options): # Update config.config with the command line values # So the whole application will have access to accurate values for sec in config.config.sections(): for item in config.config.options(sec): if hasattr(options, item): config.config.set(sec, item, str(getattr(options, item))) # Check proxy configuration if not hasattr(options, 'no_proxy') or not options.no_proxy: check_proxy_config() make_dirs = [ os.path.abspath(config.get_log_download_path()), os.path.abspath(configParser.get("logging", "log_dir")), os.path.dirname(os.path.abspath(options.access_log)), os.path.dirname(os.path.abspath(options.error_log)), os.path.dirname(os.path.abspath(config.get_object_store())), os.path.abspath(config.get_wstokens_dir()) ] for directory in make_dirs: if not os.path.isdir(directory): os.makedirs(directory) self.configObj = WokConfig() # We'll use the session timeout (= 10 minutes) and the # nginx timeout (= 10 minutes). This monitor isn't involved # in anything other than monitor the timeout of the connection, # thus it is safe to unsubscribe. cherrypy.engine.timeout_monitor.unsubscribe() cherrypy.tools.nocache = cherrypy.Tool('on_end_resource', set_no_cache) cherrypy.tools.wokauth = cherrypy.Tool('before_handler', auth.wokauth) # Setting host to 127.0.0.1. This makes wok run # as a localhost app, inaccessible to the outside # directly. You must go through the proxy. cherrypy.server.socket_host = '127.0.0.1' cherrypy.server.socket_port = options.cherrypy_port max_body_size_in_bytes = eval(options.max_body_size) * 1024 cherrypy.server.max_request_body_size = max_body_size_in_bytes cherrypy.log.access_file = options.access_log cherrypy.log.error_file = options.error_log logLevel = LOGGING_LEVEL.get(options.log_level, logging.INFO) dev_env = options.environment != 'production' # Enable cherrypy screen logging if running environment # is not 'production' if dev_env: cherrypy.log.screen = True # close standard file handlers because we are going to use a # watchedfiled handler, otherwise we will have two file handlers # pointing to the same file, duplicating log enries for handler in cherrypy.log.access_log.handlers[:]: if isinstance(handler, logging.FileHandler): cherrypy.log.access_log.removeHandler(handler) for handler in cherrypy.log.error_log.handlers[:]: if isinstance(handler, logging.FileHandler): cherrypy.log.error_log.removeHandler(handler) # set logLevel cherrypy.log.access_log.setLevel(logLevel) cherrypy.log.error_log.setLevel(logLevel) # Create handler to access log file h = logging.handlers.WatchedFileHandler(options.access_log, 'a', delay=1) h.setLevel(logLevel) h.setFormatter(cherrypy._cplogging.logfmt) # Add access log file to cherrypy configuration cherrypy.log.access_log.addHandler(h) # Create handler to error log file h = SafeWatchedFileHandler(options.error_log, 'a', delay=1) h.setLevel(logLevel) h.setFormatter(cherrypy._cplogging.logfmt) # Add error log file to cherrypy configuration cherrypy.log.error_log.addHandler(h) # start request logger self.reqLogger = RequestLogger() # Handling running mode if not dev_env: cherrypy.config.update({'environment': 'production'}) for ident, node in sub_nodes.items(): if node.url_auth: cfg = self.configObj ident = "/%s" % ident cfg[ident] = {'tools.wokauth.on': True} cherrypy.tree.mount(WokRoot(model.Model(), dev_env), options.server_root, self.configObj) self._start_websocket_server() self._load_plugins() cherrypy.lib.sessions.init()
def __init__(self): logger = logging.getLogger(WOK_REQUEST_LOGGER) self.baseFile = logger.handlers[0].baseFilename self.downloadDir = get_log_download_path()
def cleanLogFiles(self): globexpr = "%s/*.txt" % get_log_download_path() remove_old_files(globexpr, LOG_DOWNLOAD_TIMEOUT)
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA import re from wok.config import get_log_download_path from wok.utils import run_command from wok.exception import InvalidParameter from wok.exception import OperationFailed audit_summary_report = "%s/audit_summary_report.txt" % get_log_download_path() class ReportsModel(object): def __init__(self, **kargs): pass def get_list(self, _filter=None): try: filter = str(_filter) report = [] summary_cmd = ['aureport'] if _filter is not None: options = filter.split(",") for item in options: each_options = item.split(' ')
def __init__(self, options): # Launch reverse proxy start_proxy(options) make_dirs = [ os.path.abspath(config.get_log_download_path()), os.path.abspath(configParser.get("logging", "log_dir")), os.path.dirname(os.path.abspath(options.access_log)), os.path.dirname(os.path.abspath(options.error_log)), os.path.dirname(os.path.abspath(config.get_object_store())) ] for directory in make_dirs: if not os.path.isdir(directory): os.makedirs(directory) self.configObj = WokConfig() # We'll use the session timeout (= 10 minutes) and the # nginx timeout (= 10 minutes). This monitor isn't involved # in anything other than monitor the timeout of the connection, # thus it is safe to unsubscribe. cherrypy.engine.timeout_monitor.unsubscribe() cherrypy.tools.nocache = cherrypy.Tool('on_end_resource', set_no_cache) cherrypy.tools.wokauth = cherrypy.Tool('before_handler', auth.wokauth) # Setting host to 127.0.0.1. This makes wok run # as a localhost app, inaccessible to the outside # directly. You must go through the proxy. cherrypy.server.socket_host = '127.0.0.1' cherrypy.server.socket_port = options.cherrypy_port max_body_size_in_bytes = eval(options.max_body_size) * 1024 cherrypy.server.max_request_body_size = max_body_size_in_bytes cherrypy.log.access_file = options.access_log cherrypy.log.error_file = options.error_log logLevel = LOGGING_LEVEL.get(options.log_level, logging.DEBUG) dev_env = options.environment != 'production' # Enable cherrypy screen logging if running environment # is not 'production' if dev_env: cherrypy.log.screen = True # close standard file handlers because we are going to use a # watchedfiled handler, otherwise we will have two file handlers # pointing to the same file, duplicating log enries for handler in cherrypy.log.access_log.handlers[:]: if isinstance(handler, logging.FileHandler): cherrypy.log.access_log.removeHandler(handler) for handler in cherrypy.log.error_log.handlers[:]: if isinstance(handler, logging.FileHandler): cherrypy.log.error_log.removeHandler(handler) # Create handler to access log file h = logging.handlers.WatchedFileHandler(options.access_log, 'a', delay=1) h.setLevel(logLevel) h.setFormatter(cherrypy._cplogging.logfmt) # Add access log file to cherrypy configuration cherrypy.log.access_log.addHandler(h) # Create handler to error log file h = SafeWatchedFileHandler(options.error_log, 'a', delay=1) h.setLevel(logLevel) h.setFormatter(cherrypy._cplogging.logfmt) # Add error log file to cherrypy configuration cherrypy.log.error_log.addHandler(h) # start request logger self.reqLogger = RequestLogger() # only add logrotate if wok is installed if paths.installed: # redefine logrotate configuration according to wok.conf data = Template(LOGROTATE_TEMPLATE) data = data.safe_substitute( log_dir=configParser.get("logging", "log_dir"), log_size=configParser.get("logging", "log_size") ) # Write file to be used for nginx. config_file = open(os.path.join(paths.logrotate_dir, "wokd"), "w") config_file.write(data) config_file.close() # Handling running mode if not dev_env: cherrypy.config.update({'environment': 'production'}) if hasattr(options, 'model'): model_instance = options.model else: model_instance = model.Model() for ident, node in sub_nodes.items(): if node.url_auth: cfg = self.configObj ident = "/%s" % ident cfg[ident] = {'tools.wokauth.on': True} self.app = cherrypy.tree.mount(WokRoot(model_instance, dev_env), config=self.configObj) self._load_plugins(options) # Terminate proxy when cherrypy server is terminated cherrypy.engine.subscribe('exit', terminate_proxy) cherrypy.lib.sessions.init()
def __init__(self, options): # Launch reverse proxy start_proxy(options) make_dirs = [ os.path.abspath(config.get_log_download_path()), os.path.abspath(configParser.get("logging", "log_dir")), os.path.dirname(os.path.abspath(options.access_log)), os.path.dirname(os.path.abspath(options.error_log)), os.path.dirname(os.path.abspath(config.get_object_store())), ] for directory in make_dirs: if not os.path.isdir(directory): os.makedirs(directory) self.configObj = WokConfig() # We'll use the session timeout (= 10 minutes) and the # nginx timeout (= 10 minutes). This monitor isn't involved # in anything other than monitor the timeout of the connection, # thus it is safe to unsubscribe. cherrypy.engine.timeout_monitor.unsubscribe() cherrypy.tools.nocache = cherrypy.Tool("on_end_resource", set_no_cache) cherrypy.tools.wokauth = cherrypy.Tool("before_handler", auth.wokauth) # Setting host to 127.0.0.1. This makes wok run # as a localhost app, inaccessible to the outside # directly. You must go through the proxy. cherrypy.server.socket_host = "127.0.0.1" cherrypy.server.socket_port = options.cherrypy_port max_body_size_in_bytes = eval(options.max_body_size) * 1024 cherrypy.server.max_request_body_size = max_body_size_in_bytes cherrypy.log.access_file = options.access_log cherrypy.log.error_file = options.error_log logLevel = LOGGING_LEVEL.get(options.log_level, logging.DEBUG) dev_env = options.environment != "production" # Enable cherrypy screen logging if running environment # is not 'production' if dev_env: cherrypy.log.screen = True # close standard file handlers because we are going to use a # watchedfiled handler, otherwise we will have two file handlers # pointing to the same file, duplicating log enries for handler in cherrypy.log.access_log.handlers[:]: if isinstance(handler, logging.FileHandler): cherrypy.log.access_log.removeHandler(handler) for handler in cherrypy.log.error_log.handlers[:]: if isinstance(handler, logging.FileHandler): cherrypy.log.error_log.removeHandler(handler) # Create handler to access log file h = logging.handlers.WatchedFileHandler(options.access_log, "a", delay=1) h.setLevel(logLevel) h.setFormatter(cherrypy._cplogging.logfmt) # Add access log file to cherrypy configuration cherrypy.log.access_log.addHandler(h) # Create handler to error log file h = SafeWatchedFileHandler(options.error_log, "a", delay=1) h.setLevel(logLevel) h.setFormatter(cherrypy._cplogging.logfmt) # Add error log file to cherrypy configuration cherrypy.log.error_log.addHandler(h) # start request logger self.reqLogger = RequestLogger() # only add logrotate if wok is installed if paths.installed: # redefine logrotate configuration according to wok.conf logrotate_file = os.path.join(paths.logrotate_dir, "wokd.in") with open(logrotate_file) as template: data = template.read() data = Template(data) data = data.safe_substitute(log_dir=configParser.get("logging", "log_dir")) # Write file to be used for nginx. config_file = open(os.path.join(paths.logrotate_dir, "wokd"), "w") config_file.write(data) config_file.close() # Handling running mode if not dev_env: cherrypy.config.update({"environment": "production"}) if hasattr(options, "model"): model_instance = options.model else: model_instance = model.Model() for ident, node in sub_nodes.items(): if node.url_auth: cfg = self.configObj ident = "/%s" % ident cfg[ident] = {"tools.wokauth.on": True} self.app = cherrypy.tree.mount(WokRoot(model_instance, dev_env), config=self.configObj) self._load_plugins(options) # Terminate proxy when cherrypy server is terminated cherrypy.engine.subscribe("exit", terminate_proxy) cherrypy.lib.sessions.init()
def __init__(self, options): # Check proxy configuration check_proxy_config() make_dirs = [ os.path.abspath(config.get_log_download_path()), os.path.abspath(configParser.get("logging", "log_dir")), os.path.dirname(os.path.abspath(options.access_log)), os.path.dirname(os.path.abspath(options.error_log)), os.path.dirname(os.path.abspath(config.get_object_store())) ] for directory in make_dirs: if not os.path.isdir(directory): os.makedirs(directory) self.configObj = WokConfig() # We'll use the session timeout (= 10 minutes) and the # nginx timeout (= 10 minutes). This monitor isn't involved # in anything other than monitor the timeout of the connection, # thus it is safe to unsubscribe. cherrypy.engine.timeout_monitor.unsubscribe() cherrypy.tools.nocache = cherrypy.Tool('on_end_resource', set_no_cache) cherrypy.tools.wokauth = cherrypy.Tool('before_handler', auth.wokauth) # Setting host to 127.0.0.1. This makes wok run # as a localhost app, inaccessible to the outside # directly. You must go through the proxy. cherrypy.server.socket_host = '127.0.0.1' cherrypy.server.socket_port = options.cherrypy_port max_body_size_in_bytes = eval(options.max_body_size) * 1024 cherrypy.server.max_request_body_size = max_body_size_in_bytes cherrypy.log.access_file = options.access_log cherrypy.log.error_file = options.error_log logLevel = LOGGING_LEVEL.get(options.log_level, logging.DEBUG) dev_env = options.environment != 'production' # Enable cherrypy screen logging if running environment # is not 'production' if dev_env: cherrypy.log.screen = True # close standard file handlers because we are going to use a # watchedfiled handler, otherwise we will have two file handlers # pointing to the same file, duplicating log enries for handler in cherrypy.log.access_log.handlers[:]: if isinstance(handler, logging.FileHandler): cherrypy.log.access_log.removeHandler(handler) for handler in cherrypy.log.error_log.handlers[:]: if isinstance(handler, logging.FileHandler): cherrypy.log.error_log.removeHandler(handler) # Create handler to access log file h = logging.handlers.WatchedFileHandler(options.access_log, 'a', delay=1) h.setLevel(logLevel) h.setFormatter(cherrypy._cplogging.logfmt) # Add access log file to cherrypy configuration cherrypy.log.access_log.addHandler(h) # Create handler to error log file h = SafeWatchedFileHandler(options.error_log, 'a', delay=1) h.setLevel(logLevel) h.setFormatter(cherrypy._cplogging.logfmt) # Add error log file to cherrypy configuration cherrypy.log.error_log.addHandler(h) # start request logger self.reqLogger = RequestLogger() # Handling running mode if not dev_env: cherrypy.config.update({'environment': 'production'}) if hasattr(options, 'model'): model_instance = options.model else: model_instance = model.Model() for ident, node in sub_nodes.items(): if node.url_auth: cfg = self.configObj ident = "/%s" % ident cfg[ident] = {'tools.wokauth.on': True} self.app = cherrypy.tree.mount(WokRoot(model_instance, dev_env), options.server_root, self.configObj) self._load_plugins(options) cherrypy.lib.sessions.init()