Esempio n. 1
0
 def defaultAction(self):
     try:
         transaction = self.transaction()
         response = transaction.response()
     except Exception, info:
         OSUtils.logException()
         return
Esempio n. 2
0
    def _respond(self, transaction):

        mgmt = self.session().value('mgmt')
        assert 'monitor' != mgmt.remoteUser.lower(), \
               'Monitor may not view or download logs.'
        # check permissions
        assert Nodes.permission(mgmt,
            '/logging/syslog/action/file/\/var\/log\/messages') != 'deny', \
            ('%s may not view or download logs.' % mgmt.remoteUser)

        request = transaction.request()
        response = transaction.response()
        fields = request.fields()
        logtype = fields.get('logtype', 'user')
        mime = fields.get('mime', '') or self.ContentType
        logfilename = '/var/log/%smessages' % self.LOGTYPE_PREFIX[logtype]
        try:
            bytesize = os.stat(logfilename)[stat.ST_SIZE]
            seekto = max(0, bytesize - 500)
            response.setHeader('Content-type', mime)
            response.commit()
            if mime.endswith('html'):
                response.write('<html>\n')
                response.write('<head>\n')
                response.write('<title>Continuous Log</title>\n')
                response.write('</head>\n')
                response.write('<body>\n')
                response.write('<pre>\n')
            response.flush(True)

            logfile = file(logfilename)
            logfile.seek(seekto) # Seek to almost EOF
            # Print out the last few lines of the log,
            # stripping out any partial line artifact of our seek()
            txt = cgi.escape(logfile.read() or '')
            txt = txt[txt.find('\n') + 1:]
            writingDots = 0
            # Write to log after seek so we should read it in the first
            # iteration of reading logfile.
            while hasattr(request, '_transaction') and \
                  2 < AppServerModule.globalAppServer._running:
                if txt:
                    if writingDots:
                        response.write('\n')
                        writingDots = 0
                    response.write(txt)
                else:
                    writingDots += 1
                    if 0 == writingDots % 80:
                        response.write('\n')
                    response.write('. ')
                    time.sleep(3)
                response.flush() # I don't trust auto flush
                txt = cgi.escape(logfile.read() or '')
        except ConnectionAbortedError:
            pass
        except:
            OSUtils.logException()
Esempio n. 3
0
 def __init__(self):
     try:
         super(gfx, self).__init__()
     except Exception, info:
         OSUtils.logException()
         return
Esempio n. 4
0
import sys
import traceback
import xml.dom

import Capability
import FormUtils
import Nodes
import OSUtils
import Logging
from GfxContent import GfxContent
from WebKit.Application import EndResponse
try:
    from support_report_gfx import gfx_Report
except Exception, info:
    OSUtils.logException()
    class gfx_Report: pass


# This servlet replies to requests of the form:
#    /sh/gfx?p=NAME
#
# And the response is XML.
#
# ("p" originally meant "page", but now it's a general purpose selector thing)
#
# XXX/robin How do we catch exceptions in instantiation of base classes?
class gfx(gfx_Report,
          GfxContent):

    # Each mixin class contributes their dispatches.
Esempio n. 5
0
 def sendExportFile(self, filename):
     try:
         exfile = file(filename, 'rb')
     except IOError, info:
         OSUtils.logException()
         return