tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

resource.py (1621B)


      1 '''
      2 SRI Message Signature helper, generating responses that:
      3 
      4 *   Include or exclude an `Integrity-Digest` header depending on the request's
      5    `digest` parameter.
      6 *   Include or exclude an `Signature` header depending on the request's
      7    `signature` parameter.
      8 *   Include or exclude an `Signature-Input` header depending on the request's
      9    `signatureInput` parameter.
     10 
     11 *   Include or exclude `Access-Control-Allow-Origin: *` depending on the
     12    request's `cors` parameter.
     13 
     14 *   Sets a `Content-Type` header from the request's `type` parameter.
     15 
     16 *   Echos the `body` parameter into the response body.
     17 '''
     18 def main(request, response):
     19  digest = request.GET.first(b'digest', b'')
     20  signature = request.GET.first(b'signature', b'')
     21  signatureInput = request.GET.first(b'signatureInput', b'')
     22  if digest:
     23    response.headers.set(b'unencoded-digest', digest)
     24  if signature:
     25    response.headers.set(b'signature', signature)
     26  if signatureInput:
     27    response.headers.set(b'signature-input', signatureInput)
     28 
     29 
     30  cors = request.GET.first(b'cors', '')
     31  if cors:
     32    response.headers.set(b'access-control-allow-origin', b'*')
     33 
     34  response.headers.set(b'content-type',
     35                       request.GET.first(b'type', b'text/plain'))
     36 
     37  # Reflect the `accept-signature` header from the request to the response.
     38  acceptSigs = request.headers.get(b'accept-signature', b'')
     39  response.headers.set(b'accept-signature', acceptSigs)
     40  response.headers.set(b'access-control-expose-headers', b'accept-signature')
     41 
     42  response.status = int(request.GET.first(b'status', "200"))
     43  response.content = request.GET.first(b'body', '')