documentation update v1.4.4

This commit is contained in:
Jeremy Long
2016-11-05 09:41:16 -04:00
parent e1a447f722
commit a1b5e3f7b0
1217 changed files with 79708 additions and 51391 deletions

View File

@@ -251,50 +251,57 @@
<a class="jxr_linenumber" name="L243" href="#L243">243</a> <em class="jxr_javadoccomment"> * @return the protocol list</em>
<a class="jxr_linenumber" name="L244" href="#L244">244</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L245" href="#L245">245</a> <strong class="jxr_keyword">protected</strong> String[] getProtocolList() {
<a class="jxr_linenumber" name="L246" href="#L246">246</a> <strong class="jxr_keyword">final</strong> String[] preferredProtocols = {<span class="jxr_string">"TLSv1"</span>, <span class="jxr_string">"TLSv1.1"</span>, <span class="jxr_string">"TLSv1.2"</span>, <span class="jxr_string">"TLSv1.3"</span>};
<a class="jxr_linenumber" name="L246" href="#L246">246</a> SSLSocket socket = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L247" href="#L247">247</a> String[] availableProtocols = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L248" href="#L248">248</a>
<a class="jxr_linenumber" name="L249" href="#L249">249</a> SSLSocket socket = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L250" href="#L250">250</a>
<a class="jxr_linenumber" name="L251" href="#L251">251</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L252" href="#L252">252</a> <strong class="jxr_keyword">final</strong> SSLSocketFactory factory = sslCtxt.getSocketFactory();
<a class="jxr_linenumber" name="L253" href="#L253">253</a> socket = (SSLSocket) factory.createSocket();
<a class="jxr_linenumber" name="L254" href="#L254">254</a>
<a class="jxr_linenumber" name="L255" href="#L255">255</a> availableProtocols = socket.getSupportedProtocols();
<a class="jxr_linenumber" name="L256" href="#L256">256</a> Arrays.sort(availableProtocols);
<a class="jxr_linenumber" name="L257" href="#L257">257</a> } <strong class="jxr_keyword">catch</strong> (Exception ex) {
<a class="jxr_linenumber" name="L258" href="#L258">258</a> LOGGER.debug(<span class="jxr_string">"Error getting protocol list, using TLSv1"</span>, ex);
<a class="jxr_linenumber" name="L259" href="#L259">259</a> <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> String[]{<span class="jxr_string">"TLSv1"</span>};
<a class="jxr_linenumber" name="L260" href="#L260">260</a> } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="L261" href="#L261">261</a> <strong class="jxr_keyword">if</strong> (socket != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L262" href="#L262">262</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L263" href="#L263">263</a> socket.close();
<a class="jxr_linenumber" name="L264" href="#L264">264</a> } <strong class="jxr_keyword">catch</strong> (IOException ex) {
<a class="jxr_linenumber" name="L265" href="#L265">265</a> LOGGER.trace(<span class="jxr_string">"Error closing socket"</span>, ex);
<a class="jxr_linenumber" name="L266" href="#L266">266</a> }
<a class="jxr_linenumber" name="L267" href="#L267">267</a> }
<a class="jxr_linenumber" name="L268" href="#L268">268</a> }
<a class="jxr_linenumber" name="L269" href="#L269">269</a>
<a class="jxr_linenumber" name="L270" href="#L270">270</a> <strong class="jxr_keyword">final</strong> List&lt;String&gt; aa = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;();
<a class="jxr_linenumber" name="L271" href="#L271">271</a> <strong class="jxr_keyword">for</strong> (String preferredProtocol : preferredProtocols) {
<a class="jxr_linenumber" name="L272" href="#L272">272</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> idx = Arrays.binarySearch(availableProtocols, preferredProtocol);
<a class="jxr_linenumber" name="L273" href="#L273">273</a> <strong class="jxr_keyword">if</strong> (idx &gt;= 0) {
<a class="jxr_linenumber" name="L274" href="#L274">274</a> aa.add(preferredProtocol);
<a class="jxr_linenumber" name="L275" href="#L275">275</a> }
<a class="jxr_linenumber" name="L276" href="#L276">276</a> }
<a class="jxr_linenumber" name="L277" href="#L277">277</a>
<a class="jxr_linenumber" name="L278" href="#L278">278</a> <strong class="jxr_keyword">return</strong> aa.toArray(<strong class="jxr_keyword">new</strong> String[0]);
<a class="jxr_linenumber" name="L279" href="#L279">279</a> }
<a class="jxr_linenumber" name="L280" href="#L280">280</a>
<a class="jxr_linenumber" name="L281" href="#L281">281</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L282" href="#L282">282</a> <em class="jxr_javadoccomment"> * The SSL context.</em>
<a class="jxr_linenumber" name="L283" href="#L283">283</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L284" href="#L284">284</a> <strong class="jxr_keyword">private</strong> SSLContext sslCtxt;
<a class="jxr_linenumber" name="L285" href="#L285">285</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L286" href="#L286">286</a> <em class="jxr_javadoccomment"> * The protocols.</em>
<a class="jxr_linenumber" name="L287" href="#L287">287</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L288" href="#L288">288</a> <strong class="jxr_keyword">private</strong> String[] protocols;
<a class="jxr_linenumber" name="L289" href="#L289">289</a> }
<a class="jxr_linenumber" name="L248" href="#L248">248</a> <strong class="jxr_keyword">final</strong> String[] preferredProtocols = Settings.getString(
<a class="jxr_linenumber" name="L249" href="#L249">249</a> Settings.KEYS.DOWNLOADER_TLS_PROTOCOL_LIST,
<a class="jxr_linenumber" name="L250" href="#L250">250</a> <span class="jxr_string">"TLSv1,TLSv1.1,TLSv1.2,TLSv1.3"</span>)
<a class="jxr_linenumber" name="L251" href="#L251">251</a> .split(<span class="jxr_string">","</span>);
<a class="jxr_linenumber" name="L252" href="#L252">252</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L253" href="#L253">253</a> <strong class="jxr_keyword">final</strong> SSLSocketFactory factory = sslCtxt.getSocketFactory();
<a class="jxr_linenumber" name="L254" href="#L254">254</a> socket = (SSLSocket) factory.createSocket();
<a class="jxr_linenumber" name="L255" href="#L255">255</a>
<a class="jxr_linenumber" name="L256" href="#L256">256</a> availableProtocols = socket.getSupportedProtocols();
<a class="jxr_linenumber" name="L257" href="#L257">257</a> Arrays.sort(availableProtocols);
<a class="jxr_linenumber" name="L258" href="#L258">258</a> <strong class="jxr_keyword">if</strong> (LOGGER.isDebugEnabled()) {
<a class="jxr_linenumber" name="L259" href="#L259">259</a> LOGGER.debug(<span class="jxr_string">"Available Protocols:"</span>);
<a class="jxr_linenumber" name="L260" href="#L260">260</a> <strong class="jxr_keyword">for</strong> (String p : availableProtocols) {
<a class="jxr_linenumber" name="L261" href="#L261">261</a> LOGGER.debug(p);
<a class="jxr_linenumber" name="L262" href="#L262">262</a> }
<a class="jxr_linenumber" name="L263" href="#L263">263</a> }
<a class="jxr_linenumber" name="L264" href="#L264">264</a> } <strong class="jxr_keyword">catch</strong> (Exception ex) {
<a class="jxr_linenumber" name="L265" href="#L265">265</a> LOGGER.debug(<span class="jxr_string">"Error getting protocol list, using TLSv1"</span>, ex);
<a class="jxr_linenumber" name="L266" href="#L266">266</a> <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> String[]{<span class="jxr_string">"TLSv1"</span>};
<a class="jxr_linenumber" name="L267" href="#L267">267</a> } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="L268" href="#L268">268</a> <strong class="jxr_keyword">if</strong> (socket != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L269" href="#L269">269</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L270" href="#L270">270</a> socket.close();
<a class="jxr_linenumber" name="L271" href="#L271">271</a> } <strong class="jxr_keyword">catch</strong> (IOException ex) {
<a class="jxr_linenumber" name="L272" href="#L272">272</a> LOGGER.trace(<span class="jxr_string">"Error closing socket"</span>, ex);
<a class="jxr_linenumber" name="L273" href="#L273">273</a> }
<a class="jxr_linenumber" name="L274" href="#L274">274</a> }
<a class="jxr_linenumber" name="L275" href="#L275">275</a> }
<a class="jxr_linenumber" name="L276" href="#L276">276</a>
<a class="jxr_linenumber" name="L277" href="#L277">277</a> <strong class="jxr_keyword">final</strong> List&lt;String&gt; aa = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;();
<a class="jxr_linenumber" name="L278" href="#L278">278</a> <strong class="jxr_keyword">for</strong> (String preferredProtocol : preferredProtocols) {
<a class="jxr_linenumber" name="L279" href="#L279">279</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> idx = Arrays.binarySearch(availableProtocols, preferredProtocol);
<a class="jxr_linenumber" name="L280" href="#L280">280</a> <strong class="jxr_keyword">if</strong> (idx &gt;= 0) {
<a class="jxr_linenumber" name="L281" href="#L281">281</a> aa.add(preferredProtocol);
<a class="jxr_linenumber" name="L282" href="#L282">282</a> }
<a class="jxr_linenumber" name="L283" href="#L283">283</a> }
<a class="jxr_linenumber" name="L284" href="#L284">284</a>
<a class="jxr_linenumber" name="L285" href="#L285">285</a> <strong class="jxr_keyword">return</strong> aa.toArray(<strong class="jxr_keyword">new</strong> String[0]);
<a class="jxr_linenumber" name="L286" href="#L286">286</a> }
<a class="jxr_linenumber" name="L287" href="#L287">287</a>
<a class="jxr_linenumber" name="L288" href="#L288">288</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L289" href="#L289">289</a> <em class="jxr_javadoccomment"> * The SSL context.</em>
<a class="jxr_linenumber" name="L290" href="#L290">290</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L291" href="#L291">291</a> <strong class="jxr_keyword">private</strong> SSLContext sslCtxt;
<a class="jxr_linenumber" name="L292" href="#L292">292</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L293" href="#L293">293</a> <em class="jxr_javadoccomment"> * The protocols.</em>
<a class="jxr_linenumber" name="L294" href="#L294">294</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L295" href="#L295">295</a> <strong class="jxr_keyword">private</strong> String[] protocols;
<a class="jxr_linenumber" name="L296" href="#L296">296</a> }
</pre>
<hr/>
<div id="footer">Copyright &#169; 2012&#x2013;2016 <a href="http://www.owasp.org">OWASP</a>. All rights reserved.</div>