Server documentation

Contents

Make a new site

First, it's a good idea to make sure the example site works. Do this by compiling and running the server with the example configuration.

./build.sh conf=example
./server

Now try to visit http://localhost:8080/ in a web browser.

If it works, next step is to either make a new site under the example configuration, or make a new configuration. This is how to make a new configuration and add a new static site to it:

  1. Make a new directory under the conf directory. You can call it "default" if you want to make this the configuration that is built by default.
  2. Enter the newly created directory and make three files (look at the example conf for help):
  3. Add a new directory in the project root, with the name of your site, e.g. "mysite".
  4. In your site directory, add mysite.c (the file compiled by your build.sh). In this file you need to:
  5. Add the directory under your site directory where you will put the files to serve. This directory is called "files" in the example site.

Files

Directories
FileDescription
conf/Environment and build configurations. Determines what sites are built and executed when running the server. Specified to the build script, e.g. `./build.sh conf=example`.
doc/Server documentation. Available either by opening doc/index.html directly or by running the example site and following the link on the example front page.
example/Example website. Look here to see how to make your own site. This site uses static files, dynamic pages and database.
imp/Imported code from external projects.
src/Server source code. Entry points:
Source fileOutput fileDescription
src/cinj.c./cinjC-injection compiler; code injection into pages.
src/dbserver.c./example/exampledb.so (site specific)Database server. Included and compiled by each site as library with entry point `server_main`.
src/dbspec.c./dbspecDatabase definition language.
src/master.c./serverSupervisor. Run this to run the server.
src/site.c./example/example (site specific)Entry point for websites. Included and compiled by each site.
src/test.c./testAutomatic tests of server functions.
src/webserver.c./webserver.soThe HTTP web server. Compiled as library with entry point `server_main`.
All files
SizeFilename
2151build.sh
165conf/example/build.sh
614conf/example/respond.c
511conf/example/servers.c
26460doc/index.html
26example/dbconfig
2444example/example.c
80example/example.dbspec
1583example/exampledb.c
9example/files/doc
282example/files/index.html
228example/generate.sh
383example/pages/dynamic.html
6970imp/bearssl/inc/bearssl.h
41036imp/bearssl/inc/bearssl_aead.h
89199imp/bearssl/inc/bearssl_block.h
30724imp/bearssl/inc/bearssl_ec.h
44866imp/bearssl/inc/bearssl_hash.h
8413imp/bearssl/inc/bearssl_hmac.h
6619imp/bearssl/inc/bearssl_kdf.h
10442imp/bearssl/inc/bearssl_pem.h
5465imp/bearssl/inc/bearssl_prf.h
14023imp/bearssl/inc/bearssl_rand.h
48208imp/bearssl/inc/bearssl_rsa.h
151419imp/bearssl/inc/bearssl_ssl.h
46293imp/bearssl/inc/bearssl_x509.h
8140imp/bearssl/src/aead/ccm.c
12488imp/bearssl/src/aead/eax.c
8376imp/bearssl/src/aead/gcm.c
1420imp/bearssl/src/codec/ccopy.c
1358imp/bearssl/src/codec/dec16be.c
1358imp/bearssl/src/codec/dec16le.c
1358imp/bearssl/src/codec/dec32be.c
1358imp/bearssl/src/codec/dec32le.c
1358imp/bearssl/src/codec/dec64be.c
1358imp/bearssl/src/codec/dec64le.c
1351imp/bearssl/src/codec/enc16be.c
1351imp/bearssl/src/codec/enc16le.c
1351imp/bearssl/src/codec/enc32be.c
1351imp/bearssl/src/codec/enc32le.c
1351imp/bearssl/src/codec/enc64be.c
1351imp/bearssl/src/codec/enc64le.c
12395imp/bearssl/src/codec/pemdec.c
4233imp/bearssl/src/codec/pemenc.c
8072imp/bearssl/src/config.h
3321imp/bearssl/src/ec/ec_all_m15.c
3321imp/bearssl/src/ec/ec_all_m31.c
8874imp/bearssl/src/ec/ec_c25519_i15.c
8671imp/bearssl/src/ec/ec_c25519_i31.c
35569imp/bearssl/src/ec/ec_c25519_m15.c
17291imp/bearssl/src/ec/ec_c25519_m31.c
1761imp/bearssl/src/ec/ec_curve25519.c
1312imp/bearssl/src/ec/ec_default.c
2295imp/bearssl/src/ec/ec_keygen.c
54948imp/bearssl/src/ec/ec_p256_m15.c
36405imp/bearssl/src/ec/ec_p256_m31.c
19978imp/bearssl/src/ec/ec_prime_i15.c
19474imp/bearssl/src/ec/ec_prime_i31.c
2504imp/bearssl/src/ec/ec_pubkey.c
1974imp/bearssl/src/ec/ec_secp256r1.c
2273imp/bearssl/src/ec/ec_secp384r1.c
2599imp/bearssl/src/ec/ec_secp521r1.c
3231imp/bearssl/src/ec/ecdsa_atr.c
1338imp/bearssl/src/ec/ecdsa_default_sign_asn1.c
1335imp/bearssl/src/ec/ecdsa_default_sign_raw.c
1338imp/bearssl/src/ec/ecdsa_default_vrfy_asn1.c
1335imp/bearssl/src/ec/ecdsa_default_vrfy_raw.c
1590imp/bearssl/src/ec/ecdsa_i15_bits.c
1647imp/bearssl/src/ec/ecdsa_i15_sign_asn1.c
5089imp/bearssl/src/ec/ecdsa_i15_sign_raw.c
1791imp/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c
4772imp/bearssl/src/ec/ecdsa_i15_vrfy_raw.c
1590imp/bearssl/src/ec/ecdsa_i31_bits.c
1647imp/bearssl/src/ec/ecdsa_i31_sign_asn1.c
5079imp/bearssl/src/ec/ecdsa_i31_sign_raw.c
1791imp/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c
4762imp/bearssl/src/ec/ecdsa_i31_vrfy_raw.c
3014imp/bearssl/src/ec/ecdsa_rta.c
2455imp/bearssl/src/hash/dig_oid.c
1615imp/bearssl/src/hash/dig_size.c
9163imp/bearssl/src/hash/ghash_ctmul.c
6863imp/bearssl/src/hash/ghash_ctmul32.c
4050imp/bearssl/src/hash/ghash_ctmul64.c
10498imp/bearssl/src/hash/ghash_pclmul.c
9164imp/bearssl/src/hash/ghash_pwr8.c
5974imp/bearssl/src/hash/md5.c
3760imp/bearssl/src/hash/md5sha1.c
1780imp/bearssl/src/hash/mgf1.c
4175imp/bearssl/src/hash/multihash.c
5534imp/bearssl/src/hash/sha1.c
8057imp/bearssl/src/hash/sha2big.c
9444imp/bearssl/src/hash/sha2small.c
79306imp/bearssl/src/inner.h
1488imp/bearssl/src/int/i15_add.c
1454imp/bearssl/src/int/i15_bitlen.c
3534imp/bearssl/src/int/i15_decmod.c
1629imp/bearssl/src/int/i15_decode.c
2585imp/bearssl/src/int/i15_decred.c
1639imp/bearssl/src/int/i15_encode.c
1900imp/bearssl/src/int/i15_fmont.c
1349imp/bearssl/src/int/i15_iszero.c
12540imp/bearssl/src/int/i15_moddiv.c
1718imp/bearssl/src/int/i15_modpow.c
4155imp/bearssl/src/int/i15_modpow2.c
7450imp/bearssl/src/int/i15_montmul.c
1894imp/bearssl/src/int/i15_mulacc.c
4676imp/bearssl/src/int/i15_muladd.c
1383imp/bearssl/src/int/i15_ninv15.c
2023imp/bearssl/src/int/i15_reduce.c
1479imp/bearssl/src/int/i15_rshift.c
1488imp/bearssl/src/int/i15_sub.c
1335imp/bearssl/src/int/i15_tmont.c
1502imp/bearssl/src/int/i31_add.c
1454imp/bearssl/src/int/i31_bitlen.c
3538imp/bearssl/src/int/i31_decmod.c
1666imp/bearssl/src/int/i31_decode.c
2634imp/bearssl/src/int/i31_decred.c
2033imp/bearssl/src/int/i31_encode.c
1929imp/bearssl/src/int/i31_fmont.c
1349imp/bearssl/src/int/i31_iszero.c
13220imp/bearssl/src/int/i31_moddiv.c
2158imp/bearssl/src/int/i31_modpow.c
4155imp/bearssl/src/int/i31_modpow2.c
2780imp/bearssl/src/int/i31_montmul.c
1891imp/bearssl/src/int/i31_mulacc.c
4614imp/bearssl/src/int/i31_muladd.c
1359imp/bearssl/src/int/i31_ninv31.c
2023imp/bearssl/src/int/i31_reduce.c
1483imp/bearssl/src/int/i31_rshift.c
1492imp/bearssl/src/int/i31_sub.c
1335imp/bearssl/src/int/i31_tmont.c
1606imp/bearssl/src/int/i32_add.c
1454imp/bearssl/src/int/i32_bitlen.c
2256imp/bearssl/src/int/i32_decmod.c
1721imp/bearssl/src/int/i32_decode.c
2730imp/bearssl/src/int/i32_decred.c
1702imp/bearssl/src/int/i32_div32.c
1922imp/bearssl/src/int/i32_encode.c
1905imp/bearssl/src/int/i32_fmont.c
1349imp/bearssl/src/int/i32_iszero.c
2158imp/bearssl/src/int/i32_modpow.c
2027imp/bearssl/src/int/i32_montmul.c
1648imp/bearssl/src/int/i32_mulacc.c
4153imp/bearssl/src/int/i32_muladd.c
1346imp/bearssl/src/int/i32_ninv32.c
2023imp/bearssl/src/int/i32_reduce.c
1606imp/bearssl/src/int/i32_sub.c
1335imp/bearssl/src/int/i32_tmont.c
13014imp/bearssl/src/int/i62_modpow2.c
2944imp/bearssl/src/kdf/hkdf.c
3360imp/bearssl/src/mac/hmac.c
5690imp/bearssl/src/mac/hmac_ct.c
5434imp/bearssl/src/rand/aesctr_drbg.c
4205imp/bearssl/src/rand/hmac_drbg.c
3519imp/bearssl/src/rand/sysrng.c
1382imp/bearssl/src/rsa/rsa_default_keygen.c
1360imp/bearssl/src/rsa/rsa_default_modulus.c
1412imp/bearssl/src/rsa/rsa_default_oaep_decrypt.c
1412imp/bearssl/src/rsa/rsa_default_oaep_encrypt.c
1402imp/bearssl/src/rsa/rsa_default_pkcs1_sign.c
1402imp/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c
1387imp/bearssl/src/rsa/rsa_default_priv.c
1360imp/bearssl/src/rsa/rsa_default_privexp.c
1382imp/bearssl/src/rsa/rsa_default_pub.c
1356imp/bearssl/src/rsa/rsa_default_pubexp.c
16427imp/bearssl/src/rsa/rsa_i15_keygen.c
2543imp/bearssl/src/rsa/rsa_i15_modulus.c
1525imp/bearssl/src/rsa/rsa_i15_oaep_decrypt.c
1613imp/bearssl/src/rsa/rsa_i15_oaep_encrypt.c
1475imp/bearssl/src/rsa/rsa_i15_pkcs1_sign.c
1607imp/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c
5480imp/bearssl/src/rsa/rsa_i15_priv.c
9979imp/bearssl/src/rsa/rsa_i15_privexp.c
2868imp/bearssl/src/rsa/rsa_i15_pub.c
4232imp/bearssl/src/rsa/rsa_i15_pubexp.c
1470imp/bearssl/src/rsa/rsa_i31_keygen.c
17342imp/bearssl/src/rsa/rsa_i31_keygen_inner.c
2543imp/bearssl/src/rsa/rsa_i31_modulus.c
1525imp/bearssl/src/rsa/rsa_i31_oaep_decrypt.c
1613imp/bearssl/src/rsa/rsa_i31_oaep_encrypt.c
1475imp/bearssl/src/rsa/rsa_i31_pkcs1_sign.c
1607imp/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c
5382imp/bearssl/src/rsa/rsa_i31_priv.c
9928imp/bearssl/src/rsa/rsa_i31_privexp.c
2721imp/bearssl/src/rsa/rsa_i31_pub.c
4207imp/bearssl/src/rsa/rsa_i31_pubexp.c
1525imp/bearssl/src/rsa/rsa_i32_oaep_decrypt.c
1613imp/bearssl/src/rsa/rsa_i32_oaep_encrypt.c
1475imp/bearssl/src/rsa/rsa_i32_pkcs1_sign.c
1607imp/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c
4478imp/bearssl/src/rsa/rsa_i32_priv.c
2272imp/bearssl/src/rsa/rsa_i32_pub.c
1694imp/bearssl/src/rsa/rsa_i62_keygen.c
1780imp/bearssl/src/rsa/rsa_i62_oaep_decrypt.c
1868imp/bearssl/src/rsa/rsa_i62_oaep_encrypt.c
1720imp/bearssl/src/rsa/rsa_i62_pkcs1_sign.c
1852imp/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c
5777imp/bearssl/src/rsa/rsa_i62_priv.c
2953imp/bearssl/src/rsa/rsa_i62_pub.c
3127imp/bearssl/src/rsa/rsa_oaep_pad.c
4215imp/bearssl/src/rsa/rsa_oaep_unpad.c
2941imp/bearssl/src/rsa/rsa_pkcs1_sig_pad.c
3525imp/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c
1751imp/bearssl/src/rsa/rsa_ssl_decrypt.c
3665imp/bearssl/src/settings.c
2291imp/bearssl/src/ssl/prf.c
1626imp/bearssl/src/ssl/prf_md5sha1.c
1463imp/bearssl/src/ssl/prf_sha256.c
1463imp/bearssl/src/ssl/prf_sha384.c
4517imp/bearssl/src/ssl/ssl_ccert_single_ec.c
4185imp/bearssl/src/ssl/ssl_ccert_single_rsa.c
2496imp/bearssl/src/ssl/ssl_client.c
1321imp/bearssl/src/ssl/ssl_client_default_rsapub.c
6373imp/bearssl/src/ssl/ssl_client_full.c
41683imp/bearssl/src/ssl/ssl_engine.c
2061imp/bearssl/src/ssl/ssl_engine_default_aescbc.c
2168imp/bearssl/src/ssl/ssl_engine_default_aesccm.c
2550imp/bearssl/src/ssl/ssl_engine_default_aesgcm.c
1945imp/bearssl/src/ssl/ssl_engine_default_chapol.c
1435imp/bearssl/src/ssl/ssl_engine_default_descbc.c
1369imp/bearssl/src/ssl/ssl_engine_default_ec.c
1482imp/bearssl/src/ssl/ssl_engine_default_ecdsa.c
1327imp/bearssl/src/ssl/ssl_engine_default_rsavrfy.c
1469imp/bearssl/src/ssl/ssl_hashes.c
52807imp/bearssl/src/ssl/ssl_hs_client.c
55027imp/bearssl/src/ssl/ssl_hs_server.c
6551imp/bearssl/src/ssl/ssl_io.c
2799imp/bearssl/src/ssl/ssl_keyexport.c
15212imp/bearssl/src/ssl/ssl_lru.c
12762imp/bearssl/src/ssl/ssl_rec_cbc.c
5669imp/bearssl/src/ssl/ssl_rec_ccm.c
4734imp/bearssl/src/ssl/ssl_rec_chapol.c
6469imp/bearssl/src/ssl/ssl_rec_gcm.c
4275imp/bearssl/src/ssl/ssl_scert_single_ec.c
4647imp/bearssl/src/ssl/ssl_scert_single_rsa.c
1852imp/bearssl/src/ssl/ssl_server.c
4936imp/bearssl/src/ssl/ssl_server_full_ec.c
4270imp/bearssl/src/ssl/ssl_server_full_rsa.c
2304imp/bearssl/src/ssl/ssl_server_mine2c.c
2299imp/bearssl/src/ssl/ssl_server_mine2g.c
2321imp/bearssl/src/ssl/ssl_server_minf2c.c
2316imp/bearssl/src/ssl/ssl_server_minf2g.c
2195imp/bearssl/src/ssl/ssl_server_minr2g.c
2210imp/bearssl/src/ssl/ssl_server_minu2g.c
2211imp/bearssl/src/ssl/ssl_server_minv2g.c
2142imp/bearssl/src/symcipher/aes_big_cbcdec.c
2085imp/bearssl/src/symcipher/aes_big_cbcenc.c
2327imp/bearssl/src/symcipher/aes_big_ctr.c
3903imp/bearssl/src/symcipher/aes_big_ctrcbc.c
9515imp/bearssl/src/symcipher/aes_big_dec.c
6493imp/bearssl/src/symcipher/aes_big_enc.c
3951imp/bearssl/src/symcipher/aes_common.c
7076imp/bearssl/src/symcipher/aes_ct.c
9047imp/bearssl/src/symcipher/aes_ct64.c
2961imp/bearssl/src/symcipher/aes_ct64_cbcdec.c
2623imp/bearssl/src/symcipher/aes_ct64_cbcenc.c
3201imp/bearssl/src/symcipher/aes_ct64_ctr.c
11247imp/bearssl/src/symcipher/aes_ct64_ctrcbc.c
4204imp/bearssl/src/symcipher/aes_ct64_dec.c
3106imp/bearssl/src/symcipher/aes_ct64_enc.c
3204imp/bearssl/src/symcipher/aes_ct_cbcdec.c
2742imp/bearssl/src/symcipher/aes_ct_cbcenc.c
3105imp/bearssl/src/symcipher/aes_ct_ctr.c
10644imp/bearssl/src/symcipher/aes_ct_ctrcbc.c
4742imp/bearssl/src/symcipher/aes_ct_dec.c
2955imp/bearssl/src/symcipher/aes_ct_enc.c
9061imp/bearssl/src/symcipher/aes_pwr8.c
14871imp/bearssl/src/symcipher/aes_pwr8_cbcdec.c
9008imp/bearssl/src/symcipher/aes_pwr8_cbcenc.c
15841imp/bearssl/src/symcipher/aes_pwr8_ctr.c
22550imp/bearssl/src/symcipher/aes_pwr8_ctrcbc.c
2154imp/bearssl/src/symcipher/aes_small_cbcdec.c
2105imp/bearssl/src/symcipher/aes_small_cbcenc.c
2347imp/bearssl/src/symcipher/aes_small_ctr.c
3951imp/bearssl/src/symcipher/aes_small_ctrcbc.c
5165imp/bearssl/src/symcipher/aes_small_dec.c
3191imp/bearssl/src/symcipher/aes_small_enc.c
6085imp/bearssl/src/symcipher/aes_x86ni.c
6638imp/bearssl/src/symcipher/aes_x86ni_cbcdec.c
3471imp/bearssl/src/symcipher/aes_x86ni_cbcenc.c
6624imp/bearssl/src/symcipher/aes_x86ni_ctr.c
17247imp/bearssl/src/symcipher/aes_x86ni_ctrcbc.c
3026imp/bearssl/src/symcipher/chacha20_ct.c
5840imp/bearssl/src/symcipher/chacha20_sse2.c
12436imp/bearssl/src/symcipher/des_ct.c
2504imp/bearssl/src/symcipher/des_ct_cbcdec.c
2159imp/bearssl/src/symcipher/des_ct_cbcenc.c
4109imp/bearssl/src/symcipher/des_support.c
10481imp/bearssl/src/symcipher/des_tab.c
2435imp/bearssl/src/symcipher/des_tab_cbcdec.c
2090imp/bearssl/src/symcipher/des_tab_cbcenc.c
7374imp/bearssl/src/symcipher/poly1305_ctmul.c
8423imp/bearssl/src/symcipher/poly1305_ctmul32.c
11588imp/bearssl/src/symcipher/poly1305_ctmulq.c
5447imp/bearssl/src/symcipher/poly1305_i15.c
2267imp/bearssl/src/x509/asn1enc.c
3565imp/bearssl/src/x509/encode_ec_pk8der.c
4645imp/bearssl/src/x509/encode_ec_rawder.c
3311imp/bearssl/src/x509/encode_rsa_pk8der.c
3137imp/bearssl/src/x509/encode_rsa_rawder.c
15860imp/bearssl/src/x509/skey_decoder.c
20566imp/bearssl/src/x509/x509_decoder.c
2642imp/bearssl/src/x509/x509_knownkey.c
48783imp/bearssl/src/x509/x509_minimal.c
2029imp/bearssl/src/x509/x509_minimal_full.c
425imp/build.sh
626imp/update.sh
16167src/cinj.c
20753src/common.c
2777src/config.c
1136src/dbclient.c
6931src/dbcommon.c
44964src/dbfile.c
5373src/dbserver.c
43187src/dbspec.c
908src/hamt.c
2101src/http.c
5389src/master.c
357src/master.h
3990src/page.c
3915src/response.c
577src/seri.c
2582src/site-http.c
16162src/site.c
8876src/ssl.c
5533src/test.c
7967src/webserver.c

Licence

There is no licence yet because this software has not yet been published. This is just a preview version.