Xׯd -bddlZddlmZmZddlmZGddeZGddeZdS)N) log_warning log_error)parse_mysql_idsc0eZdZdZdZdZdZdZdZdS)PrivilegeTargetz This class holds the information of the priv_level item at the GRANT statement. It will be used not only to hold the information but also to provide functions for the matching against other priv_level definitions. c0d|_d|_d|_dS)N*)schemaobject object_typeselfs &..\modules\wb_admin_user_privileges.py__init__zPrivilegeTarget.__init__#s  c|dkrO|dkrKt|}t|dkrt|\|_|_dS||_dSdSdS)Nr z*.*)rlentupler r )rdatavaluess rset_from_stringzPrivilegeTarget.set_from_string(s_ 3;;45=="4((& [[A  ).v&dk4;;; dkkk ;==rc,||jd|jkS)N.r r )r target_strings r identicalzPrivilegeTarget.identical1s4;;; DDDrcd}|jdkr|jdkrd}n.|j|jkr|jdkrd}n|j|jk}|S)z There are three scope types considered: - Global: schema and table are * - Schema: schema is * - Table: Both are not * Fr Tr)rotherret_vals rmatcheszPrivilegeTarget.matches4sa ;#  $+"4"4GG [EL ( ({c!!;%,6rc\d}|jdkr|jdkrd}n|jdkrd}nd}|S)zz Returns the privilege level based on the data. Note: COLUMN is not considered at this point. r GLOBALOBJECTDATABASEr)rr s rget_target_typezPrivilegeTarget.get_target_typeIsG  ;#  $+"4"4GG [C  GG GrN) __name__ __module__ __qualname____doc__rrrr!r'rrrrsl !!!EEE*     rrcBeZdZdZdZdZdZdZdZdZ dZ d Z d S) UserHostPrivilegesa This class is intended to load the privileges applicable to a user/host pair. Once loaded it will be able to verify if specific privileges are granted to the user or not. Initialization parameters: - user: the username for which the privileges will be verified. - host: the real hostname from which the user will be connecting to the database. (No wildcard should be used). - context: needed to query the data from the database. cz||_||_||_|g|_i|_|jjjjj j j |_ |jjjj |_|jjj}|r$|jdz|jdzz|jz|_dSd|_dS)Ni'dr)userhostcontext_define_privilege_tablesapplicant_hosts_granted_privilegesctrl_beeditor connectiondriverowner characterSets_character_sets serverVersion_target_versiontarget_version majorNumber minorNumber releaseNumber_server_version)rr1r2r3versions rrzUserHostPrivileges.__init__fs    %%''' "$& #|3:ELR`#|3:H,&5  %#*#6#>ATWZAZ#Z]d]r#rD #$D rc6i|_gd|jd<g|jd<|jd|jd|jdgdg|jd<|jd|jd|jdddgg|jd<|jd|jd|jdgd d S) z This method is used just to create the privilege lists at the different levels available in MySQL )INSERTSELECTUPDATECOLUMNr%) ALTERz ALTER ROUTINECREATEzCREATE ROUTINEz CREATE VIEWDELETEDROPEXECUTE GRANT OPTIONINDEXz SHOW VIEWr&zCREATE TEMPORARY TABLESz LOCK TABLESr$) FILEPROCESSRELOADzREPLICATION CLIENTzREPLICATION SLAVEzSHOW DATABASESSHUTDOWNSUPERz CREATE USERN) _privilegesextendr s rr4z+UserHostPrivileges._define_privilege_tablessJ %B%B%B"%'" "))$*:8*DEEE "))+s+s+s t t t')$ $++D,&>&>#$D,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONr[errorrgr_z+An error occurred parsing GRANT statement: z -> rqz There are no grants defined for @)r6r5r3r7rrr1grtmodulesMySQLParserServicescreateNewParserContextr=r?rsruparseStatementDetailsrerfrrrrlr Exceptionrr2) rr2rwr3 statement grant_datarrgrkrhexcs rload_privilegesz"UserHostPrivileges.load_privilegess$& 4' ' '\)444TXT]T]T]_c_c_c5deeFk5LLTMacgcwzz|}~~G" `nn&&p & 4 4Q 7 7I!%Jp%([%D%Z%Z[bdm%n%n )'2D,6x,@M%)F(,D,D,I,I,K,K'L'L11#&==#?#?!1-0F$*F)8):): & 6 6} E E E)3<(@I!// BBBB%IclclclnxzAoBoBoB'CDDD$ppp! _h_h_hjmjmjm"noooooooop;nn&&pppppB TXT]T]T]^_____S ( 'sCE66 F FF ct}|||||}|||dkSrd)rrr^r'ro)r target_strr_rgpriv_vals rincludes_privilegesz&UserHostPrivileges.includes_privilegess] ""z***++J8N8N8P8PQQ$$VX66!;;rN) r(r)r*r+rr4r^rlrorxrrr,rrr.r.Zs  %%%:jjj(4>>>"   0.`.`.`b<<<<rs, 00000000......;;;;;f;;;~B<B<B<B<B<B<B<B<B<B