Work around missing seriesIndex API by using keyword=index
[python-iview.git] / iview.cgi
blob805c081c1c419267ec5e24ccbe74f993347318b9
1 #!/usr/bin/env python3
2 """iView CGI script
4 This is a script that you can place within your cgi-bin directory to allow
5 you to download iView videos via HTTP. This is a fairly useless feature
6 by itself, but very handy if you are trying to integrate iView with a
7 system that needs to or prefers to download via HTTP.
9 Usage:
10     - place script in /usr/lib/cgi-bin or wherever your cgi-bin is
11     - request a video via HTTP:
12         $ wget http://localhost/cgi-bin/iview.cgi/730report_10_01_01.flv
13     - enjoy!
15 Note: if there is one thing going to go wrong with this script, it will be
16 that it can't find the iview include module. Make sure that either the
17 iview module is installed to the system (preferred), or the iview/
18 directory is also under cgi-bin.
20 Also, if there's the slightest chance somebody will be able to access this
21 script from a public address, it's probably a good idea to configure
22 your web server to restrict access to this script by IP address. Unless,
23 of course, you want your web server acting as an iView proxy, chewing up
24 bandwidth, violating copyright, getting your server taken down, etc.
25 """
27 import os
28 import sys
29 import iview.comm
30 import iview.fetch
32 url = os.getenv('PATH_INFO', '').split(' ', 1)[0].lstrip('/')
34 # The above split(' ') is called being paranoid about parameter injection.
35 # Yes, iview.fetch doesn't call the shell (it uses execvp()), but you never
36 # know how people are going to zombify this script. If iView ever starts using
37 # spaces, I'll update this script.
39 if not url:
40     print('Content-type: text/plain\r')
41     print('')
42     print("""iView CGI script
44 To use this script, specify the video filename as a subdirectory of this script.
45 For example:
46 """)
47     print('http://{HTTP_HOST}{SCRIPT_NAME}/news/730s_Tx_2605.mp4'.format_map(os.environ))
48     sys.exit(0)
50 print('Content-type: video/x-flv\r')
51 print('\r')
53 sys.stdout.flush() # If this isn't included, Apache doesn't see our headers and
54                    # interprets rtmpdump output as HTTP headers.
56 iview.comm.get_config()
57 iview.fetch.fetch_program(url, execvp=True, dest_file='-')