dockerisation
This commit is contained in:
parent
dfb8eb6236
commit
cda63eddba
|
@ -0,0 +1,51 @@
|
|||
# Symfony
|
||||
APP_ENV=PROD
|
||||
APP_SECRET=changemeinenvlocal
|
||||
#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
|
||||
#TRUSTED_HOSTS='^(localhost|example\.com)$'
|
||||
|
||||
|
||||
# Basic
|
||||
APP_WEBURL=localhost:8000
|
||||
APP_AUTH=OAUTH
|
||||
APP_ALIAS=/
|
||||
APP_NAME=Ninegitea
|
||||
APP_CRON=1
|
||||
APP_ADMINS='["admin"]'
|
||||
|
||||
|
||||
# GITEA
|
||||
GITEA_URL=https://forge.cadoles.com
|
||||
|
||||
# OAUTH
|
||||
OAUTH_CLIENTID=b7797320-d5ca-45f8-9aa1-8aae8fb9b229
|
||||
OAUTH_CLIENTSECRET=gto_aguhtokmdl7mmplfox3fgk5wnaoraaqgd4suj5yghmgxh4aszhtq
|
||||
OAUTH_LOGINURL=https://forge.cadoles.com/login/oauth/authorize
|
||||
OAUTH_LOGOUTURL=https://forge.cadoles.com/user/logout
|
||||
OAUTH_TOKENURL=https://forge.cadoles.com/login/oauth/access_token
|
||||
|
||||
# BDD
|
||||
DATABASE_HOST=mariadb
|
||||
DATABASE_NAME=ninegitea
|
||||
DATABASE_USER=user
|
||||
DATABASE_PASSWORD=changeme
|
||||
|
||||
|
||||
|
||||
# MAIL sendmail / smtp
|
||||
MAILER_METHOD=sendmail
|
||||
MAILER_URL=
|
||||
MAILER_NOREPLY=noreply@noreply.fr
|
||||
|
||||
|
||||
# WEBSOCKET
|
||||
WSS_USE=0
|
||||
WSS_PORT=5588
|
||||
|
||||
|
||||
# Proxy
|
||||
PROXY_USE=0
|
||||
PROXY_HOST=
|
||||
PROXY_PORT=
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
|
||||
###> symfony/framework-bundle ###
|
||||
/.env.local
|
||||
/.env.local.php
|
||||
/.env.*.local
|
||||
/docker-compose.override.yml
|
||||
/config/secrets/prod/prod.decrypt.private.php
|
||||
/public/bundles/
|
||||
/var/
|
||||
/vendor/
|
||||
###< symfony/framework-bundle ###
|
||||
|
||||
###> symfony/phpunit-bridge ###
|
||||
.phpunit
|
||||
.phpunit.result.cache
|
||||
/phpunit.xml
|
||||
###< symfony/phpunit-bridge ###
|
||||
|
||||
###> symfony/webpack-encore-bundle ###
|
||||
/node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
###< symfony/webpack-encore-bundle ###
|
||||
|
||||
.key
|
||||
/scripts/proxy.sh
|
||||
/uploads
|
||||
!/public/uploads/avatar
|
||||
/public/uploads/avatar/*
|
||||
!/public/uploads/avatar/admin.jpg
|
||||
!/public/uploads/avatar/noavatar.jpg
|
||||
!/public/uploads/avatar/system.jpg
|
||||
!/public/uploads/avatar
|
||||
/public/uploads/logo/*
|
||||
!/public/uploads/logo/logo.png
|
||||
/public/uploads/ckeditor
|
26
Makefile
26
Makefile
|
@ -1,26 +0,0 @@
|
|||
################################
|
||||
# Makefile
|
||||
################################
|
||||
|
||||
SOURCE=ninegitea
|
||||
VERSION=1.0
|
||||
EOLE_VERSION=2.7
|
||||
EOLE_RELEASE=2.7.1
|
||||
PKGAPPS=web
|
||||
|
||||
################################
|
||||
# Début de zone à ne pas éditer
|
||||
################################
|
||||
|
||||
include eole.mk
|
||||
include apps.mk
|
||||
|
||||
################################
|
||||
# Fin de zone à ne pas éditer
|
||||
################################
|
||||
|
||||
# Makefile rules dedicated to application
|
||||
# if exists
|
||||
ifneq (, $(strip $(wildcard $(SOURCE).mk)))
|
||||
include $(SOURCE).mk
|
||||
endif
|
231
README.md
231
README.md
|
@ -1,231 +0,0 @@
|
|||
# Renommer le squelette
|
||||
## Dupliquer nineskeletor et renommer en nineXXXX
|
||||
Puis effectuer les changement suivants
|
||||
- Renommer db/nineskeletor-create-0.sql en db/nineXXXX-create-0.sql
|
||||
- Modifier db/nineXXXX-create-0.sql et changer le nom de la base de données en nineXXXX
|
||||
- Renommer dicos/90_nineskeletor.xml en dicos/90_nineXXXX.xml
|
||||
- Modifier dicos/nineXXXX-nineXXXX.xml et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer logrotate/nineskeletor en logrotate/nineXXXX
|
||||
- Modifier logrotate/nineXXXX et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer postservice/90-nineskeletor en postservice/90-nineXXXX
|
||||
- Modifier postservice/90-nineXXXX et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer pretemplate/25-nineskeletor en pretemplate/25-nineXXXX
|
||||
- Modifier pretemplate/25-nineXXXX et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer src/nineskeletor-1.0 en src/nineXXXX-1.0
|
||||
- Modifier src/nineXXXX-1.0/webpack.config.js et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer sso/filtres/nineskeletor.ini en sso/filtres/nineXXXX.ini
|
||||
- Renommer sso/filtres/nineskeletor_apps.ini en sso/filtres/nineXXXX_apps.ini
|
||||
- Modifier sso/filtres/nineXXXX_apps.ini et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer tmpl/nineskeletor.cron en tmpl/nineXXXX.cron
|
||||
- Modifier tmpl/nineXXXX.cron et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer tmpl/nineskeletor-apache.conf en tmpl/nineXXXX-apache.conf
|
||||
- Modifier tmpl/nineXXXX-apache.conf et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer tmpl/nineskeletor-db.yml en tmpl/nineXXXX-db.yml
|
||||
- Modifier tmpl/nineXXXX-db.yml et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer tmpl/nineskeletor-env.local en tmpl/nineXXXX-env.local
|
||||
- Modifier tmpl/nineXXXX-env.local et remplacer tout les nineskeletor en nineXXXX
|
||||
- Renommer tmpl/nineskeletor-proxy.sh en tmpl/nineXXXX-proxy.sh
|
||||
- Modifier Makefile et remplacer tout les nineskeletor en nineXXXX
|
||||
- Remplacer logo public/uploads/logo/logo.png
|
||||
|
||||
## Compilier les asset
|
||||
- apt-get install npm
|
||||
- si proxy
|
||||
- npm config set proxy "http://monproxyurl:monproxyport"
|
||||
- npm config set https-proxy "http://monproxyurl:monproxyport"
|
||||
- npm install -g yarn
|
||||
- yarn install
|
||||
- yarn encore dev
|
||||
- yarn encore prod
|
||||
|
||||
# Description du squelette
|
||||
|
||||
## Bundle
|
||||
- DebugBundle
|
||||
- DoctrineBundle
|
||||
- DoctrineMigrationsBundle
|
||||
- FOSCKEditorBundle
|
||||
- FOSRestBundle
|
||||
- FrameworkBundle
|
||||
- KnpSnappyBundle
|
||||
- MakerBundle
|
||||
- MonologBundle
|
||||
- NelmioApiDocBundle
|
||||
- OneupUploaderBundle
|
||||
- SecurityBundle
|
||||
- SensioFrameworkExtraBundle
|
||||
- SwiftmailerBundle
|
||||
- TetranzSelect2EntityBundle
|
||||
- TwigBundle
|
||||
- TwigExtraBundle
|
||||
- WebProfilerBundle
|
||||
- WebpackEncoreBundle
|
||||
- ramsey/uuid
|
||||
- cboden/ratchet
|
||||
|
||||
|
||||
|
||||
## Asset
|
||||
|
||||
### Tag app
|
||||
- jQuery = https://www.npmjs.com/package/jquery
|
||||
- jqueryui = https://www.npmjs.com/package/jqueryui
|
||||
- bootstrap = https://www.npmjs.com/package/bootstrap
|
||||
- timepicki = https://www.npmjs.com/package/timepicki
|
||||
- datatables.net-bs4 = https://www.npmjs.com/package/datatables.net-bs4
|
||||
- fontawsome-free = https://www.npmjs.com/package/@fortawesome/fontawesome-free
|
||||
- bs-stepper = https://www.npmjs.com/package/bs-stepper
|
||||
- masonry-layout = https://www.npmjs.com/package/masonry-layout
|
||||
- react-slick = https://www.npmjs.com/package/react-slick
|
||||
- image-loaded = https://www.npmjs.com/package/image-loaded
|
||||
- moment = https://www.npmjs.com/package/moment
|
||||
- select2 = https://www.npmjs.com/package/select2
|
||||
- crop-select-js = https://www.npmjs.com/package/crop-select-js
|
||||
- spectrum-colorpicker2 = https://www.npmjs.com/package/spectrum-colorpicker2
|
||||
|
||||
|
||||
|
||||
### Tag fullcalendar
|
||||
- @fullcalendar/core = https://www.npmjs.com/package/@fullcalendar/core
|
||||
- @fullcalendar/interaction = https://www.npmjs.com/package/@fullcalendar/interaction
|
||||
- @fullcalendar/daygrid = https://www.npmjs.com/package/@fullcalendar/daygrid
|
||||
|
||||
### Tag dropzone
|
||||
- dropzone = https://www.npmjs.com/package/dropzone
|
||||
|
||||
|
||||
|
||||
## Parameters
|
||||
|
||||
Provient du template env.local
|
||||
- appEnv = PROD
|
||||
- appSecret = valeur du fichier .key autogénéré au premier reconfigure
|
||||
- appWeburl = Valeur du dicos web_url
|
||||
- appAuth = Valeur du dicos = CAS / SQL
|
||||
- appAlias = En dur l'alias web
|
||||
- appName = Nom de l'application
|
||||
- appCron = En dur à true pour activer le système de cron
|
||||
- appMasteridentity = Valeur du dicos = Ninegate / LDAP / SQL
|
||||
- appMasterurl = Si appMasteridentity la valeur du dicos correspondant à l'url du Ninegate maître
|
||||
- appMasterkey = Si appMasteridentity la valeur du dicos correspondant à la clé d'API du Ninegate maître
|
||||
- databaseName = En dur le nom de la base
|
||||
- databaseUser = En dur le user de la base
|
||||
- databasePassword = Autogénéré par le reconfigure
|
||||
- databaseHost = Valeur du dicos pour le host de la base
|
||||
- appMailmethod = Valeur du dicos soit sendmail soit smtp. sendmail par défaut si exim est activé sur le serveur
|
||||
- appMailurl = Si smtp url calculé combinant smtphost smtpport smtpencryption smtpauthmode smtpuser smtppwd
|
||||
- appMailnoreply = Valeur du dicos du noreplay
|
||||
- ldapModel = si masteridentity à LDAP soit open soit scribe
|
||||
- ldapHost = Valeur dicos Host LDAP
|
||||
- ldapPort = Valeur dicos Port LDAP
|
||||
- ldapUser = Valeur dicos User LDAP
|
||||
- ldapPassword = Valeur dicos Password LDAP
|
||||
- ldapBasedn = Valeur dicos Basedn LDAP
|
||||
- ldapUsername = si Scribe en dur sinon valeur du dicos champs annuaire utilisé comme username
|
||||
- ldapFirstname = si Scribe en dur sinon valeur du dicos champs annuaire utilisé comme firstname
|
||||
- ldapLastname = si Scribe en dur sinon valeur du dicos champs annuaire utilisé comme lastname
|
||||
- ldapEmail = si Scribe en dur sinon valeur du dicos champs annuaire utilisé comme email
|
||||
- ldapFiltergroup = si Scribe en dur sinon valeur du dicos filtre ldap de recherche des groupes
|
||||
- ldapFilteruser = si Scribe en dur sinon valeur du dicos filtre ldap des groupes
|
||||
- ldapAdmins = Liste des admins obligatoire = Admin + valeur dicos
|
||||
- casHost = Valeur dicos du host SSO
|
||||
- casPort = Valeur dicos du Porst SSO
|
||||
- casPath = Valeur dicos du Path SSO
|
||||
- casUsername = Valeur en dur correspondant au filtre sso du username
|
||||
- casEmail = Valeur en dur correspondant au filtre sso du email
|
||||
- casLastname = Valeur en dur correspondant au filtre sso du lastname
|
||||
- casFirstname = Valeur en dur correspondant au filtre sso du fistname
|
||||
- proxyUse = Valeur dicos utiliser oui/non un proxy
|
||||
- proxyHost = Si oui valeurs du dicos du host proxy
|
||||
- proxyPort = Si oui valeurs du dicos du post proxy
|
||||
- sondeUse = Valeur dicos utiliser oui/non une sonde statistique
|
||||
- sondeUrl = Si oui url de la sonde statistique
|
||||
|
||||
## Sécurité
|
||||
|
||||
4 rôles possibles
|
||||
- ROLE_ADMIN
|
||||
- ROLE_MODO
|
||||
- ROLE_MASTER
|
||||
- ROLE_USER
|
||||
|
||||
4 routes protégés
|
||||
- /user = accèssible à ROLE_USER / ROLE_MASTER / ROLE_MODO / ROLE_ADMIN
|
||||
- /master = accèssible à ROLE_MASTER / ROLE_MODO / ROLE_ADMIN
|
||||
- /modo = = accèssible à ROLE_MODO / ROLE_ADMIN
|
||||
- /admin = = accèssible à ROLE_ADMIN
|
||||
|
||||
## Job
|
||||
|
||||
Nineskeletor intègre un système de job.
|
||||
Ce système va exécuter des commandes symfony à interval régulier.
|
||||
De base les jobs suivants sont livrés :
|
||||
- app:sendMail = toutes les minutes = Execution du spool de mail en attente
|
||||
- app:dumpBdd = toutes les nuits à 2h00 = Dump de la base
|
||||
- app:purgeFile = toutes les nuits à 3h00 = Suppresion des fichiers obsolètes
|
||||
- app:synchroUsers = toutes les nuites à 3h00 = Synchronisation des comptes utilisateurs soit via LDAP soit via Ninegate
|
||||
|
||||
Pour ajouter un job à la listes, modifier la commande app:initCron qui sera exécutée à chaque reconfigure
|
||||
|
||||
## Service
|
||||
|
||||
- app.password.encoder = encodage password sur la methode que l'annuaire
|
||||
- app.upload.listener = action à réaliser sur upload via oneupload
|
||||
- app.upload.samename = permet d'uploader un fichier et préserver le nom de fichier via oneupload
|
||||
- app.ldap.service = fonction ldap
|
||||
- app.sendmail.transport = executuion du spool de mail via sendmail
|
||||
- app.mail.service = fonction envoit de mail
|
||||
- app.twig.extension = extention twig
|
||||
|
||||
|
||||
## Twig
|
||||
|
||||
### Twig Constantes
|
||||
|
||||
Variables globales twig reprises des parametres symfony
|
||||
- appAlias
|
||||
- appAuth
|
||||
- appName
|
||||
- appCron
|
||||
- appMasteridentity
|
||||
- sondeUse
|
||||
- sondeUrl
|
||||
|
||||
### Twig Extention
|
||||
|
||||
App\Twig\AppExtension
|
||||
- filtre = urlAvatar à placer avec user.avatar afin de définir l'url complète de l'avatar du user
|
||||
|
||||
### Twig Template de base
|
||||
|
||||
#### templates/base.html.twig
|
||||
|
||||
Deux paramétres non obligatoire
|
||||
- useheader = permet d'afficher ou non la bannière dans la page = false par défaut
|
||||
- usesidebar = permet d'afficher oun non la sidebar dans la page = false par défaut
|
||||
- usemonocolor = afin de placer uniquement la couleur dark sur la page
|
||||
Block
|
||||
- block encorelinktags = pour déclarer des encore_link_tags spécifique à la page (encorelinktags app est intégré de base)
|
||||
- block localstyle = pour déclarer des propriétés css spécifique à page (Include/style.css.twig est intégré de base)
|
||||
- block body = le corps de la page
|
||||
- block encorescripttags pour déclarer des encore_script_tags spécifique à la page (encorescripttags app est intégré de base)
|
||||
- block localjavascript = pour déclarer du js spécifique à la page (Include/javascript.js.twig est intégré de base)
|
||||
|
||||
#### templates/Include/style.css.twig
|
||||
|
||||
Style de l'applicaiton en surcouche de bootstrap
|
||||
|
||||
#### templates/Include/sidebar.html.twig
|
||||
|
||||
La sidebar de l'application quand elle est affichée
|
||||
|
||||
#### templates/Include/javascript.js.twig
|
||||
|
||||
Librairie js de l'application
|
||||
|
||||
- object a et button s'ils ont un attribut data-method et data_confirm proposeront une confirmation à l'utilisateur avant de poursuivre l'action
|
||||
- ModalLoad(idmodal,titre,url) = permet d'afficher en modal l'url indiqué en parametre. Par défaut on dispose de la modal #mymodal
|
||||
|
||||
#### templates/Form/fields.htms.twig
|
||||
|
||||
Mise en forme de champs de formulaire
|
64
apps.mk
64
apps.mk
|
@ -1,64 +0,0 @@
|
|||
#
|
||||
# NE PAS EDITER CE FICHIER
|
||||
#
|
||||
# Voir Makefile
|
||||
|
||||
|
||||
##########################
|
||||
# Application web envole #
|
||||
##########################
|
||||
ifneq (, $(filter oui web, $(PKGAPPS)))
|
||||
#
|
||||
# Sanity check
|
||||
#
|
||||
ifeq (, $(filter-out X.X, $(strip $(VERSION))))
|
||||
$(error $$(VERSION) variable has incorrect value '$(VERSION)')
|
||||
endif
|
||||
|
||||
# Where to store web application files
|
||||
WEB_PATH := $(DESTDIR)/var/www/html
|
||||
|
||||
# Envole
|
||||
sharenvole_PROG_DIR := $(DESTDIR)/usr/share/envole/$(SOURCE)
|
||||
|
||||
src_$(SOURCE)-$(VERSION)_REC_DIR := $(WEB_PATH)/$(SOURCE)
|
||||
src_plugins-$(VERSION)_REC_DIR := $(WEB_PATH)/$(SOURCE)/plugin
|
||||
src_lang-$(VERSION)_REC_DIR := $(WEB_PATH)/$(SOURCE)/lang
|
||||
|
||||
endif
|
||||
|
||||
##########################
|
||||
# Application EOLE flask #
|
||||
##########################
|
||||
ifneq (, $(filter flask, $(PKGAPPS)))
|
||||
#
|
||||
# Sanity check
|
||||
#
|
||||
ifeq (, $(filter-out XXX, $(strip $(FLASK_MODULE))))
|
||||
$(error $$(FLASK_MODULE) variable has incorrect value '$(FLASK_MODULE)')
|
||||
endif
|
||||
|
||||
ifeq (, $(strip $(wildcard src/$(FLASK_MODULE).conf)))
|
||||
$(error missing eoleflask configuration file 'src/$(FLASK_MODULE).conf')
|
||||
endif
|
||||
|
||||
# Everything is related to mount point
|
||||
APPS_MOUNT_POINT := $(shell sed -ne 's|^"MOUNT_POINT"[[:space:]]*:[[:space:]]*"/\([^"]*\)",|\1|p' \
|
||||
src/$(FLASK_MODULE).conf)
|
||||
|
||||
ifeq (, $(strip $(APPS_MOUNT_POINT)))
|
||||
$(error no "MOUNT_POINT" in eoleflask configuration file 'src/$(FLASK_MODULE).conf')
|
||||
endif
|
||||
|
||||
# eole-flask configuration
|
||||
src_DATA_DIR := $(DESTDIR)/etc/eole/flask/available
|
||||
|
||||
# Where to store flask application files
|
||||
FLASK_PATH := $(eole_DIR)/flask/$(APPS_MOUNT_POINT)
|
||||
|
||||
# static files
|
||||
src_$(FLASK_MODULE)_static_REC_DIR := $(FLASK_PATH)/static
|
||||
src_$(FLASK_MODULE)_templates_REC_DIR := $(FLASK_PATH)/templates
|
||||
src_$(FLASK_MODULE)_instance_REC_DIR := $(FLASK_PATH)/resources
|
||||
|
||||
endif
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
require('dropzone/dist/dropzone.css');
|
||||
const { Dropzone } = require("dropzone");
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var elt = document.getElementById('mydropzone');
|
||||
maxFiles=elt.getAttribute("data-maxFiles");
|
||||
if(maxFiles!=1) maxFiles=null;
|
||||
|
||||
var mydropzone = new Dropzone(elt, {
|
||||
acceptedMimeTypes: $(elt).data("acceptedMimeTypes"),
|
||||
maxFiles: maxFiles,
|
||||
init: function() {
|
||||
dropzoneinit(this);
|
||||
},
|
||||
success: function( file, response ){
|
||||
dropzonesuccess(file,response);
|
||||
},
|
||||
});
|
||||
window.mydropzone=mydropzone;
|
||||
});
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"type": "project",
|
||||
"license": "proprietary",
|
||||
"require": {
|
||||
"php": "^7.1.3",
|
||||
"ext-ctype": "*",
|
||||
"ext-iconv": "*",
|
||||
"cboden/ratchet": "^0.4.3",
|
||||
"doctrine/annotations": "^1.8",
|
||||
"friendsofsymfony/ckeditor-bundle": "^2.2",
|
||||
"friendsofsymfony/rest-bundle": "^3.0",
|
||||
"jasig/phpcas": "^1.3",
|
||||
"knplabs/knp-snappy-bundle": "^1.7",
|
||||
"mashape/unirest-php": "^3.0",
|
||||
"nategood/httpful": "^0.3.2",
|
||||
"nelmio/api-doc-bundle": "^3.6",
|
||||
"oneup/uploader-bundle": "^3.0",
|
||||
"ramsey/uuid": "^4.1",
|
||||
"sensio/framework-extra-bundle": "^5.1",
|
||||
"symfony/apache-pack": "^1.0",
|
||||
"symfony/asset": "5.1.*",
|
||||
"symfony/console": "5.1.*",
|
||||
"symfony/dotenv": "5.1.*",
|
||||
"symfony/expression-language": "5.1.*",
|
||||
"symfony/flex": "^1.3.1",
|
||||
"symfony/form": "5.1.*",
|
||||
"symfony/framework-bundle": "5.1.*",
|
||||
"symfony/http-client": "5.1.*",
|
||||
"symfony/intl": "5.1.*",
|
||||
"symfony/lock": "5.1.*",
|
||||
"symfony/mailer": "5.1.*",
|
||||
"symfony/maker-bundle": "^1.14",
|
||||
"symfony/monolog-bundle": "^3.5",
|
||||
"symfony/orm-pack": "^1.0",
|
||||
"symfony/process": "5.1.*",
|
||||
"symfony/profiler-pack": "^1.0",
|
||||
"symfony/security-bundle": "5.1.*",
|
||||
"symfony/serializer-pack": "*",
|
||||
"symfony/swiftmailer-bundle": "^3.4",
|
||||
"symfony/translation": "5.1.*",
|
||||
"symfony/twig-pack": "*",
|
||||
"symfony/validator": "5.1.*",
|
||||
"symfony/web-link": "5.1.*",
|
||||
"symfony/webpack-encore-bundle": "^1.7",
|
||||
"symfony/yaml": "5.1.*",
|
||||
"tetranz/select2entity-bundle": "^3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/debug-pack": "*",
|
||||
"symfony/test-pack": "*"
|
||||
},
|
||||
"config": {
|
||||
"preferred-install": {
|
||||
"*": "dist"
|
||||
},
|
||||
"sort-packages": true
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"App\\": "src/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"App\\Tests\\": "tests/"
|
||||
}
|
||||
},
|
||||
"replace": {
|
||||
"paragonie/random_compat": "2.*",
|
||||
"symfony/polyfill-ctype": "*",
|
||||
"symfony/polyfill-iconv": "*",
|
||||
"symfony/polyfill-php71": "*",
|
||||
"symfony/polyfill-php70": "*",
|
||||
"symfony/polyfill-php56": "*"
|
||||
},
|
||||
"scripts": {
|
||||
"auto-scripts": {
|
||||
"cache:clear": "symfony-cmd",
|
||||
"cache:clear --env=prod": "symfony-cmd",
|
||||
"assets:install %PUBLIC_DIR%": "symfony-cmd"
|
||||
},
|
||||
"post-install-cmd": [
|
||||
"@auto-scripts"
|
||||
],
|
||||
"post-update-cmd": [
|
||||
"@auto-scripts"
|
||||
]
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/symfony": "*"
|
||||
},
|
||||
"extra": {
|
||||
"symfony": {
|
||||
"allow-contrib": true,
|
||||
"require": "5.1.*"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
framework:
|
||||
secret: '%env(APP_SECRET)%'
|
||||
#csrf_protection: true
|
||||
#http_method_override: true
|
||||
|
||||
# Enables session support. Note that the session will ONLY be started if you read or write from it.
|
||||
# Remove or comment this section to explicitly disable session support.
|
||||
session:
|
||||
name: '%env(APP_NAME)%'
|
||||
handler_id: null
|
||||
gc_probability: null
|
||||
cookie_secure: auto
|
||||
cookie_samesite: lax
|
||||
|
||||
esi: true
|
||||
#fragments: true
|
||||
php_errors:
|
||||
log: true
|
||||
|
||||
|
||||
validation: { enable_annotations: true }
|
|
@ -1,5 +0,0 @@
|
|||
|
||||
|
||||
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
|
||||
CREATE DATABASE ninegitea DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
|
||||
|
|
@ -1,170 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<creole>
|
||||
<files>
|
||||
<file filelist='ninegitea' name='/etc/eole/eole-db.d/ninegitea-db.yml' rm='True' mkdir='True'/>
|
||||
<file filelist='ninegitea_nginx' name='/etc/nginx/web.d/ninegitea.conf' source='ninegitea-nginx.conf' rm='True' mkdir='True' />
|
||||
</files>
|
||||
|
||||
<containers>
|
||||
<container name='web'>
|
||||
<!--
|
||||
<package>ninegitea-apps</package>
|
||||
-->
|
||||
|
||||
<!-- service de configuration apache -->
|
||||
<service method="apache" servicelist="ninegitea">ninegitea</service>
|
||||
|
||||
<!-- template -->
|
||||
<file filelist='ninegitea' name='/etc/apache2/sites-available/ninegitea' source='ninegitea-apache.conf' />
|
||||
<file filelist='ninegitea' name='/var/www/html/ninegitea/.env.local' source='ninegitea-env.local' rm='True'/>
|
||||
<file filelist='ninegitea' name='/etc/cron.d/ninegitea' source='ninegitea.cron' rm='True'/>
|
||||
</container>
|
||||
</containers>
|
||||
|
||||
<variables>
|
||||
<family name='ninegitea'>
|
||||
<variable name="ninegate_test_ninegate" type="oui/non" hidden='True' exists='False'><value>non</value></variable>
|
||||
<variable name="activer_revprox" type="oui/non" description="Activer le reverse proxy Nginx" hidden='True' exists='False'><value>non</value></variable>
|
||||
|
||||
<variable name='activer_ninegitea' type='oui/non' description='Activer Ninegitea'>
|
||||
<value>oui</value>
|
||||
</variable>
|
||||
|
||||
<variable type='string' name='ninegitea_gitea_url' description="Gitea URL" mandatory='True' />
|
||||
|
||||
<variable type='string' name='ninegitea_oauth_clientid' description="oAuth Client ID" mandatory='True' />
|
||||
<variable type='string' name='ninegitea_oauth_clientsecret' description="oAuth Client Secret" mandatory='True' />
|
||||
<variable type='string' name='ninegitea_oauth_loginurl' description="oAuth Client Login URL" mandatory='True' />
|
||||
<variable type='string' name='ninegitea_oauth_logouturl' description="oAuth Client Logout URL" mandatory='True' />
|
||||
<variable type='string' name='ninegitea_oauth_tokenurl' description="oAuth Client Token URL" mandatory='True' />
|
||||
|
||||
|
||||
<!-- EMAIL -->
|
||||
<variable type='string' name='ninegitea_noreply' description='Adresse mail utilisé pour le noreply' mandatory='True' />
|
||||
<variable type="oui/non" name='ninegitea_activer_localmail' description="Utiliser le serveur d'envoi de mail local" mandatory='True'>
|
||||
<value>oui</value>
|
||||
</variable>
|
||||
<variable type='string' name='ninegitea_smtphost' description='Host du serveur SMTP' mandatory='True' />
|
||||
<variable type='string' name='ninegitea_smtpport' description='Port du serveur SMTP' mandatory='True' />
|
||||
<variable type='string' name='ninegitea_smtpuser' description='Compte du serveur SMTP' mandatory='True' />
|
||||
<variable type='string' name='ninegitea_smtppwd' description='Mot de passe associé du compte SMTP' mandatory='True' />
|
||||
<variable type='string' name='ninegitea_smtpencryption' description='Type Encryptage du serveur SMTP' mandatory='True' />
|
||||
<variable type='string' name='ninegitea_smtpauthmode' description='Mode Authentification du serveur SMTP' mandatory='True' />
|
||||
|
||||
|
||||
<!-- BDD -->
|
||||
<variable type='string' name='ninegitea_db_mode' description='Serveur de bases de données à utiliser' mode='expert'/>
|
||||
<variable type='string' name='ninegitea_dbserver' description='Adresse du serveur de base de données' mode='expert'/>
|
||||
<variable type='number' name='ninegitea_dbport' description="Port d'écoute du serveur de base de données" mode='expert'/>
|
||||
<variable type='string' name='ninegitea_allow_hosts' description="Hôtes autorisés à utiliser la base de données" multi='True' mode='expert'/>
|
||||
<variable type='string' name='ninegitea_dbuser' description='Utilisateur du serveur de base de données' mode='expert'/>
|
||||
<variable type='string' name='ninegitea_dbpass' description='Fichier de mot de passe du serveur' mode='expert'/>
|
||||
</family>
|
||||
|
||||
<separators>
|
||||
<separator name="ninegitea_noreply">Paramètres associés aux Mails</separator>
|
||||
<separator name="ninegitea_db_mode">Paramètres associés à la Base de Données</separator>
|
||||
</separators>
|
||||
</variables>
|
||||
|
||||
<constraints>
|
||||
<!-- AFFICHAGE EN FONCTION DE APACHE -->
|
||||
<condition name='hidden_if_in' source='activer_apache'>
|
||||
<param>non</param>
|
||||
<target type='filelist'>ninegitea</target>
|
||||
<target type='filelist'>ninegitea_nginx</target>
|
||||
<target type='servicelist'>ninegitea</target>
|
||||
</condition>
|
||||
|
||||
<!-- AFFICHAGE EN FONCTION DE REVERSE PROXY -->
|
||||
<condition name='hidden_if_in' source='activer_revprox'>
|
||||
<param>non</param>
|
||||
<target type='filelist'>ninegitea_nginx</target>
|
||||
</condition>
|
||||
|
||||
<!-- AFFICHAGE EN FONCTION DE ninegitea -->
|
||||
<condition name='hidden_if_in' source='activer_ninegitea'>
|
||||
<param>non</param>
|
||||
|
||||
<target type='variable'>ninegitea_gitea_url</target>
|
||||
<target type='variable'>ninegitea_oauth_clientid</target>
|
||||
<target type='variable'>ninegitea_oauth_clientsecret</target>
|
||||
<target type='variable'>ninegitea_oauth_loginurl</target>
|
||||
<target type='variable'>ninegitea_oauth_logouturl</target>
|
||||
<target type='variable'>ninegitea_oauth_tokenurl</target>
|
||||
|
||||
<target type='variable'>ninegitea_noreply</target>
|
||||
<target type='variable'>ninegitea_activer_localmail</target>
|
||||
<target type='variable'>ninegitea_smtphost</target>
|
||||
<target type='variable'>ninegitea_smtpport</target>
|
||||
<target type='variable'>ninegitea_smtpuser</target>
|
||||
<target type='variable'>ninegitea_smtppwd</target>
|
||||
<target type='variable'>ninegitea_smtpencryption</target>
|
||||
<target type='variable'>ninegitea_smtpauthmode</target>
|
||||
|
||||
<target type='variable'>ninegitea_db_mode</target>
|
||||
<target type='variable'>ninegitea_dbserver</target>
|
||||
<target type='variable'>ninegitea_dbport</target>
|
||||
<target type='variable'>ninegitea_allow_hosts</target>
|
||||
<target type='variable'>ninegitea_dbuser</target>
|
||||
<target type='variable'>ninegitea_dbpass</target>
|
||||
|
||||
<target type='filelist'>ninegitea</target>
|
||||
<target type='filelist'>ninegitea_nginx</target>
|
||||
<target type='servicelist'>ninegitea</target>
|
||||
</condition>
|
||||
|
||||
<!-- AFFICHAGE EN FONCTION DU MAIL -->
|
||||
<fill name='concat' target='ninegitea_noreply'>
|
||||
<param>noreply@</param>
|
||||
<param type='eole'>domaine_messagerie_etab</param>
|
||||
</fill>
|
||||
|
||||
<condition name='hidden_if_in' source='ninegitea_activer_localmail'>
|
||||
<param>oui</param>
|
||||
|
||||
<target type='variable'>ninegitea_smtphost</target>
|
||||
<target type='variable'>ninegitea_smtpport</target>
|
||||
<target type='variable'>ninegitea_smtpuser</target>
|
||||
<target type='variable'>ninegitea_smtppwd</target>
|
||||
<target type='variable'>ninegitea_smtpencryption</target>
|
||||
<target type='variable'>ninegitea_smtpauthmode</target>
|
||||
</condition>
|
||||
|
||||
|
||||
<!-- AFFICHAGE EN FONCTION DU MODE DE BDD -->
|
||||
<condition name='disabled_if_in' source='ninegitea_db_mode'>
|
||||
<param>local</param>
|
||||
<target type='variable'>ninegitea_dbserver</target>
|
||||
<target type='variable'>ninegitea_dbuser</target>
|
||||
<target type='variable'>ninegitea_dbport</target>
|
||||
<target type='variable'>ninegitea_dbpass</target>
|
||||
</condition>
|
||||
<condition name='disabled_if_in' source='ninegitea_db_mode'>
|
||||
<param>default</param>
|
||||
<target type='variable'>ninegitea_dbserver</target>
|
||||
<target type='variable'>ninegitea_dbuser</target>
|
||||
<target type='variable'>ninegitea_dbport</target>
|
||||
<target type='variable'>ninegitea_dbpass</target>
|
||||
<target type='variable'>ninegitea_allow_hosts</target>
|
||||
</condition>
|
||||
|
||||
|
||||
<!-- VALID EMUN DES DIFFRENTES COMBO -->
|
||||
<check name='valid_enum' target='ninegitea_smtpencryption'>
|
||||
<param>['tls', 'ssl', 'null']</param>
|
||||
</check>
|
||||
<check name='valid_enum' target='ninegitea_smtpauthmode'>
|
||||
<param>['plain', 'login', 'cram-md5', 'null']</param>
|
||||
</check>
|
||||
|
||||
<check name='valid_enum' target='ninegitea_db_mode'>
|
||||
<param>['default', 'externe', 'local']</param>
|
||||
</check>
|
||||
|
||||
</constraints>
|
||||
|
||||
<help>
|
||||
<variable name='activer_ninegitea'>Application kanban gitea</variable>
|
||||
</help>
|
||||
</creole>
|
|
@ -0,0 +1,29 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb
|
||||
container_name: ninegitea-mariadb
|
||||
restart: always
|
||||
ports:
|
||||
- "3306:3306"
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: changeme
|
||||
MYSQL_DATABASE: ninegitea
|
||||
MYSQL_USER: user
|
||||
MYSQL_PASSWORD: changeme
|
||||
volumes:
|
||||
- mariadb-data:/var/lib/mysql
|
||||
|
||||
ninegitea:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./misc/docker/Dockerfile
|
||||
container_name: ninegitea-app
|
||||
image: reg.cadoles.com/envole/ninegitea
|
||||
ports:
|
||||
- "8000:80"
|
||||
|
||||
volumes:
|
||||
mariadb-data:
|
||||
|
231
eole.mk
231
eole.mk
|
@ -1,231 +0,0 @@
|
|||
#
|
||||
# NE PAS EDITER CE FICHIER
|
||||
#
|
||||
# Utiliser <appli>.mk à inclure à la fin de Makefile
|
||||
|
||||
#################
|
||||
# Sanity checks #
|
||||
#################
|
||||
|
||||
ifeq (, $(DESTDIR))
|
||||
$(warning $$(DESTDIR) is empty, installation will be done in /)
|
||||
endif
|
||||
|
||||
ifeq (, $(filter-out XXX-XXX, $(strip $(SOURCE))))
|
||||
$(error $$(SOURCE) variable has incorrect value '$(SOURCE)')
|
||||
endif
|
||||
|
||||
ifeq (, $(filter-out 2.X, $(strip $(EOLE_VERSION))))
|
||||
$(error $$(EOLE_VERSION) variable has incorrect value '$(EOLE_VERSION)')
|
||||
endif
|
||||
|
||||
ifeq (, $(filter-out 2.X.Y, $(strip $(EOLE_RELEASE))))
|
||||
$(error $$(EOLE_RELEASE) variable has incorrect value '$(EOLE_RELEASE)')
|
||||
endif
|
||||
|
||||
#########################
|
||||
# Variables definitions #
|
||||
#########################
|
||||
|
||||
INSTALL := install
|
||||
INSTALL_DATA := install -m 644
|
||||
INSTALL_PROGRAM := install -m 755
|
||||
INSTALL_DIRECTORY := install -m 755 -d
|
||||
INSTALL_RECURSIVE := cp -dr --no-preserve=ownership
|
||||
|
||||
# Standard path
|
||||
bin_PROG_DIR := $(DESTDIR)/usr/bin
|
||||
sbin_PROG_DIR := $(DESTDIR)/usr/sbin
|
||||
man8_DATA_DIR := $(DESTDIR)/usr/share/man/fr.UTF-8/man8
|
||||
|
||||
# Base
|
||||
eole_DIR := $(DESTDIR)/usr/share/eole
|
||||
|
||||
ifeq ($(strip $(EOLE_VERSION)), 2.3)
|
||||
diagnose_PROG_DIR := $(eole_DIR)/diagnose/module
|
||||
else
|
||||
diagnose_PROG_DIR := $(eole_DIR)/diagnose/
|
||||
endif
|
||||
|
||||
# Creole
|
||||
creole_DIR := $(eole_DIR)/creole
|
||||
dicos_DATA_DIR := $(creole_DIR)/dicos
|
||||
tmpl_DATA_DIR := $(creole_DIR)/distrib
|
||||
preservice_PROG_DIR := $(eole_DIR)/preservice
|
||||
pretemplate_PROG_DIR := $(eole_DIR)/pretemplate
|
||||
posttemplate_PROG_DIR := $(eole_DIR)/posttemplate
|
||||
postservice_PROG_DIR := $(eole_DIR)/postservice
|
||||
ifeq ($(strip $(EOLE_VERSION)), 2.3)
|
||||
firewall_DATA_DIR := $(eole_DIR)/firewall
|
||||
endif
|
||||
bacula_restore_DATA_DIR := $(eole_DIR)/bacula/restore
|
||||
bareos_restore_DATA_DIR := $(eole_DIR)/bareos/restore
|
||||
bacula_fichier_DATA_DIR := $(DESTDIR)/etc/bacula/baculafichiers.d
|
||||
bareos_fichier_DATA_DIR := $(DESTDIR)/etc/bareos/bareosfichiers.d
|
||||
ifeq ($(strip $(EOLE_VERSION)), 2.3)
|
||||
schedule_pre_PROG_DIR := $(eole_DIR)/schedule/pre
|
||||
schedule_post_PROG_DIR := $(eole_DIR)/schedule/post
|
||||
else
|
||||
schedule_scripts_PROG_DIR := $(eole_DIR)/schedule/scripts
|
||||
endif
|
||||
extra_REC_DIR := $(creole_DIR)/extra
|
||||
|
||||
# Zéphir
|
||||
zephir_DATA_DIR := $(DESTDIR)/usr/share/zephir
|
||||
zephir_configs_DATA_DIR := $(zephir_DATA_DIR)/monitor/configs
|
||||
zephir_srv_DATA_DIR := $(zephir_configs_DATA_DIR)/services
|
||||
zephir_scripts_PROG_DIR := $(zephir_DATA_DIR)/scripts
|
||||
|
||||
# SSO
|
||||
sso_DATA_DIR := $(DESTDIR)/usr/share/sso
|
||||
sso_filtres_DATA_DIR := $(sso_DATA_DIR)/app_filters
|
||||
sso_user-info_DATA_DIR := $(sso_DATA_DIR)/user_infos
|
||||
|
||||
# EAD
|
||||
ead_DATA_DIR := $(DESTDIR)/usr/share/ead2/backend/config
|
||||
ead_actions_DATA_DIR := $(ead_DATA_DIR)/actions
|
||||
ead_perms_DATA_DIR := $(ead_DATA_DIR)/perms
|
||||
ead_roles_DATA_DIR := $(ead_DATA_DIR)/roles
|
||||
|
||||
# Program libraries goes under /usr/lib/<PROGRAM>/
|
||||
lib_$(SOURCE)_DATA_DIR := $(DESTDIR)/usr/lib/$(SOURCE)
|
||||
|
||||
# Scripts Eole
|
||||
scripts_PROG_DIR := $(eole_DIR)/sbin
|
||||
lib_eole_DATA_DIR := $(DESTDIR)/usr/lib/eole
|
||||
|
||||
# LDAP
|
||||
ldap_passwords_DATA_DIR := $(eole_DIR)/annuaire/password_files
|
||||
|
||||
# LXC
|
||||
lxc_DATA_DIR := $(eole_DIR)/lxc
|
||||
lxc_fstab_DATA_DIR := $(lxc_DATA_DIR)/fstab
|
||||
lxc_hosts_DATA_DIR := $(lxc_DATA_DIR)/hosts
|
||||
|
||||
# SQL
|
||||
sql_DATA_DIR := $(eole_DIR)/mysql/$(SOURCE)
|
||||
sql_gen_DATA_DIR := $(sql_DATA_DIR)/gen
|
||||
sql_updates_DATA_DIR := $(sql_DATA_DIR)/updates
|
||||
|
||||
sql_conf_gen_DATA_DIR := $(eole_DIR)/applications/gen
|
||||
sql_conf_passwords_DATA_DIR := $(eole_DIR)/applications/passwords
|
||||
sql_conf_updates_DATA_DIR := $(eole_DIR)/applications/updates/$(SOURCE)
|
||||
|
||||
# EoleDB sql directory
|
||||
db_DIR := $(eole_DIR)/db
|
||||
db_gen_DATA_DIR := $(eole_DIR)/db/$(SOURCE)/gen
|
||||
db_updates_DATA_DIR := $(eole_DIR)/db/$(SOURCE)/updates
|
||||
|
||||
# Certifs
|
||||
certs_DATA_DIR := $(eole_DIR)/certs
|
||||
|
||||
# Logrotate
|
||||
logrotate_DATA_DIR := $(DESTDIR)/etc/logrotate.d
|
||||
|
||||
# Cron
|
||||
cron_PROG_DIR := $(DESTDIR)/etc/cron.daily
|
||||
|
||||
# Python modules
|
||||
ifneq ($(DESTDIR),)
|
||||
PYTHON_OPTS := --root $(DESTDIR)
|
||||
endif
|
||||
|
||||
# Translation
|
||||
TRANSLATION_SRC := translation
|
||||
TRANSLATION_DEST := $(DESTDIR)/usr/share/locale
|
||||
PO_FILES = $(wildcard $(TRANSLATION_SRC)/*/*.po)
|
||||
MO_FOLDERS = $(addprefix $(TRANSLATION_DEST), $(addsuffix LC_MESSAGES,$(subst $(TRANSLATION_SRC),,$(dir $(PO_FILES)))))
|
||||
|
||||
#############################################
|
||||
# Common directories and files installation #
|
||||
#############################################
|
||||
|
||||
all:
|
||||
|
||||
$(MO_FOLDERS):
|
||||
$(INSTALL_DIRECTORY) $@
|
||||
|
||||
$(PO_FILES): $(MO_FOLDERS)
|
||||
msgfmt -o $(TRANSLATION_DEST)$(subst $(TRANSLATION_SRC),,$(addsuffix LC_MESSAGES,$(dir $@)))/$(notdir $(@:.po=.mo)) $@
|
||||
|
||||
install-lang: $(PO_FILES)
|
||||
|
||||
install:: install-dirs install-files install-lang
|
||||
|
||||
# $1 = command to run
|
||||
# $2 = source directory
|
||||
# $3 = destination directory
|
||||
define fc_install_file
|
||||
if [ -d $2 ]; then \
|
||||
for file in `ls -1 $2/`; do \
|
||||
$1 $2/$$file $3 || true; \
|
||||
done; \
|
||||
fi
|
||||
endef
|
||||
|
||||
##
|
||||
## Directory creation
|
||||
##
|
||||
|
||||
# use % to catch local name in $*
|
||||
# data, program and recursive directory require a corresponding
|
||||
# directory in local sources
|
||||
%_DATA_DIR %_PROG_DIR %REC_DIR:
|
||||
test ! -d $(subst _,/,$*) || $(INSTALL_DIRECTORY) $($@)
|
||||
|
||||
# Create the directory referenced by the variable without a local one.
|
||||
%_DIR:
|
||||
@: # do nothing
|
||||
|
||||
##
|
||||
## Install files present directly under data, program and recursive directories
|
||||
##
|
||||
|
||||
# $* : name of variable
|
||||
# $($*): value of variable
|
||||
%-instdata:
|
||||
$(call fc_install_file, $(INSTALL_DATA), $(subst _,/,$(subst _DATA_DIR,,$*)), $($*))
|
||||
|
||||
%-instprog:
|
||||
$(call fc_install_file, $(INSTALL_PROGRAM), $(subst _,/,$(subst _PROG_DIR,,$*)), $($*))
|
||||
|
||||
%-instrec:
|
||||
$(call fc_install_file, $(INSTALL_RECURSIVE), $(subst _,/,$(subst _REC_DIR,,$*)), $($*))
|
||||
|
||||
|
||||
# Use second expansion as variables may be created in included
|
||||
# Makefiles
|
||||
.SECONDEXPANSION:
|
||||
|
||||
# List of all directories
|
||||
installdirs_LIST = $(foreach V, $(filter %_DIR, $(.VARIABLES)), \
|
||||
$(if $(filter file, $(origin $(V))), \
|
||||
$(V)))
|
||||
# List of data directories
|
||||
installdata_LIST = $(filter %_DATA_DIR, $(installdirs_LIST))
|
||||
# List of program directories
|
||||
installprog_LIST = $(filter %_PROG_DIR, $(installdirs_LIST))
|
||||
# List of recursive directories
|
||||
installrec_LIST = $(filter %_REC_DIR, $(installdirs_LIST))
|
||||
|
||||
# Expand directories to create as dependency
|
||||
# Use double-colon to permit user to define additionnal install-dirs
|
||||
install-dirs:: $$(installdirs_LIST)
|
||||
|
||||
# Expand files to install as dependency
|
||||
# Use double-colon to permit user to define additionnal install-files
|
||||
install-files:: install-data-files install-prog-files install-rec-dirs
|
||||
|
||||
install-data-files: $$(patsubst %,%-instdata,$$(installdata_LIST))
|
||||
|
||||
install-prog-files: $$(patsubst %,%-instprog,$$(installprog_LIST))
|
||||
|
||||
install-rec-dirs: $$(patsubst %,%-instrec,$$(installrec_LIST))
|
||||
|
||||
# Installation of python modules
|
||||
ifeq ($(shell test -f setup.py && echo 0), 0)
|
||||
install-files::
|
||||
python setup.py install --no-compile --install-layout=deb $(PYTHON_OPTS)
|
||||
endif
|
||||
|
||||
.PHONY: install install-dirs install-files install-data-files install-prog-files install-rec-dirs
|
|
@ -1,13 +0,0 @@
|
|||
/var/www/html/ninegitea/var/log/*.log {
|
||||
su root www-data
|
||||
daily
|
||||
rotate 7
|
||||
size 900
|
||||
maxage 7
|
||||
compress
|
||||
dateext
|
||||
dateformat -%Y%m%d
|
||||
missingok
|
||||
create 644 www-data www-data
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
FROM reg.cadoles.com/envole/nineapache:7.4
|
||||
RUN apk add mariadb-client
|
||||
|
||||
RUN composer self-update --1
|
||||
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
|
||||
RUN yarn install
|
||||
RUN yarn encore dev
|
||||
RUN yarn encore prod
|
||||
|
||||
RUN mkdir -p /app/public/uploads
|
||||
RUN chown apache /app/public/uploads -R
|
||||
RUN chmod u+w /app/public/uploads -R
|
||||
|
||||
CMD /app/misc/script/reconfigure.sh && /etc/apache2/apache2.sh
|
||||
#CMD /etc/apache2/apache2.sh
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
set -eo pipefail
|
||||
|
||||
# Se positionner sur la racine du projet
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
cd ${DIR}
|
||||
cd ../..
|
||||
DIR=$(pwd)
|
||||
|
||||
# Installation des dépendances composer
|
||||
composer install --no-interaction
|
||||
|
||||
bin/console d:s:u --force --complete
|
||||
|
||||
exec $@
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"devDependencies": {
|
||||
"@symfony/webpack-encore": "^0.28.2",
|
||||
"core-js": "^3.0.0",
|
||||
"regenerator-runtime": "^0.13.2",
|
||||
"webpack-notifier": "^1.6.0"
|
||||
},
|
||||
"license": "UNLICENSED",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev-server": "encore dev-server",
|
||||
"dev": "encore dev",
|
||||
"watch": "encore dev --watch",
|
||||
"build": "encore production --progress"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^5.12.1",
|
||||
"@fullcalendar/core": "^4.4.0",
|
||||
"@fullcalendar/daygrid": "^4.4.0",
|
||||
"@fullcalendar/interaction": "^4.4.0",
|
||||
"@ttskch/select2-bootstrap4-theme": "^1.3.2",
|
||||
"bootstrap": "^4.4.1",
|
||||
"bs-stepper": "^1.7.0",
|
||||
"ckeditor": "^4.12.1",
|
||||
"crop-select-js": "^1.0.1",
|
||||
"datatables.net-bs4": "^1.10.20",
|
||||
"dropzone": "^6.0.0-beta.2",
|
||||
"encore": "^0.0.30-beta",
|
||||
"imagesloaded": "^4.1.4",
|
||||
"jquery": "^3.4.1",
|
||||
"jquery.flot": "^0.8.3",
|
||||
"jqueryui": "^1.11.1",
|
||||
"masonry-layout": "^4.2.2",
|
||||
"moment": "^2.24.0",
|
||||
"morris.js": "^0.5.0",
|
||||
"popper.js": "^1.16.1",
|
||||
"raphael": "^2.3.0",
|
||||
"select2": "^4.0.13",
|
||||
"slick-carousel": "^1.8.1",
|
||||
"spectrum-colorpicker2": "^2.0.0",
|
||||
"tempusdominus-core": "^5.0.3",
|
||||
"timepicki": "^2.0.1"
|
||||
}
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
#!/bin/bash
|
||||
CreoleRun "/var/www/html/ninegitea/scripts/reconfigure.sh" web
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/bash
|
||||
CreoleRun "/var/www/html/ninegitea/scripts/genkey.sh" web
|
||||
exit 0
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
@keyframes passing-through{0%{opacity:0;transform:translateY(40px)}30%,70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-40px)}}@keyframes slide-in{0%{opacity:0;transform:translateY(40px)}30%{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}10%{transform:scale(1.1)}20%{transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:1px solid rgba(0,0,0,.8);border-radius:5px;padding:20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:3em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(180deg,#eee,#ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid hsla(0,0%,78.4%,.8);background-color:hsla(0,0%,100%,.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:hsla(0,0%,100%,.4);padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{transform:scale(1.05);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{animation:passing-through 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;animation:slide-in 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px;background:rgba(0,0,0,.8);border-radius:50%}.dropzone .dz-preview .dz-error-mark svg,.dropzone .dz-preview .dz-success-mark svg{display:block;width:54px;height:54px;fill:#fff}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:20px;top:50%;margin-top:-10px;left:15%;right:15%;border:3px solid rgba(0,0,0,.8);background:rgba(0,0,0,.8);border-radius:10px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#fff;display:block;position:relative;height:100%;width:0;transition:width .3s ease-in-out;border-radius:17px}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;transition:opacity .3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#b10606;padding:.5em 1em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:"";position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b10606}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
body{font-family:sans-serif,Arial,Verdana,Trebuchet MS,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:12px;color:#333;background-color:#fff;margin:20px}.cke_editable{font-size:13px;line-height:1.6;word-wrap:break-word}blockquote{font-style:italic;font-family:Georgia,Times,Times New Roman,serif;padding:2px 0;border:0 solid #ccc}.cke_contents_ltr blockquote{padding-left:20px;padding-right:8px;border-left-width:5px}.cke_contents_rtl blockquote{padding-left:8px;padding-right:20px;border-right-width:5px}a{color:#0782c1}dl,ol,ul{*margin-right:0;padding:0 40px}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.2}hr{border:0;border-top:1px solid #ccc}img.right{float:right;margin-left:15px}img.left,img.right{border:1px solid #ccc;padding:5px}img.left{float:left;margin-right:15px}pre{white-space:pre-wrap;word-wrap:break-word;-moz-tab-size:4;tab-size:4}.marker{background-color:#ff0}span[lang]{font-style:italic}figure{text-align:center;outline:1px solid #ccc;background:rgba(0,0,0,.05);padding:10px;margin:10px 20px;display:inline-block}figure>figcaption{text-align:center;display:block}a>img{padding:1px;margin:1px;border:none;outline:1px solid #0782c1}.code-featured{border:5px solid red}.math-featured{padding:20px;box-shadow:0 0 2px #c80000;background-color:rgba(255,0,0,.05);margin:10px}.image-clean{border:0;background:none;padding:0}.image-clean>figcaption{font-size:.9em;text-align:right}.image-grayscale{background-color:#fff;color:#666}.image-grayscale img,img.image-grayscale{filter:grayscale(100%)}.embed-240p{max-width:426px;max-height:240px;margin:0 auto}.embed-360p{max-width:640px;max-height:360px;margin:0 auto}.embed-480p{max-width:854px;max-height:480px;margin:0 auto}.embed-720p{max-width:1280px;max-height:720px;margin:0 auto}.embed-1080p{max-width:1920px;max-height:1080px;margin:0 auto}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue