Koozali.org: home of the SME Server

Intervenir avant l'enregistrement des i-bay

Offline jissey

  • 7
  • +0/-0
Intervenir avant l'enregistrement des i-bay
« on: February 06, 2018, 05:13:34 PM »
Bonjour,
je découvre SME.
Merci pour tout ce boulot.
Je fais pas mal d'essais et j'aimerais, lorsque je créer une baie pouvoir automatiser certaines tâches de config :
MYIBAY='sitesweb'
db accounts setprop $MYIBAY PHPBaseDir /tmp/:/home/e-smith/files/ibays/$MYIBAY/html/
db accounts setprop $MYIBAY AllowOverride All
db accounts setprop  $MYIBAY FollowSymLinks enabled


J'ai bien compris que le système se base sur des templates, je ne trouve pas à quel endroit l'I-Bay est enregistrée pour pouvoir forcer ces paramètres.
Pour aller plus vite je les écris directement dans accounts mais ça n'est pas une solution et l'automatiser me permettrait d'en apprendre plus sur le systhème.
Merci pour vos réponses
jc

Offline gieres

  • *
  • 213
  • +0/-0
Re: Intervenir avant l'enregistrement des i-bay
« Reply #1 on: February 06, 2018, 10:21:59 PM »
Bonsoir et bienvenue,
Peut-être n'avez-vous pas encore vu ce manuel ?
https://wiki.contribs.org/SME_Server:Documentation:Developers_Manual
Peut-être y a-t-il des réponses ? (Je ne suis pas développeur).
Bonne soirée.

Offline jissey

  • 7
  • +0/-0
Re: Intervenir avant l'enregistrement des i-bay
« Reply #2 on: February 07, 2018, 09:06:54 AM »
Bonjour et merci,
c'est bien là que j'ai lu la doc et vu le système de template.
Ma question est : quel est le template déclenché lors de l'enregistrement des baies ou comment le trouver.
Merci

Offline mmccarn

  • *
  • 2,626
  • +10/-0
Re: Intervenir avant l'enregistrement des i-bay
« Reply #3 on: February 07, 2018, 01:25:45 PM »
1. Change default settings for all ibays

I don't know of any template that will let you change the default settings in the configuration database for new ibays.

To make your changes for all new ibays in server-manager, I think you'd need to edit this section of this file (any changes you make will disappear whenever "e-smith-ibays" is updated unless you work with the developers in the bug tracker to get your customizations added to the core):
Quote from: /usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/ibays.pm
    my $uid  = $accountdb->get_next_uid();
    if (my $acct = $accountdb->new_record($name, {
            Name         => $self->cgi->param('description'),
            CgiBin       => $self->cgi->param('CgiBin'),
            Group        => $self->cgi->param('group'),
            PublicAccess => $self->cgi->param('publicAccess'),
            SSL          => $self->cgi->param('SSL'),
            UserAccess   => $self->cgi->param('userAccess'),
            Uid          => $uid,
            Gid          => $uid,
            PasswordSet  => 'no',
            type         => 'ibay',
        }) )

To have your settings applied to new ibays created at the command line you would need to customize /etc/e-smith/events/actions/ibay-modify, or create your own script in /etc/e-smith/events/actions/ and put a link to it in /etc/e-smith/events/ibay-create


2. Change httpd.conf default output related to AllowOverride, PHPBaseDir, FollowSymLinks

You could copy and customize these templates to achieve the same effect by changing the default content of /etc/httpd/conf/httpd.conf related to these settings:

* /etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess40ibays
* /etc/e-smith/templates/etc/httpd/conf/httpd.conf/95AddType00PHP2ibays

Code: [Select]
# create custom copies of the templates
mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/
cd /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/
cp /etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess40ibays ./
cp /etc/e-smith/templates/etc/httpd/conf/httpd.conf/95AddType00PHP2ibays ./

Edit the copy of 90e-smithAccess40ibays to change the default behavior for your settings:

Line 91:
my $allowOverride = $properties{'AllowOverride'} || "None";
becomes
my $allowOverride = $properties{'AllowOverride'} || "All";

Line 93
my $followSymLinks = $properties{'FollowSymLinks'} || "disabled";
becomes
my $followSymLinks = $properties{'FollowSymLinks'} || "enabled";

Edit the copy of 95AddType00PHP2ibays

Lines 17 & 18
                 my $basedir = $ibay->prop('PHPBaseDir')
                     || ("/home/e-smith/files/ibays/" . $ibay->key . "/");

become
                 my $basedir = $ibay->prop('PHPBaseDir')
                     || ("/tmp/:/home/e-smith/files/ibays/" . $ibay->key . "/html/");



[edit]
I forgot to mention - if anything goes wrong, you can remove these changes using:
Code: [Select]
# delete the customized templates (the 'templates-custom' folder can stay):
rm /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/90e-smithAccess40ibays
rm /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/95AddType00PHP2ibays
#
# recreate 'httpd.conf'
expand-template /etc/httpd/conf/httpd.conf
#
# restart apache
sv t httpd-e-smith
« Last Edit: February 07, 2018, 01:32:14 PM by mmccarn »

Offline jissey

  • 7
  • +0/-0
Re: Intervenir avant l'enregistrement des i-bay
« Reply #4 on: February 07, 2018, 06:17:07 PM »
Hi mmccarn,
thanks for these ideas. The second one sounds good  8)
I'll try it as soon as possible and come back here.

Offline ReetP

  • *
  • 3,722
  • +5/-0
Re: Intervenir avant l'enregistrement des i-bay
« Reply #5 on: February 08, 2018, 12:21:22 AM »
The second is much safer and easier to revert.

Unlikely to get those changes added to core when custom templates can do the same thing :-)

Besides, I'm trying to work on getting rid of FormMagick (see the devinfo mailing list for more) !!
...
1. Read the Manual
2. Read the Wiki
3. Don't ask for support on Unsupported versions of software
4. I have a job, wife, and kids and do this in my spare time. If you want something fixed, please help.

Bugs are easier than you think: http://wiki.contribs.org/Bugzilla_Help

If you love SME and don't want to lose it, join in: http://wiki.contribs.org/Koozali_Foundation

Offline Jean-Philippe Pialasse

  • *
  • 2,746
  • +11/-0
  • aka Unnilennium
    • http://smeserver.pialasse.com
Re: Intervenir avant l'enregistrement des i-bay
« Reply #6 on: February 08, 2018, 05:29:15 AM »
Bonjour et bienvenu,

comme tu désire modifier les valeurs par défaut pour toutes les ibays que tu crées la meilleur option est de le faire au moment de la création via un script lancé par l’événement.

voici une petite liste des événement existant
Code: [Select]
# cd /etc/e-smith/events/
# ls
actions                 dns-update     group-delete  ibay-create          ip-down      machine-account-create  post-install    proxy-update         restore-tape       user-lock          yum-remove
bootstrap-console-save  domain-create  group-modify  ibay-delete          ip-up        network-create          post-upgrade    pseudonym-create     ssl-update         user-modify        yum-update
bootstrap-ldap-save     domain-delete  halt          ibay-modify          ip-up.pptpd  network-delete          pre-backup      pseudonym-delete     timeserver-update  user-modify-admin
clamav-update           domain-modify  host-create   ibay-modify-files    ldap-update  password-modify         pre-restore     pseudonym-modify     timezone-update    workgroup-update
conf-backup             email-update   host-delete   ibay-modify-servers  local        portforwarding-update   printer-create  reboot               user-create        yum-install
console-save            group-create   host-modify   ip-change            logrotate    post-backup             printer-delete  remoteaccess-update  user-delete        yum-modify
Comme tu as lu le manuel du dev (https://wiki.contribs.org/SME_Server:Documentation:Developers_Manual) tu as vu quel est l'event qui est lancé à la création d'une ibay. Le nom est assez evocateur "ibay-create" ( https://wiki.contribs.org/SME_Server:Documentation:Developers_Manual#Standard_events_and_their_arguments )

Tu as aussi vu que cet event prend un argument : le nom de l'ibay ( https://wiki.contribs.org/SME_Server:Documentation:Developers_Manual#Events_with%20_arguments) . Tu peux donc créer un script dans le language de ton choix ou presque, le mettre dans /etc/e-smith/events/action/ avec un nom évocateur. Il doit cependant être exécutable. Il pourra utiliser comme premier argument le nom de l'ibay pour pouvoir exécuter les commandes de ton choix. Une solution simple serait en bash puisque tu nous as présenté les commandes que tu voulais exécuter en bash.

Tu as aussi vu l'architecture d'un event (https://wiki.contribs.org/SME_Server:Documentation:Developers_Manual#Events) et tu as vu comment les liens doivent être nommés dedans et donc tu comprends que tu dois faire un lien de ton script dans /etc/e-smith/events/action/ dans /etc/e-smith/events/ibay-create/ pour qu'il soit lancé avant  l'Expand des templates (https://wiki.contribs.org/SME_Server:Documentation:Developers_Manual#Order_of_implicit_actions) donc un nom comme S05MesConfigIbays serait bien.

Comme tu vois tout est déjà dans ce qu'a pointé Gieres. La seule étape est maintenant de coder ton script en bash ou autre et de faire les liens a la bonne place

Concernant les suggestions de template custom et de hacker les scripts je ne les conseille pas. Tu ne sais jamais si un autre template va plus tard arriver en utilisant une de ces valeurs et tu risque d’avoir un comportement inattendu. Les scripts modifiés seront aussi remis à jours régulièrement sans tes modifications ce qui peut te donner des surprises.

Offline jissey

  • 7
  • +0/-0
Re: Intervenir avant l'enregistrement des i-bay
« Reply #7 on: February 08, 2018, 06:46:05 PM »
Merci Jean-Philippe, j'ai bien vu ou plutôt lu tout ça et j'avoue m'être d'abord penché sur les templates, délaissant les event.
Je ne manquerai pas de suivre cette piste sans doute plus appropriée en effet.

Offline jissey

  • 7
  • +0/-0
Re: Intervenir avant l'enregistrement des i-bay
« Reply #8 on: February 16, 2018, 05:28:20 PM »
Bonjour,
alors voilà la solution finale que j'ai mise en place pour héberger des sites dynamiques type Wordpress.
Suivant les conseils de Jean-Philippe, je me suis réorienté vers les events.
J'ai choisis de passer mes commande en bash car je les avait déjà et je ne connais pas le PERL (ni le bash d'ailleurs).

Donc :

1-Créer un fichier dans /etc/e-smith/events/actions/
Je l'ai appelé ibay-jcg.sh et voici son contenu :
Code: [Select]
#!/bin/sh
# jcg ajoute les options pour hebergement dynamique (Wordpress)
if [ $1 = 'ibay-create' ]
then
/sbin/e-smith/db accounts setprop $2 PHPBaseDir /tmp/:/home/e-smith/files/ibays/$2/html/
/sbin/e-smith/db accounts setprop $2 AllowOverride All
/sbin/e-smith/db accounts setprop $2 FollowSymLinks enabled
fi

2-Créer un lien symbolique dans /etc/e-smith/events/ibay-create/ qui pointe vers le fichier de commande sh.
Je l'ai nommé 25ibay-jcg

Voilà, merci à tous pour votre aide et votre réactivité!

Offline Jean-Philippe Pialasse

  • *
  • 2,746
  • +11/-0
  • aka Unnilennium
    • http://smeserver.pialasse.com
Re: Intervenir avant l'enregistrement des i-bay
« Reply #9 on: February 16, 2018, 06:31:43 PM »
bon travail.

À l'instar de M Jourdain qui faisait de la prose à tout moment sans le savoir, tu sais faire du Bash.


2-Créer un lien symbolique dans /etc/e-smith/events/ibay-create/ qui pointe vers le fichier de commande sh.
Je l'ai nommé 25ibay-jcg

cela marcher mieux si tu l'appelle 04ibay-jcg . Les templates sont expand en 05 : https://wiki.contribs.org/SME_Server:Documentation:Developers_Manual#Order_of_implicit_actions

Quote
   The generic_template_expand action is currently run at S05 and adjust-services is run at S90. The order of action scripts within an event is subject to change between releases.

tu veux définitivement que tes informations soient bonnes dans la db avant que l'expansion des templates ait lieu !

Offline jissey

  • 7
  • +0/-0
Re: Intervenir avant l'enregistrement des i-bay
« Reply #10 on: February 17, 2018, 01:46:07 PM »
Merci,
Alors je ne comprends pas : mon action doit passer après la création de la baie qui est faite par S15ibay-modify (je n'ai pas le serveur sous les yeux pour le numéro). C'est pour ça que j'ai nommé mon action S25 > S15.
De plus si l'expand template s’exécute en S05, ça ne laisse pas beaucoup de place pour modifier les différentes bases.
Cette dernière remarque pour dire que je ne comprends pas bien la philosophie du système :
Si j'ai bien compris, les actions modifient les bases et les templates génèrent la configuration finale, par exemple pour les ibay, le fichier httpd.conf principalement. Si l'expand passe avant les actions, ça n'a en effet pas d'effet et pourtant les ibay sont bien créees.
Je n'ai pas vérifié le fichier de config d'apache après insertion de mon action, mais le fichier db/accounts est bien à jour lui.
Quelque chose m'échappe...ou alors, comme c'est précisé dans la doc :
Quote
The generic_template_expand action is currently run at S05 and adjust-services is run at S90. The order of action scripts within an event is subject to change between releases.
et l'expand passe plus tard...je vérifierai lundi.
Dernière remarque : quelle genre d'action pourrait être faite après l'expand (en dehors de services2adjust)?

Offline Jean-Philippe Pialasse

  • *
  • 2,746
  • +11/-0
  • aka Unnilennium
    • http://smeserver.pialasse.com
Re: Intervenir avant l'enregistrement des i-bay
« Reply #11 on: February 17, 2018, 11:01:37 PM »
 
PHPBaseDir,  AllowOverride,  FollowSymLinks sont utilisé pour l'expand de template pour la config de httpd.
- S05 Generic_template_expand action is currently run  (donc expand du template httpd pour l'ibay avant que les valeurs soient modifiées en db)
- S15ibay-modify
- S25 ton script pour modifier les valeur de ton ibay dans la db
-....
- S90 adjust-services

Offline jissey

  • 7
  • +0/-0
Re: Intervenir avant l'enregistrement des i-bay
« Reply #12 on: February 18, 2018, 02:58:48 PM »
Finalement, la solution par les templates était tout aussi bonne. C'est difficile quand on a le choix ;-)

Offline Jean-Philippe Pialasse

  • *
  • 2,746
  • +11/-0
  • aka Unnilennium
    • http://smeserver.pialasse.com
Re: Intervenir avant l'enregistrement des i-bay
« Reply #13 on: February 18, 2018, 07:21:35 PM »
Finalement, la solution par les templates était tout aussi bonne. C'est difficile quand on a le choix ;-)

elle t’empêche juste de profiter des mises à jours sur les templates originaux, car tu les caches avec ton nouveau template.