示例#1
0
        private static bool ServiceConcurrencyCheck()
        {
            SQLiteClass           sql  = new SQLiteClass(SQLiteClass.ProgramFilesx86() + "\\DuckServer\\Information.dat");
            List <ServicesObject> sros = sql.GetServices();
            String ip         = GetIPFromConfig();
            int    myPriority = Int32.MaxValue;
            bool   found      = false;

            foreach (ServicesObject sro in sros)
            {
                if (sro.IPAddress.Trim().Equals(ip.Trim()))
                {
                    myPriority = sro.Preference;
                    if (myPriority - 1 == 0)
                    {
                        return(true);
                    }
                    found = true;
                }
            }

            if (!found)
            {
                Console.WriteLine("Could not find " + ip + " in service list");
            }

            foreach (ServicesObject sro in sros)
            {
                //If not me
                if (!sro.IPAddress.Equals(ip) && sro.Preference == (myPriority - 1))
                {
                    try
                    {
                        IMClient imc = new IMClient();
                        imc.setConnParams(sro.IPAddress.Trim(), sro.port);
                        imc.SetupConn();
                        imc.Disconnect();
                        return(false);
                    }
                    catch
                    {
                        MSSQL ms = new MSSQL();
                        ms.AddEvent(new Events("HOST200", "Server at " + ip + " could not connect to service with preference " + (myPriority - 1) + " ," + sro.IPAddress.Trim(), 3, ip, sql.GetGUID(), DateTime.Now));
                        return(true);
                    }
                }
            }
            Console.WriteLine("No server list available");
            return(false);
        }
示例#2
0
        private static void RoutineCheck()
        {
            SQLiteClass sql = new SQLiteClass(SQLiteClass.ProgramFilesx86() + "\\DuckClient\\Information.dat");
            List <SQLiteClass.CachedMessage> cms = sql.GetCachedMessages();

            Console.WriteLine("Loading servers");
            ServiceConnectionDelegator.LoadServices();
            ServicesObject so = ServiceConnectionDelegator.GetService();

            if (so == null)
            {
                Console.WriteLine("Could not find a server");
            }
            else
            {
                Console.WriteLine("Using server: " + so.IPAddress);
            }
            IMClient.SendEvent(new Events("DEBUG000", "Debug message 0", 0, Service.GetIPFromConfig(), sql.GetGUID(), DateTime.Now));

            foreach (SQLiteClass.CachedMessage cm in cms)
            {
                try
                {
                    IMClient imc = new IMClient();
                    imc.setConnParams(so.IPAddress.Trim(), so.port);
                    Console.WriteLine("Sending a cached event to " + so.IPAddress);
                    imc.SetupConn();
                    imc.SendSignal((byte)cm.code, cm.message);
                    imc.Disconnect();
                    sql.RemoveCachedMessage(cm);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Console.WriteLine(e.Source);
                    Console.WriteLine(e.StackTrace);
                }
            }
        }
示例#3
0
        private void HandleLog(int mode)
        {
            SQLiteClass sql = new SQLiteClass(ProgramFilesx86() + "\\DuckClient\\Information.dat");

            switch (mode)
            {
            case IM_GetIdentity:
                bw.Write(sql.GetGUID());
                break;

            case IM_GetVersion:
                bw.Write(sql.GetVersion());
                break;

            case IM_GetMAC:
                var s = MACFinder.getMacByIp(GetIPAddress());
                bw.Write(s);
                break;

            case IM_GetHostname:
                bw.Write(Dns.GetHostName());
                break;

            case IM_RegistrationDone:
                if (br.ReadString().Equals(sql.GetGUID()))
                {
                    sql.SetRegistered(true);
                }
                break;

            case IM_NewVersionsCheck:
                DateTimeVersions dtv = DeserializeXMLFileToObject <DateTimeVersions>(br.ReadString());
                if (DateTime.Compare(dtv.ServiceDateTime, sql.GetLastUpdated(SQLiteClass.GET_SERVICE_LIST)) > 0 || DateTime.Compare(dtv.WhitelistDateTime, sql.GetLastUpdated(SQLiteClass.GET_WHITELIST_LIST)) > 0)
                {
                    IMClient imc = new IMClient();
                    imc.setConnParams(GetOriginIP(), 25568);
                    imc.SetupConn();
                    imc.SendSignal(IM_NewVersions, "2");
                    imc.Disconnect();
                }
                break;

            case IM_NewVersions:
                DateTimeVersions dtv1 = DeserializeXMLFileToObject <DateTimeVersions>(br.ReadString());
                UpdateStuff(dtv1);
                break;

            case IM_NewServiceList:
                List <ServicesObject> sros = DeserializeXMLFileToObject <List <ServicesObject> >(br.ReadString());
                sql.NewServices(sros);
                break;

            case IM_NewWhitelists:
                List <Whitelists> wls = DeserializeXMLFileToObject <List <Whitelists> >(br.ReadString());
                sql.NewWhitelists(wls);
                break;

            case IM_AddWhiteList:
                break;

            case IM_RemoveWhitelist:
                break;

            case IM_Debug:
                Console.WriteLine(br.ReadString());
                bw.Write(IM_OK);
                break;

            default:
                break;
            }
            bw.Write(IM_OK);
        }