def _get_display(my): WebContainer.set_security(FakeSecurity()) page = my.get_page_widget() # create some singletons and store in container cmd_delegator = WebContainer.get_cmd_delegator() # add the event container event_container = WebContainer.get_event_container() from pyasm.widget import TopWdg, BottomWdg top = TopWdg() bottom = BottomWdg() page = my.get_page_widget() web = WebContainer.get_web() from widget import Widget widget = Widget() widget.add(top) widget.add(page) # widget.add( my.get_form_wdg() ) widget.add(bottom) # widget.add(warning_report) widget.add(cmd_delegator) # create a web app and run it through the pipeline from web_app import WebApp web_app = WebApp() return web_app.get_display(widget)
def handle_guest_security(self, security): # skip storing current security since it failed Site.set_site("default", store_security=False) try: WebContainer.set_security(security) security.login_as_guest() ticket_key = security.get_ticket_key() web = WebContainer.get_web() web.set_cookie("login_ticket", ticket_key) access_manager = security.get_access_manager() xml = Xml() xml.read_string(''' <rules> <rule column="login" value="{$LOGIN}" search_type="sthpw/login" access="deny" op="!=" group="search_filter"/> </rules> ''') access_manager.add_xml_rules(xml) finally: Site.pop_site(pop_security=False)
def _get_display(my): WebContainer.set_security(FakeSecurity()) page = my.get_page_widget() # create some singletons and store in container cmd_delegator = WebContainer.get_cmd_delegator() # add the event container event_container = WebContainer.get_event_container() from pyasm.widget import TopWdg, BottomWdg top = TopWdg() bottom = BottomWdg() page = my.get_page_widget() web = WebContainer.get_web() from widget import Widget widget = Widget() widget.add(top) widget.add(page) #widget.add( my.get_form_wdg() ) widget.add(bottom) #widget.add(warning_report) widget.add(cmd_delegator) # create a web app and run it through the pipeline from web_app import WebApp web_app = WebApp() return web_app.get_display(widget)
def handle_guest_security(self, security): # skip storing current security since it failed Site.set_site("default", store_security=False) try: WebContainer.set_security(security) security.login_as_guest() ticket_key = security.get_ticket_key() web = WebContainer.get_web() web.set_cookie("login_ticket", ticket_key) access_manager = security.get_access_manager() xml = Xml() xml.read_string(''' <rules> <rule column="login" value="{$LOGIN}" search_type="sthpw/login" access="deny" op="!=" group="search_filter"/> </rules> ''') access_manager.add_xml_rules(xml) finally: Site.pop_site(pop_security=False)
def handle_security(my, security): # set the seucrity object WebContainer.set_security(security) # see if there is an override web = WebContainer.get_web() ticket_key = web.get_form_value("login_ticket") # attempt to login in with a ticket if not ticket_key: ticket_key = web.get_cookie("login_ticket") # We can define another place to look at ticket values and use # that. ie: Drupal session key session_key = Config.get_value("security", "session_key") login = web.get_form_value("login") password = web.get_form_value("password") if session_key: ticket_key = web.get_cookie(session_key) if ticket_key: security.login_with_session(ticket_key, add_access_rules=False) elif login and password: if login == "guest": pass else: from pyasm.widget import WebLoginCmd login_cmd = WebLoginCmd() login_cmd.execute() ticket_key = security.get_ticket_key() # clear the password web.set_form_value('password','') elif ticket_key: security.login_with_ticket(ticket_key, add_access_rules=False) if not security.is_logged_in(): reset_password = web.get_form_value("reset_password") == 'true' if reset_password: from tactic.ui.widget import ResetPasswordCmd reset_cmd = ResetPasswordCmd(reset=True) try: reset_cmd.execute() except TacticException, e: print "Reset failed. %s" %e.__str__() else: from pyasm.widget import WebLoginCmd login_cmd = WebLoginCmd() login_cmd.execute() ticket_key = security.get_ticket_key()
def handle_guest_security(my, security): WebContainer.set_security(security) security.login_as_guest() ticket_key = security.get_ticket_key() web = WebContainer.get_web() web.set_cookie("login_ticket", ticket_key) access_manager = security.get_access_manager() xml = Xml() xml.read_string(''' <rules> <rule column="login" value="{$LOGIN}" search_type="sthpw/login" access="deny" op="!=" group="search_filter"/> </rules> ''') access_manager.add_xml_rules(xml)
def handle_guest_security(my, security): WebContainer.set_security(security) security.login_as_guest() ticket_key = security.get_ticket_key() web = WebContainer.get_web() web.set_cookie("login_ticket", ticket_key) access_manager = security.get_access_manager() xml = Xml() xml.read_string(''' <rules> <rule column="login" value="{$LOGIN}" search_type="sthpw/login" access="deny" op="!=" group="search_filter"/> </rules> ''') access_manager.add_xml_rules(xml)
class BaseAppServer(Base): '''The base application server class that handles the top level processing of a given page. Different applications will derive off of this class to implement how the resulting html will go to the server''' ONLOAD_EVENT = "body_onload" if PROFILE: profile.object = None def __init__(my): my.top = None my.hash = None super(BaseAppServer,my).__init__() def writeln(my, string): my.buffer.write(string) def get_display(my): profile_flag = False if profile_flag: BaseAppServer.profile.object = my if os.name == 'nt': path = "C:/sthpw/profile" else: path = "/tmp/sthpw/temp/profile" profile.run( "from pyasm.web.app_server import BaseAppServer; BaseAppServer.profile()", path) p = pstats.Stats(path) p.sort_stats('cumulative').print_stats(30) print "*"*30 p.sort_stats('time').print_stats(30) else: my.execute() value = WebContainer.get_buffer().getvalue() WebContainer.clear_buffer() return value def profile(): my = BaseAppServer.profile.object my.execute() profile = staticmethod(profile) def execute(my): my.buffer = cStringIO.StringIO() try: try: # clear the main container for this thread Container.create() # clear the buffer WebContainer.clear_buffer() # initialize the web environment object and register it adapter = my.get_adapter() WebContainer.set_web(adapter) # get the display my._get_display() except SetupException, e: '''Display setup exception in the interface''' print "Setup exception: ", e.__str__() DbContainer.rollback_all() ExceptionLog.log(e) my.writeln("<h3>Tactic Setup Error</h3>" ) my.writeln("<pre>" ) my.writeln(e.__str__() ) my.writeln("</pre>" ) except DatabaseException, e: from tactic.ui.startup import DbConfigPanelWdg config_wdg = DbConfigPanelWdg() my.writeln("<pre>") my.writeln(config_wdg.get_buffer_display()) my.writeln("</pre>") except Exception, e: stack_trace = ExceptionLog.get_stack_trace(e) print stack_trace my.writeln("<pre>") my.writeln(stack_trace) my.writeln("</pre>") # it is possible that the security object was not set security = Environment.get_security() if not security: security = Security() WebContainer.set_security(security) log = None # ensure that database connections are rolled back try: DbContainer.rollback_all() except Exception, e2: print "Error: Could not rollback: ", e2.__str__() my.writeln("Error: Could not rollback: '%s'" % e2.__str__() ) stack_trace = ExceptionLog.get_stack_trace(e2) print stack_trace my.writeln("<pre>") my.writeln(stack_trace) my.writeln("</pre>") raise e
def handle_security(my, security, allow_guest=False): # set the seucrity object WebContainer.set_security(security) # see if there is an override web = WebContainer.get_web() ticket_key = web.get_form_value("login_ticket") # attempt to login in with a ticket if not ticket_key: ticket_key = web.get_cookie("login_ticket") # We can define another place to look at ticket values and use # that. ie: Drupal session key session_key = Config.get_value("security", "session_key") login = web.get_form_value("login") password = web.get_form_value("password") site_obj = Site.get() path_info = site_obj.get_request_path_info() if path_info: site = path_info['site'] if site == "default": site = web.get_form_value("site") if not site: site = "default" else: site = web.get_form_value("site") if session_key: ticket_key = web.get_cookie(session_key) if ticket_key: security.login_with_session(ticket_key, add_access_rules=False) elif login and password: # get the site for this user login_site = site_obj.get_by_login(login) if login_site: site = login_site if site: site_obj.set_site(site) if login == "guest": pass else: login_cmd = WebLoginCmd() login_cmd.execute() ticket_key = security.get_ticket_key() elif ticket_key: if site: site_obj.set_site(site) login = security.login_with_ticket(ticket_key, add_access_rules=False, allow_guest=allow_guest) if not security.is_logged_in(): reset_password = web.get_form_value("reset_password") == 'true' if reset_password: from tactic.ui.widget import ResetPasswordCmd reset_cmd = ResetPasswordCmd(reset=True) try: reset_cmd.execute() except TacticException, e: print "Reset failed. %s" % e.__str__() # FIXME: not sure why this is here??? """
def handle_security(my, security, allow_guest=False): # set the seucrity object WebContainer.set_security(security) # see if there is an override web = WebContainer.get_web() ticket_key = web.get_form_value("login_ticket") # attempt to login in with a ticket if not ticket_key: ticket_key = web.get_cookie("login_ticket") # We can define another place to look at ticket values and use # that. ie: Drupal session key session_key = Config.get_value("security", "session_key") login = web.get_form_value("login") password = web.get_form_value("password") site_obj = Site.get() path_info = site_obj.get_request_path_info() if path_info: site = path_info['site'] if site == "default": site = web.get_form_value("site") if not site: site = "default" else: site = web.get_form_value("site") if session_key: ticket_key = web.get_cookie(session_key) if ticket_key: security.login_with_session(ticket_key, add_access_rules=False) elif login and password: # get the site for this user login_site = site_obj.get_by_login(login) if login_site: site = login_site if site: site_obj.set_site(site) if login == "guest": pass else: from web_login_cmd import WebLoginCmd login_cmd = WebLoginCmd() login_cmd.execute() ticket_key = security.get_ticket_key() elif ticket_key: if site: site_obj.set_site(site) login = security.login_with_ticket(ticket_key, add_access_rules=False, allow_guest=allow_guest) if not security.is_logged_in(): reset_password = web.get_form_value("reset_password") == 'true' if reset_password: from tactic.ui.widget import ResetPasswordCmd reset_cmd = ResetPasswordCmd(reset=True) try: reset_cmd.execute() except TacticException, e: print "Reset failed. %s" %e.__str__() else: from web_login_cmd import WebLoginCmd login_cmd = WebLoginCmd() login_cmd.execute() ticket_key = security.get_ticket_key()
def execute(self): self.buffer = cStringIO.StringIO() error = None try: try: # clear the main container for this thread Container.create() # clear the buffer WebContainer.clear_buffer() # initialize the web environment object and register it adapter = self.get_adapter() WebContainer.set_web(adapter) # get the display self._get_display() except SetupException as e: '''Display setup exception in the interface''' print("Setup exception: ", e.__str__()) DbContainer.rollback_all() ExceptionLog.log(e) self.writeln("<h3>Tactic Setup Error</h3>") self.writeln("<pre>") self.writeln(e.__str__()) self.writeln("</pre>") error = "405: TACTIC Setup Error" except DatabaseException as e: from tactic.ui.startup import DbConfigPanelWdg config_wdg = DbConfigPanelWdg() self.writeln("<pre>") self.writeln(config_wdg.get_buffer_display()) self.writeln("</pre>") error = "405: TACTIC Database Error" except Exception as e: stack_trace = ExceptionLog.get_stack_trace(e) #print(stack_trace) self.writeln("<pre>") self.writeln(stack_trace) self.writeln("</pre>") error = "405 %s" % str(e) # it is possible that the security object was not set security = Environment.get_security() if not security: security = Security() WebContainer.set_security(security) log = None # ensure that database connections are rolled back try: DbContainer.rollback_all() except Exception as e2: print("Error: Could not rollback: ", e2.__str__()) self.writeln("Error: Could not rollback: '%s'" % e2.__str__()) stack_trace = ExceptionLog.get_stack_trace(e2) print(stack_trace) self.writeln("<pre>") self.writeln(stack_trace) self.writeln("</pre>") raise e #return try: # WARNING: if this call causes an exception, the error # will be obscure log = ExceptionLog.log(e) except Exception as e2: print("Error: Could not log exception: ", e2.__str__()) self.writeln("Error '%s': Could not log exception" % e2.__str__()) stack_trace = ExceptionLog.get_stack_trace(e2) print(stack_trace) self.writeln("<pre>") self.writeln(stack_trace) self.writeln("</pre>") return self.writeln("<pre>") self.writeln( "An Error has occurred. Please see your Tactic Administrator<br/>" ) self.writeln("Error Message: %s" % log.get_value("message")) self.writeln("Error Id: %s" % log.get_id()) #self.writeln( log.get_value("stack_trace") ) self.writeln("</pre>") finally: # ensure that database connections are always closed DbContainer.close_all() # clear the container Container.delete() WebContainer.get_buffer().write(self.buffer.getvalue()) if error: import cherrypy print("error: ", error) cherrypy.response.status = error
def handle_security(self, security, allow_guest=False): # set the seucrity object WebContainer.set_security(security) # see if there is an override web = WebContainer.get_web() is_from_login = web.get_form_value("is_from_login") ticket_key = web.get_form_value("login_ticket") # attempt to login in with a ticket if not ticket_key and is_from_login != 'yes': ticket_key = web.get_cookie("login_ticket") # We can define another place to look at ticket values and use # that. ie: Drupal session key session_key = Config.get_value("security", "session_key") login = web.get_form_value("login") password = web.get_form_value("password") site_obj = Site.get() path_info = site_obj.get_request_path_info() if path_info: site = path_info['site'] if site == "default": site = web.get_form_value("site") if not site: site = "default" else: site = web.get_form_value("site") if session_key: ticket_key = web.get_cookie(session_key) if ticket_key: security.login_with_session(ticket_key, add_access_rules=False) elif login and password: # get the site for this user login_site = site_obj.get_by_login(login) if login_site: site = login_site if site: site_obj.set_site(site) if login == "guest": pass else: login_cmd = WebLoginCmd() login_cmd.execute() ticket_key = security.get_ticket_key() if not ticket_key: if site: site_obj.pop_site() return security elif ticket_key: if site: site_obj.set_site(site) login = security.login_with_ticket(ticket_key, add_access_rules=False, allow_guest=allow_guest) # In the midst of logging out, login is None if not login: if site: site_obj.pop_site() return security if not security.is_logged_in(): reset_password = web.get_form_value("reset_password") == 'true' if reset_password: from tactic.ui.widget import ResetPasswordCmd reset_cmd = ResetPasswordCmd(reset=True) try: reset_cmd.execute() except TacticException as e: print("Reset failed. %s" % e.__str__()) # let empty username or password thru to get feedback from WebLoginCmd else: login_cmd = WebLoginCmd() login_cmd.execute() ticket_key = security.get_ticket_key() # clear the password web.set_form_value('password', '') if session_key: web.set_cookie("login_ticket", ticket_key) elif ticket_key: web.set_cookie("login_ticket", ticket_key) # TEST TEST TEST """ try: ticket = security.get_ticket() if ticket: site_obj.handle_ticket(ticket) except Exception as e: print("ERROR in handle_ticket: ", e) """ # set up default securities #self.set_default_security(security) # for now apply the access rules after security.add_access_rules() return security
def handle_security(self, security, allow_guest=False): # set the seucrity object WebContainer.set_security(security) # see if there is an override web = WebContainer.get_web() is_from_login = web.get_form_value("is_from_login") ticket_key = web.get_form_value("login_ticket") # attempt to login in with a ticket if not ticket_key and is_from_login !='yes': ticket_key = web.get_cookie("login_ticket") # We can define another place to look at ticket values and use # that. ie: Drupal session key session_key = Config.get_value("security", "session_key") login = web.get_form_value("login") password = web.get_form_value("password") site_obj = Site.get() path_info = site_obj.get_request_path_info() if path_info: site = path_info['site'] if site == "default": site = web.get_form_value("site") if not site: site = "default" else: site = web.get_form_value("site") if session_key: ticket_key = web.get_cookie(session_key) if ticket_key: security.login_with_session(ticket_key, add_access_rules=False) elif login and password: # get the site for this user login_site = site_obj.get_by_login(login) if login_site: site = login_site if site: site_obj.set_site(site) if login == "guest": pass else: login_cmd = WebLoginCmd() login_cmd.execute() ticket_key = security.get_ticket_key() if not ticket_key: if site: site_obj.pop_site() return security elif ticket_key: if site: site_obj.set_site(site) login = security.login_with_ticket(ticket_key, add_access_rules=False, allow_guest=allow_guest) # In the midst of logging out, login is None if not login: if site: site_obj.pop_site() return security if not security.is_logged_in(): reset_password = web.get_form_value("reset_password") == 'true' if reset_password: from tactic.ui.widget import ResetPasswordCmd reset_cmd = ResetPasswordCmd(reset=True) try: reset_cmd.execute() except TacticException as e: print("Reset failed. %s" %e.__str__()) # let empty username or password thru to get feedback from WebLoginCmd else: login_cmd = WebLoginCmd() login_cmd.execute() ticket_key = security.get_ticket_key() # clear the password web.set_form_value('password','') if session_key: web.set_cookie("login_ticket", ticket_key) elif ticket_key: web.set_cookie("login_ticket", ticket_key) # TEST TEST TEST """ try: ticket = security.get_ticket() if ticket: site_obj.handle_ticket(ticket) except Exception as e: print("ERROR in handle_ticket: ", e) """ # set up default securities #self.set_default_security(security) # for now apply the access rules after security.add_access_rules() return security
def execute(self): self.buffer = cStringIO.StringIO() error = None try: try: # clear the main container for this thread Container.create() # clear the buffer WebContainer.clear_buffer() # initialize the web environment object and register it adapter = self.get_adapter() WebContainer.set_web(adapter) # get the display self._get_display() except SetupException as e: '''Display setup exception in the interface''' print("Setup exception: ", e.__str__()) DbContainer.rollback_all() ExceptionLog.log(e) self.writeln("<h3>Tactic Setup Error</h3>" ) self.writeln("<pre>" ) self.writeln(e.__str__() ) self.writeln("</pre>" ) error = "405: TACTIC Setup Error" except DatabaseException as e: from tactic.ui.startup import DbConfigPanelWdg config_wdg = DbConfigPanelWdg() self.writeln("<pre>") self.writeln(config_wdg.get_buffer_display()) self.writeln("</pre>") error = "405: TACTIC Database Error" except Exception as e: stack_trace = ExceptionLog.get_stack_trace(e) #print(stack_trace) self.writeln("<pre>") self.writeln(stack_trace) self.writeln("</pre>") error = "405 %s" % str(e) # it is possible that the security object was not set security = Environment.get_security() if not security: security = Security() WebContainer.set_security(security) log = None # ensure that database connections are rolled back try: DbContainer.rollback_all() except Exception as e2: print("Error: Could not rollback: ", e2.__str__()) self.writeln("Error: Could not rollback: '%s'" % e2.__str__() ) stack_trace = ExceptionLog.get_stack_trace(e2) print(stack_trace) self.writeln("<pre>") self.writeln(stack_trace) self.writeln("</pre>") raise e #return try: # WARNING: if this call causes an exception, the error # will be obscure log = ExceptionLog.log(e) except Exception as e2: print("Error: Could not log exception: ", e2.__str__()) self.writeln("Error '%s': Could not log exception" % e2.__str__() ) stack_trace = ExceptionLog.get_stack_trace(e2) print(stack_trace) self.writeln("<pre>") self.writeln(stack_trace) self.writeln("</pre>") return self.writeln("<pre>") self.writeln("An Error has occurred. Please see your Tactic Administrator<br/>") self.writeln( "Error Message: %s" % log.get_value("message") ) self.writeln("Error Id: %s" % log.get_id() ) #self.writeln( log.get_value("stack_trace") ) self.writeln("</pre>") finally: # ensure that database connections are always closed DbContainer.close_all() # clear the container Container.delete() WebContainer.get_buffer().write( self.buffer.getvalue() ) if error: import cherrypy print("error: ", error) cherrypy.response.status = error