Ejemplo n.º 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;
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 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();
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 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;
            }
        }
Ejemplo n.º 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);
            }
        }
Ejemplo n.º 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);
            }
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 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)}");
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 21
0
        /// <summary>服务停止</summary>
        /// <remarks>
        /// 安装Windows服务后,服务停止会执行该方法。
        /// 控制台菜单按5进入循环调试,任意键结束时也会执行该方法。
        /// </remarks>
        protected override void StopWork(String reason)
        {
            base.StopWork(reason);

            _Server.TryDispose();
            _Server = null;
        }
Ejemplo n.º 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}"); }
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 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    = "打开";
        }
Ejemplo n.º 25
0
        public async void TransferFundsBtn_Clicked(object sender, EventArgs e)
        {
            ApiServer            server    = new ApiServer();
            TransactionProcessor processor = new TransactionProcessor(server);

            processor.AddMobileTransfer(100, AuthModel.MobilePhoneNumber, "buyerNumber");
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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()));
            }
        }
Ejemplo n.º 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;
            }
        }
Ejemplo n.º 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();
     }
 }
Ejemplo n.º 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);
		}
Ejemplo n.º 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);
        }