added ListenAddress configuration option
This commit is contained in:
parent
5d29a7127b
commit
6cbc09be53
@ -36,6 +36,11 @@ For any of the following parameter, if it's specified more than one time the las
|
|||||||
The options to be specified in the \fB[globals]\fR section are the following:
|
The options to be specified in the \fB[globals]\fR section are the following:
|
||||||
.br
|
.br
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\fBListenAddress\fR=\fIip address\fR
|
||||||
|
Specifies sesman listening address. Default is 0.0.0.0 (all interfaces)
|
||||||
|
.br
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fBListenPort\fR=\fIport number\fR
|
\fBListenPort\fR=\fIport number\fR
|
||||||
Specifies sesman listening port. Default is 3350
|
Specifies sesman listening port. Default is 3350
|
||||||
@ -165,6 +170,8 @@ This is an example \fBsesman.ini\fR:
|
|||||||
|
|
||||||
[Globals]
|
[Globals]
|
||||||
.br
|
.br
|
||||||
|
ListenAddress=127.0.0.1
|
||||||
|
.br
|
||||||
ListenPort=3350
|
ListenPort=3350
|
||||||
.br
|
.br
|
||||||
EnableUserWindowManager=1
|
EnableUserWindowManager=1
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
* @file config.c
|
* @file config.c
|
||||||
* @brief User authentication code
|
* @brief User authentication code
|
||||||
* @author Simone Fedele @< simo [at] esseemme [dot] org @>
|
* @author Simone Fedele @< simo [at] esseemme [dot] org @>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "arch.h"
|
#include "arch.h"
|
||||||
@ -107,6 +107,7 @@ config_read_globals(int file, struct config_sesman* cf, struct list* param_n,
|
|||||||
list_clear(param_n);
|
list_clear(param_n);
|
||||||
|
|
||||||
/* resetting the struct */
|
/* resetting the struct */
|
||||||
|
cf->listen_address[0] = '\0';
|
||||||
cf->listen_port[0] = '\0';
|
cf->listen_port[0] = '\0';
|
||||||
cf->enable_user_wm = 0;
|
cf->enable_user_wm = 0;
|
||||||
cf->user_wm[0] = '\0';
|
cf->user_wm[0] = '\0';
|
||||||
@ -132,9 +133,17 @@ config_read_globals(int file, struct config_sesman* cf, struct list* param_n,
|
|||||||
{
|
{
|
||||||
g_strncpy(cf->listen_port, (char*)list_get_item(param_v, i), 15);
|
g_strncpy(cf->listen_port, (char*)list_get_item(param_v, i), 15);
|
||||||
}
|
}
|
||||||
|
else if (0 == g_strcasecmp(buf, SESMAN_CFG_ADDRESS))
|
||||||
|
{
|
||||||
|
g_strncpy(cf->listen_address, (char*)list_get_item(param_v, i), 31);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* checking for missing required parameters */
|
/* checking for missing required parameters */
|
||||||
|
if ('\0' == cf->listen_address[0])
|
||||||
|
{
|
||||||
|
g_strncpy(cf->listen_address, "0.0.0.0", 8);
|
||||||
|
}
|
||||||
if ('\0' == cf->listen_port[0])
|
if ('\0' == cf->listen_port[0])
|
||||||
{
|
{
|
||||||
g_strncpy(cf->listen_port, "3350", 5);
|
g_strncpy(cf->listen_port, "3350", 5);
|
||||||
@ -150,6 +159,7 @@ config_read_globals(int file, struct config_sesman* cf, struct list* param_n,
|
|||||||
|
|
||||||
/* showing read config */
|
/* showing read config */
|
||||||
g_printf("sesman config:\r\n");
|
g_printf("sesman config:\r\n");
|
||||||
|
g_printf("\tListenAddress: %s\r\n", cf->listen_address);
|
||||||
g_printf("\tListenPort: %s\r\n", cf->listen_port);
|
g_printf("\tListenPort: %s\r\n", cf->listen_port);
|
||||||
g_printf("\tEnableUserWindowManager: %i\r\n", cf->enable_user_wm);
|
g_printf("\tEnableUserWindowManager: %i\r\n", cf->enable_user_wm);
|
||||||
g_printf("\tUserWindowManager: %s\r\n", cf->user_wm);
|
g_printf("\tUserWindowManager: %s\r\n", cf->user_wm);
|
||||||
@ -302,7 +312,7 @@ config_read_sessions(int file, struct config_sessions* se, struct list* param_n,
|
|||||||
se->max_idle_time=0;
|
se->max_idle_time=0;
|
||||||
se->max_disc_time=0;
|
se->max_disc_time=0;
|
||||||
se->kill_disconnected=0;
|
se->kill_disconnected=0;
|
||||||
|
|
||||||
file_read_section(file, SESMAN_CFG_SESSIONS, param_n, param_v);
|
file_read_section(file, SESMAN_CFG_SESSIONS, param_n, param_v);
|
||||||
for (i = 0; i < param_n->count; i++)
|
for (i = 0; i < param_n->count; i++)
|
||||||
{
|
{
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
* @file config.h
|
* @file config.h
|
||||||
* @brief User authentication definitions
|
* @brief User authentication definitions
|
||||||
* @author Simone Fedele @< simo [at] esseemme [dot] org @>
|
* @author Simone Fedele @< simo [at] esseemme [dot] org @>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_H
|
#ifndef CONFIG_H
|
||||||
@ -44,6 +44,7 @@
|
|||||||
|
|
||||||
#define SESMAN_CFG_GLOBALS "Globals"
|
#define SESMAN_CFG_GLOBALS "Globals"
|
||||||
#define SESMAN_CFG_DEFWM "DefaultWindowManager"
|
#define SESMAN_CFG_DEFWM "DefaultWindowManager"
|
||||||
|
#define SESMAN_CFG_ADDRESS "ListenAddress"
|
||||||
#define SESMAN_CFG_PORT "ListenPort"
|
#define SESMAN_CFG_PORT "ListenPort"
|
||||||
#define SESMAN_CFG_ENABLE_USERWM "EnableUserWindowManager"
|
#define SESMAN_CFG_ENABLE_USERWM "EnableUserWindowManager"
|
||||||
#define SESMAN_CFG_USERWM "UserWindowManager"
|
#define SESMAN_CFG_USERWM "UserWindowManager"
|
||||||
@ -141,6 +142,11 @@ struct config_sessions
|
|||||||
*/
|
*/
|
||||||
struct config_sesman
|
struct config_sesman
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var listen_address
|
||||||
|
* @brief Listening address
|
||||||
|
*/
|
||||||
|
char listen_address[32];
|
||||||
/**
|
/**
|
||||||
* @var listen_port
|
* @var listen_port
|
||||||
* @brief Listening port
|
* @brief Listening port
|
||||||
|
@ -50,7 +50,7 @@ sesman_main_loop(void)
|
|||||||
log_message(LOG_LEVEL_INFO, "listening...");
|
log_message(LOG_LEVEL_INFO, "listening...");
|
||||||
g_sck = g_tcp_socket();
|
g_sck = g_tcp_socket();
|
||||||
g_tcp_set_non_blocking(g_sck);
|
g_tcp_set_non_blocking(g_sck);
|
||||||
error = g_tcp_bind(g_sck, g_cfg.listen_port);
|
error = tcp_bind(g_sck, g_cfg.listen_address, g_cfg.listen_port);
|
||||||
if (error == 0)
|
if (error == 0)
|
||||||
{
|
{
|
||||||
error = g_tcp_listen(g_sck);
|
error = g_tcp_listen(g_sck);
|
||||||
|
23
sesman/tcp.c
23
sesman/tcp.c
@ -21,12 +21,18 @@
|
|||||||
*
|
*
|
||||||
* @file tcp.c
|
* @file tcp.c
|
||||||
* @brief Tcp stream funcions
|
* @brief Tcp stream funcions
|
||||||
* @author Jay Sorg
|
* @author Jay Sorg, Simone Fedele
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sesman.h"
|
#include "sesman.h"
|
||||||
|
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
int DEFAULT_CC
|
int DEFAULT_CC
|
||||||
tcp_force_recv(int sck, char* data, int len)
|
tcp_force_recv(int sck, char* data, int len)
|
||||||
@ -124,3 +130,16 @@ tcp_force_send(int sck, char* data, int len)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
int DEFAULT_CC
|
||||||
|
tcp_bind(int sck, char* addr, char* port)
|
||||||
|
{
|
||||||
|
struct sockaddr_in s;
|
||||||
|
|
||||||
|
memset(&s, 0, sizeof(struct sockaddr_in));
|
||||||
|
s.sin_family = AF_INET;
|
||||||
|
s.sin_port = htons(atoi(port));
|
||||||
|
s.sin_addr.s_addr = inet_addr(addr);
|
||||||
|
return bind(sck, (struct sockaddr*)&s, sizeof(struct sockaddr_in));
|
||||||
|
}
|
||||||
|
20
sesman/tcp.h
20
sesman/tcp.h
@ -18,10 +18,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @file tcp.h
|
* @file tcp.h
|
||||||
* @brief Tcp stream functions declarations
|
* @brief Tcp stream functions declarations
|
||||||
* @author Jay Sorg
|
* @author Jay Sorg, Simone Fedele
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -35,7 +35,7 @@
|
|||||||
* @param data Data buffer
|
* @param data Data buffer
|
||||||
* @param len Data buffer size
|
* @param len Data buffer size
|
||||||
* @return 0 on success, 1 on error
|
* @return 0 on success, 1 on error
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int DEFAULT_CC
|
int DEFAULT_CC
|
||||||
tcp_force_recv(int sck, char* data, int len);
|
tcp_force_recv(int sck, char* data, int len);
|
||||||
@ -47,9 +47,21 @@ tcp_force_recv(int sck, char* data, int len);
|
|||||||
* @param data Data buffer
|
* @param data Data buffer
|
||||||
* @param len Data buffer size
|
* @param len Data buffer size
|
||||||
* @return 0 on success, 1 on error
|
* @return 0 on success, 1 on error
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int DEFAULT_CC
|
int DEFAULT_CC
|
||||||
tcp_force_send(int sck, char* data, int len);
|
tcp_force_send(int sck, char* data, int len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Binds the listening socket
|
||||||
|
* @param sck Listening socket
|
||||||
|
* @param addr Listening address
|
||||||
|
* @param port Listening port
|
||||||
|
* @return 0 on success, -1 on error
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int DEFAULT_CC
|
||||||
|
tcp_bind(int sck, char* addr, char* port);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user