97 lines
2.1 KiB
Python
Executable file
97 lines
2.1 KiB
Python
Executable file
#!/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__)
|
|
|
|
SCANBUDDY_COMMAND = ["bash", f"{os.getcwd()}/scanbuddy.bash"]
|
|
|
|
|
|
@app.route("/")
|
|
def hello_world():
|
|
return "Hello, World! Yoyoyo"
|
|
|
|
|
|
@app.route("/scan")
|
|
def scan():
|
|
print("Scanning...")
|
|
command = SCANBUDDY_COMMAND + ["scan"]
|
|
|
|
duplex = request.args.get("duplex", "n") == 'y'
|
|
resolution = request.args.get("resolution", None)
|
|
|
|
if duplex:
|
|
print("Duplex: on")
|
|
command += ["-d"]
|
|
if resolution:
|
|
print(f"Res.: {int(resolution)}")
|
|
# turning the string to an int and back to a string should clean up the input
|
|
command += ["-r", f"{int(resolution)}"]
|
|
|
|
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():
|
|
print("Dispatching...")
|
|
command = SCANBUDDY_COMMAND + ["dispatch"]
|
|
|
|
# TODO: implement user
|
|
user = request.args.get("user", "")
|
|
|
|
result = subprocess.run(command, stdout=subprocess.PIPE, text=True)
|
|
output = result.stdout.strip()
|
|
|
|
print("Scanbuddy output: ")
|
|
print(output)
|
|
|
|
return output
|
|
|
|
|
|
@app.route("/unscan")
|
|
def unscan():
|
|
print("Unscanning...")
|
|
command = SCANBUDDY_COMMAND + ["unscan"]
|
|
|
|
result = subprocess.run(command, stdout=subprocess.PIPE, text=True)
|
|
output = result.stdout.strip()
|
|
|
|
print("Scanbuddy output: ")
|
|
print(output)
|
|
return output
|
|
|
|
|
|
@app.route("/clean")
|
|
def clean():
|
|
print("Cleaning...")
|
|
command = SCANBUDDY_COMMAND + ["clean"]
|
|
|
|
result = subprocess.run(command, stdout=subprocess.PIPE, text=True)
|
|
output = result.stdout.strip()
|
|
|
|
print("Scanbuddy output: ")
|
|
print(output)
|
|
return output
|
|
|
|
|
|
def create_app():
|
|
return app
|
|
|
|
|
|
def main():
|
|
from waitress import serve
|
|
serve(app, host="0.0.0.0", port=5000)
|
|
|
|
if __name__=='__main__':
|
|
main()
|