Changeset 28 in cheroxy
- Timestamp:
- 11/16/12 13:07:05 (11 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/_win/cheroxy/cheroxy.vcproj
r18 r28 178 178 </File> 179 179 <File 180 RelativePath="..\..\src\CRXFilter.cpp" 181 > 182 </File> 183 <File 180 184 RelativePath="..\..\src\CRXHttpMessage.cpp" 181 185 > … … 216 220 </File> 217 221 <File 222 RelativePath="..\..\include\CRXFilter.h" 223 > 224 </File> 225 <File 218 226 RelativePath="..\..\include\CRXHttpMessage.h" 219 227 > -
trunk/include/CRXHttpRequest.h
r26 r28 12 12 std::string mMethod; 13 13 std::string mUrl; 14 std::string mFileExtension; 14 15 15 16 std::string mProtocol; … … 18 19 19 20 public: 20 CRXHttpRequest 21 ~CRXHttpRequest 21 CRXHttpRequest (void); 22 ~CRXHttpRequest (void); 22 23 23 24 private: 24 void Parse (void); 25 void Reset (void); 25 void Parse (void); 26 void ParseFileExtension (void); 27 void Reset (void); 26 28 27 29 public: 28 void SetHeader (const char * aHttpRequest);29 std::string GetHeader (void) const;30 void SetHeader (const char * aHttpRequest); 31 std::string GetHeader (void) const; 30 32 31 CRXHttpRequest & operator = (const char * aHttpRequest);33 CRXHttpRequest & operator = (const char * aHttpRequest); 32 34 33 35 public: 34 std::string GetURL (void) const; 35 std::string GetHost (void) const; 36 int GetPort (void) const; 36 std::string GetURL (void) const; 37 std::string GetHost (void) const; 38 int GetPort (void) const; 39 std::string GetFileExtension (void) const; 37 40 }; 38 41 -
trunk/include/CRXProxy.h
r24 r28 10 10 #include "CRXHttpRequest.h" 11 11 #include "CRXHttpResponse.h" 12 #include "CRXFilter.h" 12 13 13 14 #define ERROR_PROXY -10000 … … 17 18 #define ERROR_PROXY_FAILED_TO_SEND_RESPONSE ERROR_PROXY - 4 18 19 #define ERROR_PROXY_FAILED_TO_CONNECT_TO_SERVER ERROR_PROXY - 5 19 #define ERROR_PROXY_FAILED_TO_SET_RESPONSE ERROR_PROXY - 520 #define ERROR_PROXY_FAILED_TO_SET_RESPONSE ERROR_PROXY - 6 20 21 21 typedef enum {22 CRX_PROXY_STATUS_ERROR = -1,23 CRX_PROXY_STATUS_IDLE,24 CRX_PROXY_STATUS_BUSY25 } E_CRX_PROXY_STATUS;26 22 27 23 class CRXProxy : public CRXException 28 24 { 29 25 private: 26 bool mIsIntercepted; 27 30 28 CRXSocket mClient; 31 29 CRXSocket mServer; … … 34 32 CRXHttpResponse mHttpResponse; 35 33 36 E_CRX_PROXY_STATUS mProxyStatus;34 static CRXFilter mFilter; 37 35 38 36 public: … … 43 41 44 42 public: 43 /* common utilities */ 45 44 void ReleaseInstance (void); 46 45 … … 48 47 void Close (void); 49 48 50 int GetStatus (void); 49 public: 50 /* interface to filter */ 51 void SetRequestFilter (const E_CRX_FILTER_REQUEST aType, 52 const bool aIsMatched, 53 const std::string aValue); 54 void RemoveRequestFilter (const E_CRX_FILTER_REQUEST aType); 55 bool CheckRequestFilter (const E_CRX_FILTER_REQUEST aType); 51 56 52 57 public: 58 /* for communication */ 53 59 int Forward (void); 54 60 -
trunk/src/CRXHttpMessage.cpp
r26 r28 68 68 { 69 69 /*----------------------------------------------------------------*/ 70 SetMessage (aHttpMessage);71 70 /*----------------------------------------------------------------*/ 72 71 -
trunk/src/CRXHttpRequest.cpp
r26 r28 50 50 } 51 51 52 std::string53 CRXHttpRequest::GetURL (void) const54 {55 /*----------------------------------------------------------------*/56 /*----------------------------------------------------------------*/57 58 return mUrl;59 }60 61 std::string62 CRXHttpRequest::GetHost (void) const63 {64 /*----------------------------------------------------------------*/65 /*----------------------------------------------------------------*/66 67 return mHost;68 }69 70 int71 CRXHttpRequest::GetPort (void) const72 {73 /*----------------------------------------------------------------*/74 /*----------------------------------------------------------------*/75 76 return mPort;77 }78 79 52 CRXHttpRequest & 80 53 CRXHttpRequest::operator = (const char * aHttpMessage) … … 90 63 CRXHttpRequest::Parse (void) 91 64 { 92 std::string aHttpRequestUr i = "";65 std::string aHttpRequestUrl; 93 66 94 67 char aMethod[64] = {0x00, }; … … 103 76 104 77 /*----------------------------------------------------------------*/ 105 aHttpRequestUr i= GetHeader ().substr (0, mHttpMessage.find ('\r'));78 aHttpRequestUrl = GetHeader ().substr (0, mHttpMessage.find ('\r')); 106 79 107 80 /*---------------------------------------------------------------- 108 81 * 1. separate first line to <METHOD>, <URL> and <VERSION> 109 82 *----------------------------------------------------------------*/ 110 sscanf (aHttpRequestUr i.c_str (), "%[^ ] %[^ ] %[^ ]\r\n", aMethod, aUrl, aHttpVersion);83 sscanf (aHttpRequestUrl.c_str (), "%[^ ] %[^ ] %[^ ]\r\n", aMethod, aUrl, aHttpVersion); 111 84 mMethod.assign (aMethod); 112 85 mUrl.assign (aUrl); 113 86 mHttpVersion.assign (aHttpVersion); 87 88 ParseFileExtension (); 114 89 115 90 /*---------------------------------------------------------------- … … 129 104 /*----------------------------------------------------------------*/ 130 105 } 106 107 void 108 CRXHttpRequest::ParseFileExtension (void) 109 { 110 std::string aFilename; 111 112 size_t aFilenameOffset = 0; 113 size_t aParameterPosition = 0; 114 size_t aSlashPosition = 0; 115 size_t aDotPosition = 0; 116 117 /*----------------------------------------------------------------*/ 118 /*---------------------------------------------------------------- 119 * 1. get filename 120 *----------------------------------------------------------------*/ 121 aParameterPosition = mUrl.find ('?'); 122 aSlashPosition = mUrl.rfind ('/', aParameterPosition) + 1; 123 if (aSlashPosition == mUrl.length ()) 124 return ; 125 126 aFilenameOffset = (aParameterPosition != std::string::npos) 127 ? aParameterPosition - aSlashPosition 128 : std::string::npos; 129 130 aFilename = mUrl.substr (aSlashPosition, aFilenameOffset); 131 132 /*---------------------------------------------------------------- 133 * 2. get file extension 134 *----------------------------------------------------------------*/ 135 aDotPosition = aFilename.rfind ('.'); 136 if (aDotPosition != std::string::npos) 137 mFileExtension = aFilename.substr (aDotPosition + 1); 138 /*----------------------------------------------------------------*/ 139 } 140 141 std::string CRXHttpRequest::GetURL (void) const { return mUrl; } 142 std::string CRXHttpRequest::GetHost (void) const { return mHost; } 143 int CRXHttpRequest::GetPort (void) const { return mPort; } 144 std::string CRXHttpRequest::GetFileExtension (void) const { return mFileExtension; } -
trunk/src/CRXHttpResponse.cpp
r26 r28 110 110 111 111 return GetMessage (); 112 }113 114 int115 CRXHttpResponse::GetStatusCode (void) const116 {117 /*----------------------------------------------------------------*/118 /*----------------------------------------------------------------*/119 120 return mStatusCode;121 }122 123 int124 CRXHttpResponse::GetContentLength (void) const125 {126 /*----------------------------------------------------------------*/127 /*----------------------------------------------------------------*/128 129 return mContentLength;130 }131 132 const char *133 CRXHttpResponse::GetContentBody (void) const134 {135 /*----------------------------------------------------------------*/136 /*----------------------------------------------------------------*/137 138 return mContent.mBody;139 112 } 140 113 … … 232 205 return aResult; 233 206 } 207 208 int CRXHttpResponse::GetStatusCode (void) const { return mStatusCode; } 209 int CRXHttpResponse::GetContentLength (void) const { return mContentLength; } 210 const char * CRXHttpResponse::GetContentBody (void) const { return mContent.mBody; } -
trunk/src/CRXProxy.cpp
r24 r28 7 7 #include <string.h> 8 8 9 CRXFilter CRXProxy::mFilter; 10 9 11 CRXProxy::CRXProxy (void) 10 : mClient (0), 12 : mIsIntercepted (false), 13 mClient (0), 11 14 mServer (0) 12 15 { … … 59 62 } 60 63 61 int 62 CRXProxy::GetStatus (void) 63 { 64 /*----------------------------------------------------------------*/ 65 /*----------------------------------------------------------------*/ 66 67 return mProxyStatus; 64 void 65 CRXProxy::SetRequestFilter (const E_CRX_FILTER_REQUEST aType, 66 const bool aIsMatched, 67 const std::string aValue) 68 { 69 /*----------------------------------------------------------------*/ 70 mFilter.SetRequestFilter (aType, aIsMatched, aValue); 71 /*----------------------------------------------------------------*/ 72 } 73 74 void 75 CRXProxy::RemoveRequestFilter (const E_CRX_FILTER_REQUEST aType) 76 { 77 /*----------------------------------------------------------------*/ 78 mFilter.RemoveRequestFilter (aType); 79 /*----------------------------------------------------------------*/ 80 } 81 82 bool 83 CRXProxy::CheckRequestFilter (const E_CRX_FILTER_REQUEST aType) 84 { 85 /*----------------------------------------------------------------*/ 86 /*----------------------------------------------------------------*/ 87 88 return mFilter.CheckRequestFilter (aType, this->mHttpRequest); 68 89 } 69 90 -
trunk/src/main.cpp
r24 r28 76 76 CRXProxy * aProxy = NULL; 77 77 78 char * aFilterFileExtension = "exe|gif|jpg|png|css|js|ico|"; 79 char * aHttpRequest = NULL; 80 int aHttpRequestLength = 0; 81 78 82 /*----------------------------------------------------------------*/ 79 83 for (;;) … … 94 98 95 99 aProxy->SetClientSocket (aResult); 100 aProxy->SetRequestFilter (CRX_FILTER_REQUEST_FILE_EXTENSION, 101 CRX_FILTER_MATCHED, 102 aFilterFileExtension); 96 103 97 104 aResult = aProxy->Forward (); … … 99 106 { 100 107 cerr << aProxy->GetErrorMessage () << endl; 108 } 109 110 if (!aProxy->CheckRequestFilter (CRX_FILTER_REQUEST_FILE_EXTENSION)) 111 { 112 aHttpRequestLength = aProxy->GetHttpRequestLength (); 113 aHttpRequest = (char *) calloc (aHttpRequestLength + 1, 1); 114 cout << aProxy->GetHttpRequest (aHttpRequest, aHttpRequestLength) << endl; 115 free (aHttpRequest); 101 116 } 102 117 -
trunk/src/makefile
r19 r28 1 2 1 #---------------------------------------------------------- 3 2 # platform
Note:
See TracChangeset
for help on using the changeset viewer.