Xׯdh ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZddlmZmZmZmZmZddlm Z m!Z!ddl"m#Z#m$Z$ddl%Z%ddl&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,gdZ-gd Z.gd Z/d Z0d d dddd d ddddd dddddej1pdzdddddddddd dddddddddZ2dZ3dZ4Gdde5Z6Gdde j7Z8Gd d!e j9Z:Gd"d#Z;Gd$d%e j9Z<Gd&d'e<Z=Gd(d)e j7Z>Gd*d+e<Z?Gd,d-e j9Z@Gd.d/e,ZAGd0d1e*ZBdS)2N)newBoxnewLabel newButton newTextEntry newTreeViewnewTablenewRadioButton newSelectornewPanel newTabView Utilities newCheckBox newImageBoxnewScrollPanelApp) AdminSecurity PrivilegeInfoPrivilegeReverseDictSecurityAdminRolesWBSecurityValidationError)PermissionDeniedError to_unicode) log_error log_debug3)db_utils)weakcbWbAdminTabBaseWbAdminValidationConnectionWbAdminValidationBase) Select_priv Insert_priv Update_priv Delete_priv Execute_privShow_view_priv) Create_priv Alter_privReferences_priv Index_privCreate_view_privCreate_routine_privAlter_routine_priv Event_priv Drop_priv Trigger_priv) Grant_privCreate_tmp_table_privLock_tables_privmysql_native_passwordStandardT)nameauth_string_label enable_hostenable_passwordzStandard (old)zWindows NativezSupply the Windows username and/or group names that are allowed to use this account, separated by a comma (,) This account will be usable by these users whenever they are logged into Windows, without additional passwords. Example: Administrator, %sjoeFPAMzSyntax: [,= [,= ...]] See documentation for details.zSHA256 Passwordz:See the plugin documentation for valid values and details.)r3Nmysql_old_passwordauthentication_windowsauthentication_pamsha256_password*cbt|}|tj|SN)rset_text_alignmforms MiddleRighttextls ..\modules\wb_admin_security.pyrLabelrJrs)AV'((( Hcbt|}|tj|SrB)r set_stylerDSmallHelpTextStylerFs rIdLabelrOws'AKK)*** HrKc2eZdZdZd dZdZdZdZdZd S) ThreadedInputValidatorzThis class validates the changes in the associated text entry widget displaying the result in a validation label Usage: Instantiate this class and set is callback method to be the callback of the associated text entry. z#33aa33#aa3333c||_||_||_||_||_||_d|_d|_tj |_ d|_ gd|_ d|_ dS)N)BlankWeakzMedium strengthStrongz %s password.)owner text_entryvalidation_labelctrl_bedelaycolorslast_keypress_timetext_to_validate threadingLocklocktimerstrengthmessage)selfrYrZr[r\r]r^s rI__init__zThreadedInputValidator.__init__sk $ 0   "& $N$$  EEE % rKc|j|dkrdnd}|dkr |jdn|j|j|z}|j||j||jdS)NrRr)r^rerfr[ set_colorset_textrY set_dirty)rgestimatecolorrfs rIupdate_validation_labelz.ThreadedInputValidator.update_validation_labels AAA15&.!mm$-""$,W_I`:` ''... &&w/// rKcn|j5tj|_|j|_dddn #1swxYwY|jr|js?tj |j |j |_|j dSdSrB) rctimer_rZget_string_valuer`rdis_aliveraTimerr]validatestartrgs rIcallbackzThreadedInputValidator.callbacks Y G G&*ikkD #$(O$D$D$F$FD ! G G G G G G G G G G G G G G Gz !4!4!6!6 "T]CCDJ J         s7A  AAcJ|jr|jdSdSrB)rdcancelrws rIshutdownzThreadedInputValidator.shutdowns0 :  *         rKcPdfd}jo djjv}|r|n} j5j}j}dddn #1swxYwYt j|z jkrm|nj5d_dddn #1swxYwY||}tj tj j |dt jdtj dS)NcZ|dkrdSt|dkrdSd}t|dkr|dz }tjd|r|dz }tjd|rtjd|r|dz }tjd |r|dz }|d krdn |d krd nd S) Nr5rrR z\d+z[a-z]z[A-Z]z(\W|_)+)lenresearch)passwdrms rIcompute_password_strengthzBThreadedInputValidator.validate..compute_password_strengths||q6{{QqH6{{b  A y'' A y&)) bi.H.H A yF++ A !AAA!AAA -rKc|dkrdSjdtj|z}|r*|r|d}n |S|dkrdn |dkrdndS) Nr5rz'SELECT VALIDATE_PASSWORD_STRENGTH('%s')rR2Krr)r\ exec_queryrescape_sql_stringnextRow intByIndex)rresultrmrrgs rIquery_password_strengthz@ThreadedInputValidator.validate..query_password_strengths||q\,,-VYaYstzY{Y{-{||F 9&..** 9!,,Q//00888 2 11 2 11 -rK)validate_passwordzVALIDATE PASSWORDT)rmFg?)r\is_sql_connectedserver_active_pluginsrcr_r`rqr]rDr perform_from_main_thread functoolspartialrosleepdriver_shutdown)rgrquery_strengthstrength_functionr_r`rmrs` @rIruzThreadedInputValidator.validates - - -( - - - - - -6688N=gkokwlN>N7Ed33Kd  9 9%)%<"#'#8  9 9 9 9 9 9 9 9 9 9 9 9 9 9 9y{{//4:==#+Y11,0D)111111111111111,,-=>> 99):KDLhs{:|:|:|:?AAA JsOOO  ((*****s$AA #A B$$B(+B(N)rRrS) __name__ __module__ __qualname____doc__rhrorxr{rurKrIrQrQ~sn & & & &3+3+3+3+3+rKrQc(eZdZddZdZdZdZdS)AddSchemaPrivilegeFormr5c | tj|dtjtjz|d||_td}|d| d| |td|z}| |ddttj}|d| |ddt}| ||d|d|d|d|d t)tj|_|jd|j|j|jd | |jd d d d tj| t;d ddd d tjtjzt)|j|_ |j |j|j d| |j d d d dtj| t;dddd dtjtjztC|_"| |j"d dd dtjtj#zt)|j|_$|j$|j|j$dtjd}| |j$dd| |d d ddtjtjzt;d}|%tj&| |ddddtjtjztO|_(| |j(d dddtjtj#z|jj)D]}|j(*|td} | | dd| dtW|_,|j,d| -|j,ddtW|_.|j.d| -|j.dd|/dd||0dS)NzNew Schema Privilege DefinitionFrr~zVSelect the Schema for which the user '%s' will have the privileges you want to define.TSchemarzAll Schema (%)rrRz(This rule will apply to any schema name.rzSchemas matching pattern:zThis rule will apply to schemas that match the given name or pattern. You may use _ and % as wildcards in a pattern. Escape these characters with \ in case you want their literal value.zSelected schema:z7Select a specific schema name for the rule to apply to.OKCanceliR)1rDFormrh FormResizableFormMinimizable set_titlesecmanr set_padding set_spacing set_contentraddr TitledBoxPanelr set_row_countset_column_countset_row_spacingset_column_spacingr RadioButtonnew_idschema1 set_activeadd_clicked_callbackschema_radio_changedrk HFillFlagrO VFillFlaggroup_idschema2r schema2entry HExpandFlagschema3rCTopLeftr schema3sel schema_namesadd_itemrokadd_endrzset_sizecenter) rgruserboxlabelpaneltablealignboxitembboxs rIrhzAddSchemaPrivilegeForm.__init__sQ T4)=@V)VWWW 8999 Umm   qtxxyy ud###.// !!! tT"""  % ! A q!!! a      ###%f&8&?&?&A&ABB  %%% ))$*CDDD ./// $,1aF,<=== &CDDaAqRXRbcicsRsttt%dl&;&;&=&=>>  ))$*CDDD 9::: $,1aF,<=== &XYY[\^_abdegmgwx~xHgH I I I(NN $#Q1a1A&BT1TUUU%dl&;&;&=&=>>  ))$*CDDD 0111='' T\5$/// (Aq!Q(89I(IJJJPQQ V^,,, %Aq!V%5f6F%FGGG%-- $/1aAv/?@R/RSSSK, + +D O $ $T * * * *d|| eT""" ++  TWeT***kk  X&&& T[%... c3 !!### rKc|j|j|j|j|j|jdSrB) r set_enabledr get_activerrr async_refreshupdate_schemasrws rIrz+AddSchemaPrivilegeForm.schema_radio_changed)sj %%dl&=&=&?&?@@@ ##DL$;$;$=$=>>> !!$"566666rKc|j}|j|jjD]}|j|td|jD]:}|j ||kr|j |;dSNr) rrrrclearrrrrangeget_item_countget_item_title set_index)rgselected_schemarindexs rIrz%AddSchemaPrivilegeForm.update_schemas/s,7799 K, + +D O $ $T * * * *1do<<>>?? 1 1E--e44GG))%000 1 1rKc>||j|jr||jrd}n^|jr|j}n+tj |j }|SdS)N%) run_modalrrzrrrrrrrescape_schema_wildcardsr)rgschemas rIrunzAddSchemaPrivilegeForm.run:s >>$'4; / / |&&(( ^((** ^*;;==!9$/:Z:Z:\:\]]MtrKNr5)rrrrhrrrrrKrIrrsZJJJJX777 1 1 1     rKrcVeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd S)SecuritySchemaPrivilegescL tj|d||||_d|_||d| di|_ ttj |_ |j tjddd|j tjddd|j |j |j|j dd ||j ddt+d}|d|t-d ddt/|_|jd |jd ||jdd|j|jt/|_|jd ||jdd|j|jt/|_ |j d||j dd|j |jj!|j "d||ddtGd|_$||j$ddt+d}|d|%dtMtj'x|_(}|)dt+d}| d||_*||||ddtMtj'x|_+}|)dt+d}| d||_,||||ddtMtj'x|_-}|)dt+d}| d||_.||||dd||ddt+d}|dt/|_/|j/d|j/d||j/dd|j/|j0t/|_!|j!d||j!dd|j!|j1||dd|2dS)NFr~rT Privilegesi dzpSchema and Host fields may use % and _ wildcards. The server will match specific entries before wildcarded ones.z Add Entry...z Add Entryz Delete EntryRevoke All PrivilegesImmediately remove all privileges from the account, from every object at all levels. The account itself will be left untouched and logins will still be possible.r5z Object Rightsz DDL Rightsz Other Rightsz Select "ALL"z Select Allz Unselect All)3rDBoxrh set_managedset_release_on_add_ownerdirtysuspend_layoutrrschema_rights_checksr TreeFlatList privs_list add_columnStringColumnType end_columnsadd_changed_callbackschema_priv_selected set_min_sizerrrOradd_entry_buttonrkset_namerr add_entrydel_entry_button del_entryrevoke_all_button revoke_all set_tooltiprschema_priv_labelset_homogeneousr rschema_object_privs_panelrobject_rights_boxschema_ddl_privs_panelddl_rights_boxschema_other_privs_panelother_rights_box grant_allgrant_all_schema_privsrevoke_all_schema_privs resume_layout)rgrYrhboxrr bottom_boxs rIrhz!SecuritySchemaPrivileges.__init__Js D%(((  !!!     $&!%f&9:: ""6#:Hc4PPP ""6#:L#uUUU ##%%% ,,T-FGGG $$R--- $---d||  LMMOTVZ [ [ [ )  &&~666 &&{333 T*E4888 224>BBB )  &&~666 T*E4888 224>BBB!* ''(?@@@ T+UD999 33DK4JKKK **,P Q Q Q ud###!)" '555d||  T"""19&:O1P1PP& (((Umm !$ # d###.6v7L.M.MM#e  %%%Umm ! # d###089N0O0OO% '''Umm  # # t$$$ ud###D\\ q!!!# ///  ---4>5$777 ++D,GHHH#++   0004?E4888 ,,T-IJJJ UD))) rKc |jrdS|jjjj}t D]}||vrt }tj|d\}}| ||r| || |j |j |dd||j|<tD]}||vrt }tj|d\}}| ||r| || |j |j|dd||j|<t"D]}||vrt }tj|d\}}| ||r| || |j |j|dd||j|<dS)N)r5NF)rrrYrglobal_privilege_namesSCHEMA_OBJECT_RIGHTSrrgetrkrrschema_priv_checkedr rSCHEMA_DDL_RIGHTSr SCHEMA_OTHER_RIGHTSr)rgrr6cbrdescs rIupdatezSecuritySchemaPrivileges.updates.  $  F!%!2!9!P( 1 1D111B'+D*==KE4 KK    %t$$$  # #D$< = = =  " & &r5% 8 8 8.0D %d + +% 1 1D111B'+D*==KE4 KK    %t$$$  # #D$< = = =   # #Bu 5 5 5.0D %d + +' 1 1D111B'+D*==KE4 KK    %t$$$  # #D$< = = =  ! % %b% 7 7 7.0D %d + + 1 1rKc,g}|jD].\}}|r||/|j}|dkrt ||jjj j |_ d|D}| |j |dd|pd|jdS)NrcDg|]}tj|ddS rrr.0ps rI z@SecuritySchemaPrivileges.schema_priv_checked..s*AAAa]&q#..q1AAArKrR, none)ritemsrappendrget_selected_rowsetr_selected_user schema_privsentries privilegessort node_at_row set_stringjoinrl)rgprivsr6rselplists rIrz,SecuritySchemaPrivileges.schema_priv_checkeds17799 # #HD"}} # T"""o..00 !88NQRWjjDK & 3 ;C @ KAA5AAAE JJLLL O ' ' , , 7 7499U;K;K;Uv V V V rKclt|jjj|jjj}|}||jjj|t}| |jjj| ||j |j t|jjjjdz ||jdSdS)NrR)rrrYrr/usernamerr0rr.refresh_entry_listshow_privilegesr select_noder4rr1rrl)rgaddformrentrys rIrz"SecuritySchemaPrivileges.add_entrys():)A4;C]Cfgg  K.;EEfceeTTE  # #DK$>$K L L L   ' ' ' O ' '(C(CC HbHoHwDxDxyzDz({({ | | |  % % ' ' ' K ! ! # # # # #  rKc|j}|sdS|jjj|j||||j |j d|j d|jj ddSNT)rget_selected_noderr/r0r row_for_noderemove_from_parentrrlrrrrefresh_button)rgr8s rIrz"SecuritySchemaPrivileges.del_entryso//11  F "/99$/:V:VWZ:[:[\\\     !!###  ))$/// ))$/// "..t44444rKc|j}|r |jjs|ddS|jjjj|j|}||dSrB)rrCrr/r=r0r1rD)rgr8r@s rIrz-SecuritySchemaPrivileges.schema_priv_selectedso//11 ($+4 (   & & & & &K.;CDOD`D`adDeDefE   ' ' ' ' 'rKc|jD]6\}}|dkr|d!|d7||jdS)Nr0TF)rr+rrrrl)rgr6rs rIrz/SecuritySchemaPrivileges.grant_all_schema_privss17799 % %HD"|## d#### e$$$$   """ rKc|jD]}|d||jdSNF)rvaluesrrrrl)rgrs rIrz0SecuritySchemaPrivileges.revoke_all_schema_privssa+2244 ! !B MM%    """ rKc*||dk|j|||4|jd|jd|ddSNTF)rr unset_dirtyr<rrr=)rgrs rI show_userz"SecuritySchemaPrivileges.show_users &&& !!! %%%    ! - -d 3 3 3  ! - -e 4 4 4 T"""""rKc\|j|r|jpgD]}|j}|d|jd|jD}||dd|pddS)NrcDg|]}tj|ddSr"r$r%s rIr(z?SecuritySchemaPrivileges.refresh_entry_list..3s*LLLa]&q#..q1LLLrKrRr)r*) rrr1add_noder5dbr2r3r6)rgrr@rowr9s rIr<z+SecuritySchemaPrivileges.refresh_entry_list.s *dl0b : :E/**,,C NN1eh ' ' 'LL5;KLLLE JJLLL NN1dii..8& 9 9 9 9  : :rKc|j|dk|j|dk|j|dk|r|j|j}}d|jjjd|jjj d}d|vsd|vr|dkr|dz }n|d|zz }n|d|zz }|j ||j d |j d |jd |jD]\}}|||vdS|j d |j d |j d |jd |jD]\}}|d dS) Nz The user ''@'z' _rz4will have the following access rights to any schema:z?will have the following access rights to schemas matching '%s':z9will have the following access rights to the schema '%s':Tr5F)r rr rrSr2rr/r;hostrrkrrrrr+r)rgr@rSr7rGprivchecks rIr=z(SecuritySchemaPrivileges.show_privileges9s &225D=AAA #// >>> %11%4-@@@  (%"2BB,0K,F,O,O,OQUQ\QkQpQpQpqDbyyC2II99RRDD]`bbbDDSVXXX  " + +D 1 1 1  ! - -d 3 3 3 N & &t , , , O ' ' - - -#8>>@@ 0 0 e  //// 0 0  " + +B / / /  ! - -e 4 4 4 N & &u - - - O ' ' . . .#8>>@@ ( ( e  '''' ( (rKc0|ddSrB)rOrws rIrefreshz SecuritySchemaPrivileges.refresh] trKN)rrrrhrrrrrrrrOr<r=r\rrKrIrrIs```H'1'1'1T     $ $ $ 5 5 5(((       # # #:::!(!(!(HrKrcpeZdZdZdZdZdZdZdZdZ dZ d Z d Z dd Z d ZdZdZdZdZdS)FirewallCommandscF||_|j|_Gdd}dS)NceZdZdZdZdZdS).FirewallCommands.__init__..CommandTyperrRrN)rrr simple_resultsimple_result_with_count multi_resultrrKrI CommandTyperbesM'( $LLLrKrf)rYr\)rgrYrfs rIrhzFirewallCommands.__init__bsD }           rKcd}|js)tdtjddddddS|j|\}}||fS)Nr4Executing firewall command. The connection is down. Execute firewall commandJThe connection is down. Please check if you have connection to the server.Okr5)Fr)r\sql_pingrr show_errorexec_sql)rgcommandaffcted_record_countrs rIexecute_commandz FirewallCommands.execute_commandks |$$&&  M N N N  !;>JLPRTVX Y Y Y8'+|'<'JLPRTVX Y Y Y5((11 U??5 > ^ _ _ _  !;=prvxz|~   5 rKc|js)tdtjddddddS|j|}|dkrdS|s)tdtjddddddS|D].}|s*td tjdd ddddS/|S) Nrhrirjrkr5FrsrtzJExecuting firewall command with multiple resultsets. Resultset is 'None'. zResultset is 'None'.)r\rlrr rmexec_query_multi_result)rgrorers rIexecute_multiresult_commandz,FirewallCommands.execute_multiresult_commands|$$&&  M N N N  !;>JLPRTVX Y Y Y5|;;GDD 5 5  ^ _ _ _  !;=prvxz|~   5"  F ghhh$%?AWY]_acefffuu  rKcg}|d|z}|s|S|rI|t|d|I|S)Nz=SELECT RULE FROM mysql.firewall_whitelist WHERE USERHOST='%s'rRrurr,r stringByIndexrguserhostr query_results rIget_user_ruleszFirewallCommands.get_user_ruless223rv~3AA  M""$$ E MM*\%?%?%B%BCC D D D""$$ E rKcg}|d|z}|s|S|rI|t|d|I|S)NzPSELECT RULE FROM information_schema.mysql_firewall_whitelist WHERE USERHOST='%s'rRrzr|s rIget_cached_user_rulesz&FirewallCommands.get_cached_user_ruless224FJR4STT  M""$$ E MM*\%?%?%B%BCC D D D""$$ E rKc|d|z}|sdS||dS)NzESELECT COUNT(*) CNT FROM mysql.firewall_whitelist WHERE USERHOST='%s'rrRrurr{rgr}rs rIget_rule_countzFirewallCommands.get_rule_countsZ,,-tyA.BCC 1##A&&&rKc|d|z}||dS)NzXSELECT COUNT(*) CNT FROM information_schema.mysql_firewall_whitelist WHERE USERHOST='%s'rRrrs rIget_cached_rule_countz&FirewallCommands.get_cached_rule_countsP,,.HLT.UVV##A&&&rKc6|d|zdS)Nz)CALL mysql.sp_reload_firewall_rules('%s'))rxrgr}s rI reload_ruleszFirewallCommands.reload_ruless# (()TW_)_`````rKc|d|dtj|d\}}|dk}|r|||S)Nz5DELETE FROM mysql.firewall_whitelist WHERE USERHOST='z ' AND RULE=''r)rqrrr)rgr}rulercntdeleted_somethings rIdelete_user_rulez!FirewallCommands.delete_user_rules***wwwBJB\]aBbBbBbBb,cdd !G  (   h ' ' '  rKFc|s||}n|}|rG|d|dtj|d}|r||dSt ddS)Nz?INSERT INTO mysql.firewall_whitelist (USERHOST, RULE) VALUES ('', '')TzAdding a firewall user rule failed to normalize the query. Probably, the inserted query does not translate to a firewall rule. F)normalize_queryrqrrrr)rgr}r normalized firewall_rulers rI add_user_rulezFirewallCommands.add_user_rules ! 0066MM M  )))zBzBzBDLD^_lDmDmDmDm+nooF ,!!(+++4U V V VurKc|dtj|z}|sdSd}|r&|d}|rt |}|dkrdS|S)Nz SELECT normalize_statement('%s')Fr5rR)rurrrr{r)rgqueryr~rdatas rIrz FirewallCommands.normalize_querys223UX`XrsxXyXy3yzz  5    ! ! *--a00D *#D)) R<<5 rKc|d|z}|sdS|r|dSdS)Nz9SELECT mode FROM mysql.firewall_users WHERE userhost='%s'FmodeOFF)rur stringByNamers rI get_user_modezFirewallCommands.get_user_modesT,,-hks-stt 5 >>   /&&v.. .urKc v|d|d|d}|sdS|t|dz } |rc|ddr;t d|d|d t |dd dStd d S#t$r}|j j j rM|j j j d ddr'td|j j j zYd}~d Sddl }t dt|j j j zYd}~nBd}~wt$r2}ddl }t d|zYd}~nd}~wwxYwt d|d|ddS)Nz!CALL mysql.sp_set_firewall_mode('rrFrRERRORz(Firewall: Failed to set user mode (user=z, mode=z):  z:Firewall: Returning 'True' due to lack of 'ERROR' records Trz]Firewall: Returning 'True' due to server ('%s') not responding with the 'OK' record any more rzZException while setting firewall user mode: Expecting 'OK' record for this version ('%s') z/Exception while setting firewall user mode: %s z): Unknow error )rxrrr{ startswithrrr SystemErrorrYr\target_version#is_supported_mysql_version_at_least tracebackstr Exception format_exc)rgr}rrererrrexcs rI set_user_modezFirewallCommands.set_user_modes777iqiqiqswswsw8xyy  5c,//!34 e~~ !''**55g>>!I^f^f^fhlhlhlnxyzNzNOPzQzQoRoRoRoRSTTT 5 T U U U4 ^ ^ ^z!0 TZ5G5V5z5z{|~BD6E6E {CIQ``aaattttt     svyz~{E{M{\w]w]] ^ ^ ^ ^ ^ ^ ^ ^ e e e     HIL`L`LbLbc d d d d d d d d e  \d\d\dfjfjfjklllus1A5C1C F  AE!*2E!! F .(FF c.||dS)NRESET)rrs rI reset_userzFirewallCommands.reset_users!!(G444rKc|jjd}||d}|dkS)Nz)SHOW VARIABLES LIKE 'mysql_firewall_mode'ValueON)rYr\rr unicodeByName)rg resultsetrs rI is_enabledzFirewallCommands.is_enabledsJJ&112]^^ ((11~rKN)F)rrrrhrqrurxrrrrrrrrrrrrrrKrIr_r_as  , , ,$0      '''''' aaa!!!    "6555rKr_cPeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d S) FirewallUserInterfaceBasectj|dd|_||_|jj|_dS)NFr)rDrrh rule_countrYr\rgrYs rIrhz"FirewallUserInterfaceBase.__init__s8 D%((( {* rKcdSrBr)rgrrXnew_users rIrOz#FirewallUserInterfaceBase.show_user"rKcdSrBr)rgrrXs rI update_rulesz&FirewallUserInterfaceBase.update_rules%rrKc|jSrB)rrws rIrz(FirewallUserInterfaceBase.get_rule_count(s rKcdSrBrrguserss rI refresh_usersz'FirewallUserInterfaceBase.refresh_users+rrKcdSrBrrws rI change_statez&FirewallUserInterfaceBase.change_state.rrKcdSrBr)rg current_rowrrXs rI refresh_rowz%FirewallUserInterfaceBase.refresh_row1rrKcdSrBrrws rI change_layoutz'FirewallUserInterfaceBase.change_layout4rrKcdSrBrrws rItweak_user_listz)FirewallUserInterfaceBase.tweak_user_list7rrKcdSrBrrgtabViews rI tweak_tabsz$FirewallUserInterfaceBase.tweak_tabs:rrKcdSrBrrws rIsavezFirewallUserInterfaceBase.save=rrKN)rrrrhrOrrrrrrrrrrrKrIrrs+++ rKrceZdZdZdS)FirewallUserInterfaceDummyc<t||dSrB)rrhrs rIrhz#FirewallUserInterfaceDummy.__init__Bs!**4777rKN)rrrrhrrKrIrrAs#rKrc2eZdZdZdZdZdZdZdZdS)FirewallAddRuleDialogctj|dtjtjz|d|dd|tjd|_ | |j |j tj dddtj tj|_|jdd|j|j|j |jddd|_tjd|_|jd|j|j|j |jddtjd}|j |dd|d tj|_|jd |jd|j|j||jddtj|_|jd |j|j||jdddS) NzAdd new rule or SQL statementi,Fz. Type the rule you want to add for this user. TzThis is a normalized ruler~rr) rDrrhrrrrrrcontentrrr newTextBoxSmallScrollBars query_boxr text_changedrrnormalized_checkboxrkrnormalized_clickedrr ok_buttonrok_button_pressedr cancel_buttoncancel_button_pressed)rgrY button_boxs rIrhzFirewallAddRuleDialog.__init__Hs T4)=@V)VWWW 6777 c3 }U++  &&& )[\\^ceijjj*6+ABB S))) ++D,=>>> t444#)#5e#<#<   ))*EFFF  55d6MNNN 14>>>]4((  UD111q!!!)++ %%% ""5))) ++D,BCCC4>5$777#-// ##H--- //0JKKK4-ud;;;;;rKct|jdkr|jddS|jddS)NrTF)rrrrrrrws rIrz"FirewallAddRuleDialog.text_changedqs[ t~..00 1 1A 5 5 N & &t , , , , , N & &u - - - - -rKcB|j|_dSrB)rrrrws rIrz(FirewallAddRuleDialog.normalized_clickedws2==??rKc0|ddSrB end_modalrws rIrz'FirewallAddRuleDialog.ok_button_pressedzr]rKc0|ddSrJrrws rIrz+FirewallAddRuleDialog.cancel_button_pressed}s urKc.|ddSrB)rrws rIrzFirewallAddRuleDialog.runs~~dD)))rKN) rrrrhrrrrrrrKrIrrGsr'<'<'.@.@+ +44^DDD +@@A_```(.(8(:(:% %..x888 %::4;STTT'-'7'9'9$ $--g666 $99$:QRRR!!$"tLLL4?D$7770%>>>%+__%E%E"##D$>tLLL##ND$???t,, +D11   c***4?D$777"(/2I"J"J##D$;UDIII##ND$??? ($55555rKc,d}|jd|jsd}|jd|jrd}|jdd|z}|j|dS)Nr5FzThe firewall is currently disabled. You can still manage user rules and modes, but changes will not have any effect until the firewall is enabled again.TzSThe user is not created yet. Please finish creating the user to makes changes here.z%s )rshowrrrrk)rgrGs rIrz FirewallUserInterface.build_notes u}'')) !nD INN4 = !hD INN4 $ 4     rKcTtj|d|}|jr|dt |j||dt |j||dt |j|dS|dd|dd|dddS)N@rrrdisabled) rrrrr5rrrr)rgrrrXr}s rIrz!FirewallUserInterface.refresh_rows &8>>>>E = # # % % 2  " "1c$-*E*Eh*O*O&P&P Q Q Q  " "1c$-*F*Fx*P*P&Q&Q R R R  " "1c$-*M*Mh*W*W&X&X Y Y Y Y Y  " "1j 1 1 1  " "1j 1 1 1  " "1j 1 1 1 1 1rKcd||_||_tj|d||_||_|| |d}|j r7|j |j |j|S)Nrr) current_user current_hostrrcurrent_userhostrrrrrr set_valuer)rgrrXrrs rIrOzFirewallUserInterface.show_users  +3+Ed+K+K+K+KTT R   X&&&  = # # % % U J !.:s"@@@Q1774==@@@rKrr)rD FileChooserOpenFilerset_extensionsrget_pathendswithopen readlinesrrrrr,r add_items)rgr)path is_rules_filefr added_rulesrs rIrz0FirewallUserInterface.add_from_file_button_click2s#FO44.///Y[abbb      3??$$D$(MM&$9$9DDDuMd Aq@@!++--@@@ A A A A A A A A A A A A A A A=..t/DeLL fK ) )}2243H$P]^^E""4(((( M ' '(={ K K K O % %k 2 2 2 2 2# 3 3sCC  C ctjtj}|d|dd|rt |d}td|j D]4}|j |}| d|z5| dSdS)NzSave firewall ruleszFirewall Rules (*.fwr)|*.fwrr+wrz%s )rDr/SaveFilerr1rr4r2rr get_countget_string_value_from_indexwriteclose)rgr)r9rrs rIrz/FirewallUserInterface.save_to_file_button_clickIs#FO44.///dddr|j:?dn|j:?dtstj@|_A|jA(ddd|_Bt|jB|_Dt||jA|jD|jj |_F|jA;|jFjGtstj@|_H|jH(dd|jH;|j<ts|_I|jI(dd|jI;|jJ|tdddddtjL||j:ddddtjL|tdddddtjLtjMztd |jODdk|_P|jPr_td!|_Q||jQddddtjLt|_S|jS(dd||jSddddtjL|td"ddddtjL|jS;|jTg|_U|jOD]k}|tvr,|jSWt|d#n|jSW||jUX|lnd|_Ud|_Ytd$|_Z||jZddddtjL||jIddddtjLt-d|_[t|_]|j[|j]ddtd%|_^|j[|j^dd||j[ddddtjLtjMztj_ztd&|_`||j`dddd'tjL||jAdddd'tjLtd(|_^||j^dddd'tjLtjMz||jDddd'dtjLtd)|_a||jadddd*tjL||jHdddd*tjLtd+|_b||jbdddd*tjLtjMz|jj j=r|jj j=>dd*drt/|_c|jcd,|jcdd-||jcddd*dtjL|jc|jend|_c|tSd.ddddtjL|jPrts|_Y|jY;|j<td/|_ftd0|_g||jfddddtjL||jYddddtjL||jgddddtjLtjMztSd.|_h||jhddt-d|_i|ji dtSd.|_j|jjkd1t/|_l|jld2|jldd3|jl|jm|ji|jjdd|ji|jldd|"|jid|jind|j1o|d4ti}|3d|8d|7d|5d'|6d|td5ddddtjLts|_p|jp(d6d|jp;|j<||jpddddtjL|td7ddddtjLtjMz|td8ddddtjLts|_q|jq(d6d|jq;|j<||jqddddtjL|td9ddddtjLtjMz|td:ddddtjLts|_r|jr(d6d|jr;|j<||jrddddtjL|td;ddddtjLtjMz|td<dddd'tjLts|_s|js(d6d|js;|j<||jsdddd'tjL|td=dddd'tjLtjMz|j1o|d>t-d}t-d} || dd| d| 3dt/|_t|jtd?||jtdd|jt|ju|jtdd@ttjw|_x|jxytjzd.dAd|jxytj{dBdCd|jxytj{dDdEd|jx|| |jxdd|jx}|j~ttjw|_|jytjzd.dAd|jytj{dFdd|j||j(d d|j}|j| |jdd|j1o|dGt||_|j1o|jdH|j|j1||j1ddtjdIkr|j|dn@td} | ||j| d||jdd|tjdJ|fdKd.|_||dS)LNFzSecurity Accountr~mysql_firewall_modefirewall_installedfirewall_removedTz Add AccountrRefreshApplyRevertrz User AccountsrzBSelect an account to edit or click Add Account to create a new oner rr zkConsider using a password with 8 or more characters with mixed case letters, numbers and punctuation marks.z Login Name:rrRrzTYou may create multiple accounts with the same name to connect from different hosts.cg|]}|Srrr%s rIr(z,SecurityAccount.__init__..s%E%E%EAa%E%E%ErKzAuthentication Type:zP For the standard password and/or host based authentication, select 'Standard'. r6zLimit to Hosts Matching:z% and _ wildcards may be usedz Password:rzType a password to reset it.zConfirm Password:rz Enter password again to confirm.zExpire PasswordzuForce user to change password after next login. The user will be unable to issue any command other than SET PASSWORD.r5zAuthentication String:z*Authentication plugin specific parameters.rTUpgradezUpgrade the authentication type of the account, from the obsolete format to the newer, safer one. You must set the password for the account before clicking this button.Loginz Max. Queries:<z:Number of queries the account can execute within one hour.z Max. Updates:z:Number of updates the account can execute within one hour.zMax. Connections:zCThe number of times the account can connect to the server per hour.zConcurrent Connections:zJThe number of simultaneous connections to the server the account can have.zAccount LimitsrrRoler DescriptionrzGlobal PrivilegeszAdministrative RoleszSchema Privilegesdarwing?c6|jdS)N)splitterset_divider_positionrws rIz*SecurityAccount.__init__..sDM<^<^_bEEE*400 D\\ q!!!#++   ///tt444 ,,T-=>>>#++   ***tt444 ,,T-=>>>'kk $$Y/// 001GHHHt*E4888$;; !!'***4+UD999 --dk:::&[[ ##H---4-ud;;; // <<< j))) &u  ))!,,, &&sB///)) !!%555  $/d;;;#)--/4 %&jkk $$V%5666 #UD111!%(( !\e}}    t$$$ A q!!! a      ###$  sB''' **4>::: :  , -1C1R1v1vwxz{}~11 - M ( ( , , , , M ( ( , , ,$V%9::  sB''' N$T%9::"8t}dNacgcmcu"v"v **4+B+KLLL#F$899  c2&&& ))$.999)^^ ##C,,, //0JKKK &''Aq!V5EFFF $-Aq!V-=>>> &pqqstvwyz|}@F@PQWQc@c d d d!$%E%E1D%E%E%E!F!F!J  ! *#)*@#A#AD IId*Aq!Q8H I I I!,D    ' 'R 0 0 0 IId(!Q1f6F G G G IIfrssuvxy{|~BHBR S S S   3 3D4J K K K"$D - 3 3888&//0KF0STZ0[\\\\&//777#**62222  3#'D %)D "%+,F%G%G" $,aAq&:JKKK $$aAq&2BCCC#D\\(3 % t>>!'(F!G!G $(!Q1f6FvGY6YZZZ $%q!Q63CDDD%&9:: $&1aF4DEEE $,1aF,<=== &'I J J $'Aq!V5EfFX5XYYY :  , &1C1R1v1vwxz{}~11 &!*D    ' '(9 : : :   * *,c d d d IId(!Q1f6F G G G   3 3DK @ @ @ @!%D  (2,,1aF,<===  ! 9%1^^D "  " 7 7 G G G%+,D%E%ED "$*+W$X$XD ! IId,aAq&:J K K K IId,aAq&:J K K K IId+Q1a9I&J\9\ ] ] ]$,RLLD ! HHT*E4 8 8 8#)$<<   ,,Q///&.rll# #--i888&/kk# #,,Y777 #//1[ \ \ \ #889MNNN  $$T%@$MMM  $$T%@%NNN T-u555  %%e,,, dG,,,  "   ### a    A q!!! &))1aAv7GHHH)^^ ##B+++ //??? $$aAq&2BCCC &UVVXY[\^_abdjdtu{vHeH I I I &))1aAv7GHHH'>> !!"b))) --dn=== $"Aq!Q0@AAA &UVVXY[\^_abdjdtu{vHeH I I I &,--q!Q6;KLLL+~~ %%b"--- 11$.AAA $&1aF4DEEE &^__abdeghjkmsm}EQnQ R R R &233Q1aAQRRR , &&r2... 224>BBB $'Aq!V5EFFF &effhiklnoqrtzuEFLFXuX Y Y Y e%5666Ummd|| dD!!!  !* ''(?@@@ &t444 33DODDD **,P Q Q Q$V%899 !!&"8"b$GGG !!&"963NNN !!&"9=#uUUU ""$$$ t,,, //0FGGG)&*=>> &&v'=r2tLLL &&v'>@SUXZ_``` ''))) $$S"--- 44T5PQQQ $eT222 c#9:::5T:: d/1DEEE &&t|444 tT*** <    8 + + M  dC ( ( ( (%a((H LL    M  h , , , d+++ $$Sd*c*c*cddd   rKcP|jr&|j|jd|_ttj|_|jtjddd|jtjddd|j |j |j |j |j d|j|jdddS)NUserrFz From HostrT)r#ryremoverrDrrrrlrrrrset_allow_sortingrrws rIrzz SecurityAccount.create_user_lists > "  ! ( ( 8 8 8!DN$V%899 !!&"963NNN !!&"9;USSS ++--- ""$$$ ++D,>??? ((... !!$.$=====rKct|jtrGt||_||j|j|dSrB) isinstancerlrrrzrrr\rws rIfirewall_installed_eventz(SecurityAccount.firewall_installed_eventsd d)+E F F 9"7"="=D   ! ! # # #   * *4< 8 8 8 rKct|jtrI|j}t||_|j|||dSrB)rrlrrr remove_pagerzr\)rgviews rIfirewall_removed_eventz&SecurityAccount.firewall_removed_eventsi d)+@ A A $&D".s(nnnuTY]mTmTmTmTmTmrK)rYr\rrws rIrzSecurityAccount.active_pluginssnn (:(PnnnnrKcx|jr2|jt|jdSdSr)rmaxrget_selected_indexrws rIselected_plugin_typez$SecurityAccount.selected_plugin_types;   X&s4+=+P+P+R+RTU'V'VW WtrKclt|}|s td}|r|jt |d|jt |d|jt |d|jt |d|jt |d|j t |d|j t |d|j t |d|j t |d|j rj|dr|jd|j|d|jd|j d|jd|r6|jd|j ddS|jd|j ddS|jd|jd|j d|jddSdSdS)Nr@r9r8r7TF)rrrrboolrrrrrrrrrrrrkr7r)rg auth_type is_new_userinfos rI!update_enable_state_for_auth_typez1SecurityAccount.update_enable_state_for_auth_types*..y99 4.s3D  6  ! - -d48I3J.K.K L L L  " . .tD9J4K/L/L M M M   + +D6G1H,I,I J J J M % %d40A+B&C&C D D D L $ $T$/@*A%B%B C C C  , ,T$7H2I-J-J K K K  ! - -d48I3J.K.K L L L   * *4]0C+D+D E E E  & 2 24]8K3L3L M M M% 6+,6)..t444)2248K3LMMM*//555*//555)..t444"B.::4@@@.::4@@@@@.::5AAA.::5AAAAA)..u555*//666*//666)..u555559 6 6 6 6rKcb|j||dSrB)rrvalidate_hostlimithost)rgvalues rIset_hostlimithostz!SecurityAccount.set_hostlimithosts1 $$U+++ ##%%%%%rKcV||dSrB)rrlrws rIrz%SecurityAccount.hostlimithost_changeds* ##%%% rKc|jsdS|}||dt|}|s td}|rY|ds4|jd|jd|ds|d| dS)NTr@r9r5r8r) rrrrrrrrrrl)rgrrs rIrz!SecurityAccount.auth_type_changeds%  F--//  ..y$???*..y99 4.s3D  ,)* + ''+++ &&r*** & ,&&s+++ rKcp|jr|j|jj}|jjst n t ddgfgz}|D]e\}}}|j}|d||v|d||d|ddSdS)NCustomz custom rolerrRr) r/rr admin_rolesis_custom_role_neededrrRset_boolr5)rgrolesTheRolesr6rr7rTs rIrefresh_role_listz!SecurityAccount.refresh_role_lists   ( N " " "'3E151D1ZW))`ryACPRTxUvWaWH%- ( (!dEn--// Q ...q$'''q$'''' ( (  ( (rKc|jr|||dk|d}|jt||dk||dSdS)N1rR)r/r get_string toggle_privrrrl)rgnodecolrrYs rIrz&SecurityAccount.role_priv_list_toggleds    MM#u| , , ,??1%%D   + +,@,FQT U U U  " " $ $ $ NN       rKc>|jr||t||d}|j||dk|||dSdS)NrRr)r/set_intintr toggle_rolerrlrefresh_priv_list)rgrrrroles rIrz!SecurityAccount.role_list_toggleds   % LLc%jj ) ) )??1%%D   + +D%3, ? ? ?  " " $ $ $ NN     " " $ $ $ $ $ % %rKc|j|j|dSrB)rr hostlimitrrlrws rIhost_limit_clickedz"SecurityAccount.host_limit_clicked's= &&t~'@'@'B'BCCC rKcF|j}d}d}|jdkr"|jsdS|jj}|jj}n&|r$t |\}}d|_d|_| d|j d|r|j d|d||jj||r|||dS |jj|j ||dS#t&$rI}t)|drt-d|d|dYd}~dSYd}~dSd}~wwxYw|j d dS) Nr5commit accountFzDetails for account rz&Could not load account information forz+Unable to load the account information for zM. Probably the user was not created in the server yet and revert was pressed.zDSelect an account to edit or click [Add Account] to create a new one)r#rCrr/r;rXevalget_tagrhrOrqrr|rkrYr is_zombieshow_zombie_userasync_get_accountrrrr)rgr8rrXes rIrzSecurityAccount.user_selected+sn..00  "2 2 2& &/D&+DD  -ckkmm,,JD$"'+$ t ##E***  p   ' ' 'tttTT(R S S Sz **466 %%dD11111J%77dSSSSS 1vv(()QRR" gkgkgkmqmqmq$rsss   ' '(n o o o o os &D11 F;8E??Fc |jd|jd|jr|jd|jd|jj||}|j d|d|dd |ddS)NTFzAccount rzS does not exist but it still has privileges defined for the following objects: z z= Click the [Delete] button to completely remove the account.) r{rr~rrrqrYrget_zombie_privsr|rkr6)rgrrXr7s rIrz SecurityAccount.show_zombie_userNs $$T*** &&&   2   * *5 1 1 1 ##D))) !224>> ###MQMQMQSWSWSWYaYfYfglYmYmYmYm%n o o o o orKc  |jd|j}|s|rdS|r?t t |d|jkrdS|j |dk|j t|dko|j | ||_|o||_|r|j d|jr4|j t|j o|j |j|j|j|jpd|j|jpd||j|jr |j|jpt8}nR#t:$rEt<j dd|!d|jddddYdSwxYw|j"#||j" |j |j$|j%pd|&|jpd|j |j'tQ|j'|j)tQ|j)|j*tQ|j*|j+tQ|j,|-|.|j/0|j/|j10|j|j|jr|jj rd ndn|jd|jd|jd|jr|j d |d|j$r|j$d|j'd|j)d|j*d|j+dte|j34D]L}|j35|}|r.|j35|6dd M|j/0d|j78|j9|:|dS) NTrr5zInvalid Authentication PluginzUser z has plugin type zE, which is not listed as a known authentication plugin by the server.rF);r~rr#rCrrrr;r{rrr is_commitedrNr/snapshot_for_revertrhrqrpassword_expiredrrrrrXrr auth_pluginDEFAULT_AUTH_PLUGIN ValueErrorrDr rJformatted_namer set_selectedr auth_stringrrrrrrmax_user_connectionsrrr0rOrlrrcountr4rrrkrsetup_bottom_message_box)rgrr8rirole_list_nodes rIrOzSecurityAccount.show_userZs %%%n..00 t  F  JtCKKMM221566$-GG F $$TT\222 **4 0QAQ+R+RSSS "'+'J0H0H0J0J$ ; . O ' ' - - -! e"..tD4D4bTMbIb/c/cddd M # #DM 2 2 2 M # #DM$7R 8 8 8 L " "4=#6B 7 7 7  " "49 - - -" g /55d6F6]J]^^EE!$112Q2QDHDWDWDYDYDYDY[_[k[k[kl"B,,,FF  "//666"..43C/CDDD&001A1GRHHH66t7G7O4UYUeQefff   ( (T-?)@)@ A A A   & &s4+;'<'< = = =  * *3t/C+D+D E E E  ! + +C0I,J,J K K K  " " $ $ $  " " $ $ $   ' '(9 : : :   ) )$-TM`EOeiexfEEOEEKO P P P P M # #B ' ' ' M # #B ' ' ' L " "2 & & &! 6"..u555  " "2 & & &% 5&00444   ( ( , , ,   & &r * * *  * *2 . . .  ! + +B / / /4>//1122 E E!%!;!;A!>!>!EN..q11::1eDDD   ' ' - - - $$T%9::: %%d+++++s&HA IIct|jjj}t |D]P}|j|}||f|d|dfkr|cSQ|dz S)NrrR)rrYr account_namesrr#r4r)rgrrX users_countrTrs rI_find_user_positionz#SecurityAccount._find_user_positions$*+9:: %%  C>--c22Dd|!3!3T__Q5G5GIII JQrKcZd|_|jj}||jd||j|j }|8|dkr2|j |j || ||jd|jd|jdd|_dS)Nz add accountrFr5)rrYrcreate_accountr\r~set_active_tabrr;rXr#r>r4rrlrorrqrFrgaccountposs rIrpzSecurityAccount.add_accounts+*#2244  ))!,,,&&w'7FF ?saxx N & &t~'A'A#'F'F G G G   ##E*** ##E*** ''... rKcdd}fd}jjjkrdg}d}jjjr=jjjdddr|d d }tj d d |d d|}|tj krF|}|||tjdd|zd ddnzMSecurityAccount.upgrade_account..generate_password..s-GGA6=//GGGGGGrK) string ascii_lettersdigitsosurandomrseedr6r)lengthrs @rIgenerate_passwordz:SecurityAccount.upgrade_account..generate_passwordsU(6=8<GE:d++FK77GGGGvGGGGG GrKc|j_|j_ jdS#t$r0}t jdt|dddYd}~dSd}~wt$rX}ddl }td| zt jdt|dddYd}~dSd}~wwxYw)Nr\rr5rz0Exception while upgrading account auth type: %s z%Error Upgrading Authentication Method) r/rconfirm_passwordupgrade_password_formatrr rmrrrrr)rrrrrgs rIchange_passwordz8SecurityAccount.upgrade_account..change_passwords+3D  (3CD  0 #;;=====,   $YC$BGGG       MPYPdPdPfPffggg$%LcRUhhX\^`bdeee  s"6 C%A++ C8A C  CziA password must be provided for the account (either the original or a new one) before it can be upgraded.r5rrrzxClick [Reset to Expired] to set a random password and expire it, so the user will have to reset it next time they login.zReset to ExpiredzUpgrade Authentication MethodrrzRandom Generated PasswordzPassword changed to: %sF)r~)rrrr/_orig_passwordrYr\rrr,r rJr6rD ResultOther show_messagerr reload_user)rgrr!upgrade_account_msgreset_to_expire_captionr gen_passwords` rIrzSecurityAccount.upgrade_accounts H H H H      = ) ) + +t/B/Q Q Q$O#P &( #z!0 =TZ5G5V5z5z{|~BC6D6D =#**,fggg*<'+,KTYYWjMkMkmqsuxOPPF+++0022  l;;;&'BD]`lDlnrtvxz{{{  ODM::<
[>[>]>] ^ ^ ^ rKcd|jr|jj|j}|||j|j}|r8|dkr2|j |j || dSdSr) r/rYr copy_accountr\rr;rXr#r>r4rr s rI dup_accountzSecurityAccount.dup_accounts   !j'44T5HIIG LLNNN**7+;W\JJC Lsaxx**4>+E+Ec+J+JKKK     ! !rKcd|_|jr|jjrAtjdd|jzdddt jkr]|j} |jj |jn#t$r}tdt|zt|jdkr|jdd nd t|f\}}tjd |d |d ddd|_Yd}~dSd}~wwxYwd|_d|_|j|j|t jd|zn=|j}|r!t5|\}} Gddt8}|} || _|| _d| _||jj | n#t$r}tdt|zt|jdkr|jdd nd t|f\}}tjd |d |d ddd|_Yd}~dSd}~wwxYw|j !d|j"!d|j#!dd|_dS)Nzdelete accountzDelete Accountz=The account '%s' will be permanently removed. Please confirm.rrr5z%Exception while removing account: %s rRrError:zDelete accountrrzAccount '%s' was deletedceZdZdS),SecurityAccount.del_account..tmpuserN)rrrrrKrItmpuserr/ srKr0Tz+Exception while removing zombi account: %s )$rr/rr r$rrDResultOkrYrdelete_accountrrrrargsrmrhr#clear_selection do_refreshrrrset_status_textrCrrobjectr;rXrErorrqrF) rgthe_namertitlerfrr;rXr0ts rIrrzSecurityAccount.del_accountsn.  % &2 Xi6LM]QSWSfSuSuSwSwxHb7*7*-3_7=7= .==??J%44T5HIIII FQOPPP36qv;;??QVBQBZZSVWXSYSYHZNE7()9uuugg;VX\^`bdeee*,D'FFFFF  '+#/3,..000 %%'''""$$$   001Kh1VWWW>3355D !%dllnn!5!5$& A!)AJ!AF$(AM++---J%44Q7777 LsSTvvUVVV36qv;;??QVBQBZZSVWXSYSYHZNE7()9uuugg;VX\^`bdeee*,D'FFFFF  ##D))) ##D))) ''--- s37$B D/&A>D**D/=A%I## K6-A>K11K6cd}|j}|j}|j|j|j|jjj |jjj D]\}}}t|}|j }|jj ||r| dd|pdzn| d|pd| d||t||f|j||||r||jkr ||jkr|}|j||_||_|.|j|||j|j||dS)Nrz(!) z rR)r/rhr#freeze_refreshrrlrrYrrrrRrr5set_tagreprrr;rX thaw_refreshr>rrrkrr)rg selected_rowsusuorrXloadedrTs rIr\zSecurityAccount.refresh!s  * %%'''  ))$**;*IJJJ"&*"3"A # # D$d##D.))++Cz **466 9q&$*?-"@AAAAq$"7-888 NN1d # # # KKdD\** + + +   + +Ct < < < #tr{**trw"  ##%%% '*$  # N & &| 4 4 4     $$T%9::: %%b)))))rKcTjjrtfdt jD}jj}|D]K}j}|d||v| d|JdSdS)NcLg|] \}}|jjjv|d!S)r)rYrr)r&keyvalrgs rIr(z5SecurityAccount.refresh_priv_list..IsW+L+L+Lhc3[^bfblbscK\K\K3q6\K\K\KrKrrR) rrr/sortedrr+raw_privilege_namesrRrr5)rgall_supported_privsr7rYrTs` rIrz!SecurityAccount.refresh_priv_listFs !!###   ("(+L+L+L+L-BUBWBW+L+L+L#N#N ';E+ ( ()2244 Q ...q$''''  ( ( ( (rKcz|j}d|_d|_t |dkrd|_d}d|vr"|d\}}}|sd|_|jrt jdt j}t jd}t jdt j}| ||_| |p| |p|j|_|jr|r| rd t|cxkod kncpx| o#d t|cxkod knco|jp@t j d |o+td | dD|_|jr|jddS|jd|j|jddS)NTFr5/z/([a-z]|([%_]\.))(([\-_\.]?[a-z0-9]+)*)[a-z0-9]$z^(((%|_)?|25[0-5%_]|(%|_)?|2[0-4%_][0-9%_]|[01%_]?[0-9%_][0-9%_]?)\.){0,3}((%|_)?|25[0-5%_]|2[0-4%_][0-9%_]|[01%_]?[0-9%_][0-9%_]?)$a^\s*(?!.*::.*::)(?:(?!:)|:(?=:))(?:[0-9a-f%_]{0,4}(?:(?<=::)|(?.is-$[$[4c$ii3&6$[$[$[$[$[$[rK.zmini_error.pngz'Host name contains incorrect characters)rrr valid_name valid_ipv6r rpartitionrcompile IGNORECASEmatchisdigitrallsplitrr set_imager)rgrX subnet_maskrWallowed allowed_ipv4 allowed_ipv6s rIrz&SecurityAccount.validate_hostlimithostPs^!2244 t99s??#DO $;;#'??3#7#7 D![ ("' ? aj!SUWUbccG:'nooL:'k(* 77L*0066DO%mmD11`\5G5G5M5M`QUQ`DO ? { !,!4!4!6!6!V1K@P@P;V;V;V;VTV;V;V;V;V!^!,!4!4!6!6!k1K@P@P;W;W;W;WTW;W;W;W;W!k\`\k!^!#*BK!P!P"\!$$[$[;CTCTUXCYCY$[$[$[![![ O ? a  ) . .u 5 5 5 5 5  ) 3 34D E E E  ) . . 0 0 0  ) 5 56_ ` ` ` ` `rKc|jd|jd|jdd|_dSrMrtrrvr#rrws rIrlzSecurityAccount.set_dirtytsQ $$T*** &&t,,, ""5))) rKc|jd|jd|jdd|_dSNFTr`rws rIrNzSecurityAccount.unset_dirtyzsQ $$U+++ &&u--- ""4((( rKcF|jr |jnj#t$r]}t|jdkr|jddndt |f\}}t j||dddYd}~nd}~wwxYw|dS)NrRrr-rr5) r/expire_passwordrrr3rr rmr\rgrr9rfs rIrzSecurityAccount.expires   G G#335555 G G G36qv;;??QVBQBZZSVWXSYSYHZNE7(r2FFFFFFFF G s# B ABB c<|jrtjdd|jjd|jjddddt jkr |j|j|jj|jj| |jdS#t$r^}t|j dkr|j dd nd t|f\}}tj||d ddYd}~dSd}~wwxYwdSdS) Nrz=Please confirm revocation of all privileges for the account 'rVz'. Note: the account itself will be maintained. Add new privileges afterwards or the user will not be able to access any schema object.Revokerr5rRrr-r)r/r r$r;rXrDr1rloadrOrrr3rrmres rIrzSecurityAccount.revoke_alls{   G%&=&=fjfyfBfBfBDHDWD\D\D\]Hb**-3_==G'22444',,T-@-I4K^KcdddNN4#677777 GGG36qv;;??QVBQBZZSVWXSYSYHZNE7(r2FFFFFFFFFG G G==s A"B// D9ADDc>|jr=||jj|j|j|jjs$|jj|j||j s| |j d|j d|j d|jdSrB)rhrOrYrrevert_accountr/rr2r\r#rCrrorrqrFr5rws rIrwzSecurityAccount.reverts  ' p NN4:,;;D>??$,==??@@   !=!mpt!t!%r2 / / /#%D  F-99 ! $$nroBoS&m%j%jY]Ym n n n155d6O6O6Q6QSUVV  ! %+//:KT*R*R % $   t}==?? HY %&<&<OWOWOWY]Y]Y]^h,,/5??')#ZZ\\   23I)N(,b"5TVuww 9",,Z888!09,1'1$-2P2P2R2R'S'S$'1$-2P2P2R2R'S'S$/9$,:W:W:Y:Y/Z/Z,#-d.@.Q.Q.S.S#T#T  03D4F4W4W4Y4Y0Z0ZD  -"0144J6F4     !?"BEIEWEhEhEjEj"j!%r2 / / /#%D  FF   .1$2B2S2S2U2U.V.VD  +".22*4D2     !?"BEIEUEfEfEhEh"h!%r2 / / /#%D  FF   25d6J6[6[6]6]2^2^D  /"2Q66j8H6     !C"BEIEYEjEjElEl"l!%r2 / / /#%D  FF    7:4;P;a;a;c;c7d7dD  4"7!;;:=M;     !I"BEIEZEkEkEmEm"m!%r2 / / /#%D  FF    J41 J.2.G.G.I.ID  +*.'   * X1D1PTo1o1ouyvIvUY]Ylvlvl.2.D.U.U.W.WD  +    $ $ & & & &(     !7!$S4R 9 9 9"$D  FFFFF$     !4!$S4R 9 9 9"$D  FFFFF        A[[c8|jdSrB)r0rrws rIrzSecurityAccount.update)s   """""rKcp|sdSd}|jrd}n|jrd}n|jsd}n |jrd}|j||jt|jp|jp|jp|j |j t|jdS)Nr5aThis account is using the pre-mysql-4.1.1 password hashing type. The user will not be able to login if the secure_auth option is enabled. Please click [Upgrade Account] to fix that. Either the account password must be provided to reset it or a new password must be supplied.rlzMThis is an anonymous account. It is usually advisable to delete this account.z$No password is set for this account.) old_authenticationrr;blank_passwordrrkrrrr)rgrcaptions rIrz(SecurityAccount.setup_bottom_message_box,s  F  " ='GG  " =[GG =eGG   =>> ***ooXo !6!6!6F&&&, ( ( ( % % %!p!p!pF o o oO,O,O,b ! ! !% % % N!!!-!-!-!^#*#*#*J((("a"a"aH   G G G    C!C!C!J###HHH.PPPPPrKrMc$eZdZfdZdZxZS)WbAdminValidationPermissionscXtd||_dS)NzgThe account you are currently using does not have sufficient privileges to view the client connections.)superrhrY)rgrY __class__s rIrhz%WbAdminValidationPermissions.__init__Rs3 C D D D rKc~ |jj|jjn#t$rYdSwxYwdSrb)rYrrasync_callbackrrws rIruz%WbAdminValidationPermissions.validateVsO  J  + +DJ,E F F F F$   55 ts ), ::)rrrrhru __classcell__)rs@rIr}r}QsGrKr}cheZdZgZedZedZdZdZdZ dZ dZ dZ d Z d S) WbAdminSecurityc6||ddddS)N ManagementUsers and Privileges) register_page)cls admin_contexts rI wba_registerzWbAdminSecurity.wba_registerbs$##C7MOefffffrKcdS)Nadmin_manage_privsr)rs rI identifierzWbAdminSecurity.identifierfs##rKc8|jdSrB) account_tabr{rws rIr{zWbAdminSecurity.shutdownjs !!#####rKctj||||t||_t |j|_|t||t|| d|j j d| |d|_dS)Nztitle_users.pngrF)rrhrMrrr\radd_validationrr}set_standard_header instance_infor6rrfirewall_enabled)rgr\r main_views rIrhzWbAdminSecurity.__init__msg}iHHH*400#DL11  7@@AAA 8>>???   !2D4F4KMcddd  !!! %rKch|jjd}||jk}||_|S)NrO)r\rjrr)rgcurrent_statuschangeds rIfirewall_status_changedz'WbAdminSecurity.firewall_status_changed}s56::;PQQ D$99 .rKc |j|j d|jjD}|r\|jddsA|jjjd}|jjj }|j }n#g}d|vsd|vrctj dd|zd d d d |zd z|zdtjkr.|D]+\}}|j|jj||,n)tj dd|zdd d d |zdzd z|zdd|_YnxYw|jS)Nc,g|]\}}}|dk |||fSrr)r&rrXrCs rIr(z-WbAdminSecurity.create_ui..s2sss7ItT6jnprjrjrtT62jrjrjrrKalready_asked_for_anon_accountsFuserNameDELETEz CREATE USERzAnonymous accounts detectedzAnonymous accounts were detected in the server %s. Anonymous accounts can cause great confusion and are also a potential security issue and are advised to be removed. Would you like Workbench to delete them now?.rzLeave Accountsr5z#wb.admin.delete_anonymous_accounts:rrnzAnonymous accounts were detected in the server %s. Anonymous accounts can cause great confusion and are also a potential security issue and are advised to be removed. Please ask a DBA to delete them.rz|no_privileges|T)rrr5r__dict__rrdb_connection_paramsparameterValueshostIdentifierget_valid_privilegesr rorDr1rr2rr)rg anon_accountslogged_usernamelogged_servernamer7r6rXs rI create_uizWbAdminSecurity.create_uis !!$/222 8ssT[MfsssM ;T]%6%67XZ_%`%` ;"&"4"I"YZd"e$($6$K$Z! 88:: 8E5  MU$:$:67Tlo@@.9OKcQTee3 559? HH '4^^ d 55dk6PRVX\]]]]34Q_bss"b9OKN__beehyy3 555 48D 0 0 0s A4BBD7cdSrBrrws rI update_uizWbAdminSecurity.update_uis rKcdSrBrrws rIrzWbAdminSecurity.async_callbacks DrKc|jjs4|j|jdSdSrB)rrr\rrws rIr5zWbAdminSecurity.do_refreshsJ% &   $ $ & & &   # # % % % % % & &rKN)rrr_schema_priv_entries classmethodrrr{rhrrrrr5rrKrIrr^sgg[g$$[$$$$&&&     >   &&&&&rKr)CrrqgetpassrarrrrrrDrrrrrrr r r r r rrrrwb_admin_security_berrrrr wb_commonrr workbench.logrrgrt workbenchrwb_admin_utilsrrrrrrrrgetuserrrJrOr7rQrrrrr_rrrrrMr}rrrKrIrsy,  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCCCCCCCCCCCCC77777777//////// eeeeeeeeeeee   .$.      "2   &6Z^m^e^m^o^o^xsxy!  !&b!  /  Y   A%%N      [+[+[+[+[+V[+[+[+|iiiiiV[iiiZUUUUUvzUUUpwwwwwwwwt##### ###L!: :*:*:*:*:*FK:*:*:*zbYbYbYbYbY5bYbYbYLaPaPaPaPaPfjaPaPaPN     #8   M&M&M&M&M&nM&M&M&M&M&rK