1 #ifndef LIBRARIES_MULTIUSER_H 2 #define LIBRARIES_MULTIUSER_H 3 4 /* 5 multiuser.library include 6 7 Copyright © 2002-2003 The MorphOS Development Team, All Rights Reserved. 8 */ 9 10 #ifndef EXEC_TYPES_H 11 # include <exec/types.h> 12 #endif /* EXEC_TYPES_H */ 13 14 #ifndef EXEC_LISTS_H 15 # include <exec/lists.h> 16 #endif /* EXEC_LISTS_H */ 17 18 #ifndef EXEC_LIBRARIES_H 19 # include <exec/libraries.h> 20 #endif /* EXEC_LIBRARIES_H */ 21 22 #ifndef EXEC_EXECBASE_H 23 # include <exec/execbase.h> 24 #endif /* EXEC_EXECBASE_H */ 25 26 #ifndef EXEC_PORTS_H 27 # include <exec/ports.h> 28 #endif /* EXEC_PORTS_H */ 29 30 #ifndef LIBRARIES_DOS_H 31 # include <libraries/dos.h> 32 #endif /* LIBRARIES_DOS_H */ 33 34 #ifndef UTILITY_TAGITEM_H 35 # include <utility/tagitem.h> 36 #endif /* UTILITY_TAGITEM_H */ 37 38 #ifndef LIBRARIES_LOCALE_H 39 # include <libraries/locale.h> 40 #endif /* LIBRARIES_LOCALE_H */ 41 42 #pragma pack(2) 43 44 45 #define MULTIUSERNAME "multiuser.library" 46 #define MULTIUSERVERSION 39 47 48 #define MULTIUSERCATALOGNAME "multiuser.catalog" 49 #define MULTIUSERCATALOGVERSION 1 50 51 52 #define muOWNER_NOBODY 0x00000000 53 #define muOWNER_SYSTEM 0xffffffff 54 55 #define muMASK_UID 0xffff0000 56 #define muMASK_GID 0x0000ffff 57 58 #define muROOT_UID 0xffff 59 #define muROOT_GID 0xffff 60 61 #define muNOBODY_UID 0x0000 62 63 #define muUSERIDSIZE 32 64 #define muGROUPIDSIZE 32 65 #define muPASSWORDSIZE 32 66 #define muUSERNAMESIZE 220 67 #define muGROUPNAMESIZE 220 68 #define muHOMEDIRSIZE 256 69 #define muSHELLSIZE 256 70 71 #define muPasswd_FileName "passwd" 72 #define muGroup_FileName "MultiUser.group" 73 #define muConfig_FileName "MultiUser.config" 74 #define muLog_FileName "MultiUser.log" 75 #define muLastLogin_FileName ".lastlogin" 76 #define muProfile_FileName ".profile" 77 #define muPlan_FileName ".plan" 78 #define muKey_FileName ":.MultiUser.keyfile" 79 #define muT_Input (TAG_USER + 1) 80 #define muT_Output (TAG_USER + 2) 81 #define muT_Graphical (TAG_USER + 3) 82 #define muT_PubScrName (TAG_USER + 4) 83 #define muT_Task (TAG_USER + 5) 84 #define muT_Own (TAG_USER + 6) 85 #define muT_Global (TAG_USER + 7) 86 #define muT_Quiet (TAG_USER + 8) 87 #define muT_UserID (TAG_USER + 9) 88 #define muT_Password (TAG_USER + 10) 89 #define muT_DefProtection (TAG_USER + 11) 90 #define muT_All (TAG_USER + 12) 91 #define muT_NoLog (TAG_USER + 13) 92 93 struct muUserInfo 94 { 95 char UserID[muUSERIDSIZE]; 96 UWORD uid; 97 UWORD gid; 98 char UserName[muUSERNAMESIZE]; 99 char HomeDir[muHOMEDIRSIZE]; 100 UWORD NumSecGroups; 101 UWORD *SecGroups; 102 char Shell[muSHELLSIZE]; 103 }; 104 105 struct muGroupInfo 106 { 107 char GroupID[muGROUPIDSIZE]; 108 UWORD gid; 109 UWORD MgrUid; 110 char GroupName[muGROUPNAMESIZE]; 111 }; 112 113 #define muKeyType_First 0 114 #define muKeyType_Next 1 115 #define muKeyType_gid 4 116 117 #define muKeyType_UserID 2 118 #define muKeyType_uid 3 119 #define muKeyType_gidNext 5 120 #define muKeyType_UserName 6 121 #define muKeyType_WUserID 7 122 #define muKeyType_WUserName 8 123 #define muKeyType_WUserIDNext 9 124 #define muKeyType_WUserNameNext 10 125 126 #define muKeyType_GroupID 11 127 #define muKeyType_WGroupID 12 128 #define muKeyType_WGroupIDNext 13 129 #define muKeyType_GroupName 14 130 #define muKeyType_WGroupName 15 131 #define muKeyType_WGroupNameNext 16 132 #define muKeyType_MgrUid 17 133 #define muKeyType_MgrUidNext 18 134 135 struct muExtOwner 136 { 137 UWORD uid; 138 UWORD gid; 139 UWORD NumSecGroups; 140 }; 141 142 #define muSecGroups(x) ((UWORD *)((UBYTE *)(x) + sizeof(struct muExtOwner))) 143 #define muExtOwner2ULONG(x) ((ULONG)((x) ? (x)->uid << 16 | (x)->gid : muOWNER_NOBODY)) 144 145 146 #define muFIBB_SET_UID 31 147 #define muFIBF_SET_UID (1 << muFIBB_SET_UID) 148 149 #define DEFPROTECTION (FIBF_OTR_READ | FIBF_GRP_READ) 150 151 #define muRelB_ROOT_UID 0 152 #define muRelB_ROOT_GID 1 153 #define muRelB_NOBODY 2 154 #define muRelB_UID_MATCH 3 155 #define muRelB_GID_MATCH 4 156 #define muRelB_PRIM_GID 5 157 #define muRelB_NO_OWNER 6 158 159 #define muRelF_ROOT_UID (1 << muRelB_ROOT_UID) 160 #define muRelF_ROOT_GID (1 << muRelB_ROOT_GID) 161 #define muRelF_NOBODY (1 << muRelB_NOBODY) 162 #define muRelF_UID_MATCH (1 << muRelB_UID_MATCH) 163 #define muRelF_GID_MATCH (1 << muRelB_GID_MATCH) 164 #define muRelF_PRIM_GID (1 << muRelB_PRIM_GID) 165 #define muRelF_NO_OWNER (1 << muRelB_NO_OWNER) 166 167 struct muMonitor 168 { 169 struct MinNode Node; 170 ULONG Mode; 171 ULONG Triggers; 172 union 173 { 174 struct 175 { 176 struct Task *Task; 177 ULONG SignalNum; 178 } Signal; 179 180 struct 181 { 182 struct MsgPort *Port; 183 } Message; 184 185 } muMonitor_sendunion; 186 }; 187 188 #define muMon_IGNORE 0 189 #define muMon_SEND_SIGNAL 1 190 #define muMon_SEND_MESSAGE 2 191 192 struct muMonMsg 193 { 194 struct Message ExecMsg; 195 struct muMonitor *Monitor; 196 ULONG Trigger; 197 UWORD From; 198 UWORD To; 199 char UserID[muUSERIDSIZE]; 200 }; 201 202 #define muTrgB_OwnerChange 0 203 #define muTrgB_Login 1 204 #define muTrgB_LoginFail 2 205 #define muTrgB_Passwd 3 206 #define muTrgB_PasswdFail 4 207 #define muTrgB_CheckPasswd 5 208 #define muTrgB_CheckPasswdFail 6 209 210 #define muTrgF_OwnerChange (1 << muTrgB_OwnerChange) 211 #define muTrgF_Login (1 << muTrgB_Login) 212 #define muTrgF_LoginFail (1 << muTrgB_LoginFail) 213 #define muTrgF_Passwd (1 << muTrgB_Passwd) 214 #define muTrgF_PasswdFail (1 << muTrgB_PasswdFail) 215 #define muTrgF_CheckPasswd (1 << muTrgB_CheckPasswd) 216 #define muTrgF_CheckPasswdFail (1 << muTrgB_CheckPasswdFail) 217 218 219 #pragma pack() 220 221 #endif /* LIBRARIES_MULTIUSER_H */