diff --git a/.gitignore b/.gitignore index a89928f..e3b629b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ __pycache__/ *.py[cod] .idea .vscode/ -src/static/ \ No newline at end of file +src/static/flutter_infra_release/ \ No newline at end of file diff --git a/charmcraft.yaml b/charmcraft.yaml index 1553dfd..ba90f1d 100644 --- a/charmcraft.yaml +++ b/charmcraft.yaml @@ -26,4 +26,15 @@ parts: source: . build-snaps: - astral-uv - + + flutter-3.38.9: + plugin: nil + build-packages: + - curl + override-pull: | + curl -L -O https://code.launchpad.net/~vhaudiquet/+git/flutter/+artifact/436865/+files/flutter-artifacts-riscv64.tar.gz + override-build: | + tar -C $CRAFT_PART_SRC -xzf flutter-artifacts-riscv64.tar.gz + override-prime: | + mkdir -p $CRAFT_PRIME/src/static/flutter_infra_release/flutter/587c18f873b8ab57330422bce09047420d9c7f42/ + mv $CRAFT_PART_SRC/output/* $CRAFT_PRIME/src/static/flutter_infra_release/flutter/587c18f873b8ab57330422bce09047420d9c7f42/ diff --git a/src/charmed_server.py b/src/charmed_server.py index eaadc6b..358ef01 100644 --- a/src/charmed_server.py +++ b/src/charmed_server.py @@ -17,13 +17,12 @@ from charmlibs import apt, pathops logger = logging.getLogger(__name__) -CONFIG_FILE = pathops.LocalPath("/etc/nginx/nginx.conf") -PID_FILE = pathops.LocalPath("/usr/local/nginx/logs/nginx.pid") - # Get the charm directory dynamically CHARM_DIR = Path(__file__).parent.parent STATIC_SOURCE_DIR = CHARM_DIR / "src" / "static" +CONFIG_FILE = pathops.LocalPath("/etc/nginx/nginx.conf") +PID_FILE = pathops.LocalPath(CHARM_DIR / "nginx.pid") def ensure_config() -> bool: """Ensure that nginx is configured. Return True if any changes were made.""" @@ -39,6 +38,7 @@ http {{ listen 80; root '{STATIC_SOURCE_DIR}'; location / {{ + autoindex on; try_files $uri $uri/ @external; }} location @external {{ @@ -54,7 +54,9 @@ def install() -> None: """Install nginx apt package.""" apt.update() apt.add_package("nginx", "1.18.0-6ubuntu14.7") - + subprocess.check_output(["service", "nginx", "stop"]) + os.remove("/etc/nginx/nginx.conf") + os.unlink("/etc/nginx/sites-enabled/default") def is_installed() -> bool: """Check if nginx is installed.""" diff --git a/src/static/index.html b/src/static/index.html new file mode 100644 index 0000000..524287f --- /dev/null +++ b/src/static/index.html @@ -0,0 +1,53 @@ + + +
+ + +Welcome! This is a Flutter artifacts hosting proxy.
+It serves local Flutter artifacts first, and falls back to Google's storage servers for files not found locally.
+https://storage.googleapis.com