Exemple #1
0
        private static void CaptureUnzipFileRequest(RequestWrapper request)
        {
            var    req  = request.Request as C2S_UnzipFileRequest;
            string path = null;

            if (req == null || !FileManager.FileExists(req.S64Sha256, out path) || !request.Connection.Authorized(DfsPermissions.UnzipFile))
            {
                request.TrySendResponse(new S2C_UnzipFileResult(null, false, false), out _);
                return;
            }


            FileStream fs;

            try
            {
                fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete);
            }
            catch
            {
                request.TrySendResponse(new S2C_UnzipFileResult(null, false, false), out _);
                return;
            }
            UnzipQueue.Enqueue(new UnzipFileItem {
                FileStream = fs, Request = request
            },
                               CryptoHelper.BuildDiscriminatorFromS64(req.S64Sha256));
        }
Exemple #2
0
        private static void Server_ClientDisconnected(Connection connection, Exception exception)
        {
            var role = connection.Data.Get <string>("_R", null) != null;

            if (role)
            {
                VerifyQueue.RemoveClient();
                SendQueue.RemoveClient();
                UnzipQueue.RemoveClient();

                //var targetDict = role == DfsClientType.Shard ? Shards : Realms;
                //targetDict.TryRemove(connection.Identifier, out _);
            }
        }
Exemple #3
0
        private static bool AcceptClient(Connection client)
        {
            if (client.SslCertificates.RemotePolicyErrors != SslPolicyErrors.None)
            {
                return(false);
            }
            if (!PermissionManager.Authorize(client))
            {
                return(false);
            }

            VerifyQueue.NewClient();
            SendQueue.NewClient();
            UnzipQueue.NewClient();

            //targetDict.TryAdd(client.Identifier, client);
            //client.Data["Role"] = type.ToString();
            return(true);
        }