예제 #1
0
        // 패턴 체크 실행
        bool checkUrlType(HostCheck patternCheck, Session oSession)
        {
            if (oSession.HTTPMethodIs("CONNECT"))
            {
                oSession.hostname = patternCheck.afterHost();
            }
            else
            {
                if (patternCheck.isStatus())
                {
                    int status = patternCheck.getStatusCode();

                    sendResponse(oSession, status, "text/html", new byte[0]);

                    return(false);
                }

                if (patternCheck.isFolder() || patternCheck.isFile())
                {
                    string url = oSession.fullUrl;
                    int    idx = url.LastIndexOf(patternCheck.Before);

                    FileInfo file;
                    string   target;

                    if (patternCheck.isFolder())
                    {
                        string first  = url.Substring(0, idx);
                        string second = patternCheck.Before;
                        string last   = url.Replace(first, "").Replace(second, "");

                        log(first + " : " + second + " : " + last);

                        // 기본 디렉토리 지정
                        if (string.IsNullOrEmpty(last) || last.Equals("/"))
                        {
                            last = "/index.html";
                        }

                        if (last[0] != '/')
                        {
                            last = "/" + last;
                        }

                        target = patternCheck.After + last;
                    }
                    else
                    {
                        target = patternCheck.After;
                    }

                    file = new FileInfo(target);

                    if (file.Exists)
                    {
                        string content_type = MimeType.Get(file.Extension);
                        byte[] data         = File.ReadAllBytes(file.FullName);

                        sendResponse(oSession, 200, content_type, data);

                        return(false);
                    }
                }
                else
                {
                    oSession.fullUrl = patternCheck.afterUrl(oSession.fullUrl);
                }
            }

            return(true);
        }