summaryrefslogtreecommitdiffstats
path: root/sesman/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'sesman/config.c')
-rw-r--r--sesman/config.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/sesman/config.c b/sesman/config.c
index 3861e413..d96bb45a 100644
--- a/sesman/config.c
+++ b/sesman/config.c
@@ -19,6 +19,9 @@
session manager - read config file
*/
+#include "sys/types.h"
+#include "grp.h"
+
#include "arch.h"
#include "list.h"
#include "file.h"
@@ -68,6 +71,9 @@ config_read(struct config_sesman* cfg)
/* read logging config */
config_read_logging(fd, &(cfg->log), param_n, param_v);
+ /* read security config */
+ config_read_security(fd, &(cfg->sec), param_n, param_v);
+
/* cleanup */
list_delete(sec);
list_delete(param_v);
@@ -85,6 +91,12 @@ config_read_globals(int file, struct config_sesman* cf, struct list* param_n,
list_clear(param_v);
list_clear(param_n);
+
+ /* resetting the struct */
+ cf->listen_port[0]='\0';
+ cf->enable_user_wm=0;
+ cf->user_wm[0]='\0';
+ cf->default_wm[0]='\0';
file_read_section(file, SESMAN_CFG_GLOBALS, param_n, param_v);
for (i = 0; i < param_n->count; i++)
@@ -108,6 +120,21 @@ config_read_globals(int file, struct config_sesman* cf, struct list* param_n,
}
}
+ /* checking for missing required parameters */
+ if ('\0'==cf->listen_port[0])
+ {
+ g_strncpy(cf->listen_port, "3350", 5);
+ }
+ if ('\0'==cf->user_wm[0])
+ {
+ cf->enable_user_wm=0;
+ }
+ if ('\0'==cf->default_wm[0])
+ {
+ g_strncpy(cf->default_wm, "startwm.sh", 11);
+ }
+
+ /* showing read config */
g_printf("sesman config:\r\n");
g_printf("\tListenPort: %s\r\n", cf->listen_port);
g_printf("\tEnableUserWindowManager: %i\r\n", cf->enable_user_wm);
@@ -158,6 +185,11 @@ config_read_logging(int file, struct log_config* lc, struct list* param_n,
}
}
+ if (0==lc->log_file)
+ {
+ lc->log_file=g_strdup("./sesman.log");
+ }
+
g_printf("logging configuration:\r\n");
g_printf("\tLogFile: %s\r\n",lc->log_file);
g_printf("\tLogLevel: %i\r\n", lc->log_level);
@@ -167,3 +199,62 @@ config_read_logging(int file, struct log_config* lc, struct list* param_n,
return 0;
}
+/******************************************************************************/
+int DEFAULT_CC
+config_read_security(int file, struct config_security* sc, struct list* param_n,
+ struct list* param_v)
+{
+ int i;
+ char* buf;
+
+ list_clear(param_v);
+ list_clear(param_n);
+
+ /* setting defaults */
+ sc->allow_root=0;
+ sc->ts_users_enable=0;
+ sc->ts_admins_enable=0;
+
+ file_read_section(file, SESMAN_CFG_SECURITY, param_n, param_v);
+ for (i = 0; i < param_n->count; i++)
+ {
+ buf = (char*)list_get_item(param_n, i);
+ if (0 == g_strncasecmp(buf, SESMAN_CFG_SEC_ALLOW_ROOT, 20))
+ {
+ sc->allow_root = text2bool((char*)list_get_item(param_v, i));
+ }
+ if (0 == g_strncasecmp(buf, SESMAN_CFG_SEC_USR_GROUP, 20))
+ {
+ sc->ts_users_enable=1;
+ sc->ts_users=(getgrnam((char*)list_get_item(param_v, i))->gr_gid);
+ }
+ if (0 == g_strncasecmp(buf, SESMAN_CFG_SEC_ADM_GROUP, 20))
+ {
+ sc->ts_admins_enable=1;
+ sc->ts_admins=(getgrnam((char*)list_get_item(param_v, i))->gr_gid);
+ }
+ }
+
+ /* printing security config */
+ g_printf("security configuration:\r\n");
+ g_printf("\tAllowRootLogin: %i\r\n",sc->allow_root);
+ if (sc->ts_users_enable)
+ {
+ g_printf("\tTSUsersGroup: %i\r\n", sc->ts_users);
+ }
+ else
+ {
+ g_printf("\tNo TSUsersGroup defined\r\n");
+ }
+ if (sc->ts_admins_enable)
+ {
+ g_printf("\tTSAdminsGroup: %i\r\n", sc->ts_admins);
+ }
+ else
+ {
+ g_printf("\tNo TSAdminsGroup defined\r\n");
+ }
+
+ return 0;
+}
+