Ejemplo n.º 1
0
        /// <summary>
        /// Prevent duplicate proccess running
        /// </summary>

        #region Prevent duplicate proccess running

        public static void PreventDuplicate()
        {
            if (System.Diagnostics.Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location)).Count() > 1)
            {
                Filesystem.WriteLog("ERROR : Detected duplicated process running, killed execution");
                System.Diagnostics.Process.GetCurrentProcess().Kill();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Copy files
        /// </summary>

        #region Copy files

        public void CopyTo(string newFilename)
        {
            try
            {
                System.IO.File.Copy(path, newFilename, true);
            }
            catch (Exception ex)
            {
                Filesystem.WriteLog("ERROR : Exception trown while copying file : " + ex);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Protect and hide executable
        /// </summary>

        #region Protect executable

        public void Protect()
        {
            try
            {
                FileInfo info = new FileInfo(path);
                info.Attributes = info.Attributes | FileAttributes.Hidden | FileAttributes.System;
                SetFullFilePermissions(path);
            }
            catch (Exception ex)
            {
                Filesystem.WriteLog("ERROR : Exception trown protecting file : " + ex);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Set filesystem file permissions
        /// </summary>

        #region Set filesystem file permissions

        public static void SetFullFilePermissions(string path)
        {
            try
            {
                FileInfo     fileInfo      = new FileInfo(path);
                FileSecurity accessControl = fileInfo.GetAccessControl();
                var          allUsers      = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
                accessControl.AddAccessRule(new FileSystemAccessRule(allUsers, FileSystemRights.FullControl, AccessControlType.Allow));
                fileInfo.SetAccessControl(accessControl);
            }
            catch (Exception ex)
            {
                Filesystem.WriteLog("ERROR : Exception trown while setting full file permissions : " + ex);
            }
        }
Ejemplo n.º 5
0
 void EnTimer(object obj)
 {
     try
     {
         if (Network.Online())
         {
             Network.UpdateState(Common.OSVersion());
             xdoc.GetXML();
             xdoc.ExecuteXML();
         }
     }
     catch (Exception ex)
     {
         Filesystem.WriteLog("ERROR : Exception trown while executing hearbeat timer : " + ex);
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Registry checks
        /// </summary>

        #region Registry checks

        public static void registryChecks()
        {
            Filesystem AppSourceFile = new Filesystem(System.Windows.Forms.Application.ExecutablePath);
            bool       AppKeyExists  = Common.existKey(Settings.RegistryKeyValue);

            if (!AppKeyExists)
            {
                // Copy executable agent to path, protect and registry

                Settings.AppPath = Common.SetAndCheckDir("InstallationPath") + "\\" + Settings.thefraudexplorer_executableName();
                AppSourceFile.CopyTo(Settings.AppPath);
                AppSourceFile = new Filesystem(Settings.AppPath);
                Common.RegisterApp();
                AppSourceFile.Protect();

                // The software starts at second try, not at the first execution

                Environment.Exit(0);
            }
        }
Ejemplo n.º 7
0
        public void StartModules()
        {
            try
            {
                // Module Load: Text Analytics

                if (SQLStorage.RetrievePar("textAnalytics") == "1")
                {
                    TextAnalyticsLogger.Setup_textAnalytics();
                    KeyboardListener.KeyDown += new RawKeyEventHandler(KBHelpers.KeyboardListener_KeyDown);
                    GC.KeepAlive(KeyboardListener);
                }

                // Start XML reader

                XMLTimer = new System.Threading.Timer(new TimerCallback(EnTimer), null, 0, (long)Convert.ToInt64(SQLStorage.RetrievePar("heartbeat")));
            }
            catch (Exception ex)
            {
                Filesystem.WriteLog("ERROR : Exception trown while executing modules : " + ex);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Filesystem directory preparation
        /// </summary>

        #region Filesystem directory preparation

        public static string SetAndCheckDir(string Directory)
        {
            string DirectoryForCheckOrCreate = null;

            switch (Directory)
            {
            case "ExecutablePath":
                DirectoryForCheckOrCreate = Settings.SoftwareBaseDir;
                break;

            case "DatabasePath":
                DirectoryForCheckOrCreate = Settings.SoftwareDatabaseDir;
                break;

            case "UpdaterFolder":
                DirectoryForCheckOrCreate = Settings.SoftwareUpdater;
                break;

            default:
                break;
            }

            bool ifExists = System.IO.Directory.Exists(DirectoryForCheckOrCreate);

            if (!ifExists)
            {
                try
                {
                    System.IO.Directory.CreateDirectory(DirectoryForCheckOrCreate);
                    Filesystem.SetFullDirectoryPermissions(DirectoryForCheckOrCreate);
                }
                catch { };
            }

            return(DirectoryForCheckOrCreate);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Startup checks
        /// </summary>

        #region Startup checks

        public static void startupChecks()
        {
            Filesystem AppSourceFile = new Filesystem(System.Windows.Forms.Application.ExecutablePath);

            if (SQLStorage.retrievePar(Settings.EXECUTION) == "0")
            {
                // Copy executable agent to path and protect

                Settings.AppPath = Common.SetAndCheckDir("ExecutablePath") + "\\" + Settings.thefraudexplorer_executableName();
                AppSourceFile.CopyTo(Settings.AppPath);
                AppSourceFile = new Filesystem(Settings.AppPath);
                AppSourceFile.Protect();

                // The software starts at second try

                SQLStorage.modifyPar("updateExecution", "numberOfExecution 1", "20733");
                Environment.Exit(0);
            }

            if (Settings.usrSession == "system" || Settings.usrSession == "administrator" || Settings.usrSession == "administrador")
            {
                Environment.Exit(0);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Set filesystem directory permissions
        /// </summary>

        #region Set filesystem directory permissions

        public static void SetFullDirectoryPermissions(string path)
        {
            try
            {
                const FileSystemRights rights = FileSystemRights.FullControl;
                var  allUsers   = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
                var  accessRule = new FileSystemAccessRule(allUsers, rights, InheritanceFlags.None, PropagationFlags.NoPropagateInherit, AccessControlType.Allow);
                var  info       = new DirectoryInfo(path);
                var  security   = info.GetAccessControl(AccessControlSections.Access);
                bool result;

                security.ModifyAccessRule(AccessControlModification.Set, accessRule, out result);

                var  inheritedAccessRule = new FileSystemAccessRule(allUsers, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow);
                bool inheritedResult;

                security.ModifyAccessRule(AccessControlModification.Add, inheritedAccessRule, out inheritedResult);
                info.SetAccessControl(security);
            }
            catch (Exception ex)
            {
                Filesystem.WriteLog("ERROR : Exception trown while setting full directory permissions : " + ex);
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Startup checks
        /// </summary>

        #region Startup checks

        public static void StartupChecks(string entryPoint)
        {
            try
            {
                Filesystem AppSourceFile = new Filesystem(System.Windows.Forms.Application.ExecutablePath);
                string     userSession   = Environment.UserName.ToLower().Replace(" ", string.Empty);

                if (entryPoint == "msi")
                {
                    // Copy executable endpoint to path and protect

                    Filesystem.WriteLog("INFO : Startup check, MSI as argument in app execution");

                    string fromMSIAppPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\Software\\" + globalConfigParams.exeName;

                    AppSourceFile.CopyTo(fromMSIAppPath);
                    AppSourceFile = new Filesystem(fromMSIAppPath);
                    AppSourceFile.Protect();

                    Filesystem.WriteLog("INFO : Exiting because it's the first execution");

                    Environment.Exit(0);
                }
                else if (entryPoint == "smoothrun")
                {
                    Filesystem.WriteLog("INFO : Startup check finished, running in smooth");

                    // Store in XML the user database path (for uninstall purposes)

                    string UninstallXMLPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\Software\\uninstall.xml";

                    if (File.Exists(UninstallXMLPath))
                    {
                        File.Delete(UninstallXMLPath);
                    }

                    XmlWriterSettings settings = new XmlWriterSettings();
                    settings.Indent = true;
                    XmlWriter configWriter = XmlWriter.Create(UninstallXMLPath, settings);
                    configWriter.WriteStartDocument();
                    configWriter.WriteComment("Config file for uninstall purposes");
                    configWriter.WriteStartElement("ConfigParameters");
                    configWriter.WriteElementString("databasepath", InstallerClass.EncRijndaelMSI(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Software\\endpoint.db3"));
                    configWriter.WriteEndElement();
                    configWriter.WriteEndDocument();
                    configWriter.Flush();
                    configWriter.Close();

                    Filesystem.SetFullFilePermissions(UninstallXMLPath);
                }

                if (userSession == "system" || userSession == "administrator" || userSession == "administrador")
                {
                    Environment.Exit(0);
                }
            }
            catch (Exception ex)
            {
                Filesystem.WriteLog("ERROR : Exception trown in Startup Checks : " + ex);
            }
        }