def main(*args, **keywords): if os.path.basename(sys.argv[0]) != 'cl-core': parser = cert_cmd.parse(full=False) args, unknown_args = parser.parse_known_args() args.method = '_temp_' else: parser = cert_cmd.parse(full=True) args, unknown_args = parser.parse_known_args() if args.method: parser = cert_cmd.parse(full=False) args, unknown_args = parser.parse_known_args() if not args.method: if unknown_args: args = parser.parse_args() if args.help and not args.method: parser.print_help() return 0 from calculate.core.datavars import DataVarsCore ob = DataVarsCore() ob.importCore() # set var env if not ob.flIniFile(): sys.exit(1) # cl_wsdl = ob.Get('cl_wsdl') cl_wsdl = ob.Get('cl_wsdl_available') data_path = ob.Get('cl_core_data') local_data_path = ob.Get('cl_core_local_data') certbase = ob.Get('cl_core_database') serv_certbase = ob.Get('cl_core_serv_database') rights = ob.Get('cl_core_rights') group_rights = ob.Get('cl_core_group_rights') sids = ob.Get('cl_core_sids_path') pids = ob.Get('cl_core_pids_path') sids_pids = ob.Get('cl_core_sids_pids') sids_file = ob.Get('cl_core_sids_file') pids_file = ob.Get('cl_core_pids_file') max_sid = ob.Get('cl_core_max_sid') max_pid = ob.Get('cl_core_max_pid') cert_path = ob.Get('cl_core_cert_path') cert = ob.Get('cl_core_cert') key = ob.Get('cl_core_key') cl_ver = ob.Get('cl_ver') log_path_var = ob.Get('cl_log_path') if args.version: print cl_ver return 0 if os.getuid(): if any("sbin" in x for x in sys.argv[0].split('/')): print _("User must be root") sys.exit(1) elif ob.Get('cl_ebuild_phase') == '': import logging import logging.handlers log_path = args.log_path if args.log_path else log_path_var if not os.path.exists(log_path): os.makedirs(log_path) LOG_FILENAME = os.path.join(log_path, 'logging_cl_core.out') file_logger = logging.getLogger('MyLogger') file_logger.setLevel(logging.DEBUG) # Add the log message handler to the logger handler = logging.handlers.RotatingFileHandler( LOG_FILENAME, maxBytes=10000000, backupCount=3) file_logger.addHandler(handler) # debug if args.debug: logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger('soaplib.wsgi') logger.setLevel(logging.DEBUG) from urllib2 import URLError from traceback import print_exc if not args.method: try: port = args.port if args.check: import bootstrap bootstrap.check(cert, key, cert_path, data_path, certbase, args) return 0 if args.bootstrap_user_name: import bootstrap bootstrap.init(cert, key, cert_path, data_path, certbase, args, \ port, args.bootstrap_user_name) return 0 if args.revoke_cert_id: cert_cmd.revoke_signed_cert(args.revoke_cert_id, data_path, cert_path) return 0 if args.host or args.gen_root_cert or args.root_host or \ args.use_root_cert: cert_cmd.check_server_certificate(cert, key, cert_path, args, port) return 0 if args.id_client_req: cert_cmd.sing_req_by_server(args.id_client_req,cert_path,data_path) return 0 if args.Id: cert_cmd.view_cert(args, certbase, data_path, rights, group_rights) return 0 if args.cert_id: cert_cmd.view_signed_cert(args, serv_certbase, data_path) return 0 if args.req_id: cert_cmd.view_client_request(args, certbase, data_path) return 0 # Sign request by root certificate if args.id_server_req: cert_cmd.sing_req_by_root(args, cert_path, data_path) return 0 if args.id_del_req or args.id_del_client_req: cert_cmd.del_request(args.id_del_req, args.id_del_client_req, serv_certbase, certbase, data_path) return 0 except URLError, e: fd = open(LOG_FILENAME,'a') file_logger.debug(print_exc(file=fd)) fd.close() print e
def call_method(metaObject, args, unknown_args, colorPrint): """ Function for call method through metaObject and args """ method_name = args.method stdin_passwd = args.stdin_passwd method_view_name = method_name + "_view" metaObject.no_progress = args.no_progress metaObject.gui_progress = args.gui_progress metaObject.gui_warning = args.gui_warning view_obj = ViewInfo() view_obj.step = None view_obj.expert = True view_obj.brief = None view_obj.onlyhelp = False try: view = getattr(metaObject, method_view_name)(0, view_obj) except AttributeError: colorPrint.printERROR(_("Method not found: ") + method_name) return None method_parser = get_method_argparser(view, args, cl_core=True) param_object = create_param_object(view) try: unknown_args = method_parser.fixBoolVariables(unknown_args) args, unknown_args = method_parser.parse_known_args(unknown_args) no_questions = args.no_questions except SystemExit as e: return 1 except Exception as e: import traceback for i in apply(traceback.format_exception, sys.exc_info()): sys.stderr.write(i) sys.stderr.flush() raise for i in unknown_args: if i.startswith("-"): if i in parse(True).parse_known_args()[1]: _print(_("Unknown parameter"), i) return 1 else: _print(_("Unknown argument"), i) return 1 param_object, steps = collect_object(None, param_object, view, args, stdin_passwd=stdin_passwd) if view.has_brief: setattr(param_object, "CheckOnly", True) check_res = {} while True: method_result = getattr(metaObject, method_name)(0, param_object) if not method_result: print _("Method not available") return None if method_result[0].type and method_result[0].type != "pid": check_res = check_result_msg(method_result, view, check_res) if not check_res: return None else: param_object = get_param_pwd(check_res, view, param_object, stdin_passwd=stdin_passwd) else: break view_obj = ViewInfo() view_obj.step = None view_obj.expert = True view_obj.brief = True view_obj.onlyhelp = False try: view = getattr(metaObject, method_view_name)(0, view_obj) except AttributeError: colorPrint.printERROR(_("Method not found: ") + method_name) print_brief(view, steps.label) if not no_questions: while True: try: ask = raw_input("\n" + _("Run process? (yes/no): ")) except KeyboardInterrupt: ask = "no" print if ask.lower() in ["n", "no"]: colorPrint.printERROR(_("Manually interrupted")) return None if ask.lower() in ["y", "yes"]: break setattr(param_object, "CheckOnly", False) try: method_result = getattr(metaObject, method_name)(0, param_object) except VariableError, e: _print(e) return None