Compare commits
2 Commits
6fe9ba59a7
...
94fa825e67
Author | SHA1 | Date | |
---|---|---|---|
94fa825e67 | |||
c06ebc29dc |
26
overwrought_master.py
Normal file → Executable file
26
overwrought_master.py
Normal file → Executable file
|
@ -251,22 +251,34 @@ def post_pack():
|
|||
res.raise_for_status()
|
||||
mods_remote = res.json()
|
||||
mods = [mod for mod in mods if mod.filename not in mods_remote]
|
||||
files = {}
|
||||
for mod in mods:
|
||||
files[mod.filename] = open(os.path.join('mods', mod.filename), 'rb')
|
||||
files[config_master.modpack_name + '.html'] = open(
|
||||
config_master.modpack_name, 'rb')
|
||||
|
||||
for mod in mods:
|
||||
files = {}
|
||||
files[mod.filename] = open(os.path.join('mods', mod.filename), 'rb')
|
||||
res = requests.post(
|
||||
url=config_master.remote_addr + '/post',
|
||||
data=data,
|
||||
files=files
|
||||
)
|
||||
res.raise_for_status()
|
||||
files[mod.filename].close()
|
||||
print(f"{mod.filename} uploaded.")
|
||||
|
||||
|
||||
files = {}
|
||||
files['modpack.db'] = open('modpack.db', 'rb')
|
||||
files[config_master.modpack_name + '.html'] = open(
|
||||
config_master.modpack_name +'.html', 'rb')
|
||||
res = requests.post(
|
||||
url=config_master.remote_addr + '/post',
|
||||
data=data,
|
||||
files=files
|
||||
)
|
||||
res.raise_for_status()
|
||||
|
||||
for file in files.values():
|
||||
file.close()
|
||||
|
||||
print("modpack.db uploaded.")
|
||||
print(f"{config_master.modpack_name}.html uploaded.")
|
||||
print('Success!')
|
||||
|
||||
|
||||
|
|
38
overwrought_server.py
Normal file → Executable file
38
overwrought_server.py
Normal file → Executable file
|
@ -2,6 +2,7 @@
|
|||
"""
|
||||
The overwrought server, for exchanging mods from master to slave recipients.
|
||||
"""
|
||||
import os
|
||||
import json
|
||||
import sqlite3
|
||||
import threading
|
||||
|
@ -13,6 +14,22 @@ import config_server
|
|||
|
||||
app = Flask(__name__)
|
||||
app.config['db_lock'] = threading.Lock()
|
||||
os.makedirs('mods', exist_ok=True)
|
||||
|
||||
def init_db():
|
||||
"""
|
||||
If no database is found, a dummy database is created to allow the
|
||||
initial modpack upload to go smoothly.
|
||||
"""
|
||||
con = sqlite3.connect('modpack.db')
|
||||
cur = con.cursor()
|
||||
try:
|
||||
cur.execute("SELECT filename FROM mod").fetchone()
|
||||
except sqlite3.OperationalError:
|
||||
cur.execute("CREATE TABLE mod(filename TEXT)")
|
||||
con.commit()
|
||||
con.close()
|
||||
init_db()
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
|
@ -47,17 +64,20 @@ def post():
|
|||
if not argon2.verify(password, config_server.pw_hash):
|
||||
abort(401)
|
||||
|
||||
db = request.files.get('database')
|
||||
app.config.get('db_lock').acquire()
|
||||
db.save('modpack.db')
|
||||
app.config.get('db_lock').release()
|
||||
files = request.files.to_dict()
|
||||
if 'modpack.db' in files:
|
||||
db = request.files.get('database')
|
||||
app.config.get('db_lock').acquire()
|
||||
db.save('modpack.db')
|
||||
app.config.get('db_lock').release()
|
||||
files.pop('modpack.db')
|
||||
|
||||
summary = request.files.get(config_server.modpack_name + '.html')
|
||||
summary.save(config_server.modpack_name + '.html')
|
||||
if config_server.modpack_name + '.html' in files:
|
||||
summary = request.files.get(config_server.modpack_name + '.html')
|
||||
summary.save(config_server.modpack_name + '.html')
|
||||
files.pop(config_server.modpack_name + '.html')
|
||||
|
||||
for fname, file in request.files.items():
|
||||
if not fname.endswith('.jar'):
|
||||
continue
|
||||
for fname, file in files.items():
|
||||
file.save(os.path.join(config_server.mods_dir, fname))
|
||||
|
||||
def generate_hash(password):
|
||||
|
|
Loading…
Reference in New Issue
Block a user