diff --git a/src/ninegate-1.0/.gitignore b/src/ninegate-1.0/.gitignore
index f0b8bd87..77814bb3 100644
--- a/src/ninegate-1.0/.gitignore
+++ b/src/ninegate-1.0/.gitignore
@@ -1,5 +1,6 @@
/.web-server-pid
/app/config/parameters.yml
+/app/config/template.yml
/src/Cadoles/CoreBundle/Command/data/core-init-01.sql
/build/
/phpunit.xml
diff --git a/src/ninegate-1.0/app/config/template.yml b/src/ninegate-1.0/app/config/template.yml
deleted file mode 100644
index db304ff2..00000000
--- a/src/ninegate-1.0/app/config/template.yml
+++ /dev/null
@@ -1,127 +0,0 @@
-# This file is auto-generated during the composer install
-parameters:
- # Determine qui est le maitre de l'identitité = SQL / LDAP / SSO
- # Si SQL cela veut dire que c'est l'applicatif qui gère les utilisateurs
- # Sinon la source est externe soit via un annuaire soit via des attributs venant d'un SSO
- # Si la source est externe de fait pas de module d'inscription ni de reset de password
- # Et pas de synchronisation vers un annuaire ou vers ePortail
- masteridentity: LDAP
-
- # Mode d'authentification soit SQL / LDAP / CAS / SAML
- # Pour l'instant SQL - CAS - SAML Reste à faire LDAP
- # Attention si le masteridentity est différent de SQL le mode d'authentification est forcement différent de SQL
- # Car aucune synchronisation des password n'est possible
- mode_auth: CAS
-
- # Mode de registration : none / byuser / byadmin
- # none = désactivation de l'inscription mais reset de password possible
- # byuser = aucune validation par un administrateur, l'utilisateur valide son inscription par lui-même
- # byadmin = validation de l'inscription par un administrateur, sauf si domaine de messagerie dans la liste blanche
- moderegistration: none
-
- # Activation module
- cron_activate: true
- portal_activate: true
-
- # Information de base de l'annuaire
- ldap_host: 172.27.7.61
- ldap_port: 389
- ldap_user: cn=admin,o=gouv,c=fr
- ldap_password: eole
- ldap_basedn: o=gouv,c=fr
-
- # Mise en page
- alias: ninegate
- libelle_etab: ldapbundle
- numero_etab: 0000000A
- colormain: 2c3e50 # Couleur principale
- fontcolorhover: FFFFFF # Couleur des polices sur fond de couleur principale
- keyterm: 8 # Taille mini du password
- labelniveau01: Ecole # Label singulier du niveau 01 d'organisation
- labelsniveau01: Ecoles # Label pluriel du niveau 01 d'organisation
- iconniveau01: fa-building # Icon du niveau 01 d'organisation
- labelsirenniveau01: SIREN # Label SIREN
- viewniveau02: false # Gérer un niveau 02 d'organisation
- labelniveau02: niveau02 # Label singulier du niveau 02 d'organisation
- labelsniveau02: niveaus02 # Label pluriel du niveau 02 d'organisation
- iconniveau02: fa-sitemap # Icon du niveau 02 d'organisation
- labelsiretniveau02: SIRET # Label SIRET
-
- # Si masteridentity est à SQL = où sont synchronisées les datas dans l'annuaire
- ldap_sync: false
- ldap_baseuser:
- ldap_baseniveau01:
- ldap_baseniveau02:
- ldap_basegroup:
-
- # Si masteridentity est à LDAP = quel est le modele d'organisation
- # Si open = rien de particulier
- # Si scribe = on génére des groupes correspondant au profil / classe / niveau / option
- ldap_template: scribe
-
- # Si masteridentity est à LDAP = quel champs sont à récupérer
- ldap_username: uid
- ldap_firstname: givenname
- ldap_lastname: sn
- ldap_email: mail
- ldap_usersadmin: [admin,prof.6a]
-
- eportail_sync: false
- eportail_url: # /eportail
- eportail_login: # /eportail/login.php
- eportail_database_host: # 172.27.7.64
- eportail_database_port: # 3306
- eportail_database_name: # eportail
- eportail_database_user: # eportail
- eportail_database_password: # "changme"
-
- # Si mode_auth = CAS
- cas_host: ldapbundle.ac-arno.fr
- cas_path:
- cas_port: 8443
-
- # Si mode_aut = SAML
- saml_entityid: 'http://dev.nuonet.cadoles'
- saml_logout_url: 'http://172.27.7.67:8088/idp/profile/Logout'
- saml_idps_list: ['http://172.27.7.67:8088/idp/shibboleth']
-
- # Si mode_auth = CAS ou SAML les attributs permettant de matché avec les utilisateurs
- user_attr_cas_username: username
- user_attr_cas_mail: email
- user_attr_cas_lastname: lastname
- user_attr_cas_firstname: firstname
-
- user_attr_saml_username: eduPersonPrincipalName
- user_attr_saml_mail: mail
- user_attr_saml_lastname: sn
- user_attr_saml_firstname: givenName
-
- mailer_port: '2525'
- mailer_encryption: null
- mailer_authmode: null
- noreply: noreply@ldapbundle.ac-arno.fr
-
-# Doctrine Configuration
-doctrine:
- dbal:
- default_connection: default
- connections:
- default:
- driver: pdo_mysql
- host: '%database_host%'
- port: '%database_port%'
- dbname: '%database_name%'
- user: '%database_user%'
- password: '%database_password%'
- charset: UTF8
- orm:
- default_entity_manager: default
- entity_managers:
- default:
- connection: default
- mappings:
- CadolesCoreBundle: ~
- CadolesCronBundle: ~
- CadolesPortalBundle: ~
-
-
\ No newline at end of file
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql b/src/ninegate-1.0/scripts/install/core-init-01.sql
similarity index 99%
rename from src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql
rename to src/ninegate-1.0/scripts/install/core-init-01.sql
index f055395b..ad7cab2e 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql
+++ b/src/ninegate-1.0/scripts/install/core-init-01.sql
@@ -8,7 +8,7 @@ INSERT IGNORE INTO `niveau01` (`id`, `label`, `siren`) VALUES
(-100, 'Interne', 'SIREN');
INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES
-(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}9tH17tlC86xamslwYLnhF4qiMaQqvbuL
+(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}yiDxhDNog19bkfbdXAX1PH2iZWUu5eGy
', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '130007107', 'simple');
diff --git a/src/ninegate-1.0/scripts/install/install.sh b/src/ninegate-1.0/scripts/install/install.sh
new file mode 100755
index 00000000..8387b218
--- /dev/null
+++ b/src/ninegate-1.0/scripts/install/install.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+echo "INSTALLATION NINEGATE HORS EOLE"
+cd /var/www/html/ninegate
+
+www_dir="/var/www/html"
+
+yes | cp scripts/apache/ninegate.conf /etc/apache2/sites-available/
+a2ensite ninegate
+service apache2 restart
+
+# Récuper les composer associés à la version de php installé
+version72=`php -r 'echo version_compare(phpversion(), "7.2.0", ">=");'`
+if [[ "$version72" == "1" ]]
+then
+ cp -rf /var/www/html/ninegate/scripts/php72/composer.json /var/www/html/ninegate/composer.json
+ cp -rf /var/www/html/ninegate/scripts/php72/composer.lock /var/www/html/ninegate/composer.lock
+else
+ version70=`php -r 'echo version_compare(phpversion(), "7.0.0", ">=");'`
+ if [[ "$version70" == "1" ]]
+ then
+ cp -rf /var/www/html/ninegate/scripts/php70/composer.json /var/www/html/ninegate/composer.json
+ cp -rf /var/www/html/ninegate/scripts/php70/composer.lock /var/www/html/ninegate/composer.lock
+ fi
+fi
+
+# Installation des dépendances composer
+composer install
+rm -f /var/www/html/ninegate/var/logs/dev.log
+
+# Permissions
+./perm.sh www-data
+
+# Nettoyage du cache
+rm /var/www/html/ninegate/var/cache -rf
+php bin/console cache:clear --env=prod --no-debug
+
+# Migration si nécessaire du schéma de la base
+php bin/console doctrine:schema:update --force --env=prod --no-debug
+
+# Insertion data de base
+php bin/console Core:InitData --env=prod
+php bin/console Cron:InitData --env=prod
+php bin/console Portal:InitData --env=prod
+
+# Passage des scripts
+php bin/console Core:Script --env=prod
+
+# Generation des assets
+bin/console assetic:dump --env=prod
+
+# Copie des polices du projet dans le rep web
+cp -rf src/Cadoles/CoreBundle/Resources/public/fonts web/
+
+bin/console Core:SetPassword admin admin
+
+# Permissions
+./perm.sh www-data
\ No newline at end of file
diff --git a/src/ninegate-1.0/scripts/install/ninegate.conf b/src/ninegate-1.0/scripts/install/ninegate.conf
new file mode 100644
index 00000000..d5ef51aa
--- /dev/null
+++ b/src/ninegate-1.0/scripts/install/ninegate.conf
@@ -0,0 +1,11 @@
+Alias /ninegate /var/www/html/ninegate/web
+
+
+ AllowOverride All
+ Order Allow,Deny
+ Allow from All
+ Options Indexes FollowSymLinks MultiViews
+ php_admin_flag allow_url_fopen On
+
+
+
diff --git a/src/ninegate-1.0/scripts/install/template.yml b/src/ninegate-1.0/scripts/install/template.yml
new file mode 100644
index 00000000..b165a49a
--- /dev/null
+++ b/src/ninegate-1.0/scripts/install/template.yml
@@ -0,0 +1,139 @@
+# This file is auto-generated during the composer install
+parameters:
+ # Determine qui est le maitre de l'identitité = SQL / LDAP / SSO
+ # Si SQL cela veut dire que c'est l'applicatif qui gère les utilisateurs
+ # Sinon la source est externe soit via un annuaire soit via des attributs venant d'un SSO
+ # Si la source est externe de fait pas de module d'inscription ni de reset de password
+ # Et pas de synchronisation vers un annuaire ou vers ePortail
+ masteridentity: SQL
+
+ # Mode d'authentification soit SQL / LDAP / CAS / SAML
+ # Pour l'instant SQL - CAS - SAML Reste à faire LDAP
+ # Attention si le masteridentity est différent de SQL le mode d'authentification est forcement différent de SQL
+ # Car aucune synchronisation des password n'est possible
+ mode_auth: SQL
+
+ # Mode de registration : none / byuser / byadmin
+ # none = désactivation de l'inscription mais reset de password possible
+ # byuser = aucune validation par un administrateur, l'utilisateur valide son inscription par lui-même
+ # byadmin = validation de l'inscription par un administrateur, sauf si domaine de messagerie dans la liste blanche
+ moderegistration: byadmin
+
+ # Activation module
+ cron_activate: true
+ portal_activate: true
+ module_activate: false
+ page_activate: false
+ item_activate: false
+ alert_activate: false
+ calendar_activate: false
+ blog_activate: false
+ project_activate: false
+ flux_activate: false
+ notice_activate: false
+
+ # Mise en page
+ weburl: localhost
+ alias: ninegate
+ libelle_etab: ninegate
+ numero_etab: ~
+ colormain: 2c3e50 # Couleur principale
+ fontcolorhover: FFFFFF # Couleur des polices sur fond de couleur principale
+ keyterm: 8 # Taille mini du password
+ labelniveau01: Département # Label singulier du niveau 01 d'organisation
+ labelsniveau01: Départements # Label pluriel du niveau 01 d'organisation
+ iconniveau01: fa-building # Icon du niveau 01 d'organisation
+ labelsirenniveau01: SIREN # Label SIREN
+ viewniveau02: true # Gérer un niveau 02 d'organisation
+ labelniveau02: Service # Label singulier du niveau 02 d'organisation
+ labelsniveau02: Services # Label pluriel du niveau 02 d'organisation
+ iconniveau02: fa-sitemap # Icon du niveau 02 d'organisation
+ labelsiretniveau02: SIRET # Label SIRET
+
+ mailer_port: '2525'
+ mailer_encryption: null
+ mailer_authmode: null
+ noreply: noreply@ninegate.fr
+
+ websocket_activate: false
+ websocket_host: localhost
+ websocket_port: 5555
+ websocket_portinterne: 5556
+
+ activate_widadminer: false
+ activate_widbalado: false
+ activate_widdokuwiki: false
+ activate_wideconnect: false
+ activate_widetherhome: false
+ activate_widfluxbb: false
+ activate_widgepi: false
+ activate_widglpi: false
+ activate_widgrr: false
+ activate_widkanboard: false
+ activate_widlimesurvey: false
+ activate_widmindmaps: false
+ activate_widmoodle: false
+ activate_widnextcloud: false
+ activate_widonlyoffice: false
+ activate_widopensondage: false
+ activate_widphpldapadmin: false
+ activate_widpiwik: false
+ activate_widroundcube: false
+ activate_widsacoche: false
+ activate_widwordpress: false
+
+ syncenvole_activate: false
+ widbalado_activate_syncenvole: false
+ widgepi_activate_syncenvole: false
+ widnextcloud_activate_syncenvole: false
+ widonlyoffice_sync: false
+ widpiwik_activate_syncenvole: false
+ widsacoche_activate_syncenvole: false
+
+
+
+ activate_widsonde: false
+ widsonde_url:
+
+ saml_entityid: 'http://discovery'
+ saml_logout_url: 'http://localhost:8088/idp/profile/Logout'
+ saml_idps_list: ['http://localhost:8088/idp/shibboleth']
+
+ ldap_sync: false
+ ldap_template: open
+ ldap_host: 127.0.0.1
+ ldap_port: 389
+ ldap_user: cn=admin,o=gouv,c=fr
+ ldap_password: ~
+ ldap_basedn: o=gouv,c=fr
+ ldap_baseuser:
+ ldap_baseniveau01:
+ ldap_baseniveau02:
+ ldap_basegroup:
+
+
+# Doctrine Configuration
+doctrine:
+ dbal:
+ default_connection: default
+ connections:
+ default:
+ driver: pdo_mysql
+ host: '%database_host%'
+ port: '%database_port%'
+ dbname: '%database_name%'
+ user: '%database_user%'
+ password: '%database_password%'
+ charset: UTF8
+ orm:
+ default_entity_manager: default
+ entity_managers:
+ default:
+ connection: default
+ mappings:
+ CadolesCoreBundle: ~
+ CadolesCronBundle: ~
+ CadolesPortalBundle: ~
+ CadolesWebsocketBundle: ~
+
+
\ No newline at end of file
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/PurgeFileCommand.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/PurgeFileCommand.php
index 1d8a5c25..8f449b4e 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/PurgeFileCommand.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/PurgeFileCommand.php
@@ -22,6 +22,7 @@ class PurgeFileCommand extends Command
private $output;
private $filesystem;
private $rootlog;
+ private $byexec;
protected function configure()
{
@@ -30,7 +31,8 @@ class PurgeFileCommand extends Command
->setDescription('Purge Files')
->setHelp('This command Purge the obsolete Files')
->addArgument('cronid', InputArgument::OPTIONAL, 'ID Cron Job')
- ->addArgument('lastchance', InputArgument::OPTIONAL, 'Lastchance to run the cron')
+ ->addArgument('lastchance', InputArgument::OPTIONAL, 'Lastchance to run the cron')
+ ->addArgument('byexec', InputArgument::OPTIONAL, 'By Cron:Exec')
;
}
@@ -43,6 +45,11 @@ class PurgeFileCommand extends Command
$this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
$alias = $this->container->getParameter('alias');
+ // Le script est-il executé via Cron:Exec
+ $this->byexec = $input->getArgument('byexec');
+ if($this->byexec=="") $this->byexec=false;
+ echo "pouet".$this->byexec;
+
$this->writelnred('');
$this->writelnred('== Core:PurgeFile');
$this->writelnred('==========================================================================================================');
@@ -368,9 +375,11 @@ class PurgeFileCommand extends Command
private function writelnred($string) {
$this->output->writeln(''.$string.'>');
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
+ if($this->byexec) $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n");
}
private function writeln($string) {
$this->output->writeln($string);
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
+ if($this->byexec) $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n");
}
}
diff --git a/src/ninegate-1.0/src/Cadoles/CronBundle/Command/CronexecCommand.php b/src/ninegate-1.0/src/Cadoles/CronBundle/Command/CronexecCommand.php
new file mode 100644
index 00000000..cb8c23fb
--- /dev/null
+++ b/src/ninegate-1.0/src/Cadoles/CronBundle/Command/CronexecCommand.php
@@ -0,0 +1,92 @@
+setName('Cron:Exec')
+ ->setDescription("Executer les commandes présente dans le bus des commandes à exécuter à la volet")
+ ;
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+
+ $this->container = $this->getApplication()->getKernel()->getContainer();
+ $this->em = $this->container->get('doctrine')->getEntityManager();
+ $this->output = $output;
+ $this->filesystem = new Filesystem();
+ $this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
+ echo $this->rootlog;
+ // On supprime le fichier de log spécifique à ce script
+ //$this->filesystem->remove($this->rootlog."exec.log");
+ $this->filesystem->dumpFile($this->rootlog.'exec.log', "");
+ $this->filesystem->chown($this->rootlog.'exec.log', "www-data");
+
+ $cronexecs=$this->em->getRepository("CadolesCronBundle:Cronexec")->findAll();
+ if($cronexecs) {
+ $this->writelnred('');
+ $this->writelnred('== Cron:Exec');
+ $this->writelnred('==========================================================================================================');
+
+ foreach($cronexecs as $cron) {
+ // Récupération de la commande
+ $command = $this->getApplication()->find($cron->getCommand());
+
+ // Réccuépration des parametres
+ $jsonparameter=json_decode($cron->getJsonargument(),true);
+
+ // Parametre id du cron actuel
+ $jsonparameter["cronid"]=$cron->getId();
+ $jsonparameter["byexec"]=true;
+
+ // Formater la chaine de parametre
+ $parameter = new ArrayInput($jsonparameter);
+
+ // Executer la commande
+ $returnCode=false;
+ try{
+ $returnCode = $command->run($parameter, $output);
+ }
+ catch(\Exception $e) {
+ $this->writelnred("JOB EN ERREUR");
+ }
+ }
+ }
+
+ return 1;
+ }
+
+ private function writelnred($string) {
+ $this->output->writeln(''.$string.'>');
+ $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
+ $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n");
+ }
+ private function writeln($string) {
+ $this->output->writeln($string);
+ $this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
+ $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n");
+ }
+}
diff --git a/src/ninegate-1.0/src/Cadoles/CronBundle/Command/MailCommand.php b/src/ninegate-1.0/src/Cadoles/CronBundle/Command/MailCommand.php
index 352431fb..ec395e55 100644
--- a/src/ninegate-1.0/src/Cadoles/CronBundle/Command/MailCommand.php
+++ b/src/ninegate-1.0/src/Cadoles/CronBundle/Command/MailCommand.php
@@ -42,7 +42,7 @@ class MailCommand extends ContainerAwareCommand
$this->filesystem = new Filesystem();
$this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
- $mailer_host = $this->getContainer()->getParameter('cron_activate');
+ $mailer_host = $this->getContainer()->getParameter('mailer_host');
$this->writelnred('');
$this->writelnred('== Cron:Mail');
diff --git a/src/ninegate-1.0/src/Cadoles/CronBundle/Controller/CronController.php b/src/ninegate-1.0/src/Cadoles/CronBundle/Controller/CronController.php
index 55f80111..98e69db3 100644
--- a/src/ninegate-1.0/src/Cadoles/CronBundle/Controller/CronController.php
+++ b/src/ninegate-1.0/src/Cadoles/CronBundle/Controller/CronController.php
@@ -172,6 +172,23 @@ class CronController extends Controller
]);
}
+ public function cronexecAction() {
+ return $this->render('CadolesCronBundle:Cron:exec.html.twig', [
+ 'useheader' => true,
+ 'usemenu' => false,
+ 'usesidebar' => true,
+ ]);
+ }
+
+ public function cronexecreadAction() {
+ $kernel = $this->get('kernel');
+ $path = $this->get('kernel')->getRootDir() . '/../var/logs/exec.log';
+ $content = file_get_contents($path);
+
+ $output["data"]=$content;
+ return new Response(json_encode($content), 200);
+ }
+
public function logAction(Request $request, $id)
{
$kernel = $this->get('kernel');
diff --git a/src/ninegate-1.0/src/Cadoles/CronBundle/Entity/Cronexec.php b/src/ninegate-1.0/src/Cadoles/CronBundle/Entity/Cronexec.php
new file mode 100644
index 00000000..3ebca4b2
--- /dev/null
+++ b/src/ninegate-1.0/src/Cadoles/CronBundle/Entity/Cronexec.php
@@ -0,0 +1,98 @@
+id;
+ }
+
+ /**
+ * Set command
+ *
+ * @param string $command
+ *
+ * @return Cronexec
+ */
+ public function setCommand($command)
+ {
+ $this->command = $command;
+
+ return $this;
+ }
+
+ /**
+ * Get command
+ *
+ * @return string
+ */
+ public function getCommand()
+ {
+ return $this->command;
+ }
+
+ /**
+ * Set jsonargument
+ *
+ * @param string $jsonargument
+ *
+ * @return Cronexec
+ */
+ public function setJsonargument($jsonargument)
+ {
+ $this->jsonargument = $jsonargument;
+
+ return $this;
+ }
+
+ /**
+ * Get jsonargument
+ *
+ * @return string
+ */
+ public function getJsonargument()
+ {
+ return $this->jsonargument;
+ }
+}
diff --git a/src/ninegate-1.0/src/Cadoles/CronBundle/Repository/CronexecRepository.php b/src/ninegate-1.0/src/Cadoles/CronBundle/Repository/CronexecRepository.php
new file mode 100644
index 00000000..45bfe70f
--- /dev/null
+++ b/src/ninegate-1.0/src/Cadoles/CronBundle/Repository/CronexecRepository.php
@@ -0,0 +1,9 @@
+JOB EXEC
+
+
+{% endblock %}
+
+{% block localjavascript %}
+ function refreshContent() {
+ console.log("refresh");
+
+ $.ajax({
+ method: "POST",
+ url: "{{ path('cadoles_cron_config_cronexecread') }}",
+ success: function(data, dataType)
+ {
+ $(".panel-body").html(data.replace(/\"/g,"").replace(/\\n/g,"
"));
+ }
+ });
+ };
+
+ var timer=setInterval(refreshContent, 1000);
+
+{% endblock %}
\ No newline at end of file