This file is indexed.

/usr/share/cherokee/admin/PageException.py is in cherokee-admin 1.2.101-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# -*- coding: utf-8 -*-
#
# Cherokee-admin
#
# Authors:
#      Alvaro Lopez Ortega <alvaro@alobbs.com>
#
# Copyright (C) 2001-2011 Alvaro Lopez Ortega
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public
# License as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
#

import os
import CTK
import Cherokee
import configured
from CTK.util import formatter

from urllib import quote, unquote, urlencode
from httplib import HTTPConnection

URL_BTS         = 'http://bugs.cherokee-project.com/new'
URL_REPORT_HOST = 'www.cherokee-project.com'
URL_REPORT_URL  = '/CTK_ok.html'

NOTE_EXCEPT_SORRY   = N_('We apologize for any inconveniences that this may have caused.')
NOTE_EXCEPT_COMMENT = N_('Please, send your comments to the server developers. Your configuration file <strong>will</strong> be attached upon submission. What were you doing when the issue showed up?')
NOTE_EXCEPT_THANKS  = N_('Thank you for reporting the problem. The Cherokee Web Server developers will try to fix it up as soon as possible.')
NOTE_EXCEPT_FAIL    = N_('<p>For some reason, the issue could not be reported to the Cherokee project.</p><p>Please, do not hesitate to <a target="_blank" href="%s">report the issue</a> on our bug tracking system if the problem persists.</p>') %(URL_BTS)

URL_APPLY  = '/exception/apply'


def submit():
    # Build the parameters
    headers = {"Content-type": "application/x-www-form-urlencoded"}
    info    = urlencode ({'version':   configured.VERSION,
                          'comments':  CTK.post['comments'],
                          'traceback': unquote (CTK.post['traceback']),
                          'config':    str(CTK.cfg)})

    # HTTP Request
    conn = HTTPConnection (URL_REPORT_HOST)
    conn.request ("POST", URL_REPORT_URL, info, headers)
    response = conn.getresponse()
    data = response.read()
    conn.close()

    # Check the output
    if response.status != 200:
        return {'ret': 'error'}
    if not "{'ret':'ok'}" in data:
        return {'ret': 'error'}

    return {'ret':'ok'}


class Page (CTK.Page):
    def __init__ (self, traceback, desc, **kwargs):
        # Look for the theme file
        srcdir = os.path.dirname (os.path.realpath (__file__))
        theme_file = os.path.join (srcdir, 'exception.html')
        bt = quote(traceback).replace ('%', '%%')

        # Set up the template
        template = CTK.Template (filename = theme_file)

        template['title']      = _("Internal Error")
        template['body_props'] = ' id="body-error"'

        # Parent's constructor
        CTK.Page.__init__ (self, template, **kwargs)

        # Thank you: submitted
        dialog_ok = CTK.Dialog ({'title': _("Thank you!"), 'autoOpen': False, 'draggable': False, 'width': 480})
        dialog_ok += CTK.RawHTML ('<p>%s</p>' %(_(NOTE_EXCEPT_THANKS)))
        dialog_ok.AddButton (_('Close'), "close")

        dialog_fail = CTK.Dialog ({'title': _("Could not report the issue"), 'autoOpen': False, 'draggable': False, 'width': 480})
        dialog_fail += CTK.Notice ('error', CTK.RawHTML (_(NOTE_EXCEPT_FAIL)))
        dialog_fail.AddButton (_('Close'), "close")

        self += dialog_ok
        self += dialog_fail

        # Build the page content
        self += CTK.RawHTML ('<h1>%s</h1>' %(_("Unexpected Exception")))
        self += CTK.RawHTML ('<h2>%s</h2>' %(desc))
        self += CTK.RawHTML (_(NOTE_EXCEPT_SORRY))
        self += CTK.RawHTML (formatter ('<pre class="backtrace">%s</pre>', traceback))
        self += CTK.RawHTML (_(NOTE_EXCEPT_COMMENT))

        submit = CTK.Submitter (URL_APPLY)
        submit.bind ('submit_success', dialog_ok.JS_to_show())
        submit.bind ('submit_fail',    dialog_fail.JS_to_show())
        self += submit

        submit += CTK.TextArea ({'name': 'comments', 'rows':10, 'cols': 80, 'class': 'noauto'})
        submit += CTK.Hidden ('traceback', bt)
        submit += CTK.SubmitterButton (_("Report this"))


CTK.publish (URL_APPLY, submit, method="POST")