This file is indexed.

/usr/lib/python2.7/dist-packages/paraview/webgl.py is in paraview-python 4.0.1-1ubuntu1.

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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
r"""
   This module provide classes to handle Rest API for WebGL piece request.
"""

from twisted.web import server, resource
from twisted.web import server, resource
from twisted.web.error import Error

from paraview import simple
import web

import exceptions
import base64

class WebGLResource(resource.Resource):
    """
    Resource using to serve WebGL data. If supports URLs of two forms:
    - to get the meta-data as json-rpc message:
           http://.../WebGL?q=meta&vid=456

        - to get a binary webgl object:
           http://.../WebGL?q=mesh&vid=456&id=1&part=0

           vid : visualization view ID    (GlobalID of the view Proxy)
           id  : id of the object in the scene
           part: WebGL has a size limit, therefore an object can be splitted in
           several part. This is the part index.
    """
    def _missing_parameter(self, parameter):
        raise Error(400, "Missing required parameter: %s" % parameter)

    def _get_parameter(self, args, parameter, required=True):
        """
        Extract a parameter value from the request args.
        :param parameter: The parameter name
        :type parameter: str
        :param required: True if the function should raise an error is the
        parameter is missing.
        :type required: bool
        """
        value = None

        if not parameter in args:
            if required:
                self._missing_parameter(parameter)
        else:
            values = args[parameter]
            if len(values) == 1:
                value = values[0]
            elif required:
               self._missing_parameter(parameter)

        return value

    def _get_view(self, vid):
        """
        Returns the view for a given view ID, if vid is None then return the
        current active view.
        :param vid: The view ID
        :type vid: str
        """
        def _get_active_view():
            view = simple.GetActiveView()
            if not view:
                raise Error(404, "No view provided to WebGL resource")
            return view

        view = None

        if vid:
            try:
                view = web.mapIdToProxy(vid)
            except exceptions.TypeError:
                pass

        if not view:
            view = _get_active_view()

        return view

    def _render_GET_mesh(self, vid, request):
        """
        Handle GET requests to get WebGL data for a particular object.
        """
        object_id =  self._get_parameter(request.args, 'id')
        part_number = self._get_parameter(request.args, 'part', False);

        part = 0
        if part_number:
            part = int(part_number)

        view = self._get_view(vid)

        # There part is offset by 1
        if part > 0:
            part = part - 1

        data = web.ParaViewServerProtocol.WebApplication.GetWebGLBinaryData(view.SMProxy,
                                                                            object_id,
                                                                            part);

        if data:
            request.setHeader('content-type', 'application/octet-stream+webgl')
            request.setHeader('Cache-Control', 'max-age=99999');
            data = base64.b64decode(data)
        else:
           raise Error(404, "Invalid request for WebGL object")

        return data

    def _render_GET_meta(self, vid, request):
        """
        Handle GET request for meta data.
        """
        view = self._get_view(vid)

        data = web.ParaViewServerProtocol.WebApplication. GetWebGLSceneMetaData(view.SMProxy)

        if data:
            request.setHeader('content-type', 'application/json')
        else:
            raise Error(404, "Invalid request for WebGL meta data")

        return data

    def render_GET(self, request):
        """
        Handle GET requests, parse out q parameter to delegate to the correct
        internal function.
        There is two types of queries allowed:
        - to get the meta-data as json-rpc message:
           http://.../WebGL?q=meta&vid=456

        - to get a binary webgl object:
           http://.../WebGL?q=mesh&vid=456&id=1&part=0

           vid : visualization view ID    (GlobalID of the view Proxy)
           id  : id of the object in the scene
           part: WebGL has a size limit, therefore an object can be splitted in several part. This is the part index.
        """
        try:
            q = self._get_parameter(request.args, 'q')
            vid = self._get_parameter(request.args, 'vid', False)

            if q == 'mesh':
                return self._render_GET_mesh(vid, request)
            elif q == 'meta':
                return self._render_GET_meta(vid, request)
            else:
                raise Error(400, "Invalid query for the WebGL resource");
        except Error as err:
            request.setResponseCode(err.status)
            return err.message