示例#1
0
        private void InjectPayloadFields(RequestHeader requestHeader, ResponseHeader responseSession)
        {
            string fname = requestHeader.Target.Path;
            string mime  = mimeMapper.GetMime(fname);
            long   len   = htdocsSystem.GetLength(fname, EncodingType.Identity);

            responseSession.Add(new ContentLengthHf(len));
            responseSession.Add(new ContentTypeHf(mime));
        }
示例#2
0
        public void Start(Session session)
        {
            do
            {
                session.TakeNextHeader();
                RequestHeader  requestHeader   = session.CurrentHeader;
                ResponseHeader responseSession = new ResponseHeader();

                bool sendPayload = GoPayloadIgnoreFilters(requestHeader, responseSession);

                if (sendPayload)
                {
                    GoInjectFilters(requestHeader, responseSession);
                }

                InjectCommonFields(requestHeader, responseSession);

                if (sendPayload)
                {
                    responseSession.StatusCode = StatusCode.OK;
                    InjectPayloadFields(requestHeader, responseSession);
                }
                else
                {
                    responseSession.Add(new ContentLengthHf(0));
                }
                SendHeader(session, responseSession);
                if (sendPayload & requestHeader.Method == HttpMethod.GET)
                {
                    SendPayload(session, responseSession);
                }
            } while (KeepConnection(session));
        }
示例#3
0
        public void InjectField(RequestHeader requestHeader, ResponseHeader responseSession)
        {
            Regex  r    = new Regex(RegexFileName);
            string path = requestHeader.Target.Path;

            if (r.IsMatch(path))
            {
                Match m = r.Match(path);
                responseSession.Add(new UndefinedHf("Content-Disposition", "attachment; filename=\"" + path.Replace('/', '_') + "\""));
            }
        }
示例#4
0
        public bool Check(RequestHeader requestHeader, ResponseHeader response)
        {
            Regex regex = new Regex(RegexPath);

            if (regex.IsMatch(requestHeader.Target.Path))
            {
                response.StatusCode = (StatusCode)Status;
                response.Add(new LocationHf(Location));
                return(false);
            }
            return(true);
        }
示例#5
0
        public bool Check(RequestHeader requestHeader, ResponseHeader response)
        {
            Regex r = new Regex(PathRegexMatch);

            if (r.IsMatch(requestHeader.Target.Path))
            {
                if (requestHeader.Contains(HFType.Authorization))
                {
                    AuthorizationHf authHf = requestHeader.GetSingleField <AuthorizationHf>(HFType.Authorization);
                    if (authHf.UserName == UserName && Password == authHf.Password)
                    {
                        return(true);
                    }
                }

                response.StatusCode = StatusCode.Unauthorized;
                response.Add(new WWWAuthenticateHf("authorization", "UTF-8"));
                return(false);
            }
            else
            {
                return(true);
            }
        }
示例#6
0
 private void InjectCommonFields(RequestHeader requestHeader, ResponseHeader responseSession)
 {
     responseSession.Add(new ServerHf("Vinca/0.8"));
     responseSession.Add(new DateHf(DateTime.Now));
 }
示例#7
0
 public void InjectField(RequestHeader requestHeader, ResponseHeader responseSession)
 {
     responseSession.Add(headerFields);
 }