Source code for google.appengine.ext.admin_redirect.main

#!/usr/bin/env python
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#




"""Main module for admin redirect.

To use, add this to app.yaml:
  builtins:
  - admin_redirect: on
"""



import logging

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util


GOOGLE_SUFFIX = '.google.com'
CONSOLE_SUFFIX = '/dashboard?app_id='
APPENGINE_URL = 'https://appengine.google.com'

ADMIN_CONSOLE_NAME = 'admin-console'
APPLICATION_ID_PARAM = 'APPLICATION_ID'
SERVER_NAME_PARAM = 'SERVER_NAME'


[docs]class RedirectToAdminConsole(webapp.RequestHandler): """Used to redirect the user to the appropriate Admin Console URL."""
[docs] def get(self): """Handler to redirect all /_ah/admin.* requests to Admin Console.""" app_id = self.request.environ.get(APPLICATION_ID_PARAM) if not app_id: logging.error('Could not get application id; generic redirect.') self.redirect(APPENGINE_URL) return server = self.request.environ.get(SERVER_NAME_PARAM) if not server: logging.warning('Server parameter not present; appengine.com redirect.') self.redirect('%s%s%s' % (APPENGINE_URL, CONSOLE_SUFFIX, app_id)) return if server.endswith(GOOGLE_SUFFIX): if server.find(app_id) == 0: new_server = server.replace(app_id, ADMIN_CONSOLE_NAME) self.redirect('http://%s%s%s' % (new_server, CONSOLE_SUFFIX, app_id)) else: self.response.out.write(""" Could not determine admin console location from server name.""") else: self.redirect('%s%s%s' % (APPENGINE_URL, CONSOLE_SUFFIX, app_id))
[docs]def CreateApplication(): """Create new WSGIApplication and register all handlers. Returns: an instance of webapp.WSGIApplication with all mapreduce handlers registered. """ return webapp.WSGIApplication([(r'.*', RedirectToAdminConsole)], debug=True)
APP = CreateApplication()
[docs]def main(): util.run_wsgi_app(APP)
if __name__ == '__main__': main()