/usr/lib/python2.7/dist-packages/paraview/web.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 | r"""web is a module that enables using ParaView through a web-server. This
module implments a WampServerProtocol that provides the core RPC-API needed to
place interactive visualization in web-pages. Developers can extent
ServerProtocol to provide additional RPC callbacks for their web-applications.
This module can be used as the entry point to the application. In that case, it
sets up a Twisted web-server that can generate visualizations as well as serve
web-pages are determines by the command line arguments passed in.
Use "--help" to list the supported arguments.
"""
import types
import logging
from threading import Timer
from twisted.python import log
from twisted.internet import reactor
from autobahn.websocket import listenWS
from autobahn.wamp import exportRpc, \
WampServerProtocol
from autobahn.resource import WebSocketResource
from autobahn.wamp import WampServerFactory
# import paraview modules.
from paraview import simple, paraviewweb_wamp
from vtkParaViewWebCorePython import vtkPVWebApplication,\
vtkPVWebInteractionEvent,\
vtkPVWebUtilities
from webgl import WebGLResource
# =============================================================================
# Setup default arguments to be parsed
# -d, --debug
# -p, --port 8080
# -t, --timeout 300 (seconds)
# -c, --content '' (No content means WebSocket only)
# -a, --authKey paraviewweb-secret
# =============================================================================
def add_arguments(parser):
"""
Add arguments processed know to this module. parser must be
argparse.ArgumentParser instance.
"""
import os
parser.add_argument("-d", "--debug",
help="log debugging messages to stdout",
action="store_true")
parser.add_argument("-p", "--port", type=int, default=8080,
help="port number for the web-server to listen on (default: 8080)")
parser.add_argument("-t", "--timeout", type=int, default=300,
help="timeout for reaping process on idle in seconds (default: 300s)")
parser.add_argument("-c", "--content", default='',
help="root for web-pages to serve (default: none)")
parser.add_argument("-a", "--authKey", default='paraviewweb-secret',
help="Authentication key for clients to connect to the WebSocket.")
return parser
# =============================================================================
# Parse arguments and start webserver
# =============================================================================
def start(argv=None,
protocol=paraviewweb_wamp.ServerProtocol,
description="ParaView/Web web-server based on Twisted."):
"""
Sets up the web-server using with __name__ == '__main__'. This can also be
called directly. Pass the opational protocol to override the protocol used.
Default is ServerProtocol.
"""
try:
import argparse
except ImportError:
# since Python 2.6 and earlier don't have argparse, we simply provide
# the source for the same as _argparse and we use it instead.
import _argparse as argparse
parser = argparse.ArgumentParser(description=description)
add_arguments(parser)
args = parser.parse_args(argv)
start_webserver(options=args, protocol=protocol)
# =============================================================================
# Start webserver
# =============================================================================
def start_webserver(options, protocol=paraviewweb_wamp.ServerProtocol, disableLogging=False):
"""
Starts the web-server with the given protocol. Options must be an object
with the following members:
options.port : port number for the web-server to listen on
options.timeout : timeout for reaping process on idle in seconds
options.content : root for web-pages to serve.
"""
from twisted.internet import reactor
from twisted.web.server import Site
from twisted.web.static import File
import sys
if not disableLogging:
log.startLogging(sys.stdout)
# setup the server-factory
wampFactory = paraviewweb_wamp.ReapingWampServerFactory(
"ws://localhost:%d" % options.port, options.debug, options.timeout)
wampFactory.protocol = protocol
# Do we serve static content or just websocket ?
if len(options.content) == 0:
# Only WebSocket
listenWS(wampFactory)
else:
# Static HTTP + WebSocket
wsResource = WebSocketResource(wampFactory)
root = File(options.content)
root.putChild("ws", wsResource)
webgl = WebGLResource()
root.putChild("WebGL", webgl);
site = Site(root)
reactor.listenTCP(options.port, site)
# Start factory and reactor
wampFactory.startFactory()
reactor.run()
wampFactory.stopFactory()
if __name__ == "__main__":
start()
|