ASF Bugzilla – Attachment 22889 Details for
Bug 46237
add skeleton-key http authentication to AccessLogSampler
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
SkeletonAuthManager.java, SkeletonAuthorizationFilter.java, and FilterChain.java
accesslog_skel_auth.tar (text/plain), 20.00 KB, created by
Eric Jensen
on 2008-11-18 18:48:26 UTC
(
hide
)
Description:
SkeletonAuthManager.java, SkeletonAuthorizationFilter.java, and FilterChain.java
Filename:
MIME Type:
Creator:
Eric Jensen
Created:
2008-11-18 18:48:26 UTC
Size:
20.00 KB
patch
obsolete
>src/protocol/http/org/apache/jmeter/protocol/http/control/SkeletonAuthManager.java0000640000077200000240000000162711110664001027276 0ustar ejstaffpackage org.apache.jmeter.protocol.http.control; > >import java.io.Serializable; >import java.net.URL; >import org.apache.jorphan.logging.LoggingManager; >import org.apache.log.Logger; > >/** > * An AuthManager that returns only the single Authorization it was instantiated with. > * @author ej > */ >public class SkeletonAuthManager extends AuthManager implements Serializable >{ > private static final long serialVersionUID = 1L; > private static final Logger log = LoggingManager.getLoggerForClass(); > > Authorization authorization; > > public SkeletonAuthManager() > { > authorization = null; > } > > public SkeletonAuthManager(String user, String password) > { > authorization = new Authorization(null, user, password, null, null); > } > > public Authorization getAuthForURL(URL url) { > log.debug("returning auth " + (authorization == null ? "null" : authorization.toBasicHeader()) + " for url " + url); > return authorization; > } >} >src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/FilterChain.java0000640000077200000240000000577211110671241027036 0ustar ejstaffpackage org.apache.jmeter.protocol.http.util.accesslog; > >import java.io.Serializable; >import java.util.Enumeration; >import java.util.Vector; > >import org.apache.jmeter.testelement.TestCloneable; >import org.apache.jmeter.testelement.TestElement; >import org.apache.jmeter.util.JMeterUtils; >import org.apache.jorphan.logging.LoggingManager; >import org.apache.log.Logger; > >/** > * Chains all filter Filter specified by the values of the "accesslog.sampler.filterchain.*" properties. > * @author ej > */ >public class FilterChain implements Filter, Serializable, TestCloneable >{ > private static final long serialVersionUID = 1L; > private static final Logger log = LoggingManager.getLoggerForClass(); > private Vector filters; > > /** > * Instantiate Filters in chain. > */ > public FilterChain() > { > filters = JMeterUtils.instantiate(JMeterUtils.getVector(JMeterUtils.getJMeterProperties(), > "accesslog.sampler.filterchain."), > "org.apache.jmeter.protocol.http.util.accesslog.Filter"); > } > > /** > * clone all filters in chain > */ > public Object clone() > { > // Filters require they be cloned...oddly > FilterChain f = new FilterChain(); > f.filters = new Vector(filters.size()); > for (Enumeration elements = filters.elements(); elements.hasMoreElements();) > f.filters.add(((TestCloneable) elements.nextElement()).clone()); > > return f; > } > > public void excludeFiles( String[] filenames ) > { > for (Enumeration elements = filters.elements(); elements.hasMoreElements();) > ((Filter) elements.nextElement()).excludeFiles( filenames ); > } > > public void excludePattern( String[] regexp ) > { > for (Enumeration elements = filters.elements(); elements.hasMoreElements();) > ((Filter) elements.nextElement()).excludePattern( regexp ); > } > > public String filter( String text ) > { > for (Enumeration elements = filters.elements(); elements.hasMoreElements();) > text = ((Filter) elements.nextElement()).filter( text ); > > return text; > } > > public void includeFiles( String[] filenames ) > { > for (Enumeration elements = filters.elements(); elements.hasMoreElements();) > ((Filter) elements.nextElement()).includeFiles( filenames ); > } > > public void includePattern( String[] regexp ) > { > for (Enumeration elements = filters.elements(); elements.hasMoreElements();) > ((Filter) elements.nextElement()).includePattern( regexp ); > } > > public boolean isFiltered( String path, TestElement sampler ) > { > boolean isFiltered = false; > > for (Enumeration elements = filters.elements(); elements.hasMoreElements();) > isFiltered |= ((Filter) elements.nextElement()).isFiltered( path, sampler ); > > return isFiltered; > } > > /* > * (non-Javadoc) > * > * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#filter() > */ > public void reset() > { > } > > public void setReplaceExtension( String oldextension, String newextension ) > { > for (Enumeration elements = filters.elements(); elements.hasMoreElements();) > ((Filter) elements.nextElement()).setReplaceExtension( oldextension, newextension ); > } > >} >src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/SkeletonAuthorizationFilter.java0000640000077200000240000000717511110663626032370 0ustar ejstaffpackage org.apache.jmeter.protocol.http.util.accesslog; > >import java.io.Serializable; > >import org.apache.jmeter.protocol.http.control.AuthManager; >import org.apache.jmeter.protocol.http.control.SkeletonAuthManager; >import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; >import org.apache.jmeter.testelement.TestCloneable; >import org.apache.jmeter.testelement.TestElement; >import org.apache.jmeter.util.JMeterUtils; >import org.apache.jorphan.logging.LoggingManager; >import org.apache.log.Logger; >import org.apache.oro.text.regex.Pattern; >import org.apache.oro.text.regex.Perl5Compiler; >import org.apache.oro.text.regex.Perl5Matcher; > >/** > * Provides username parsing from logs for the AccessLog Sampler, overrides AuthManager with one > * that uses the username from the log (or no auth if it is "-") and a single password from the property "skeleton.password" > * @author ej > */ >public class SkeletonAuthorizationFilter implements Filter, Serializable, TestCloneable >{ > private static final long serialVersionUID = -480275799056489612L; > private static final Logger log = LoggingManager.getLoggerForClass(); > > private static final AuthManager NULL_AUTH_MANAGER = new SkeletonAuthManager(); > > private static final String SKELETON_PASSWORD = > JMeterUtils.getPropDefault("skeleton.password", "skeleton"); > > /** > * > */ > public SkeletonAuthorizationFilter() > { > } > > public Object clone() > { > // no state, nothing to clone > return new SkeletonAuthorizationFilter(); > } > > protected String getUser(String logLine) > { > Pattern incIp = JMeterUtils.getPatternCache().getPattern("^\\S+ - (\\S+)", > Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.SINGLELINE_MASK); > Perl5Matcher matcher = JMeterUtils.getMatcher(); > matcher.contains(logLine, incIp); > > return matcher.getMatch().group(1); > } > > public boolean isFiltered( String logLine, TestElement sampler ) > { > String user = getUser(logLine); > log.debug("getUser found " + user + " for " + logLine); > > if (user == null) { > log.warn("log line didn't match user pattern, assuming no auth: " + logLine); > ((HTTPSamplerBase)sampler).setAuthManager(NULL_AUTH_MANAGER); > } else if (user.equals("-")) > ((HTTPSamplerBase)sampler).setAuthManager(NULL_AUTH_MANAGER); > else > ((HTTPSamplerBase)sampler).setAuthManager(new SkeletonAuthManager(user, SKELETON_PASSWORD)); > > return false; > } > > /* > * (non-Javadoc) > * > * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#filter() > */ > public void reset() > { > } > > /* > * (non-Javadoc) > * > * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#excludeFiles(java.lang.String[]) > */ > public void excludeFiles(String[] filenames) { > } > > /* > * (non-Javadoc) > * > * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#excludePattern(java.lang.String[]) > */ > public void excludePattern(String[] regexp) { > } > > /* > * (non-Javadoc) > * > * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#filter(java.lang.String) > */ > public String filter(String text) { > return text; > } > > /* > * (non-Javadoc) > * > * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#includeFiles(java.lang.String[]) > */ > public void includeFiles(String[] filenames) { > } > > /* > * (non-Javadoc) > * > * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#includePattern(java.lang.String[]) > */ > public void includePattern(String[] regexp) { > } > > /* > * (non-Javadoc) > * > * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#setReplaceExtension(java.lang.String, > * java.lang.String) > */ > public void setReplaceExtension(String oldextension, String newextension) { > } >} >lib/ext/ApacheJMeter_accesslog_skel_auth.jar0000640000077200000240000001141011110671207017740 0ustar ejstaffPKsr9 META-INF/þÊPKPKsr9META-INF/MANIFEST.MFóMÌËLK-.Ñ K-*ÎÌϳR0Ô3àår.JM,IMÑuª éÄ+h8ä¤*xæ%ëiòrñrPKï'0_<<PKsr9Aorg/apache/jmeter/protocol/http/control/SkeletonAuthManager.class¥TmOA~Jï8O*(¾ÖWZ@ÏwÅâ(5"$Æøa)K{xÞÖí&þ!¿úZ&~5ñGg·MRâ}ØÝÙyfæ¹ÙùöýÓ'qÏCA7úpÒÁ)8m3ÎzH#pqÎìç]\0Æ.Æ|É,ã¸ìá >®:¸æຠm5¡B- >Ue¼0sÍ2lqMóX/ò(]h|¡3eE©Ê¯òRE¤ ²\ª@<Ñ©Â\à õ7W >-TPURËÖÕ $cH¸¾ÞÒãaê+2_dHMÊeÁÐ[cq'yº$Ô¾&S%*S$7)] kÿ:úü -cÅy£¡\q?çAÄãr0¯U56½4Él°2¸U^«½jè)mBLIµp¿È0Ý¢ß4]z~£Ø㥨ɣ7/US¡!hWO_û°ßÇìe8·©d¤AìfødeÅÕ«NTL¬é¬¸I4ÆIùÂ4CwvEª,e·|Ì`ÚÁ¬Û(:óqw >ÿñÎüK -¯¶ªPóöñPݶéÿU·lNcz,Í«US¶ ß jPmÞ¤¼n ¾lÓÏm¼\øõîÒª(é?¡ºZ64ým§CײXJ½]¾TP~=ûRU+<6þe²[Ú[÷ÑËiàÒÛèE1æò¿D8Hc1í4wcúé<@#¬;I¦Þ´ºÖÙ¨éi=@Ò8Ýa´{Ãk`Ãì:ÞX¿,=BK^7á$ÉoÜÆ!6#4Áµ÷û-Ògt>d#£!Õt@M¢{,h¶áØ5§£8fõcN&ÅòÍ@ÏèvícoÑõékp2nÝÃïÑñnÆ{EÕй-¤Íø´Ô±µ:záu+ÏíÇY64[a#ÖÅh±61ÀùmïÐõÆÒ`ÀÒÖÐKëqàÄPK?äeø"ÉPKÒrr9Porg/apache/jmeter/protocol/http/util/accesslog/SkeletonAuthorizationFilter.classWÙWWÿ &Ä% >îmÜp¬7¨ >@IÀV:$ÌÄPk[»ï«Ýì¾÷¥U{çôôçôïè?Ñ~w2GÁ>dîö-¿o½7þóëovàû¶`TÄ©Ê0Ài<êÇràRmcxï(#É?©e`à¤é*úLÈPQ?¦øxÖÙ4è~äøxNÁÍVÁò#ÀyLá°xù=éÇS\éÓ".xFij"Pk2#£¨#Ì03º6Ü{DÐ'`y®¢Y#gÏþ|¹"i (Wõ´UQÝHËJNIN2vä¨N3£]@]l8ëNëïuíÐæ¦Ê2rÎÐ-=©«ò¤eå䤮Y-:óÖd¿¢)¬øñîhwb 66Ø"pÁèr^UEKËqËÈhi"¬ìÈhë¡k >ðué)& &ÑX,gFBWgÖd«BÓÚÙôYS@tQy+£ÊJ2ÉL?ËTféǬEìɨ½"©êI_Ùv!bIÅ4³Éõn·(ìe¤HJ¹E$;£%{s6»!ë.[lÆ f3ò bóeHUÓÝ衶õ))1¦°C=¼e1Ó"dfÉ wçíáQa*ÙÊADî·Ta0QöIl&©æS°1YCÓ)çQTM¦d9Ñ >Õ$ÇOC¶È«¶á<1È=¤¼íÒYí,K+ÙË©JuÏXLãu$`Ï<±JºbóƦ]KGRu;×óFÒÆ! tôÛÎõHØ ôýY-ây /àEÂxæt<j 5ÑññWñ×%¼7%¼ ·E¼#á]\Ð$´b; l¡ç'&¸·«Mèy-ðÞ§ÀÓÒ ÅøPÄG®àc» h¼ÂB©LJÛf ìñT åai )¦Ïü¦2f?IùsïYÌ#NªÊÇÁxq~X1;$|ϨE¶ø\ÂøR@ûRÛµNðvòH%D|%ák|C]Ïtè¶çÈiÝ >ôßÜð-¾£®½°¥P½Ç@÷8Y¾ÒÑå¸}PÄí®Y¼J»x+RoºÚV××ÏçÃ4¥Ê©¡;UÓÅ)y=[*:4Låºy dT!óìõ¨À^o}[&Ó³k6ߤgßl\%Eg ÑLo KÉÛªÿ&Pá»Â´WyWݺ$Bª¾´¡ç©%Ö7õz^IJ.Ç4ÊÏ%]bÅR'>¿¥wÞ%ÉõïBbãù4GäÝL}Ó >}5õdWÙ>þ/o.²v¡"²Ë+<¥oá\î<.a·2ÝÈM*7#Mܶ)4 ÕQæõèFJ5/`ÍÁ¼å Åå ¡ç° Ågþ,åMôRÜrlE#¶ÁµhBòô-CÖÔ³i¾·>{¤vE£D4t»Ð·V»hh¬h pÕfÝM_þ÷ø=a/öÑ(`?Ú;ùo ìä,Ê*ɨ´÷]ü~ßÇï?O&øhÜ8_°"XYØ?¬5ÒR@ÕÖ¾_°¬ó6edQ h köتlA>;@§Ñ5à w ñvâ0©Ð #¿È0Îy±9R»å7PM¶Ôk¨#uÁ }è°®¬lýaU½û°¡åw¬ºÕ¬ùÖàÚÖ]A{·/n`ýÉÖkØ0ûh³üÇu¨¢ï>rß~hZÈUÝdÉÙp¬$üû¼ÅK_t,æ³nôÄJú_qö¸ÅÇJQØA;âÅhÅ\ÑJÑîEÃØfÓ{0Ø ÅÃǵ3¬qgî "æ(åÌn9UYda¶M¸ddaÐv¡/bÉÐâ"¦±$#â ýʽD\²E.ÃN|ò8/=?N¢Ún+ÖÍáþë<=×Sz®cupcpÓ6_Ç«6+WSm^CêÖ¡h÷ÂÉPKê6¾dxPKr9@org/apache/jmeter/protocol/http/util/accesslog/FilterChain.classU[WWþ'$#*Þ@Dmµ¢P¤EP4àĪ½8$dèd&(µ7Ûç>ö¥¿>ÔÕV ®ÕÕçþöÅþÒïÌLBÀt)%}nûìïÛ{öÞç~ý ÀI|G7¦â¸ë1Üãͦå8Ón©sRq;8Þâw¸÷¥ø@Å ìÄGrû¾ >=vÌI"/ b^Å8,HU*J >vºÂ1tsV8®a[·&.*P®(Ø>j[®§[Þ¬nVD3?EAÄ´ >ödm§ÑËz®(2ÜÉdíBA8 >ÔyÃôhLA[vA g*affEγåñ¶!Ã2¼aÚIöÍ*Úy¡`GÖ°ÄT¥4'}Îò²#+ܸ7£^Ñ á¡zð \¦ìسÍLÑóÊ¦Ë ×äÆ}J£EÝ°H¡9gÚíNöMÝ*d®Í-#cÂ%ay®ôrÝ1«Rî1HTRæhb1gVòÖ;÷êÌM{a¥-°ôTjo £ 5´t]÷ÈÓbQeNh*èM60ÞÈVÔ^-øÏ4êgÜ.k°qà B%ò >F 6¼'\/Xfó±`>Øw\ʺWdJ¸z©lJ/R[0À ÓD³#\AÚ)o²©çÄØ¢',¬ >5âØð#h¶ë5K<¬[Ærfñi»âäü±8ê2'-íjH¢O ¥Á?ÏÁZ¥CÓÁËù74|z}N§§ÓÓéjº¦eº¦e¥×M \xzqLÁùÿðtbsj¨àôä¡SXTñ©GøLÃç8ÉoôòO4*H¤Njø_^n£Ó8£a@óÔ0,g¤Á;.Ჯ4<Æ×¢§êN]Ͳý-ÃÎLû½Ìx´#/2ò9\ó[Ê,/ظîØeáx,½ÕÞà_X?aV¶ðBGv¢dcÿ¬ÕÍ0a=ÖÐ=ÒH¾¨ó¢®ñHø=uäÌø}\Øؾ:°uwÒvÄXÒ$«0a±XÂMîéyöäÝSêöÕGÝvÊEÝ/DäýWã¤néÙv1ÁË1n;£¦îºïÆ^ãÃÕ²|÷"ØC8 û@pÍñç¬ ±^)û¹ºÌ >ÇÎþe(ý+hj¬ ÚÖ¼m¿@}âßKQ¶R8(ºÐAã\iÁM@Z>2íC«ßQOê?CìÎ2Z²©gßéÿêS$¡Ñt°Ø>y| >¾GW\ìPð;v®b§h»½´ögêÇNÈG÷=NÒ¯>îõã"¹H6x¿SxÚÄyÅX=orÆÖ)Ë*d¸@ÉðèfUí©UìnÂÒÚߣp >»ñ:VqcL÷h+goá¬;°Eܸg;@Üs/Å=â²y¸fÛ»·³·³ Ù¥µçuß&ò0íÔ!wÕ{kȽ¢®DÞ¢Ç{z<FÜqz|é#}a¸{â^%n¸¯iöå÷[æ¾ÌÒtd8D>Ý ±÷wËiNû"x<¼´öW÷5m¼Üàj6C³>Ó´`UKR#]cÆ»~ÔålõÐÄßq2ók{¼Vë)¿Jù¿îî6ã~]9+µræ+^¬Ðì :QMõÎì0Ï7Ç2ÏX >FjÞ駡jîÈÓ=½èÁΨwµÆý¨+8ðºø×=ØMõ'ÿPKÈqýjNPKsr9 META-INF/þÊPKsr9ï'0_<<=META-INF/MANIFEST.MFPKsr9?äeø"ÉA»org/apache/jmeter/protocol/http/control/SkeletonAuthManager.classPKÒrr9ê6¾dxPLorg/apache/jmeter/protocol/http/util/accesslog/SkeletonAuthorizationFilter.classPKr9ÈqýjN@Borg/apache/jmeter/protocol/http/util/accesslog/FilterChain.classPKØ
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 46237
: 22889 |
23037