Exemplo n.º 1
0
 def get(self, server_key=None):
     server = self.get_server_by_key(server_key, abort=False)
     if server is None:
         self.redirect_to_server('chats')
         return
     self.request.user.record_chat_view()
     query_string = self.request.get('q', None)
     # Search
     if query_string:
         page = 0
         cursor = self.request.get('cursor', None)
         if cursor and cursor.startswith('PAGE_'):
             page = int(cursor.strip()[5:])
         offset = page*RESULTS_PER_PAGE
         results, number_found, _ = search.search_log_lines(
             'chat:{0}'.format(query_string),
             server_key=server.key,
             limit=RESULTS_PER_PAGE,
             offset=offset
         )
         previous_cursor = next_cursor = None
         if page > 0:
             previous_cursor = u'PAGE_{0}&q={1}'.format(page - 1 if page > 0 else 0, query_string)
         if number_found > offset + RESULTS_PER_PAGE:
             next_cursor = u'PAGE_{0}&q={1}'.format(page + 1, query_string)
     # Latest
     else:
         results, previous_cursor, next_cursor = self.get_results_with_cursors(
             LogLine.query_latest_events(server.key), LogLine.query_oldest_events(server.key), RESULTS_PER_PAGE
         )
     context = {'chats': results, 'query_string': query_string or ''}
     if self.request.is_xhr:
         self.render_xhr_response(server.key, context, next_cursor)
     else:
         self.render_html_response(server.key, context, next_cursor, previous_cursor)
Exemplo n.º 2
0
def LogAccess(username, request, course_id=None):
    '''
    Write a log entry line
    '''
    ll = LogLine(username=username, 
                 course_id=course_id, 
                 url=request.url,
                 ipaddr=request.remote_addr)
    ll.put()
Exemplo n.º 3
0
 def get(self):
     self.request.user.record_chat_view()
     results, previous_cursor, next_cursor = self.get_results_with_cursors(
         LogLine.query_latest_chats(), LogLine.query_oldest_chats(), coal_config.RESULTS_PER_PAGE
     )
     if results:
         self.request.user.record_chat_view(results[0].timestamp)
     context = {'chats': results, 'previous_cursor': previous_cursor, 'next_cursor': next_cursor}
     self.render_template('chats.html', context=context)
Exemplo n.º 4
0
 def post(self):
     client = Client.get_by_client_id(self.request.authentication.client_id)
     server = client.server
     if not server.active:
         self.abort(404)
     status_code = 200
     line = self.request.form.line.data
     zone = self.request.form.zone.data
     existing_line = LogLine.lookup_line(server.key, line)
     if existing_line is None:
         log_line = LogLine.create(server, line, zone)
         if log_line is not None:
             status_code = 201
     self.json_response({}, status_code=status_code)
Exemplo n.º 5
0
 def get(self):
     client = Client.get_by_client_id(self.request.authentication.client_id)
     server = client.server
     if not server.active:
         self.abort(404)
     last_log_line = LogLine.get_last_line_with_timestamp(server.key)
     response = {
         'lastline': last_log_line.line if last_log_line is not None else None,
     }
     self.json_response(response, status_code=200)
Exemplo n.º 6
0
 def post(self, key):
     try:
         server_key = ndb.Key(urlsafe=key)
         server = server_key.get()
         if server is None or ON_SERVER:
             self.abort(404)
         file = self.request.POST['file']
         import StringIO
         from models import LogLine
         buf = StringIO.StringIO(file.value)
         for raw_line in buf.readlines():
             line = raw_line.decode('ISO-8859-2', errors='ignore')
             line = line.strip()
             existing_line = LogLine.lookup_line(server.key, line)
             if existing_line is None:
                 log_line = LogLine.create(server, line, 'UTC')
                 logging.info(log_line.line)
     except Exception, e:
         logging.error(u"Error POSTing server: {0}".format(e))
         self.abort(404)
Exemplo n.º 7
0
 def get(self, server_key, key_username=None):
     server_key = self.get_server(server_key).key
     username = None
     if key_username:
         player = self.get_player_by_key_or_username(server_key, key_username)
         username = player.username
     since = self.request.form.since.data or None
     before = self.request.form.before.data or None
     q = self.request.form.q.data or None
     tag = self.request.form.tag.data or None
     if q:
         query_string = u"line:{0}".format(q)
         cursor = self.request.form.cursor.data or None
         results, next_cursor = LogLine.search_api(
             server_key,
             query_string,
             size=self.size,
             username=username,
             tag=tag, since=since,
             before=before,
             cursor=cursor
         )
         response = {'loglines': results}
         if next_cursor is not None:
             results, _ = LogLine.search_api(
                 server_key,
                 query_string,
                 size=self.size,
                 username=username,
                 tag=tag,
                 since=since,
                 before=before,
                 cursor=next_cursor
             )
             if results:
                 response['cursor'] = next_cursor
         self.json_response(response, LOG_LINE_STRATEGY)
     else:
         query = LogLine.query_api(server_key, username=username, tag=tag, since=since, before=before)
         self.json_response(self.fetch_page(query, results_name='loglines'), LOG_LINE_STRATEGY)
Exemplo n.º 8
0
 def get(self, server_key=None):
     server = self.get_server_by_key(server_key, abort=False)
     if server is None:
         self.redirect_to_server('chats')
         return
     self.request.user.record_chat_view()
     query_string = self.request.get('q', None)
     # Search
     if query_string:
         page = 0
         cursor = self.request.get('cursor', None)
         if cursor and cursor.startswith('PAGE_'):
             page = int(cursor.strip()[5:])
         offset = page * RESULTS_PER_PAGE
         results, number_found, _ = search.search_log_lines(
             'chat:{0}'.format(query_string),
             server_key=server.key,
             limit=RESULTS_PER_PAGE,
             offset=offset)
         previous_cursor = next_cursor = None
         if page > 0:
             previous_cursor = u'PAGE_{0}&q={1}'.format(
                 page - 1 if page > 0 else 0, query_string)
         if number_found > offset + RESULTS_PER_PAGE:
             next_cursor = u'PAGE_{0}&q={1}'.format(page + 1, query_string)
     # Latest
     else:
         results, previous_cursor, next_cursor = self.get_results_with_cursors(
             LogLine.query_latest_events(server.key),
             LogLine.query_oldest_events(server.key), RESULTS_PER_PAGE)
     context = {'chats': results, 'query_string': query_string or ''}
     if self.request.is_xhr:
         self.render_xhr_response(server.key, context, next_cursor)
     else:
         self.render_html_response(server.key, context, next_cursor,
                                   previous_cursor)
Exemplo n.º 9
0
 def get(self, server_key=None):
     server = self.get_server_by_key(server_key, abort=False)
     if server is None:
         self.redirect_to_server('home')
         return
     # Get new chats
     new_chats_query = LogLine.query_latest_events(server.key)
     last_chat_view = self.request.user.last_chat_view
     if last_chat_view is not None:
         new_chats_query = new_chats_query.filter(LogLine.timestamp > last_chat_view)
     new_chats, chats_cursor, more = new_chats_query.fetch_page(20)
     if new_chats:
         self.request.user.record_chat_view(new_chats[0].timestamp)
     # Render with context
     context = {
         'open_sessions': server.open_sessions,
         'new_chats': new_chats,
         'chats_cursor': chats_cursor
     }
     self.render_template('home.html', context=context)
Exemplo n.º 10
0
 def get(self):
     open_sessions_query = PlaySession.query_latest_open()
     # Get open sessions
     playing_usernames = []
     open_sessions = []
     for open_session in open_sessions_query:
         if open_session.username and open_session.username not in playing_usernames:
             playing_usernames.append(open_session.username)
             open_sessions.append(open_session)
     # Get new chats
     new_chats_query = LogLine.query_latest_chats()
     last_chat_view = self.request.user.last_chat_view
     if last_chat_view is not None:
         new_chats_query = new_chats_query.filter(LogLine.timestamp > last_chat_view)
     new_chats, chats_cursor, more = new_chats_query.fetch_page(20)
     if new_chats:
         self.request.user.record_chat_view(new_chats[0].timestamp)
     # Render with context
     context = {'open_sessions': open_sessions, 'new_chats': new_chats, 'chats_cursor': chats_cursor}
     self.render_template('home.html', context=context)
Exemplo n.º 11
0
 def get(self, server_key=None):
     server = self.get_server_by_key(server_key, abort=False)
     if server is None:
         self.redirect_to_server('home')
         return
     # Get new chats
     new_chats_query = LogLine.query_latest_events(server.key)
     last_chat_view = self.request.user.last_chat_view
     if last_chat_view is not None:
         new_chats_query = new_chats_query.filter(
             LogLine.timestamp > last_chat_view)
     new_chats, chats_cursor, more = new_chats_query.fetch_page(20)
     if new_chats:
         self.request.user.record_chat_view(new_chats[0].timestamp)
     # Render with context
     context = {
         'open_sessions': server.open_sessions,
         'new_chats': new_chats,
         'chats_cursor': chats_cursor
     }
     self.render_template('home.html', context=context)
Exemplo n.º 12
0
def GetRecentLogLines(nlast=10):
    '''
    Return last nlast entries in access log
    '''
    ret = LogLine.query().order(-LogLine.created).fetch(nlast)
    return ret