diff --git a/.gitignore b/.gitignore index 4cc3147..781c734 100644 --- a/.gitignore +++ b/.gitignore @@ -27,11 +27,11 @@ dist/ .eggs/ # Rust / maturin build artifacts -myfsio_core/target/ -myfsio_core/Cargo.lock +python/myfsio_core/target/ +python/myfsio_core/Cargo.lock # Rust engine build artifacts -myfsio-engine/target/ +rust/myfsio-engine/target/ # Local runtime artifacts logs/ diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh deleted file mode 100644 index f61f458..0000000 --- a/docker-entrypoint.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -set -e - -ENGINE="${ENGINE:-rust}" - -exec python run.py --prod --engine "$ENGINE" diff --git a/.dockerignore b/python/.dockerignore similarity index 79% rename from .dockerignore rename to python/.dockerignore index 90ccb45..33aab4c 100644 --- a/.dockerignore +++ b/python/.dockerignore @@ -11,5 +11,7 @@ htmlcov logs data tmp +tests myfsio_core/target -myfsio-engine/target +Dockerfile +.dockerignore diff --git a/Dockerfile b/python/Dockerfile similarity index 59% rename from Dockerfile rename to python/Dockerfile index cdf37c4..c9f3066 100644 --- a/Dockerfile +++ b/python/Dockerfile @@ -1,9 +1,9 @@ -FROM python:3.14.3-slim +FROM python:3.14.3-slim AS builder ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 -WORKDIR /app +WORKDIR /build RUN apt-get update \ && apt-get install -y --no-install-recommends build-essential curl \ @@ -12,27 +12,34 @@ RUN apt-get update \ ENV PATH="/root/.cargo/bin:${PATH}" -COPY requirements.txt ./ +RUN pip install --no-cache-dir maturin +COPY myfsio_core ./myfsio_core +RUN cd myfsio_core \ + && maturin build --release --out /wheels + + +FROM python:3.14.3-slim + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 + +WORKDIR /app + +COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt -COPY . . +COPY --from=builder /wheels/*.whl /tmp/ +RUN pip install --no-cache-dir /tmp/*.whl && rm /tmp/*.whl -RUN pip install --no-cache-dir maturin \ - && cd myfsio_core \ - && maturin build --release \ - && pip install target/wheels/*.whl \ - && cd ../myfsio-engine \ - && cargo build --release \ - && cp target/release/myfsio-server /usr/local/bin/myfsio-server \ - && cd .. \ - && rm -rf myfsio_core/target myfsio-engine/target \ - && pip uninstall -y maturin \ - && rustup self uninstall -y +COPY app ./app +COPY templates ./templates +COPY static ./static +COPY run.py ./ +COPY docker-entrypoint.sh ./ -RUN chmod +x docker-entrypoint.sh - -RUN mkdir -p /app/data \ +RUN chmod +x docker-entrypoint.sh \ + && mkdir -p /app/data \ && useradd -m -u 1000 myfsio \ && chown -R myfsio:myfsio /app @@ -41,8 +48,7 @@ USER myfsio EXPOSE 5000 5100 ENV APP_HOST=0.0.0.0 \ FLASK_ENV=production \ - FLASK_DEBUG=0 \ - ENGINE=rust + FLASK_DEBUG=0 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD python -c "import requests; requests.get('http://localhost:5000/myfsio/health', timeout=2)" diff --git a/app/__init__.py b/python/app/__init__.py similarity index 100% rename from app/__init__.py rename to python/app/__init__.py diff --git a/app/access_logging.py b/python/app/access_logging.py similarity index 100% rename from app/access_logging.py rename to python/app/access_logging.py diff --git a/app/acl.py b/python/app/acl.py similarity index 100% rename from app/acl.py rename to python/app/acl.py diff --git a/app/admin_api.py b/python/app/admin_api.py similarity index 100% rename from app/admin_api.py rename to python/app/admin_api.py diff --git a/app/bucket_policies.py b/python/app/bucket_policies.py similarity index 100% rename from app/bucket_policies.py rename to python/app/bucket_policies.py diff --git a/app/compression.py b/python/app/compression.py similarity index 100% rename from app/compression.py rename to python/app/compression.py diff --git a/app/config.py b/python/app/config.py similarity index 100% rename from app/config.py rename to python/app/config.py diff --git a/app/connections.py b/python/app/connections.py similarity index 100% rename from app/connections.py rename to python/app/connections.py diff --git a/app/encrypted_storage.py b/python/app/encrypted_storage.py similarity index 100% rename from app/encrypted_storage.py rename to python/app/encrypted_storage.py diff --git a/app/encryption.py b/python/app/encryption.py similarity index 100% rename from app/encryption.py rename to python/app/encryption.py diff --git a/app/errors.py b/python/app/errors.py similarity index 100% rename from app/errors.py rename to python/app/errors.py diff --git a/app/extensions.py b/python/app/extensions.py similarity index 100% rename from app/extensions.py rename to python/app/extensions.py diff --git a/app/gc.py b/python/app/gc.py similarity index 100% rename from app/gc.py rename to python/app/gc.py diff --git a/app/iam.py b/python/app/iam.py similarity index 100% rename from app/iam.py rename to python/app/iam.py diff --git a/app/integrity.py b/python/app/integrity.py similarity index 100% rename from app/integrity.py rename to python/app/integrity.py diff --git a/app/kms.py b/python/app/kms.py similarity index 100% rename from app/kms.py rename to python/app/kms.py diff --git a/app/kms_api.py b/python/app/kms_api.py similarity index 100% rename from app/kms_api.py rename to python/app/kms_api.py diff --git a/app/lifecycle.py b/python/app/lifecycle.py similarity index 100% rename from app/lifecycle.py rename to python/app/lifecycle.py diff --git a/app/notifications.py b/python/app/notifications.py similarity index 100% rename from app/notifications.py rename to python/app/notifications.py diff --git a/app/object_lock.py b/python/app/object_lock.py similarity index 100% rename from app/object_lock.py rename to python/app/object_lock.py diff --git a/app/operation_metrics.py b/python/app/operation_metrics.py similarity index 100% rename from app/operation_metrics.py rename to python/app/operation_metrics.py diff --git a/app/replication.py b/python/app/replication.py similarity index 100% rename from app/replication.py rename to python/app/replication.py diff --git a/app/s3_api.py b/python/app/s3_api.py similarity index 100% rename from app/s3_api.py rename to python/app/s3_api.py diff --git a/app/s3_client.py b/python/app/s3_client.py similarity index 100% rename from app/s3_client.py rename to python/app/s3_client.py diff --git a/app/secret_store.py b/python/app/secret_store.py similarity index 100% rename from app/secret_store.py rename to python/app/secret_store.py diff --git a/app/select_content.py b/python/app/select_content.py similarity index 100% rename from app/select_content.py rename to python/app/select_content.py diff --git a/app/site_registry.py b/python/app/site_registry.py similarity index 100% rename from app/site_registry.py rename to python/app/site_registry.py diff --git a/app/site_sync.py b/python/app/site_sync.py similarity index 100% rename from app/site_sync.py rename to python/app/site_sync.py diff --git a/app/storage.py b/python/app/storage.py similarity index 100% rename from app/storage.py rename to python/app/storage.py diff --git a/app/system_metrics.py b/python/app/system_metrics.py similarity index 100% rename from app/system_metrics.py rename to python/app/system_metrics.py diff --git a/app/ui.py b/python/app/ui.py similarity index 100% rename from app/ui.py rename to python/app/ui.py diff --git a/app/version.py b/python/app/version.py similarity index 100% rename from app/version.py rename to python/app/version.py diff --git a/app/website_domains.py b/python/app/website_domains.py similarity index 100% rename from app/website_domains.py rename to python/app/website_domains.py diff --git a/python/docker-entrypoint.sh b/python/docker-entrypoint.sh new file mode 100644 index 0000000..100eb45 --- /dev/null +++ b/python/docker-entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e + +exec python run.py --prod diff --git a/myfsio_core/Cargo.toml b/python/myfsio_core/Cargo.toml similarity index 100% rename from myfsio_core/Cargo.toml rename to python/myfsio_core/Cargo.toml diff --git a/myfsio_core/pyproject.toml b/python/myfsio_core/pyproject.toml similarity index 100% rename from myfsio_core/pyproject.toml rename to python/myfsio_core/pyproject.toml diff --git a/myfsio_core/src/crypto.rs b/python/myfsio_core/src/crypto.rs similarity index 100% rename from myfsio_core/src/crypto.rs rename to python/myfsio_core/src/crypto.rs diff --git a/myfsio_core/src/hashing.rs b/python/myfsio_core/src/hashing.rs similarity index 100% rename from myfsio_core/src/hashing.rs rename to python/myfsio_core/src/hashing.rs diff --git a/myfsio_core/src/lib.rs b/python/myfsio_core/src/lib.rs similarity index 100% rename from myfsio_core/src/lib.rs rename to python/myfsio_core/src/lib.rs diff --git a/myfsio_core/src/metadata.rs b/python/myfsio_core/src/metadata.rs similarity index 100% rename from myfsio_core/src/metadata.rs rename to python/myfsio_core/src/metadata.rs diff --git a/myfsio_core/src/sigv4.rs b/python/myfsio_core/src/sigv4.rs similarity index 100% rename from myfsio_core/src/sigv4.rs rename to python/myfsio_core/src/sigv4.rs diff --git a/myfsio_core/src/storage.rs b/python/myfsio_core/src/storage.rs similarity index 100% rename from myfsio_core/src/storage.rs rename to python/myfsio_core/src/storage.rs diff --git a/myfsio_core/src/streaming.rs b/python/myfsio_core/src/streaming.rs similarity index 100% rename from myfsio_core/src/streaming.rs rename to python/myfsio_core/src/streaming.rs diff --git a/myfsio_core/src/validation.rs b/python/myfsio_core/src/validation.rs similarity index 100% rename from myfsio_core/src/validation.rs rename to python/myfsio_core/src/validation.rs diff --git a/pytest.ini b/python/pytest.ini similarity index 100% rename from pytest.ini rename to python/pytest.ini diff --git a/requirements.txt b/python/requirements.txt similarity index 100% rename from requirements.txt rename to python/requirements.txt diff --git a/run.py b/python/run.py similarity index 83% rename from run.py rename to python/run.py index 6aebccf..40ab540 100644 --- a/run.py +++ b/python/run.py @@ -5,7 +5,6 @@ import argparse import atexit import os import signal -import subprocess import sys import warnings import multiprocessing @@ -75,49 +74,6 @@ def _serve_granian(target: str, port: int, config: Optional[AppConfig] = None) - server.serve() -def _find_rust_binary() -> Optional[Path]: - candidates = [ - Path("/usr/local/bin/myfsio-server"), - Path(__file__).parent / "myfsio-engine" / "target" / "release" / "myfsio-server.exe", - Path(__file__).parent / "myfsio-engine" / "target" / "release" / "myfsio-server", - Path(__file__).parent / "myfsio-engine" / "target" / "debug" / "myfsio-server.exe", - Path(__file__).parent / "myfsio-engine" / "target" / "debug" / "myfsio-server", - ] - for p in candidates: - if p.exists(): - return p - return None - - -def serve_rust_api(port: int, config: Optional[AppConfig] = None) -> None: - binary = _find_rust_binary() - if binary is None: - print("ERROR: Rust engine binary not found. Build it first:") - print(" cd myfsio-engine && cargo build --release") - sys.exit(1) - - env = os.environ.copy() - env["PORT"] = str(port) - env["HOST"] = _server_host() - if config: - env["STORAGE_ROOT"] = str(config.storage_root) - env["AWS_REGION"] = config.aws_region - if config.secret_key: - env["SECRET_KEY"] = config.secret_key - env.setdefault("ENCRYPTION_ENABLED", str(config.encryption_enabled).lower()) - env.setdefault("KMS_ENABLED", str(config.kms_enabled).lower()) - env.setdefault("LIFECYCLE_ENABLED", str(config.lifecycle_enabled).lower()) - env.setdefault("RUST_LOG", "info") - - print(f"Starting Rust S3 engine: {binary}") - proc = subprocess.Popen([str(binary)], env=env) - try: - proc.wait() - except KeyboardInterrupt: - proc.terminate() - proc.wait(timeout=5) - - def serve_api(port: int, prod: bool = False, config: Optional[AppConfig] = None) -> None: if prod: _serve_granian("app:create_api_app", port, config) @@ -271,7 +227,6 @@ if __name__ == "__main__": parser.add_argument("--ui-port", type=int, default=5100) parser.add_argument("--prod", action="store_true", help="Run in production mode using Granian") parser.add_argument("--dev", action="store_true", help="Force development mode (Flask dev server)") - parser.add_argument("--engine", choices=["python", "rust"], default=os.getenv("ENGINE", "python"), help="API engine: python (Flask) or rust (myfsio-engine)") parser.add_argument("--check-config", action="store_true", help="Validate configuration and exit") parser.add_argument("--show-config", action="store_true", help="Show configuration summary and exit") parser.add_argument("--reset-cred", action="store_true", help="Reset admin credentials and exit") @@ -325,17 +280,9 @@ if __name__ == "__main__": else: print("Running in development mode (Flask dev server)") - use_rust = args.engine == "rust" - if args.mode in {"api", "both"}: - if use_rust: - print(f"Starting Rust API engine on port {args.api_port}...") - else: - print(f"Starting API server on port {args.api_port}...") - if use_rust: - api_proc = Process(target=serve_rust_api, args=(args.api_port, config)) - else: - api_proc = Process(target=serve_api, args=(args.api_port, prod_mode, config)) + print(f"Starting API server on port {args.api_port}...") + api_proc = Process(target=serve_api, args=(args.api_port, prod_mode, config)) api_proc.start() else: api_proc = None diff --git a/static/css/main.css b/python/static/css/main.css similarity index 100% rename from static/css/main.css rename to python/static/css/main.css diff --git a/static/images/MyFSIO.ico b/python/static/images/MyFSIO.ico similarity index 100% rename from static/images/MyFSIO.ico rename to python/static/images/MyFSIO.ico diff --git a/static/images/MyFSIO.png b/python/static/images/MyFSIO.png similarity index 100% rename from static/images/MyFSIO.png rename to python/static/images/MyFSIO.png diff --git a/static/js/bucket-detail-main.js b/python/static/js/bucket-detail-main.js similarity index 100% rename from static/js/bucket-detail-main.js rename to python/static/js/bucket-detail-main.js diff --git a/static/js/bucket-detail-operations.js b/python/static/js/bucket-detail-operations.js similarity index 100% rename from static/js/bucket-detail-operations.js rename to python/static/js/bucket-detail-operations.js diff --git a/static/js/bucket-detail-upload.js b/python/static/js/bucket-detail-upload.js similarity index 100% rename from static/js/bucket-detail-upload.js rename to python/static/js/bucket-detail-upload.js diff --git a/static/js/bucket-detail-utils.js b/python/static/js/bucket-detail-utils.js similarity index 100% rename from static/js/bucket-detail-utils.js rename to python/static/js/bucket-detail-utils.js diff --git a/static/js/connections-management.js b/python/static/js/connections-management.js similarity index 100% rename from static/js/connections-management.js rename to python/static/js/connections-management.js diff --git a/static/js/iam-management.js b/python/static/js/iam-management.js similarity index 100% rename from static/js/iam-management.js rename to python/static/js/iam-management.js diff --git a/static/js/ui-core.js b/python/static/js/ui-core.js similarity index 100% rename from static/js/ui-core.js rename to python/static/js/ui-core.js diff --git a/templates/404.html b/python/templates/404.html similarity index 100% rename from templates/404.html rename to python/templates/404.html diff --git a/templates/500.html b/python/templates/500.html similarity index 100% rename from templates/500.html rename to python/templates/500.html diff --git a/templates/base.html b/python/templates/base.html similarity index 100% rename from templates/base.html rename to python/templates/base.html diff --git a/templates/bucket_detail.html b/python/templates/bucket_detail.html similarity index 100% rename from templates/bucket_detail.html rename to python/templates/bucket_detail.html diff --git a/templates/buckets.html b/python/templates/buckets.html similarity index 100% rename from templates/buckets.html rename to python/templates/buckets.html diff --git a/templates/connections.html b/python/templates/connections.html similarity index 100% rename from templates/connections.html rename to python/templates/connections.html diff --git a/templates/csrf_error.html b/python/templates/csrf_error.html similarity index 100% rename from templates/csrf_error.html rename to python/templates/csrf_error.html diff --git a/templates/docs.html b/python/templates/docs.html similarity index 100% rename from templates/docs.html rename to python/templates/docs.html diff --git a/templates/iam.html b/python/templates/iam.html similarity index 100% rename from templates/iam.html rename to python/templates/iam.html diff --git a/templates/login.html b/python/templates/login.html similarity index 100% rename from templates/login.html rename to python/templates/login.html diff --git a/myfsio-engine/crates/myfsio-server/templates/metrics.html b/python/templates/metrics.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/metrics.html rename to python/templates/metrics.html diff --git a/templates/replication_wizard.html b/python/templates/replication_wizard.html similarity index 100% rename from templates/replication_wizard.html rename to python/templates/replication_wizard.html diff --git a/templates/sites.html b/python/templates/sites.html similarity index 100% rename from templates/sites.html rename to python/templates/sites.html diff --git a/templates/system.html b/python/templates/system.html similarity index 100% rename from templates/system.html rename to python/templates/system.html diff --git a/templates/website_domains.html b/python/templates/website_domains.html similarity index 100% rename from templates/website_domains.html rename to python/templates/website_domains.html diff --git a/tests/conftest.py b/python/tests/conftest.py similarity index 100% rename from tests/conftest.py rename to python/tests/conftest.py diff --git a/tests/test_access_logging.py b/python/tests/test_access_logging.py similarity index 100% rename from tests/test_access_logging.py rename to python/tests/test_access_logging.py diff --git a/tests/test_acl.py b/python/tests/test_acl.py similarity index 100% rename from tests/test_acl.py rename to python/tests/test_acl.py diff --git a/tests/test_api.py b/python/tests/test_api.py similarity index 100% rename from tests/test_api.py rename to python/tests/test_api.py diff --git a/tests/test_api_multipart.py b/python/tests/test_api_multipart.py similarity index 100% rename from tests/test_api_multipart.py rename to python/tests/test_api_multipart.py diff --git a/tests/test_aws_sdk_compat.py b/python/tests/test_aws_sdk_compat.py similarity index 100% rename from tests/test_aws_sdk_compat.py rename to python/tests/test_aws_sdk_compat.py diff --git a/tests/test_boto3_multipart.py b/python/tests/test_boto3_multipart.py similarity index 100% rename from tests/test_boto3_multipart.py rename to python/tests/test_boto3_multipart.py diff --git a/tests/test_conditional_headers.py b/python/tests/test_conditional_headers.py similarity index 100% rename from tests/test_conditional_headers.py rename to python/tests/test_conditional_headers.py diff --git a/tests/test_edge_cases.py b/python/tests/test_edge_cases.py similarity index 100% rename from tests/test_edge_cases.py rename to python/tests/test_edge_cases.py diff --git a/tests/test_encryption.py b/python/tests/test_encryption.py similarity index 100% rename from tests/test_encryption.py rename to python/tests/test_encryption.py diff --git a/tests/test_gc.py b/python/tests/test_gc.py similarity index 100% rename from tests/test_gc.py rename to python/tests/test_gc.py diff --git a/tests/test_iam_lockout.py b/python/tests/test_iam_lockout.py similarity index 100% rename from tests/test_iam_lockout.py rename to python/tests/test_iam_lockout.py diff --git a/tests/test_integrity.py b/python/tests/test_integrity.py similarity index 100% rename from tests/test_integrity.py rename to python/tests/test_integrity.py diff --git a/tests/test_kms_api.py b/python/tests/test_kms_api.py similarity index 100% rename from tests/test_kms_api.py rename to python/tests/test_kms_api.py diff --git a/tests/test_lifecycle.py b/python/tests/test_lifecycle.py similarity index 100% rename from tests/test_lifecycle.py rename to python/tests/test_lifecycle.py diff --git a/tests/test_new_api_endpoints.py b/python/tests/test_new_api_endpoints.py similarity index 100% rename from tests/test_new_api_endpoints.py rename to python/tests/test_new_api_endpoints.py diff --git a/tests/test_notifications.py b/python/tests/test_notifications.py similarity index 100% rename from tests/test_notifications.py rename to python/tests/test_notifications.py diff --git a/tests/test_object_lock.py b/python/tests/test_object_lock.py similarity index 100% rename from tests/test_object_lock.py rename to python/tests/test_object_lock.py diff --git a/tests/test_operation_metrics.py b/python/tests/test_operation_metrics.py similarity index 100% rename from tests/test_operation_metrics.py rename to python/tests/test_operation_metrics.py diff --git a/tests/test_replication.py b/python/tests/test_replication.py similarity index 100% rename from tests/test_replication.py rename to python/tests/test_replication.py diff --git a/tests/test_rust_extensions.py b/python/tests/test_rust_extensions.py similarity index 100% rename from tests/test_rust_extensions.py rename to python/tests/test_rust_extensions.py diff --git a/tests/test_site_sync.py b/python/tests/test_site_sync.py similarity index 100% rename from tests/test_site_sync.py rename to python/tests/test_site_sync.py diff --git a/tests/test_storage_features.py b/python/tests/test_storage_features.py similarity index 100% rename from tests/test_storage_features.py rename to python/tests/test_storage_features.py diff --git a/tests/test_ui_bulk_delete.py b/python/tests/test_ui_bulk_delete.py similarity index 100% rename from tests/test_ui_bulk_delete.py rename to python/tests/test_ui_bulk_delete.py diff --git a/tests/test_ui_docs.py b/python/tests/test_ui_docs.py similarity index 100% rename from tests/test_ui_docs.py rename to python/tests/test_ui_docs.py diff --git a/tests/test_ui_encryption.py b/python/tests/test_ui_encryption.py similarity index 100% rename from tests/test_ui_encryption.py rename to python/tests/test_ui_encryption.py diff --git a/tests/test_ui_pagination.py b/python/tests/test_ui_pagination.py similarity index 100% rename from tests/test_ui_pagination.py rename to python/tests/test_ui_pagination.py diff --git a/tests/test_ui_policy.py b/python/tests/test_ui_policy.py similarity index 100% rename from tests/test_ui_policy.py rename to python/tests/test_ui_policy.py diff --git a/tests/test_website_hosting.py b/python/tests/test_website_hosting.py similarity index 100% rename from tests/test_website_hosting.py rename to python/tests/test_website_hosting.py diff --git a/rust/.dockerignore b/rust/.dockerignore new file mode 100644 index 0000000..ca8fb51 --- /dev/null +++ b/rust/.dockerignore @@ -0,0 +1,9 @@ +.git +.gitignore +logs +data +tmp +myfsio-engine/target +myfsio-engine/tests +Dockerfile +.dockerignore diff --git a/rust/Dockerfile b/rust/Dockerfile new file mode 100644 index 0000000..b014dd8 --- /dev/null +++ b/rust/Dockerfile @@ -0,0 +1,45 @@ +FROM rust:1-slim-bookworm AS builder + +WORKDIR /build + +RUN apt-get update \ + && apt-get install -y --no-install-recommends pkg-config libssl-dev \ + && rm -rf /var/lib/apt/lists/* + +COPY myfsio-engine ./myfsio-engine + +RUN cd myfsio-engine \ + && cargo build --release --bin myfsio-server \ + && strip target/release/myfsio-server + + +FROM debian:bookworm-slim + +WORKDIR /app + +RUN apt-get update \ + && apt-get install -y --no-install-recommends ca-certificates curl \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /app/data \ + && useradd -m -u 1000 myfsio \ + && chown -R myfsio:myfsio /app + +COPY --from=builder /build/myfsio-engine/target/release/myfsio-server /usr/local/bin/myfsio-server +COPY --from=builder /build/myfsio-engine/templates /app/templates +COPY docker-entrypoint.sh /app/docker-entrypoint.sh + +RUN chmod +x /app/docker-entrypoint.sh \ + && chown -R myfsio:myfsio /app + +USER myfsio + +EXPOSE 5000 +ENV HOST=0.0.0.0 \ + PORT=5000 \ + STORAGE_ROOT=/app/data \ + RUST_LOG=info + +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD curl -fsS "http://localhost:${PORT}/myfsio/health" || exit 1 + +CMD ["/app/docker-entrypoint.sh"] diff --git a/rust/docker-entrypoint.sh b/rust/docker-entrypoint.sh new file mode 100644 index 0000000..ebf20c5 --- /dev/null +++ b/rust/docker-entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e + +exec /usr/local/bin/myfsio-server diff --git a/myfsio-engine/Cargo.lock b/rust/myfsio-engine/Cargo.lock similarity index 100% rename from myfsio-engine/Cargo.lock rename to rust/myfsio-engine/Cargo.lock diff --git a/myfsio-engine/Cargo.toml b/rust/myfsio-engine/Cargo.toml similarity index 100% rename from myfsio-engine/Cargo.toml rename to rust/myfsio-engine/Cargo.toml diff --git a/myfsio-engine/crates/myfsio-auth/Cargo.toml b/rust/myfsio-engine/crates/myfsio-auth/Cargo.toml similarity index 100% rename from myfsio-engine/crates/myfsio-auth/Cargo.toml rename to rust/myfsio-engine/crates/myfsio-auth/Cargo.toml diff --git a/myfsio-engine/crates/myfsio-auth/src/fernet.rs b/rust/myfsio-engine/crates/myfsio-auth/src/fernet.rs similarity index 100% rename from myfsio-engine/crates/myfsio-auth/src/fernet.rs rename to rust/myfsio-engine/crates/myfsio-auth/src/fernet.rs diff --git a/myfsio-engine/crates/myfsio-auth/src/iam.rs b/rust/myfsio-engine/crates/myfsio-auth/src/iam.rs similarity index 100% rename from myfsio-engine/crates/myfsio-auth/src/iam.rs rename to rust/myfsio-engine/crates/myfsio-auth/src/iam.rs diff --git a/myfsio-engine/crates/myfsio-auth/src/lib.rs b/rust/myfsio-engine/crates/myfsio-auth/src/lib.rs similarity index 100% rename from myfsio-engine/crates/myfsio-auth/src/lib.rs rename to rust/myfsio-engine/crates/myfsio-auth/src/lib.rs diff --git a/myfsio-engine/crates/myfsio-auth/src/principal.rs b/rust/myfsio-engine/crates/myfsio-auth/src/principal.rs similarity index 100% rename from myfsio-engine/crates/myfsio-auth/src/principal.rs rename to rust/myfsio-engine/crates/myfsio-auth/src/principal.rs diff --git a/myfsio-engine/crates/myfsio-auth/src/sigv4.rs b/rust/myfsio-engine/crates/myfsio-auth/src/sigv4.rs similarity index 100% rename from myfsio-engine/crates/myfsio-auth/src/sigv4.rs rename to rust/myfsio-engine/crates/myfsio-auth/src/sigv4.rs diff --git a/myfsio-engine/crates/myfsio-common/Cargo.toml b/rust/myfsio-engine/crates/myfsio-common/Cargo.toml similarity index 100% rename from myfsio-engine/crates/myfsio-common/Cargo.toml rename to rust/myfsio-engine/crates/myfsio-common/Cargo.toml diff --git a/myfsio-engine/crates/myfsio-common/src/constants.rs b/rust/myfsio-engine/crates/myfsio-common/src/constants.rs similarity index 100% rename from myfsio-engine/crates/myfsio-common/src/constants.rs rename to rust/myfsio-engine/crates/myfsio-common/src/constants.rs diff --git a/myfsio-engine/crates/myfsio-common/src/error.rs b/rust/myfsio-engine/crates/myfsio-common/src/error.rs similarity index 100% rename from myfsio-engine/crates/myfsio-common/src/error.rs rename to rust/myfsio-engine/crates/myfsio-common/src/error.rs diff --git a/myfsio-engine/crates/myfsio-common/src/lib.rs b/rust/myfsio-engine/crates/myfsio-common/src/lib.rs similarity index 100% rename from myfsio-engine/crates/myfsio-common/src/lib.rs rename to rust/myfsio-engine/crates/myfsio-common/src/lib.rs diff --git a/myfsio-engine/crates/myfsio-common/src/types.rs b/rust/myfsio-engine/crates/myfsio-common/src/types.rs similarity index 100% rename from myfsio-engine/crates/myfsio-common/src/types.rs rename to rust/myfsio-engine/crates/myfsio-common/src/types.rs diff --git a/myfsio-engine/crates/myfsio-crypto/Cargo.toml b/rust/myfsio-engine/crates/myfsio-crypto/Cargo.toml similarity index 100% rename from myfsio-engine/crates/myfsio-crypto/Cargo.toml rename to rust/myfsio-engine/crates/myfsio-crypto/Cargo.toml diff --git a/myfsio-engine/crates/myfsio-crypto/src/aes_gcm.rs b/rust/myfsio-engine/crates/myfsio-crypto/src/aes_gcm.rs similarity index 100% rename from myfsio-engine/crates/myfsio-crypto/src/aes_gcm.rs rename to rust/myfsio-engine/crates/myfsio-crypto/src/aes_gcm.rs diff --git a/myfsio-engine/crates/myfsio-crypto/src/encryption.rs b/rust/myfsio-engine/crates/myfsio-crypto/src/encryption.rs similarity index 100% rename from myfsio-engine/crates/myfsio-crypto/src/encryption.rs rename to rust/myfsio-engine/crates/myfsio-crypto/src/encryption.rs diff --git a/myfsio-engine/crates/myfsio-crypto/src/hashing.rs b/rust/myfsio-engine/crates/myfsio-crypto/src/hashing.rs similarity index 100% rename from myfsio-engine/crates/myfsio-crypto/src/hashing.rs rename to rust/myfsio-engine/crates/myfsio-crypto/src/hashing.rs diff --git a/myfsio-engine/crates/myfsio-crypto/src/kms.rs b/rust/myfsio-engine/crates/myfsio-crypto/src/kms.rs similarity index 100% rename from myfsio-engine/crates/myfsio-crypto/src/kms.rs rename to rust/myfsio-engine/crates/myfsio-crypto/src/kms.rs diff --git a/myfsio-engine/crates/myfsio-crypto/src/lib.rs b/rust/myfsio-engine/crates/myfsio-crypto/src/lib.rs similarity index 100% rename from myfsio-engine/crates/myfsio-crypto/src/lib.rs rename to rust/myfsio-engine/crates/myfsio-crypto/src/lib.rs diff --git a/myfsio-engine/crates/myfsio-server/Cargo.toml b/rust/myfsio-engine/crates/myfsio-server/Cargo.toml similarity index 100% rename from myfsio-engine/crates/myfsio-server/Cargo.toml rename to rust/myfsio-engine/crates/myfsio-server/Cargo.toml diff --git a/myfsio-engine/crates/myfsio-server/src/config.rs b/rust/myfsio-engine/crates/myfsio-server/src/config.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/config.rs rename to rust/myfsio-engine/crates/myfsio-server/src/config.rs diff --git a/myfsio-engine/crates/myfsio-server/src/handlers/admin.rs b/rust/myfsio-engine/crates/myfsio-server/src/handlers/admin.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/handlers/admin.rs rename to rust/myfsio-engine/crates/myfsio-server/src/handlers/admin.rs diff --git a/myfsio-engine/crates/myfsio-server/src/handlers/chunked.rs b/rust/myfsio-engine/crates/myfsio-server/src/handlers/chunked.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/handlers/chunked.rs rename to rust/myfsio-engine/crates/myfsio-server/src/handlers/chunked.rs diff --git a/myfsio-engine/crates/myfsio-server/src/handlers/config.rs b/rust/myfsio-engine/crates/myfsio-server/src/handlers/config.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/handlers/config.rs rename to rust/myfsio-engine/crates/myfsio-server/src/handlers/config.rs diff --git a/myfsio-engine/crates/myfsio-server/src/handlers/kms.rs b/rust/myfsio-engine/crates/myfsio-server/src/handlers/kms.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/handlers/kms.rs rename to rust/myfsio-engine/crates/myfsio-server/src/handlers/kms.rs diff --git a/myfsio-engine/crates/myfsio-server/src/handlers/mod.rs b/rust/myfsio-engine/crates/myfsio-server/src/handlers/mod.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/handlers/mod.rs rename to rust/myfsio-engine/crates/myfsio-server/src/handlers/mod.rs diff --git a/myfsio-engine/crates/myfsio-server/src/handlers/select.rs b/rust/myfsio-engine/crates/myfsio-server/src/handlers/select.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/handlers/select.rs rename to rust/myfsio-engine/crates/myfsio-server/src/handlers/select.rs diff --git a/myfsio-engine/crates/myfsio-server/src/handlers/ui.rs b/rust/myfsio-engine/crates/myfsio-server/src/handlers/ui.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/handlers/ui.rs rename to rust/myfsio-engine/crates/myfsio-server/src/handlers/ui.rs diff --git a/myfsio-engine/crates/myfsio-server/src/handlers/ui_pages.rs b/rust/myfsio-engine/crates/myfsio-server/src/handlers/ui_pages.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/handlers/ui_pages.rs rename to rust/myfsio-engine/crates/myfsio-server/src/handlers/ui_pages.rs diff --git a/myfsio-engine/crates/myfsio-server/src/lib.rs b/rust/myfsio-engine/crates/myfsio-server/src/lib.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/lib.rs rename to rust/myfsio-engine/crates/myfsio-server/src/lib.rs diff --git a/myfsio-engine/crates/myfsio-server/src/main.rs b/rust/myfsio-engine/crates/myfsio-server/src/main.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/main.rs rename to rust/myfsio-engine/crates/myfsio-server/src/main.rs diff --git a/myfsio-engine/crates/myfsio-server/src/middleware/auth.rs b/rust/myfsio-engine/crates/myfsio-server/src/middleware/auth.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/middleware/auth.rs rename to rust/myfsio-engine/crates/myfsio-server/src/middleware/auth.rs diff --git a/myfsio-engine/crates/myfsio-server/src/middleware/mod.rs b/rust/myfsio-engine/crates/myfsio-server/src/middleware/mod.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/middleware/mod.rs rename to rust/myfsio-engine/crates/myfsio-server/src/middleware/mod.rs diff --git a/myfsio-engine/crates/myfsio-server/src/middleware/session.rs b/rust/myfsio-engine/crates/myfsio-server/src/middleware/session.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/middleware/session.rs rename to rust/myfsio-engine/crates/myfsio-server/src/middleware/session.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/gc.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/gc.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/gc.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/gc.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/integrity.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/integrity.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/integrity.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/integrity.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/lifecycle.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/lifecycle.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/lifecycle.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/lifecycle.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/metrics.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/metrics.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/metrics.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/metrics.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/mod.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/mod.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/mod.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/mod.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/replication.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/replication.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/replication.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/replication.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/s3_client.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/s3_client.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/s3_client.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/s3_client.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/site_registry.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/site_registry.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/site_registry.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/site_registry.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/site_sync.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/site_sync.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/site_sync.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/site_sync.rs diff --git a/myfsio-engine/crates/myfsio-server/src/services/website_domains.rs b/rust/myfsio-engine/crates/myfsio-server/src/services/website_domains.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/services/website_domains.rs rename to rust/myfsio-engine/crates/myfsio-server/src/services/website_domains.rs diff --git a/myfsio-engine/crates/myfsio-server/src/session.rs b/rust/myfsio-engine/crates/myfsio-server/src/session.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/session.rs rename to rust/myfsio-engine/crates/myfsio-server/src/session.rs diff --git a/myfsio-engine/crates/myfsio-server/src/state.rs b/rust/myfsio-engine/crates/myfsio-server/src/state.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/state.rs rename to rust/myfsio-engine/crates/myfsio-server/src/state.rs diff --git a/myfsio-engine/crates/myfsio-server/src/stores/connections.rs b/rust/myfsio-engine/crates/myfsio-server/src/stores/connections.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/stores/connections.rs rename to rust/myfsio-engine/crates/myfsio-server/src/stores/connections.rs diff --git a/myfsio-engine/crates/myfsio-server/src/stores/mod.rs b/rust/myfsio-engine/crates/myfsio-server/src/stores/mod.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/stores/mod.rs rename to rust/myfsio-engine/crates/myfsio-server/src/stores/mod.rs diff --git a/myfsio-engine/crates/myfsio-server/src/templates.rs b/rust/myfsio-engine/crates/myfsio-server/src/templates.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/src/templates.rs rename to rust/myfsio-engine/crates/myfsio-server/src/templates.rs diff --git a/myfsio-engine/crates/myfsio-server/templates/404.html b/rust/myfsio-engine/crates/myfsio-server/templates/404.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/404.html rename to rust/myfsio-engine/crates/myfsio-server/templates/404.html diff --git a/myfsio-engine/crates/myfsio-server/templates/500.html b/rust/myfsio-engine/crates/myfsio-server/templates/500.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/500.html rename to rust/myfsio-engine/crates/myfsio-server/templates/500.html diff --git a/myfsio-engine/crates/myfsio-server/templates/_convert.py b/rust/myfsio-engine/crates/myfsio-server/templates/_convert.py similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/_convert.py rename to rust/myfsio-engine/crates/myfsio-server/templates/_convert.py diff --git a/myfsio-engine/crates/myfsio-server/templates/base.html b/rust/myfsio-engine/crates/myfsio-server/templates/base.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/base.html rename to rust/myfsio-engine/crates/myfsio-server/templates/base.html diff --git a/myfsio-engine/crates/myfsio-server/templates/bucket_detail.html b/rust/myfsio-engine/crates/myfsio-server/templates/bucket_detail.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/bucket_detail.html rename to rust/myfsio-engine/crates/myfsio-server/templates/bucket_detail.html diff --git a/myfsio-engine/crates/myfsio-server/templates/buckets.html b/rust/myfsio-engine/crates/myfsio-server/templates/buckets.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/buckets.html rename to rust/myfsio-engine/crates/myfsio-server/templates/buckets.html diff --git a/myfsio-engine/crates/myfsio-server/templates/connections.html b/rust/myfsio-engine/crates/myfsio-server/templates/connections.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/connections.html rename to rust/myfsio-engine/crates/myfsio-server/templates/connections.html diff --git a/myfsio-engine/crates/myfsio-server/templates/csrf_error.html b/rust/myfsio-engine/crates/myfsio-server/templates/csrf_error.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/csrf_error.html rename to rust/myfsio-engine/crates/myfsio-server/templates/csrf_error.html diff --git a/myfsio-engine/crates/myfsio-server/templates/docs.html b/rust/myfsio-engine/crates/myfsio-server/templates/docs.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/docs.html rename to rust/myfsio-engine/crates/myfsio-server/templates/docs.html diff --git a/myfsio-engine/crates/myfsio-server/templates/iam.html b/rust/myfsio-engine/crates/myfsio-server/templates/iam.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/iam.html rename to rust/myfsio-engine/crates/myfsio-server/templates/iam.html diff --git a/myfsio-engine/crates/myfsio-server/templates/login.html b/rust/myfsio-engine/crates/myfsio-server/templates/login.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/login.html rename to rust/myfsio-engine/crates/myfsio-server/templates/login.html diff --git a/templates/metrics.html b/rust/myfsio-engine/crates/myfsio-server/templates/metrics.html similarity index 100% rename from templates/metrics.html rename to rust/myfsio-engine/crates/myfsio-server/templates/metrics.html diff --git a/myfsio-engine/crates/myfsio-server/templates/replication_wizard.html b/rust/myfsio-engine/crates/myfsio-server/templates/replication_wizard.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/replication_wizard.html rename to rust/myfsio-engine/crates/myfsio-server/templates/replication_wizard.html diff --git a/myfsio-engine/crates/myfsio-server/templates/sites.html b/rust/myfsio-engine/crates/myfsio-server/templates/sites.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/sites.html rename to rust/myfsio-engine/crates/myfsio-server/templates/sites.html diff --git a/myfsio-engine/crates/myfsio-server/templates/system.html b/rust/myfsio-engine/crates/myfsio-server/templates/system.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/system.html rename to rust/myfsio-engine/crates/myfsio-server/templates/system.html diff --git a/myfsio-engine/crates/myfsio-server/templates/website_domains.html b/rust/myfsio-engine/crates/myfsio-server/templates/website_domains.html similarity index 100% rename from myfsio-engine/crates/myfsio-server/templates/website_domains.html rename to rust/myfsio-engine/crates/myfsio-server/templates/website_domains.html diff --git a/myfsio-engine/crates/myfsio-server/tests/integration.rs b/rust/myfsio-engine/crates/myfsio-server/tests/integration.rs similarity index 100% rename from myfsio-engine/crates/myfsio-server/tests/integration.rs rename to rust/myfsio-engine/crates/myfsio-server/tests/integration.rs diff --git a/myfsio-engine/crates/myfsio-storage/Cargo.toml b/rust/myfsio-engine/crates/myfsio-storage/Cargo.toml similarity index 100% rename from myfsio-engine/crates/myfsio-storage/Cargo.toml rename to rust/myfsio-engine/crates/myfsio-storage/Cargo.toml diff --git a/myfsio-engine/crates/myfsio-storage/src/error.rs b/rust/myfsio-engine/crates/myfsio-storage/src/error.rs similarity index 100% rename from myfsio-engine/crates/myfsio-storage/src/error.rs rename to rust/myfsio-engine/crates/myfsio-storage/src/error.rs diff --git a/myfsio-engine/crates/myfsio-storage/src/fs_backend.rs b/rust/myfsio-engine/crates/myfsio-storage/src/fs_backend.rs similarity index 100% rename from myfsio-engine/crates/myfsio-storage/src/fs_backend.rs rename to rust/myfsio-engine/crates/myfsio-storage/src/fs_backend.rs diff --git a/myfsio-engine/crates/myfsio-storage/src/lib.rs b/rust/myfsio-engine/crates/myfsio-storage/src/lib.rs similarity index 100% rename from myfsio-engine/crates/myfsio-storage/src/lib.rs rename to rust/myfsio-engine/crates/myfsio-storage/src/lib.rs diff --git a/myfsio-engine/crates/myfsio-storage/src/traits.rs b/rust/myfsio-engine/crates/myfsio-storage/src/traits.rs similarity index 100% rename from myfsio-engine/crates/myfsio-storage/src/traits.rs rename to rust/myfsio-engine/crates/myfsio-storage/src/traits.rs diff --git a/myfsio-engine/crates/myfsio-storage/src/validation.rs b/rust/myfsio-engine/crates/myfsio-storage/src/validation.rs similarity index 100% rename from myfsio-engine/crates/myfsio-storage/src/validation.rs rename to rust/myfsio-engine/crates/myfsio-storage/src/validation.rs diff --git a/myfsio-engine/crates/myfsio-xml/Cargo.toml b/rust/myfsio-engine/crates/myfsio-xml/Cargo.toml similarity index 100% rename from myfsio-engine/crates/myfsio-xml/Cargo.toml rename to rust/myfsio-engine/crates/myfsio-xml/Cargo.toml diff --git a/myfsio-engine/crates/myfsio-xml/src/lib.rs b/rust/myfsio-engine/crates/myfsio-xml/src/lib.rs similarity index 100% rename from myfsio-engine/crates/myfsio-xml/src/lib.rs rename to rust/myfsio-engine/crates/myfsio-xml/src/lib.rs diff --git a/myfsio-engine/crates/myfsio-xml/src/request.rs b/rust/myfsio-engine/crates/myfsio-xml/src/request.rs similarity index 100% rename from myfsio-engine/crates/myfsio-xml/src/request.rs rename to rust/myfsio-engine/crates/myfsio-xml/src/request.rs diff --git a/myfsio-engine/crates/myfsio-xml/src/response.rs b/rust/myfsio-engine/crates/myfsio-xml/src/response.rs similarity index 100% rename from myfsio-engine/crates/myfsio-xml/src/response.rs rename to rust/myfsio-engine/crates/myfsio-xml/src/response.rs