Fix for linux build and Server Keychain. Work-in-progress
This commit is contained in:
parent
3216d2b739
commit
b0fad0f85f
31
CASA/micasad/cache/SecretStore.cs
vendored
31
CASA/micasad/cache/SecretStore.cs
vendored
@ -75,8 +75,7 @@ namespace sscs.cache
|
|||||||
User casaUser;
|
User casaUser;
|
||||||
|
|
||||||
#if LINUX
|
#if LINUX
|
||||||
Directory.CreateDirectory("/home/.casa/" + constants.ConstStrings.MICASA_SERVICE_NAME);
|
casaUser = new UnixUser(new UnixUserIdentifier(GetCasaServiceUID()), "/home/.casa/" + constants.ConstStrings.MICASA_SERVICE_NAME);
|
||||||
casaUser = new UnixUser(new UnixUserIdentifier(GetCasaServiceUID()), "/home/.casa/" + constants.ConstStrings.MICASA_SERVICE_NAME));
|
|
||||||
#else
|
#else
|
||||||
// create a data directory for server secrets
|
// create a data directory for server secrets
|
||||||
Process proc = Process.GetCurrentProcess();
|
Process proc = Process.GetCurrentProcess();
|
||||||
@ -100,6 +99,7 @@ namespace sscs.cache
|
|||||||
static private int GetCasaServiceUID()
|
static private int GetCasaServiceUID()
|
||||||
{
|
{
|
||||||
Mono.Unix.UnixUserInfo uui;
|
Mono.Unix.UnixUserInfo uui;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
uui = new Mono.Unix.UnixUserInfo(constants.ConstStrings.MICASA_SERVICE_NAME);
|
uui = new Mono.Unix.UnixUserInfo(constants.ConstStrings.MICASA_SERVICE_NAME);
|
||||||
@ -120,7 +120,25 @@ namespace sscs.cache
|
|||||||
uui = new Mono.Unix.UnixUserInfo(constants.ConstStrings.MICASA_SERVICE_NAME);
|
uui = new Mono.Unix.UnixUserInfo(constants.ConstStrings.MICASA_SERVICE_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
return uui.UserId;
|
|
||||||
|
if (uui != null)
|
||||||
|
{
|
||||||
|
// create directory for casa
|
||||||
|
Mono.Unix.Native.FilePermissions permissions = Mono.Unix.Native.Syscall.umask(
|
||||||
|
Mono.Unix.Native.FilePermissions.S_IWGRP |
|
||||||
|
Mono.Unix.Native.FilePermissions.S_IWOTH);
|
||||||
|
|
||||||
|
Directory.CreateDirectory("/home/.casa/" + constants.ConstStrings.MICASA_SERVICE_NAME);
|
||||||
|
|
||||||
|
// set ownership
|
||||||
|
Mono.Unix.Native.Syscall.chown("/home/.casa/" + constants.ConstStrings.MICASA_SERVICE_NAME,
|
||||||
|
(uint)uui.UserId,
|
||||||
|
(uint)uui.GroupId);
|
||||||
|
|
||||||
|
Mono.Unix.Native.Syscall.umask(permissions);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (int)uui.UserId;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
private DateTime createTime;
|
private DateTime createTime;
|
||||||
@ -798,12 +816,17 @@ namespace sscs.cache
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal KeyChain GetKeyChain(string id)
|
internal KeyChain GetKeyChain(string id)
|
||||||
|
|
||||||
{
|
{
|
||||||
|
Console.WriteLine("Keychain {0}", id);
|
||||||
|
|
||||||
// if this is the server keychain, return the casaStore controlled one.
|
// if this is the server keychain, return the casaStore controlled one.
|
||||||
if (id.StartsWith(constants.ConstStrings.SSCS_SERVER_KEY_CHAIN_ID))
|
if (id.StartsWith(constants.ConstStrings.SSCS_SERVER_KEY_CHAIN_ID))
|
||||||
{
|
{
|
||||||
KeyChain casakc = (KeyChain)casaStore.keyChainList[id];
|
KeyChain casakc = (KeyChain)casaStore.keyChainList[id];
|
||||||
casakc.AccessedTime = DateTime.Now;
|
casakc.AccessedTime = DateTime.Now;
|
||||||
|
Console.WriteLine("Returned casakc");
|
||||||
|
|
||||||
return casakc;
|
return casakc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1150,6 +1173,8 @@ namespace sscs.cache
|
|||||||
// set up mask
|
// set up mask
|
||||||
Mono.Unix.Native.FilePermissions permissions = Mono.Unix.Native.Syscall.umask(
|
Mono.Unix.Native.FilePermissions permissions = Mono.Unix.Native.Syscall.umask(
|
||||||
Mono.Unix.Native.FilePermissions.S_IWGRP |
|
Mono.Unix.Native.FilePermissions.S_IWGRP |
|
||||||
|
Mono.Unix.Native.FilePermissions.S_IRGRP |
|
||||||
|
Mono.Unix.Native.FilePermissions.S_IROTH |
|
||||||
Mono.Unix.Native.FilePermissions.S_IWOTH);
|
Mono.Unix.Native.FilePermissions.S_IWOTH);
|
||||||
|
|
||||||
// create the directory if necessary
|
// create the directory if necessary
|
||||||
|
@ -41,7 +41,9 @@ namespace sscs.common
|
|||||||
internal UnixUser(UserIdentifier unixUserId, string sUserHome)
|
internal UnixUser(UserIdentifier unixUserId, string sUserHome)
|
||||||
{
|
{
|
||||||
m_userHome = sUserHome;
|
m_userHome = sUserHome;
|
||||||
this.UnixUser(unixUserId);
|
userId = unixUserId;
|
||||||
|
secretStore = new SecretStore(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal UnixUser(UserIdentifier unixUserId)
|
internal UnixUser(UserIdentifier unixUserId)
|
||||||
|
Loading…
Reference in New Issue
Block a user