mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
If svdrphosts.conf contains only the address of the local host, the SVDRP port is opened only for the local host
This commit is contained in:
parent
97e4dbe773
commit
c198a25943
@ -2526,6 +2526,8 @@ Valdemaras Pipiras <valdemaras@ambernet.lt>
|
||||
|
||||
Manuel Reimer <Manuel.Reimer@gmx.de>
|
||||
for fixing saving terminal settings when running in background
|
||||
for making the SVDRP port open only for the local host if svdrphosts.conf
|
||||
contains only the address of the local host
|
||||
|
||||
Rene van den Braken <rene@vandenbraken.name>
|
||||
for reporting a bug in writing the PCR pid into the PMT in
|
||||
|
2
HISTORY
2
HISTORY
@ -6283,3 +6283,5 @@ Video Disk Recorder Revision History
|
||||
- The "Edit timer" menu can now set the folder for the recording from a list of
|
||||
folders stored in "folders.conf".
|
||||
- Updated the Italian OSD texts (thanks to Diego Pierotto).
|
||||
- If svdrphosts.conf contains only the address of the local host, the SVDRP port
|
||||
is opened only for the local host (thanks to Manuel Reimer).
|
||||
|
18
config.c
18
config.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: config.c 2.7 2010/01/16 14:27:29 kls Exp $
|
||||
* $Id: config.c 2.8 2010/01/17 12:22:56 kls Exp $
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
@ -118,6 +118,11 @@ bool cSVDRPhost::Parse(const char *s)
|
||||
return result != 0 && (mask != 0 || addr.s_addr == 0);
|
||||
}
|
||||
|
||||
bool cSVDRPhost::IsLocalhost(void)
|
||||
{
|
||||
return addr.s_addr == htonl(INADDR_LOOPBACK);
|
||||
}
|
||||
|
||||
bool cSVDRPhost::Accepts(in_addr_t Address)
|
||||
{
|
||||
return (Address & mask) == (addr.s_addr & mask);
|
||||
@ -276,6 +281,17 @@ cCommands RecordingCommands;
|
||||
|
||||
cSVDRPhosts SVDRPhosts;
|
||||
|
||||
bool cSVDRPhosts::LocalhostOnly(void)
|
||||
{
|
||||
cSVDRPhost *h = First();
|
||||
while (h) {
|
||||
if (!h->IsLocalhost())
|
||||
return false;
|
||||
h = (cSVDRPhost *)h->Next();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cSVDRPhosts::Acceptable(in_addr_t Address)
|
||||
{
|
||||
cSVDRPhost *h = First();
|
||||
|
4
config.h
4
config.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: config.h 2.18 2010/01/16 13:33:10 kls Exp $
|
||||
* $Id: config.h 2.19 2010/01/17 12:22:21 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
@ -72,6 +72,7 @@ private:
|
||||
public:
|
||||
cSVDRPhost(void);
|
||||
bool Parse(const char *s);
|
||||
bool IsLocalhost(void);
|
||||
bool Accepts(in_addr_t Address);
|
||||
};
|
||||
|
||||
@ -190,6 +191,7 @@ class cCommands : public cConfig<cCommand> {};
|
||||
|
||||
class cSVDRPhosts : public cConfig<cSVDRPhost> {
|
||||
public:
|
||||
bool LocalhostOnly(void);
|
||||
bool Acceptable(in_addr_t Address);
|
||||
};
|
||||
|
||||
|
4
svdrp.c
4
svdrp.c
@ -10,7 +10,7 @@
|
||||
* and interact with the Video Disk Recorder - or write a full featured
|
||||
* graphical interface that sits on top of an SVDRP connection.
|
||||
*
|
||||
* $Id: svdrp.c 2.7 2010/01/03 15:41:26 kls Exp $
|
||||
* $Id: svdrp.c 2.8 2010/01/17 12:23:31 kls Exp $
|
||||
*/
|
||||
|
||||
#include "svdrp.h"
|
||||
@ -79,7 +79,7 @@ bool cSocket::Open(void)
|
||||
struct sockaddr_in name;
|
||||
name.sin_family = AF_INET;
|
||||
name.sin_port = htons(port);
|
||||
name.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
name.sin_addr.s_addr = SVDRPhosts.LocalhostOnly() ? htonl(INADDR_LOOPBACK) : htonl(INADDR_ANY);
|
||||
if (bind(sock, (struct sockaddr *)&name, sizeof(name)) < 0) {
|
||||
LOG_ERROR;
|
||||
Close();
|
||||
|
Loading…
Reference in New Issue
Block a user