Exemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Controller"/> class.
 /// </summary>
 /// <param name="logger">The message logger.</param>
 /// <param name="events">The server event manager.</param>
 /// <param name="rpc">The RPC handler.</param>
 /// <param name="rcon">The RCON handler.</param>
 protected Controller(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon)
 {
     this.Logger = logger;
     this.Events = events;
     this.Rpc    = rpc;
     this.Rcon   = rcon;
 }
Exemplo n.º 2
0
        public ChatController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
        {
            this.Rpc.Event(RpcEvents.ChatSendMessage).On <ChatMessage>((e, message) =>
            {
                this.Logger.Debug($"Got message: {message.Content}");

                this.Rpc.Event(RpcEvents.ChatSendMessage).Trigger(message);
            });
        }
        public CharactersController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
        {
            this.Rpc.Event(CharacterEvents.Load).On(Load);

            this.Rpc.Event(CharacterEvents.Create).On <Character>(Create);

            this.Rpc.Event(CharacterEvents.Delete).On <Guid>(Delete);
        }
Exemplo n.º 4
0
 public InventoryController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
 {
     // Send configuration when requested
     this.Rpc.Event(InventoryEvents.Configuration).On(e => e.Reply(this.Configuration));
 }
Exemplo n.º 5
0
        public DatabaseController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, DatabaseConfiguration configuration) : base(logger, events, rpc, rcon, configuration)
        {
            // Set global database options
            ServerConfiguration.DatabaseConnection  = this.Configuration.Connection.ToString();
            ServerConfiguration.AutomaticMigrations = this.Configuration.Migrations.Automatic;

            // Enable SQL query logging
            MySqlTrace.Switch.Level = SourceLevels.All;
            MySqlTrace.Listeners.Add(new ConsoleTraceListener());

            BootHistory lastBoot;

            using (var context = new StorageContext())
            {
                // Create database if needed
                if (!context.Database.Exists())
                {
                    this.Logger.Info($"No existing database found, creating new database \"{this.Configuration.Connection.Database}\"");

                    context.Database.CreateIfNotExists();
                }

                lastBoot = context.BootHistory.OrderByDescending(b => b.Created).FirstOrDefault() ?? new BootHistory();

                this.currentBoot = new BootHistory();
                context.BootHistory.Add(this.currentBoot);
                context.SaveChanges();
            }

            Task.Factory.StartNew(UpdateBootHistory);

            this.Events.OnRequest(BootEvents.GetTime, () => this.currentBoot.Created);
            this.Events.OnRequest(BootEvents.GetLastTime, () => lastBoot.Created);
            this.Events.OnRequest(BootEvents.GetLastActiveTime, () => lastBoot.LastActive);
        }
        public BusinessFrameworkController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
        {
            // Send configuration when requested
            this.Rpc.Event(BusinessFrameworkEvents.Configuration).On(e => e.Reply(this.Configuration));
            this.Rpc.Event(BusinessFrameworkEvents.BusinessRequestDefault).On(FetchDefaults);

            //SeedDefaults();
        }
Exemplo n.º 7
0
 public VehiclesController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon,
                           Configuration configuration, IClientList clientList) : base(logger, events, rpc, rcon, configuration)
 {
     this.clientList       = clientList;
     this.characterManager = new CharacterManager(this.Events, this.Rpc);
     this.sessionManager   = new SessionManager(this.Events, this.Rpc);
 }
 /// <inheritdoc />
 /// <summary>
 /// Initializes a new instance of the <see cref="ConfigurableController{T}"/> class.
 /// </summary>
 /// <param name="logger">The message logger.</param>
 /// <param name="events">The server event manager.</param>
 /// <param name="rpc">The RPC handler.</param>
 /// <param name="rcon">The RCON handler.</param>
 /// <param name="configuration">The configuration loaded from file.</param>
 protected ConfigurableController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, T configuration) : base(logger, events, rpc, rcon)
 {
     this.Configuration = configuration;
 }
Exemplo n.º 9
0
 public QueueController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration) => Startup();
Exemplo n.º 10
0
        public InventoryUiController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration, CharacterManager characterManager) : base(logger, events, rpc, rcon, configuration)
        {
            this.CharacterManager = characterManager;

            // Send configuration when requested
            this.Rpc.Event(InventoryUiEvents.Configuration).On(e => e.Reply(this.Configuration));

            this.CharacterManager.Selected += OnCharacterSelect;
        }
Exemplo n.º 11
0
 /// <inheritdoc />
 public StreetPositionController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
 {
     this.Rpc.Event(StreetPositionEvents.GetConfig).On(e => e.Reply(this.Configuration));
 }
Exemplo n.º 12
0
        public SessionController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, SessionConfiguration configuration) : base(logger, events, rpc, rcon, configuration)
        {
            API.EnableEnhancedHostSupport(true);

            this.Events.On(ServerEvents.ServerInitialized, OnSeverInitialized);

            this.Rpc.Event("hostingSession").OnRaw(new Action <Player>(OnHostingSession));
            this.Rpc.Event("HostedSession").OnRaw(new Action <Player>(OnHostedSession));
            this.Rpc.Event("playerConnecting").OnRaw(new Action <Player, string, CallbackDelegate, ExpandoObject>(Connecting));
            this.Rpc.Event("playerDropped").OnRaw(new Action <Player, string, CallbackDelegate>(Dropped));

            this.Rpc.Event(RpcEvents.ClientInitialize).On <string>(Initialize);
            this.Rpc.Event(RpcEvents.ClientInitialized).On(Initialized);
            this.Rpc.Event(SessionEvents.DisconnectPlayer).On <string>(Disconnect);

            this.Events.OnRequest(SessionEvents.GetMaxPlayers, () => this.Configuration.MaxClients);
            this.Events.OnRequest(SessionEvents.GetCurrentSessionsCount, () => this.sessions.Count);
            this.Events.OnRequest(SessionEvents.GetCurrentSessions, () => this.sessions.ToList());
        }
        public MetricsController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
        {
            this.client = new ElasticLowLevelClient(new ConnectionConfiguration(new Uri($"http://{this.Configuration.Host}:{this.Configuration.Port}")));

            this.Events.On <object>("metric", async data => await Store(data));

            this.Rpc.Event("metric").On(new Action <IRpcEvent, object>(async(e, data) => await Store(data)));
        }
Exemplo n.º 14
0
        public LoginController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
        {
            this.BCryptHelper = new BCryptHelper(this.Configuration.GlobalSalt, this.Configuration.BCryptCost);

            this.LoginAttempts    = new Dictionary <int, int>();
            this.LoggedInAccounts = new List <Account>();

            // Send configuration when requested
            this.Rpc.Event(LoginEvents.Configuration).On(e => e.Reply(new PublicConfiguration(this.Configuration)));

            this.Rpc.Event(LoginEvents.Register).On <string, string>(OnRegistrationRequested);
            this.Rpc.Event(LoginEvents.Login).On <string, string>(OnLoginRequested);
            this.Rpc.Event(LoginEvents.AuthenticationStarted).On(OnAuthenticationStarted);

            this.Events.OnRequest(LoginEvents.GetCurrentAccountsCount, () => this.LoggedInAccounts.Count);
            this.Events.OnRequest(LoginEvents.GetCurrentAccounts, () => this.LoggedInAccounts);

            // Listen for NFive SessionManager plugin events
            var sessions = new SessionManager.Server.SessionManager(this.Events, this.Rpc);

            sessions.ClientDisconnected += OnClientDisconnected;
        }
Exemplo n.º 15
0
        public GateGuardController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
        {
            this.Logger.Info($"Running in {this.Configuration.Mode.ToString().ToLower()} mode");
            this.Logger.Info($"Database update interval: Every {this.Configuration.Database.ReloadInterval.ToFriendly()}");

            this.Rpc.Event(GateGuardEvents.RuleCreate).On <Guid, GateGuard.AccessRule, string, DateTime?>(OnRuleCreate);
            this.Rpc.Event(GateGuardEvents.RuleDelete).On <Guid>(OnRuleDelete);

            // Listen for NFive SessionManager plugin events
            var sessions = new SessionManager.Server.SessionManager(this.Events, this.Rpc);

            sessions.SessionCreated += OnSessionCreated;

            // ReSharper disable once FunctionNeverReturns
            Task.Factory.StartNew(async() =>
            {
                while (true)
                {
                    Load();

                    await Task.Delay(this.Configuration.Database.ReloadInterval);
                }
            });
        }
Exemplo n.º 16
0
 public SessionController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, SessionConfiguration configuration) : base(logger, events, rpc, rcon, configuration)
 {
 }
Exemplo n.º 17
0
 public DebugController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
 {
     this.Rpc.Event(DebugEvents.Configuration).On(e => e.Reply(this.Configuration));
 }
        public CharactersController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration, InventoryManager inventoryManager) : base(logger, events, rpc, rcon, configuration)
        {
            // Send configuration when requested
            this.Rpc.Event(CharacterEvents.Configuration).On(e => e.Reply(this.Configuration));
            this.Rpc.Event(CharacterEvents.Load).On(Load);
            this.Rpc.Event(CharacterEvents.Create).On <Character>(Create);
            this.Rpc.Event(CharacterEvents.Delete).On <Guid>(Delete);
            this.Rpc.Event(CharacterEvents.Select).On <Guid>(Select);

            this.Rpc.Event(CharacterEvents.SaveCharacter).On <Character>(SaveCharacter);
            this.Rpc.Event(CharacterEvents.SavePosition).On <Guid, Position>(SavePosition);
            this.Rpc.Event(CharacterEvents.SaveHeritage).On <Guid, CharacterHeritage>(SaveHeritage);
            this.Rpc.Event(CharacterEvents.SaveFacialTrait).On <Guid, CharacterFacialTrait>(SaveFacialTrait);
            this.Rpc.Event(CharacterEvents.SaveTrait).On <Guid, CharacterTrait>(SaveTrait);
            this.Rpc.Event(CharacterEvents.SaveStyle).On <Guid, CharacterStyle>(SaveStyle);

            this.Events.OnRequest(CharacterEvents.GetActive, () => this.characterSessions);

            this.inventoryManager = inventoryManager;

            // Listen for NFive SessionManager plugin events
            this.sessionManager = new SessionManager(this.Events, this.Rpc);
            this.sessionManager.ClientDisconnected += OnClientDisconnected;

            Cleanup();
        }
Exemplo n.º 19
0
        public LoginController(ILogger logger, IEventManager events, IRpcHandler rpc, IRconManager rcon, Configuration configuration) : base(logger, events, rpc, rcon, configuration)
        {
            this.bcrypt = new BCryptHelper(this.Configuration.GlobalSalt, this.Configuration.BcryptCost);

            // Send configuration when requested
            this.Rpc.Event(LoginEvents.Configuration).On(e => e.Reply(new PublicConfiguration(this.Configuration)));

            this.Rpc.Event(LoginEvents.Register).On <Credentials>(OnRegistrationRequested);
            this.Rpc.Event(LoginEvents.Login).On <Credentials>(OnLoginRequested);
            this.Rpc.Event(LoginEvents.AuthenticationStarted).On(OnAuthenticationStarted);

            this.Events.OnRequest(LoginEvents.GetCurrentAccounts, () => this.loggedInAccounts);

            // Listen for NFive session events
            this.sessions = new SessionManager(this.Events, this.Rpc);
            this.sessions.ClientDisconnected += OnClientDisconnected;
        }