Merge branch 'dev' into dev

This commit is contained in:
Théophile Diot 2022-12-03 16:05:59 +01:00 committed by GitHub
commit ba9c16a5d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 91 additions and 81 deletions

View File

@ -68,7 +68,10 @@ class Database:
)
if sqlalchemy_string.startswith("sqlite"):
makedirs(dirname(sqlalchemy_string.split("///")[1]), exist_ok=True)
try:
makedirs(dirname(sqlalchemy_string.split("///")[1]), exist_ok=True)
except FileExistsError:
pass
elif "+" in sqlalchemy_string and "+pymysql" not in sqlalchemy_string:
splitted = sqlalchemy_string.split("+")
sqlalchemy_string = f"{splitted[0]}:{':'.join(splitted[1].split(':')[1:])}"
@ -763,6 +766,12 @@ class Database:
del tmp_config[key]
elif any(key.startswith(f"{s}_") for s in service_names):
del tmp_config[key]
else:
tmp_config[key] = (
{"value": value["value"], "method": "default"}
if methods is True
else value
)
services.append(tmp_config)

View File

@ -32,17 +32,7 @@ RUN dnf install -y python39-pip brotli brotli-devel wget gperftools-devel perl l
bash /tmp/bunkerweb/deps/install.sh && \
mkdir /usr/share/bunkerweb/deps/python
# Install python 3.10
RUN wget https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz && \
tar -xvf Python-3.10.8.tgz && \
cd Python-3.10.8 && \
./configure --enable-optimizations && \
make altinstall && \
cd .. && \
rm -rf Python-3.10.8 && \
rm -rf Python-3.10.8.tgz
RUN pip3.10 install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt
RUN pip3.9 install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt
# Copy files
# can't exclude deps from . so we are copying everything by hand
@ -70,6 +60,8 @@ RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www && \
mkdir -p /var/lib/bunkerweb && \
mkdir -p /etc/letsencrypt && \
#mkdir /var/www/html && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
#It's a find command that will find all files in the bunkerweb directory, excluding the ui/deps directory, and then chmod them to 0740.
@ -80,11 +72,11 @@ RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py /var/www && \
# Don't forget to add /var/www/html on the above line
find /usr/share/bunkerweb/core/*/jobs/* -type f -exec chmod 750 {} \; && \
pip3.10 install --no-cache-dir --upgrade pip && \
pip3.10 install wheel && \
pip3.9 install --no-cache-dir --upgrade pip && \
pip3.9 install wheel && \
mkdir -p /usr/share/bunkerweb/ui/deps/python && \
pip3.10 install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt && \
pip3.10 install --no-cache-dir gunicorn && \
pip3.9 install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt && \
pip3.9 install --no-cache-dir gunicorn && \
chmod 755 /usr/share/bunkerweb
# Copy Linux files

View File

@ -65,6 +65,8 @@ RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www/ && \
mkdir -p /var/lib/bunkerweb && \
mkdir -p /etc/letsencrypt && \
#mkdir /var/www/html && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
#It's a find command that will find all files in the bunkerweb directory, excluding the ui/deps directory, and then chmod them to 0740.

View File

@ -59,6 +59,8 @@ RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www/ && \
mkdir -p /var/lib/bunkerweb && \
mkdir -p /etc/letsencrypt && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type f -exec chmod 0740 {} \; && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type d -exec chmod 0750 {} \; && \

View File

@ -74,6 +74,8 @@ RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www/ && \
mkdir -p /var/lib/bunkerweb && \
mkdir -p /etc/letsencrypt && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type f -exec chmod 0740 {} \; && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type d -exec chmod 0750 {} \; && \

View File

@ -16,7 +16,7 @@ COPY src/common/gen/requirements.txt /tmp/req/requirements.txt.2
COPY src/common/db/requirements.txt /tmp/req/requirements.txt.3
RUN mkdir -p /usr/share/bunkerweb/deps && \
cat /tmp/req/requirements.txt /tmp/req/requirements.txt.1 /tmp/req/requirements.txt.2 /tmp/req/requirements.txt.3 > /tmp/bunkerweb/deps/requirements.txt && \
cat /tmp/req/requirements.txt /tmp/req/requirements.txt.1 /tmp/req/requirements.txt.2 /tmp/req/requirements.txt.3 > /usr/share/bunkerweb/deps/requirements.txt && \
rm -rf /tmp/req
# Nginx
@ -35,7 +35,7 @@ RUN apt update && \
chmod +x /tmp/bunkerweb/deps/install.sh && \
bash /tmp/bunkerweb/deps/install.sh && \
mkdir /usr/share/bunkerweb/deps/python && \
pip install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt
pip install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /usr/share/bunkerweb/deps/requirements.txt
# Copy files
# can't exclude deps from . so we are copying everything by hand
@ -63,6 +63,8 @@ RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www/ && \
mkdir -p /var/lib/bunkerweb && \
mkdir -p /etc/letsencrypt && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type f -exec chmod 0740 {} \; && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type d -exec chmod 0750 {} \; && \
@ -71,9 +73,10 @@ RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
find /usr/share/bunkerweb/core/*/jobs/* -type f -exec chmod 750 {} \; && \
pip install --no-cache-dir --upgrade pip && \
pip install wheel && \
mkdir -p /usr/share/bunkerweb/ui/deps/python && \
pip install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt && \
pip install --no-cache-dir gunicorn && \
#mkdir -p /usr/share/bunkerweb/ui/deps/python && \
#pip install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt && \
#pip install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /usr/share/bunkerweb/deps/requirements.txt && \
#pip install --no-cache-dir gunicorn && \
chmod 755 /usr/share/bunkerweb
# Copy Linux files

View File

@ -9,4 +9,4 @@
--maintainer "Bunkerity <contact at bunkerity dot com>"
--after-install /usr/share/bunkerweb/scripts/postinstall.sh
--after-remove /usr/share/bunkerweb/scripts/afterRemove.sh
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service /var/lib/bunkerweb=/var/lib/bunkerweb /etc/letsencrypt=/etc/letsencrypt

View File

@ -9,4 +9,4 @@
--maintainer "Bunkerity <contact at bunkerity dot com>"
--after-install /usr/share/bunkerweb/scripts/postinstall.sh
--after-remove /usr/share/bunkerweb/scripts/afterRemove.sh
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service /var/lib/bunkerweb=/var/lib/bunkerweb /etc/letsencrypt=/etc/letsencrypt

View File

@ -9,4 +9,4 @@
--maintainer "Bunkerity <contact at bunkerity dot com>"
--after-install /usr/share/bunkerweb/scripts/postinstall.sh
--after-remove /usr/share/bunkerweb/scripts/afterRemove.sh
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service /var/lib/bunkerweb=/var/lib/bunkerweb /etc/letsencrypt=/etc/letsencrypt

View File

@ -9,4 +9,4 @@
--maintainer "Bunkerity <contact at bunkerity dot com>"
--after-install /usr/share/bunkerweb/scripts/postinstall.sh
--after-remove /usr/share/bunkerweb/scripts/afterRemove.sh
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service /var/lib/bunkerweb=/var/lib/bunkerweb /etc/letsencrypt=/etc/letsencrypt

View File

@ -10,4 +10,4 @@
--after-remove /usr/share/bunkerweb/scripts/afterRemove.sh
--deb-systemd-auto-start /etc/systemd/system/bunkerweb.service
--deb-systemd-auto-start /etc/systemd/system/bunkerweb-ui.service
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /var/lib/bunkerweb=/var/lib/bunkerweb /etc/letsencrypt=/etc/letsencrypt

View File

@ -7,8 +7,9 @@ start_ui() {
set -a
. /etc/bunkerweb/ui.env
set +a
export FLASK_APP=/usr/share/bunkerweb/ui/main.py
python3 -m flask run --host=127.0.0.1 --port=7000
#export FLASK_APP=/usr/share/bunkerweb/ui/main.py
#python3 -m flask run --host=127.0.0.1 --port=7000
python3 -m gunicorn --bind=0.0.0.0:7000 --workers=1 --threads=2 --user ui --group ui main:app
}
# function to stop the UI

View File

@ -26,7 +26,7 @@ if ! id -u scheduler > /dev/null 2>&1; then
# Line below it's not working on Ubuntu 22.04
# Correct way to do it is to use useradd
adduser --uid 120 --gid 120 --disabled-password --gecos "" scheduler
#adduser -h /var/cache/nginx -s /bin/sh --group scheduler -D -H -u 101 scheduler
chown -R root:scheduler /usr/share/bunkerweb /var/cache/bunkerweb /var/lib/bunkerweb /etc/bunkerweb /var/tmp/bunkerweb
fi
#############################################################
@ -118,6 +118,7 @@ function reload()
if [ -f "$PID_FILE_PATH" ];
then
var=$(cat "$PID_FILE_PATH")
# Send signal to scheduler to reload
log "ENTRYPOINT" "" "Sending reload signal to scheduler ..."
kill -SIGHUP $var
result=$?

View File

@ -112,8 +112,8 @@ class JobScheduler(ApiCaller):
stdin=DEVNULL,
stderr=STDOUT,
env=self.__env,
user=101,
group=101,
user=120,
group=120,
)
except BaseException:
success = False
@ -237,3 +237,4 @@ class JobScheduler(ApiCaller):
)
return False
return ret

View File

@ -60,12 +60,15 @@ def imerge(a, b):
yield j
def handle_reload(signum, frame, env):
global run, scheduler, reloading
# Function to catch SIGHUP and reload the scheduler
def handle_reload(signum, frame):
global reloading, run, scheduler
reloading = True
try:
if scheduler is not None and run:
# Loading the environment variables from the .env file.
if scheduler.reload(dotenv_values(env)):
# Get the env by reading the .env file
env = dotenv_values("/var/tmp/bunkerweb/variables.env")
if scheduler.reload(env):
logger.info("Reload successful")
else:
logger.error("Reload failed")
@ -379,7 +382,6 @@ if __name__ == "__main__":
proc = subprocess_run(
# Reload nginx
["/etc/init.d/nginx", "reload"],
# ["nginx", "-s", "reload"],
stdin=DEVNULL,
stderr=STDOUT,
env=deepcopy(env),

View File

@ -320,17 +320,9 @@ class Download {
}
async sendFileToDL(jobName, fileName) {
const response = await fetch(
`${location.href}/jobs/download?job_name=${jobName}&file_name=${fileName}`
window.open(
`${location.href}/download?job_name=${jobName}&file_name=${fileName}`
);
if (response.status === 200) {
const res = await response.json();
//last update
return;
} else {
}
return null;
}
}

View File

@ -60,7 +60,6 @@ class Tabs {
this.desktopBtns = document.querySelectorAll(
`[${this.prefix}-tabs-desktop] button`
);
console.log(this.desktopBtns);
//MOBILE
this.mobileBtn = document.querySelector(`[${this.prefix}-mobile-select]`);
this.mobileBtnTxt = this.mobileBtn.querySelector(`span`);

View File

@ -1,8 +1,24 @@
{% set current_endpoint = url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-')
%}
{% set global_config =
config["CONFIG"].get_config() %}
{% set plugins = config["CONFIG"].get_plugins() %}
{% set global_config = config["CONFIG"].get_config() %}
{% set plugins = [{
"id": "general",
"order": 999,
"name": "General",
"description": "The general settings for the server",
"version": "0.1",
"settings": {
"SERVER_NAME": {
"context": "multisite",
"default": "www.example.com",
"help": "List of the virtual hosts served by bunkerweb.",
"id": "server-name",
"label": "Server name",
"regex": ".*",
"type": "text"
}
}
}] + config["CONFIG"].get_plugins() %}
<!-- plugin item -->
{% for plugin in plugins %}

View File

@ -1,6 +1,24 @@
{% set current_endpoint = url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-')
%}
{% set plugins = [{
"id": "general",
"order": 999,
"name": "General",
"description": "The general settings for the server",
"version": "0.1",
"settings": {
"SERVER_NAME": {
"context": "multisite",
"default": "www.example.com",
"help": "List of the virtual hosts served by bunkerweb.",
"id": "server-name",
"label": "Server name",
"regex": ".*",
"type": "text"
}
}
}] + config["CONFIG"].get_plugins() %}
<div {{current_endpoint}}-tabs class="col-span-12 grid grid-cols-12 {% if current_endpoint == 'services' %}mb-4{% endif %}">
<!-- desktop tabs -->
<div {{current_endpoint}}-tabs-desktop class="hidden md:block col-span-12">
@ -41,36 +59,6 @@
<!-- end general tab-->
{% endif %}
<!-- tabs -->
{%set plugin_name = {
"id": "name",
"order": "999",
"name": "Name",
"description": "The name of the service",
"version": "0.1",
"settings": {
"OLD_SERVER_NAME": {
"context": "multisite",
"default": "",
"help": "The current name used",
"id": "gzip-types",
"label": "Actual name",
"regex": "^.*$",
"type": "text"
},
"SERVER_NAME": {
"context": "multisite",
"default": "",
"help": "Change the current name by this one if wanted",
"id": "gzip-types",
"label": "New name",
"regex": "^.*$",
"type": "text"
}
}
} %}
{%set plugins = config["CONFIG"].get_plugins() %}
{{plugins}}
{% for plugin in plugins %} {% if current_endpoint == "services" and plugin["settings"]
and check_settings(plugin["settings"], "multisite") or current_endpoint == "global-config" and plugin["settings"]
and check_settings(plugin["settings"], "global") %}
@ -166,7 +154,7 @@
<!-- end general button-->
{% endif %}
{% for plugin in config["CONFIG"].get_plugins() %} {% if current_endpoint == "services" and plugin["settings"]
{% for plugin in plugins %} {% if current_endpoint == "services" and plugin["settings"]
and check_settings(plugin["settings"], "multisite") or current_endpoint == "global-config" and plugin["settings"]
and check_settings(plugin["settings"], "global") %}
<button