add a flask server

This commit is contained in:
Prunebutt 2025-09-26 00:26:43 +02:00
parent e1a7632b40
commit f672c6c706
3 changed files with 88 additions and 5 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
*.pdf
__pycache__

View file

@ -7,14 +7,53 @@
nixpkgs,
} @ inputs: let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; config.allowUnfree = true;};
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
in {
packages."${system}".default = pkgs.writeShellApplication {
name = "hello_world";
devShells.${system}.default = pkgs.mkShell {
packages = with pkgs; [
python313
python313Packages.flask
python313Packages.waitress
];
shellHook = ''
python --version
exec zsh
'';
};
packages.${system} = let
scanbuddy = pkgs.writeShellApplication {
name = "scanbuddy-script";
runtimeInputs = with pkgs; [sane-backends brscan5 ghostscript];
text = builtins.readFile ./scanbuddy.bash;
};
wrapper = pkgs.writeShellApplication {
name = "scanbuddy-wrapper";
text =
/*
bash
*/
''
#!/usr/bin/env bash
readarray -d '_' args < <(printf "%s" "$1")
scanbuddy "''${args[@]}"
'';
};
package = pkgs.symlinkJoin {
name = "scanbuddy";
paths = [scanbuddy wrapper];
};
in {
default = package;
inherit scanbuddy;
inherit wrapper;
};
};
}

43
server.py Executable file
View file

@ -0,0 +1,43 @@
#!/usr/bin/env python3
# Run this stuff with `waitress-serve --port=5000 --call server:create_app`
import os
import subprocess
from flask import Flask, request
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello, World! Yoyoyo"
@app.route("/scan")
def scan():
command = ["bash", f"{os.getcwd()}/scanbuddy.bash", "scan"]
command += ["-d"] if (request.args.get("duplex", "n") == 'y') else []
result = subprocess.run(command, stdout=subprocess.PIPE, text=True)
output = result.stdout.strip()
print("Scanbuddy output: ")
print(output)
return output
# return f"Scanning {'duplex' if duplex == 'y' else ''}..."
@app.route("/dispatch")
def dispatch():
return "Dispatching..."
@app.route("/unscan")
def unscan():
return "Unscanning..."
def create_app():
return app
if __name__=='__main__':
from waitress import serve
serve(app, host="0.0.0.0", port=8080)