Koozali.org: home of the SME Server

[Solved]Template Conditionnel

Offline claude70

  • *
  • 27
  • +0/-0
[Solved]Template Conditionnel
« on: September 15, 2021, 09:11:28 PM »
Bonjour tout le monde,

J'aimerai savoir si il est possible dans un template (dans mon cas de figure, c'est un template de VirtualHost) de faire une condition ayant pour résultat l'inclusion d'un fichier ?

Pour faire plus simple, j'ai dans mon répertoire "/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf" mon template décomposé en 7 fichiers.
J'aimerai faire quelques choses comme cela :
Code: [Select]
{
    # Configuration Port 80
    if ( $port eq "80" )
    { include fichier 05Port80
Et évidement, si c'est le port 443, il n'y a pas d'include du fichier.

Quel est l'intérêt ?
Dans mon cas de figure, cela permettrait d'avoir un code plus lisible que du :
Code: [Select]
{
    # Configuration Port 80
    if ( $port eq "80" )
    {$OUT .= "    RewriteEngine on\n";
     $OUT .= "    RewriteCond %{HTTPS} off\n";
Et après il y a une dizaine de ligne en $OUT.

Ou, j'ai peut-être mal compris la création d'un template ?

Je suis preneur de tout.
Merci par avance.
Claude
« Last Edit: September 16, 2021, 08:21:36 PM by claude70 »

Offline mmccarn

  • *
  • 2,626
  • +10/-0
Re: Template Conditionnel
« Reply #1 on: September 16, 2021, 01:21:56 PM »
/etc/e-smith/templates/httpd/conf/httpd.conf/80VirtualHosts includes all of the templates from a folder for each domain.

By default, templates are included from /etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts, but you can create your own folder and fill it with your own templates and set 'TemplatePath' in the domains db using something like
db domains setprop <domain> TemplatePath <myCustomTemplateFolder>

Offline mmccarn

  • *
  • 2,626
  • +10/-0
Re: Template Conditionnel
« Reply #2 on: September 16, 2021, 01:51:46 PM »
You can also require SSL and enable an http->https redirect for each ibay by setting 'SSL' to 'enabled':
Code: [Select]
db accounts setprop <ibayname> SSL enabled
signal-event ibay-modify <ibayname>

If you want to change the default you can create a custom version of /etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts/20IbayContent and change the default setting for SSL from 'disabled' to 'enabled':

Code: ( # create a custom copy of 20IbayContent ) [Select]
mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/
cd /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/
cp /etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts/20IbayContent ./

Then customize the custom template
Code: ( etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/20IbayContent ) [Select]
      9
     10     my $ibay = $virtualHostContent;
     11     my $basedir = "/home/e-smith/files/ibays/$ibay";
     12     my $cgiBin = $accounts->get_prop($ibay, "CgiBin") || "";
-     13     my $ssl_domain = $accounts->get_prop($ibay, "SSL") || "disabled";
+     13     my $ssl_domain = $accounts->get_prop($ibay, "SSL") || "enabled";
     14
     15     $OUT .= "    DocumentRoot         $basedir/html\n";



Do you need custom templates?  You can enable redirects for all of your ibays using the config system:
Code: [Select]
# enable SSL redirection for all ibays
# - the command below will list the commands needed to enable SSL redirection on all of your ibays
# - remove the word 'echo' to run the commands, or copy and paste the output from this command
#
db accounts show |grep '=ibay' |while read ibay; do echo db accounts setprop ${ibay/=*} SSL enabled; done

#
# activate the changes
signal-event remoteaccess-update

Offline Jean-Philippe Pialasse

  • *
  • 2,747
  • +11/-0
  • aka Unnilennium
    • http://smeserver.pialasse.com
Re: Template Conditionnel
« Reply #3 on: September 16, 2021, 06:44:37 PM »
je comprends ce que tu recherche à faire, un peu comme la configuration modulaire de httpd qui va rechercher les .conf dans conf.d mais tu peux ajouter des .inc à la piece. 

le design des templates ne permet pas cela.
un template est habituellement un dossier contenant plusieurs fichiers appelés fragments. 
Tous ces fragments sont interprétés dans l’ordre alphanumérique.
les dossiers ne sont pas interpetés sauf si un fragment les utilise. par exemple le dossier Virtualhost. 

en resumé tu pourrais faire ceci on appelant un fichier precis dans un sous dossier, (il va falloir coder cette partie pour interpreter seulement un fichier et pas le dossier au complet)  mais je ne suis pas convaincu que tu augmente en lisibilité à la fin et je suis pas mal convaincu que tu vas augmenter en complexité et risque de problemes. 

Offline claude70

  • *
  • 27
  • +0/-0
Re: Template Conditionnel
« Reply #4 on: September 16, 2021, 08:20:53 PM »
Bonjour tout le monde et merci pour vos réponse.

Merci Jean-Philippe, oui c'est ce que je pensais, c'est ce que j'avais lu par-ci, par-là.
Mais j'me suis dis ... on ne sait jamais.

Bonne fin de journée,
Claude