Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NextJS #2146

Merged
merged 87 commits into from
Jan 8, 2022
Merged

NextJS #2146

Show file tree
Hide file tree
Changes from 74 commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
99cd7f4
bootstrap next and move some config
lucaslcode Oct 30, 2021
8103509
move more files
lucaslcode Oct 30, 2021
ea7dddd
start moving login page
lucaslcode Oct 30, 2021
f6eda6e
kill old yarn.lock
lucaslcode Oct 30, 2021
1c62ce8
finish login page
lucaslcode Nov 1, 2021
fa7322f
change sentry to nextjs version
lucaslcode Nov 2, 2021
3a6ee0c
add imports necessary for dashboard (;-_-)
lucaslcode Nov 4, 2021
5292faf
fix tsc/lint errors for dashboard
lucaslcode Nov 12, 2021
19838ac
fix various hydration issues/warnings
lucaslcode Nov 12, 2021
b905885
fix markdown tests
lucaslcode Nov 14, 2021
17f2993
fix some more tests
lucaslcode Nov 14, 2021
d86f748
fix more tests
lucaslcode Nov 14, 2021
def9985
fix rest of current tests
lucaslcode Nov 14, 2021
00b5dc0
move readme
lucaslcode Nov 14, 2021
ac233ba
change eslintrc, kill old readme
lucaslcode Dec 1, 2021
7a7e611
update yarn.lock
lucaslcode Dec 1, 2021
c0e267b
update next and typescript
lucaslcode Dec 1, 2021
d52452f
move rest of files except storybook stuff
lucaslcode Dec 1, 2021
e19553f
Continue refactor
lucaslcode Dec 1, 2021
8246aa4
review
lucaslcode Dec 1, 2021
2ef84ba
continue refactoring
lucaslcode Dec 4, 2021
d0d2b36
use url param instead of route state for message creation
lucaslcode Dec 4, 2021
74bfabe
continue refactor
lucaslcode Dec 5, 2021
6201ec9
continue refactor
lucaslcode Dec 6, 2021
fc2c4d4
fix all tests
lucaslcode Dec 9, 2021
d0f9cbe
change tokens to HTTP GET
lucaslcode Dec 9, 2021
ca297b0
add empty files to routing
lucaslcode Dec 9, 2021
588354d
remove react-router style constants
lucaslcode Dec 9, 2021
844e4ae
start adding pages
lucaslcode Dec 9, 2021
72e25f5
finish routing
lucaslcode Dec 15, 2021
df246e8
fix markdown components
lucaslcode Dec 16, 2021
c998ea8
stop translations working temporarily
lucaslcode Dec 16, 2021
cb15ae3
implement next-i18next, move translations
lucaslcode Dec 19, 2021
a0f3980
add all getStaticProps/Paths
lucaslcode Dec 19, 2021
c23b253
fix some lint errors
lucaslcode Dec 20, 2021
c7569de
fixes and get storybook working
lucaslcode Dec 20, 2021
cfc0edd
add protos downloader
lucaslcode Dec 21, 2021
0d4ee6c
fix paths
lucaslcode Dec 21, 2021
090040a
fix lint errors
lucaslcode Dec 21, 2021
4aac726
fix AuthProvider and AuthStore useEffects
lucaslcode Dec 22, 2021
d5ef765
review
lucaslcode Dec 22, 2021
e97c5ec
go back to old translations structure
lucaslcode Dec 23, 2021
783a810
add error pages
lucaslcode Dec 23, 2021
fb49662
update some dependencies
lucaslcode Dec 23, 2021
176bef3
add remove 500, it doesn't work well
lucaslcode Dec 23, 2021
05d76d5
fix types and jail redirect loop
lucaslcode Dec 29, 2021
ea57575
pass locale to <Html> and date formatters
lucaslcode Dec 29, 2021
58e89dd
fix community tab logic (maybe)
lucaslcode Dec 29, 2021
2bb0b38
review
lucaslcode Dec 29, 2021
c4290fe
try fixing communities
lucaslcode Dec 29, 2021
eb7092b
change communities optional catch-all to catch-all
lucaslcode Dec 29, 2021
5f71fc6
add missing getStaticPaths
lucaslcode Dec 29, 2021
6ad2976
edit CI and make dockerfile
lucaslcode Dec 29, 2021
6afdd24
fix ci
lucaslcode Dec 29, 2021
e28e5d8
add git to Dockerfile
lucaslcode Dec 29, 2021
2477a54
fix CI path
lucaslcode Dec 30, 2021
cb94a4d
fix user pages and full-width donate page
lucaslcode Dec 30, 2021
4942d1b
rebase fixes
lucaslcode Dec 30, 2021
2feb03d
fix tos, better next-i18next git dependency
lucaslcode Dec 30, 2021
86cb631
Add vercel branding
lucaslcode Dec 30, 2021
d2e3321
re-add some things lost in rebase
lucaslcode Dec 30, 2021
3e0a7ee
Fix image
lucaslcode Dec 30, 2021
5787788
fix image
lucaslcode Dec 30, 2021
f51332a
work on CI
lucaslcode Dec 30, 2021
848a71f
Merge branch 'web/refactor/nextjs' of https://github.com/Couchers-org…
lucaslcode Dec 30, 2021
2a366b5
fix ci
lucaslcode Dec 30, 2021
2cfb95b
work on CI
lucaslcode Dec 31, 2021
70a1a84
fix i18n storybook paths
lucaslcode Dec 31, 2021
ffac296
run tests in band
lucaslcode Dec 31, 2021
7343b6d
add version to dockerfiles
lucaslcode Dec 31, 2021
5c85b94
disable sentry testing
lucaslcode Jan 1, 2022
581e39e
re-add web-next to ci
lucaslcode Jan 2, 2022
388ff0b
Merge remote-tracking branch 'origin/develop' into web/refactor/nextjs
lucaslcode Jan 2, 2022
45092bb
use build args for ci instead of hack
lucaslcode Jan 2, 2022
8052538
prettier
lucaslcode Jan 2, 2022
52d14ed
fix CI prettier
lucaslcode Jan 4, 2022
9142bf0
ignore .next in coverage
lucaslcode Jan 4, 2022
81cbe59
clean up all test warnings
lucaslcode Jan 4, 2022
af40591
Merge remote-tracking branch 'origin/develop' into web/refactor/nextjs
lucaslcode Jan 4, 2022
78ebfa3
fix error in create message dialog
lucaslcode Jan 6, 2022
d35e736
fix reference routing
lucaslcode Jan 6, 2022
b19e953
fix storybook type
lucaslcode Jan 6, 2022
29bc058
Fix host reference routing
lucaslcode Jan 7, 2022
7558f21
change source maps location
lucaslcode Jan 7, 2022
339ce03
remove sourcemap upload
lucaslcode Jan 7, 2022
86c5da7
Merge remote-tracking branch 'origin/develop' into web/refactor/nextjs
lucaslcode Jan 8, 2022
e5c9cad
remove sentry from dockerfile
lucaslcode Jan 8, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
189 changes: 78 additions & 111 deletions app/.gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,21 @@ variables:
BACKEND_RELEASE_TAG: $CI_REGISTRY_IMAGE/backend:latest
MEDIA_RELEASE_TAG: $CI_REGISTRY_IMAGE/media:latest
PROMETHEUS_RELEASE_TAG: $CI_REGISTRY_IMAGE/prometheus:latest
WEB_DEV_RELEASE_TAG: $CI_REGISTRY_IMAGE/web-dev:latest
WEB_RELEASE_TAG: $CI_REGISTRY_IMAGE/web:latest
WEB_NEXT_RELEASE_TAG: $CI_REGISTRY_IMAGE/web-next:latest
MOBILE_APP_RELEASE_TAG: $CI_REGISTRY_IMAGE/mobile-app:latest
MOBILE_APP_PREVIEW_RELEASE_TAG: $CI_REGISTRY_IMAGE/mobile-app:current-preview
WEB_NEXT_RELEASE_TAG: $CI_REGISTRY_IMAGE/web-next:latest
SLUG: $CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
PROXY_TAG: $CI_REGISTRY_IMAGE/proxy:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
NGINX_TAG: $CI_REGISTRY_IMAGE/nginx:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
NGINX_NEXT_TAG: $CI_REGISTRY_IMAGE/nginx-next:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
BACKEND_TAG: $CI_REGISTRY_IMAGE/backend:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
MEDIA_TAG: $CI_REGISTRY_IMAGE/media:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
WEB_TAG: $CI_REGISTRY_IMAGE/web:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
MOBILE_APP_TAG: $CI_REGISTRY_IMAGE/mobile-app:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
WEB_DEV_TAG: $CI_REGISTRY_IMAGE/web-dev:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
WEB_NEXT_TAG: $CI_REGISTRY_IMAGE/web-next:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
MOBILE_APP_TAG: $CI_REGISTRY_IMAGE/mobile-app:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
PROMETHEUS_TAG: $CI_REGISTRY_IMAGE/prometheus:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA


Expand Down Expand Up @@ -130,15 +132,57 @@ build:media:
- app/proto/**/*
- app/media/**/*

build:web-dev:
needs: ["protos"]
stage: build
script:
- docker pull $WEB_DEV_RELEASE_TAG || true
- docker build --build-arg version=$SLUG --cache-from $WEB_DEV_RELEASE_TAG -t $WEB_DEV_TAG -f app/web/dev.Dockerfile app/web/
- docker push $WEB_DEV_TAG
# creates a new docker container (docker create returns the container name), and copies the /app folder to the host
- mkdir -p artifacts && docker cp $(docker create $WEB_DEV_TAG):/app artifacts/web-dev
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
- app/**/*
- if: $CI_COMMIT_BRANCH != $RELEASE_BRANCH
changes:
- app/proto/**/*
- app/web/**/*
artifacts:
paths:
- artifacts/web-dev/

build:web:
needs: ["protos"]
stage: build
script:
- docker pull $WEB_RELEASE_TAG || true
- docker build --build-arg version=$SLUG --cache-from $WEB_RELEASE_TAG -t $WEB_TAG app/web/
- docker build --build-arg version=$SLUG --cache-from $WEB_RELEASE_TAG -t $WEB_TAG -f app/web/prod.Dockerfile app/web/
- docker push $WEB_TAG
# creates a new docker container (docker create returns the container name), and copies the /app folder to the host
- mkdir -p artifacts && docker cp $(docker create $WEB_TAG):/app/build artifacts/web
- mkdir -p artifacts && docker cp $(docker create $WEB_TAG):/app artifacts/web
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
- app/**/*
- if: $CI_COMMIT_BRANCH != $RELEASE_BRANCH
changes:
- app/proto/**/*
- app/web/**/*
artifacts:
paths:
- artifacts/web/

build:web-next:
needs: ["protos"]
stage: build
script:
- docker pull $WEB_NEXT_RELEASE_TAG || true
- docker build --build-arg version=$SLUG --build-arg environment=preview --cache-from $WEB_NEXT_RELEASE_TAG -t $WEB_NEXT_TAG -f app/web/prod.Dockerfile app/web/
- docker push $WEB_NEXT_TAG
# creates a new docker container (docker create returns the container name), and copies the /app folder to the host
- mkdir -p artifacts && docker cp $(docker create $WEB_NEXT_TAG):/app artifacts/web
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
Expand Down Expand Up @@ -183,29 +227,6 @@ build:nginx-next:
- app/proto/**/*
- app/nginx/**/*

build:web-next:
needs: ["protos"]
stage: build
script:
- docker pull $WEB_RELEASE_TAG || true
# this is a bit hacky, but I don't see any other good way to get the preview env vars into the container
- cp app/web/.env.preview app/web/.env.production
- docker build --build-arg version=$SLUG-next --cache-from $WEB_RELEASE_TAG -t $WEB_NEXT_TAG app/web/
- docker push $WEB_NEXT_TAG
# creates a new docker container (docker create returns the container name), and copies the /app folder to the host
- mkdir -p artifacts && docker cp $(docker create $WEB_NEXT_TAG):/app/build artifacts/web-next
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
- app/**/*
- if: $CI_COMMIT_BRANCH != $RELEASE_BRANCH
changes:
- app/proto/**/*
- app/web/**/*
artifacts:
paths:
- artifacts/web-next/

test:backend:
needs: ["build:backend"]
stage: test
Expand Down Expand Up @@ -275,9 +296,9 @@ test:media:
- app/media/**/*

test:web:
needs: ["build:web"]
needs: ["build:web-dev"]
stage: test
image: $WEB_TAG
image: $WEB_DEV_TAG
lucaslcode marked this conversation as resolved.
Show resolved Hide resolved
inherit:
# no docker login
default: false
Expand Down Expand Up @@ -323,9 +344,9 @@ test:mobile:
- app/mobile/**/*

test:web-prettier:
needs: ["build:web"]
needs: ["build:web-dev"]
stage: test
image: $WEB_TAG
image: $WEB_DEV_TAG
inherit:
# no docker login
default: false
Expand Down Expand Up @@ -359,9 +380,9 @@ test:mobile-prettier:
- app/mobile/**/*

test:storybook:
needs: ["build:web-next"]
needs: ["build:web-dev"]
stage: test
image: $WEB_NEXT_TAG
image: $WEB_DEV_TAG
inherit:
# no docker login
default: false
Expand All @@ -380,35 +401,6 @@ test:storybook:
- app/proto/**/*
- app/web/**/*

test:web-next:
needs: ["build:web-next"]
stage: test
image: $WEB_NEXT_TAG
inherit:
# no docker login
default: false
script:
- cd /app && yarn test-ci
after_script:
- cp /app/junit.xml $CI_PROJECT_DIR/
- cp /app/coverage/cobertura-coverage.xml $CI_PROJECT_DIR/
- mkdir -p $CI_PROJECT_DIR/artifacts/lcov-report && cp -a /app/coverage/lcov-report $CI_PROJECT_DIR/artifacts/
coverage: '/^All files[^|]*\|[^|]*\s+([\d\.]+)/'
artifacts:
reports:
cobertura: cobertura-coverage.xml
junit: junit.xml
paths:
- artifacts/lcov-report
rules:
- if: ($DO_CHECKS == "true") && ($CI_COMMIT_BRANCH == $RELEASE_BRANCH)
changes:
- app/**/*
- if: ($DO_CHECKS == "true") && ($CI_COMMIT_BRANCH != $RELEASE_BRANCH)
changes:
- app/proto/**/*
- app/web/**/*

preview:bcov:
needs: ["test:backend"]
stage: preview
Expand All @@ -432,7 +424,7 @@ preview:bcov:
- app/backend/**/*

preview:wcov:
needs: ["test:web-next"]
needs: ["test:web"]
stage: preview
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
inherit:
Expand Down Expand Up @@ -475,28 +467,6 @@ preview:storybook:
- app/proto/**/*
- app/web/**/*

preview:web-next:
needs: ["build:web-next"]
stage: preview
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
inherit:
# no docker login
default: false
script:
- aws s3 rm s3://$AWS_PREVIEW_BUCKET/web/$CI_COMMIT_SHORT_SHA/ --recursive
- aws s3 cp artifacts/web-next s3://$AWS_PREVIEW_BUCKET/web/$CI_COMMIT_SHORT_SHA/ --recursive
- aws s3 rm s3://$AWS_PREVIEW_BUCKET/web/$CI_COMMIT_REF_SLUG/ --recursive
- aws s3 cp artifacts/web-next s3://$AWS_PREVIEW_BUCKET/web/$CI_COMMIT_REF_SLUG/ --recursive
- echo "Done, preview available at https://$CI_COMMIT_SHORT_SHA--web.$PREVIEW_DOMAIN/ and https://$CI_COMMIT_REF_SLUG--web.$PREVIEW_DOMAIN/"
rules:
- if: ($DO_CHECKS == "true") && ($CI_COMMIT_BRANCH == $RELEASE_BRANCH)
changes:
- app/**/*
- if: ($DO_CHECKS == "true") && ($CI_COMMIT_BRANCH != $RELEASE_BRANCH)
changes:
- app/proto/**/*
- app/web/**/*

preview:mobile:
needs: ["test:mobile"]
stage: preview
Expand Down Expand Up @@ -583,36 +553,23 @@ release:media:
changes:
- app/**/*

release:web:
release:web-dev:
stage: release
script:
- docker pull $WEB_TAG
- docker tag $WEB_TAG $WEB_RELEASE_TAG
- docker push $WEB_RELEASE_TAG
- docker pull $WEB_DEV_TAG
- docker tag $WEB_DEV_TAG $WEB_DEV_RELEASE_TAG
- docker push $WEB_DEV_RELEASE_TAG
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
- app/**/*

release:web-sourcemaps:
stage: release
image: $WEB_TAG
inherit:
# no docker login
default: false
script:
- cd /app && SENTRY_AUTH_TOKEN=$SENTRY_AUTH_TOKEN yarn upload-sourcemap
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
- app/**/*

release:nginx-next:
release:web:
stage: release
script:
- docker pull $NGINX_NEXT_TAG
- docker tag $NGINX_NEXT_TAG $NGINX_NEXT_RELEASE_TAG
- docker push $NGINX_NEXT_RELEASE_TAG
- docker pull $WEB_TAG
- docker tag $WEB_TAG $WEB_RELEASE_TAG
- docker push $WEB_RELEASE_TAG
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
Expand All @@ -624,21 +581,31 @@ release:web-next:
- docker pull $WEB_NEXT_TAG
- docker tag $WEB_NEXT_TAG $WEB_NEXT_RELEASE_TAG
- docker push $WEB_NEXT_RELEASE_TAG
# some command to get our preview server to redeploy?
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
- app/**/*

release:next-deploy:
release:web-sourcemaps:
stage: release
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
image: $WEB_TAG
inherit:
# no docker login
default: false
script:
- aws s3 sync artifacts/web-next/ s3://$AWS_NEXT_BUCKET --delete --acl public-read
- aws cloudfront create-invalidation --distribution-id $AWS_NEXT_CF_DISTRIBUTIN_ID --paths "/*"
- echo "Done, next web deployed to https://$AWS_NEXT_BUCKET/"
- cd /app && SENTRY_AUTH_TOKEN=$SENTRY_AUTH_TOKEN yarn upload-sourcemap
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
- app/**/*

release:nginx-next:
stage: release
script:
- docker pull $NGINX_NEXT_TAG
- docker tag $NGINX_NEXT_TAG $NGINX_NEXT_RELEASE_TAG
- docker push $NGINX_NEXT_RELEASE_TAG
rules:
- if: $CI_COMMIT_BRANCH == $RELEASE_BRANCH
changes:
Expand Down
8 changes: 4 additions & 4 deletions app/backend/src/couchers/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ def edit_profile_link():


def signup_link(token):
return f"{config['BASE_URL']}/signup/{token}"
return f"{config['BASE_URL']}/signup?token={token}"


def login_link(login_token):
return f"{config['BASE_URL']}/login/{login_token}"
return f"{config['BASE_URL']}/login?token={login_token}"


def password_reset_link(password_reset_token):
return f"{config['BASE_URL']}/password-reset/{password_reset_token}"
return f"{config['BASE_URL']}/complete-password-reset?token={password_reset_token}"


def host_request_link_host():
Expand Down Expand Up @@ -63,7 +63,7 @@ def media_upload_url(path):


def change_email_link(confirmation_token):
return f"{config['BASE_URL']}/confirm-email/{confirmation_token}"
return f"{config['BASE_URL']}/confirm-email?token={confirmation_token}"


def donation_cancelled_url():
Expand Down
12 changes: 6 additions & 6 deletions app/backend/src/tests/test_email.py
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,8 @@ def test_email_changed_confirmation_sent_to_old_email(db):
assert user.new_email in html
assert "via a similar email sent to your new email address" in plain
assert "via a similar email sent to your new email address" in html
assert f"{config['BASE_URL']}/confirm-email/{confirmation_token}" in plain
assert f"{config['BASE_URL']}/confirm-email/{confirmation_token}" in html
assert f"{config['BASE_URL']}/confirm-email?token={confirmation_token}" in plain
assert f"{config['BASE_URL']}/confirm-email?token={confirmation_token}" in html
assert "[email protected]" in plain
assert "[email protected]" in html

Expand All @@ -328,8 +328,8 @@ def test_email_changed_confirmation_sent_to_new_email(db):
assert user.email in html
assert "via a similar email sent to your old email address" in plain
assert "via a similar email sent to your old email address" in html
assert f"{config['BASE_URL']}/confirm-email/{confirmation_token}" in plain
assert f"{config['BASE_URL']}/confirm-email/{confirmation_token}" in html
assert f"{config['BASE_URL']}/confirm-email?token={confirmation_token}" in plain
assert f"{config['BASE_URL']}/confirm-email?token={confirmation_token}" in html
assert "[email protected]" in plain
assert "[email protected]" in html

Expand All @@ -350,8 +350,8 @@ def test_password_reset_email(db):
unique_string = "You asked for your password to be reset on Couchers.org."
assert unique_string in plain
assert unique_string in html
assert f"{config['BASE_URL']}/password-reset/{password_reset_token.token}" in plain
assert f"{config['BASE_URL']}/password-reset/{password_reset_token.token}" in html
assert f"{config['BASE_URL']}/complete-password-reset?token={password_reset_token.token}" in plain
assert f"{config['BASE_URL']}/complete-password-reset?token={password_reset_token.token}" in html
assert "[email protected]" in plain
assert "[email protected]" in html

Expand Down
10 changes: 10 additions & 0 deletions app/docker-compose.prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ services:
networks:
- media_nginx
- envoy_nginx
- web_nginx
prometheus:
image: registry.gitlab.com/couchers/couchers/prometheus
restart: always
Expand All @@ -70,6 +71,13 @@ services:
- backend
networks:
- backend_prometheus
web:
image: registry.gitlab.com/couchers/couchers/web
restart: always
expose:
- 3000
networks:
- web_nginx

networks:
backend_prometheus:
Expand All @@ -84,3 +92,5 @@ networks:
driver: bridge
envoy_nginx:
driver: bridge
web_nginx:
driver: bridge
Loading