示例#1
0
        public WebApi(
            ILogger <IWebApi> logger,
            IMessageFactory messageFactory,
            ImpostorHqConfig config,
            IPasswordFile passwordProvider,
            ICryptoManager crypto,
            IWebApiUserFactory webApiUserFactory,
            IMetricsProvider metricsProvider,
            ILogManager logManager)
        {
            _logger          = logger;
            _messageFactory  = messageFactory;
            _passwords       = passwordProvider.Passwords;
            _crypto          = crypto;
            _userFactory     = webApiUserFactory;
            _metricsProvider = metricsProvider;
            _logManager      = logManager;

            _users    = new ConcurrentDictionary <IWebSocketConnection, WebApiUser>();
            _timeouts = new ConcurrentDictionary <IWebSocketConnection, int>();

            _server = new WebSocketServer($"ws://{config.Host}:{config.ApiPort}");

            _timer1S = new Timer(1000)
            {
                AutoReset = true
            };
            _timer1S.Elapsed += _timer1s_Elapsed;
            Start();
        }
示例#2
0
        public BanManager(
            IDashboardCommandHandler handler,
            HttpServer httpServer,
            IPasswordFile passwordFile,
            IDatabase <string, PlayerBan> banDatabase,
            ObjectPool <StringBuilder> sbPool,
            IEventManager eventManager,
            ILogManager logManager,
            FileOperationHandler fileOperationHandler,
            RecordOperationHandler operationHandler)
        {
            _banDatabase = banDatabase;
            _sbPool      = sbPool;
            _logManager  = logManager;

            logManager.LogInformation($"Ban Manager loaded {_banDatabase.Elements.Count()} bans.");

            handler.AddCommand(new DashboardCommand(operationHandler.Handle, "/ban",
                                                    "ban database record operations. Usage: /ban add/remove/exists/info ip/name [--offline] [Player Name / IP Address] [reason]. Note that the player name and reason may be supplied in quotes (\").",
                                                    6, 3));

            handler.AddCommand(new DashboardCommand(fileOperationHandler.Handle, "/bans",
                                                    "ban database file operations. Usage: /bans list/purge/download", 1, 1));

            eventManager.RegisterListener(this);

            foreach (var password in passwordFile.Passwords)
            {
                httpServer.AddHandler(new DynamicHandler($"/bans.csv?{password}", GenerateHttpResponseBody));
            }
        }
 public HttpRootConfigurator(
     HttpServer server,
     ImpostorHqConfig config,
     IPasswordFile passwordFile,
     IHttpPlayerListProvider playerListProvider)
 {
     _server     = server;
     _config     = config;
     _playerList = playerListProvider;
     _passwords  = passwordFile.Passwords;
 }
        public DashboardCommandHandler(ICommandParser <DashboardCommand> parser, IMessageFactory messageFactory,
                                       ICommandHelpProvider helpProvider, ILogManager logManager, ObjectPool <StringBuilder> sbPool,
                                       HttpServer server, IPasswordFile passwordFile)
        {
            _parser         = parser;
            _messageFactory = messageFactory;
            _helpProvider   = helpProvider;
            _logManager     = logManager;
            _sbPool         = sbPool;
            _server         = server;
            _passwords      = passwordFile.Passwords.Select(p => p.Key).ToArray();

            _parser.Register(new DashboardCommand(HelpRequested, "/help", "lists commands. Usage: /help to show commands, /help [command].", 1, 0));
            _parser.Register(new DashboardCommand(FetchLogRequested, "/fetch-log",
                                                  "fetches log with the name obtained from /logs. Usage: /fetch-log [name]", 1, 1));
            _parser.Register(new DashboardCommand(ListLogsRequested, "/logs", "lists logs", 0, 0));
            _parser.Register(new DashboardCommand(LogSizeRequested, "/logsize", "shows the space used by the logs", 0, 0));
        }
示例#5
0
 public CryptoManager(ILogger <ICryptoManager> logger, IBlackTea btc, IPasswordFile passwordProvider)
 {
     _logger    = logger;
     _crypto    = btc;
     _passwords = passwordProvider.Passwords;
 }