From 2a914817c0ce1f40d808852ad03d0126cf601d20 Mon Sep 17 00:00:00 2001 From: fomys Date: Thu, 9 May 2019 02:28:43 +0200 Subject: [PATCH] Suwako j'aime te faire chier --- PDMI/__init__.py | 1 + PDMI/blueprints/api/download/__init__.py | 12 +- PDMI/config.py | 4 +- PDMI/modules/panic/0.0.1.zip | Bin 0 -> 659 bytes PDMI/modules/panic/0.0.1/infos.json | 10 - PDMI/modules/panic/0.0.1/version.json | 13 + PDMI/modules/panic/0.0.2.zip | Bin 520 -> 0 bytes Pipfile | 21 +- Pipfile.lock | 46 ++- conf.sh | 393 +++++++++++++++++++---- 10 files changed, 409 insertions(+), 91 deletions(-) create mode 100644 PDMI/modules/panic/0.0.1.zip delete mode 100644 PDMI/modules/panic/0.0.1/infos.json create mode 100644 PDMI/modules/panic/0.0.1/version.json delete mode 100644 PDMI/modules/panic/0.0.2.zip diff --git a/PDMI/__init__.py b/PDMI/__init__.py index 8a39895..998d5f7 100644 --- a/PDMI/__init__.py +++ b/PDMI/__init__.py @@ -1,3 +1,4 @@ +#!/bin/python import mimetypes from flask import Flask, request, session diff --git a/PDMI/blueprints/api/download/__init__.py b/PDMI/blueprints/api/download/__init__.py index b641f56..0746eca 100644 --- a/PDMI/blueprints/api/download/__init__.py +++ b/PDMI/blueprints/api/download/__init__.py @@ -16,26 +16,26 @@ class ApiIndex(Resource): class ApiModuleList(Resource): def get(self): - modules = Module.query.filter().all() + modules = Modules.query.filter().all() return {module.name: [version.version for version in module.versions] for module in modules} class ApiModuleVersions(Resource): def get(self, module): - module = Module.query.filter_by(name=module).first_or_404() + module = Modules.query.filter_by(name=module).first_or_404() return {"versions": [version.version for version in module.versions]} class ApiModuleGet(Resource): def get(self, module, version): - module = Module.query.filter_by(name=module).first_or_404() + module = Modules.query.filter_by(name=module).first_or_404() versions = [version.version for version in module.versions] if version not in versions: abort(404) print(os.getcwd()) - if not os.path.exists(os.path.join("modules", module.name, version + ".zip")): - shutil.make_archive(os.path.join("modules", module.name, version), 'zip', - os.path.join("modules", module.name, version)) + if not os.path.exists(os.path.join("PDMI", "modules", module.name, version + ".zip")): + shutil.make_archive(os.path.join("PDMI", "modules", module.name, version), 'zip', + os.path.join("PDMI", "modules", module.name, version)) return send_from_directory( os.path.join("modules", module.name, ), version + ".zip" diff --git a/PDMI/config.py b/PDMI/config.py index d61dcd8..d6ab7e6 100644 --- a/PDMI/config.py +++ b/PDMI/config.py @@ -10,7 +10,9 @@ DEBUG = True # TODO # ====================================================================================================================== # =================================================== sqlalchemy ======================================================= # ====================================================================================================================== -SQLALCHEMY_DATABASE_URI = os.environ["DATABASE_URI"] +SQLALCHEMY_DATABASE_URI = "mysql://"+os.environ["DATABASE_USER"]+":"+os.environ["DATABASE_PASSWORD"]+\ + "@"+os.environ["DATABASE_HOST"]+":"+os.environ["DATABASE_PORT"]+"/"\ + +os.environ["DATABASE_NAME"] SQLALCHEMY_TRACK_MODIFICATIONS = False # ====================================================================================================================== diff --git a/PDMI/modules/panic/0.0.1.zip b/PDMI/modules/panic/0.0.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..91b0a2b12388b49fe249feeaa379821e95f224cb GIT binary patch literal 659 zcmWIWW@Zs#U|`^2_`tf-FQiZ;BOJ)v4a7V^T$Wl?oSC1emsOmfxBA)Bpnw1^Z(Xf( zXU+$23JNf~V0^_m;1VPE@+D$Ro-JMSOf`L(81vIrj!g~^mmGN%!XmCQVRq*_QKdN% zjRI{Q*P2#Db-eWasrr$lJFzXXqZ~Wl?s+ddUWBjhN z*ZCUtYs@%RdG_*@SDvpc{~lwx+VS?Lz#})gjT*0PEtPxcWE*_KM&`)+4po~4Ch7)1 z7hgVEz@W&J)uh>>Zn8;0cbihE{)P{qY=ergUtr}wuub_KrAOWf)fT(slHWShX#wQpBUx_x+`bxFj$CuEfJfy&2C*xx%PIQPv=A&*I3Q>o)KcoC zQxAQ{aa!f9%f=@gwvw64mIImZ|oV|9K#GYWu;2S{U19Byw&|_ z-?Pn9+I3r|@vg2s(#_#cXfw99?vr`J0QsVIO+K3wEKH% zl}q#Ivdg`zPM1#dn{4uO&ea9E)*6o<$<1`=%bl*cKggmiGxHV4wewFRqL{@MRxQ#x z=X#*vH>9*E8wR?nV2i`L&#Ne{;OVN^RAx%h%i&|2nxs z(6!FcSK)PEt>olaVhawJeQXqKc-JWYVMpili=QRtmH6}heX!{GRrL)M>v*@RPwt!) zzr!YH!&2 ; exit 1 ; fi + +eval set -- "${OPTS}" DIALOG=dialog -CONFIG_VARS="DATABASE_URI" +while true ; do + case "$1" in + --xdialog ) + which Xdialog && : || die 1 "Xdialog not found" + DIALOG=Xdialog + shift + ;; + --easter-egg) + die 0 "Suwako, je t'ai vu décortiquer le fichier" + ;; + -h | --help ) + show_help + end + shift + ;; + -- ) + shift + break + ;; + *) + echo "Internal error!" + exit 1 + ;; + esac +done set_env_var () { +load_config exec 3>&1 - source .env - load_config - local value=$($DIALOG \ + local value=$(${DIALOG} \ --backtitle "Configuration" \ --title $1 \ --inputbox "Veuillez insérez la nouvelle valeur de la variable ${1}:" \ @@ -24,31 +146,106 @@ set_env_var () { 2>&1 1>&3) local exit_status=$? exec 3>&- - close $exit_status - export $1=$value + export ${1}=$value save_config } -close () { - case $1 in - $DIALOG_CANCEL) - exit;; - $DIALOG_ESC) - exit;; +set_env_vars_cat () { + clear + CATEGORY=$1 + CATEGORY_VARS_NAME=${1}_VARS + CAT=${!CATEGORY_VARS_NAME} + CATEGORY_LIST=($CAT) + local OPTIONS="" + local COUNT=${#CATEGORY_LIST[@]} + for I in `seq 1 ${COUNT}`; + do + OPTIONS="$OPTIONS "${I}" "${CATEGORY_LIST[$(($I-1))]}"" + done + echo $OPTIONS + exec 3>&1 + selection=$(${DIALOG} \ + --backtitle "PDMI - Configuration" \ + --title "Set $CATEGORY vars" \ + --help-button \ + --menu "Choose an option" \ + -1 -1 0 \ + ${OPTIONS} \ + 2>&1 1>&3) + exit_status=$? + exec 3>&- + case ${exit_status} in + ${DIALOG_CANCEL}) + return + ;; + ${DIALOG_HELP}) + ;; + ${DIALOG_ESC}) + return + ;; esac + set_env_var ${CATEGORY_LIST[$(($selection-1))]} +} + +set_env_vars () { + local OPTIONS="" + local COUNT=`echo "$CONFIG_CATEGORIES" | wc -w` + for I in `seq 1 ${COUNT}`; + do + OPTIONS="$OPTIONS "${I}" "${CONFIG_CATEGORIES[$(($I-1))]}"" + done + exec 3>&1 + selection=$(${DIALOG} \ + --backtitle "PDMI - Configuration" \ + --title "Set configuration vars" \ + --help-button \ + --menu "Choose an option" \ + -1 -1 0 \ + ${OPTIONS} \ + 2>&1 1>&3) + exit_status=$? + exec 3>&- + case ${exit_status} in + ${DIALOG_CANCEL}) + return + ;; + ${DIALOG_HELP}) + local HELP="" + for NAME in ${!CONFIG_CATEGORIES_DESCRIPTION[@]}; do + HELP="$HELP\n${NAME} - ${CONFIG_CATEGORIES_DESCRIPTION[${NAME}]}" + done + echo ${HELP} + ${DIALOG} \ + --backtitle "PDMI - Set configuration vars" \ + --title "Set configuration vars - Help" \ + --msgbox "$HELP" \ + -1 -1 + ;; + ${DIALOG_ESC}) + return + ;; + esac + set_env_vars_cat $CONFIG_CATEGORIES } load_config () { - source .env + export $(cat .env | xargs) } save_config () { - export -p | grep -E "(${CONFIG_VARS})=" > .env + rm .env + for VAR in ${CONFIG_VARS} + do + if [[ -z ${!VAR} ]]; then + export ${VAR}=${VAR} + fi + echo ${VAR}=${!VAR} >> .env + done } bdd_config () { exec 3>&1 - local selection=$($DIALOG \ + local selection=$(${DIALOG} \ --backtitle "Base de donnée" \ --menu "Que souhaitez vous faire?" \ 0 0 0 \ @@ -58,9 +255,9 @@ bdd_config () { 2>&1 1>&3) local exit_status=$? exec 3>&- - close $exit_status + close ${exit_status} source .env - case $selection in + case ${selection} in 1) pipenv run python manage.py db init;; 2) @@ -72,7 +269,7 @@ bdd_config () { add_super_admin () { exec 3>&1 - local utilisateur=$($DIALOG \ + local utilisateur=$(${DIALOG} \ --backtitle "Utilitaires" \ --title "Administrateurs" \ --inputbox "Entrez le mail de l'utilisateur que vous voulez passer en superadministrateur" \ @@ -81,32 +278,32 @@ add_super_admin () { 2>&1 1>&3) local exit_status=$? exec 3>&- - close $exit_status + close ${exit_status} source .env pipenv run python manage.py set_superadmin -m "${utilisateur}" exit } -configuration () { - exec 3>&1 - local selection=$($DIALOG \ - --backtitle "Configuration" \ - --menu "Quelle variable modifier?" \ - 0 0 0 \ - "1" "DATABASE_URI" \ - 2>&1 1>&3) - exit_status=$? - exec 3>&- - close $exit_status - case $selection in - 1) - set_env_var "DATABASE_URI";; - esac -} +#configuration () { +# exec 3>&1 +# local selection=$($DIALOG \ +# --backtitle "Configuration" \ +# --menu "Quelle variable modifier?" \ +# 0 0 0 \ +# "1" "DATABASE_URI" \ +# 2>&1 1>&3) +# exit_status=$? +# exec 3>&- +# close $exit_status +# case $selection in +# 1) +# set_env_var "DATABASE_URI";; +# esac +#} utilitaires () { exec 3>&1 - selection=$($DIALOG \ + selection=$(${DIALOG} \ --backtitle "Utilitaires" \ --menu "Que voulez vous faire?" \ 0 0 0 \ @@ -115,8 +312,8 @@ utilitaires () { 2>&1 1>&3) exit_status=$? exec 3>&- - close $exit_status - case $selection in + close ${exit_status} + case ${selection} in 1) add_super_admin;; 2) @@ -124,32 +321,118 @@ utilitaires () { esac } -while true; do +check_config_file () { + clear + export $(cat .env | xargs) + rm .env + echo ${CONFIG_VARS} + for VAR in ${CONFIG_VARS} + do + echo ${VAR}=${!VAR} + if [[ -z ${!VAR} ]]; then + export ${VAR}=${VAR} + fi + echo ${VAR}=${!VAR} >> .env + done +} + +initialisation () { +: +} + +start () { + pipenv run python wsgy.py +} + +configuration () { exec 3>&1 - selection=$($DIALOG \ - --backtitle "Configuration" \ - --menu "Que souhaitez vous faire?" \ - 0 0 0 \ - "1" "Gestion de la base de donnée" \ - "2" "Configuration" \ - "3" "Utilitaires" \ - "4" "Démarre le serveur" \ - "5" "Quitter" \ + selection=$(${DIALOG} \ + --backtitle "PDMI - Configuration" \ + --title "Configuration" \ + --help-button \ + --menu "Choose an option" \ + -1 -1 0 \ + "1" "Check config file" \ + "2" "Set configuration" \ + "-" "" \ + "3" "Exit" \ 2>&1 1>&3) exit_status=$? exec 3>&- - close $exit_status - case $selection in + case ${exit_status} in + ${DIALOG_OK}) + ;; + ${DIALOG_CANCEL}) + return + ;; + ${DIALOG_HELP}) + ${DIALOG} \ + --backtitle "PDMI - Configuration" \ + --title "Configuration - Help" \ + --msgbox "Check config file - Check config file integrity +Set configuration - Set configuration" \ + -1 -1 + ;; + ${DIALOG_ESC}) + return + ;; + esac + case ${selection} in 1) - bdd_config;; + check_config_file + ;; + 2) + set_env_vars + ;; + 3) + break + ;; + esac +} + +# Main loop +while true; do + exec 3>&1 + selection=$(${DIALOG} \ + --backtitle "PDMI - Configuration" \ + --title "Configuration" \ + --help-button \ + --menu "Choose an option" \ + -1 -1 0 \ + "1" "Initialisation" \ + "2" "Configuration" \ + "3" "Start" \ + "-" "-" \ + "4" "Quit" \ + 2>&1 1>&3) + exit_status=$? + exec 3>&- + case ${exit_status} in + ${DIALOG_OK}) + ;; + ${DIALOG_CANCEL}) + eend 0 "End." + ;; + ${DIALOG_HELP}) + ${DIALOG} \ + --backtitle "PDMI - Configuration" \ + --title "Configuration - Help" \ + --msgbox "Initialisation - \n\nConfiguration - Configure usefull parameters, such as port, database uri, ..." \ + -1 -1 + ;; + ${DIALOG_ESC}) + eend 0 "End." + ;; + esac + close ${exit_status} + case ${selection} in + 1) + initialisation;; 2) configuration;; 3) - utilitaires;; + start;; 4) - source .env - pipenv run gunicorn --bind 0.0.0.0:5000 wsgy;; - 5) exit;; esac done