Closed hochan222 closed 3 years ago
구성
http block
구성 | 성격 | 예시 |
---|---|---|
open | bracket | http { |
name | element | software_name ftinx |
version | element | software_version 0.1 |
include | element | include mime.types |
root | element | root /Users/ftinx/Webserv/ |
server | block | server { |
close | bracket | } |
server block
구성 | 성격 | 예시 |
---|---|---|
open | bracket | server { |
server name | element | server_name 42seoul_server |
listen | element | listen 8080 |
default error page | element | default_error_page ./www/errors/default_error.html |
content length | element | content_length 2048 |
location | block | location /test { |
close | bracket | } |
location block
구성 | 성격 | 예시 |
---|---|---|
open, path | bracket, element | location /test { |
limit except | element | limit_except GET POST |
root | element | root /Users/ftinx/Documents/Samples01/ |
index | element | index index.htm index.html |
cgi | element | cgi .bin .cgi .php |
cgi path | element | cgi_path /Users/ftinx/Webserv/www-cgi/ |
autoindex | element | autoindex on |
close | bracket | } |
문법
공통
element는 [KEY][SPACE(s)][VALUE]
의 형식을 따른다
KEY
가 중복되는 경우
VALUE
가 1개 올 수 있는 element라면 값을 덮어쓴다server {
server_name first
server_name second
string server_name = second
VALUE
가 1개 이상 올 수 있는 element라면 값을 추가한다server {
cgi .bin
cgi .cgi .php
vector<string> cgi;
cgi[0] = .bin
cgi[1] = .cgi
cgi[2] = .php
정의되지 않은 KEY
는 무시한다
중괄호({
, }
)
VALUE
에는 중괄호가 포함될 수 없다주석
#
으로 시작한다면 해당 라인은 주석으로 간주하며 파싱하지 않는다http {
software_name ftinx #프로그램명
software_version 0.1 #버전
include mime.types
root /Users/ftinx/Webserv/
#server block 시작
server {
[SPACE(s)]
이후 주석을 사용할 수 있다server {
server_name first #서버네임
server_name listen #포트
http block은 1개만 유효하다
http block
server block
유효성 검사
KEY
중복 체크샘플
config 파일 파싱 기본 로직은 거의 작성완료 상태입니다만, iterator를 이용해서 좀 더 깔끔하게 구성할 수도 있을 것 같아서 고민중이에요. 기본적인 문법은 위 comment에 적었고 추가/수정할 사항 있으면 수정해주시면 됩니다.
앞으로 작업할 내역은 다음과 같습니다.
VALUE
마다 적합한 유효성 검사깔끔한 정리 감사합니댜..!
subject에 미기입시 default값에 대한 얘기도 명시돼있었는데 추가적으로 default값을 줄것과 값이 없으면 오류반환 할지 여부도 구분해야할 것 같습니다.
subject에 명시돼있는 default에 대한 문장은 아래와 같습니다.
외에는 너무 완벽한것 같습니댜! 와... 엄청 깔끔합니댜.. 빰빰
구성
http block
구성 | 성격 | 자료형 | 기본값 | 필수 | 예시 |
---|---|---|---|---|---|
open | bracket | O | http { |
||
name | element | string | ftinx |
O | software_name ftinx |
version | element | string | 0.1 |
O | software_version 0.1 |
include | element | string | O | include mime.types |
|
root | element | string | O | root /Users/ftinx/Webserv/www |
|
server | block | vector\<server> | O | server { |
|
close | bracket | O | } |
||
server block
구성 | 성격 | 자료형 | 기본값 | 필수 | 예시 |
---|---|---|---|---|---|
open | bracket | O | server { |
||
server name | element | string | O | server_name first_server |
|
listen(port) | element | int | O | listen 8080 |
|
defalut error page | element | string | default_error_page /errors/default_error.html |
||
content length | element | int | content_length 2048 |
||
location | block | vector\<location> | O | location /test { |
|
close | bracket | O | } |
||
location block
구성 | 성격 | 자료형 | 기본값 | 필수 | 예시 |
---|---|---|---|---|---|
open, path | bracket, element | string | O | location /test { |
|
limit expect | element, multi | vector\<method> | O | limit_except GET POST |
|
root | element | string | root /Users/ftinx/Webserv/Sample2 |
||
index | element, multi | vector\<string> | index index.html index.htm index.php |
||
cgi | element, multi | vector\<string> | cgi .bin .cgi .php |
||
cgi path | element | string | root /Users/ftinx/Webserv/Sample2/cgi-bin |
||
limit body size | element | int | 1048567 |
limit_body_size 100000 |
|
autoindex | element | bool | off |
autoindex on |
|
auth basic | element, multi | vector\<string> | auth_basic jwon yechoi holee |
||
auth basic user file | element | string | auth_basic_user_file .htpasswd |
||
close | bracket | O | } |
||
문법
공통
http block은 1개만 유효하다
element는 [KEY][SPACE(s)][VALUE]
의 형식을 따른다
KEY
가 중복되는 경우
VALUE
가 1개만 올 수 있는 element 인 경우 값을 덮어쓴다server {
server_name first
server_name second
string server_name = second
VALUE
가 1개 이상 올 수 있는 multi 성격의 element 인 경우 값을 추가한다server {
cgi .bin
cgi .cgi .php
vector<string> cgi;
cgi[0] = .bin
cgi[1] = .cgi
cgi[2] = .php
정의되지 않은 KEY
는 무시한다
중괄호({
, }
)
VALUE
에는 중괄호가 포함될 수 없다주석
#comment
의 형식을 따른다#
으로 시작한다면 해당 라인은 주석으로 간주하며 파싱하지 않는다#http block 시작
http {
software_name ftinx
software_version 0.1
include mime.types
root /Users/ftinx/Webserv/
#server block 시작
server {
[SPACE(s)]
이후 주석을 사용할 수 있다 server {
server_name first #서버네임
listen 8080 #포트
http block
server block
location block
유효성 검사
KEY
중복 체크샘플
논의 필요
httpConfigFile 구현
연관 이슈
Config hpp 요소 정하기 #4