aboutsummaryrefslogtreecommitdiff
path: root/stage1
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2017-03-06 20:07:57 -0500
committerChristopher Vogt <oss.nsp@cvogt.org>2017-03-06 20:07:57 -0500
commit64ccd14614182c517995a88b888f0d7b7212f668 (patch)
tree07aa160fd60aa50c5d77a9d48eb8840c925d4fd6 /stage1
parent78b22ae86df111b89db1ecb20c40a0384b148698 (diff)
downloadcbt-64ccd14614182c517995a88b888f0d7b7212f668.tar.gz
cbt-64ccd14614182c517995a88b888f0d7b7212f668.tar.bz2
cbt-64ccd14614182c517995a88b888f0d7b7212f668.zip
support publishing to basic-auth protected maven repositories
Diffstat (limited to 'stage1')
-rw-r--r--stage1/Stage1Lib.scala14
-rw-r--r--stage1/cbt.scala2
2 files changed, 12 insertions, 4 deletions
diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala
index 87d3a79..91e63f1 100644
--- a/stage1/Stage1Lib.scala
+++ b/stage1/Stage1Lib.scala
@@ -56,18 +56,26 @@ class Stage1Lib( logger: Logger ) extends BaseLib{
def write(file: File, content: String, options: OpenOption*): File = Stage0Lib.write(file, content, options:_*)
+ def addHttpCredentials( connection: HttpURLConnection, credentials: String ): Unit = {
+ val encoding = new sun.misc.BASE64Encoder().encode(credentials.getBytes)
+ connection.setRequestProperty("Authorization", "Basic " ++ encoding)
+ }
+
def download(url: URL, target: File, sha1: Option[String], replace: Boolean = false): Boolean = {
if( target.exists && !replace ){
- logger.resolver(green("found ") ++ url.string)
+ logger.resolver(green("found ") ++ url.show)
true
} else {
val incomplete = ( target ++ ".incomplete" ).toPath;
val connection = Stage0Lib.openConnectionConsideringProxy(url)
+ Option(url.getUserInfo).filter(_ != "").foreach(
+ addHttpCredentials(connection,_)
+ )
if(connection.getResponseCode != HttpURLConnection.HTTP_OK){
- logger.resolver(blue("not found: ") ++ url.string)
+ logger.resolver(blue("not found: ") ++ url.show)
false
} else {
- System.err.println(blue("downloading ") ++ url.string)
+ System.err.println(blue("downloading ") ++ url.show)
logger.resolver(blue("to ") ++ target.string)
target.getParentFile.mkdirs
val stream = connection.getInputStream
diff --git a/stage1/cbt.scala b/stage1/cbt.scala
index d28789c..0305dd2 100644
--- a/stage1/cbt.scala
+++ b/stage1/cbt.scala
@@ -65,7 +65,7 @@ object `package`{
}
implicit class URLExtensionMethods( url: URL ){
def ++( s: String ): URL = new URL( url.toString ++ s )
- def string = url.toString
+ def show = "/[^/@]+@".r.replaceFirstIn( url.toString, "/" ) // remove credentials when showing url for security reasons
}
implicit class SeqExtensions[T](seq: Seq[T]){
def maxOption(implicit ev: Ordering[T]): Option[T] = try{ Some(seq.max) } catch {