forked from cory/tildefriends
		
	Add a runtime switch between httpd implementions. One of which is totally not hooked up yet.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4685 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		@@ -952,8 +952,9 @@ function stringResponse(response, data) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loadSettings().then(function() {
 | 
					loadSettings().then(function() {
 | 
				
			||||||
	httpd.all("/login", auth.handler);
 | 
						let httpd_impl = (tildefriends.args.httpdc ? httpdc : httpd);
 | 
				
			||||||
	httpd.all("", function(request, response) {
 | 
						httpd_impl.all("/login", auth.handler);
 | 
				
			||||||
 | 
						httpd_impl.all("", function(request, response) {
 | 
				
			||||||
		let match;
 | 
							let match;
 | 
				
			||||||
		if (request.uri === "/" || request.uri === "") {
 | 
							if (request.uri === "/" || request.uri === "") {
 | 
				
			||||||
			try {
 | 
								try {
 | 
				
			||||||
@@ -1003,7 +1004,8 @@ loadSettings().then(function() {
 | 
				
			|||||||
			return response.end(data);
 | 
								return response.end(data);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
	httpd.registerSocketHandler("/app/socket", app.socket);
 | 
						httpd_impl.registerSocketHandler("/app/socket", app.socket);
 | 
				
			||||||
 | 
						httpd_impl.start();
 | 
				
			||||||
}).catch(function(error) {
 | 
					}).catch(function(error) {
 | 
				
			||||||
	print('Failed to load settings.');
 | 
						print('Failed to load settings.');
 | 
				
			||||||
	printError({print: print}, error);
 | 
						printError({print: print}, error);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -521,6 +521,8 @@ function handleConnection(client) {
 | 
				
			|||||||
let kBacklog = 8;
 | 
					let kBacklog = 8;
 | 
				
			||||||
let kHost = platform() == 'haiku' ? 'localhost' : '::';
 | 
					let kHost = platform() == 'haiku' ? 'localhost' : '::';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function start() {
 | 
				
			||||||
 | 
						print('ACTUAL START');
 | 
				
			||||||
	let socket = new Socket();
 | 
						let socket = new Socket();
 | 
				
			||||||
	socket.bind(kHost, tildefriends.http_port).then(function(port) {
 | 
						socket.bind(kHost, tildefriends.http_port).then(function(port) {
 | 
				
			||||||
		print("bound to", port);
 | 
							print("bound to", port);
 | 
				
			||||||
@@ -589,5 +591,6 @@ if (tildefriends.https_port) {
 | 
				
			|||||||
			logError("[" + new Date() + "] bind error " + error);
 | 
								logError("[" + new Date() + "] bind error " + error);
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { all, registerSocketHandler };
 | 
					export { all, start, registerSocketHandler };
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								src/httpd.js.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/httpd.js.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					#include "httpd.js.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "log.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static JSValue _httpd_all(JSContext* context, JSValueConst this_val, int argc, JSValueConst* argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						tf_printf("HTTPD_ALL UNIMPLEMENTED\n");
 | 
				
			||||||
 | 
						return JS_UNDEFINED;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static JSValue _httpd_register_socket_handler(JSContext* context, JSValueConst this_val, int argc, JSValueConst* argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						tf_printf("HTTPD_REGISTER_SOCKET_HANDLER UNIMPLEMENTED\n");
 | 
				
			||||||
 | 
						return JS_UNDEFINED;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static JSValue _httpd_start(JSContext* context, JSValueConst this_val, int argc, JSValueConst* argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						tf_printf("HTTPD_START UNIMPLEMENTED\n");
 | 
				
			||||||
 | 
						return JS_UNDEFINED;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void tf_httpd_register(JSContext* context)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						JSValue global = JS_GetGlobalObject(context);
 | 
				
			||||||
 | 
						JSValue httpd = JS_NewObject(context);
 | 
				
			||||||
 | 
						JS_SetPropertyStr(context, httpd, "all", JS_NewCFunction(context, _httpd_all, "all", 2));
 | 
				
			||||||
 | 
						JS_SetPropertyStr(context, httpd, "registerSocketHandler", JS_NewCFunction(context, _httpd_register_socket_handler, "register_socket_handler", 2));
 | 
				
			||||||
 | 
						JS_SetPropertyStr(context, httpd, "start", JS_NewCFunction(context, _httpd_start, "start", 0));
 | 
				
			||||||
 | 
						JS_SetPropertyStr(context, global, "httpdc", httpd);
 | 
				
			||||||
 | 
						JS_FreeValue(context, global);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										5
									
								
								src/httpd.js.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/httpd.js.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "quickjs.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void tf_httpd_register(JSContext* context);
 | 
				
			||||||
@@ -3,6 +3,7 @@
 | 
				
			|||||||
#include "bcrypt.js.h"
 | 
					#include "bcrypt.js.h"
 | 
				
			||||||
#include "database.js.h"
 | 
					#include "database.js.h"
 | 
				
			||||||
#include "file.js.h"
 | 
					#include "file.js.h"
 | 
				
			||||||
 | 
					#include "httpd.js.h"
 | 
				
			||||||
#include "log.h"
 | 
					#include "log.h"
 | 
				
			||||||
#include "mem.h"
 | 
					#include "mem.h"
 | 
				
			||||||
#include "packetstream.h"
 | 
					#include "packetstream.h"
 | 
				
			||||||
@@ -1731,6 +1732,7 @@ void tf_task_activate(tf_task_t* task)
 | 
				
			|||||||
		JS_SetPropertyStr(context, global, "TlsContext", tf_tls_context_register(context));
 | 
							JS_SetPropertyStr(context, global, "TlsContext", tf_tls_context_register(context));
 | 
				
			||||||
		tf_file_register(context);
 | 
							tf_file_register(context);
 | 
				
			||||||
		tf_database_register(context);
 | 
							tf_database_register(context);
 | 
				
			||||||
 | 
							tf_httpd_register(context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		task->_ssb = tf_ssb_create(&task->_loop, task->_context, task->_db_path);
 | 
							task->_ssb = tf_ssb_create(&task->_loop, task->_context, task->_db_path);
 | 
				
			||||||
		tf_ssb_set_trace(task->_ssb, task->_trace);
 | 
							tf_ssb_set_trace(task->_ssb, task->_trace);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user