From b6cd640d590456fab5998c3a9337ebe57efb67d4 Mon Sep 17 00:00:00 2001 From: Ian Partridge Date: Tue, 17 Apr 2018 13:34:34 +0100 Subject: [PATCH 1/4] Update to Swift 4.1 --- .swift-version | 2 +- .travis.yml | 10 ++- Package.swift | 4 +- README.md | 6 ++ Sources/SwiftBAMDC/SwiftDataCollector.swift | 2 +- .../SwiftBAMDC/SwiftMetricsBAMConfig.swift | 64 +++++++++++-------- 6 files changed, 55 insertions(+), 33 deletions(-) diff --git a/.swift-version b/.swift-version index c4e41f9..7d5c902 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -4.0.3 +4.1 diff --git a/.travis.yml b/.travis.yml index 30578e6..94a62ef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -# Travis CI build file for Kitura sample app. +# Travis CI build file for SwiftMetrics. # Kitura runs on OS X and Linux (Ubuntu). # See the following URLs for further details on Travis CI # https://docs.travis-ci.com/user/customizing-the-build/ @@ -13,12 +13,20 @@ branches: matrix: include: + - os: linux + dist: trusty + sudo: required + env: SWIFT_SNAPSHOT=4.0.3 - os: linux dist: trusty sudo: required - os: osx osx_image: xcode9.2 sudo: required + env: SWIFT_SNAPSHOT=4.0.3 + - os: osx + osx_image: xcode9.3 + sudo: required before_install: - git clone https://github.com/IBM-Swift/Package-Builder.git diff --git a/Package.swift b/Package.swift index 8f039b4..5981563 100644 --- a/Package.swift +++ b/Package.swift @@ -33,8 +33,8 @@ let package = Package( .executable(name: "SwiftMetricsCommonSample", targets: ["SwiftMetricsCommonSample"]), ], dependencies: [ - .package(url: "https://github.com/IBM-Swift/Kitura.git", from: "2.1.0"), - .package(url: "https://github.com/IBM-Swift/Kitura-WebSocket.git", from: "1.0.0"), + .package(url: "https://github.com/IBM-Swift/Kitura.git", .branch("master")), + .package(url: "https://github.com/IBM-Swift/Kitura-WebSocket.git", from: "2.0.0"), .package(url: "https://github.com/IBM-Swift/SwiftyRequest.git", from: "1.0.0"), .package(url: "https://github.com/IBM-Swift/Swift-cfenv.git", from: "6.0.0"), .package(url: "https://github.com/IBM-Swift/SwiftyJSON.git", from: "17.0.0"), diff --git a/README.md b/README.md index c710803..de70828 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,12 @@ Application Metrics for Swift provides the following built-in data collection so The Application Metrics for Swift agent supports the following runtime environments: +* **Swift v4.1 GA** on: + * 64-bit runtime on Linux (Ubuntu 14.04, 16.04) + * 64-bit runtime on macOS (x64) +* **Swift v4 GA** on: + * 64-bit runtime on Linux (Ubuntu 14.04, 16.04) + * 64-bit runtime on macOS (x64) * **Swift v3 GA** on: * 64-bit runtime on Linux (Ubuntu 14.04, 15.10) * 64-bit runtime on macOS (x64) diff --git a/Sources/SwiftBAMDC/SwiftDataCollector.swift b/Sources/SwiftBAMDC/SwiftDataCollector.swift index ef772ff..41b700e 100755 --- a/Sources/SwiftBAMDC/SwiftDataCollector.swift +++ b/Sources/SwiftBAMDC/SwiftDataCollector.swift @@ -455,7 +455,7 @@ public func getISOTimeStamp(time : Date) -> String { let formatter = DateFormatter() formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'" - formatter.timeZone = TimeZone(abbreviation: "UTC") as TimeZone! + formatter.timeZone = TimeZone(abbreviation: "UTC") return formatter.string(from: time) } diff --git a/Sources/SwiftBAMDC/SwiftMetricsBAMConfig.swift b/Sources/SwiftBAMDC/SwiftMetricsBAMConfig.swift index 7397092..bd0a9c6 100755 --- a/Sources/SwiftBAMDC/SwiftMetricsBAMConfig.swift +++ b/Sources/SwiftBAMDC/SwiftMetricsBAMConfig.swift @@ -616,23 +616,27 @@ public class TokenUtil { let i = cipher_init(key: key) if let ky = i["key"], let vl = i["iv"] { - let c = Cryptor(operation: .encrypt, - algorithm: .aes, - options: .pkcs7Padding, - key: ky, - iv: vl) + do { + let c = try Cryptor(operation: .encrypt, + algorithm: .aes, + options: .pkcs7Padding, + key: ky, + iv: vl) - let b = c.update(string: value)?.final() + let b = c.update(string: value)?.final() - if let bv = b { - let d = Data(bytes: bv, count: bv.count).base64EncodedData() + if let bv = b { + let d = Data(bytes: bv, count: bv.count).base64EncodedData() - let s = String(data: d, encoding: String.Encoding.utf8) + let s = String(data: d, encoding: String.Encoding.utf8) - if let sv = s { - Log.debug("[SwiftMetricsBAMConfig] Encrypt successful: \(key) val: \(sv)") - return sv + if let sv = s { + Log.debug("[SwiftMetricsBAMConfig] Encrypt successful: \(key) val: \(sv)") + return sv + } } + } catch { + // do nothing } } @@ -644,24 +648,28 @@ public class TokenUtil { let i = cipher_init(key: key) if let ky = i["key"], let vl = i["iv"] { - let c = Cryptor(operation: .decrypt, - algorithm: .aes, - options: .pkcs7Padding, - key: ky, - iv: vl) - let b = Data(base64Encoded: value) - if let bv = b { - let p = c.update(data: bv)?.final() - - if let pv = p { - let d = Data(bytes: pv, count: pv.count) - let s = String(data: d, encoding: String.Encoding.utf8) - - if let sv = s { - Log.debug("[SwiftMetricsBAMConfig] Decrypt successful: \(key) val: \(value)") - return sv + do { + let c = try Cryptor(operation: .decrypt, + algorithm: .aes, + options: .pkcs7Padding, + key: ky, + iv: vl) + let b = Data(base64Encoded: value) + if let bv = b { + let p = c.update(data: bv)?.final() + + if let pv = p { + let d = Data(bytes: pv, count: pv.count) + let s = String(data: d, encoding: String.Encoding.utf8) + + if let sv = s { + Log.debug("[SwiftMetricsBAMConfig] Decrypt successful: \(key) val: \(value)") + return sv + } } } + } catch { + // do nothing } } From dc4129d2b159c64bb0ee2463190041406a9d839d Mon Sep 17 00:00:00 2001 From: Ian Partridge Date: Tue, 17 Apr 2018 13:51:17 +0100 Subject: [PATCH 2/4] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de70828..a178901 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ The Application Metrics for Swift agent supports the following runtime environme * **Swift v4 GA** on: * 64-bit runtime on Linux (Ubuntu 14.04, 16.04) * 64-bit runtime on macOS (x64) -* **Swift v3 GA** on: +* **Swift v3.1.1 GA** using SwiftMetrics version 1.2.5 on: * 64-bit runtime on Linux (Ubuntu 14.04, 15.10) * 64-bit runtime on macOS (x64) From fb3517f91c1adf30c7b0d2af5de814c405f21ec2 Mon Sep 17 00:00:00 2001 From: Ian Partridge Date: Tue, 17 Apr 2018 14:52:10 +0100 Subject: [PATCH 3/4] Update Kitura dependency --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 5981563..35c2726 100644 --- a/Package.swift +++ b/Package.swift @@ -33,7 +33,7 @@ let package = Package( .executable(name: "SwiftMetricsCommonSample", targets: ["SwiftMetricsCommonSample"]), ], dependencies: [ - .package(url: "https://github.com/IBM-Swift/Kitura.git", .branch("master")), + .package(url: "https://github.com/IBM-Swift/Kitura.git", from: "2.3.0"), .package(url: "https://github.com/IBM-Swift/Kitura-WebSocket.git", from: "2.0.0"), .package(url: "https://github.com/IBM-Swift/SwiftyRequest.git", from: "1.0.0"), .package(url: "https://github.com/IBM-Swift/Swift-cfenv.git", from: "6.0.0"), From 781494431dbeb9381a6897693f67463fc24cbab8 Mon Sep 17 00:00:00 2001 From: Ian Partridge Date: Tue, 17 Apr 2018 15:17:11 +0100 Subject: [PATCH 4/4] Upgrade log messages from debug to error --- Sources/SwiftBAMDC/SwiftMetricsBAMConfig.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/SwiftBAMDC/SwiftMetricsBAMConfig.swift b/Sources/SwiftBAMDC/SwiftMetricsBAMConfig.swift index bd0a9c6..a58c9d0 100755 --- a/Sources/SwiftBAMDC/SwiftMetricsBAMConfig.swift +++ b/Sources/SwiftBAMDC/SwiftMetricsBAMConfig.swift @@ -640,7 +640,7 @@ public class TokenUtil { } } - Log.debug("[SwiftMetricsBAMConfig] Encrypt failed: \(key)") + Log.error("[SwiftMetricsBAMConfig] Encrypt failed: \(key)") return "" } @@ -673,7 +673,7 @@ public class TokenUtil { } } - Log.debug("[SwiftMetricsBAMConfig] Decrypt failed: \(key) val: \(value)") + Log.error("[SwiftMetricsBAMConfig] Decrypt failed: \(key) val: \(value)") return "" }