diff --git a/examples/proxy_server.py b/examples/proxy_server.py new file mode 100644 index 0000000..ba9e538 --- /dev/null +++ b/examples/proxy_server.py @@ -0,0 +1,18 @@ +from socketify import App, Response, Request + +app = App() + +router = app.router() + +@router.connect("/") +def proxy_connect(res: Response, req: Request): + print(req.get_url()) + + res.send("Xablau") + + +app.listen( + 54321, + lambda config: print("Listening on port http://localhost:%d now\n" % config.port), +) +app.run() diff --git a/src/socketify/helpers.py b/src/socketify/helpers.py index 4b3ca94..398a7e5 100644 --- a/src/socketify/helpers.py +++ b/src/socketify/helpers.py @@ -222,7 +222,7 @@ def async_middleware(*functions): class DecoratorRouter: def __init__(self, app, prefix: str = "", *middlewares): self.app = app - self.middlewares = middlewares + self.middlewares = list(*middlewares) self.prefix = prefix def get(self, path): @@ -230,7 +230,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.get(path, middleware(*middies)) else: @@ -244,7 +244,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.post(path, middleware(*middies)) else: @@ -257,7 +257,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.options(path, middleware(*middies)) else: @@ -270,7 +270,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.delete(path, middleware(*middies)) else: @@ -283,7 +283,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.patch(path, middleware(*middies)) else: @@ -296,7 +296,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.put(path, middleware(*middies)) else: @@ -309,7 +309,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.head(path, middleware(*middies)) else: @@ -322,7 +322,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.connect(path, middleware(*middies)) else: @@ -335,7 +335,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.trace(path, middleware(*middies)) else: @@ -348,7 +348,7 @@ class DecoratorRouter: def decorator(handler): if len(self.middlewares) > 0: - middies = list(*self.middlewares) + middies = list(self.middlewares) middies.append(handler) self.app.any(path, middleware(*middies)) else: diff --git a/src/socketify/native/Makefile b/src/socketify/native/Makefile index f41c1da..28ebf3f 100644 --- a/src/socketify/native/Makefile +++ b/src/socketify/native/Makefile @@ -102,6 +102,16 @@ linux: $(CXX) -I ./src -I ../uWebSockets/src -I ../uWebSockets/uSockets/src -I ../uWebSockets/capi -I ../uWebSockets/uSockets/lsquic/include -I ../uWebSockets/uSockets/boringssl/include -DUWS_WITH_PROXY -pthread -fPIC -std=c++17 -c -O3 ./src/$(LIBRARY_NAME).cpp $(CXX) -shared -static-libstdc++ -static-libgcc -s -o ../$(LIBRARY_NAME)_linux_$(ARCH).so $(LIBRARY_NAME).o ../uWebSockets/uSockets/uSockets_linux_$(ARCH).a ../uWebSockets/uSockets/boringssl/$(ARCH)/ssl/libssl.a ../uWebSockets/uSockets/boringssl/$(ARCH)/crypto/libcrypto.a ../uWebSockets/uSockets/lsquic/src/liblsquic/liblsquic.a -flto -fPIC -lz -luv +linux-uws-socketify: + # build uWebSockets + cd ../uWebSockets/uSockets && $(CC) -I src -I lsquic/include -I boringssl/include -DUWS_WITH_PROXY -DLIBUS_USE_OPENSSL -DLIBUS_USE_LIBUV -DLIBUS_USE_QUIC -pthread -fPIC -std=c11 -O3 -c src/*.c src/eventing/*.c src/crypto/*.c + cd ../uWebSockets/uSockets && $(CXX) -I boringssl/include -DUWS_WITH_PROXY -DLIBUS_USE_OPENSSL -DLIBUS_USE_LIBUV -DLIBUS_USE_QUIC -pthread -fPIC -std=c++17 -O3 -c src/crypto/*.cpp + cd ../uWebSockets/uSockets && $(AR) rvs uSockets_linux_$(ARCH).a *.o + + # build CAPI + libsocketify + $(CXX) -I ./src -I ../uWebSockets/src -I ../uWebSockets/uSockets/src -I ../uWebSockets/capi -I ../uWebSockets/uSockets/lsquic/include -I ../uWebSockets/uSockets/boringssl/include -DUWS_WITH_PROXY -pthread -fPIC -std=c++17 -c -O3 ./src/$(LIBRARY_NAME).cpp + $(CXX) -shared -static-libstdc++ -static-libgcc -s -o ../$(LIBRARY_NAME)_linux_$(ARCH).so $(LIBRARY_NAME).o ../uWebSockets/uSockets/uSockets_linux_$(ARCH).a ../uWebSockets/uSockets/boringssl/$(ARCH)/ssl/libssl.a ../uWebSockets/uSockets/boringssl/$(ARCH)/crypto/libcrypto.a ../uWebSockets/uSockets/lsquic/src/liblsquic/liblsquic.a -flto -fPIC -lz -luv + linux-socketify-only: # build CAPI + libsocketify $(CXX) -I ./src -I ../uWebSockets/src -I ../uWebSockets/uSockets/src -I ../uWebSockets/capi -I ../uWebSockets/uSockets/lsquic/include -I ../uWebSockets/uSockets/boringssl/include -DUWS_WITH_PROXY -pthread -fPIC -std=c++17 -c -O3 ./src/$(LIBRARY_NAME).cpp