====== Office 365 ====== Office 365 est la marque désignant les formules permettant d'obtenir la dernière version de Microsoft Office et un ensemble de services Cloud de Microsoft. Les inscription étaient basées sur un script en ruby inspiré de celui qui permet d'obtenir des licences [[wiki:services:dreamspark]]. Le service est maintenant basé sur l'API (Azure) qu'offre Microsoft pour inscrire des étudiants ===== Offre : Office 365 proplus for students ===== Installation des outils suivants sur 5 PC (ou macs), 5 tablettes et 5 téléphones : * Word * Excel * PowerPoint * Outlook * OneDrive for Business * OneNote * Publisher (PC only) * Skype for Business * Access (PC only) Bonus : * 1 TB sur OneDrive * Office Online (permet d'utiliser Word, PowerPoint, Excel et OneNote en ligne) ===== Solution actuelle ===== ==== Windows Server 2016 ==== La solution tourne dorénavant sur Windows Server 2016, sur Atlantis. On peut passer par noVNC pour se connecter sur la VM. Cependant, si vous avez des problèmes avec l'interface, vous pouvez encore vous connecter dessus via RDP en utilisant remmina ou un autre logiciel. Le serveur Windows ne dispose pas d'interface graphique ! Il ne donne accès qu'à une invite de commande. N'hésitez pas à utiliser la documentation de Powershell avant de faire quoi que ce soit. Pour pouvoir lancer le site Web, exécutez le binaire httpd.exe : C:\Apache24\bin\httpd.exe Mais on préfère faire en sorte que ce soit automatique : On installe le service Apache dans windows : > C:\Apache24\bin\httpd.exe -k install -n "Apache2.4" Puis on met le service en autostart : > sc config Apache2.4 start=auto On vérifie : > sc qc Apache2.4 Le serveur doit maintenant se lancer tout seul au démarrage de la machine Si le serveur se plein dans les logs du fait qu'il n'arrive pas à charger les libs (notamment ldap), c'est probablement que le PATH du user AUTORITE NT\Système ne possède pas le chemin vers php et ses extensions (.dll), cela peut arriver si jamais php n'est pas correctement installé. En ce cas : > regedit.exe Dans le registre, se rendre dans : ''HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment'', puis ajouter à la fin de la variable ''Path'' le chemin vers php et ses extensions, soit pour une installation à la racine de ''C:'' : '';C:\php;C:\php\ext'' Vous pouvez alors relancer le service Apache et vérifier que tout fonctionne. **Fonctionnement:** On a un formulaire php qui fait la requête LDAP et vérifie que l'utilisateur existe et qu'il est bien qui il prétend être (user,mdp). Puis, le script PHP appel un script powershell qui fait les requêtes "in a microsoft way". Puis un message final apparaît sur la page utilisateur lui indiquant soit qu'il a déjà un compte soit qu'il peut se connecter sur portal.office.com. === Installation d'OpenSSH === Le lien suivi est celui-ci : [[https://winscp.net/eng/docs/guide_windows_openssh_server|OpenSSH]]. Note : powershell.exe -ExecutionPolicy Bypass -File 'C:\Program Files\OpenSSH\install-sshd.ps1' powershell.exe -ExecutionPolicy Bypass -File 'C:\Program Files\OpenSSH\install-sshd.ps1' powershell.exe -ExecutionPolicy Bypass -File 'C:\Program Files\OpenSSH\FixHostFilePermissions.ps1' powershell.exe -ExecutionPolicy Bypass -File 'C:\Program Files\OpenSSH\FixUserFilePermissions.ps1' Set-Service sshd -StartupType Automatic Set-Service ssh-agent -StartupType Automatic Il est nécessaire de mettre une règle dans le parefeu. Toujours via PowerShell, on utilise : New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 Après installation, les permissions doivent être les suivantes : icacls 'C:\Program Files\OpenSSH\' . NT SERVICE\TrustedInstaller:(I)(F) NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F) NT AUTHORITY\SYSTEM:(I)(F) NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F) BUILTIN\Administrators:(I)(F) BUILTIN\Administrators:(I)(OI)(CI)(IO)(F) BUILTIN\Users:(I)(RX) BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE) CREATOR OWNER:(I)(OI)(CI)(IO)(F) APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX) APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE) APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX) APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE) ==== Quelques informations utiles ==== Pour télécharger via le proxy, il faut spécifier ceci car PowerShell utilise une version antérieure de SSL/TLS: [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Puis, il vient : wget -uri URL -Proxy http://192.168.103.61:82/ -OutFile NOM_du_FICHIER Parfois le copier-collé passe mal via l'interface de Proxmox. La solution pas optimisée du tout est la suivante : * On partage un dossier de Windows Server, on s'assurant de donner les droits nécessaires dessus * On monte le dossier depuis son Linux/Windows Pour partager un dossier sans être très fin sur les permissions, on utilise : net share DataShare=c:\Data /GRANT:Administrateur,FULL Remarque : DataShare est un alias, on aurait très bien pu mettre toto. Pour monter le dossier depuis Linux, **(en supposant cifs-utils installé)** : sudo mount -t cifs //192.168.103.166/DataShare /point/de/montage -o username=Administrateur,password=LE_MOT_DE_PASSE,uid=olivier,gid=olivier,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 Pour supprimer le partage actif : net share NOM_DU_POINT_DE_MONTAGE /delete Pour voir la liste des partages actifs : net share ===== Ancienne Solution ===== Une nouvelle solution a été implémenté car l'interface graphique de microsoft évolué trop souvent pour que le script sélénium offre une solution stable. La solution tourne sur une machine virtuelle Windows 10 activée avec une licence de 4 ans MSDNA. Le code utilisé est disponible sur le gitlab dans le groupe microsoft. Un fichier README est disponible sur le bureau de la machine pour guider l'administrateur vers les bons dossiers Un serveur apache a été installé dans C:\\Apache24. Pour le lancer, executer: C:\Apache24\bin\httpd.exe -k start Le répertoire contenant le projet git est dans C:\\Apache24\htdocs\office-minet. PHP a été installé dans C:\\php. Il a fallu installer les composants powershell nécessaire pour communiquer avec Ofice 365. https://docs.microsoft.com/fr-fr/office365/enterprise/powershell/connect-to-office-365-powershell Il faut d'ailleurs activer l'éxecution du powershell: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ===== Très Ancienne solution ===== Le script Dreamspark utilise **selenium**, et a donc besoin d'un navigateur pour fonctionner. Il tourne sur la même CT que Dreamspark, qui a besoin d'une IP publique car le https ne passe pas par nos proxys. EDIT: Depuis un certain temps le service tourne dans une KVM séparée à cause de quelques problèmes rencontrés avec xvfb. apt-get install ruby iceweasel ruby1.9.1-dev xvfb build-essential gem install net-ldap selenium-webdriver logger Le même service **xvfb** est utilisé pour Dreamspark et Office365 : #!/bin/bash XVFB=/usr/bin/Xvfb # XVFBARGS=":99 -fbdir /var/run -ac" XVFBARGS=":99 -nolisten tcp -fbdir /var/run" PIDFILE=/var/run/xvfb.pid case "$1" in start) echo -n "Starting virtual X frame buffer: Xvfb" start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --background --exec $XVFB -- $XVFBARGS echo "." ;; stop) echo -n "Stopping virtual X frame buffer: Xvfb" start-stop-daemon --stop --quiet --pidfile $PIDFILE echo "." ;; restart) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/xvfb {start|stop|restart}" exit 1 esac exit 0 Lancement du script en cron : 38 * * * * root cd /opt/office-script && export DISPLAY=:99 && ruby office.rb Le script est dans ''/opt/office-script''. Les logs sont écrits dans ''/var/log/office-script.log''. ==== Fonctionnement du script === * ''ldap.rb'': permet de vérfier que les mails envoyés proviennent bien des adresses de l'école. * ''web.rb'': utilise le webdriver de selenium pour faire l'inscription en ligne. * ''office.rb'': le script principal qui va appeler ''ldap.rb'' pour vérifier les adresses mail et ''web.rb'' pour la procédure d'inscription en ligne. ==== Pour obtenir une licence ==== Envoyer un mail (peu importe le contenu du mail) à office@minet.net avec son adresse telecom.