Skip to content

Commit 0a82039

Browse files
committed
Push project in to github
1 parent 5d86227 commit 0a82039

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+4116
-0
lines changed

apps.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
server {
2+
server_name servertest www.servertest;
3+
server_module /media/projects/sites/servertest/module/servertest_release.so;
4+
root_dir /media/projects/sites/servertest/www/;
5+
request_max_size 10485760;
6+
}

httpserver.sln

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 11.00
3+
# Visual Studio 2010
4+
Project("{2857B73E-F847-4B02-9238-064979017E93}") = "httpserver", "httpserver\httpserver.cproj", "{81D9D9DB-4DE0-40E5-9CC0-6643C2695370}"
5+
EndProject
6+
Global
7+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
8+
Debug|Any CPU = Debug|Any CPU
9+
Release|Any CPU = Release|Any CPU
10+
EndGlobalSection
11+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
12+
{81D9D9DB-4DE0-40E5-9CC0-6643C2695370}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13+
{81D9D9DB-4DE0-40E5-9CC0-6643C2695370}.Debug|Any CPU.Build.0 = Debug|Any CPU
14+
{81D9D9DB-4DE0-40E5-9CC0-6643C2695370}.Release|Any CPU.ActiveCfg = Release|Any CPU
15+
{81D9D9DB-4DE0-40E5-9CC0-6643C2695370}.Release|Any CPU.Build.0 = Release|Any CPU
16+
EndGlobalSection
17+
GlobalSection(MonoDevelopProperties) = preSolution
18+
StartupItem = httpserver\httpserver.cproj
19+
Policies = $0
20+
$0.TextStylePolicy = $1
21+
$1.inheritsSet = null
22+
$1.scope = text/x-c++src
23+
$0.TextStylePolicy = $2
24+
$2.FileWidth = 120
25+
$2.TabsToSpaces = False
26+
$2.EolMarker = Unix
27+
$2.inheritsSet = VisualStudio
28+
$2.inheritsScope = text/plain
29+
$2.scope = text/plain
30+
$0.TextStylePolicy = $3
31+
$3.inheritsSet = null
32+
$3.scope = text/x-chdr
33+
$0.StandardHeader = $4
34+
$4.Text =
35+
$4.IncludeInNewFiles = True
36+
$0.NameConventionPolicy = $5
37+
$5.Rules = $6
38+
$6.NamingRule = $7
39+
$7.Name = Namespaces
40+
$7.AffectedEntity = Namespace
41+
$7.VisibilityMask = VisibilityMask
42+
$7.NamingStyle = PascalCase
43+
$7.IncludeInstanceMembers = True
44+
$7.IncludeStaticEntities = True
45+
$6.NamingRule = $8
46+
$8.Name = Types
47+
$8.AffectedEntity = Class, Struct, Enum, Delegate
48+
$8.VisibilityMask = VisibilityMask
49+
$8.NamingStyle = PascalCase
50+
$8.IncludeInstanceMembers = True
51+
$8.IncludeStaticEntities = True
52+
$6.NamingRule = $9
53+
$9.Name = Interfaces
54+
$9.RequiredPrefixes = $10
55+
$10.String = I
56+
$9.AffectedEntity = Interface
57+
$9.VisibilityMask = VisibilityMask
58+
$9.NamingStyle = PascalCase
59+
$9.IncludeInstanceMembers = True
60+
$9.IncludeStaticEntities = True
61+
$6.NamingRule = $11
62+
$11.Name = Attributes
63+
$11.RequiredSuffixes = $12
64+
$12.String = Attribute
65+
$11.AffectedEntity = CustomAttributes
66+
$11.VisibilityMask = VisibilityMask
67+
$11.NamingStyle = PascalCase
68+
$11.IncludeInstanceMembers = True
69+
$11.IncludeStaticEntities = True
70+
$6.NamingRule = $13
71+
$13.Name = Event Arguments
72+
$13.RequiredSuffixes = $14
73+
$14.String = EventArgs
74+
$13.AffectedEntity = CustomEventArgs
75+
$13.VisibilityMask = VisibilityMask
76+
$13.NamingStyle = PascalCase
77+
$13.IncludeInstanceMembers = True
78+
$13.IncludeStaticEntities = True
79+
$6.NamingRule = $15
80+
$15.Name = Exceptions
81+
$15.RequiredSuffixes = $16
82+
$16.String = Exception
83+
$15.AffectedEntity = CustomExceptions
84+
$15.VisibilityMask = VisibilityMask
85+
$15.NamingStyle = PascalCase
86+
$15.IncludeInstanceMembers = True
87+
$15.IncludeStaticEntities = True
88+
$6.NamingRule = $17
89+
$17.Name = Methods
90+
$17.AffectedEntity = Methods
91+
$17.VisibilityMask = VisibilityMask
92+
$17.NamingStyle = PascalCase
93+
$17.IncludeInstanceMembers = True
94+
$17.IncludeStaticEntities = True
95+
$6.NamingRule = $18
96+
$18.Name = Static Readonly Fields
97+
$18.AffectedEntity = ReadonlyField
98+
$18.VisibilityMask = Internal, Protected, Public
99+
$18.NamingStyle = PascalCase
100+
$18.IncludeInstanceMembers = False
101+
$18.IncludeStaticEntities = True
102+
$6.NamingRule = $19
103+
$19.Name = Fields (Non Private)
104+
$19.AffectedEntity = Field
105+
$19.VisibilityMask = Internal, Protected, Public
106+
$19.NamingStyle = PascalCase
107+
$19.IncludeInstanceMembers = True
108+
$19.IncludeStaticEntities = True
109+
$6.NamingRule = $20
110+
$20.Name = ReadOnly Fields (Non Private)
111+
$20.AffectedEntity = ReadonlyField
112+
$20.VisibilityMask = Internal, Protected, Public
113+
$20.NamingStyle = PascalCase
114+
$20.IncludeInstanceMembers = True
115+
$20.IncludeStaticEntities = False
116+
$6.NamingRule = $21
117+
$21.Name = Fields (Private)
118+
$21.AllowedPrefixes = $22
119+
$22.String = _
120+
$22.String = m_
121+
$21.AffectedEntity = Field, ReadonlyField
122+
$21.VisibilityMask = Private
123+
$21.NamingStyle = CamelCase
124+
$21.IncludeInstanceMembers = True
125+
$21.IncludeStaticEntities = False
126+
$6.NamingRule = $23
127+
$23.Name = Static Fields (Private)
128+
$23.AffectedEntity = Field
129+
$23.VisibilityMask = Private
130+
$23.NamingStyle = CamelCase
131+
$23.IncludeInstanceMembers = False
132+
$23.IncludeStaticEntities = True
133+
$6.NamingRule = $24
134+
$24.Name = ReadOnly Fields (Private)
135+
$24.AllowedPrefixes = $25
136+
$25.String = _
137+
$25.String = m_
138+
$24.AffectedEntity = ReadonlyField
139+
$24.VisibilityMask = Private
140+
$24.NamingStyle = CamelCase
141+
$24.IncludeInstanceMembers = True
142+
$24.IncludeStaticEntities = False
143+
$6.NamingRule = $26
144+
$26.Name = Constant Fields
145+
$26.AffectedEntity = ConstantField
146+
$26.VisibilityMask = VisibilityMask
147+
$26.NamingStyle = PascalCase
148+
$26.IncludeInstanceMembers = True
149+
$26.IncludeStaticEntities = True
150+
$6.NamingRule = $27
151+
$27.Name = Properties
152+
$27.AffectedEntity = Property
153+
$27.VisibilityMask = VisibilityMask
154+
$27.NamingStyle = PascalCase
155+
$27.IncludeInstanceMembers = True
156+
$27.IncludeStaticEntities = True
157+
$6.NamingRule = $28
158+
$28.Name = Events
159+
$28.AffectedEntity = Event
160+
$28.VisibilityMask = VisibilityMask
161+
$28.NamingStyle = PascalCase
162+
$28.IncludeInstanceMembers = True
163+
$28.IncludeStaticEntities = True
164+
$6.NamingRule = $29
165+
$29.Name = Enum Members
166+
$29.AffectedEntity = EnumMember
167+
$29.VisibilityMask = VisibilityMask
168+
$29.NamingStyle = PascalCase
169+
$29.IncludeInstanceMembers = True
170+
$29.IncludeStaticEntities = True
171+
$6.NamingRule = $30
172+
$30.Name = Parameters
173+
$30.AffectedEntity = Parameter
174+
$30.VisibilityMask = VisibilityMask
175+
$30.NamingStyle = CamelCase
176+
$30.IncludeInstanceMembers = True
177+
$30.IncludeStaticEntities = True
178+
$6.NamingRule = $31
179+
$31.Name = Type Parameters
180+
$31.RequiredPrefixes = $32
181+
$32.String = T
182+
$31.AffectedEntity = TypeParameter
183+
$31.VisibilityMask = VisibilityMask
184+
$31.NamingStyle = PascalCase
185+
$31.IncludeInstanceMembers = True
186+
$31.IncludeStaticEntities = True
187+
$0.VersionControlPolicy = $33
188+
$33.inheritsSet = Mono
189+
$0.ChangeLogPolicy = $34
190+
$34.UpdateMode = None
191+
$34.MessageStyle = $35
192+
$35.LineAlign = 0
193+
$34.inheritsSet = Mono
194+
EndGlobalSection
195+
EndGlobal

httpserver.userprefs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<Properties>
2+
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" />
3+
<MonoDevelop.Ide.Workbench ActiveDocument="httpserver/DataVariantTextPlain.h">
4+
<Files>
5+
<File FileName="httpserver/Server.cpp" Line="1054" Column="20" />
6+
<File FileName="httpserver/Server.h" Line="67" Column="4" />
7+
<File FileName="httpserver/Main.cpp" Line="1" Column="1" />
8+
<File FileName="httpserver/Main.h" Line="1" Column="1" />
9+
<File FileName="httpserver/DataVariantMultipartFormData.h" Line="1" Column="1" />
10+
<File FileName="httpserver/DataVariantMultipartFormData.cpp" Line="1" Column="1" />
11+
<File FileName="httpserver/ServerOutput.h" Line="1" Column="1" />
12+
<File FileName="httpserver/ServerOutput.cpp" Line="1" Column="1" />
13+
<File FileName="httpserver/ServerApplicationAbstract.h" Line="1" Column="1" />
14+
<File FileName="httpserver/ServerRequest.h" Line="1" Column="1" />
15+
<File FileName="httpserver/ServerResponse.h" Line="1" Column="1" />
16+
<File FileName="httpserver/ServerApplicationAbstract.cpp" Line="1" Column="1" />
17+
<File FileName="httpserver/Event.cpp" Line="1" Column="1" />
18+
<File FileName="httpserver/DataVariantAbstract.h" Line="26" Column="4" />
19+
<File FileName="httpserver/DataVariantFormUrlencoded.h" Line="1" Column="1" />
20+
<File FileName="httpserver/DataVariantFormUrlencoded.cpp" Line="1" Column="1" />
21+
<File FileName="httpserver/ServerApplicationSettings.h" Line="1" Column="1" />
22+
<File FileName="httpserver/ServerApplicationsTree.h" Line="1" Column="1" />
23+
<File FileName="httpserver/ServerApplicationsTree.cpp" Line="1" Column="1" />
24+
<File FileName="httpserver/Module.h" Line="1" Column="1" />
25+
<File FileName="httpserver/Event.h" Line="1" Column="1" />
26+
<File FileName="httpserver/System.h" Line="1" Column="1" />
27+
<File FileName="httpserver/DataVariantTextPlain.h" Line="11" Column="3" />
28+
<File FileName="httpserver/DataVariantTextPlain.cpp" Line="6" Column="1" />
29+
<File FileName="httpserver/SignalsHandles.cpp" Line="1" Column="1" />
30+
<File FileName="httpserver/SignalsHandles.h" Line="1" Column="1" />
31+
<File FileName="httpserver/System.cpp" Line="1" Column="1" />
32+
<File FileName="httpserver/Socket.cpp" Line="1" Column="1" />
33+
<File FileName="httpserver/Utils.h" Line="1" Column="1" />
34+
<File FileName="httpserver/Utils.cpp" Line="1" Column="1" />
35+
<File FileName="httpserver/Socket.h" Line="1" Column="1" />
36+
<File FileName="httpserver/FileIncoming.h" Line="1" Column="1" />
37+
<File FileName="httpserver/RawData.h" Line="1" Column="1" />
38+
<File FileName="httpserver/FileIncoming.cpp" Line="1" Column="1" />
39+
</Files>
40+
</MonoDevelop.Ide.Workbench>
41+
<MonoDevelop.Ide.DebuggingService.Breakpoints>
42+
<BreakpointStore />
43+
</MonoDevelop.Ide.DebuggingService.Breakpoints>
44+
<MonoDevelop.Ide.DebuggingService.PinnedWatches />
45+
</Properties>

httpserver/DataVariantAbstract.h

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#pragma once
2+
3+
#include "Socket.h"
4+
#include "FileIncoming.h"
5+
6+
#include <string>
7+
#include <unordered_map>
8+
9+
namespace HttpServer
10+
{
11+
class DataVariantAbstract
12+
{
13+
protected:
14+
std::string data_variant_name;
15+
16+
public:
17+
inline std::string getName() const
18+
{
19+
return data_variant_name;
20+
};
21+
22+
public:
23+
/**
24+
* virtual destructor
25+
*/
26+
// virtual ~DataVariantAbstract() = 0;
27+
28+
/**
29+
* @param const Socket* - сокет, откуда можно достать остальные данные
30+
* @param const std::string - первая часть полученных данных
31+
* @param const size_t - сколько осталось данных (в байтах) получить из сокета
32+
* @param const std::unordered_map<std::string, std::string> & - дополнительные параметры, описывающие формат данных
33+
* @param std::unordered_multimap<std::string, std::string> & - данные в виде ключ->значение
34+
* @param std::unordered_multimap<std::string, FileIncoming> & - имена файлов, в которые записаны данные
35+
*
36+
* @return bool - (true|false) - удачно ли были разобраны данные
37+
*/
38+
virtual bool parse
39+
(
40+
const Socket *,
41+
const std::string,
42+
const size_t,
43+
const std::unordered_map<std::string, std::string> &,
44+
std::unordered_multimap<std::string, std::string> &,
45+
std::unordered_multimap<std::string, FileIncoming> &
46+
) = 0;
47+
};
48+
};
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
2+
#include "DataVariantFormUrlencoded.h"
3+
4+
namespace HttpServer
5+
{
6+
DataVariantFormUrlencoded::DataVariantFormUrlencoded()
7+
{
8+
data_variant_name = "application/x-www-form-urlencoded";
9+
}
10+
11+
bool DataVariantFormUrlencoded::parse
12+
(
13+
const Socket *sock,
14+
const std::string str,
15+
const size_t leftBytes,
16+
const std::unordered_map<std::string, std::string> &params,
17+
std::unordered_multimap<std::string, std::string> &data,
18+
std::unordered_multimap<std::string, FileIncoming> &files
19+
)
20+
{
21+
if (str.length() )
22+
{
23+
size_t var_pos = 0;
24+
size_t var_end = std::string::npos;
25+
26+
std::string var_name;
27+
std::string var_value;
28+
29+
for (; std::string::npos != var_pos; var_pos = var_end)
30+
{
31+
// Поиск следующего параметра
32+
var_end = str.find('&', var_pos);
33+
34+
// Поиск значения параметра
35+
size_t delimiter = str.find('=', var_pos);
36+
37+
if (std::string::npos != delimiter)
38+
{
39+
// Получить имя параметра
40+
var_name = str.substr(var_pos, delimiter - var_pos);
41+
42+
++delimiter;
43+
44+
// Если последний параметр
45+
if (std::string::npos == var_end)
46+
{
47+
var_value = str.substr(delimiter);
48+
}
49+
else // Если не последний параметр
50+
{
51+
var_value = str.substr(delimiter, var_end - delimiter);
52+
}
53+
54+
// Сохранить параметр и значение
55+
data.emplace(var_name, var_value);
56+
57+
if (std::string::npos != var_end)
58+
{
59+
++var_end;
60+
}
61+
}
62+
}
63+
64+
return true;
65+
}
66+
67+
return false;
68+
}
69+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
3+
#include "DataVariantAbstract.h"
4+
5+
namespace HttpServer
6+
{
7+
class DataVariantFormUrlencoded: public DataVariantAbstract
8+
{
9+
public:
10+
DataVariantFormUrlencoded();
11+
12+
public:
13+
virtual bool parse
14+
(
15+
const Socket *,
16+
const std::string,
17+
const size_t,
18+
const std::unordered_map<std::string, std::string> &,
19+
std::unordered_multimap<std::string, std::string> &,
20+
std::unordered_multimap<std::string, FileIncoming> &
21+
) override;
22+
};
23+
};

0 commit comments

Comments
 (0)