예제 #1
0
파일: Host.cs 프로젝트: Hunv/beRemote
        private static SortedList <String, Protocol> LoadProtocols(int connectionid)
        {
            IDbPlugin      storage                = StorageCore.Core;
            ConnectionHost connection             = storage.GetConnection(connectionid);
            SortedList <String, Protocol> retList = new SortedList <string, Protocol>();

            if (connection != null)
            {
                List <ConnectionProtocol> db_protocols = storage.GetConnectionSettings(connectionid);
                foreach (ConnectionProtocol db_prot in db_protocols)
                {
                    String prot_identifier = db_prot.Protocol;
                    if (Kernel.GetAvailableProtocols().ContainsKey(prot_identifier))
                    {
                        retList.Add(prot_identifier, Kernel.GetAvailableProtocols()[prot_identifier]);
                    }
                }
            }
            else
            {
                throw new ProtocolConfigurationException(beRemoteExInfoPackage.SignificantInformationPackage, String.Format("Server not found in connectionsdatabase (id: {0})", connectionid));
            }

            return(retList);
        }
예제 #2
0
        private StorageCore()
        {
            Logger.Log(LogEntryType.Verbose, "Creating StorageCore");

            //Load configfile
            var Config = Helper.GetApplicationConfiguration();

            //Load DatabaseDLL-Path
            var databaseDll = Config.GetValue("database", "dbinterface");

            //Unblock Database-Plugin
            Helper.UnblockFile(databaseDll);

            if (System.IO.File.Exists("SQLite.Interop.dll"))
            {
                Helper.UnblockFile("SQLite.Interop.dll");
            }

            Logger.Log(LogEntryType.Verbose, "Loading Database-Plugin " + databaseDll);
            var dbAssembly = Assembly.LoadFrom(databaseDll);

            Logger.Log(LogEntryType.Verbose, "   ... Loaded " + databaseDll);

            try
            {
                //Check Assemblytypes
                foreach (var type in dbAssembly.GetTypes())
                {
                    //If type is IDbPlugin-Interface
                    if (type.GetInterface("IDbPlugin") == null)
                    {
                        continue;
                    }

                    //Create Instance
                    _StoragePlugin = (IDbPlugin)Activator.CreateInstance(type);

                    if (_StoragePlugin.InitPlugin() == false)
                    {
                        Logger.Log(LogEntryType.Exception, "Cannot initialize StoragePlugin. Please check the requirements of the plugin and the logfiles.", "StorageCore");
                    }
                    else
                    {
                        Logger.Log(LogEntryType.Debug, "StoragePlugin initialized", "StorageCore");
                    }
                    break;
                }
            }
            catch (Exception ea)
            {
                Logger.Log(LogEntryType.Exception, "Unable to initialize Database Interface!", ea);
            }
        }
예제 #3
0
파일: Host.cs 프로젝트: Hunv/beRemote
        ///// <summary>
        ///// Saves a connection to the storage system (VERY BASIC; PRIVATE ONLY!!!)
        ///// </summary>
        ///// <param name="connection"></param>
        ///// <returns>The connection id in the storage</returns>
        //public static int SaveConnection(Host connection)
        //{

        //    IDbPlugin storage = StorageCore.Core;

        //    List<OSVersion> versions = storage.GetVersionlist();
        //    int osID = 11254234;
        //    foreach (OSVersion version in versions)
        //    {
        //        if (version.getFamily().ToLower() == connection._server.GetServerType().ToString().ToLower())
        //        {
        //            osID = version.getId();
        //            break;
        //        }
        //    }



        //    if (connection._inDB && connection._dbID != null)
        //    {
        //        // modify it
        //    }
        //    else
        //    {
        //        // add it
        //        connection._dbID = (int)storage.AddConnection(connection.GetServer().GetRemoteIP().ToString(), connection.GetServer().GetServerName(), "", osID, connection.GetFolderID());

        //        foreach (KeyValuePair<String, Protocol> kvp in connection.GetProtocols())
        //        {
        //            int _dbConnSettingsID = (int)storage.AddConnectionSetting(connection._dbID, kvp.Value.GetProtocolIdentifer(), kvp.Value.GetDefaultProtocolPort(), false);

        //            foreach (Session session in connection.GetSessions())
        //            {
        //                if (session.GetSessionProtocol().GetProtocolIdentifer().ToLower() == kvp.Key.ToLower())
        //                {
        //                    SortedList<String, String> settings = session.GetSessionSettings();
        //                    foreach (KeyValuePair<String, String> kvpSesSet in settings)
        //                    {
        //                        storage.ModifyConnectionOption(kvpSesSet.Value, kvpSesSet.Key, _dbConnSettingsID, false);
        //                    }
        //                }
        //            }

        //        }

        //    }


        //    //if (connection._alreadyInStorage && connection._connectionID != null)
        //    //{
        //    //    //storage.ModifyConnection(connection._connectionID, server.GetRemoteIP().ToString(), server.GetServerName(), "", osID);
        //    //    //storage.ModifyConnectionSetting(connection._connectionID, connection.GetSession().GetProtocolPort(), storage.GetUserId(), false);

        //    //    //foreach (KeyValuePair<String, String> kvp in connection.GetSession().GetSessionSettings())
        //    //    //{
        //    //    //    List<ConnectionSetting> db_settings = storage.GetConnectionSettings(connection._connectionID);
        //    //    //}
        //    //}
        //    //else
        //    //{
        //    //    connection._connectionID = (int)storage.AddConnection(server.GetRemoteIP().ToString(), server.GetServerName(), "", osID);
        //    //    int connectionSettingsID = (int)storage.AddConnectionSetting(connection._connectionID, connection.GetProtocol().GetProtocolIdentifer(), connection.GetSession().GetProtocolPort(), false);

        //    //    foreach (KeyValuePair<String, String> kvp in connection.GetSession().GetSessionSettings())
        //    //    {
        //    //        storage.ModifyConnectionOption(kvp.Value, kvp.Key, connectionSettingsID, false);
        //    //    }

        //    //}
        //    return connection._dbID;
        //    //return connection._connectionID;
        //}


        private static IServer LoadServer(long id)
        {
            IDbPlugin storage          = StorageCore.Core;
            IServer   server           = Server.NewServer(id);
            OSVersion db_connection_os = storage.GetVersion(server.GetServerTypeID());

            List <ConnectionProtocol> connectionSettings = storage.GetConnectionSettings(id);

            ServerType serverType = server.GetServerType();

            foreach (ConnectionProtocol conSet in connectionSettings)
            {
                if (Kernel.GetAvailableProtocols().Keys.Contains(conSet.Protocol))
                {
                    server.AddProtocol(Kernel.GetAvailableProtocols()[conSet.Protocol]);
                    // session settings zuweisen!
                }
            }


            return(server);
        }
예제 #4
0
 public SemanticRepository(IDbPlugin dbPlugin)
 {
     this.dbPlugin = dbPlugin;
 }
예제 #5
0
 public DataSourceConnectionRepository(IDbPlugin dbPlugin)
 {
     this.dbPlugin = dbPlugin;
 }
예제 #6
0
 public TestRepository(IDbPlugin dbPlugin)
 {
     this.dbPlugin = dbPlugin;
 }