Esempio n. 1
0
        private static DanelVersion GenarateDanelVersion(SqlDataReader reader,
                                                         string db_name,
                                                         string clientLocation,
                                                         string serverName,
                                                         string listenerPort,
                                                         string notificationPort,
                                                         string wcfport,
                                                         string notificationSubscriptionsPort,
                                                         string winServiceName,
                                                         string winNotificationName,
                                                         string sqlInstance,
                                                         int[] lckdMdls)
        {
            int majorVersion = Convert.ToInt32(reader["MajorVersion"].ToString());
            int minorVersion = Convert.ToInt32(reader["MinorVersion"].ToString());
            int subVersion   = Convert.ToInt32(reader["SubVersion"].ToString());
            int buildNumber  = Convert.ToInt32(reader["BuildNumber"].ToString());

            var dir = new DirectoryInfo(clientLocation);
            var par = dir.Parent.FullName;

            var v = Path.Combine(par.ToString(), "AppStart.exe");

            clientLocation = v;


            Version version    = new Version(majorVersion, minorVersion, subVersion, buildNumber);
            Version appVersion = version;

            if (File.Exists(v))
            {
                FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(v);
                appVersion = new Version(myFileVersionInfo.FileMajorPart, myFileVersionInfo.FileMinorPart, myFileVersionInfo.FileBuildPart, myFileVersionInfo.FilePrivatePart);
            }

            DanelVersion danelVersion = new DanelVersion();

            danelVersion.vr               = version;
            danelVersion.appVr            = appVersion;
            danelVersion.dbName           = db_name;
            danelVersion.fp               = clientLocation;
            danelVersion.listenerPort     = listenerPort;
            danelVersion.notificationPort = notificationPort;
            danelVersion.wcfport          = wcfport;
            danelVersion.notificationSubscriptionsPort = notificationSubscriptionsPort;
            danelVersion.clientFolder        = par;
            danelVersion.winServiceName      = winServiceName;
            danelVersion.serverName          = serverName;
            danelVersion.winNotificationName = winNotificationName;
            danelVersion.sqlInstance         = sqlInstance;
            danelVersion.lckdMdls            = lckdMdls;
            danelVersion.version             = $"{version.Major}.{version.Minor}.{version.Build}.{version.Revision}";
            danelVersion.appVersion          = $"{appVersion.Major}.{appVersion.Minor}.{appVersion.Build}.{appVersion.Revision}";
            danelVersion.notificationPorts   = $"{notificationPort};{notificationSubscriptionsPort}";
            danelVersion.listenerPorts       = $"{listenerPort};{wcfport}";

            //DanelVersion danelVersion = new DanelVersion(
            //     version,
            //     appVersion,
            //     db_name,
            //     clientLocation,
            //     serverName,
            //     listenerPort,
            //     notificationPort,
            //     wcfport,
            //     notificationSubscriptionsPort,
            //     par,
            //     winServiceName,
            //     winNotificationName,
            //     sqlInstance,
            //      lckdMdls);
            return(danelVersion);
        }
Esempio n. 2
0
        private void LoadEnvsIntoCache(object obj)
        {
            int num = 1;
            //var files = WebCacheManager.Instance.GetValue<string>("files");
            //var filesDirectory = new DirectoryInfo(files.ToString());
            //foreach (var item in filesDirectory.GetFiles())
            //    item.Delete();
            List <DanelVersion> vers = new List <DanelVersion>();
            var sqls    = WebConfigManager.Instance["sql"].ToString();
            var servers = sqls.Split(';');

            foreach (var srv in servers)
            {
                using (var con = new SqlConnection())
                {
                    con.ConnectionString = $"Data Source={srv};Initial Catalog=master;Integrated Security=True;";

                    con.Open();
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.CommandText = $@"{WebConfigManager.Instance["env_proc"]}";


                        cmd.Connection = con;
                        try
                        {
                            using (SqlDataReader reader = cmd.ExecuteReader())
                            {
                                do
                                {
                                    while (reader.Read())
                                    {
                                        string db_name          = reader["DB_NAME"].ToString();
                                        string serverName       = reader["ServerName"].ToString();
                                        string notificationPort = reader["notificationPort"].ToString();
                                        string listenerPort     = reader["listenerPort"].ToString();
                                        string wcfport          = reader["wcfport"].ToString();
                                        string sqlInstance      = reader["sqlInstance"].ToString();
                                        string notificationSubscriptionsPort = reader["notificationSubscriptionsPort"].ToString();

                                        string clientLocation = GenerateClientLocation(reader, serverName);

                                        string serverLocation = reader["serverLocation"].ToString();
                                        string winServiceName = serverLocation.Substring(serverLocation.LastIndexOf("\\") + 1);

                                        string notificationLocation = reader["notificationLocation"].ToString();
                                        string winNotificationName  = notificationLocation.Substring(notificationLocation.LastIndexOf("\\") + 1);
                                        int[]  lckdMdls             = null;
                                        var    v = reader["lckdMdls"].ToString();
                                        if (!string.IsNullOrEmpty(v))
                                        {
                                            v        = v.Remove(v.LastIndexOf(','), 1);
                                            lckdMdls = v.Split(',').Select(i => int.Parse(i)).ToArray();
                                        }

                                        //string newFile = GenerateNewFile(files.ToString(), ref num, clientLocation);
                                        DanelVersion danelVersion = GenarateDanelVersion(
                                            reader,
                                            db_name,
                                            clientLocation,
                                            serverName,
                                            listenerPort,
                                            notificationPort,
                                            wcfport,
                                            notificationSubscriptionsPort,
                                            winServiceName,
                                            winNotificationName,
                                            sqlInstance,
                                            lckdMdls);
                                        danelVersion.id = num++;
                                        vers.Add(danelVersion);
                                    }
                                } while (reader.NextResult());
                            }
                        }
                        catch (Exception) { Debug.WriteLine($"fail {cmd.Connection.ConnectionString}"); }
                    }
                }
            }

            IOrderedEnumerable <DanelVersion> sorted = SortVers(vers);
            var toFaltArray = sorted.ToArray();

            WebCacheManager.Instance.SetValue("flat-vers", toFaltArray);
            WebCacheManager.Instance.SetValue("versTime", DateTime.Now);
            var grpd    = sorted.GroupBy(x => new Version(x.vr.Major, x.vr.Minor, x.vr.Build, x.vr.Revision));
            var toArray = grpd.ToArray();

            WebCacheManager.Instance.SetValue("vers", toArray);
            WebCacheManager.Instance.SetValue("versTime", DateTime.Now);
        }