]>
Commit | Line | Data |
---|---|---|
97de2cae MT |
1 | #!/usr/bin/perl |
2 | # | |
3 | # IPFire CGIs | |
4 | # | |
5 | # This code is distributed under the terms of the GPL | |
6 | # | |
7 | # (c) The IPFire Team | |
8 | # | |
9 | ||
10 | use strict; | |
11 | # enable only the following on debugging purpose | |
12 | use warnings; | |
13 | use CGI::Carp 'fatalsToBrowser'; | |
14 | ||
15 | require '/var/ipfire/general-functions.pl'; | |
16 | require "${General::swroot}/lang.pl"; | |
17 | require "${General::swroot}/header.pl"; | |
18 | ||
19 | my %upnpsettings = (); | |
97de2cae MT |
20 | my %netsettings = (); |
21 | my $message = ""; | |
22 | my $errormessage = ""; | |
23 | my %selected= () ; | |
97de2cae | 24 | |
7654ad59 | 25 | my %servicenames =('UPnP Daemon' => 'upnpd',); |
97de2cae MT |
26 | |
27 | &Header::showhttpheaders(); | |
2abc4aad MT |
28 | ############################################################################################################################ |
29 | ############################################### Setzen von Standartwerten ################################################## | |
30 | ||
31 | $upnpsettings{'DEBUGMODE'} = '3'; | |
32 | $upnpsettings{'FORWARDRULES'} = 'yes'; | |
2abc4aad MT |
33 | $upnpsettings{'DOWNSTREAM'} = '900000'; |
34 | $upnpsettings{'UPSTREAM'} = '16000000'; | |
35 | $upnpsettings{'DESCRIPTION'} = 'gatedesc.xml'; | |
36 | $upnpsettings{'XML'} = '/etc/linuxigd'; | |
97de2cae | 37 | $upnpsettings{'ENABLED'} = 'off'; |
7654ad59 | 38 | $upnpsettings{'friendlyName'} = 'IpFire Upnp Device'; |
97de2cae MT |
39 | ### Values that have to be initialized |
40 | $upnpsettings{'ACTION'} = ''; | |
41 | ||
42 | &General::readhash("${General::swroot}/upnp/settings", \%upnpsettings); | |
7654ad59 | 43 | &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); |
97de2cae MT |
44 | &Header::getcgihash(\%upnpsettings); |
45 | ||
46 | &Header::openpage('UPnP', 1, ''); | |
47 | &Header::openbigbox('100%', 'left', '', $errormessage); | |
48 | ||
49 | ############################################################################################################################ | |
2abc4aad | 50 | ################################################### Speichern der Config ################################################### |
97de2cae MT |
51 | |
52 | if ($upnpsettings{'ACTION'} eq $Lang::tr{'save'}) | |
7654ad59 CS |
53 | { |
54 | $upnpsettings{'DOWNSTREAM'} = $upnpsettings{'DOWNSTREAM'} * 8; | |
55 | $upnpsettings{'UPSTREAM'} = $upnpsettings{'UPSTREAM'} * 8; | |
56 | &General::writehash("${General::swroot}/upnp/settings", \%upnpsettings); | |
2abc4aad | 57 | |
5fd30232 MT |
58 | open (FILE, ">${General::swroot}/upnp/upnpd.conf") or die "Can't save the upnp config: $!"; |
59 | flock (FILE, 2); | |
7654ad59 CS |
60 | |
61 | print FILE <<END | |
2abc4aad MT |
62 | |
63 | # UPnP Config by Ipfire Project | |
64 | ||
65 | debug_mode = $upnpsettings{'DEBUGMODE'} | |
66 | insert_forward_rules = $upnpsettings{'FORWARDRULES'} | |
7654ad59 CS |
67 | forward_chain_name = FORWARD |
68 | prerouting_chain_name = PORTFW | |
2abc4aad MT |
69 | upstream_bitrate = $upnpsettings{'DOWNSTREAM'} |
70 | downstream_bitrate = $upnpsettings{'UPSTREAM'} | |
71 | description_document_name = $upnpsettings{'DESCRIPTION'} | |
72 | xml_document_path = $upnpsettings{'XML'} | |
73 | ||
74 | END | |
75 | ; | |
7654ad59 CS |
76 | close FILE; |
77 | system("/usr/local/bin/upnpctrl upnpxml $upnpsettings{'XML'} $upnpsettings{'DESCRIPTION'} $upnpsettings{'manufacturer'}"); | |
78 | } | |
97de2cae | 79 | elsif ($upnpsettings{'ACTION'} eq 'Start') |
7654ad59 CS |
80 | { |
81 | $upnpsettings{'ENABLED'} = 'on'; | |
82 | &General::writehash("${General::swroot}/upnp/settings", \%upnpsettings); | |
83 | system("/usr/local/bin/upnpctrl upnpdstart $netsettings{'RED_DEV'} $netsettings{'GREEN_DEV'}"); | |
84 | } | |
97de2cae | 85 | elsif ($upnpsettings{'ACTION'} eq 'Stop') |
7654ad59 CS |
86 | { |
87 | $upnpsettings{'ENABLED'} = 'off'; | |
88 | &General::writehash("${General::swroot}/upnp/settings", \%upnpsettings); | |
89 | system("/usr/local/bin/upnpctrl stop"); | |
90 | } | |
97de2cae | 91 | elsif ($upnpsettings{'ACTION'} eq $Lang::tr{'restart'}) |
7654ad59 CS |
92 | { |
93 | &General::writehash("${General::swroot}/upnp/settings", \%upnpsettings); | |
94 | system("/usr/local/bin/upnpctrl stop"); | |
95 | system("/usr/local/bin/upnpctrl start $netsettings{'RED_DEV'} $netsettings{'GREEN_DEV'}"); | |
96 | } | |
97de2cae MT |
97 | |
98 | &General::readhash("${General::swroot}/upnp/settings", \%upnpsettings); | |
7654ad59 CS |
99 | $upnpsettings{'DOWNSTREAM'} = $upnpsettings{'DOWNSTREAM'} / 8; |
100 | $upnpsettings{'UPSTREAM'} = $upnpsettings{'UPSTREAM'} / 8; | |
97de2cae | 101 | |
7654ad59 CS |
102 | if ($errormessage) |
103 | { | |
104 | &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); | |
105 | print "<class name='base'>$errormessage\n"; | |
106 | print " </class>\n"; | |
107 | &Header::closebox(); | |
108 | } | |
97de2cae MT |
109 | |
110 | ############################################################################################################################ | |
111 | ############################################################################################################################ | |
112 | ||
113 | &Header::openbox('100%', 'center', 'UPnP'); | |
114 | print <<END | |
7654ad59 CS |
115 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> |
116 | <table width='95%' cellspacing='0'> | |
97de2cae MT |
117 | END |
118 | ; | |
7654ad59 CS |
119 | if ( $message ne "" ) {print "<tr><td colspan='3' align='center'><font color='red'>$message</font>";} |
120 | ||
121 | my $lines = 0; | |
122 | my $key = ''; | |
123 | foreach $key (sort keys %servicenames) | |
124 | { | |
125 | if ($lines % 2) | |
126 | {print "<tr bgcolor='${Header::table1colour}'>\n";} | |
127 | else | |
128 | {print "<tr bgcolor='${Header::table2colour}'>\n"; } | |
129 | ||
130 | print "<td align='left'>$key\n"; | |
131 | my $shortname = $servicenames{$key}; | |
132 | my $status = &isrunning($shortname); | |
133 | print "$status\n"; | |
134 | $lines++; | |
135 | } | |
5fd30232 | 136 | |
5fd30232 | 137 | print <<END |
7654ad59 CS |
138 | <tr><td align='left'>Alle Dienste:</td><td align='center' colspan='2'> |
139 | <input type='submit' name='ACTION' value='Start' /> | |
140 | <input type='submit' name='ACTION' value='Stop' /> | |
141 | <input type='submit' name='ACTION' value='$Lang::tr{'restart'}' /> | |
142 | </table> | |
5fd30232 | 143 | </form> |
7654ad59 | 144 | <br /> |
5fd30232 | 145 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> |
2abc4aad | 146 | <table width='95%' cellspacing='0'> |
5fd30232 MT |
147 | <tr><td colspan='2' align='left' bgcolor='${Header::table1colour}'><b>$Lang::tr{'options'}</b></td></tr> |
148 | <tr><td colspan='2' align='left'><br></br></td></tr> | |
7654ad59 CS |
149 | <tr><td align='left'>Debug Mode:</td><td><input type='text' name='DEBUGMODE' value='$upnpsettings{'DEBUGMODE'}' size="30" /></td></tr> |
150 | <tr><td align='left'>Forward Rules:</td><td><input type='text' name='FORWARDRULES' value='$upnpsettings{'FORWARDRULES'}' size="30" /></td></tr> | |
151 | <tr><td align='left' colspan='2'><br /></td></tr> | |
152 | <tr><td align='left'>Down Stream in KB:</td><td><input type='text' name='DOWNSTREAM' value='$upnpsettings{'DOWNSTREAM'}' size="30" /></td></tr> | |
153 | <tr><td align='left'>Up Strean in KB:</td><td><input type='text' name='UPSTREAM' value='$upnpsettings{'UPSTREAM'}' size="30" /></td></tr> | |
154 | <tr><td align='left' colspan='2'><br /></td></tr> | |
155 | <tr><td align='left'>XML Document:</td><td><input type='text' name='XML' value='$upnpsettings{'XML'}' size="30" /></td></tr> | |
156 | <tr><td align='left'>Description Document:</td><td><input type='text' name='DESCRIPTION' value='$upnpsettings{'DESCRIPTION'}' size="30" /></td></tr> | |
157 | <tr><td align='left'>Upnp Device Name:</td><td><input type='text' name='friendlyName' value='$upnpsettings{'friendlyName'}' size="30" /></td></tr> | |
5fd30232 | 158 | <tr><td colspan='2' align='left'><br></br></td></tr> |
fa7be659 CS |
159 | <tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value=$Lang::tr{'save'} /> |
160 | <input type='image' alt=$Lang::tr{'save'} src='/images/floppy.gif' /></td></tr> | |
2abc4aad | 161 | </table></form> |
7654ad59 CS |
162 | <br /> |
163 | <hr /> | |
97de2cae MT |
164 | END |
165 | ; | |
166 | &Header::closebox(); | |
167 | ||
168 | &Header::closebigbox(); | |
169 | &Header::closepage(); | |
170 | ||
171 | ############################################################################################################################ | |
172 | ############################################################################################################################ | |
173 | ||
174 | sub isrunning | |
7654ad59 CS |
175 | { |
176 | my $cmd = $_[0]; | |
fa7be659 | 177 | my $status = "<td bgcolor='${Header::colourred}' align='center'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td>"; |
7654ad59 CS |
178 | my $pid = ''; |
179 | my $testcmd = ''; | |
180 | my $exename; | |
181 | ||
182 | $cmd =~ /(^[a-z]+)/; | |
183 | $exename = $1; | |
184 | ||
185 | if (open(FILE, "/var/run/${cmd}.pid")) | |
186 | { | |
187 | $pid = <FILE>; chomp $pid; | |
188 | close FILE; | |
189 | if (open(FILE, "/proc/${pid}/status")) | |
190 | { | |
191 | while (<FILE>) | |
192 | {if (/^Name:\W+(.*)/) {$testcmd = $1; }} | |
193 | close FILE; | |
194 | if ($testcmd =~ /$exename/) | |
195 | {$status = "<td bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>";} | |
196 | } | |
197 | } | |
198 | ||
199 | return $status; | |
200 | } |