Пример #1
0
        public override void Process(ApiServer server)
        {
            if (server.AssertServerSetup(this) || server.AssertIdSet() || server.AssertUserOnline() || server.AssertEventInfoNotNull(EventInfo))
            {
                return;
            }
            using DatabaseManager databaseManager = new DatabaseManager(server);
            if (databaseManager.AssertHasPermission(Permission.CREATE_EVENT))
            {
                return;
            }
            string                eventId            = SecurityManager.GenerateHid();
            string                query              = DatabaseEssentials.Security.SanitizeQuery(new string[] { "INSERT INTO Tbl_event (userid, title, expires, date, time, location, url, image, description, hid) VALUES (", server.Account.Id, ", \'", EventInfo.Title, "\', ", EventInfo.ExpirationDate.ToString(), ", \'", EventInfo.Date, "\', \'", EventInfo.Time, "\', \'", EventInfo.Location, "\', \'", EventInfo.Url, "\', \'", EventInfo.Image, "\', \'", EventInfo.Description, "\', \'", eventId, "\');" });
            SqlApiRequest         sqlRequest         = SqlApiRequest.Create(SqlRequestId.ModifyData, query, -1);
            SqlModifyDataResponse modifyDataResponse = databaseManager.AwaitModifyDataResponse(sqlRequest, out bool success);

            if (!success)
            {
                return;
            }
            if (!modifyDataResponse.Success)
            {
                ApiError.Throw(ApiErrorCode.InternalServerError, server, "Unable to create event.");
                return;
            }
            CreateEventResponseA  response = new CreateEventResponseA(ResponseId.CreateEvent, eventId);
            SerializedApiResponse serializedApiResponse = SerializedApiResponse.Create(response);
            string json = serializedApiResponse.Serialize();

            server.Send(json);
            server.UnitTesting.MethodSuccess = true;
        }
Пример #2
0
        public override void Process(ApiServer server)
        {
            if (server.AssertServerSetup(this) || server.AssertAccountNotNull() || server.AssertUserOnline() || server.AssertEmailSet())
            {
                return;
            }
            if (!EmailEssentials.IsValid(server.Account.AccountInfo.Email))
            {
                ApiError.Throw(ApiErrorCode.InvalidEmailAddress, server, "Email address is invalid.");
                return;
            }
            server.Account.AuthenticationCode = SecurityManager.GenerateSecurityCode();
            server.Account.AuthenticationId   = ApiRequestId.ConfirmPasswordChange;
            server.Account.AuthenticationTime = DatabaseEssentials.GetTimeStamp();
            server.Account.Password           = SecurityManager.ScryptHash(Password);
            string       name         = string.IsNullOrEmpty(server.Account.AccountInfo.Name) ? "user" : server.Account.AccountInfo.Name;
            EmailManager emailManager = EmailManager.Create(Subject.ChangePassword, server.Account.AccountInfo.Email, name, server.Account.AuthenticationCode);
            bool         success      = emailManager.Send();

            if (!success)
            {
                ApiError.Throw(ApiErrorCode.InternalServerError, server, "Failed to send confirmation email.");
                return;
            }
            GenericSuccessResponse apiResponse           = new GenericSuccessResponse(ResponseId.PasswordChange, true);
            SerializedApiResponse  serializedApiResponse = SerializedApiResponse.Create(apiResponse);
            string json = serializedApiResponse.Serialize();

            server.Send(json);
            server.UnitTesting.MethodSuccess = true;
        }
Пример #3
0
        static void Main(string[] args)
        {
            // 实例化RPC服务端,指定端口,同时在Tcp/Udp/IPv4/IPv6上监听
            var svr = new ApiServer(8084);

            // 注册服务控制器
            svr.Register <MyController>();
            svr.Register <UserController>();

            // 指定编码器
            svr.Encoder    = new JsonEncoder();
            svr.EncoderLog = XTrace.Log;
            // svr.Log = XTrace.Log;
            var ns = svr.EnsureCreate() as NetServer;

            //ns.Log = XTrace.Log;
            //ns.LogSend = true;
            //ns.LogReceive = true;

            //svr.Log = XTrace.Log;

            svr.Start();
            _server = svr;
            Console.WriteLine("OK99999999!");
            // 定时显示性能数据
            // _timer = new TimerX(ShowStat, ns, 100, 1000);
            Console.ReadKey();
        }
Пример #4
0
        public override void Process(ApiServer server)
        {
            if (server.AssertServerSetup(this) || server.AssertAccountNotNull() || server.AssertUserOnline())
            {
                return;
            }
            using DatabaseManager databaseManager = new DatabaseManager(server);
            string id = databaseManager.UserIdToId(UserId, out bool success);

            if (!success)
            {
                return;
            }
            Account account = databaseManager.GetAccount(id, out success);

            if (!success)
            {
                return;
            }
            account.AccountInfo.Radius = -1;
            GetAccountInfoResponse response = new GetAccountInfoResponse(ResponseId.GetAccountInfo, account.AccountInfo);
            SerializedApiResponse  serializedApiResponse = SerializedApiResponse.Create(response);
            string json = serializedApiResponse.Serialize();

            server.Send(json);
            server.UnitTesting.MethodSuccess = true;
        }
Пример #5
0
        public override void Process(ApiServer server)
        {
            if (server.AssertServerSetup(this) || server.AssertIdSet() || server.AssertUserOnline())
            {
                return;
            }
            using DatabaseManager databaseManager = new DatabaseManager(server);
            if (databaseManager.AssertHasPermission(Permission.CREATE_EVENT) || databaseManager.AssertEventExists(EventId))
            {
                return;
            }
            string                query              = "DELETE FROM Tbl_event WHERE hid = \'" + DatabaseEssentials.Security.Sanitize(EventId) + "\';";
            SqlApiRequest         sqlRequest         = SqlApiRequest.Create(SqlRequestId.ModifyData, query, -1);
            SqlModifyDataResponse modifyDataResponse = databaseManager.AwaitModifyDataResponse(sqlRequest, out bool success);

            if (!success)
            {
                return;
            }
            if (!modifyDataResponse.Success)
            {
                ApiError.Throw(ApiErrorCode.InternalServerError, server, "Unable to delete the requested event.");
                return;
            }
            GenericSuccessResponse response = new GenericSuccessResponse(ResponseId.DeleteEventA, true);
            SerializedApiResponse  serializedApiResponse = SerializedApiResponse.Create(response);
            string json = serializedApiResponse.Serialize();

            server.Send(json);
            server.UnitTesting.MethodSuccess = true;
        }
Пример #6
0
        public override void Process(ApiServer server)
        {
            if (server.AssertServerSetup(this) || server.AssertIdSet() || server.AssertUserOnline() || server.AssertEventInfoNotNull(EventInfo))
            {
                return;
            }
            using DatabaseManager databaseManager = new DatabaseManager(server);
            if (databaseManager.AssertEventExists(EventInfo.EventId) || databaseManager.AssertHasPermission(Permission.CREATE_EVENT))
            {
                return;
            }
            string                query              = DatabaseEssentials.Security.SanitizeQuery(new string[] { "UPDATE Tbl_event SET userid = ", server.Account.Id, ", title = \'", EventInfo.Title, "\', expires = ", EventInfo.ExpirationDate.ToString(), ", date = \'", EventInfo.Date, "\', time = \'", EventInfo.Time, "\', location = \'", EventInfo.Location, "\', url = \'", EventInfo.Url, "\', image = \'", EventInfo.Image, "\', description = \'", EventInfo.Description, "\'  WHERE hid = \'", EventInfo.EventId, "\';" });
            SqlApiRequest         sqlRequest         = SqlApiRequest.Create(SqlRequestId.ModifyData, query, -1);
            SqlModifyDataResponse modifyDataResponse = databaseManager.AwaitModifyDataResponse(sqlRequest, out bool success);

            if (!success)
            {
                return;
            }
            if (!modifyDataResponse.Success)
            {
                ApiError.Throw(ApiErrorCode.InternalServerError, server, "Unable to update event.");
                return;
            }
            GenericSuccessResponse response = new GenericSuccessResponse(ResponseId.EditEventA, true);
            SerializedApiResponse  serializedApiResponse = SerializedApiResponse.Create(response);
            string json = serializedApiResponse.Serialize();

            server.Send(json);
            server.UnitTesting.MethodSuccess = true;
        }
Пример #7
0
        public async Task SendMessageAfterServerStops_IsFailure()
        {
            var configuration = ApiTestHelper.GetConfiguration();
            var factory       = ApiTestHelper.GetRequestProcessorFactory();
            var serializer    = ApiTestHelper.GetMessageSerializer();

            using var server = new ApiServer(configuration, factory, serializer, LogManager.GetLogger("Server"));
            using var client = new ApiClient(configuration, serializer, LogManager.GetLogger("Client"));

            var result = await server.StartAsync();

            Assert.True(result);

            result = await client.ConnectAsync();

            Assert.True(result);
            Assert.Equal(ConnectionState.Connected, client.State);

            server.Stop();

            var response = await client.SendMessageAsync("Resource", "Action", "Content");

            Assert.False(response.IsSuccess);
            Assert.Equal(ConnectionState.Disconnected, client.State);
        }
Пример #8
0
        public async Task SendMessageWithClientConnect_IsSuccess()
        {
            var configuration = ApiTestHelper.GetConfiguration();
            var factory       = ApiTestHelper.GetRequestProcessorFactory();
            var serializer    = ApiTestHelper.GetMessageSerializer();

            using var server = new ApiServer(configuration, factory, serializer, LogManager.GetLogger("Server"));
            using var client = new ApiClient(configuration, serializer, LogManager.GetLogger("Client"));

            var startResult = await server.StartAsync().ConfigureAwait(false);

            Assert.True(startResult);
            Assert.Equal(ServerState.Started, server.State);

            var connectResult = await client.ConnectAsync().ConfigureAwait(false);

            Assert.True(connectResult);
            Assert.Equal(ConnectionState.Connected, client.State);

            var response = await client.SendMessageAsync("Resource", "Action", "Content").ConfigureAwait(false);

            Assert.NotNull(response);
            Assert.True(response.IsSuccess);
            Assert.Equal("Content", response.Content);
        }
Пример #9
0
        static void Main(String[] args)
        {
            XTrace.UseConsole();

            var set = Setting.Current;

            var sc = new ApiServer(set.Port)
            {
                Log = XTrace.Log
            };

            if (set.Debug)
            {
                var ns = sc.EnsureCreate() as NetServer;
                ns.Log = XTrace.Log;
#if DEBUG
                ns.LogSend    = true;
                ns.LogReceive = true;
                sc.EncoderLog = XTrace.Log;
#endif
            }

            // 注册服务
            sc.Register <StarService>();

            StarService.Log   = XTrace.Log;
            StarService.Local = new IPEndPoint(NetHelper.MyIP(), set.Port);

            sc.Start();

            _Server = sc;

            Thread.Sleep(-1);
        }
Пример #10
0
        public override void Process(ApiServer server)
        {
            if (server.AssertServerSetup(this) || server.AssertUserOnline() || server.AssertIdSet())
            {
                return;
            }
            using DatabaseManager databaseManager = new DatabaseManager(server);
            if (databaseManager.OptionalAssertUserExists(server.Account.Id, true))
            {
                return;
            }
            string        sanitizedId    = DatabaseEssentials.Security.Sanitize(server.Account.Id);
            string        deleteCookies  = "DELETE FROM Tbl_cookies WHERE userid = " + sanitizedId + ";";
            string        deleteAdmin    = "DELETE FROM Tbl_admin WHERE userid = " + sanitizedId + ";";
            string        deleteEvent    = "DELETE FROM Tbl_event WHERE userid = " + sanitizedId + ";";
            string        deleteLog      = "DELETE FROM Tbl_log WHERE userid = " + sanitizedId + ";";
            string        deleteLikes    = "DELETE FROM Tbl_likes WHERE sourceid = " + sanitizedId + " OR targetid = " + sanitizedId + ";";
            string        deleteDislikes = "DELETE FROM Tbl_dislikes WHERE sourceid = " + sanitizedId + " OR targetid = " + sanitizedId + ";";
            string        deleteMatches  = "DELETE FROM Tbl_match WHERE userid1 = " + sanitizedId + " OR userid2 = " + sanitizedId + ";";
            string        query          = deleteCookies + deleteAdmin + deleteEvent + deleteLog + deleteLikes + deleteDislikes + deleteMatches;
            SqlApiRequest sqlRequest     = SqlApiRequest.Create(SqlRequestId.ModifyData, query, -1);

            _ = databaseManager.AwaitModifyDataResponse(sqlRequest, out bool success);
            if (!success)
            {
                return;
            }
            GenericSuccessResponse response = new GenericSuccessResponse(ResponseId.DeleteAccount, true);
            SerializedApiResponse  serializedApiResponse = SerializedApiResponse.Create(response);
            string json = serializedApiResponse.Serialize();

            server.Send(json);
            server.UnitTesting.MethodSuccess = true;
        }
Пример #11
0
        private void Init()
        {
            var sc = _Server;

            if (sc == null)
            {
                var set = Setting.Current;

                sc = new ApiServer(set.Port)
                {
                    Log = XTrace.Log
                };
                if (set.Debug)
                {
                    var ns = sc.EnsureCreate() as NetServer;
                    ns.Log = XTrace.Log;
#if DEBUG
                    ns.LogSend    = true;
                    ns.LogReceive = true;
                    sc.EncoderLog = XTrace.Log;
#endif
                }

                // 注册服务
                sc.Register <StarService>();

                StarService.Log   = XTrace.Log;
                StarService.Local = new IPEndPoint(NetHelper.MyIP(), set.Port);

                sc.Start();

                _Server = sc;
            }
        }
Пример #12
0
        static void Main(String[] args)
        {
            XTrace.UseConsole();

            var sc = new RpcServer()
            {
                Port       = 1234,
                Log        = XTrace.Log,
                EncoderLog = XTrace.Log,

                NameSpace = "NewLife.Test",
            };

            var star = new StarClient("tcp://127.0.0.1:6666")
            {
                Code   = "test",
                Secret = "pass"
            };

            sc.Star = star;

            sc.Start();

            _Server = sc;

            Thread.Sleep(-1);
        }
        public async void Buy(object sender, EventArgs e)
        {
            ApiServer server = new ApiServer();
            var       tp     = new TransactionProcessor(server);

            tp.ConfirmOrder(CurrentOrder, "buyerPhoneNumber");
        }
        public static void SetTenantData(string language)
        {
            try
            {
                using (var backupClient = new BackupServiceClient())
                {
                    int          tenantID = CoreContext.TenantManager.GetCurrentTenant().TenantId;
                    BackupResult result   = null;
                    do
                    {
                        if (result == null)
                        {
                            result = backupClient.RestorePortal(tenantID, language);
                        }
                        else
                        {
                            result = backupClient.GetRestoreStatus(tenantID);
                        }
                        Thread.Sleep(TimeSpan.FromSeconds(5));
                    } while (!result.Completed);
                    //Thread.Sleep(TimeSpan.FromSeconds(15)); // wait to invalidate users cache...
                }

                var apiServer = new ApiServer();
                apiServer.CallApiMethod(SetupInfo.WebApiBaseUrl + "/crm/settings", "PUT");
            }
            catch (Exception error)
            {
                LogManager.GetLogger("ASC.Web").Error("Can't set default data", error);
            }
        }
Пример #15
0
        public async Task Streams_Bidi_FetchNumbersTest()
        {
            using var m1 = new BlockingStream();
            using var m2 = new BlockingStream();

            using var server = new ApiServer <SimpleServiceClient, Server>(m1, m2);
            server.Start();

            using var client = new ApiClient <SimpleServiceClient, Server>(m2, m1);
            client.Start();

            var testNumbers = new[]
            {
                1.0,
                Math.PI,
                0.0,
                -10.0
            };

            foreach (var num in testNumbers)
            {
                var check    = num < 0 ? double.NaN : Math.Sqrt(num);
                var response = await client.RequestApi.Sqrt(value : num);

                Assert.AreEqual(check, response.Value);
            }

            foreach (var num in testNumbers)
            {
                var check    = num < 0 ? double.NaN : Math.Sqrt(num);
                var response = await server.RequestApi.Sqrt(value : num);

                Assert.AreEqual(check, response.Value);
            }
        }
Пример #16
0
        private static void E2E()
        {
            string    sellerPhoneNumber  = "07434";
            string    buyerPhoneNumber   = "34075";
            string    donatorPhoneNumber = "1234";
            ApiServer apiServer          = new ApiServer("http://africatransferapi.azurewebsites.net/api/");

            apiServer.AddPhoneNUmber(sellerPhoneNumber);
            apiServer.AddPhoneNUmber(buyerPhoneNumber);
            apiServer.AddPhoneNUmber(donatorPhoneNumber);
            var x = apiServer.GetAuthModels();

            TransactionProcessor processor = new TransactionProcessor(apiServer);

            processor.AddBankTransfer(44, donatorPhoneNumber);

            processor.AddMobileTransfer(23, donatorPhoneNumber, buyerPhoneNumber);

            var product = processor.AddProduct(new Product {
                Name = "Capriciosa", Price = 22
            });

            var orderId = processor.AddOrder(new List <OrderLine>()
            {
                new OrderLine {
                    ProductID = product.ID,
                    Quantity  = 2
                }
            }, sellerPhoneNumber);

            var order      = processor.GetOrder(orderId);
            var orderTotal = order.OrderLines.Sum(o => o.ProductPrice);

            processor.ConfirmOrder(order, buyerPhoneNumber);
        }
Пример #17
0
        public ApiTest()
        {
            var port = Rand.Next(10000, 65535);

            _Server = new ApiServer(port)
            {
                Log = XTrace.Log,
                //EncoderLog = XTrace.Log,
                ShowError = true,
            };
            _Server.Handler = new TokenApiHandler {
                Host = _Server
            };
            _Server.Start();

            _Uri = $"tcp://127.0.0.1:{port}";

            var client = new ApiClient(_Uri)
            {
                //Log = XTrace.Log
            };

            //client.EncoderLog = XTrace.Log;
            _Client = client;
        }
Пример #18
0
        private static async Task SimpleService()
        {
            //setup basic "network" streams (you can use network streams of course)
            using var m1 = new BlockingStream();
            using var m2 = new BlockingStream();

            //setup server
            using var server = new ApiServer <SimpleServiceServer>(m1, m2);
            server.Start(); //this will start the polling

            //setup client
            using var client = new ApiClient <SimpleServiceClient>(m2, m1);
            client.Start(); //this will start the polling

            //fetch some numbers
            var numbers = (await client.Api.GetRandomNumber(new RandonNumberRequest()
            {
                Count = 5,
                MinValue = 0,
                MaxValue = 100,
            })).Number.ToArray();

            //output the numbers
            Console.WriteLine($"Your random numbers are: {string.Join(", ", numbers)}");
        }
Пример #19
0
        static void TestServer()
        {
            // 实例化RPC服务端,指定端口,同时在Tcp/Udp/IPv4/IPv6上监听
            var svr = new ApiServer(1234);

            // 注册服务控制器
            svr.Register <MyController>();
            svr.Register <UserController>();

            // 指定编码器
            svr.Encoder    = new JsonEncoder();
            svr.EncoderLog = XTrace.Log;

            // 打开原始数据日志
            var ns = svr.Server as NetServer;

            ns.Log        = XTrace.Log;
            ns.LogSend    = true;
            ns.LogReceive = true;

            svr.Log = XTrace.Log;
            svr.Start();

            _server = svr;

            // 定时显示性能数据
            _timer = new TimerX(ShowStat, ns, 100, 1000);
        }
Пример #20
0
        public override void Process(ApiServer server)
        {
            if (server.AssertServerSetup(this) || server.AssertAuthenticationCodeInvalid(Code) || server.AssertUserOffline())
            {
                return;
            }
            using DatabaseManager databaseManager = new DatabaseManager(server);
            string                userid             = SecurityManager.GenerateHid();
            string                query              = DatabaseEssentials.Security.SanitizeQuery(new string[] { "INSERT INTO Tbl_user (password, hid, email) VALUES (\'", server.Account.Password, "\',\'", userid, "\', \'", server.Account.AccountInfo.Email, "\');" });
            SqlApiRequest         sqlRequets         = SqlApiRequest.Create(SqlRequestId.ModifyData, query, -1);
            SqlModifyDataResponse modifyDataResponse = databaseManager.AwaitModifyDataResponse(sqlRequets, out bool success);

            if (!success)
            {
                return;
            }
            if (!modifyDataResponse.Success)
            {
                ApiError.Throw(ApiErrorCode.InternalServerError, server, "Unable to create user.");
                return;
            }
            server.Account.AuthenticationCode = string.Empty;
            server.Account.AuthenticationId   = ApiRequestId.Invalid;
            server.Account.AuthenticationTime = -1;
            GenericSuccessResponse response = new GenericSuccessResponse(ResponseId.ConfirmAccount, true);
            SerializedApiResponse  serializedApiResponse = SerializedApiResponse.Create(response);
            string json = serializedApiResponse.Serialize();

            server.Send(json);
            server.UnitTesting.MethodSuccess = true;
        }
Пример #21
0
        /// <summary>服务停止</summary>
        /// <remarks>
        /// 安装Windows服务后,服务停止会执行该方法。
        /// 控制台菜单按5进入循环调试,任意键结束时也会执行该方法。
        /// </remarks>
        protected override void StopWork(String reason)
        {
            base.StopWork(reason);

            _Server.TryDispose();
            _Server = null;
        }
Пример #22
0
        protected override void UnloadData()
        {
            try
            {
                if (IsServer || DedicatedServer)
                {
                    MyAPIGateway.Multiplayer.UnregisterMessageHandler(ServerPacketId, ServerReceivedPacket);
                }
                else
                {
                    MyAPIGateway.Multiplayer.UnregisterMessageHandler(ClientPacketId, ClientReceivedPacket);
                }

                MyAPIGateway.Utilities.UnregisterMessageHandler(7771, Handler);

                MyAPIGateway.TerminalControls.CustomControlGetter -= CustomControlHandler;
                MyEntities.OnEntityCreate          -= OnEntityCreate;
                MyAPIGateway.Gui.GuiControlCreated -= MenuOpened;
                MyAPIGateway.Gui.GuiControlRemoved -= MenuClosed;

                MyVisualScriptLogicProvider.PlayerDisconnected   -= PlayerDisconnected;
                MyVisualScriptLogicProvider.PlayerRespawnRequest -= PlayerConnected;
                ApiServer.Unload();

                PurgeAll();

                Log.Line("Logging stopped.");
                Log.Close();
            }
            catch (Exception ex) { Log.Line($"Exception in UnloadData: {ex}"); }
        }
Пример #23
0
        void InitRpcServer()
        {
            // 实例化RPC服务端,指定端口,同时在Tcp/Udp/IPv4/IPv6上监听
            var svr = new ApiServer(12346)
            {
                // 指定编码器
                Encoder = new JsonEncoder(),

                EncoderLog = XTrace.Log,
                Log        = XTrace.Log,
                Tracer     = Tracer,
            };

            // 注册服务控制器
            svr.Register <MyController>();
            svr.Register <ProductController>();

#if DEBUG
            // 打开原始数据日志
            var ns = svr.EnsureCreate() as NetServer;
            //var ns = svr.Server as NetServer;
            ns.Log        = XTrace.Log;
            ns.LogSend    = true;
            ns.LogReceive = true;
#endif

            svr.Start();

            _rpcServer = svr;
        }
Пример #24
0
        void Disconnect()
        {
            if (_Client != null)
            {
                _Client.Dispose();
                _Client = null;

                "关闭连接".SpeechTip();
            }
            if (_Server != null)
            {
                "停止服务".SpeechTip();
                _Server.Dispose();
                _Server = null;
            }
            if (_timer != null)
            {
                _timer.Dispose();
                _timer = null;
            }

            pnlInfo.Enabled    = false;
            pnlSetting.Enabled = true;
            btnConnect.Text    = "打开";
        }
        public async void TransferFundsBtn_Clicked(object sender, EventArgs e)
        {
            ApiServer            server    = new ApiServer();
            TransactionProcessor processor = new TransactionProcessor(server);

            processor.AddMobileTransfer(100, AuthModel.MobilePhoneNumber, "buyerNumber");
        }
Пример #26
0
        /// <summary>服务启动</summary>
        /// <remarks>
        /// 安装Windows服务后,服务启动会执行一次该方法。
        /// 控制台菜单按5进入循环调试也会执行该方法。
        /// </remarks>
        protected override void StartWork(String reason)
        {
            var set = Setting.Current;

            var svr = new ApiServer(set.Port)
            {
                Log = XTrace.Log
            };

            //var ts = new AntService();
            //svr.Register(ts, null);
            svr.Register <AntService>();

            AntService.Log = XTrace.Log;

            // 本地结点
            AntService.Local = new IPEndPoint(NetHelper.MyIP(), set.Port);

            svr.Start();

            _server = svr;

            _clearOnlineTimer = new TimerX(ClearOnline, null, 1000, 10 * 1000);
            _clearItemTimer   = new TimerX(ClearItems, null, 10_000, 3600_000)
            {
                Async = true
            };

            base.StartWork(reason);
        }
Пример #27
0
        /// <summary>开始服务</summary>
        /// <param name="reason"></param>
        protected override void StartWork(String reason)
        {
            var set = Setting.Current;

            var svr = new ApiServer
            {
                Port = set.Port,
                Log  = XTrace.Log
            };

            if (set.Debug)
            {
                svr.ShowError = true;
            }

            // 注册服务
            svr.Register <MQService>();

            MQService.Host = MQHost.Instance;
            MQService.Log  = XTrace.Log;

            svr.Start();

            _Server = svr;

            base.StartWork(reason);
        }
Пример #28
0
        public Session()
        {
            UiInput       = new UiInput(this);
            TargetUi      = new TargetUi(this);
            WheelUi       = new Wheel(this);
            HudUi         = new Hud(this);
            DsUtil        = new DSUtils(this);
            DsUtil2       = new DSUtils(this);
            StallReporter = new StallReporter(this);
            Av            = new RunAv(this);
            Api           = new ApiBackend(this);
            ApiServer     = new ApiServer(this);
            Projectiles   = new Projectiles.Projectiles(this);
            Proccessor    = new NetworkProccessor(this);

            VisDirToleranceCosine = Math.Cos(MathHelper.ToRadians(VisDirToleranceAngle));
            AimDirToleranceCosine = Math.Cos(MathHelper.ToRadians(AimDirToleranceAngle));
            HeatEmissives         = CreateHeatEmissive();

            LoadVanillaData();

            CoreWorkOpt.TaskType       = CastProhibit(CoreWorkOpt.TaskType, 5);
            CoreWorkOpt.MaximumThreads = 1;

            foreach (var suit in (PacketType[])Enum.GetValues(typeof(PacketType)))
            {
                PacketPools.Add(suit, new MyConcurrentPool <Packet>(128, packet => packet.CleanUp()));
            }
        }
Пример #29
0
        public Session()
        {
            UiInput            = new UiInput(this);
            HudUi              = new Hud(this);
            TargetUi           = new TargetUi(this);
            DsUtil             = new DSUtils(this);
            DsUtil2            = new DSUtils(this);
            StallReporter      = new StallReporter();
            InnerStallReporter = new StallReporter();
            Av                     = new RunAv(this);
            Api                    = new ApiBackend(this);
            ApiServer              = new ApiServer(this);
            Projectiles            = new Projectiles.Projectiles(this);
            AcqManager             = new AcquireManager(this);
            TerminalMon            = new TerminalMonitor(this);
            _cachedEwarPacket.Data = new List <EwarValues>(32);

            ProblemRep            = new ProblemReport(this);
            VisDirToleranceCosine = Math.Cos(MathHelper.ToRadians(VisDirToleranceAngle));
            AimDirToleranceCosine = Math.Cos(MathHelper.ToRadians(AimDirToleranceAngle));

            VoxelCaches[ulong.MaxValue] = new VoxelCache();

            HeatEmissives = CreateHeatEmissive();
            LoadVanillaData();

            for (int i = 0; i < AuthorSettings.Length; i++)
            {
                AuthorSettings[i] = -1;
            }
        }
Пример #30
0
 private async Task Listen()
 {
     tcpListener.Start();
     while (true)
     {
         TcpClient client;
         try { client = await tcpListener.AcceptTcpClientAsync(); }
         catch (SocketException e)
         {
             if (e.SocketErrorCode == SocketError.Interrupted)
             {
                 return;
             }
             throw;
         }
         var stream = client.GetStream();
         var server = new ApiServer <T>(stream);
         apiServers.TryAdd(server, client);
         server.Disconnected += (api, _) =>
         {
             if (apiServers.TryRemove((ApiServer <T>)api, out TcpClient client))
             {
                 client.Dispose();
             }
             api.Dispose();
         };
         SetupApi?.Invoke(server.Api);
         server.Start();
     }
 }
Пример #31
0
		public MetaDaemonApi(	RpcConfig bitsharesConfig, RpcConfig bitcoinConfig, 
								string bitsharesAccount,
								string databaseName, string databaseUser, string databasePassword,
								string listenAddress,
								string bitcoinFeeAddress,
								string bitsharesFeeAccount,
								string adminUsernames,
								string masterSiteUrl,
								string masterSiteIp,
								AsyncPump scheduler) : 
								base(bitsharesConfig, bitcoinConfig, bitsharesAccount, adminUsernames,
								databaseName, databaseUser, databasePassword)
		{
			m_bitshaaresFeeAccount = bitsharesFeeAccount;
			m_bitcoinFeeAddress = bitcoinFeeAddress;
			m_masterSiteUrl = masterSiteUrl.TrimEnd('/');

			m_scheduler = scheduler;

			ServicePointManager.ServerCertificateValidationCallback = Validator;

			Serialisation.Defaults();

			// don't ban on exception here because we'll only end up banning the webserver!
			m_server = new ApiServer<IDummyDaemon>(new string[] { listenAddress }, null, false, eDdosMaxRequests.Ignore, eDdosInSeconds.One);

			m_api = new SharedApi<IDummyDaemon>(m_dataAccess);
			m_server.ExceptionEvent += m_api.OnApiException;
			
			// only allow the main site to post to us
			m_server.SetIpLock(masterSiteIp);

			m_marketHandlers = new Dictionary<string,MarketBase>();

			// get all market pegged assets
			List<BitsharesAsset> allAssets = m_bitshares.BlockchainListAssets("", int.MaxValue);
			m_allBitsharesAssets = allAssets.ToDictionary(a => a.id);
			Dictionary<int, BitsharesAsset> peggedAssets = allAssets.Where(a => a.issuer_id <= 0).ToDictionary(a => a.id);
			

			// get all active markets containing those assets
			m_allDexMarkets = m_bitshares.BlockchainListMarkets().Where(m => m.last_error == null &&
																		peggedAssets.ContainsKey(m.base_id) &&
																		peggedAssets.ContainsKey(m.quote_id)).ToList();

			m_allCurrencies = m_dataAccess.GetAllCurrencies();

			List<MarketRow> markets = GetAllMarkets();
			foreach (MarketRow r in markets)
			{
				m_marketHandlers[r.symbol_pair] = CreateHandlerForMarket(r);
			}
			
			m_server.HandlePostRoute(Routes.kSubmitAddress,				OnSubmitAddress, eDdosMaxRequests.Ignore, eDdosInSeconds.Ignore, false);
			m_server.HandleGetRoute(Routes.kGetAllMarkets,				OnGetAllMarkets, eDdosMaxRequests.Ignore, eDdosInSeconds.Ignore, false);
		}
Пример #32
0
        //GlostenMilgromSimple m_glosten;
        public DaemonApi(RpcConfig bitsharesConfig, RpcConfig bitcoinConfig, 
							string bitsharesAccount, string bitsharesAsset,
							string bitcoinDespositAddress,
							string databaseName, string databaseUser, string databasePassword,
							string listenAddress)
            : base(bitsharesConfig, bitcoinConfig, bitsharesAccount, bitsharesAsset, bitcoinDespositAddress,
							databaseName, databaseUser, databasePassword)
        {
            m_server = new ApiServer<IDummy>(new string[] { listenAddress });
            m_server.ExceptionEvent += OnApiException;

            m_server.HandlePostRoute(Routes.kSubmitAddress, OnSubmitAddress, eDdosMaxRequests.Ignore, eDdosInSeconds.Ignore, false);
            m_server.HandlePostRoute(Routes.kGetStats, OnGetStats, eDdosMaxRequests.Ignore, eDdosInSeconds.Ignore, false);
        }