XׯdddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z ddl Z ddlZddl mZddlmZmZmZddlZddlmZmZddlmZmZe dd d ZddlZddlZd Zed ddee j dZ!edddee j dZ"ee j#e j$j%dZ&ee j$j%e j#dZ'edde j(gddee j e j$j%dZ)edde j(gddee j e j$j%d Z*ed!d"gdd#ee j d$Z+ed%d&gdd'ee j d(Z,ed)d*e j(gdd+ee j e j$j%d,Z-ed)d*e j(gdd+ee j d-Z.d.Z/ed/d0d1gd23ee j d4Z0Gd5d6ej1Z2e2a3ed7d8d8ee j d9Z4Gd:d;Z5Gd<d=eZ6Gd>d?eZ7Gd@dAeZ8GdBdCeZ9GdDdEeZ:ee j ej;e j$j%e j#dFZ!! ! !A Q--Iw~~i(( !       ! ! 4zwb.tools.backupConnectionszBackup existing connectionszBackup Existing Connections)captionaccessibilityNamectj}tj|d}tj|d}tjtj tj }| d| dd| tjkr|} t!j|dt j}n4#t&$r'tjddd d d Yd SwxYw||d||dtjd d |zd d dtjkrtj|dS)Nconnections.xmlserver_instances.xmlzExport Connections AsZIP Files (*.zip)|*.zipimportwzBackup file creation errorzRCould not create the backup file. Please check path and permissions and try again.OKzConnections savedz0Your connections were successfully backed up to z Show Filer)mformsAppgetget_user_data_folderrrrnewFileChooserForm main_formSaveFile set_titleset_extensions run_modalResultOkget_pathzipfileZipFile ZIP_DEFLATED Exception Utilities show_errorwrite show_message ResultOther reveal_file) user_data_dirconnections_pathinstances_path file_chooser backup_path backup_files r#backupConnectionsrNBsJNN$$99;;Mw||M3DEEW\\-1GHHN()>)>)@)@&/RRL2333 98DDD6?22"++--  !/+sG>>.*@AAA   ( ()<>p(3?4&*B  = =@F@R S S   ( ( 5 5 5 1s D//-E E zwb.tools.restoreConnectionsz&Restore connections from a backup fileRestore ConnectionscF d}tjtjtj}|d|dd|r"|} tj |d} tj d}| |d|tj d}| |d |np#t $rc}tjd d t'|zd d d t)jdd t'|zYd}~dSd}~wwxYwt)j|j}t1|t(js:tjd dd d d t)jdddSi}t5dt(jjjjD} t5dt(jjjjD} d} |D]} | j| vr| dz} || j| | _| | jt(jjj| _!| || j<t(jjjj"| t)j|j} t1| t(jsJtjd dd d d t)jddtG|zdSt5dt(jjjj$D}t5}d}| D]}|j% |j%j|vr|dz}| |j%j||j||_| |j|&|j%jd}|'}||_%t(jjjj$"|t(j(j)*t(j(j)+t(j(j),| dks|dkrg}|"d| dkr|"d| z|dkr3| dkr|"d|"d|z|"dtj-dd .|d d d n#tj/$rE}tjd dd d d t)jdd|zYd}~nbd}~wt`$rR}tjd dd d d t)jddt'|zYd}~nd}~wwxYwdS) Nc4|}d} ||vr|S|d|zz}|dz })Nr0Tz (%d))rname_setnew_nameidxs r#generate_unique_namez0restoreConnections..generate_unique_nameds= x''gm+H 1HC  r%z Select a Connections Backup Filer+r,rF)deleter*r)zRestore Connections ErrorzJThe selected file is not a valid backup file or the file is corrupted: %s.r.r/restoreConnectionszFThe selected file is not a valid backup file or the file is corrupted.zCThe selected archive does not have a valid connection backup file. c3$K|] }|jV dSNr.0conns r# z%restoreConnections..s$+d+d$DI+d+d+d+d+d+dr%c3$K|] }|jV dSr[)__id__r]s r#r`z%restoreConnections..s$)d)d$$+)d)d)d)d)d)dr%rr0zjWorkbench restored %i valid connections but server configuration data could not be found or is not valid. c3$K|] }|jV dSr[r\)r^instances r#r`z%restoreConnections..s$)n)nH(-)n)n)n)n)n)nr%zWorkbench detected z%i duplicated connectionsz and z%i duplicated instancesz, which were not restored.rOzJThe selected file is not a valid backup file or the file is corrupted: %s zHCannot read from file. Please check this file permissions and try again.z%s )1r1r5r6r7OpenFiler9r:r;r=r>r?tempfileNamedTemporaryFilerDreadcloseKeyErrorrBrCstrgrtr unserializer isinstanceListsetrootwb rdbmsMgmt storedConnsrbaddownerappendlenstoredInstances connectionr3 shallow_copymodules WorkbenchrefreshHomeConnectionssaveConnections saveInstances show_warningr BadZipfileIOError)rVrKrLrMinstances_fileconnections_fileerror connectionsinserted_connectionsexistent_connection_namesexistent_connection_idsduplicate_connection_countcandidate_connection instancesexistent_instance_namesprevious_instances_connsduplicated_instance_countcandidate_instancenew_connmessages r#rYrYas)()>)>)@)@&/RRL=>>> 98DDDaE"++-- _ E!/+s;;K !)!e#L#L#L  &&{'7'78I'J'JKKK &&((((    ++,GJLNQRWjjJY,0"b::: 25>@CE 5KLLL  /*:*?@@Kk3844  ++,GJH,0"b::: 24z{{{#% (++d+d#(+BWBc+d+d+d(d(d %&))d)d#(+BWBc)d)d)d&d&d #)* &(3 O O$'.2III1Ka1O.,@,@AUAZ\u,v,v$))--.B.GHHH-0X[-B$*DX$%9%@A %1889MNNNN/.*=>>Ii22  ++,GJH,0"b::: 25behiteueu5uvvv&))n)n H]Hm)n)n)n&n&n #'*uu $() %&/ Q Q"%08%07;SSS0IA0M-(,,-?-J-QRRR*>*>?Q?VXo*p*p"''++,>,CDDD/334F4Q4XZ^__%7%D%D%F%F"08"- %5<<=OPPPP K ! 8 8 : : : K ! 1 1 3 3 3 K ! / / 1 1 1)A--1JQ1N1N4555-11NN#>A[#[\\\,q001A55w///NN#.get_driversA&,Q/7  Av~~tr%z0(.*?)(?::(.*))?@(.*?)(?::([0-9]+|)(?::(.+|))?)?$T)NNNNNrmysql mysql.exer0z-uz-hz-pz-Pz-Swb_utilsz=Error parsing connstring; port value '%s' should be a number rrrrrr%)rematchgroupsshlexrstripendswithrx startswithintrrlclassesdb_mgmt_ConnectionrqrrrsrvrrrhostIdentifierTemplatelistitemsreplacerkhostIdentifier)rvalidrguserpasswordhostrrtokensir_rkeyvalues r#connectionFromStringrs E CWMMA%-.XXZZ*hdF-I*hdFW]]__--  ay!!'** fQi.@.@.M.M #f++ooayD((Q%ay--d33/%ay}d**Q%ay--d33/%ay}d**Q#)!9--d33 /#)!9QRR=d**Q%ay--d33/%ay}d**Q!'--d33/!'122FA5#f++oo6    4yy J(hko(oppp D{--//X[*   4$*%899DKK$*]33DK  4/3D  ,  4/3D  ,  0+/D  (  4-3D  *;t399;;<< M MJC+33CGCKULLNN, 4s 9I I"zwb.tools.copyConnectionStringz#Copy Connection String to ClipboardzHome/Connections)r&input pluginMenur'cbt|}tj|dSr[)rr1rBset_clipboard_textrs r#copyConnectionStringr9s.-T22G ''00000r%z!wb.tools.copyJDBCConnectionStringz(Copy JDBC Connection String to ClipboardzCopy JBDC String to Clipboardcd|jvrd|jdz}nd}|d|jdzz }|jjdkrd|jdd|jd }nl|jjd krd|jdd|jd }n=|jjd kr-tjd d|jzddddStj||zdS)Nschema/z?user=%srrz jdbc:mysql://rrrrrrzCopy JDBC Connection StringzNCannot create JDBC connection string for %s. The connection uses a SSH tunnel.r.r/)rrrr1rBrCr)r_paramsrs r#copyJDBCConnectionStringr@s4'''T)(33 j4/ ;;;F {=(((*.*>z*J*J*JDL`agLhLhi  0 0 0 0*.*>z*J*J*JDL`aiLjLjk  - - -##$A \_c_h h "b     ''77777r%z&wb.tools.createMissingLocalConnectionsz Rescan for Local MySQL InstanceszRescan MySQL Instancesctjj}tjj|dkr$t jdddddnP|dkr$t jdddddn&t jdd|zddddS) NrzRescan for Local MySQL Serversz%Rescan for local MySQL servers failedr.r/zNo servers were found.Found %s servers.r0) rlr|r}createInstancesFromLocalServersr~r1rBrCrE)found_instancess r#createMissingLocalConnectionsrUsk+KKMMOK00222##$DFmosuwy{|||| A  %%&FH`bfhjlnoooo%%&FH[^mHmosuwy{||| 1r%z wb.tools.connectionFromClipboard Add Connection(s) from ClipboardzAdd Connections From Clipboardcr tj}|sdSt}tjjjjD]$}| t|%d}d}| dD][}t|}|s+|s)tj dd|zdddd}?t||vr'tj dd |zdddwd }|jd d  }t! fd tjjjjDr@d||fz |d z }t! fd tjjjjD@ |_t%d|jz|d z}tjjjj|]tjj|dkr&tjdd|zdddd S)NrF rz6Could not parse connection parameters from string '%s'r.r/Tz3The connection %s already exists and was not added.r0rlocalc3.K|]}|jkVdSr[r\)r^r_rs r#r`z-newConnectionFromClipboard..s*RR$)t#RRRRRRr%z%s (%i)z#Added connection %s from clipboard r)r1rBget_clipboard_textrprlrqrrrsrtrurrrrCrr3anyrrrwr|r}r~rE) textexistingcon parse_errorsrliner_rprefixrs @r#newConnectionFromClipboardrfs~   . . 0 0D quuHx{$0:: 3C889999LO 4  77#D)) L    ' '(JMEHLMLNRTVXZ [ [ [L  )$ / /8 ; ;   ' '(JMBEIMI(,b" 6 6 6  #'' G<<RRRR 0E0QRRRRR {*D FARRRR 0E0QRRRRR  7$)CDDD)A-  )006666K00222%%&HJ]`oJoquwy{}~~~ 1r%zwb.tools.cmdlineClientStart Command Line ClientzCommand Line Clientcpddl}ddl}d|jjvrxd}t jj|}|dkr%tj ddddddSt jj |}d}nd|jjvr6| d krd }nd }d}|jd}|d }d |z}nD|jddddd}|jd}d}|jddddd}|d}|jd} | r+| dddd} nd} t jjjjdd} | dkrk| s1tjd} d|j| ||||| fz} |j d| zdS| dkrj| s1tjd} d| dd ||||| fz} t1j| d!"dS| s1tjd} | sd} d| ||||| fz} |j} d#| vr | d#d$ksd%| vr | d&rd$| d&<t1jd'd(t9d)zd*| zzd+zgd,| -dS).Nrsshz 127.0.0.1rz"Could not open SSH tunnel to host.r.r/rWindows. localhostMySQLz --socket=r\z\\"z\"rrrr mysqlclientdarwinrz&\"%s\" \"-u%s\" \"-h%s\" -P%i %s -p %sz > > >11  ! !ohttps://edelivery.oracle.com/EPD/Search/get_form?product=18251z www.mysql.com eDeliveryMySQL UtilitieszThe command line MySQL Utilities could not be located. To use them, you must download and install the utilities package for your system from %s. Click on the Download button to proceed.z Download...Cancelr/) rlrqrrinfoeditionr1rBrEr<open_url) utilities_urlsource_descriptions r#process_not_found_utilsr#sDGHKDTD\`kDkDk@@X-0HK,<,D ,S,SYd $$%69SVh9h!.x ==AG PP !!-00000 PPr%zwb.tools.utilitiesShellzStart Shell for MySQL UtilitieszOthers/Menu/UngroupedzMySQL Utilities Shell)r&rr'cx ddl}ddl |dkrd}dD]\} j|s j j|ddd} j|r|}n]t fd jdd Drd }tj |d dS|rd |z}tj |d dStdS|dkrbt fd jdddgzDr jddStdSt fd jddDstdSt}|rNddl }|jdtj\}} j|d} | d| d| d|z| d|  j|dd|vrtj|dd|gdS j} d| vr | dd ksd!| vr | d"rd | d"<tj dd#|d$|d%gd&| 'dSt5d())Nrr)zProgramFiles(x86) ProgramFilesrr mysqluc.exec3~K|]7}jj|dV8dS)r&N)rrrr^frs r#r`z&startUtilitiesShell..sAdd!rw~~bgll1m<<==ddddddr%r;zstart cmd /K "mysqluc"Trzstart cmd /K "%s"Darwinc3RK|]!}j|dzV"dSz/mysqlucNrrr(s r#r`z&startUtilitiesShell..#s5ggrw~~a l++ggggggr%rrzosascript -e 'tell application "Terminal" to do script "mysqluc -e \"help utilities\""' -e 'tell front window of application "Terminal" to set custom title to "MySQL Utilities"'c3RK|]!}j|dzV"dSr-r.r(s r#r`z&startUtilitiesShell..(s5VVA27>>!J,//VVVVVVr%zdelme.)rdirw+z4echo "The following MySQL Utilities are available:" zmysqluc -e "help utilities" z rm -f "%s" zsh -i rz-errrrrrz -e z &Frz#Terminal program could not be found)rrrrrrrrrrrr#r$rfmkstempr1r2r3r4fdopenrDrichmodrrr RuntimeError) r guessed_pathvarnamerr r rffd setup_scriptr)r rs @r#startUtilitiesShellr;sOOO IIII%% <  G29W%% 7<<  ' 2 2G=NP]^^Dw~~d## #   ddddyryQWGXGXG^G^_bGcGcddd d d &/G  Wd 3 3 3 3 3 3  &*\9G  Wd 3 3 3 3 3 3 # % % % % %   h & & ggggYRYv5F5F5L5LS5Q5QUeTf5fggg g g & BIO P P P P P # % % % % %VVVV69J9J9P9PQT9U9UVVVVV J # % % % % %-//D J#38#38IYIYInInIpIp#q#q#q LBIb$''OPPP78885666 """ u---$$OT4L$IJJJJJZ__..F+v55&AS:TXa:a:a*f44&:O409}-$ittt\\\7Z%[chntuuuuuu"#HIIIr%c*eZdZfdZdZdZxZS)CheckForUpdateThreadcrd|_d|_tt|dSNF) is_runningfinishedsuperr=__init__)self __class__s r#rCzCheckForUpdateThread.__init__Ds4  "D))2244444r%c |jrdSd|_ ddl}ddl}ddl}ddl}ddl Gddt j}G fdd|jj |jj }|j }|}|j }| || ||j|||jd|_dS#t"$r)}d|_dt%|z|_Yd}~dSd}~wwxYw) NTrc&eZdZdZdZdZdZdS)+CheckForUpdateThread.run..LoginFormcDtj|d|dtjd}|d|dtjd}|dtj|_|j dtj|_ |j d|j |j | |dd|||dd|j |j|j |j dS) Nz)Apply Changes to MySQL configuration FileF TApplyrii)r1r6rCr9newBox set_padding set_spacingr apply_btnset_text cancel_btnadd_clicked_callbackcancel_clickedru set_contentset_size apply_clicked)rDcontent button_boxs r#rCz4CheckForUpdateThread.run..LoginForm.__init__TsbK((t444NN#NOOO$mE22G''+++''+++!'t!4!4J**2...%+%5%7%7DNN++G444&,&6&8&8DOO,,X666O889LMMMKK E4888$$W---MM#s+++N778JKKKO889LMMMMMr%cF||j|jdSr[)r;rOrQrDs r#showz0CheckForUpdateThread.run..LoginForm.showls NN4>4?CCCCCr%c.|dSr[rirZs r#rVz9CheckForUpdateThread.run..LoginForm.apply_clickednJJLLLLLr%c.|dSr[r]rZs r#rSz:CheckForUpdateThread.run..LoginForm.cancel_clickedqr^r%N)__name__ __module__ __qualname__rCr[rVrSrRr%r# LoginFormrHSsVNNN0DDD!!!!!!!!r%rccNeZdZdZdZGddejZdZfdZ dS).ProxyAuthenticationHandlerzProxy-authorizationrc&eZdZdZdZdZdZdS)TCheckForUpdateThread.run..ProxyAuthenticationHandler.ProxyAuthenticationFormc tj|dtj|ddtjd}|d|d||| dtj }|d| d| d| d|dtj|_tjtj|_|tjdd d d d tjtjz||jd dd d tjtjz|tjd d d d dtjtjz||jd dd dtjtjz||d d tj|_|jd tj|_|jdtjd }tj||j|j||dd |j|j |j|j!dS)NiFrJProxy Authenticationr z User Name:rr0z Password:Tr.r)"r1r6rCFormDialogFramerUrLrNrMrTr9newTable set_row_countset_row_spacingset_column_countset_column_spacing newTextEntryusername PasswordEntryrrunewLabel HFillFlag VFillFlag HExpandFlagr okrPcancelrBadd_end_ok_cancel_buttonsadd_endrRacceptedcanceled)rDboxrWrXs r#rCz]CheckForUpdateThread.run..ProxyAuthenticationHandler.ProxyAuthenticationForm.__init__zs ,,T49OPPP c2...$mE22++++++((---'=>>>"(/"3"3++B///--a000//33300333222666(.(;(=(= (.(;F.ProxyAuthenticationHandler.ProxyAuthenticationForm.runs#~~dDK@@@r%c0|ddS)NT end_modalrZs r#r}z]CheckForUpdateThread.run..ProxyAuthenticationHandler.ProxyAuthenticationForm.acceptedst,,,,,r%c0|ddSr?rrZs r#r~z]CheckForUpdateThread.run..ProxyAuthenticationHandler.ProxyAuthenticationForm.canceledsu-----r%N)r`rarbrCrr}r~rRr%r#ProxyAuthenticationFormrgysW&H&H&HNAAA---.....r%rc|}||_|j|_|j|_dSr[)rrresultrsget_string_valuer)rDdialogs r#request_authenticationzSCheckForUpdateThread.run..ProxyAuthenticationHandler.request_authenticationsP!99;;F"(**,,DK$*O$D$D$F$FDM$*O$D$D$F$FDMMMr%cF|j}|jdkr#tjdddddtj|jd|jdkrdS|jdz|_|jd |j }d |  d z}| |jd|krdS||j||j||j S) Nrrjz9The proxy authentication was incorrect. Please try again.r.r/TFr0rzBasic ascii)timeout)rattemptsr1rBrCperform_from_main_threadrrrsr b64encodeencodedecode get_header auth_headeradd_unredirected_headerparentopenr) rDreqfpcodemsgheaders authorityrawauthbase64s r#http_error_407zKCheckForUpdateThread.run..ProxyAuthenticationHandler.http_error_407s* #I}q(((334JMHJNPRTVWWW$==d>Y[_```{e++#t$(MA$5DM%)]]]DMMBC#f&6&6szz||&D&D&K&KG&T&TTD~~d&6==EE#t//0@$GGG;++C+EEEr%N) r`rarbrrr1r6rrr)rsr#ProxyAuthenticationHandlerrets~3 ..........fk......bGGG FFFFFFFr%rz*http://workbench.mysql.com/current-releasez=%s Please verify that your internet connection is available.)r@urllib.request urllib.error urllib.parsejsonrr1r6requestAbstractBasicAuthHandler BaseHandler ProxyHandler build_opener add_handlerinstall_openerloadurlopenrArkr) rDurllibrrcr proxy_handlerproxy_auth_handleropenerrrs @r#rzCheckForUpdateThread.runIs ?  FD h = = = = = = = = = = = = KKK MMM ! ! ! ! !FK ! ! !BO FO FO FO FO FO FO FV^-TV\VdVpO FO FO Fb#N7799M!;!;!=!= ^0022F   } - - -   1 2 2 2 N ) )& 1 1 1 &."8"89e"f"fggDIII h h hDIZ]`af]g]ggDJJJJJJJ hsDD E "EE c>|rdS|jsGt|dr5tjdt |jdddny tj j j j j tj j j j jtj j j j jf}t!d|jddD}||krqtjd d dd |Dzd d dtjkrtjdn#tjdddddnG#t,$r:}tjdt |dddYd}~nd}~wwxYwtjdd|_d|_dS)NTrzCheck for updates failedr.r/c34K|]}t|VdSr[)r)r^rs r#r`z?CheckForUpdateThread.checkForUpdatesCallback..s(&[&[!s1vv&[&[&[&[&[&[r% fullversionrzNew Version AvailablezThe new MySQL Workbench %s has been released. You can download the latest version from http://www.mysql.com/downloads/workbench.c,g|]}t|SrR)rk)r^nums r# z@CheckForUpdateThread.checkForUpdatesCallback..sO`D`D`Dnqadehaiai`D`D`Dr%z Get it Nowz Maybe Laterz(http://www.mysql.com/downloads/workbenchzMySQL Workbench is Up to Datez> 4y btW%% g ++,FDJY]_acefff b#&8;#3#;#GIYIaImorowozopHpV#W!&&[&[ty7O7U7UVY7Z7Z&[&[&[![![!O33'445LOSVYV^V^`D`DuC`D`D`DVFVFOF2> rSSV\Veff(112\]]]$112QTRTXZ\^`aaa b b b ++,FE TXZ\^`aaaaaaaa b  ((222 us&D0F G!0GG)r`rarbrCrr __classcell__)rEs@r#r=r=Cs]55555 IhIhIhVr%r=zwb.tools.checkForUpdateszCheck for Updatesc>tjrdStjrtatt jdt j dtj }dS)NrzChecking for updates...g?) threadr@rAr=startr1r2r3rrB add_timeoutr)ignores r#checkForUpdatesrsv q (%'' LLNNN JNN$$%>???   ) )#v/M N NFFFr%cFeZdZdZdZdZdZejfdZ dZ dZ dS) SSLWizard_GenerationTaskc0||_||_i|_dSr[)mainr config_file)rDrrs r#rCz!SSLWizard_GenerationTask.__init__s  r%cvt|d|dtj||ddddS)Nrr.r/)rr1rBrC)rDtitlers r# display_errorz&SSLWizard_GenerationTask.display_error sBwww/000##E7D"bAAAAAr%c  tj|jjr)tj|jjs;t d|jjztj|jjdtj|jr>$)"=>> =bgmmTXT]ToFpFp =CdiFaabbb4e<<<w~~di(( ty1I1I ""#:>$),, +#001CFMOWYaceffjpj}}}&&'9;XYYY 5E***4      13UYZY`befgbhbhjmnwoCoEoEkFkFYG4G H H Hw"}}ttttt55555  s&C+E8/A+E8E88 G*AG%%G*ctj|jd|z|j|<t |j|d}|d|ddg|jj|zdz| dS)Nzattribs-%s.txtr1z6[req] distinguished_name=distinguished_name prompt=no rz[distinguished_name]) rrrrrrDr generate_pageget_attributesri)rDtargetr)s r#generate_config_filez-SSLWizard_GenerationTask.generate_config_file$s#%7<< ;Kf;T#U#U !&)4 0 0 KLLL  12TY5L5[5[\b5c5ccddeiijjj  r%c  tjdkrdnd}tj||tj|}|}|jdkr6tdt||jt|fzdSdS#t$r/}tdt|j zYd}~dSd}~wt$r;}tdt|d t|d Yd}~dSd}~wwxYw) NrTF)stdoutstderrrrz,Running command: %s Output(retcode: %d): %s z)Running command: %s ValueError exception zRunning command: z Exception: r) rrrrPIPE communicate returncoderrk ValueErrorcmdr)rDr  output_to set_shellpoutrs r# run_commandz$SSLWizard_GenerationTask.run_command,s!  #  7 7UI :?ZcdddA--//C|q  KsSZ||]^]iknorksksNttuuuu4    Cs15zzR S S S55555    IWsSTvvvvV W W W55555 s$B B D $C D 0DD c d}d}tj|d}tj|d}td|z||dgs|dd|zd Stj|js|dd d Stj|d }tj|d }tj|d } tj|d} tj|d} tj|d} tj|d} tj|d}tj|d}iddddd|d|d|d|d| d| d| d| d | d!|d"|d#|jd$d%|jd&d'|jd(}d)|zd*|zd+|zd,|zd-|zd.|zd/|zd0|zg}|D])}|tj |*d1|| || | fS)2Niopensslz ca-key.pem ca-cert.pemzChecking tool availability(%s) rrzThe SSL tool (%s) is not available. Please verify if it's installed and the installation directory is in the PATH environment variable)FNNNNNz'The specified directory does not exist.server-key.pemzserver-req.pemserver-cert.pemclient-key.pemzclient-req.pemclient-cert.pemz client.p12zprivate_key.pemztest-cert-storekeylenidaysiBca_keyca_cert server_key server_req server_cert client_key client_req client_cert client_p12 key_store private_key config_CACA config_serverServer config_clientClientz+openssl genrsa -out "%(ca_key)s" %(keylen)sziopenssl req -new -x509 -nodes -days %(days)s -key "%(ca_key)s" -out "%(ca_cert)s" -config "%(config_CA)s"ztopenssl req -newkey rsa:%(keylen)s -nodes -keyout "%(server_key)s" -out "%(server_req)s" -config "%(config_server)s"z6openssl rsa -in "%(server_key)s" -out "%(server_key)s"zopenssl x509 -req -in "%(server_req)s" -days %(days)s -CA "%(ca_cert)s" -CAkey "%(ca_key)s" -set_serial 01 -out "%(server_cert)s" -extensions v3_reqztopenssl req -newkey rsa:%(keylen)s -nodes -keyout "%(client_key)s" -out "%(client_req)s" -config "%(config_client)s"z6openssl rsa -in "%(client_key)s" -out "%(client_key)s"zopenssl x509 -req -in "%(client_req)s" -days %(days)s -CA "%(ca_cert)s" -CAkey "%(ca_key)s" -set_serial 01 -out "%(client_cert)s"T) rrrr rrrrrr)rDrrrtoolrrrrrrrrrrrrcommandsr s r#generatez!SSLWizard_GenerationTask.generate?s8dL11',,t]33 5<===y 122 7   69ADH9H I I I66w~~di(( 7   68a b b b66W\\$(899 W\\$(899 gll4):;; W\\$(899 W\\$(899 gll4):;; W\\$ 55 gll4):;; GLL'899  d D  f  w  *   *  ;  *  *  ;  *   ;! $ )$/% & T-h7' ( T-h7) 2 :F B w{A A CFL L Dv M cfl l CFL L Dv M PSY Y% *  3 3G   U[11 2 2 2 2Wk:{JNNr%cHd|_|sdS|d|d|d||j|j\|_|_|_|_|_ |_ dS)NFr r r T) rrrrrrrrrrrrZs r#rzSSLWizard_GenerationTask.runs ((** 5 !!$''' !!(+++ !!(+++jnjwjwx|yBDHDTkUkUg T\4#3T_dFVX\Xgtr%N) r`rarbrCrrrrrrrrrRr%r#rrs BBB.0:&MOMOMO`     r%rc eZdZdZdZdZdS)SSLWizard_IntroPagec2tj||ddS)Nz%Welcome to MySQL Workbench SSL Wizard)r rCrDrvs r#rCzSSLWizard_IntroPage.__init__sD%)PQQQQQr%c8|jdSr[rfinishrZs r# go_cancelzSSLWizard_IntroPage.go_cancel r%cRtjd}|d|dd}|dz }|dz }tj|}||dd|j|dd|ddS)NFzjThis wizard will assist you to generate a set of SSL certificates and self-signed keys that are required zdby the MySQL server to enable SSL. Other files will also be generated so that you can check how to zRconfigure your server and clients as well as the attributes used to generate them.T)r1rLrMrNrururWr[)rDrrlabels r# create_uizSSLWizard_IntroPage.create_uismE""  zzgg(( ud### eT*** r%N)r`rarbrCrrrRr%r#rrsDRRR     r%rc,eZdZdZdZdZdZdZdS)SSLWizard_OptionsPagecttj||dt|_|jd|j| |j|t|_|jd|jdt|_ |j d|j dt|_ |j d|j |j |j tj|jjdS)NOptionsz.Generate new certificates and self-signed keyszUpdate the connectionTzUse default parametersFz Clear Files)r rCr generate_filesrP set_activecheck_all_files_availability set_enabledupdate_connectionuse_default_parametersr clear_buttonrRclear_button_clickedrrrr results_pathrs r#rCzSSLWizard_OptionsPage.__init__sgD%333)mm $$%UVVV &&4+L+L+N+N'NOOO ''(I(I(K(KLLL!, ''(?@@@ ))$///&1mm# #,,-EFFF #..u555%KK ""=111 ..t/HIII %%bgmmDI4J&K&KLLLLLr%c8|jdSr[rrZs r#rzSSLWizard_OptionsPage.go_cancelrr%ctj|jjsdStjtj|jjdsdStjtj|jjdsdStjtj|jjdsdSdS)NFrrrT)rrrrr+isfilerrZs r#r%z2SSLWizard_OptionsPage.check_all_files_availabilitysw}}TY344 5w~~bgll49+A=QQRR 5w~~bgll49+ACTUUVV 5w~~bgll49+ACSTTUU 5tr%c tj|jjD]}tj|jj|} tj|rtj|a#t$r.}td|dt|Yd}~dSd}~wwxYw|j d|j d|jdS)Nz"SSL Wizard: Unable to remove file rTF)rlistdirrr+rrr.unlinkrArrkr#r$r&generate_files_changed)rDfilenamefilepathrs r#r*z*SSLWizard_OptionsPage.clear_button_clickeds 49#9::  Hw||DI$:HEEH 7>>(++(Ih'''    RUVWRXRXRXYZZZ  &&t,,, ''... ((*****s 3B B8 "B33B8ctjd}|d|dd}|dz }|dz }tj|}||dd||jdd||jdd||jddtjd}|d|d||j dd|j |dd|j |dd| ddS)NFrJzQThese options allow you to configure the process. You can use default parameters zVinstead of providing your own, allow the generation of the certificates and determine z1whether to update the connection settings or not.T) r1rLrNrMrurur(r#r'r)rWr[)rDrrrrXs r#rzSSLWizard_OptionsPage.create_uisWmE""  fllFF(( ud### +UD999 #UD111 &t444]4(( r"""r"""t(%666 eT*** UD111 r%N)r`rarbrCrr%r*rrRr%r#r r sbMMM*    + + +r%r c8eZdZdZdZdZdZdZdZdZ dS) SSLWizard_GeneratePagectj||dtj|jjddd|_tj|jjddd|_ tj|jjddd|_ tj|jjddd|_ tj|jjddd|_ tj|_|jd |jd |jd |jd |jd |ddd\}|_||dd\}|_||dd\}|_||dd\}|_||dd\}|_||dd\}|_||dd\}|_d}|dz }tjd|_|jd |jd tj ||_!tj"tj#|_$|j$%d!|j$&|j|j&|j!dd"|j&|j$dd"tj d#|_'dS)$Nz*Generate certificates and self-signed keysrrrrrrrrJrzCountry:z2 letter country code (eg, US)zState or Province:zFull state or province namez Locality:zeg, cityz Organization:z eg, companyz Org. Unit:zeg, section, departmentzEmail Address:r/zCommon:zAeg, put the FQDN of the server to allow server address validationz_Now you must specify the parameters to use in the certificates and self-signed key generation. zhThis may include some data refering to youself and/or the company you work for. All fields are optional.FrzOptional ParametersTz|The wizard is ready to generate the files for you. Click 'Next >' to generate the certificates and self-signed key files...)(r rCrrrrr+rrrrrrr1rmtablerMrprnrorq add_label_row country_code state_name locality_nameorg_nameorg_unit email_address common_namerLparameters_boxrNruparameters_labelnewPanelTitledBoxPanelparameters_panelr9ru default_label)rDrvrowrs r#rCzSSLWizard_GeneratePage.__init__smD%)UVVVw||DI$:MJJRRSWY\]] 7<< (>@QRRZZ[_adee',,ty'=?OPPXXY]_bcc7<< (>@QRRZZ[_adee',,ty'=?OPPXXY]_bcc_&&  r""" ##A&&&   ### ""1%%% %%a(((!%!3!3AzCc!d!dT #11#7KMjkkT_"&"4"4S+z"R"RT !//_mTTT]!//\C\]]T]"&"4"4S:JB"O"OT  $ 2 23 DH!I!IT t}}$mE22 ''+++ ''+++ & 8 8 &0E F F ''(=>>> !!$*---  5udCCC  5udCCC#_.mnnr%c tj}|jtj|ddd||dztj|j|dd||dztjtjztj|}|tj|j|dd||dztj| dd|dz|fS)NTrr0rr9dri) r1rrr=rururvrx set_styleSmallHelpTextStylerU)rDrLrhelpcontrolls r#r>z$SSLWizard_GeneratePage.add_label_row+s%'' vud33Q3AvGWXXX w1c3q5&2B6CU2UVVV OD ! ! F-... q!QSUF,<===b!!!1ug~r%c|jt||j| dSr[)rFr[boolrKrDrs r#set_show_parametersz*SSLWizard_GeneratePage.set_show_parameters5s>   e--- E *****r%cFd}d}|dkrd}g}|d||jdz|d||jdz|d ||jd z|d ||jd z|d ||jdz|d||j|z|d||jdz|S)Nc\|d}|s|S|S)Nzutf-8)rr) text_control default_value current_values r#get_value_defaultz@SSLWizard_GeneratePage.get_attributes..get_value_default:s5(99;;BB7KKM  %$$ r%rr issuerzC=%sUSzST=%s CaliforniazL=%szRedwood ShoreszO=%sOraclezOU=%srzCN=%szemailAddress=%sz any@localhost)rwr?r@rArBrCrErD)rDrr] default_cnrSs r#rz%SSLWizard_GeneratePage.get_attributes9sG ! ! ! ! T>>!J  ++D,=tDDDEEE ,,T_lKKKLLL ++D,>@PQQQRRR ++DM8DDDEEE ,,T]GDDDEEE ,,T-=zJJJKKK "%6%6t7I?%[%[[\\\r%c|j|jdd|j|jdddS)NFT)rWrurFrKrZs r#rz SSLWizard_GeneratePage.create_uiOsB ,eT::: +UD99999r%c8|jdSr[rrZs r#rz SSLWizard_GeneratePage.go_cancelSrr%c td|jjzt|j|jj}||jdkrdS|j|_|j|_|j|_|j |_ |j |_ ttj |jjdd}|dtj dtj |jddtj dtj |jddtj dtj |jddtj dtj |j ddtj dtj |j ddd z|td t'|jz|jdS) NzSetting up in path %s F my.cnf.sampler1a# Copy this to your my.cnf file. Please change to the corresponding # directory where the files were copied. [client] ssl-ca=%(ca_cert)s ssl-cert=%(client_cert)s ssl-key=%(client_key)s [mysqld] ssl-ca=%(ca_cert)s ssl-cert=%(server_cert)s ssl-key=%(server_key)s z rr)rrrrrz&SSL Wizard generation task result: %s )r rr+rrrrrrrrrrrrrDbasenamerrirk go_next_page)rDtaskr)s r#go_nextzSSLWizard_GeneratePage.go_nextVs-,ty/EEFFF' 493IJJ  ;%   F| +/+/ di4oFF M M    "w||M27;K;KDL;Y;YZZbbcgilmm!w||M27;K;KDL\;];]^^ffgkmpqq!w||M27;K;KDO;\;\]]eefjlopp!w||M27;K;KDL\;];]^^ffgkmpqq!w||M27;K;KDO;\;\]]eefjlopp    "  rWrrrrjrRr%r#r7r7s)n)n)nV+++,:::#!#!#!#!#!r%r7c&eZdZdZdZdZdZdS)SSLWizard_ResultsPagec@tj||dd|_dS)NResultsT)r rCr'rs r#rCzSSLWizard_ResultsPage.__init__}s%D%333!%r%c||_dSr[)r'rVs r#set_update_connectionz+SSLWizard_ResultsPage.set_update_connections!&r%c|jr|jjjdd|jjjd<|jjjdd|jjjd<|jjjdd|jjjd<d|jjjd<|j dS)NrrsslCAsslCertsslKeyr<useSSL) r'rrrrr_rrrrhrZs r#rjzSSLWizard_ResultsPage.go_nexts  ! 96:i6M6U6]6]^bdg6h6hDIN *7 38< 8O8[8c8cdhjm8n8nDIN *9 57;y7N7Y7a7abfhk7l7lDIN *8 478DIN *8 4      r%c *d}|jr|dz }|d|jjjdzz }|dt t j|jjd ddzz }|dt t j|jjd  ddzz }|dt t j|jjd  ddzz }|d z }tj |}|j |d d tt j|jjdd}tjtj}|||dd|j |d d |tj dt t j|jjd ddz}|j |d d dS)NzThe wizard was successful. z5Click on the finish button to update the connection. zWTo setup the server, you should copy the following files to a inside %s: rz - %s rrrrrz; and edit the config file to use the following parameters:FTrfrWriz'A copy of this file can be found in: %s)r'rr_rrkrrrr+rr1rurWrur newTextBoxVerticalScrollBar set_valuerhrUri)rDrrr)rs r#rzSSLWizard_ResultsPage.create_uiss/  ! O N NGorvr{sAsQR\s]] ]9s27<< 0F #V#VWW__`dfijjjj9s27<< 0FHY#Z#Z[[ccdhjmnnnn9s27<< 0FHX#Y#YZZbbcgilmmmmRR(( t,,, di4oFF L L'(@AA affhh'''R%%% eT222   JSQSQXQ]Q]^b^g^twFRGRGROROPTVYRZRZN[N[![\\ t,,,r%N)r`rarbrCrprjrrRr%r#rlrl|sP&&&'''!!!r%rlceZdZdZdZdS) SSLWizardctj||_|_tjtj d_ tjj j_ dt_jt#_jt'_jt+_jjjj jjjjjj jjfdjjfdjjfddS)N certificatesz SSL Wizardcrjjj Sr[)rrW options_pager( get_activerZsr#z$SSLWizard.__init__..sRdN`NtNty}zKzbzmzmzozovoOpOpr%cpjjjSr[) results_pagerprr'rrZsr#rz$SSLWizard.__init__..sKIZIpIpqurCrUr`r`rbrbJcJcr%c,Sr[)r2rZsr#rz$SSLWizard.__init__..sdFaFaFcFcr%)r rCr_conn_idrrrr1r2r3r4rr+r9r intro_pageadd_pager rr7rrlrrWr(rrpr' skip_pager#rR)rDrr_rs` r#rCzSSLWizard.__init__s?D&)))  !#fjnn.>.>.S.S.U.UWe!f!fGLL)?NN |$$$-d33 do&&&1$77 d'(((3D99 d()))1$77 d'((( ..43D3[3f3f3h3h/hiii //0A0S0^0^0`0`aaa $$):)I)T)T)V)V%VWWW 0EEGpGpGpGp q q q +@@BcBcBcBc d d d (==>c>c>c>cdddddr%ct|j|jj dSr[)rrrr#rrZs r#r2z SSLWizard.generate_files_changeds4 $$):)I)T)T)V)V%VWWWWWr%N)r`rarbrCr2rRr%r#r|r|s;eee@XXXXXr%r|c " tdt|dtjdt|jd|d tj|}tdt|zt|||}| ddS#t$r>}tdt|d tj Yd}~dSd}~wwxYw) NzRunning SSL Wizard Parent: z User Folder: z Conn Parameters: z Conn ID: rzRunning SSL Wizard %s Tz+There was an exception running SSL Wizard. z )rrkr1r2r3r4rfromgrtr|rrArrr)rr_rrrWrs r#generateCertificatesrs|mjmntjujujujuw}xBxFxFxHxHx]x]x_x_x_x_adeieyazazazaz|C|C|CD E E E N6 " "+c!ff4555 aw ' ' d mmm CPQFFFFT]ThTjTjTjklllllllllmsCC D3D  D)=rrrr threadingr>rfrworkbench.utilsrrrrrrlr1r workbench.logrrr r workbench.uir r r r ModuleInfowb_model_utilswb_catalog_utilsr$pluginexportINTrNrYSTRINGrrrrselectedConnectionrrrrr rr#r;Threadr=rrrrr r7rlr|r6rrRr%r#rs,   ((((((&%%%%%%% 9999999999////////))))))))\ 5LV[ \ \ \     /9VkHII 37  II : 0:bwLMM 37o o MMo d 3:s{=>>  ?>  3;13:>>RR?>Rj 2 1 1 1 ,6Wax`yNeff 376J6Jff6Jrjjjjj9+jjj\     -7J^qrr 37 O Osr OWWWWWWWWr*,KKKKKJKKKZz!z!z!z!z!Zz!z!z!z+++++J+++Z"X"X"X"X"X "X"X"XJ 37FK)GTTmmUTmmmr%