def render_page(self, errors=[], success=[]): ''' Small wrap for self.render to cut down on lenghty params ''' current_theme = Theme.by_cssfile(self.session["theme"]) self.render("user/settings.html", errors=errors, success=success, current_theme=current_theme)
def render_page(self, errors=[], success=[]): ''' Small wrap for self.render to cut down on lenghty params ''' current_theme = Theme.by_cssfile(self.session["theme"]) self.render("user/settings.html", errors=errors, success=success, current_theme=current_theme )
def render_page(self, errors=[], success=[]): ''' Small wrap for self.render to cut down on lenghty params ''' self.add_content_policy('script', "'unsafe-eval'") current_theme = Theme.by_id(self.session["theme_id"]) self.add_content_policy('script', 'www.google.com') self.add_content_policy('img', 'www.google.com') self.render("user/settings.html", errors=errors, success=success, current_theme=current_theme)
class AppTheme(UIModule): theme = Theme.by_name(options.default_theme) def render(self, *args, **kwargs): ''' Includes different CSS themes based on user prefs ''' if self.handler.session is not None: return self.render_string( "theme/theme.html", theme_files=self.handler.session['theme']) else: return self.render_string("theme/theme.html", theme_files=self.theme)
def post_theme(self, *args, **kwargs): ''' Change per-user theme ''' theme = Theme.by_uuid(self.get_argument('theme_uuid', '')) if theme is not None: self.session['theme'] = ''.join(theme.cssfile) self.session.save() user = self.get_current_user() user.theme_id = theme.id self.dbsession.add(user) self.dbsession.commit() self.render_page() else: self.render_page(errors=["Theme does not exist."])
class AppTheme(UIModule): theme = Theme.by_name(options.default_theme) def render(self, *args, **kwargs): """ Includes different CSS themes based on user prefs """ if options.allow_user_to_change_theme and (self.handler.session is not None): return self.render_string( "theme/theme.html", theme_files=self.handler.session["theme"]) else: return self.render_string("theme/theme.html", theme_files=self.theme)
def render_page(self, errors=[], success=[]): """ Small wrap for self.render to cut down on lengthy params """ user = self.get_current_user() self.add_content_policy("script", "'unsafe-eval'") current_theme = Theme.by_id(self.session["theme_id"]) self.add_content_policy("script", "www.google.com") self.add_content_policy("img", "www.google.com") self.render( "user/settings.html", errors=errors, success=success, current_theme=current_theme, user=user, )
def create_login_session(self, user): self.start_session() theme = Theme.by_id(user.theme_id) if user.team is not None: self.session["team_id"] = int(user.team.id) self.session["user_id"] = int(user.id) self.session["user_uuid"] = user.uuid self.session["handle"] = user.handle self.session["theme"] = [str(f) for f in theme.files] self.session["theme_id"] = int(theme.id) if user.is_admin(): self.session["menu"] = "admin" else: self.session["menu"] = "user" self.session.save()
def setup(): """ Creates/bootstraps the database. If you're a real developer you'll figure out how to remove the warning yourself. Don't merge any code the removes it. """ is_devel = options.setup.startswith("dev") if is_devel: print("%sWARNING:%s Setup is in development mode %s" % (WARN + bold, W, WARN)) message = "I know what the f**k I am doing" resp = input(PROMPT + 'Please type "%s": ' % message) if resp.replace('"', "").lower().strip() != message.lower(): os._exit(1) else: is_devel = options.setup.startswith("docker") print(INFO + "%s : Creating the database ..." % current_time()) from setup.create_database import create_tables, engine, metadata create_tables(engine, metadata, options.log_sql) sys.stdout.flush() from models.Theme import Theme themes = Theme.all() if len(themes) > 0: print(INFO + "It looks like database has already been set up.") return print(INFO + "%s : Bootstrapping the database ..." % current_time()) import setup.bootstrap # Display Details if is_devel: environ = bold + R + "Development bootstrap:" details = C + "Admin Username: admin, Password: rootthebox" + W else: environ = bold + "Production bootstrap" + W details = "" from handlers import update_db update_db(False) sys.stdout.flush() try: print(INFO + "%s %s" % (environ, details), flush=True) except: print(INFO + "%s %s" % (environ, details))
def post_theme(self, *args, **kwargs): """ Change per-user theme """ if not options.allow_user_to_change_theme: self.render_page(errors=["Users are not allowed to change themes"]) return theme = Theme.by_uuid(self.get_argument("theme_uuid", "")) if theme is not None: self.session["theme_id"] = theme.id self.session["theme"] = [str(f) for f in theme.files] self.session.save() user = self.get_current_user() user.theme_id = theme.id self.dbsession.add(user) self.dbsession.commit() self.render_page() else: self.render_page(errors=["Theme does not exist."])
def post_theme(self, *args, **kwargs): ''' Change per-user theme ''' if not options.allow_user_to_change_theme: self.render_page(errors=["Users are not allowed to change themes"]) return theme = Theme.by_uuid(self.get_argument('theme_uuid', '')) if theme is not None: self.session['theme_id'] = theme.id self.session['theme'] = [str(f) for f in theme.files] self.session.save() user = self.get_current_user() user.theme_id = theme.id self.dbsession.add(user) self.dbsession.commit() self.render_page() else: self.render_page(errors=["Theme does not exist."])
def refresh_app_config(self): # Update default theme self.application.ui_modules["Theme"].theme = Theme.by_name( options.default_theme) # Callback functions - updates and starts/stops the botnet callback self.application.settings["score_bots_callback"].stop() self.application.score_bots_callback = PeriodicCallback( score_bots, options.bot_reward_interval) if options.use_bots: logging.info("Starting botnet callback function") self.application.settings["score_bots_callback"].start() logging.info("Restarting history callback function") game_history = GameHistory.instance() self.application.settings["history_callback"].stop() self.application.history_callback = PeriodicCallback( game_history.take_snapshot, options.history_snapshot_interval) self.application.settings["history_callback"].start()
def successful_login(self, user): ''' Called when a user successfully logs in ''' logging.info("Successful login: %s from %s" % ( user.handle, self.request.remote_ip, )) user.last_login = datetime.now() user.logins += 1 self.dbsession.add(user) self.dbsession.commit() self.start_session() theme = Theme.by_id(user.theme_id) if user.team is not None: self.session['team_id'] = int(user.team.id) self.session['user_id'] = int(user.id) self.session['user_uuid'] = user.uuid self.session['handle'] = user.handle self.session['theme'] = theme.cssfile if user.has_permission(ADMIN_PERMISSION): self.session['menu'] = 'admin' else: self.session['menu'] = 'user' self.session.save()
def successful_login(self, user): """ Called when a user successfully logs in """ logging.info("Successful login: %s from %s" % (user.handle, self.request.remote_ip)) user.last_login = datetime.now() user.logins += 1 self.dbsession.add(user) self.dbsession.commit() self.start_session() theme = Theme.by_id(user.theme_id) if user.team is not None: self.session["team_id"] = int(user.team.id) self.session["user_id"] = int(user.id) self.session["user_uuid"] = user.uuid self.session["handle"] = user.handle self.session["theme"] = [str(f) for f in theme.files] self.session["theme_id"] = int(theme.id) if user.is_admin(): self.session["menu"] = "admin" else: self.session["menu"] = "user" self.session.save()
def successful_login(self, user): ''' Called when a user successfully logs in ''' logging.info("Successful login: %s from %s" % ( user.handle, self.request.remote_ip, )) user.last_login = datetime.now() user.logins += 1 self.dbsession.add(user) self.dbsession.commit() self.start_session() theme = Theme.by_id(user.theme_id) if user.team is not None: self.session['team_id'] = int(user.team.id) self.session['user_id'] = int(user.id) self.session['user_uuid'] = user.uuid self.session['handle'] = user.handle self.session['theme'] = [str(f) for f in theme.files] self.session['theme_id'] = int(theme.id) if user.has_permission(ADMIN_PERMISSION): self.session['menu'] = 'admin' else: self.session['menu'] = 'user' self.session.save()
(u"Amelia", u'amelia.min.css'), (u"Cyborg", u'cyborg.min.css'), (u"Readable", u'readable.min.css'), (u"Slate", u'slate.min.css'), (u"Spruce", u'spruce.min.css'), (u"United", u'united.min.css'), (u"Cerulean", u'cerulean.min.css'), (u"Journal", u'journal.min.css'), (u"Simplex", u'simplex.min.css'), (u"Spacelab", u'spacelab.min.css'), (u"Superhero", u'superhero.min.css'), (u"Geocities", u'geocities.min.css'), ] for css in css_files: theme = Theme( name=css[0], cssfile=css[1], ) dbsession.add(theme) dbsession.flush() # Market Items item = MarketItem( name=u"Source Code Market", price=500, image=u"source_code_market.png", description= u"Allows your team access to the Source Code Black Market where you can purchase leaked source code for certain target boxes.", ) dbsession.add(item) dbsession.flush()
def verifyTheme(theme): themeFound = Theme.find_one({'url': theme}) if themeFound != None: return True return False
def insertTheme(theme): Theme.insert_one(theme)
(u"Amelia", [u'amelia.min.css']), (u"Cyborg", [u'cyborg.min.css']), (u"Readable", [u'readable.min.css']), (u"Slate", [u'slate.min.css']), (u"Spruce", [u'spruce.min.css']), (u"United", [u'united.min.css']), (u"Cerulean", [u'cerulean.min.css']), (u"Journal", [u'journal.min.css']), (u"Simplex", [u'simplex.min.css']), (u"Spacelab", [u'spacelab.min.css']), (u"Superhero", [u'superhero.min.css']), (u"Geocities", [u'geocities.min.css']), (u"386", [u'386.css', u'386.js', u'386.responsive.css']), ] for css in css_files: theme = Theme(name=css[0]) dbsession.flush() for f in css[1]: theme_file = ThemeFile(theme_id=theme.id, file_name=f) theme.files.append(theme_file) dbsession.add(theme_file) dbsession.add(theme) # Market Items item = MarketItem( name=u"Source Code Market", price=500, image=u"source_code_market.png", description= u"Allows your team access to the Source Code Black Market where you can purchase leaked source code for certain target boxes.", )
def theme(self, value): theme = Theme.by_name(value) if theme: self.theme_id = theme.id
def theme(self): if self.theme_id: return Theme.by_id(self.theme_id).name else: return options.default_theme