Commit 52b4069a authored by Devaev Maxim's avatar Devaev Maxim

Added methods for get GID variables from login.defs

parent 0510a09a
......@@ -84,7 +84,12 @@
<!-- fmod_local_groups -->
<policy context="default">
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.localGroups" send_member="minGid"/>
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.localGroups" send_member="maxGid"/>
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.localGroups" send_member="minSystemGid"/>
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.localGroups" send_member="maxSystemGid"/>
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.localGroups" send_member="groupsChanged"/>
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.localGroup" send_member="realName"/>
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.localGroup" send_member="gid"/>
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.localGroup" send_member="users"/>
......
......@@ -17,6 +17,7 @@ import settingsd.validators.os
import settingsd.tools as tools
import settingsd.tools.dbus
import settingsd.tools.process
import settingsd.tools.editors
##### Private constants #####
......@@ -106,6 +107,24 @@ class LocalGroups(service.FunctionObject) :
logger.verbose("{mod}: Request to remove local group \"%s\"" % (group_name))
return tools.process.execProcess("%s %s" % (config.value(SERVICE_NAME, "groupdel_prog_path"), group_name), False)[2]
###
@service.functionMethod(LOCAL_GROUPS_METHODS_NAMESPACE, out_signature="i")
def minGid(self) :
return self.loginDefsValue("GID_MIN")
@service.functionMethod(LOCAL_GROUPS_METHODS_NAMESPACE, out_signature="i")
def maxGid(self) :
return self.loginDefsValue("GID_MAX")
@service.functionMethod(LOCAL_GROUPS_METHODS_NAMESPACE, out_signature="i")
def minSystemGid(self) :
return self.loginDefsValue("SYS_GID_MIN")
@service.functionMethod(LOCAL_GROUPS_METHODS_NAMESPACE, out_signature="i")
def maxSystemGid(self) :
return self.loginDefsValue("SYS_GID_MAX")
### DBus signals ###
......@@ -114,6 +133,16 @@ class LocalGroups(service.FunctionObject) :
pass
### Private ###
def loginDefsValue(self, variable_name) :
editor = tools.editors.PlainEditor(delimiter = "", quotes_list = [])
editor.open(config.value(SERVICE_NAME, "login_defs_config_file_path"))
values_list = editor.value(variable_name)
editor.close()
return ( int(values_list[-1]) if len(values_list) > 0 else -1 )
##### Public classes #####
class Service(service.Service, pyinotify.ThreadedNotifier) :
def __init__(self) :
......@@ -168,14 +197,17 @@ class Service(service.Service, pyinotify.ThreadedNotifier) :
(SERVICE_NAME, "groupdel_prog_path", "/usr/sbin/groupdel", str),
(SERVICE_NAME, "groupmod_prog_path", "/usr/sbin/groupmod", str),
(SERVICE_NAME, "usermod_prog_path", "/usr/sbin/usermod", str),
(SERVICE_NAME, "group_config_file_path", "/etc/group", str)
(SERVICE_NAME, "group_config_file_path", "/etc/group", str),
(SERVICE_NAME, "login_defs_config_file_path", "/etc/login.defs", str)
]
### Private ###
def inotifyEvent(self, event) :
if event.dir or event.pathname != config.value(SERVICE_NAME, "group_config_file_path") :
if event.dir or not event.pathname in ( config.value(SERVICE_NAME, "group_config_file_path"),
config.value(SERVICE_NAME, "login_defs_config_file_path") ) :
return
group_names_list = self.localGroups()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment