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>
|
Manuel Reimer <Manuel.Reimer@gmx.de>
|
||||||
for fixing saving terminal settings when running in background
|
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>
|
Rene van den Braken <rene@vandenbraken.name>
|
||||||
for reporting a bug in writing the PCR pid into the PMT in
|
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
|
- The "Edit timer" menu can now set the folder for the recording from a list of
|
||||||
folders stored in "folders.conf".
|
folders stored in "folders.conf".
|
||||||
- Updated the Italian OSD texts (thanks to Diego Pierotto).
|
- 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
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* 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"
|
#include "config.h"
|
||||||
@ -118,6 +118,11 @@ bool cSVDRPhost::Parse(const char *s)
|
|||||||
return result != 0 && (mask != 0 || addr.s_addr == 0);
|
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)
|
bool cSVDRPhost::Accepts(in_addr_t Address)
|
||||||
{
|
{
|
||||||
return (Address & mask) == (addr.s_addr & mask);
|
return (Address & mask) == (addr.s_addr & mask);
|
||||||
@ -276,6 +281,17 @@ cCommands RecordingCommands;
|
|||||||
|
|
||||||
cSVDRPhosts SVDRPhosts;
|
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)
|
bool cSVDRPhosts::Acceptable(in_addr_t Address)
|
||||||
{
|
{
|
||||||
cSVDRPhost *h = First();
|
cSVDRPhost *h = First();
|
||||||
|
4
config.h
4
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* 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
|
#ifndef __CONFIG_H
|
||||||
@ -72,6 +72,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
cSVDRPhost(void);
|
cSVDRPhost(void);
|
||||||
bool Parse(const char *s);
|
bool Parse(const char *s);
|
||||||
|
bool IsLocalhost(void);
|
||||||
bool Accepts(in_addr_t Address);
|
bool Accepts(in_addr_t Address);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -190,6 +191,7 @@ class cCommands : public cConfig<cCommand> {};
|
|||||||
|
|
||||||
class cSVDRPhosts : public cConfig<cSVDRPhost> {
|
class cSVDRPhosts : public cConfig<cSVDRPhost> {
|
||||||
public:
|
public:
|
||||||
|
bool LocalhostOnly(void);
|
||||||
bool Acceptable(in_addr_t Address);
|
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
|
* and interact with the Video Disk Recorder - or write a full featured
|
||||||
* graphical interface that sits on top of an SVDRP connection.
|
* 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"
|
#include "svdrp.h"
|
||||||
@ -79,7 +79,7 @@ bool cSocket::Open(void)
|
|||||||
struct sockaddr_in name;
|
struct sockaddr_in name;
|
||||||
name.sin_family = AF_INET;
|
name.sin_family = AF_INET;
|
||||||
name.sin_port = htons(port);
|
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) {
|
if (bind(sock, (struct sockaddr *)&name, sizeof(name)) < 0) {
|
||||||
LOG_ERROR;
|
LOG_ERROR;
|
||||||
Close();
|
Close();
|
||||||
|
Loading…
Reference in New Issue
Block a user