-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
132 lines (81 loc) · 4.77 KB
/
README
File metadata and controls
132 lines (81 loc) · 4.77 KB
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
=== DESCRIPTION ==============================================================
Loomiere is a highly scalable and secure HTTP a/v streaming server able to
serve a massive amount of streaming requests simultaneously using commonly
available (commodity) hardware. It makes use of a bandwidth conservation
algorithm designed to provide smooth playback, which, together with many
other features, cuts down streaming production costs considerably. See the
features described further down for more detailed information.
=== TERMS ====================================================================
See the LICENSE file!
Copyright (C)2010 Valeriu Paloş. All rights reserved.
=== FEATURES =================================================================
- Able to serve *massive* amounts of clients simultaneously.
Visit http://valeriu.palos.ro/980/loomiere-2-0-teaser-reloaded/ for some
real-life data.
- Very lightweight, built for maximum throughput on multi-core machines and
specifically designed to completely eliminate software bottlenecks (e.g. it
should allow you use your hardware components to the full physical extent).
- Strong bandwidth conservation that uses a smart and easy to configure
throttling system which is VBR-aware (variable bitrate) for smooth playback.
- High-speed memory-based cache to accelerate request responses.
- URL Rewriting/Redirection:
Support for URL routing using regular expressions or even custom Lua scrips,
making it very easy to integrate with (or replace) another existing system.
- Virtual Hosting:
Name-based virtual hosting support with regular expression matching.
- Monitoring:
Detailed statistics published on separate port at "/monitor" URL.
=== REQUIRED =================================================================
- Lua(5.1) ............ http://www.lua.org/
- Luarocks ............ http://www.luarocks.org/
- alt-getopt ...... http://luaforge.net/projects/alt-getopt/
- lpeg ............ http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html
- luabitop ........ http://bitop.luajit.org/
- lua-ev .......... https://github.com/brimworks/lua-ev
- lrexlib-pcre .... http://lrexlib.luaforge.net/
- luasocket ....... http://w3.impa.br/~diego/software/luasocket/
- LibEV ............... http://software.schmorp.de/pkg/libev.html
- PCRE ................ http://www.pcre.org
- TokyoCabinet ........ http://fallabs.com/tokyocabinet/
=== COMPILE ==================================================================
Currently I only compiled this on Debian and Ubunutu (other distros should work
with minor editing of makefiles). Just run:
$ make -f makefile.ubuntu
=== SUGGESTED ================================================================
To run Loomiere in production you should use a service supervisor such as:
- runit ............... http://smarden.org/runit/index.html
=== CHANGE LOG ===============================================================
Loomiere 2.0.1-beta - 2011-12-07
- Minor bug fixes and improvements.
Loomiere 2.0-beta - 2010-08-15
- First working release of Loomiere (2.0).
=== IDEAS ====================================================================
- Anti-DOS Prevention System:
Based on the number of connections per second coming from a single IP.
- Whitelist/Blacklist:
Banning system based on a list of IPs and/or referrer domains.
- Throttling Hinting: adaptive throttling based on hint commands sent by
the player during playtime. This interprets calibration hints from the
video-player during playtime and also enables streaming to be suspended while
the player is paused (but only if there is enough bandwidth to ensure smooth
playback on resume).
- Controlled Client Identity:
Content protection based on token exchange (via custom Lua script). This
will deny streaming everywhere except in your custom-compiled players and
also will prevent others to download your movies straight from the server.
- Controlled Domain Identity:
Serve certain media only when the player comes from specific domains.
This will deny streaming everywhere except in video-players coming from
specific domains.
- Geo-location:
Controlled access based on geo-location information (via GeoIP). This can
currently be achieved by using GeoIP from the options.lua file (in Lua)
but I guess it should be nicer.
- Loomiere must run as user 'loomiere' (not as 'root').
- Re-organized host definition in options.lua.
- Add ability to respond with HTTP error codes (302, 404, 500 etc.)
straight from the host's URL routing table (in options.lua).
- Add (optional) HTTP caching headers (for selected types of files).
- Add '?terse=true|false' parameter to the '/monitor' URL.
- Add '/space?path=/var/www' control parameter to check disk usage.
- Add multiple sandbox paths for each host, with individual statistics.