#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=CreateUser.exe #AutoIt3Wrapper_Res_Comment=Lanceur d'applications #AutoIt3Wrapper_Res_Description=Lance des utilitaires #AutoIt3Wrapper_Res_Fileversion=1.0.0.5 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y #AutoIt3Wrapper_Res_LegalCopyright=Nicolas Charpentier © Precilec #AutoIt3Wrapper_Res_Language=1036 #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker #AutoIt3Wrapper_Run_After=md "%scriptdir%\Versions\%fileversion%" #AutoIt3Wrapper_Run_After=copy "%in%" "%scriptdir%\Versions\%fileversion%\%scriptfile%%fileversion%.au3" #AutoIt3Wrapper_Run_After=copy "%out%" "%scriptdir%\Versions\%fileversion%\%scriptfile%%fileversion%.exe" #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;~ #AutoIt3Wrapper_Icon= #cs ---------------------------------------------------------------------------- AutoIt Version : 3.3.8.1 Auteur: Alaghir Fonction du Script : Le module permet de créer des fichiers utilisateurs en vue de les réutiliser dans le reste de l'applicatif de visualisation des OF bloqués. Il permet également de visualiser si un nom d'utilisateur existe déjà dans le répertoire courant. Lors de sa création, seule la fonction principale de création de fichiers de config utilisateur était existante. 10.08.12 : Ajout d'une fonction mail automatique. Seule est à rentrer l'adresse de l'opérateur. Cette fonction ouvre le client messagerie par défaut avec un message rappelant à l'opérauter ses identifiants pour se connecter à l'applicatif de visualisation des OF. 22.08.12 : Ajout d'une fenêtre fille, permettant de visualiser les utilisateurs déjà crées dans le répertoire dans un listview. Modification : Ajout d'un message d'erreur s'il n'existe pas de fichier utilisateur (cas du premier enregistrement). Ajout d'une fonction de génération de mot de passe aléatoire. Ajout d'une fonction de copie de fichier de configuration opérateur dans un répertoire "Utilisateur". Suite à cet ajout, modification en ce qui concerne la visualisation puisque l'on va chercher dans le répertoire ci-dessus cité. 23.08.12 : Ajout d'un champ checkbox, permettant de préciser si l'utilisateur est admin ou opérateur. Important : Ne pas oublier de changer la valeur du contenu du champ $txt_mailad : $txt_mailad = GUICtrlCreateInput(Null, 104, 88, 145, 21) #ce ---------------------------------------------------------------------------- ;Nota2 : Problème d'ouverture de session smtp #region Include ;Appel des librairies graphiques #include #include #include ;~ Appel des librairies de controles #include #include ;~ Appel des librairies réseau #include ;Appel des libraires fichiers #include #include ;~ Appel des librairies DBO #include #include #endregion Include #region Variant Const $directory_user = "\Utilisateur\" Const $cheminencours = @WorkingDir Dim $section_utilisateur,$file_user Dim $email_title, $email_address Dim $username, $pwd #endregion Variant #region GUI_Create ;fenêtre de login_création utilisateur $frm_login = GUICreate("Login", 400, 175, -1, -1) $txt_user = GUICtrlCreateInput("", 104, 24, 145, 21) $chk_admin = GUICtrlCreateCheckbox("IsAdmin", 310, 24, 60, 21) $txt_mdp = GUICtrlCreateInput("", 104, 56, 145, 21) $generate_pwd = GUICtrlCreateButton("AutoGenerate", 310, 56, 75, 21) $txt_mailad = GUICtrlCreateInput("charpentierni@gmail.com", 104, 88, 145, 21) $valide = GUICtrlCreateButton("Valider", 160, 126, 57, 25) $visualise = GUICtrlCreateButton("Visualiser", 84, 126, 57, 25) $annule = GUICtrlCreateButton("Annuler", 237, 126, 57, 25) $LabelLogin = GUICtrlCreateLabel("Login : ", 48, 24, 30, 17) $LabelPwd = GUICtrlCreateLabel("Mot de passe : ", 24, 56, 68, 17) $LabelMail = GUICtrlCreateLabel("Email : ", 48, 88, 30, 17) GUISetState(@SW_SHOW) #endregion GUI_Create #region event_controls ; Cette fonction permet de créer un utilisateur unique s'il n'est pas existant, ou de recharger son login s'il existe GUI_Encrypt_MotDePasse($txt_mdp) While 1 DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1) $nMsg = GUIGetMsg() Switch $nMsg Case $valide $section_utilisateur = "User" If IniRead($file_user, $section_utilisateur, "mdp", "") = "" Then ecrit_ini_user() FileClose($file_user) send_mail() copy_on_directory() Exit EndIf Case $visualise VUser() Case $generate_pwd GUICtrlSetData($txt_mdp,RandomPasswordGenerator()) Case $GUI_EVENT_CLOSE, $annule FileClose($file_user) Exit EndSwitch WEnd #endregion event_controls #region Userfile Func ecrit_ini_user() ;Ecrit les valeurs des champs dans un fichier ini $bool_admin = GUICtrlRead($chk_admin) $username = GUICtrlRead($txt_user) $file_user = "U_" & $username & ".ini" if $username = "Admin_user" then $bool_admin = true if not FileExists($cheminencours & "\" & $file_user) then ;~ FileOpen($cheminencours & "\" & $file_user,2) IniWrite($cheminencours & "\" & $file_user, $section_utilisateur, "Nom d'utilisateur", $username) $pwd = GUICtrlRead($txt_mdp) $email_address = guictrlread($txt_mailad) IniWrite($cheminencours & "\" & $file_user, $section_utilisateur, "mdp", $pwd) IniWrite($cheminencours & "\" & $file_user, $section_utilisateur, "IsAdmin", $bool_admin) IniWrite($cheminencours & "\" & $file_user, $section_utilisateur, GUICtrlRead($LabelMail),$email_address) Iniwrite($cheminencours & "\" & $file_user,$section_utilisateur,"Centre de charge","") Else MsgBox(0,"Fichier déjà existant","L'utilsateur existe actuellement dans votre répertoire") EndIf EndFunc ;==>ecrit_ini_user Func send_mail() ;~ Permet d'envoyer un mail à l'opérateur afin qu'il ait ses identifiants via le client mail par défaut se trouvant sur le poste const $email_sign = "Nicolas Charpentier" & @crlf & "Développeur logiciel" local $email_body $email_body = "Bonjour " & $username & "," & @crlf & @crlf & "Vos identifiants pour accéder à l'applicatif de visualisation des OF bloqués :" & @CRLF & @crlf & guictrlread($LabelLogin) & $username & @CRLF & guictrlread($LabelPwd) & $pwd & @CRLF $email_title = "Vos identifiants pour visualiser les OF bloqués" _INetMail($email_address,$email_title,$email_body) EndFunc Func copy_on_directory() If FileExists($cheminencours & $directory_user) = False Then DirCreate($cheminencours & $directory_user) if FileExists($cheminencours & $directory_user) = true Then FileMove($file_user,$cheminencours & $directory_user) Else FileMove($file_user,$cheminencours & $directory_user) EndIf EndFunc #endregion Userfile #region _mdp #comments-start Permet d'encrypter le mot de passe à la saisie, pour n'en rien afficher que des symboles l'enregistrement du mot de passe se fait dans le fichier Ini, étant donné qu'on est sur un seul utilisateur #comments-end Func GUI_Encrypt_MotDePasse(ByRef $h_edit, $s_newchar = '*') Local Const $EM_SETPASSWORDCHAR = 0xCC GUISetState(@SW_LOCK) If StringInStr(@OSVersion, "WIN_XP") And @NumParams = 1 Then Local $s_text = GUICtrlRead($h_edit) Local $pos = ControlGetPos(WinGetTitle(""), "", $h_edit) GUICtrlDelete($h_edit) $h_edit = GUICtrlCreateInput($s_text, $pos[0], $pos[1], $pos[2], $pos[3], $ES_PASSWORD, $WS_EX_CLIENTEDGE) Else GUICtrlSetStyle($h_edit, $ES_PASSWORD, $WS_EX_CLIENTEDGE) GUICtrlSendMsg($h_edit, $EM_SETPASSWORDCHAR, Asc($s_newchar), 0) EndIf GUISetState(@SW_UNLOCK) EndFunc ;==>GUI_Encrypt_MotDePasse Func RandomPasswordGenerator() #comments-start Permet de générer un mot de passe aléatoire parmi 42 possibilités sur une longueur de 8 #comments-end Local $S_Password local $V_CopyToClipboardWhenDone = 0 $I_Length = 8 $S_GetEachCharacter = StringSplit("abcdefghijklmnopqrstuvwxyz1234567890!@#$%_*", "") For $I = 1 To $I_Length $S_Password &= $S_GetEachCharacter[Random(1, 42, 1)] Next If $V_CopyToClipboardWhenDone = 1 Then ClipPut($S_Password) Return $S_Password EndFunc #endregion _mdp #region Vuser #comments-start Cache la GUI principale. Génère une GUI fille, qui permet de visualiser tous les utilisateurs déjà crées dans le répertoire courant Après fin de visualisation, affiche la GUI principale. #comments-end Func VUser() #CS Génère une liste des fichiers de paramétrage utilisateur. S'il y a un fichier, affiche la GUI de visualisation sinon, affiche un message d'erreur et retour au panneau de création d'utilisateur. #CE Local $T_array_user = _FileListToArray($cheminencours & $directory_user,"*.ini") If $T_array_user = 0 Then MsgBox(0,"Attention !","Pas de fichiers utilisateurs dans le répertoire") Else GUISetState(@SW_HIDE, $frm_login) for $compteur_utilisateur = 1 to $T_array_user[0] $chaine_user = _StringBetween($T_array_user[$compteur_utilisateur], "_", ".ini") $T_array_user[$compteur_utilisateur] = $chaine_user[0] Next #Region ### GUI section ### $frm_visu = GUICreate("Visualisation des opérateurs crées", 425, 212, 192, 124) $Lw_User = GUICtrlCreateListView("", 88, 40, 241, 105) $col1 = _GUICtrlListView_InsertColumn($Lw_User,0,"Nom des utilisateurs",237) GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 237) GUICtrlSetResizing(-1, $GUI_DOCKHCENTER+$GUI_DOCKVCENTER) $Btn_Quitter = GUICtrlCreateButton("Quitter", 144, 168, 113, 25) #EndRegion ### GUI section ### $compteur_init_lw = 0 Do If $compteur_init_lw <> 0 Then _GUICtrlListView_AddItem($Lw_User,$T_array_user[$compteur_init_lw]) $compteur_init_lw = $compteur_init_lw + 1 Until $compteur_init_lw >= $compteur_utilisateur GUISetState(@SW_SHOW, $frm_visu) While 1 DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1) $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE,$Btn_Quitter GUIDelete($frm_visu) GUISetState(@SW_SHOW,$frm_login) ExitLoop EndSwitch WEnd EndIf EndFunc #endregion VUser