<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="de">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>package org.apache.archiva.proxy.model;<a name="line.1"></a>
<span class="sourceLineNo">002</span><a name="line.2"></a>
<span class="sourceLineNo">003</span>/*<a name="line.3"></a>
<span class="sourceLineNo">004</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.4"></a>
<span class="sourceLineNo">005</span> * or more contributor license agreements.  See the NOTICE file<a name="line.5"></a>
<span class="sourceLineNo">006</span> * distributed with this work for additional information<a name="line.6"></a>
<span class="sourceLineNo">007</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.7"></a>
<span class="sourceLineNo">008</span> * to you under the Apache License, Version 2.0 (the<a name="line.8"></a>
<span class="sourceLineNo">009</span> * "License"); you may not use this file except in compliance<a name="line.9"></a>
<span class="sourceLineNo">010</span> * with the License.  You may obtain a copy of the License at<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> *   http://www.apache.org/licenses/LICENSE-2.0<a name="line.12"></a>
<span class="sourceLineNo">013</span> *<a name="line.13"></a>
<span class="sourceLineNo">014</span> * Unless required by applicable law or agreed to in writing,<a name="line.14"></a>
<span class="sourceLineNo">015</span> * software distributed under the License is distributed on an<a name="line.15"></a>
<span class="sourceLineNo">016</span> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY<a name="line.16"></a>
<span class="sourceLineNo">017</span> * KIND, either express or implied.  See the License for the<a name="line.17"></a>
<span class="sourceLineNo">018</span> * specific language governing permissions and limitations<a name="line.18"></a>
<span class="sourceLineNo">019</span> * under the License.<a name="line.19"></a>
<span class="sourceLineNo">020</span> */<a name="line.20"></a>
<span class="sourceLineNo">021</span><a name="line.21"></a>
<span class="sourceLineNo">022</span>import java.io.Serializable;<a name="line.22"></a>
<span class="sourceLineNo">023</span>import java.util.Arrays;<a name="line.23"></a>
<span class="sourceLineNo">024</span>import java.util.Objects;<a name="line.24"></a>
<span class="sourceLineNo">025</span><a name="line.25"></a>
<span class="sourceLineNo">026</span>public class NetworkProxy<a name="line.26"></a>
<span class="sourceLineNo">027</span>        implements Serializable<a name="line.27"></a>
<span class="sourceLineNo">028</span>{<a name="line.28"></a>
<span class="sourceLineNo">029</span>    private String id;<a name="line.29"></a>
<span class="sourceLineNo">030</span><a name="line.30"></a>
<span class="sourceLineNo">031</span>    /**<a name="line.31"></a>
<span class="sourceLineNo">032</span>     * The network protocol to use with this proxy: "http", "socks-4"<a name="line.32"></a>
<span class="sourceLineNo">033</span>     * .<a name="line.33"></a>
<span class="sourceLineNo">034</span>     */<a name="line.34"></a>
<span class="sourceLineNo">035</span>    private String protocol = "http";<a name="line.35"></a>
<span class="sourceLineNo">036</span><a name="line.36"></a>
<span class="sourceLineNo">037</span>    /**<a name="line.37"></a>
<span class="sourceLineNo">038</span>     * The proxy host.<a name="line.38"></a>
<span class="sourceLineNo">039</span>     */<a name="line.39"></a>
<span class="sourceLineNo">040</span>    private String host;<a name="line.40"></a>
<span class="sourceLineNo">041</span><a name="line.41"></a>
<span class="sourceLineNo">042</span>    /**<a name="line.42"></a>
<span class="sourceLineNo">043</span>     * The proxy port.<a name="line.43"></a>
<span class="sourceLineNo">044</span>     */<a name="line.44"></a>
<span class="sourceLineNo">045</span>    private int port = 8080;<a name="line.45"></a>
<span class="sourceLineNo">046</span><a name="line.46"></a>
<span class="sourceLineNo">047</span>    /**<a name="line.47"></a>
<span class="sourceLineNo">048</span>     * The proxy user.<a name="line.48"></a>
<span class="sourceLineNo">049</span>     */<a name="line.49"></a>
<span class="sourceLineNo">050</span>    private String username;<a name="line.50"></a>
<span class="sourceLineNo">051</span><a name="line.51"></a>
<span class="sourceLineNo">052</span>    /**<a name="line.52"></a>
<span class="sourceLineNo">053</span>     * The proxy password.<a name="line.53"></a>
<span class="sourceLineNo">054</span>     */<a name="line.54"></a>
<span class="sourceLineNo">055</span>    private char[] password;<a name="line.55"></a>
<span class="sourceLineNo">056</span><a name="line.56"></a>
<span class="sourceLineNo">057</span>    /**<a name="line.57"></a>
<span class="sourceLineNo">058</span>     * @since 1.4-M3<a name="line.58"></a>
<span class="sourceLineNo">059</span>     *<a name="line.59"></a>
<span class="sourceLineNo">060</span>     * use NTLM proxy<a name="line.60"></a>
<span class="sourceLineNo">061</span>     */<a name="line.61"></a>
<span class="sourceLineNo">062</span>    private boolean useNtlm;<a name="line.62"></a>
<span class="sourceLineNo">063</span><a name="line.63"></a>
<span class="sourceLineNo">064</span>    public NetworkProxy()<a name="line.64"></a>
<span class="sourceLineNo">065</span>    {<a name="line.65"></a>
<span class="sourceLineNo">066</span>        // no op<a name="line.66"></a>
<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
<span class="sourceLineNo">068</span><a name="line.68"></a>
<span class="sourceLineNo">069</span>    public NetworkProxy(String id, String protocol, String host, int port, String username, char[] password )<a name="line.69"></a>
<span class="sourceLineNo">070</span>    {<a name="line.70"></a>
<span class="sourceLineNo">071</span>        this.id = id;<a name="line.71"></a>
<span class="sourceLineNo">072</span>        this.protocol = protocol;<a name="line.72"></a>
<span class="sourceLineNo">073</span>        this.host = host;<a name="line.73"></a>
<span class="sourceLineNo">074</span>        this.port = port;<a name="line.74"></a>
<span class="sourceLineNo">075</span>        this.username = username;<a name="line.75"></a>
<span class="sourceLineNo">076</span>        setPassword(password);<a name="line.76"></a>
<span class="sourceLineNo">077</span>    }<a name="line.77"></a>
<span class="sourceLineNo">078</span><a name="line.78"></a>
<span class="sourceLineNo">079</span>    public String getId()<a name="line.79"></a>
<span class="sourceLineNo">080</span>    {<a name="line.80"></a>
<span class="sourceLineNo">081</span>        return id;<a name="line.81"></a>
<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
<span class="sourceLineNo">083</span><a name="line.83"></a>
<span class="sourceLineNo">084</span>    public void setId( String id )<a name="line.84"></a>
<span class="sourceLineNo">085</span>    {<a name="line.85"></a>
<span class="sourceLineNo">086</span>        this.id = id;<a name="line.86"></a>
<span class="sourceLineNo">087</span>    }<a name="line.87"></a>
<span class="sourceLineNo">088</span><a name="line.88"></a>
<span class="sourceLineNo">089</span>    public String getProtocol()<a name="line.89"></a>
<span class="sourceLineNo">090</span>    {<a name="line.90"></a>
<span class="sourceLineNo">091</span>        return protocol;<a name="line.91"></a>
<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
<span class="sourceLineNo">093</span><a name="line.93"></a>
<span class="sourceLineNo">094</span>    public void setProtocol( String protocol )<a name="line.94"></a>
<span class="sourceLineNo">095</span>    {<a name="line.95"></a>
<span class="sourceLineNo">096</span>        this.protocol = protocol;<a name="line.96"></a>
<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
<span class="sourceLineNo">098</span><a name="line.98"></a>
<span class="sourceLineNo">099</span>    public String getHost()<a name="line.99"></a>
<span class="sourceLineNo">100</span>    {<a name="line.100"></a>
<span class="sourceLineNo">101</span>        return host;<a name="line.101"></a>
<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
<span class="sourceLineNo">103</span><a name="line.103"></a>
<span class="sourceLineNo">104</span>    public void setHost( String host )<a name="line.104"></a>
<span class="sourceLineNo">105</span>    {<a name="line.105"></a>
<span class="sourceLineNo">106</span>        this.host = host;<a name="line.106"></a>
<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
<span class="sourceLineNo">108</span><a name="line.108"></a>
<span class="sourceLineNo">109</span>    public int getPort()<a name="line.109"></a>
<span class="sourceLineNo">110</span>    {<a name="line.110"></a>
<span class="sourceLineNo">111</span>        return port;<a name="line.111"></a>
<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
<span class="sourceLineNo">113</span><a name="line.113"></a>
<span class="sourceLineNo">114</span>    public void setPort( int port )<a name="line.114"></a>
<span class="sourceLineNo">115</span>    {<a name="line.115"></a>
<span class="sourceLineNo">116</span>        this.port = port;<a name="line.116"></a>
<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
<span class="sourceLineNo">118</span><a name="line.118"></a>
<span class="sourceLineNo">119</span>    public String getUsername()<a name="line.119"></a>
<span class="sourceLineNo">120</span>    {<a name="line.120"></a>
<span class="sourceLineNo">121</span>        return username;<a name="line.121"></a>
<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
<span class="sourceLineNo">123</span><a name="line.123"></a>
<span class="sourceLineNo">124</span>    public void setUsername( String username )<a name="line.124"></a>
<span class="sourceLineNo">125</span>    {<a name="line.125"></a>
<span class="sourceLineNo">126</span>        this.username = username;<a name="line.126"></a>
<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
<span class="sourceLineNo">128</span><a name="line.128"></a>
<span class="sourceLineNo">129</span>    public char[] getPassword()<a name="line.129"></a>
<span class="sourceLineNo">130</span>    {<a name="line.130"></a>
<span class="sourceLineNo">131</span>        return password;<a name="line.131"></a>
<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
<span class="sourceLineNo">133</span><a name="line.133"></a>
<span class="sourceLineNo">134</span>    public void setPassword(char[] password )<a name="line.134"></a>
<span class="sourceLineNo">135</span>    {<a name="line.135"></a>
<span class="sourceLineNo">136</span>        if (this.password!=null) {<a name="line.136"></a>
<span class="sourceLineNo">137</span>            Arrays.fill(this.password, '0');<a name="line.137"></a>
<span class="sourceLineNo">138</span>        }<a name="line.138"></a>
<span class="sourceLineNo">139</span>        this.password = Arrays.copyOf(password, password.length);<a name="line.139"></a>
<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
<span class="sourceLineNo">141</span><a name="line.141"></a>
<span class="sourceLineNo">142</span>    public boolean isUseNtlm()<a name="line.142"></a>
<span class="sourceLineNo">143</span>    {<a name="line.143"></a>
<span class="sourceLineNo">144</span>        return useNtlm;<a name="line.144"></a>
<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
<span class="sourceLineNo">146</span><a name="line.146"></a>
<span class="sourceLineNo">147</span>    public void setUseNtlm( boolean useNtlm )<a name="line.147"></a>
<span class="sourceLineNo">148</span>    {<a name="line.148"></a>
<span class="sourceLineNo">149</span>        this.useNtlm = useNtlm;<a name="line.149"></a>
<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
<span class="sourceLineNo">151</span><a name="line.151"></a>
<span class="sourceLineNo">152</span>    @Override<a name="line.152"></a>
<span class="sourceLineNo">153</span>    public boolean equals( Object o )<a name="line.153"></a>
<span class="sourceLineNo">154</span>    {<a name="line.154"></a>
<span class="sourceLineNo">155</span>        if ( this == o )<a name="line.155"></a>
<span class="sourceLineNo">156</span>        {<a name="line.156"></a>
<span class="sourceLineNo">157</span>            return true;<a name="line.157"></a>
<span class="sourceLineNo">158</span>        }<a name="line.158"></a>
<span class="sourceLineNo">159</span>        if ( o == null || getClass() != o.getClass() )<a name="line.159"></a>
<span class="sourceLineNo">160</span>        {<a name="line.160"></a>
<span class="sourceLineNo">161</span>            return false;<a name="line.161"></a>
<span class="sourceLineNo">162</span>        }<a name="line.162"></a>
<span class="sourceLineNo">163</span><a name="line.163"></a>
<span class="sourceLineNo">164</span>        NetworkProxy that = (NetworkProxy) o;<a name="line.164"></a>
<span class="sourceLineNo">165</span><a name="line.165"></a>
<span class="sourceLineNo">166</span>        return Objects.equals(id, that.id);<a name="line.166"></a>
<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
<span class="sourceLineNo">168</span><a name="line.168"></a>
<span class="sourceLineNo">169</span>    @Override<a name="line.169"></a>
<span class="sourceLineNo">170</span>    public int hashCode()<a name="line.170"></a>
<span class="sourceLineNo">171</span>    {<a name="line.171"></a>
<span class="sourceLineNo">172</span>        int result = 629 + ( id != null ? id.hashCode() : 0 );<a name="line.172"></a>
<span class="sourceLineNo">173</span>        return result;<a name="line.173"></a>
<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
<span class="sourceLineNo">175</span><a name="line.175"></a>
<span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
<span class="sourceLineNo">177</span>    public String toString()<a name="line.177"></a>
<span class="sourceLineNo">178</span>    {<a name="line.178"></a>
<span class="sourceLineNo">179</span>        final StringBuilder sb = new StringBuilder();<a name="line.179"></a>
<span class="sourceLineNo">180</span>        sb.append( "NetworkProxy" );<a name="line.180"></a>
<span class="sourceLineNo">181</span>        sb.append( "{id='" ).append( id ).append( '\'' );<a name="line.181"></a>
<span class="sourceLineNo">182</span>        sb.append( ", protocol='" ).append( protocol ).append( '\'' );<a name="line.182"></a>
<span class="sourceLineNo">183</span>        sb.append( ", host='" ).append( host ).append( '\'' );<a name="line.183"></a>
<span class="sourceLineNo">184</span>        sb.append( ", port=" ).append( port );<a name="line.184"></a>
<span class="sourceLineNo">185</span>        sb.append( ", username='" ).append( username ).append( '\'' );<a name="line.185"></a>
<span class="sourceLineNo">186</span>        //sb.append( ", password='" ).append( password ).append( '\'' );<a name="line.186"></a>
<span class="sourceLineNo">187</span>        sb.append( ", useNtlm=" ).append( useNtlm );<a name="line.187"></a>
<span class="sourceLineNo">188</span>        sb.append( '}' );<a name="line.188"></a>
<span class="sourceLineNo">189</span>        return sb.toString();<a name="line.189"></a>
<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
<span class="sourceLineNo">191</span>}<a name="line.191"></a>
<span class="sourceLineNo">192</span><a name="line.192"></a>




























































</pre>
</div>
</body>
</html>