summaryrefslogtreecommitdiff
path: root/packages/extra/users/users.pp
diff options
context:
space:
mode:
Diffstat (limited to 'packages/extra/users/users.pp')
-rw-r--r--packages/extra/users/users.pp331
1 files changed, 0 insertions, 331 deletions
diff --git a/packages/extra/users/users.pp b/packages/extra/users/users.pp
deleted file mode 100644
index d5f221488b..0000000000
--- a/packages/extra/users/users.pp
+++ /dev/null
@@ -1,331 +0,0 @@
-unit users;
-
-Interface
-
-uses pwd,shadow,grp,Linux,SysUtils,Classes;
-
-Type
- EUserLookupError = Class(Exception);
- EGroupLookupError = Class(Exception);
- EShadowLookupError = Class(Exception);
-
-{ User functions }
-
-Function getpwnam(Const UserName: String) : PPasswordRecord;
-Procedure GetUserData(Const UserName : String; Var Data : TPasswordRecord); overload;
-Procedure GetUserData(Uid : Integer; Var Data : TPasswordRecord); overload;
-function GetUserName(UID : Integer) : String;
-function GetUserId(Const UserName : String) : Integer;
-function GetUserGid(Const UserName : String) : Integer;
-function GetUserDir(Const UserName : String): String;
-function GetUserDescription(Const UserName : String): String;
-Procedure GetUserList(List : Tstrings);overload;
-Procedure GetUserList(List : TStrings; WithIDs : Boolean);overload;
-
-{ Group functions }
-
-Function getgrnam(Const GroupName: String) : PGroup;
-Procedure GetGroupData(Const GroupName : String; Var Data : TGroup); overload;
-Procedure GetGroupData(Gid : Integer; Var Data : TGroup); overload;
-function GetGroupName(GID : Integer) : String;
-function GetGroupId(Const GroupName : String) : Integer;
-Procedure GetGroupList(List : Tstrings);overload;
-Procedure GetGroupList(List : TStrings; WithIDs : Boolean);overload;
-Procedure GetGroupMembers(GID : Integer;List : TStrings);overload;
-Procedure GetGroupMembers(Const GroupName : String;List : TStrings);overload;
-
-{ Shadow password functions }
-
-function getspnam(UserName : String): PPasswordFileEntry;
-function sgetspent(Line : String): PPasswordFileEntry;
-Procedure GetUserShadowData(Const UserName : String; Var Data : TPasswordFileEntry);overload;
-Procedure GetUserShadowData(UID : Integer; Var Data : TPasswordFileEntry);overload;
-
-{ Extra functions }
-
-Function GetUserGroup(Const UserName : String) : String;
-
-Implementation
-
-ResourceString
-
-EnoSuchUserName = 'Unknown username: "%s"';
-EnoSuchUserID = 'Unknown user ID: %d';
-EnoSuchGroupName = 'Unknown groupname: "%s"';
-EnoSuchGroupID = 'Unknown group ID: %d';
-ENoShadowEntry = 'No shadow file entry for "%s"';
-EShadowNotPermitted = 'Not enough permissions to access shadow password file';
-
-Function getpwnam(Const UserName: String) : PPasswordRecord;
-
-begin
- Result:=pwd.getpwnam(Pchar(UserName));
-end;
-
-Procedure GetUserData(Const UserName : String; Var Data : TPasswordRecord);
-
-Var P : PPasswordRecord;
-
-begin
- P:=Getpwnam(UserName);
- If P<>Nil then
- Data:=P^
- else
- Raise EUserLookupError.CreateFmt(ENoSuchUserName,[UserName]);
-end;
-
-Procedure GetUserData(Uid : Integer; Var Data : TPasswordRecord);
-
-Var P : PPasswordRecord;
-
-begin
- P:=Getpwuid(Uid);
- If P<>Nil then
- Data:=P^
- else
- Raise EUserLookupError.CreateFmt(ENoSuchUserID,[Uid]);
-end;
-
-function GetUserName(UID : Integer) : String;
-
-Var
- UserData : TPasswordRecord;
-
-begin
- GetuserData(UID,UserData);
- Result:=strpas(UserData.pw_Name);
-end;
-
-function GetUserId(Const UserName : String) : Integer;
-
-Var
- UserData : TPasswordRecord;
-
-begin
- GetUserData(UserName,UserData);
- Result:=UserData.pw_uid;
-end;
-
-function GetUserGId(Const UserName : String) : Integer;
-
-Var
- UserData : TPasswordRecord;
-
-begin
- GetUserData(UserName,UserData);
- Result:=UserData.pw_gid;
-end;
-
-function GetUserDir(Const UserName : String): String;
-
-Var
- UserData : TPasswordRecord;
-
-begin
- GetUserData(UserName,UserData);
- Result:=strpas(UserData.pw_dir);
-end;
-
-function GetUserDescription(Const UserName : String): String;
-
-Var
- UserData : TPasswordRecord;
-
-begin
- GetUserData(UserName,UserData);
- Result:=strpas(UserData.pw_gecos);
-end;
-
-Procedure GetUserList(List : Tstrings);
-
-begin
- GetUserList(List,False);
-end;
-
-Procedure GetUserList(List : TStrings; WithIDs : Boolean);
-
-Var
- P : PPasswordRecord;
-
-begin
- List.Clear;
- setpwent;
- try
- Repeat
- P:=getpwent;
- If P<>Nil then
- begin
- If WithIDs then
- List.Add(Format('%d=%s',[P^.pw_uid,strpas(p^.pw_name)]))
- else
- List.Add(strpas(p^.pw_name));
- end;
- until (P=Nil);
- finally
- endpwent;
- end;
-end;
-
-{ ---------------------------------------------------------------------
- Group Functions
- ---------------------------------------------------------------------}
-
-
-Function getgrnam(Const GroupName: String) : PGroup;
-
-begin
- Result:=grp.getgrnam(Pchar(GroupName));
-end;
-
-Procedure GetGroupData(Const GroupName : String; Var Data : TGroup); overload;
-
-Var P : PGroup;
-
-begin
- P:=Getgrnam(GroupName);
- If P<>Nil then
- Data:=P^
- else
- Raise EGroupLookupError.CreateFmt(ENoSuchGroupName,[GroupName]);
-end;
-
-Procedure GetGroupData(Gid : Integer; Var Data : TGroup); overload;
-
-Var P : PGroup;
-
-begin
- P:=Getgrgid(gid);
- If P<>Nil then
- Data:=P^
- else
- Raise EGroupLookupError.CreateFmt(ENoSuchGroupID,[Gid]);
-end;
-
-function GetGroupName(GID : Integer) : String;
-
-Var
- G : TGroup;
-
-begin
- GetGroupData(Gid,G);
- Result:=StrPas(G.gr_name);
-end;
-
-function GetGroupId(Const GroupName : String) : Integer;
-
-Var
- G : TGroup;
-
-begin
- GetGroupData(GroupName,G);
- Result:=G.gr_gid;
-end;
-
-Procedure GetGroupList(List : Tstrings);overload;
-
-begin
- GetGroupList(List,False);
-end;
-
-Procedure GetGroupList(List : TStrings; WithIDs : Boolean);overload;
-
-Var
- G : PGroup;
-
-begin
- List.Clear;
- setgrent;
- try
- Repeat
- G:=getgrent;
- If G<>Nil then
- begin
- If WithIDs then
- List.Add(Format('%d=%s',[G^.gr_gid,strpas(G^.gr_name)]))
- else
- List.Add(strpas(G^.gr_name));
- end;
- until (G=Nil);
- finally
- endgrent;
- end;
-end;
-
-Function PCharListToStrings(P : PPChar; List : TStrings) : Integer;
-
-begin
- List.Clear;
- While P^<>Nil do
- begin
- List.Add(StrPas(P^));
- P:=PPChar(PChar(P)+SizeOf(PChar));
- end;
- Result:=List.Count;
-end;
-
-
-Procedure GetGroupMembers(GID : Integer;List : TStrings);
-
-Var
- G : TGroup;
-
-begin
- GetGroupData(GID,G);
- PCharListToStrings(G.gr_mem,List);
-end;
-
-Procedure GetGroupMembers(Const GroupName : String;List : TStrings);
-
-Var
- G : TGroup;
-
-begin
- GetGroupData(GroupName,G);
- PCharListToStrings(g.gr_mem,List);
-end;
-
-{ Shadow password functions }
-
-function getspnam(UserName : String): PPasswordFileEntry;
-
-begin
- result:=shadow.getspnam(Pchar(UserName));
-end;
-
-function sgetspent(Line : String): PPasswordFileEntry;
-
-begin
- Result:=shadow.sgetspent(Pchar(Line));
-end;
-
-Procedure GetUserShadowData(Const UserName : String; Var Data : TPasswordFileEntry);
-
-Var
- P : PPasswordFileEntry;
-
-begin
- P:=getspnam(UserName);
- If P=Nil then
- If (GetUID<>0) and (GetEUID<>0) then
- Raise EShadowLookupError.Create(EShadowNotPermitted)
- else
- Raise EShadowLookupError.CreateFmt(ENoShadowEntry,[UserName])
- else
- Data:=P^;
-end;
-
-Procedure GetUserShadowData(UID : Integer; Var Data : TPasswordFileEntry);
-
-begin
- GetUserShadowData(GetUserName(UID),Data);
-end;
-
-{ Extra functions }
-
-Function GetUserGroup(Const UserName : String) : String;
-
-begin
- GetGroupName(GetUserGid(UserName));
-end;
-
-end.