From 8950751c821166c6e9e4becea5433d7f87bfce11 Mon Sep 17 00:00:00 2001 From: Pagwin Date: Sun, 4 May 2025 22:27:48 -0400 Subject: [PATCH] (HACKS!!!)lots of bullshit hacks to remove later (#14) --- src/client/.gitignore | 2 ++ src/client/Dockerfile | 8 +++-- src/client/lib/src/services/api.dart | 2 +- src/client/root-pubspec.yaml | 10 ++++++ src/docker-compose.yml | 52 ++++++++++++++++------------ src/reverse-proxy/Caddyfile | 3 ++ src/server/index.ts | 14 ++++---- src/shared/.gitignore | 2 ++ src/shared/Dockerfile | 42 ++++++++++++++++++++++ src/shared/bin/server.dart | 4 +-- src/shared/root-pubspec.yaml | 10 ++++++ 11 files changed, 114 insertions(+), 35 deletions(-) create mode 100644 src/client/root-pubspec.yaml create mode 100644 src/shared/Dockerfile create mode 100644 src/shared/root-pubspec.yaml diff --git a/src/client/.gitignore b/src/client/.gitignore index fea5393..63afbd6 100644 --- a/src/client/.gitignore +++ b/src/client/.gitignore @@ -45,3 +45,5 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release + +shared-dir diff --git a/src/client/Dockerfile b/src/client/Dockerfile index 8c046ee..b193428 100644 --- a/src/client/Dockerfile +++ b/src/client/Dockerfile @@ -20,11 +20,15 @@ RUN flutter upgrade RUN flutter doctor -COPY ./ /client/ +COPY root-pubspec.yaml /client/pubspec.yaml +COPY ./shared-dir /client/shared +COPY ./ /client/client + +WORKDIR /client/client RUN flutter build web --dart-define-from-file=.env -WORKDIR /client/build/web +WORKDIR /client/client/build/web EXPOSE 80/tcp diff --git a/src/client/lib/src/services/api.dart b/src/client/lib/src/services/api.dart index ae6bbc7..a19b0b9 100644 --- a/src/client/lib/src/services/api.dart +++ b/src/client/lib/src/services/api.dart @@ -23,7 +23,7 @@ class ApiService extends Service { required Coordinates start, required Coordinates end, }) async { - final uri = _base.resolve("/path").replace( + final uri = Uri.parse("/tmp-api/path").replace( queryParameters: { "start_lat": start.lat.toString(), "start_lon": start.long.toString(), diff --git a/src/client/root-pubspec.yaml b/src/client/root-pubspec.yaml new file mode 100644 index 0000000..015f432 --- /dev/null +++ b/src/client/root-pubspec.yaml @@ -0,0 +1,10 @@ +name: cs445 + +environment: + sdk: ^3.7.0 + +workspace: + - shared + - client +dev_dependencies: + very_good_analysis: ^7.0.0 diff --git a/src/docker-compose.yml b/src/docker-compose.yml index e9f4c51..b985695 100644 --- a/src/docker-compose.yml +++ b/src/docker-compose.yml @@ -6,12 +6,17 @@ services: depends_on: - server - client + - hack restart: unless-stopped client: build: ./client restart: unless-stopped + hack: + build: ./shared + restart: unless-stopped + server: build: ./server environment: @@ -19,29 +24,30 @@ services: #ports: # - "127.0.0.1:8080:80" restart: unless-stopped - depends_on: - neo4j: - condition: service_healthy - neo4j: - image: neo4j:latest - volumes: - - neo4jconfig:/config - - neo4jdata:/data - - neo4jplugins:/plugins - environment: - # neo4j isn't exposed to the internet so having the password checked into version control doesn't matter - - NEO4J_AUTH=neo4j/your_password - ports: - # useful for dev - - "127.0.0.1:7474:7474" - - "127.0.0.1:7687:7687" - restart: unless-stopped - healthcheck: - test: wget http://localhost:7474 || exit 1 - interval: 1s - timeout: 10s - retries: 20 - start_period: 3s + # depends_on: + # neo4j: + # condition: service_healthy + #neo4j: + # image: neo4j:latest + # volumes: + # - neo4jconfig:/config + # - neo4jdata:/data + # - neo4jplugins:/plugins + # environment: + # # neo4j isn't exposed to the internet so having the password checked into version control doesn't matter + # - NEO4J_AUTH=neo4j/your_password + # ports: + # # useful for dev + # - "127.0.0.1:7474:7474" + # - "127.0.0.1:7687:7687" + # restart: unless-stopped + # healthcheck: + # test: wget http://localhost:7474 || exit 1 + # interval: 1s + # timeout: 10s + # retries: 20 + # start_period: 3s + volumes: neo4jconfig: diff --git a/src/reverse-proxy/Caddyfile b/src/reverse-proxy/Caddyfile index 7afd44d..bc65c9e 100644 --- a/src/reverse-proxy/Caddyfile +++ b/src/reverse-proxy/Caddyfile @@ -3,4 +3,7 @@ handle_path /api/* { reverse_proxy server:80 } + handle_path /tmp-api/* { + reverse_proxy hack:8001 + } } diff --git a/src/server/index.ts b/src/server/index.ts index 965798b..5baec63 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -24,13 +24,13 @@ const substitute_base_name = substitute_base_name_.bind( const { hostname, port } = { hostname: "0.0.0.0", port: 80 }; const neo4jHost = usingDocker ? "neo4j" : "127.0.0.1"; // localhost does NOT work -const graph_driver = neo4j.driver( - `neo4j://${neo4jHost}:7687`, - neo4j.auth.basic("neo4j", "your_password"), -); -console.log("initializing graph with static data"); -await graph_setup(graph_driver); -console.log("graph initialization complete"); +//const graph_driver = neo4j.driver( +// `neo4j://${neo4jHost}:7687`, +// neo4j.auth.basic("neo4j", "your_password"), +//); +//console.log("initializing graph with static data"); +//await graph_setup(graph_driver); +//console.log("graph initialization complete"); const db = new DatabaseSync(":memory:"); db_setup(db); diff --git a/src/shared/.gitignore b/src/shared/.gitignore index 5dc167e..0bcfa49 100644 --- a/src/shared/.gitignore +++ b/src/shared/.gitignore @@ -2,5 +2,7 @@ # Created by `dart pub` .dart_tool/ pubspec.lock +client-dir +server-data path.log notes.md diff --git a/src/shared/Dockerfile b/src/shared/Dockerfile new file mode 100644 index 0000000..e055488 --- /dev/null +++ b/src/shared/Dockerfile @@ -0,0 +1,42 @@ +FROM alpine:3.21 + +RUN mkdir /client + +RUN apk add bash curl file git unzip which zip gcompat wget tar xz + +#ENTRYPOINT bash + +WORKDIR /client + +RUN wget -O flutter.tar.xz https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.29.0-stable.tar.xz + +RUN tar xf flutter.tar.xz + +ENV PATH="/client/flutter/bin/:${PATH}" + +RUN git config --global --add safe.directory /client/flutter + +RUN flutter upgrade + +RUN flutter doctor + + +COPY root-pubspec.yaml /client/pubspec.yaml + +COPY ./ /client/shared + +RUN mkdir /client/client + +COPY ./client-dir/* /client/client + +RUN mkdir /client/server + +COPY server-data /client/server/data + +RUN dart pub get + +WORKDIR /client/shared + +EXPOSE 80/tcp + +CMD ["dart", "bin/server.dart"] diff --git a/src/shared/bin/server.dart b/src/shared/bin/server.dart index 68d6396..ab007a2 100644 --- a/src/shared/bin/server.dart +++ b/src/shared/bin/server.dart @@ -20,6 +20,6 @@ void main() async { router.get("/path", handlers.getPath); router.get("/stops", handlers.getStops); router.get("/routes", handlers.getRoutes); - await io.serve(router.call, "localhost", 8001); - print("Listening on localhost:8001"); + await io.serve(router.call, "0.0.0.0", 8001); + print("Listening on 0.0.0.0:8001"); } diff --git a/src/shared/root-pubspec.yaml b/src/shared/root-pubspec.yaml new file mode 100644 index 0000000..015f432 --- /dev/null +++ b/src/shared/root-pubspec.yaml @@ -0,0 +1,10 @@ +name: cs445 + +environment: + sdk: ^3.7.0 + +workspace: + - shared + - client +dev_dependencies: + very_good_analysis: ^7.0.0