00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "Deliver.h"
00026 #include "ServerSocket.h"
00027 #include "ServerHandler.h"
00028
00029 #define DEB(x) x
00030
00031
00032 ServerSocket::ServerSocket(ISocketHandler& h)
00033 :HTTPSocket(h)
00034 ,Gemensamt()
00035 {
00036 }
00037
00038
00039 ServerSocket::~ServerSocket()
00040 {
00041 }
00042
00043
00044 void ServerSocket::OnFirst()
00045 {
00046
00047 if (IsRequest())
00048 {
00049 printf(" Method: %s\n",GetMethod().c_str());
00050 printf(" URL: %s\n",GetUrl().c_str());
00051 printf(" Http version: %s\n",GetHttpVersion().c_str());
00052 }
00053
00054
00055 if (IsResponse())
00056 {
00057
00058
00059
00060 }
00061
00062 }
00063
00064
00065 void ServerSocket::OnHeader(const std::string& key,const std::string& value)
00066 {
00067
00068 if (!strcasecmp(key.c_str(),"host"))
00069 {
00070 SetServer(value);
00071 }
00072 else
00073 if (!strcasecmp(key.c_str(),"user-agent"))
00074 {
00075 SetUserAgent(value);
00076 }
00077 else
00078 if (!strcasecmp(key.c_str(),"referer"))
00079 {
00080 SetHttpReferer(value);
00081 }
00082 }
00083
00084
00085 void ServerSocket::OnData(const char *,size_t)
00086 {
00087 }
00088
00089
00090 void ServerSocket::OnHeaderComplete()
00091 {
00092 #ifdef ENABLE_DETACH
00093 if (!Detach())
00094 {
00095 DEB( printf("Detach() failed\n");)
00096 SetCloseAndDelete();
00097 }
00098 #endif
00099 }
00100
00101
00102 void ServerSocket::OnDetached()
00103 {
00104 Deliver d(*this,GetServer(),"http",GetMethod(),GetUrl());
00105 d.Run();
00106 }
00107
00108
00109 void ServerSocket::Init()
00110 {
00111 ServerHandler& ref = static_cast<ServerHandler&>(Handler());
00112 if (GetParent() -> GetPort() == ref.GetInt("secure/port"))
00113 {
00114 EnableSSL();
00115 }
00116 }
00117
00118
00119 void ServerSocket::OnAccept()
00120 {
00121 printf("Accept!\n");
00122 HTTPSocket::OnAccept();
00123 }
00124
00125