blob: 5252ec47baacd7aba2a55efd44c359a54177eab2 (
plain)
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
|
#!/usr/bin/perl -I /root/tgmanage/web/stream.gathering.org/streamlib
use warnings;
use strict;
use stream;
use stream::config;
use CGI;
my $client = CGI->new;
my $stream = $client->param('stream');
my $interlaced = $client->param('interlaced');
my $delivery = $client->param('delivery');
my $v4net = $stream::config::v4net;
my $v6net = $stream::config::v6net;
my $multicast_ip = $stream::config::multicast;
my $tg = $stream::config::tg;
my $base_url = $stream::config::vlc_base_host;
my %streams = %stream::config::streams;
#default
if (not defined $delivery) {
$delivery = "multicast";
}
if((not defined $stream) or (not defined $delivery)) {
print $client->header();
die "No stream and/or delivery method, robots unhappy :/\n";
}
my $url = "";
my $port_del = "";
my $port_str = "";
my $extinf = "";
my $url_path = "";
my $clip = $client->remote_addr();
if (exists($streams{$stream})) {
my $is_multicast = 0;
# add force is_ip_local in check?
$is_multicast = 1 if (exists($streams{$stream}->{has_multicast}) && $delivery eq "multicast");
if ($is_multicast) {
$port_del = 20;
$extinf .= "Multicasted";
$url = $streams{$stream}->{multicast_ip};
} else {
#$port_del = 80;
$extinf .= "Unicasted";
$url = $base_url;
$url_path = $streams{$stream}->{main_url};
if($streams{$stream}->{ts_enabled} eq 1) {
$url_path =~ s/.flv/.ts/;
}
}
$port_del = $streams{$stream}->{preport} if (defined($streams{$stream}->{preport}));
$port_str = $streams{$stream}->{port};
$extinf .= " $streams{$stream}->{title}";
} else {
&error("No stream and/or delivery method, robots unhappy :-/");
}
#print out new file
print $client->header(-type => "application/vlc",
"-Content-disposition" => "attachment; filename=tg-".$delivery."-".$stream.".vlc"
);
print "#EXTM3U\n";
print "#EXTINF:-1,TG$tg $extinf\n";
if(defined $interlaced && $interlaced == 1) {
print "#EXTVLCOPT:deinterlace=1\n";
print "#EXTVLCOPT:deinterlace-mode=linear\n";
}
if ($port_str == 80) {
print "$url$url_path\n";
} else {
print "$url:$port_del$port_str$url_path\n";
}
sub error($) {
my $message = shift;
print $client->header();
die($message."\n");
}
|