webserver-c
private-network-access | webserver-c | |
---|---|---|
14 | 10 | |
50 | 2 | |
- | - | |
7.5 | 1.6 | |
3 days ago | 11 months ago | |
HTML | C | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
private-network-access
-
Why does server exit with body over certain length?
// man getsockname // Get client address int sockn = getsockname(request, (struct sockaddr*)&client_addr, (socklen_t*)&client_addrlen); if (sockn < 0) { JS_ThrowInternalError(ctx, "server error (getsockname): %s", strerror(errno)); continue; } char buffer[BUFFER_SIZE]; // man 2 read // Read from the socket int readable = read(request, buffer, BUFFER_SIZE); if (readable < 0) { JS_ThrowInternalError(ctx, "server error (read): %s", strerror(errno)); continue; } // man sscanf // man inet_ntoa // man ntohs // Read the request char method[128], uri[128], version[128]; sscanf(buffer, "%s %s %s", method, uri, version); // ... if (!strcmp(method, "QUERY") || !strcmp(method, "POST")) { // https://developer.chrome.com/blog/private-network-access-preflight/ // https://wicg.github.io/local-network-access/ char response[] = "HTTP/1.1 200 OK\r\n" "Server: webserver-c\r\n" "Cross-Origin-Opener-Policy: unsafe-none\r\n" "Connection: keepalive\r\n" "Cross-Origin-Embedder-Policy: unsafe-none\r\n" "Access-Control-Allow-Headers: cache-control\r\n" "Access-Control-Allow-Methods: OPTIONS,POST,GET,HEAD,QUERY\r\n" "Access-Control-Allow-Credentials: true\r\n" "Cache-Control: no-store\r\n" "Access-Control-Allow-Origin: *\r\n" "Content-type: text/plain\r\n" "Access-Control-Allow-Private-Network: true\r\n\r\n"; char* body_signal = strstr(buffer, "\r\n\r\n"); char* body = body_signal + 4; status(ctx, argv[1], body); uint8_t writable[65536]; int writer = write(request, response, strlen(response)); if (writer < 0) { return JS_ThrowInternalError(ctx, "server error (write): %s", strerror(errno)); } // man popen FILE* pipe = popen(body, "r"); if (pipe == NULL) { return JS_ThrowInternalError(ctx, "server error (popen): %s", strerror(errno)); } for (;;) { // man fread size_t count = fread(writable, 1, sizeof(writable), pipe); int stream = write(request, writable, count); if (stream < 0 || count == 0) { // man pclose pclose(pipe); status(ctx, argv[1], "aborted"); break; } } close(request); for (int i = 0; i < sizeof(buffer) - 1; i++) { buffer[i] = '\0'; }
-
Basic HTML/JS page is able to access a webservice on my intranet, when run locally - but is unable to access my web-service when hosted as a static S3 bucket site.
Because browsers make a distinction between private networks and public networks.
-
Chrome v107 (Releasing 10/25) Impact on Contact Center Applications
Has anyone done any testing/mitigation in regards to Chrome v107 and Cisco UC/CCE applications in regards to the Private Network Access changes?
- Private Network Access web standard
- Private Network Access Specification
-
LAN-port-scan forbidder, browser addon to protect private network
See also: https://wicg.github.io/private-network-access/
-
What does 2022 have in store for cybersecurity and cloud security specialists?
Browser are also working to add IE6's zones* feature back in: https://wicg.github.io/private-network-access/
* I'm not actually sure if that did anything regarding cross-zone requests or if it was just "yeah, ActiveX is totally super-fine with me, as long as it comes from a trusted zone".
- Private Network Access
-
Chrome may start restricting requests to private networks
Yes. It's in the doc: https://wicg.github.io/private-network-access/
Of course one obvious workaround is to misconfigure your router to allocate from a non-private but unused/reserved address space. That way your internal network is also on the "outside".
webserver-c
-
Question about JS (and high-level languages in general)
This is one example webserver-c, more examples rsenn/qjs-modules.
-
Any stories/anecdotes of when you moved away from using Node.js/Typescript in the backend to other programming language, did NOT like it, and came back to Node.js again in the backend and became super happy that you came back? Why?
Right now I am working on a single-page source code C server that I compile to a shared library and import into QuickJS https://github.com/guest271314/webserver-c/tree/quickjs-webserver.
-
Why does server exit with body over certain length?
Not sure. This is the original code https://github.com/guest271314/webserver-c that uses getsockname().
-
What's a good framework for a real-time data heavy application?
Sure. https://github.com/guest271314/webserver-c/tree/quickjs-webserver, https://plnkr.co/edit/bK1BfoSgjFUDwkIV?preview, https://plnkr.co/plunk/qX5tepJ38BuDOSZj.
-
How to parse POST and assign only body (plain text) to char?
Because I am writing a Web server module for QuickJS https://github.com/guest271314/webserver-c/blob/quickjs-webserver/webserver.c. One use case is sending a command to a local server and streaming the stdout to the browser. I know the text will not be chunked because I am making the request.
-
Which backend JavaScript framework is the one you use ?
I use the source code for Deno's serveTls https://github.com/guest271314/native-messaging-espeak-ng/blob/deno-server/local_server.js and wrote a Web server module for QuickJS https://github.com/guest271314/webserver-c/tree/quickjs-webserver.
-
Create terminal GUI with html?
You can just send the data directly to the server, local server (that you can start and stop from the browser https://github.com/guest271314/webserver-c/tree/quickjs-webserver) or remote from the terminal or browser.
-
Kindly review this C QuickJS HTTP streaming Web server module
I finally cobbled together the C source code and QuickJS module heavily relying on existing C source code QuickJS module https://github.com/guest271314/webserver-c/tree/quickjs-webserver.
- QuickJS streaming Web server module
What are some alternatives?
neocities - Neocities.org - the web site. The entire thing. Yep, we're completely open source.
qjs-modules - Some modules for QuickJS (mmap, inspect)
acme.sh - A pure Unix shell script implementing ACME client protocol
native-messaging-espeak-ng - Native Messaging => eSpeak NG => MediaStreamTrack
Node RED - Low-code programming for event-driven applications
native-messaging-c - C Native Messaging host
node-red-contrib-sqlstring - Format SQL-Queries to avoid SQL-Injections - For Node-RED
httpserver.h - Single header library for writing non-blocking HTTP servers in C
mdns-discovery-proxy - A Discovery Proxy for Multicast DNS-Based Service Discovery written in Python
SilkJS - V8 Based JavaScript Swiss Army Knife (and HTTP Server!)
LAN-port-scan-forbidder - Forbid untrusted webs to access localhost or LAN. An anti-scan protection 🛡️🏡
quickwebserver - Implementation of HTTP web server in the QuickJS Runtime