Add pam_authentication module

parent de464448
......@@ -10,7 +10,7 @@ Packager: Devaev Maxim <mdevaev@etersoft.ru>
Source: %name-%version.tar
BuildArch: noarch
BuildRequires: python-dev
Requires: python-module-dbus, python-module-pyinotify
Requires: python3-module-dbus, python3-module-pam, python3-module-pyinotify
Requires: chkconfig, service, SysVinit, pm-utils, lsb-release, hwclock
%description
Extensible service to control the operating system via D-Bus.
......
......@@ -148,6 +148,11 @@
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.disks.smart"/>
</policy>
<!-- fmod_pam_authentication -->
<policy context="default">
<allow send_destination="org.etersoft.settingsd" send_interface="org.etersoft.settingsd.functions.pam"/>
</policy>
</busconfig>
......
......@@ -27,3 +27,6 @@ enabled = yes
[date_time]
enabled = yes
[pam_authentication]
enabled = yes
import os
from settingsd import const
from settingsd import config
from settingsd import service
from settingsd import shared
from pam import pam
SERVICE_NAME = "pam_authentication"
class PamAuthentication(service.FunctionObject) :
@service.functionMethod("pam", in_signature="ss", out_signature="b")
def authenticate(self, login, password):
authenticator = pam()
return authenticator.authenticate(login, password)
class Service(service.Service) :
def initService(self):
shared.Functions.addSharedObject(SERVICE_NAME, PamAuthentication(SERVICE_NAME, self))
@classmethod
def serviceName(self):
return SERVICE_NAME
......@@ -92,7 +92,7 @@ class SystemService(service.FunctionObject) :
@service.functionMethod(SYSTEM_SERVICE_METHODS_NAMESPACE, out_signature="i")
def status(self) :
proc_args_list = [ os.path.join(config.value(SERVICE_NAME, "initd_dir"), self.__system_service_name), "status"]
proc_args_list = ["serv", self.__system_service_name, "status"]
return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
......
......@@ -16,7 +16,7 @@ class SubprocessFailure(Exception) :
def execProcess(proc_args_list, proc_input = None, fatal_flag = True, confidential_input_flag = False) :
logger.debug("{submod}: Executing child process \"%s\"" % (str(proc_args_list)))
proc = subprocess.Popen(proc_args_list, shell=True, bufsize=1024, close_fds=True,
proc = subprocess.Popen(proc_args_list, bufsize=1024, close_fds=True,
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
env={ "LC_ALL" : "C" })
(proc_stdout, proc_stderr) = proc.communicate(proc_input)
......
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