README.md (3219B)
1 About 2 ----- 3 4 Kore (https://kore.io) is an easy to use web application platform for 5 writing scalable web APIs in C. Its main goals are security, scalability 6 and allowing rapid development and deployment of such APIs. 7 8 Because of this Kore is an ideal candidate for building robust, scalable and secure web things. 9 10 Key Features 11 ------------ 12 * Supports SNI 13 * Supports HTTP/1.1 14 * Websocket support 15 * Privseps by default 16 * TLS enabled by default 17 * Optional background tasks 18 * Built-in parameter validation 19 * Optional asynchronous PostgreSQL support 20 * Optional support for page handlers in Python 21 * Reload private keys and certificates on-the-fly 22 * Private keys isolated in separate process (RSA and ECDSA) 23 * Default sane TLS ciphersuites (PFS in all major browsers) 24 * Modules can be reloaded on-the-fly, even while serving content 25 * Event driven (epoll/kqueue) architecture with per CPU worker processes 26 * Build your web application as a precompiled dynamic library or single binary 27 28 And loads more. 29 30 License 31 ------- 32 * Kore is licensed under the ISC license 33 34 Documentation 35 -------------- 36 [Read the documentation](https://docs.kore.io/3.2.0/) 37 38 Performance 39 ----------- 40 Read the [benchmarks](https://blog.kore.io/posts/benchmarks) blog post. 41 42 Platforms supported 43 ------------------- 44 * Linux 45 * OpenBSD 46 * FreeBSD 47 * MacOS 48 49 Building Kore 50 ------------- 51 Clone this repository or get the latest release at [https://kore.io/releases/3.2.0](https://kore.io/releases/3.2.0). 52 53 Requirements 54 * openssl (1.0.2, 1.1.0 or 1.1.1) 55 (note: this requirement drops away when building with NOTLS=1 NOHTTP=1) 56 (note: libressl works as a replacement) 57 58 Requirement for asynchronous curl (optional) 59 * libcurl 60 61 Requirements for background tasks (optional) 62 * pthreads 63 64 Requirements for pgsql (optional) 65 * libpq 66 67 Requirements for python (optional) 68 * Python 3.6+ 69 70 Normal compilation and installation: 71 72 ``` 73 $ cd kore 74 $ make 75 # make install 76 ``` 77 78 If you would like to build a specific flavor, you can enable 79 those by setting a shell environment variable before running **_make_**. 80 81 * CURL=1 (compiles in asynchronous curl support) 82 * TASKS=1 (compiles in task support) 83 * PGSQL=1 (compiles in pgsql support) 84 * DEBUG=1 (enables use of -d for debug) 85 * NOTLS=1 (compiles Kore without TLS) 86 * NOHTTP=1 (compiles Kore without HTTP support) 87 * NOOPT=1 (disable compiler optimizations) 88 * JSONRPC=1 (compiles in JSONRPC support) 89 * PYTHON=1 (compiles in the Python support) 90 91 Note that certain build flavors cannot be mixed together and you will just 92 be met with compilation errors. 93 94 Example applications 95 ----------------- 96 You can find example applications under **_examples/_**. 97 98 The examples contain a README file with instructions on how 99 to build or use them. 100 101 Mailing lists 102 ------------- 103 104 **patches@kore.io** - Send patches here, preferably inline. 105 106 **users@kore.io** - Questions regarding kore. 107 108 109 If you want to signup to those mailing lists send an empty email to 110 listname+subscribe@kore.io 111 112 113 Other mailboxes (these are **not** mailing lists): 114 115 **security@kore.io** - Mail this email if you think you found a security problem. 116 117 **sponsor@kore.io** - If your company would like to sponsor part of Kore development. 118 119 More information can be found on https://kore.io/