2016-06-28 23:53:10 +08:00
|
|
|
# Mongoose - Embedded Web Server / Embedded Networking Library
|
2012-08-26 05:48:14 +08:00
|
|
|
|
2021-05-04 20:46:44 +08:00
|
|
|
[![License: GPLv2/Commercial](https://img.shields.io/badge/License-GPLv2%20or%20Commercial-green.svg)](https://opensource.org/licenses/gpl-2.0.php)
|
2020-12-18 19:32:59 +08:00
|
|
|
[![Build Status]( https://github.com/cesanta/mongoose/workflows/build/badge.svg)](https://github.com/cesanta/mongoose/actions)
|
2020-12-07 16:08:21 +08:00
|
|
|
[![Code Coverage](https://codecov.io/gh/cesanta/mongoose/branch/master/graph/badge.svg)](https://codecov.io/gh/cesanta/mongoose)
|
2021-01-06 02:10:01 +08:00
|
|
|
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/mongoose.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:mongoose)
|
2021-09-02 17:28:16 +08:00
|
|
|
[![Gitter Chat](https://badges.gitter.im/cesanta/mongoose.png)](https://gitter.im/cesanta/mongoose)
|
2014-04-10 01:10:49 +08:00
|
|
|
|
2020-12-07 05:12:05 +08:00
|
|
|
Mongoose is a networking library for C/C++. It implements event-driven
|
2021-05-04 20:46:44 +08:00
|
|
|
non-blocking APIs for TCP, UDP, HTTP, WebSocket, MQTT. It is designed for
|
|
|
|
connecting devices and bringing them online. On the market since 2004, used by
|
|
|
|
vast number of open source and commercial products - it even runs on the
|
2020-12-07 05:12:05 +08:00
|
|
|
International Space Station! Mongoose makes embedded network programming fast,
|
2021-05-04 20:46:44 +08:00
|
|
|
robust, and easy. Features include:
|
|
|
|
|
2021-07-04 23:40:18 +08:00
|
|
|
- Cross-platform: works on Linux/UNIX, MacOS, Windows, Android, FreeRTOS, etc.
|
2021-05-04 20:46:44 +08:00
|
|
|
- Supported embedded architectures: ESP32, NRF52, STM32, NXP, and more
|
2021-05-05 00:02:46 +08:00
|
|
|
- Built-in protocols: plain TCP/UDP, HTTP, MQTT, Websocket
|
2021-05-04 20:46:44 +08:00
|
|
|
- SSL/TLS support: mbedTLS, OpenSSL or custom (via API)
|
|
|
|
- Asynchronous DNS resolver
|
|
|
|
- Tiny static and run-time footprint
|
|
|
|
- Source code is both ISO C and ISO C++ compliant
|
2021-05-19 07:14:27 +08:00
|
|
|
- Works with any network stack with socket API, like LwIP or FreeRTOS-Plus-TCP
|
2021-05-04 20:46:44 +08:00
|
|
|
- Very easy to integrate: just copy `mongoose.c` and `mongoose.h` files to your build tree
|
2021-10-01 15:26:34 +08:00
|
|
|
- Detailed [documentation](https://mongoose.ws/documentation/) and
|
|
|
|
[tutorials](https://mongoose.ws/tutorials/)
|
2021-05-04 20:46:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
# Commercial use
|
2021-05-05 00:03:53 +08:00
|
|
|
- Mongoose is used by hundreds of businesses, from Fortune500 giants like
|
2021-07-01 22:02:51 +08:00
|
|
|
Siemens, Schneider Electric, Broadcom, Bosch, Google, Samsung, Qualcomm, Caterpillar to the small businesses
|
2021-05-04 20:46:44 +08:00
|
|
|
- Used to solve a wide range of business needs, like implementing Web UI
|
|
|
|
interface on devices, RESTful API services, telemetry data exchange, remote
|
|
|
|
control for a product, remote software updates, remote monitoring, and others
|
2021-05-04 23:54:16 +08:00
|
|
|
- Deployed to hundreds of millions devices in production environment worldwide
|
2021-05-04 20:46:44 +08:00
|
|
|
- See [Case Studies](https://cesanta.com/case-studies.html) from our respected
|
2021-07-01 22:02:51 +08:00
|
|
|
customers like Schneider Electric (industrial automation), Broadcom (semiconductors), Schenck Process
|
2021-05-04 23:54:16 +08:00
|
|
|
(industrial engineering), and others
|
2021-05-04 20:46:44 +08:00
|
|
|
- See [Testimonials](https://cesanta.com/testimonials.html) from engineers that
|
|
|
|
integrated Mongoose in their commercial products
|
|
|
|
- We provide [commercial licensing](https://cesanta.com/licensing.html),
|
|
|
|
[support](https://cesanta.com/support.html), consultancy and integration
|
2021-05-04 20:53:17 +08:00
|
|
|
assistance - don't hesitate to
|
|
|
|
[contact us](https://www.cesanta.com/contact.html)
|
2021-05-04 20:46:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
# Security
|
|
|
|
|
|
|
|
We take security seriously:
|
|
|
|
1. Mongoose repository runs a
|
|
|
|
[continuous integration test powered by GitHub](https://github.com/cesanta/mongoose/actions),
|
|
|
|
which runs through hundreds of unit tests on every commit to the repository.
|
|
|
|
Our [unit tests](https://github.com/cesanta/mongoose/tree/master/test)
|
|
|
|
are built with modern address sanitizer technologies, which help to find
|
|
|
|
security vulnerabilities early
|
|
|
|
2. Mongoose repository is integrated into Google's
|
|
|
|
[oss-fuzz continuous fuzzer](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:mongoose)
|
|
|
|
which scans for potential vulnerabilities continuously
|
|
|
|
3. We receive periodic vulnerability reports from the independent security
|
|
|
|
groups like
|
|
|
|
[Cisco Talos](https://www.cisco.com/c/en/us/products/security/talos.html),
|
|
|
|
[Microsoft Security Response Center](https://www.microsoft.com/en-us/msrc),
|
|
|
|
[MITRE Corporation](https://www.mitre.org/),
|
|
|
|
[Compass Security](https://www.compass-security.com/en/) and others.
|
|
|
|
In case of the vulnerability found, we act according to the industry best
|
|
|
|
practice: hold on to the publication, fix the software and notify all our
|
2021-05-04 20:55:45 +08:00
|
|
|
customers that have an appropriate subscription
|
2021-05-05 00:02:46 +08:00
|
|
|
4. Some of our customers (for example NASA)
|
2021-05-04 20:46:44 +08:00
|
|
|
have specific security requirements and run independent security audits,
|
|
|
|
of which we get notified and in case of any issue, act similar to (3).
|
|
|
|
|
|
|
|
# Supplement software
|
|
|
|
|
|
|
|
This software is often used together with Mongoose:
|
2021-10-01 15:26:34 +08:00
|
|
|
- [mjson](https://github.com/cesanta/mjson) - a JSON parser, emitter and
|
|
|
|
JSON-RPC engine. Used to implement
|
2021-05-04 20:46:44 +08:00
|
|
|
RESTful APIs that use JSON, or implement data exchange (e.g. over MQTT
|
|
|
|
or Websocket) that use JSON for data encapsulation
|
2021-10-01 15:26:34 +08:00
|
|
|
- [elk](https://github.com/cesanta/elk) - a tiny JavaScript engine.
|
|
|
|
Used to implement scripting support
|
2021-05-04 20:46:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
# Precompiled web server binary
|
|
|
|
|
2021-08-29 05:00:46 +08:00
|
|
|
We have built a ready-to-go, precompiled web server executable application for
|
|
|
|
Windows and Mac. It requires no installation and no configuration to start.
|
|
|
|
Simply copy `mongoose.exe` to any directory you want to serve, and double-click
|
|
|
|
on `mongoose.exe` to start it. Mongoose will iconify to a system tray and
|
|
|
|
start serving your directory to a local network.
|
2021-05-04 20:46:44 +08:00
|
|
|
|
2021-08-29 05:00:46 +08:00
|
|
|
It is a great tool for sharing your files, or for local web or game
|
|
|
|
development. It has a unique feature - an ability to share your local files via
|
|
|
|
a global URL.
|
|
|
|
|
|
|
|
Visit [download page](https://mongoose.ws/) to try it out.
|
2014-03-12 00:59:17 +08:00
|
|
|
|
2016-03-01 18:41:24 +08:00
|
|
|
# Contributions
|
|
|
|
|
2020-02-13 18:20:05 +08:00
|
|
|
Contributions are welcome! Please follow the guidelines below:
|
|
|
|
|
|
|
|
- Sign [Cesanta CLA](https://cesanta.com/cla.html) and send GitHub pull request
|
2021-05-04 20:46:44 +08:00
|
|
|
- Make sure that PRs have only one commit, and deal with one issue only
|