示例#1
0
        public Envelope CallService(string srvName, Envelope req)
        {
            try
            {
                lock (SyncRoot)
                {
                    if (InternalConnection == null)
                    {
                        DoConnect();
                    }
                }

                return(InternalConnection.SendRequest(srvName, req));
            }
            catch (DSAServerException ex)
            {
                if (ex.Status == "511")
                {
                    DoConnect();
                    return(InternalConnection.SendRequest(srvName, req));
                }
                else
                {
                    throw;
                }
            }
        }
        public ConfigurarConeccionSQL(bool Update)
        {
            InitializeComponent();

            if (Update) // Sí es true se debe actualizar
            {
                InternalAccess internalAccess = new InternalAccess();
                internalAccess.Read_InternalAccess();
                txtServidor.Text        = internalAccess.Servidor;
                txtUsuario.Text         = internalAccess.Usuario;
                txtContrasenia.Password = internalAccess.Contrasenia;

                InternalConnection internalConnection = new InternalConnection();
                string             uriIcon            = internalConnection.GetPathMDF() + "\\images\\close.png";
                imageGuardar.Source      = new BitmapImage(new Uri(uriIcon));
                TextBotonGuardar.Content = "Salir";       // Entonces la funcionalidad del botón cambia a SALIR debido a que la conexión es incorrecta
            }
            else // Sí es false se debe crear
            {
                InternalConnection internalConnection = new InternalConnection();
                string             uriIcon            = internalConnection.GetPathMDF() + "\\images\\close.png";
                imageGuardar.Source      = new BitmapImage(new Uri(uriIcon));
                TextBotonGuardar.Content = "Salir";       // Entonces la funcionalidad del botón cambia a SALIR debido a que la conexión es incorrecta
            }
        }
 private void DisposeInternalConnection()
 {
     if (ExternalConnection == null)
     {
         InternalConnection.Dispose();
         InternalConnection  = null;
         InternalTransaction = null;
     }
 }
示例#4
0
        public override void OnConnect(Session session)
        {
            _log.Info("GameServer from {0} connected, session id: {1}", session.Ip.ToString(),
                      session.Id.ToString(CultureInfo.InvariantCulture));
            var con = new InternalConnection(session);

            con.OnConnect();
            InternalConnectionTable.Instance.AddConnection(con);
        }
示例#5
0
        override public IDbCommand CreateCommand()
        {
            SQLiteConnection sc = InternalConnection as SQLiteConnection;

            if (null == sc)
            {
                throw new InvalidOperationException("InvalidConnType00" + InternalConnection.GetType().FullName);
            }
            return(sc.CreateCommand());
        }
        protected override void OnClose()
        {
            // Rollback uncommitted operations
            if (InternalTransaction != null)
            {
                TransactionRollback();
            }

            InternalConnection.Close();
        }
        public void AddReconnectionToken(InternalConnection connection, byte gsId, uint accountId, uint token)
        {
            if (!_tokens.ContainsKey(gsId))
            {
                _tokens.Add(gsId, new Dictionary <uint, uint>());
            }

            _tokens[gsId].Add(token, accountId);
            connection.SendPacket(new LGPlayerReconnectPacket(token));
        }
示例#8
0
 override public void Close()
 {
     try
     {
         InternalConnection.Close();
     }
     catch (SqlException ex)
     {
         throw new DataException(ex.Message, ex);
     }
 }
 override public void Close()
 {
     try
     {
         CheckState(false);
         InternalConnection.Close();
     }
     catch (Exception ex)
     {
         throw new DataException(ex.Message, ex);
     }
 }
示例#10
0
 override public void Open()
 {
     InternalConnection.Open();
     if (!m_autoCommit)
     {
         GXLogging.Debug(log, "Open connection InternalConnection.BeginTransaction() ");
         m_transaction = InternalConnection.BeginTransaction(IsolationLevel.ReadCommitted);
     }
     else
     {
         m_transaction = null;
     }
 }
        private void CreateInternalConnection()
        {
            InternalConnection = GetActualConnection();
            if (InternalConnection.State == ConnectionState.Closed)
            {
                InternalConnection.Open();
            }

            if (WithTransaction)
            {
                var extTr = GetActualTransaction();
                InternalTransaction = extTr ?? InternalConnection.BeginTransaction();
            }
        }
示例#12
0
        public void Add(byte gsId, string ip, ushort port, InternalConnection connection)
        {
            if (!_gameServers.ContainsKey(gsId))
            {
                connection.SendPacket(new LGRegisterGameServerPacket(GSRegisterResult.Error));
                return;
            }

            var gameServer = _gameServers[gsId];

            gameServer.Ip         = ip;
            gameServer.Port       = port;
            gameServer.Connection = connection;
            connection.GameServer = gameServer;
            connection.AddAttribute("gsId", gameServer.Id);
            gameServer.SendPacket(new LGRegisterGameServerPacket(GSRegisterResult.Success));
            _log.Info("Registered GameServer {0}", gameServer.Id);
        }
        private void btnTestDB_Click(object sender, RoutedEventArgs e)
        {
            string servidor    = string.Empty;
            string usuario     = string.Empty;
            string contrasenia = string.Empty;

            servidor    = txtServidor.Text.ToString().Trim();
            usuario     = txtUsuario.Text.ToString().Trim();
            contrasenia = txtContrasenia.Password.ToString().Trim();

            string cadena = $"data source={servidor}; initial catalog=master; user id={usuario}; password={contrasenia}; Connection Timeout=7";

            Connection connection = new Connection();

            if (!string.IsNullOrEmpty(servidor) && !string.IsNullOrEmpty(usuario) && !string.IsNullOrEmpty(contrasenia)) // Todos los campos completados
            {
                if (connection.CheckConnection(cadena))                                                                  // Comprobamos la conexión con la base de datos
                {
                    // Actualizar la cadena de conexión
                    exitoConexion            = true;
                    TextBotonGuardar.Content = "Guardar";       // Entonces la funcionalidad del botón cambia a GUARDAR debido a que la conexión es correcta
                    InternalConnection internalConnection = new InternalConnection();
                    try
                    {
                        string uriIcon = internalConnection.GetPathMDF() + "\\images\\save-icon.png";
                        imageGuardar.Source = new BitmapImage(new Uri(uriIcon));
                    }
                    catch (Exception)
                    {
                    }
                    MessageBox.Show("La conexión con el servidor tuvo éxito, procede a guardar para conservar los datos de conexión.",
                                    "Prueba de conexión", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    MessageBox.Show("Lo sentimos, no se ha podido realizar la conexión con el servidor de base de datos, corriga los datos y vuelva a intentarlo.",
                                    "Sin conexión", MessageBoxButton.OK, MessageBoxImage.Information); // Aún  no se puede conectar con la base de datos
                }
            }
            else
            {
                MessageBox.Show("Antes de continuar debes completar todos los campos.", "Datos incompletos", MessageBoxButton.OK, MessageBoxImage.Exclamation);
            }
        }
示例#14
0
 public override IDbTransaction BeginTransaction(IsolationLevel isoLevel)
 {
     try
     {
         IDbTransaction trn = InternalConnection.BeginTransaction(isoLevel);
         return(trn);
     }
     catch (Exception e)
     {
         GXLogging.Warn(log, "BeginTransaction Error ", e);
         IDbTransaction trn = InternalConnection.BeginTransaction(IsolationLevel.Unspecified);
         if (trn.IsolationLevel != isoLevel)
         {
             GXLogging.Error(log, "BeginTransaction Error, could not open new transaction isoLevel=" + isoLevel, e);
             throw new GxADODataException("Begin transaction error in informix", e);
         }
         return(trn);
     }
 }
示例#15
0
        public bool Alter_InternalAccess_kilter(string storedProcedure)
        {   // para la escritura y actualización
            InternalConnection connection = new InternalConnection();
            SqlCommand         sqlCommand = new SqlCommand();

            sqlCommand.CommandText = storedProcedure;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.Connection  = connection.connectionString;

            SqlParameter paramServidor = new SqlParameter();

            paramServidor.SqlDbType     = SqlDbType.NVarChar;
            paramServidor.ParameterName = "@Servidor";
            paramServidor.Value         = Servidor;
            sqlCommand.Parameters.Add(paramServidor);

            SqlParameter paramUsuario = new SqlParameter();

            paramUsuario.SqlDbType     = SqlDbType.NVarChar;
            paramUsuario.ParameterName = "@Usuario";
            paramUsuario.Value         = Usuario;
            sqlCommand.Parameters.Add(paramUsuario);

            SqlParameter paramContrasenia = new SqlParameter();

            paramContrasenia.SqlDbType     = SqlDbType.NVarChar;
            paramContrasenia.ParameterName = "@Contrasenia";
            paramContrasenia.Value         = Contrasenia;
            sqlCommand.Parameters.Add(paramContrasenia);

            SqlParameter paramComprobacion = new SqlParameter();

            paramComprobacion.Direction     = ParameterDirection.Output;
            paramComprobacion.SqlDbType     = SqlDbType.Bit;
            paramComprobacion.ParameterName = "@Validation";
            sqlCommand.Parameters.Add(paramComprobacion);

            connection.Connect();
            sqlCommand.ExecuteNonQuery();
            connection.Disconnect();

            return(bool.Parse(sqlCommand.Parameters["@Validation"].Value.ToString()));
        }
示例#16
0
 override public void Open()
 {
     try
     {
         InternalConnection.Open();
         if (!m_autoCommit)
         {
             m_transaction = InternalConnection.BeginTransaction(m_isolationLevel);
         }
         else
         {
             m_transaction = null;
         }
     }
     catch (Exception e)
     {
         GXLogging.Error(log, "Return GxConnection.Open Error ", e);
         throw (new GxADODataException(e));
     }
 }
        public void Add(byte gsId, List <byte> mirrorsId, InternalConnection connection)
        {
            if (!_gameServers.ContainsKey(gsId))
            {
                connection.SendPacket(new LGRegisterGameServerPacket(GSRegisterResult.Error));
                return;
            }

            var gameServer = _gameServers[gsId];

            gameServer.Connection = connection;
            gameServer.MirrorsId.AddRange(mirrorsId);
            connection.GameServer = gameServer;
            connection.AddAttribute("gsId", gameServer.Id);
            gameServer.SendPacket(new LGRegisterGameServerPacket(GSRegisterResult.Success));

            foreach (var mirrorId in mirrorsId)
            {
                _gameServers[mirrorId].Connection = connection;
                _mirrorsId.Add(mirrorId, gsId);
            }

            _log.Info("Registered GameServer {0}", gameServer.Id);
        }
示例#18
0
        public void Read_InternalAccess_kilter()
        {
            string             storedProcedure = "[dbo].[Read_DataAccess]";
            InternalConnection connection      = new InternalConnection();
            SqlCommand         sqlCommand      = new SqlCommand();

            sqlCommand.CommandText = storedProcedure;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.Connection  = connection.connectionString;

            connection.Connect();

            using (SqlDataReader reader = sqlCommand.ExecuteReader())
            {
                while (reader.Read())
                {
                    Servidor    = reader["Servidor"].ToString();
                    Usuario     = reader["Usuario"].ToString();
                    Contrasenia = reader["Contrasenia"].ToString();
                }
            }

            connection.Disconnect();
        }
 public override void TransactionStart()
 {
     InternalTransaction = InternalConnection.BeginTransaction();
 }
 protected override void OnOpen()
 {
     InternalConnection.Open();
 }
示例#21
0
        public async Task ValidateSystem()
        {
            try
            {
                ReadGeneralData readGeneralData       = new ReadGeneralData();
                DataTable       dataTableInternalData = readGeneralData.GetInternalDataTable("[dbo].[Read_DataAccess]");

                int cantidadFilas = dataTableInternalData.Rows.Count;

                InternalConnection internalConnection = new InternalConnection();

                if (cantidadFilas == 1) //  Comprobar que haya registro en db interna, primera vez que se ejecute el sistema
                {                       // Se comprueba que los valores sean correctos
                    InternalAccess internalAccess = new InternalAccess();
                    internalAccess.Read_InternalAccess();
                    string cadena = $"data source={@internalAccess.Servidor}; initial catalog=master; user id={@internalAccess.Usuario}; password={@internalAccess.Contrasenia}; Connection Timeout=50";

                    Connection connection = new Connection();

                    if (!connection.CheckConnection(cadena)) // Falló la conexión con los datos de InternalDB
                    {                                        // Actualizar la cadena de conexión mediante formulario
                        MessageBox.Show("No se ha podido realizar la conexión con la base de datos, este problema suele suceder cuando se han DETENIDO los servicios de SqlServer,    " +
                                        " para solucionar esto oprima la tecla Windows y escriba 'Servicios', en el panel mostrado busque 'SQL Server (MSSQLSERVER)' haga clic derecho sobre este " +
                                        " elemento y pulse INICIAR (el valor de 'MSSQLSERVER' puede variar según la configuración que se haya realizado), si el problema persiste, asegúrese de   " +
                                        " verificar que los accesos no se hayan cambiado, para esto pruebe la conexión en el siguiente formulario. ", "Error de conexión a SqlServer",
                                        MessageBoxButton.OK, MessageBoxImage.Error);
                        ConfigurarConeccionSQL configurarConeccionSQL = new ConfigurarConeccionSQL(true);
                        configurarConeccionSQL.Show();
                    }
                    else // Aquí ya no se tiene problemas con la base de datos
                    {
                        DataTable dataTable = readGeneralData.GetDataTable("[sysfox].[Read_List_DatosFox]");

                        int cantidadLineas = dataTable.Rows.Count;

                        if (cantidadLineas <= 0)
                        {
                            MessageBox.Show("Aún no tienes registrada ninguna empresa, puedes realizar este registro desde tu sistema Contasis.",
                                            "Error de conexión con los módulos Contasis", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                            Application.Current.Shutdown();
                        }
                        else
                        {
                            DataTable dtUsuarios = readGeneralData.GetDataTable("[dbo].[List_Usuarios]");

                            if (dtUsuarios.Rows.Count == 0)
                            {
                                MessageBox.Show("Aún no tienes registrado ningún usuario, registra tu usuario en el siguiente formulario.",
                                                "Debe registrar su usuario", MessageBoxButton.OK, MessageBoxImage.Information);
                                Usuarios usuarios = new Usuarios();
                                usuarios.Show();
                            }
                            else
                            {
                                Acceso acceso = new Acceso();
                                acceso.Show();
                            }
                        }
                    }
                }
                else                                                     // En caso de que no haya registro en db interna
                {                                                        // Comprobar la conexión con el servidor de SqlServer
                    string[] valores = internalConnection.GetDataFile(); // Obtenemos los datos del archivo txt

                    if (valores.Length > 1)
                    {
                        if (!string.IsNullOrEmpty(valores[0]) && !string.IsNullOrEmpty(valores[1]) && !string.IsNullOrEmpty(valores[2]))
                        {
                            Connection connection = new Connection();
                            string     cadena     = $"data source={valores[0]}; initial catalog=master; user id={valores[1]}; password={valores[2]};";
                            if (connection.CheckConnection(cadena))                //  Verificamos que la cadena de conexión con el Servidor de SQL sea correcta
                            {
                                if (internalConnection.Create_DataAccess(valores)) // Sólo si la cadena de conexión es correcta procedemos a registrar en InternalDB
                                {
                                    Application.Current.Shutdown();
                                    System.Windows.Forms.Application.Restart();
                                }
                            }
                        }
                    }
                    else // Sí no es correcto se pide configurar de forma manual (Formulario)
                    {
                        MessageBox.Show("Se debe configurar de forma manual la conexión a la base de datos.", "Configuración requerida", MessageBoxButton.OK, MessageBoxImage.Information);
                        ConfigurarConeccionSQL configurarConeccionSQL = new ConfigurarConeccionSQL(false);
                        configurarConeccionSQL.Show();
                    }
                }
            }
            catch (Exception)
            {
            }
        }
        private void btnGuardar_Click(object sender, RoutedEventArgs e)
        {
            if (exitoConexion == false)     //  Sí es que es FALSE, entonces el botón funciona como botón de salir
            {
                Close();
            }
            else // En caso de que este en TRUE es porque ya se probó con éxito la conexión con la DB, se vuelve a comprobar los accesos para asegurar la conexión siga disponible
            {
                string servidor    = string.Empty;
                string usuario     = string.Empty;
                string contrasenia = string.Empty;

                servidor    = txtServidor.Text.ToString().Trim();
                usuario     = txtUsuario.Text.ToString().Trim();
                contrasenia = txtContrasenia.Password.ToString().Trim();

                string cadena = $"data source={servidor}; initial catalog=master; user id={usuario}; password={contrasenia}; Connection Timeout=3";

                Connection connection = new Connection();

                if (!string.IsNullOrEmpty(servidor) && !string.IsNullOrEmpty(usuario) && !string.IsNullOrEmpty(contrasenia)) // Todos los campos completados
                {
                    if (connection.CheckConnection(cadena))                                                                  // Comprobamos la conexión con la base de datos
                    {
                        string ruta = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                        if (!Directory.Exists($"{ruta}\\FEICONT"))
                        {
                            Directory.CreateDirectory($"{ruta}\\FEICONT");
                        }

                        #region Escritura del archivo txt con los datos del servidor de base de datos
                        try
                        {
                            if (File.Exists($"{ruta}\\FEICONT\\access.txt"))
                            {
                                File.Delete($"{ruta}\\FEICONT\\access.txt");
                            }
                            else
                            {
                                using (StreamWriter streamWriter = new StreamWriter($"{ruta}\\FEICONT\\access.txt"))
                                {
                                    streamWriter.WriteLine($"{servidor}|{usuario}|{contrasenia}");
                                }
                            }
                        }
                        catch (Exception)
                        {
                            // El archivo esta en uso o no se puede acceder a el
                        }
                        #endregion Escritura del archivo txt con los datos del servidor de base de datos

                        #region Actualizar o crear InternalDB
                        InternalAccess internalAccess = new InternalAccess()
                        {
                            Servidor = servidor, Usuario = usuario, Contrasenia = contrasenia
                        };

                        ReadGeneralData readGeneralData       = new ReadGeneralData();
                        DataTable       dataTableInternalData = readGeneralData.GetInternalDataTable("[dbo].[Read_DataAccess]");

                        if (dataTableInternalData.Rows.Count == 1)  // En caso de que ya haya un registro en la db
                        {
                            internalAccess.Alter_InternalAccess("[dbo].[Update_DataAccess]");
                        }
                        else // Sí no lo hay, la crea
                        {
                            internalAccess.Alter_InternalAccess("[dbo].[Create_DataAccess]");
                        }
                        #endregion Actualizar o crear InternalDB

                        // Ejecutar todo el script de creación de base de datos (PENDIENTE)

                        asegurarGuardado = true;

                        Application.Current.Shutdown();
                        System.Windows.Forms.Application.Restart(); // Se reinicia la aplicación para que acceda de inmediato al login ya con los accesos correctos de la db
                    }
                    else
                    {
                        MessageBox.Show("Lo sentimos, se ha cambiado los datos de acceso, corriga los datos y vuelva a intentarlo.",
                                        "Sin conexión", MessageBoxButton.OK, MessageBoxImage.Information); // Aún  no se puede conectar con la base de datos
                        InternalConnection internalConnection = new InternalConnection();
                        string             uriIcon            = internalConnection.GetPathMDF() + "\\images\\close.png";
                        imageGuardar.Source      = new BitmapImage(new Uri(uriIcon));
                        TextBotonGuardar.Content = "Salir";       // Entonces la funcionalidad del botón cambia a SALIR debido a que la conexión es incorrecta
                    }
                }
                else
                {
                    MessageBox.Show("Antes de continuar debes completar todos los campos.", "Datos incompletos", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                }
            }
        }
示例#23
0
 override public IDbCommand CreateCommand()
 {
     return(InternalConnection.CreateCommand());
 }
示例#24
0
 private ZooKeeperConnection(InternalConnection internalConnection, Action releaseToPool)
 {
     this._internalConnection = internalConnection;
     this._releaseToPool      = releaseToPool;
 }