Le Coin des développeurs

Un article de Mediase3.

Jump to: navigation, search

Sommaire

Documents ou ressources utiles :

Fonctionnement du SVN

Il est important de définir une stratégie d'utilisation pour tous les paquets afin de permettre la compilation de tous les paquets de manière cohérente. Pour le moment ce n'est pas le cas.

Il y a plein de stratégies possibles : en voici une, qui est assez bien adaptée à notre cas : des paquets relativement indépendants, une dizaine de contibuteurs actifs, qui sont susceptibles d'intervenir un peu partout...

le mieux est de créér à la racine le dossiers

  • trunk
  • branches
  • tags

Le concept à comprendre est que l'on travaille chez soi sur des working copy : il s'agit d'une image à une révision donnée du dépôt. Les branches et les tags ne sont là que pour fournir une représentation claire pour un humain des versions (pas facile de retenir les numéros des commit!). Il ne s'agit en aucun cas de copies physiques des fichiers. les copies entre branches doivent donc se faire avec svn.

Attention

Si vous êtes sur un compte utilisateur du se3, penser à activer les bonnes locales :

export LANG=fr_FR.utf-8

Le Trunk

  • Il contient le code à jour de tout le projet. Normalement, toute modification doit être commitée exclusivement ici, sauf si elle est spécifique aux versions antérieures.
  • Si du code est spécifique à une version majeure antérieure (1.18, 1.50...) On ne doit pas le commiter ici, mais dans les branches concernées. Cas particulier, il vaut mieux actuellement commiter sur 1.50, car c'est la version que l'on veut finaliser au plus vite. On backportera vers trunk (lenny) plus tard...
  • Si on souhaite backporter les nouveautés dans les versions antérieures, on fait des fusions vers les branches correspondant à ces versions (svn merge).

Pour bosser dans cette branche :

import initial du trunk dans se3-work  :

mkdir se3-work
svn checkout https://svn.ac-grenoble.fr/svn/se3/trunk se3-work
cd se3-work
.......

Pour revenir dans cette branche

svn info
svn switch https://svn.ac-grenoble.fr/svn/se3/trunk ( si besoin )
svn update 
...
svn commit
svn merge .....

Les branches

  • Elles permettent de représenter le code correspondant à une version majeure (1.18, 1.50...). On ne commite dans ces branches que le code qui est incompatible avec la version principale (trunk). Pour le moment la version 1.50 n'étant pas figée, il n'y a pas encore de raisons de maintenir trunk en parallèle avec la branche 1.50.
  • On commite toujours dans la branche correspondant à la version la plus haute, puis on propage dans les versions inférieures.
  • Généralement, on ne commite ici que les correctifs de bugs spécifiques aux versions, et les infos de version des paquets.

Pour bosser dans une branche :

cd se3-work
svn switch https://svn.ac-grenoble.fr/svn/se3/branches/1.x
....
svn commit

Les Tags

  • ils représentent l'image des sources au moment de la publication d'un paquet. Cela permet de générer les paquets de façon automatique, et de pouvoir traquer les regressions ( mais ce n'est pas git bisect !).
  • On ne commite jamais de modifs dans les tags, mais dans la branche parente. Les tags ne sont qu'une image des sources des branches correspondant à une révision donnée.
  • On les crée par un simple svn copy https://svn.ac-grenoble.fr/svn/se3/branches/1.x https://svn.ac-grenoble.fr/svn/se3/tags/1.x.y
  • les scripts de génération doivent s'exécuter sur cette branche.

On ne commite pas dans cette branche !

svn copy https://svn.ac-grenoble.fr/svn/se3/branches/1.x https://svn.ac-grenoble.fr/svn/se3/tags/1.x.y
svn switch https://svn.ac-grenoble.fr/svn/se3/branches/1.x https://svn.ac-grenoble.fr/svn/se3/tags/1.x.y
./script_qui_fait les paquets

Fusionner des modifs dans plusieurs branches

on a commité une modif ponctuelle dans trunk, on veut la porter sur 1.50. Pour cela actualiser (partiellement) les sources sur la branche voulue, fusionner la version trunk du serveur avec la version 1.50, puis commiter :

cd chemin/de/la/modif/ 
svn switch https://svn.ac-grenoble.fr/svn/se3/branches/1.50/chemin/de/la/modif 
svn merge https://svn.ac-grenoble.fr/svn/se3/trunk/chemin/de/la/modif/fichier fichier

résoudre les conflits éventuels... puis commiter

svn ci  

Plus compliqué, on veut propager sur des anciennes arborescences organisées différemment : 1.18.5, par exemple :

mkdir se3-old
svn co https://svn.ac-grenoble.fr/svn/se3/branches/1.18/ancien/chemin/de/la/modif se3-old
cd se3-old
svn merge https://svn.ac-grenoble.fr/svn/se3/trunk/chemin/de/la/modif/fichier fichier
...
svn ci

Etant donné que les chemins sont très différents, il vau mieux se créer un nouveau répertoire de travail partiel, pour eviter les mic-macs. On utilise donc svn checkout, et non pas switch sur le répertoire courant.

Développements version 1.50

Initialiser directement des variables avec le contenu de se3db

/usr/share/se3/includes/config.inc.sh est disponible depuis la version 1.50.

. /usr/share/se3/includes/config.inc.sh 
usage: config.inc.sh -c -l -p -b -h -s -m -d
      -c :  parametres de configuration generale, ex urlse3
      -l :  parametres ldap, ex ldap_base_dn
      -p :  chemins, ex path_to_wwwse3
      -b :  parametres sauvegarde, ex bck_user
      -m :  parametres masques, ex xppass
      -s :  parametres systemes, ex quota_warn_home
      -d :  parametres dhcp, ex dhcp_iface
      -h :  show this help
      -v :  mode verbeux : liste les variables initialisees

En fonction du switch on initialise uniquement certaines variables. Par ex, si on a besoin des params ldap :

. /usr/share/se3/sbin/includes/config.inc.sh -l

Si on veut connaitre les variables initialisées, on peut lancer le script manuellement avec en plus -v. Ce qui donne :

sh config.inc.sh -lv
ldap_server --> 10.127.164.243
ldap_port --> 389
ldap_base_dn --> ou=etab,ou=ac-rouen,ou=education,o=gouv,c=fr
adminRdn --> cn=admin
adminPw --> keyser
etc.....

A gauche les variables et à droite la valeur qu'elle contient.

Mise en cache des paramètres

En analysant le mode d'initialisations des paramtres de se3db.params, j'ai fait un petit test :

test 1 : récuperer 50 fois tout les parametres avec config.inc.sh

# time ./test1.sh
...................................................
real    2m0.715s
user    0m30.514s
sys     0m51.547s

test 2 : récupérer 50 fois les mêmes parametres enregistrés dans un fichier sous la forme parametre=valeur

# time ./test2.sh
...................................................
real    0m0.160s
user    0m0.108s
sys     0m0.012s

Bilan : c'est 2000 fois plus rapide d'exécuter l'include bash de configuration que de lire la base mysql ! Pour perl, pyton et php il y a des caches, donc le pb ne se pose pas...

L'impact sur les scripts bash de connexion est enorme. Je propose donc de cacher tous les parametres dans des fichiers /etc/se3/config_*.cache.sh, et de les inclure systématiquement dans tous les scripts utilisés en production en remplacement des requètes sql. Pour les scripts de config, bien sûr on consulte la base mysql !


pour créer ces fichiers cache, on utilise la fonction config.inc.sh avec l'option -f (comme fichier). Pour tout mettre à jour :

/usr/share/se3/includes/config.inc.sh -clpbmsdf

Clés de registre imposées par logonpy (se3GPO.py)

folder_keys = [('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\{374DE290-123F-4565-9164-39C4925E467B}',
'REG_EXPAND_SZ', 'Vista', 'K:\Bureau'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Local AppData', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven', '%USERPROFILE%\Application Data'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Local Settings', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven', '%USERPROFILE%\Local Settings'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\AppData', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven', 'K:\profil\\appdata'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cache', 'REG_EXPAND_SZ', 'Vista', 'K:\profil\\appdata\Cache'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies', 'REG_EXPAND_SZ', 'Vista', 'K:\profil\\appdata\Cookies'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Desktop', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven', 'K:\profil\Bureau'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Favorites', 'REG_EXPAND_SZ', 'Vista', 'K:\profil\\appdata\Favorites'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\History', 'REG_EXPAND_SZ', 'Vista', 'K:\profil\\appdata\History'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Music', 'REG_EXPAND_SZ', 'Vista', 'K:\Musique'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Pictures', 'REG_EXPAND_SZ', 'Vista', 'K:\Photos'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Video', 'REG_EXPAND_SZ', 'Vista', 'K:\Videos'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\NetHood', 'REG_EXPAND_SZ', 'Vista', 'K:\profil\\appdata\NetHood'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven', 'K:\Docs'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\PrintHood', 'REG_EXPAND_SZ', 'Vista', 'K:\profil\\appdata\PrintHood'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Recent', 'REG_EXPAND_SZ', 'Vista', 'K:\profil\\appdata\Recent'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\SendTo', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven','%USERPROFILE%\SendTo'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Templates', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven', 'K:\profil\\appdata\Templates'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Programs', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven', 'K:\profil\Demarrer\Programmes'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Start Menu', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven', 'K:\profil\Demarrer'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Startup', 'REG_EXPAND_SZ', '2000,XP,Vista,Seven', 'K:\profil\Demarrer\Programmes\Démarrage'.decode('utf8').encode('iso-8859-15'))]
default_keys = [('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\HideLegacyLogonScripts', 'REG_DWORD', 'XP', '1'),
('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpNumConnections', 'REG_DWORD', '2000,XP,Vista,Seven', '5000'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DeleteRoamingCache', 'REG_DWORD', '2000,XP,Vista,Seven', '1'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\DeleteRoamingCache', 'REG_DWORD', '2000,XP,Vista,Seven', '1'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\RunLogonScriptSync', 'REG_DWORD', 'Vista,Seven', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\RunLogonScriptSync', 'REG_DWORD', '2000,XP', '1'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\WaitForNetwork', 'REG_DWORD', 'Vista', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon\SyncForegroundPolicy', 'REG_DWORD', 'XP,Vista,Seven', '1'),
('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ShowLogonOptions', 'REG_DWORD', '2000,XP,Vista,Seven', '1'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DisableCAD', 'REG_DWORD', '2000,XP,Vista,Seven', '1'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\DontDisplayLastUserName', 'REG_DWORD', '2000,XP,Vista,Seven', '1'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_ShowMyDocs', 'REG_DWORD', 'Vista', '0'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_ShowMyPics', 'REG_DWORD', 'Vista', '0'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_ShowMyMusic', 'REG_DWORD', 'Vista', '0'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_ShowMyGames', 'REG_DWORD', 'Vista', '0'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_ShowUser', 'REG_DWORD', 'Vista', '0'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{374DE290-123F-4565-9164-39C4925E467B}\NukeOnDelete', 'REG_DWORD', 'Vista', '1'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\NukeOnDelete', 'REG_DWORD', 'Vista', '1'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{FDD39AD0-238F-46AF-ADB4-6C85480369C7}\NukeOnDelete', 'REG_DWORD', 'Vista', '1'),
('HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\NetCache\NoConfigCache', 'REG_DWORD', '2000,XP,Vista,Seven', '1'),
('HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\NetCache\DisableFRAdminPin', 'REG_DWORD', '2000,XP,Vista,Seven', '2'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel\{645FF040-5081-101B-9F08-00AA002F954E}', 'REG_DWORD', '2000,XP,Vista,Seven', '1'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu\{645FF040-5081-101B-9F08-00AA002F954E}', 'REG_DWORD', '2000,XP,Vista,Seven', '1'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\WindowsWelcomeCenter', 'REG_SZ', 'Vista', 'SUPPR'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Power\PowerSettings\A7066653-8D6C-40A8-910E-A1F54B84C7E5\ACSettingIndex', 'REG_DWORD', 'Vista', '2'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Power\PowerSettings\A7066653-8D6C-40A8-910E-A1F54B84C7E5\DCSettingIndex', 'REG_DWORD', 'Vista', '2'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Power\PowerSettings\94ac6d29-73ce-41a6-809f-6363ba21b47e\ACSettingIndex', 'REG_DWORD', 'Vista', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Power\PowerSettings\94ac6d29-73ce-41a6-809f-6363ba21b47e\DCSettingIndex', 'REG_DWORD', 'Vista', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Power\PowerSettings\\abfc2519-3608-4c2a-94ea-171b0ed546ab\ACSettingIndex', 'REG_DWORD', 'Vista', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Power\PowerSettings\\abfc2519-3608-4c2a-94ea-171b0ed546ab\DCSettingIndex', 'REG_DWORD', 'Vista', '0'),
('HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\ExcludeProfileDirs', 'REG_SZ', '2000,XP,Vista,Seven', 'Application Data;Temporary Internet Files;Historique;Temp;Credentials;Media Player;Windows Media;SystemCertificates;CrypnetUrlCache;Internet Explorer'),
('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange', 'REG_DWORD', '2000,XP,Vista,Seven', '1'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Windows NT\Printers\KMPrintersAreBlocked', 'REG_DWORD', '2000,XP,Vista,Seven', '0'),
('HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint\Restricted', 'REG_DWORD', 'XP,Vista,Seven', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{42B5FAAE-6536-11d2-AE5A-0000F87571E3}\NoGPOListChanges', 'REG_DWORD', '2000,XP,Vista,Seven', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{42B5FAAE-6536-11d2-AE5A-0000F87571E3}\NoSlowLink', 'REG_DWORD', '2000,XP,Vista,Seven', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{42B5FAAE-6536-11d2-AE5A-0000F87571E3}\NoBackgroundPolicy', 'REG_DWORD', '2000,XP,Vista,Seven', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}\NoBackgroundPolicy', 'REG_DWORD', '2000,XP,Vista,Seven', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}\NoGPOListChanges', 'REG_DWORD', '2000,XP,Vista,Seven', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}\NoSlowLink', 'REG_DWORD', '2000,XP,Vista,Seven', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\SlowLinkDetectEnabled', 'REG_DWORD', '2000,XP,Vista,Seven', '0'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\HideFastUserSwitching', 'REG_DWORD', 'Vista', '1'),
('HKEY_CURRENT_USER\Control Panel\Colors\Background', 'REG_SZ', 'XP', '0 0 0'),
('HKEY_CURRENT_USER\Control Panel\Colors\MenuHilight', 'REG_SZ', 'XP', '49 106 197'),
('HKEY_CURRENT_USER\Control Panel\Colors\Hilight', 'REG_SZ', 'XP', '49 106 197'),
('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager\ColorName', 'REG_SZ', 'XP', 'NormalColor'),
('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveAutoRun', 'REG_DWORD', '2000,XP,Vista,Seven', '67108863')]

Avoir une icône pour la corbeille réseau (olikin) ( FAIT denis )

Pour mettre en place une icône de corbeille réseau dans le poste de travail et sur le bureau, il suffit :

  • modifier les divers smbWinXP.conf afin de faire pointer la corbeille vers /home/user/corbeille_reseau
  • de déplacer le dossier corbeille_reseau de /home/user/Bureau/corbeille_reseau vers /home/user/corbeille_reseau en bouclant sur /home lors de la maj 1.5. Vu que les corbeilles existent déjà à Nantes, il suffit de penser à les déplacer si elles existent pour certains users.
  • d'imposer via logon.py deux clefs dans HKCU lorsque la corbeille est active (voir la possibilité de désactiver la corbeille : cf mail de Denis).
  • d'appliquer le gros .reg qui suit une fois par poste (logonpy doit pouvoir l'imposer lors de la configuration initiale du poste pour mettre en place les GPO).

Ainsi, quand on utilise un compte du domaine (et seulement dans ce cas), on dispose d'une jolie corbeille réseau sur le bureau... :-)

Les deux clefs à imposer (si la corbeille est activé) par logon.py dans HKCU pour voir la corbeille réseau sur le bureau et le poste de travail suivent. Elles sont à supprimer si la corbeille est désactivée.

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{00000000-0000-0000-0000-000000210979}]
@="Corbeille Réseau"
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{00000000-0000-0000-0000-000000210979}]
@="Corbeille Réseau"


Le .reg à appliquer une fois par poste (à l'install des GPO) est : (il est inutile de le supprimer si la corbeille est désactivée)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}]
@="Corbeille Réseau"

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\DefaultIcon]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,\
68,00,65,00,6c,00,6c,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,2c,00,33,00,32,\
00,00,00

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\InProcServer32]
"TreadingModel"="Apartment"
@="shell32.dll"

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\Shell]

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\Shell\explore]

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\Shell\explore\Command]
@="explorer /e,/root,K:\\Corbeille_Reseau"

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\Shell\Open]

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\Shell\Open\Command]
@="explorer /n,/root,K:\\Corbeille_Reseau"

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\shellex]

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\shellex\ContextMenuHandlers]

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\shellex\ContextMenuHandlers\{00000000-0000-0000-0000-000000210979}]

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\shellex\PropertySheetHandlers]

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\shellex\PropertySheetHandlers\{00000000-0000-0000-0000-000000210979}]

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000210979}\ShellFolder]
"Attributes"=hex:40,01,00,20
"CallForAttributes"=dword:00000040

Gestion de la base des registres

Pour eclaircir mon point de vue sur les clés :

Je ne suis pas sûr que l'ancienne distinction restriction configuration soit pertinente : maintenant que les clés sont appliqués par GPO, le processus est réversible : le profile est remis dans son état d'origine lors de son retour sur le serveur.

Actuellement (V1.5) on a deux types de clés :

les restrictions : elles sont dans *Policies*, sont prioritaires et normalement non modifiables par l'utilisateur, leur valeur est fixée, et elles peuvent être supprimées

Lors de leur affectation aux templates, il y a bien 3 états :

  • actif
  • inactif (supprimer la clé dans le registre)
  • non configuré (on ne fait rien si elle existe déjà dans un autre template)


les clés normales (configuration) : non prioritaires et modifiables, on peut fixer leur valeur, et on ne peut pas les supprimer ( plus besoin ! ).

Lors de leur affectation il y a donc deux états :

  • actif ( on peut choisir leur valeur)
  • non configuré ( on ne touche à rien)


DONC

  • En pratique c'est le terme restriction qui est trompeur : on ferait mieux de parler de stratégie.
  • Pour les clés de config, il faut supprimer la notion d'antidote, qui n'a plus de sens (il suffit de ne pas configurer la clé)
  • le groupe norestrict devrait comporter automatiquement toutes les clés de stratégies en mode inactif ( suppression de toutes les stratégies), mais aucune clé de config.
  • le groupe optimisation et sécurité ne doit plus comporter de clés "vitales", celles-ci étant passées en dur.
  • il faut réparer l'import de .reg qui ne fonctionne pas : on devrait pouvoir générer directement un groupe de clés à partir d'un .reg (Actuellement c'est l'enfer, il faut faire valeur par valeur !)
  • il faut un mécanisme de configuration initial indépendant des GPO pour pouvoir déployer direct et définitivement un (gros) .reg de configuration pour des groupes d'utilisateurs. C'est indispensable au fonctionnement de certains logiciels !

Déploiement de clés logicielles par wpkg (FAIT)

Souvent, certains logiciels (SolidWorks, Autocad...) ont besoin d'un ensemble de paramétrages bien spécifiques dans HKCU\Software. Or il n'existe pas de moyens simple de le faire avec SE3 et wpkg.

Une solution pourrait être de permettre de fournir un .reg dans le paquet wpkg (user.reg). Ceux ci sont :

  • copiés dans netlogon, sous le nom appli.reg lors de l'import du XML wpkg,
  • modifiés (remplacement de Hkey_Current_User par Hkey_Users\$SID ) et concaténés si besoin dans le répertoire gpo machine/$computer/user.reg par logonpy au login sur le poste ( on met un témoin home/profiles/$user/.$appli.lck pour ne le faire qu'une fois ),
  • ajouté au registre par un job CPAU adminse3 lancé par le logon.bat si besoin.

De cette façon on rend la configuration des préférences utilisateurs des logiciels très simple à faire depuis wpkg, tout en conservant un niveau de sécurité suffisant et sans charge serveur supplémentaire.

Impact :

  • modifier le script d'import des XML wpkg pour permettre la copie des .reg dans netlogon,
  • modifier logonpy-gpo.sh pour le mécanisme d'upload vers le client (non, on le laisse dans netlogon/machine/$computer)
  • modifier logon.bat par défaut dans base pour inclure le test de la présence du .reg et le lancement du job cpau (fait par se3logon.py)
  • faire générer le job cpau par le paquet logonpy ( fait)

Il reste à modifier la page d'import des xml wpkg pour qu'elle copie un .reg éventuel dans le netlogon. Pour l'instant il faut le copier à la main. le ficiher doit être en regedit4 uniquement.

Contrairement aux GPO, cette configuration du registre est permanente, donc attention, ne pas mettre de clés Policies !

L'ajout au registre est fait si besoin par un job cpau lancé par le script de logon. Aucun changement n'est nécessaire sur les clients, en revanche il faut refaire le paquet se3-logonpy.

Pour appliquer à la main le changement, il faut lancer /usr/share/se3/sbin/update-logonpy.sh

Unification des procédures de mise au domaine (FAIT denis )

Problématique:

Unifier la mise au domaine des postes, qu'ils soient neufs, clonés ou installés par unattended. Actuellement les scripts rejoin_*.vbs font plein de trucs qui ne sont plus nécessaires, se3-logonpy les fait tout seul au premier login. On peut donc faire l'adhésion par un simple netdom.

Voici une ébauche de scénarii  : c'est pratiquement ce que l'on fait avec unattended, avec en plus les scripts de Cédric pour prendre en compte les GPO et utiliser wine pour générer les cpau

un script shell update-domscripts.sh va se charger à l'installation du paquet se3-domaine de générer un certains nombre de jobs cpau : netdom.job, se3.job  :

  • on remplace le script unattended-config.bat par un script shell,
  • on le lance aussi à l'install de se3 et se3-clonage

A : intégration OEM ou poste hors domaine :

etape 0 :

- on fait le ménage dans le ldap, les reservations dhcp, et on régénère unattend.csv afin de prendre en compte le changement de nom ou l'enregistrement d'une nouvelle machine.

etape 1 :

a- si c$ existe, smbclient crée l'arborescence GPO et met en place le script shutdown.bat, puis copie tout ce qu'il faut dans c:\netinst (cpau, les jobs cpau...) pour permettre le login suivant. puis net rpc shutdown.


b- sinon, crée un job cpau appelé par un rejointse3.bat à lancer depuis le client en se connectant sur ro. celui-ci fait la même chose que ci-dessus, mais côté client.

etape 2 :

le script shutdown.bat se lance au shutdown, sort le poste du domaine, configure un compte BUILTIN\adminstrateur avec un nouveau mot de passe, force l'autologon sur ce compte.

etape 3 : le poste reboote.

etape 4 : le script netinst\integse3.bat lance le job cpau se3netdom qui, -récupère le fichier \\se3\install\site\unattend.csv (connexion en adminse3) -récupère le nom du poste à partir de son adresse mac et du fichier unattend.csv, -crée BUILTIN/adminse3, -fait la mise au domaine avec netdom, -configure le reboot en BUILTIN\adminse3 avec lancement de se3.job (netinst\etapefinale.bat) -met à jour les GPO (GPOenable.bat)

etape 5 : le poste reboote.

etape 6 : script se3.bat : -reconfiguration wpkg, -nettoyage divers, -install ocs, -reboot normal sur domaine

B : intégration depuis unattended, dans ce cas le nom du poste est déjà correct, l'étape 0 se fait au boot linux, puis on passe direct à l'étape 4

C : pré-clonage (emetteur)

etape 0 : on définit les machines à cloner dans l'interface se3. C'est indispensable si on veut tout automatiser.

etape 1 et 2 idem A

D : post-clonage (recepteurs)

etape 0 :

a- l'interface se3-tftp vérifie qu'un nom correspond bien à l'@mac du poste dans unattend.csv ou ldap. Sinon on demande et on met à jour...

b- si le clonage est lancé manuellement sur le poste, il faudrait que l'on puisse rentrer son nom et que l'info soit remontée dans le ldap et unattend.csv comme avec unattended... est-ce possible ?


puis on reprend etape 4...

travail en cours :

  • les pages reservation.php et baux.php incluent la possibilité de mettre au domaine ou changer de nom un poste.
  • génération des jobs cpau nécessaire par udpdate-domscripts.sh qui sera lancé par DEBIAN/postinst ou à la main
  • jobs cpau ( necessaires pour pouvoir crypter le password adminse3):
    • joinse3.job pour rejoindre le domaine
    • quitse3.job pour quitter le domaine
  • script shutdown.bat : lancé à l'arrêt de la machine par les gpo, il lance quitse3.job
  • script startup.bat : lancé au boot, lance l'intégration, wpkg, etc...
  • joinDomain.sh : lancé en sudo par l'interface, il copie les fichiers sur le client, et lance le reboot. Si cela foire, il génère un .bat à lancer depuis le poste.

Bugs constatés

  • connecté admin sur le domaine, si je veux repasser manuellement en thème windows classique (à la win2000), je me prends un message d'erreur. J'ai vérifié hors domaine aucun pb.
  • J'ai précisément essayer de modifier la clé suivante dans l'interface. attribution des clés, template base, sur lequel j'ai descendu optimisaion & secu, je clique sur "chemin du thème XP", modifier j'active avec "%windir%\resources\themes\luna\luna.msstyles", ok. si je reviens sur la clé j'ai : "%windir%esourceshemeslunaluna.msstyles" tous les "\" ont été dégagés.
  • Les clés active-update apparaissent comme tronquées au niveau de l'antidote :

Par exemple : "C:\WINDOWS\system32\ie4uinit.e" pour Internet Explorer (cle1)

  • A la connexion sur l'interface il arrive d'obtenir ceci :

Warning: fopen(/var/log/se3/auth.log) [function.fopen]: failed to open stream: Permission denied in /var/www/se3/includes/functions.inc.php on line 390

Warning: Cannot modify header information - headers already sent by (output started at /var/www/se3/includes/functions.inc.php:390) in /var/www/se3/auth.php on line 55

un clic sur deconnexion et c'est ok....

La problématique de migration Etch ---> Lenny

Ici on pourrait mettre un résumé des tests de stéphane par ex....

Développements version 2.0 Lenny

Installation 64bits

Fonctionne parfaitement !

  • Tous les paquets doivent être en arch = all sauf si ils incluent du code compilé.
  • Nécessité de dépôts distincts.
  • Le paquet se3-logonpy pose problème : il inclut tcpcheck compilé, il faudrait faire un paquet spéparé tcpcheck, afin de pouvoir le compiler pour les 2 architectures ( gcc tcpcheck.c :) )
  • digloo AMD-64, ou alors install direct sur Lenny amd-64 ?

Seven sur Lenny

Modifs bdr :

HKLM\System\CCS\Services\LanmanWorkstation\Parameters
DWORD  DomainCompatibilityMode = 1
DWORD  DNSNameResolutionRequired = 0
HKLM\System\CCS\Services\Netlogon\Parameters
DWORD  RequireSignOnSeal = 0
DWORD  RequireStrongKey = 0
Qui plus est, abaisser le pare-feu windows, sinon, rien au login.

Version de samba requise

Samba 3.3.7 minimum, cela nous oblige donc à utiliser les backports.

Version 3.4.2 disponible pour lenny :

http://packages.debian.org/fr/lenny-backports/samba