Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
cc5670d
feat: https server logic with tests
NikSimDev Sep 11, 2026
00aab60
fix: certs folder was deleted using gitignore
NikSimDev Sep 11, 2026
7e8ec30
docs: https server documentation
NikSimDev Sep 12, 2026
833d18d
fix: github actions workflow for https server testing
NikSimDev Sep 12, 2026
c722b7f
fix: github actions workflow for https server testing version 2
NikSimDev Sep 12, 2026
93ae3a5
fix: github actions workflow for https server testing version 3
NikSimDev Sep 12, 2026
4030c68
fix: github actions workflow for https server testing version 4
NikSimDev Sep 12, 2026
73b6969
fix: https server and http client
NikSimDev Sep 12, 2026
aa4257f
fix: https server MultipleRequests test
NikSimDev Sep 12, 2026
41b56a8
fix: https server
NikSimDev Sep 20, 2026
385a7f9
Merge branch 'master' of github.com:NikSimDev/lightlib into feat/128-…
NikSimDev Sep 20, 2026
99e2738
feat: limits to headers, body and connections count
NikSimDev Sep 20, 2026
be3d837
feat: multi-context engine
NikSimDev Sep 20, 2026
cea9b58
fix: gtihub ci config
NikSimDev Sep 20, 2026
4ed2efd
fix: gtihub ci config 2
NikSimDev Sep 20, 2026
4b20e6c
feat: sessions resumption
NikSimDev Sep 21, 2026
3c8e03f
fix: include dirs for ticket key store
NikSimDev Sep 21, 2026
7329727
feat: tcp_defer_accept
NikSimDev Sep 21, 2026
6fff220
fix: include dir for linux tcp
NikSimDev Sep 21, 2026
b8f03d9
fix: http server
NikSimDev Sep 21, 2026
06831b9
fix: server optimization
NikSimDev Sep 21, 2026
4233cea
fix: multiplatform preprocessor defs
NikSimDev Sep 21, 2026
68b24db
perf: server optimization
NikSimDev Sep 22, 2026
898603b
perf: threads and contexts count
NikSimDev Sep 22, 2026
c2b605d
fix: pem-string certs and mTLS testing
NikSimDev Sep 24, 2026
2d91a01
fix: github actions file
NikSimDev Sep 24, 2026
8f54738
fix: static headers
NikSimDev Sep 24, 2026
8a54876
refactor: module structure of https server
NikSimDev Sep 24, 2026
a345c02
docs: https server
NikSimDev Sep 24, 2026
ded9fa2
fix: cmakelists and config
NikSimDev Sep 24, 2026
5da979d
Merge pull request #1 from NikSimDev/feat/128-https-server
NikSimDev Sep 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 181 additions & 3 deletions .github/workflows/cmake-multi-platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,71 @@ jobs:
- name: Create config_test.json
working-directory: build
run: |
echo '{"app_name": "brazierApp"}' > config_test.json
cat > config_test.json <<'EOF'
{
"app_name": "brazierApp",
"https_server": {
"host": "0.0.0.0",
"port": 8443,
"tls": {
"cert_file": "brazier/app/certs/server.crt",
"key_file": "brazier/app/certs/server.key",
"ca_file": "",
"require_client_cert": false,
"verify_client_cert": false,
"handshake_timeout": 3,
"conf": []
}
},
"http": {
"max_connections_testing": 20,
"max_body_size_testing": 1048576,
"max_header_size_testing": 8192
}
}
EOF
mkdir -p ${{ matrix.build_type }}
cp config_test.json ${{ matrix.build_type }}/
shell: bash

- name: Generate self-signed certificate (main server)
run: |
mkdir -p build/brazier/app/certs
openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes \
-keyout build/brazier/app/certs/server.key \
-out build/brazier/app/certs/server.crt \
-subj "/CN=localhost" \
-addext "subjectAltName=DNS:localhost,IP:127.0.0.1"
shell: bash

- name: Generate mTLS certificates (CA + client)
run: |
set -e
mkdir -p build/certs
cd build/certs

openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1825 \
-out ca.crt -subj "/CN=Test CA"

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/CN=localhost"
echo "subjectAltName=DNS:localhost,IP:127.0.0.1" > server_ext.cnf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \
-CAcreateserial -out server.crt -days 365 -sha256 \
-extfile server_ext.cnf

openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -subj "/CN=brazier-client"
echo "extendedKeyUsage=clientAuth" > client_ext.cnf
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key \
-CAserial ca.srl -out client.crt -days 365 -sha256 \
-extfile client_ext.cnf

openssl verify -CAfile ca.crt server.crt
openssl verify -CAfile ca.crt client.crt
shell: bash

- name: Run tests
working-directory: build
run: ./brazier_tests
Expand Down Expand Up @@ -136,11 +196,67 @@ jobs:
- name: Create config_test.json
working-directory: build
run: |
echo '{"app_name": "brazierApp"}' > config_test.json
cat > config_test.json <<'EOF'
{
"app_name": "brazierApp",
"https_server": {
"host": "0.0.0.0",
"port": 8443,
"tls": {
"cert_file": "brazier/app/certs/server.crt",
"key_file": "brazier/app/certs/server.key",
"ca_file": "",
"require_client_cert": false,
"verify_client_cert": false,
"handshake_timeout": 3,
"conf": []
}
},
"http": {
"max_connections_testing": 20,
"max_body_size_testing": 1048576,
"max_header_size_testing": 8192
}
}
EOF
mkdir -p ${{ matrix.build_type }}
cp config_test.json ${{ matrix.build_type }}/
shell: bash

- name: Generate self-signed certificate (main server)
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path "build/brazier/app/certs" | Out-Null
openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes `
-keyout "build/brazier/app/certs/server.key" `
-out "build/brazier/app/certs/server.crt" `
-subj "/CN=localhost" `
-addext "subjectAltName=DNS:localhost,IP:127.0.0.1"

- name: Generate mTLS certificates (CA + client)
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path "build/certs" | Out-Null
Push-Location build/certs

openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1825 -out ca.crt -subj "/CN=Test CA"

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/CN=localhost"
Set-Content -Path server_ext.cnf -Value "subjectAltName=DNS:localhost,IP:127.0.0.1"
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256 -extfile server_ext.cnf

openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -subj "/CN=brazier-client"
Set-Content -Path client_ext.cnf -Value "extendedKeyUsage=clientAuth"
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out client.crt -days 365 -sha256 -extfile client_ext.cnf

openssl verify -CAfile ca.crt server.crt
openssl verify -CAfile ca.crt client.crt

Pop-Location

- name: Run tests
working-directory: build
run: ./${{ matrix.build_type }}/brazier_tests.exe
Expand Down Expand Up @@ -192,11 +308,73 @@ jobs:
- name: Create config_test.json
working-directory: build
run: |
echo '{"app_name": "brazierApp"}' > config_test.json
cat > config_test.json <<'EOF'
{
"app_name": "brazierApp",
"https_server": {
"host": "0.0.0.0",
"port": 8443,
"tls": {
"cert_file": "brazier/app/certs/server.crt",
"key_file": "brazier/app/certs/server.key",
"ca_file": "",
"require_client_cert": false,
"verify_client_cert": false,
"handshake_timeout": 3,
"conf": []
}
},
"http": {
"max_connections_testing": 20,
"max_body_size_testing": 1048576,
"max_header_size_testing": 8192
}
}
EOF
mkdir -p ${{ matrix.build_type }}
cp config_test.json ${{ matrix.build_type }}/
shell: bash

- name: Generate self-signed certificate (main server)
run: |
mkdir -p build/brazier/app/certs
cd build/brazier/app/certs
echo "subjectAltName=DNS:localhost,IP:127.0.0.1" > server_ext.cnf
openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes \
-keyout server.key -out server.crt \
-subj "/CN=localhost" \
-extensions v3_req \
-config <(cat /etc/ssl/openssl.cnf; echo "[v3_req]"; echo "subjectAltName=DNS:localhost,IP:127.0.0.1")
shell: bash

- name: Generate mTLS certificates (CA + client)
run: |
set -e
mkdir -p build/certs
cd build/certs

openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1825 \
-out ca.crt -subj "/CN=Test CA"

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/CN=localhost"
echo "subjectAltName=DNS:localhost,IP:127.0.0.1" > server_ext.cnf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \
-CAcreateserial -out server.crt -days 365 -sha256 \
-extfile server_ext.cnf

openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -subj "/CN=brazier-client"
echo "extendedKeyUsage=clientAuth" > client_ext.cnf
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key \
-CAserial ca.srl -out client.crt -days 365 -sha256 \
-extfile client_ext.cnf

openssl verify -CAfile ca.crt server.crt
openssl verify -CAfile ca.crt client.crt
shell: bash

- name: Run tests
working-directory: build
run: ./brazier_tests --gtest_filter=-RoutingTest.*
Expand Down
Loading
Loading