Move .CASAPolicy.xml file to /home/.casa/username
This commit is contained in:
@@ -57,7 +57,7 @@ CSFILES = $(srcdir)/AssemblyInfo.cs \
|
||||
CSFILES_CSC := $(subst /,$(SEP),$(CSFILES))
|
||||
CS_FLAGS = $(CSC_LIBFLAG)
|
||||
CS_RESOURCES =
|
||||
CS_LIBS =
|
||||
CS_LIBS = Mono.Posix.dll
|
||||
CS_LIBPATH =
|
||||
|
||||
OBJDIR = ./$(TARGET_CFG)/$(LIB)
|
||||
@@ -76,7 +76,7 @@ vpath %.cpp $(PLATFORMDEPENDENTSOURCEDIR) $(PLATFORMINDEPENDENTSOURCEDIR)
|
||||
vpath %.cs $(PLATFORMDEPENDENTSOURCEDIR) $(PLATFORMINDEPENDENTSOURCEDIR)
|
||||
|
||||
$(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT): $(OBJDIR) $(CSFILES)
|
||||
$(CSC) $(CS_FLAGS) $(CS_EXTRA_FLAGS) -out:$@ $(CSFILES_CSC)
|
||||
$(CSC) $(CS_FLAGS) $(CS_EXTRA_FLAGS) $(CS_LIBS:%=/r:%) -out:$@ $(CSFILES_CSC)
|
||||
cp -f $(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT) $(CASALIBDIR)/$(TARGET_CFG)/$(MODULE_NAME).$(MODULE_EXT)
|
||||
|
||||
$(OBJDIR):
|
||||
|
||||
@@ -32,34 +32,85 @@ using System.Text;
|
||||
namespace Novell.CASA.CASAPolicy
|
||||
{
|
||||
public class ICASAPol
|
||||
{
|
||||
{
|
||||
|
||||
static string GetPolicyFilePath()
|
||||
{
|
||||
return GetPolicyFilePath(null);
|
||||
}
|
||||
|
||||
static string GetPolicyFilePath(string sUserDir)
|
||||
static string GetPolicyFilePath(string sUserHomeDir)
|
||||
{
|
||||
if (sUserDir != null)
|
||||
{
|
||||
return sUserDir + XmlConsts.policyFileName;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
/* There needs to be a better way to get the HOME dir,
|
||||
* if this is used by miCASAd(as it runs as root).
|
||||
* if this is used by miCASAd(as it runs as root).
|
||||
* UPDATE: micasad passes in the Home Directory
|
||||
*/
|
||||
|
||||
int platform = (int)Environment.OSVersion.Platform;
|
||||
string homeDir;
|
||||
|
||||
if ( (platform == 128) || ( platform == 4) )
|
||||
{
|
||||
homeDir = System.Environment.GetEnvironmentVariable("HOME");
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
// if sUserHomeDir is passed
|
||||
if (sUserHomeDir != null)
|
||||
{
|
||||
homeDir = sUserHomeDir;
|
||||
}
|
||||
else
|
||||
{
|
||||
homeDir = System.Environment.GetEnvironmentVariable("HOME");
|
||||
}
|
||||
|
||||
// get users name
|
||||
string sUsername = homeDir.Substring(homeDir.LastIndexOf("/") + 1);
|
||||
|
||||
if (sUsername != null)
|
||||
{
|
||||
// check for existing files
|
||||
string sOldLocation = homeDir + XmlConsts.policyFileName;
|
||||
string sNewLocation = "/home/.casa/" + sUsername + XmlConsts.policyFileName;
|
||||
|
||||
// move file if needed
|
||||
if ((!File.Exists(sNewLocation)) && (File.Exists(sOldLocation)))
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
File.Copy(sOldLocation, sNewLocation);
|
||||
|
||||
|
||||
#if LINUX
|
||||
// make the user the owner of the file
|
||||
Mono.Unix.UnixUserInfo uui = new Mono.Unix.UnixUserInfo(sUsername);
|
||||
if (uui != null)
|
||||
{
|
||||
Mono.Unix.Native.Syscall.chown(sNewLocation, (uint)uui.UserId, (uint)uui.GroupId);
|
||||
}
|
||||
#endif
|
||||
File.Delete(sOldLocation);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return (sNewLocation);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else // is windows
|
||||
{
|
||||
if (sUserHomeDir != null)
|
||||
{
|
||||
return sUserHomeDir + XmlConsts.policyFileName;
|
||||
}
|
||||
|
||||
homeDir = (System.Environment.GetEnvironmentVariable("USERPROFILE"));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user