aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-connectivity
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-connectivity')
-rw-r--r--recipes-connectivity/consul/consul-migrate_git.bb16
-rw-r--r--recipes-connectivity/consul/consul_git.bb21
-rw-r--r--recipes-connectivity/consul/files/0001-Migration-Rename-imports-throughout.patch82
-rw-r--r--recipes-connectivity/dhcp/dhcp_%.bbappend16
-rw-r--r--recipes-connectivity/dhcp/files/dhclient-exit-hooks95
-rw-r--r--recipes-connectivity/serf/hashicorp-serf_0.8.5.bb32
-rw-r--r--recipes-connectivity/serf/serf-vendor-licenses.inc32
7 files changed, 167 insertions, 127 deletions
diff --git a/recipes-connectivity/consul/consul-migrate_git.bb b/recipes-connectivity/consul/consul-migrate_git.bb
index 8419cb86..1393c912 100644
--- a/recipes-connectivity/consul/consul-migrate_git.bb
+++ b/recipes-connectivity/consul/consul-migrate_git.bb
@@ -4,7 +4,7 @@ LICENSE = "BSD & MPL-2.0 & MIT"
LIC_FILES_CHKSUM = "file://src/github.com/hashicorp/consul-migrate/LICENSE;md5=b278a92d2c1509760384428817710378"
GO_IMPORT = "github.com/hashicorp/consul-migrate"
-SRC_URI = "git://${GO_IMPORT}.git"
+SRC_URI = "https://${GO_IMPORT}.git;branch=master"
SRCREV = "678fb10cdeae25ab309e99e655148f0bf65f9710"
S = "${WORKDIR}/git"
@@ -18,13 +18,13 @@ SRCREV_bolt = "c6ba97b89e0454fec9aa92e1d33a4e2c5fc1f631"
SRCREV_go-msgpack = "fa3f63826f7c23912c15263591e65d54d080b458"
SRC_URI += " \
- git://github.com/hashicorp/raft;name=raft;destsuffix=git/src/github.com/hashicorp/raft \
- git://github.com/armon/go-metrics;name=go-metrics;destsuffix=git/src/github.com/armon/go-metrics \
- git://github.com/hashicorp/raft-boltdb;name=raft-boltdb;destsuffix=git/src/github.com/hashicorp/raft-boltdb \
- git://github.com/hashicorp/raft-mdb;name=raft-mdb;destsuffix=git/src/github.com/hashicorp/raft-mdb \
- git://github.com/armon/gomdb;name=gomdb;destsuffix=git/src/github.com/armon/gomdb \
- git://github.com/boltdb/bolt;name=bolt;destsuffix=git/src/github.com/boltdb/bolt \
- git://github.com/hashicorp/go-msgpack;name=go-msgpack;destsuffix=git/src/github.com/hashicorp/go-msgpack \
+ https://github.com/hashicorp/raft;name=raft;destsuffix=git/src/github.com/hashicorp/raft;branch=master;protocol=https \
+ https://github.com/armon/go-metrics;name=go-metrics;destsuffix=git/src/github.com/armon/go-metrics;branch=master;protocol=https \
+ https://github.com/hashicorp/raft-boltdb;name=raft-boltdb;destsuffix=git/src/github.com/hashicorp/raft-boltdb;branch=master;protocol=https \
+ https://github.com/hashicorp/raft-mdb;name=raft-mdb;destsuffix=git/src/github.com/hashicorp/raft-mdb;branch=master;protocol=https \
+ https://github.com/armon/gomdb;name=gomdb;destsuffix=git/src/github.com/armon/gomdb;branch=master;protocol=https \
+ https://github.com/boltdb/bolt;name=bolt;destsuffix=git/src/github.com/boltdb/bolt;branch=master;protocol=https \
+ https://github.com/hashicorp/go-msgpack;name=go-msgpack;destsuffix=git/src/github.com/hashicorp/go-msgpack;branch=master;protocol=https \
"
inherit go
diff --git a/recipes-connectivity/consul/consul_git.bb b/recipes-connectivity/consul/consul_git.bb
index 566fbc9c..0d084b0d 100644
--- a/recipes-connectivity/consul/consul_git.bb
+++ b/recipes-connectivity/consul/consul_git.bb
@@ -5,13 +5,14 @@ LIC_FILES_CHKSUM = "file://src/github.com/hashicorp/consul/LICENSE;md5=b278a92d2
GO_IMPORT = "github.com/hashicorp/consul"
SRCREV = "944cc71026c007e7de9467ec3f38f0ad14464fcc"
-SRC_URI = "git://${GO_IMPORT}.git \
+SRC_URI = "git://${GO_IMPORT}.git;branch=main;protocol=https \
+ file://0001-Migration-Rename-imports-throughout.patch \
file://consul.service \
"
S = "${WORKDIR}/git"
-RDEPENDS_${PN}-dev_append = " bash"
+RDEPENDS:${PN}-dev:append = " bash"
# Temporarily workaround an issue with GO 1.12.1
# http://www.lyddzz.com/github_/golang/go/issues/30768
@@ -22,17 +23,21 @@ inherit systemd go
# Besides the hosts specified in goarch, we do not build for mips.
#
-COMPATIBLE_HOST_mipsarch = "null"
+COMPATIBLE_HOST:mipsarch = "null"
-SYSTEMD_SERVICE_${PN} = "consul.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "disable"
+SYSTEMD_SERVICE:${PN} = "consul.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "disable"
-do_install_append() {
+do_compile:prepend () {
+ export GO111MODULE=off
+}
+
+do_install:append() {
install -d ${D}/${systemd_unitdir}/system
cp ${WORKDIR}/consul.service ${D}/${systemd_unitdir}/system
}
-FILES_${PN} += "${systemd_unitdir}/system"
+FILES:${PN} += "${systemd_unitdir}/system"
#for i586, executable consul contains textrel
-INSANE_SKIP_${PN} += "textrel"
+INSANE_SKIP:${PN} += "textrel"
diff --git a/recipes-connectivity/consul/files/0001-Migration-Rename-imports-throughout.patch b/recipes-connectivity/consul/files/0001-Migration-Rename-imports-throughout.patch
new file mode 100644
index 00000000..906107da
--- /dev/null
+++ b/recipes-connectivity/consul/files/0001-Migration-Rename-imports-throughout.patch
@@ -0,0 +1,82 @@
+From a9353f184d6cf6ae7ef1b5676720f5bee0882ec3 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 27 Nov 2019 22:38:25 -0800
+Subject: [PATCH] Migration: Rename imports throughout
+
+rename lyft -> envoyproxy
+
+Since upstream envoyproxy update it [https://github.com/envoyproxy/protoc-gen-validate/pull/161/commits/7428b5f8e7fdabbcc7c9710e23e6f438ba4ff021]
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ .../envoy/api/v2/cluster/circuit_breaker.pb.go | 2 +-
+ .../go-control-plane/envoy/api/v2/route/route.pb.go | 4 ++--
+ .../envoyproxy/protoc-gen-validate/validate/validate.pb.go | 2 +-
+ .../envoyproxy/protoc-gen-validate/validate/validate.proto | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/vendor/github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster/circuit_breaker.pb.go b/vendor/github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster/circuit_breaker.pb.go
+index 30a138eba..7dfcc91e2 100644
+--- a/src/github.com/hashicorp/consul/vendor/github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster/circuit_breaker.pb.go
++++ b/src/github.com/hashicorp/consul/vendor/github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster/circuit_breaker.pb.go
+@@ -87,7 +87,7 @@ type CircuitBreakers_Thresholds struct {
+ // The :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`
+ // the specified CircuitBreaker settings apply to.
+ // [#comment:TODO(htuch): add (validate.rules).enum.defined_only = true once
+- // https://github.com/lyft/protoc-gen-validate/issues/42 is resolved.]
++ // https://github.com/envoyproxy/protoc-gen-validate/issues/42 is resolved.]
+ Priority core.RoutingPriority `protobuf:"varint,1,opt,name=priority,proto3,enum=envoy.api.v2.core.RoutingPriority" json:"priority,omitempty"`
+ // The maximum number of connections that Envoy will make to the upstream
+ // cluster. If not specified, the default is 1024.
+diff --git a/vendor/github.com/envoyproxy/go-control-plane/envoy/api/v2/route/route.pb.go b/vendor/github.com/envoyproxy/go-control-plane/envoy/api/v2/route/route.pb.go
+index cce788c7d..ec69f4769 100644
+--- a/src/github.com/hashicorp/consul/vendor/github.com/envoyproxy/go-control-plane/envoy/api/v2/route/route.pb.go
++++ b/src/github.com/hashicorp/consul/vendor/github.com/envoyproxy/go-control-plane/envoy/api/v2/route/route.pb.go
+@@ -1513,7 +1513,7 @@ type RouteAction struct {
+ RequestMirrorPolicy *RouteAction_RequestMirrorPolicy `protobuf:"bytes,10,opt,name=request_mirror_policy,json=requestMirrorPolicy,proto3" json:"request_mirror_policy,omitempty"`
+ // Optionally specifies the :ref:`routing priority <arch_overview_http_routing_priority>`.
+ // [#comment:TODO(htuch): add (validate.rules).enum.defined_only = true once
+- // https://github.com/lyft/protoc-gen-validate/issues/42 is resolved.]
++ // https://github.com/envoyproxy/protoc-gen-validate/issues/42 is resolved.]
+ Priority core.RoutingPriority `protobuf:"varint,11,opt,name=priority,proto3,enum=envoy.api.v2.core.RoutingPriority" json:"priority,omitempty"`
+ // Specifies a set of rate limit configurations that could be applied to the
+ // route.
+@@ -3475,7 +3475,7 @@ type VirtualCluster struct {
+ // Optionally specifies the HTTP method to match on. For example GET, PUT,
+ // etc.
+ // [#comment:TODO(htuch): add (validate.rules).enum.defined_only = true once
+- // https://github.com/lyft/protoc-gen-validate/issues/42 is resolved.]
++ // https://github.com/envoyproxy/protoc-gen-validate/issues/42 is resolved.]
+ Method core.RequestMethod `protobuf:"varint,3,opt,name=method,proto3,enum=envoy.api.v2.core.RequestMethod" json:"method,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+diff --git a/vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.pb.go b/vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.pb.go
+index ef5938c83..9a1a4c08d 100644
+--- a/src/github.com/hashicorp/consul/vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.pb.go
++++ b/src/github.com/hashicorp/consul/vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.pb.go
+@@ -1,7 +1,7 @@
+ // Code generated by protoc-gen-go. DO NOT EDIT.
+ // source: validate/validate.proto
+
+-package validate // import "github.com/lyft/protoc-gen-validate/validate"
++package validate // import "github.com/envoyproxy/protoc-gen-validate/validate"
+
+ import proto "github.com/golang/protobuf/proto"
+ import fmt "fmt"
+diff --git a/vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.proto b/vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.proto
+index 1c5e04a16..05cce2cbd 100644
+--- a/src/github.com/hashicorp/consul/vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.proto
++++ b/src/github.com/hashicorp/consul/vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.proto
+@@ -1,7 +1,7 @@
+ syntax = "proto2";
+ package validate;
+
+-option go_package = "github.com/lyft/protoc-gen-validate/validate";
++option go_package = "github.com/envoyproxy/protoc-gen-validate/validate";
+ option java_package = "com.lyft.pgv.validate";
+
+ import "google/protobuf/descriptor.proto";
+--
+2.21.0
+
diff --git a/recipes-connectivity/dhcp/dhcp_%.bbappend b/recipes-connectivity/dhcp/dhcp_%.bbappend
deleted file mode 100644
index 7466056c..00000000
--- a/recipes-connectivity/dhcp/dhcp_%.bbappend
+++ /dev/null
@@ -1,16 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += "file://dhclient-exit-hooks \
- "
-
-do_install_append () {
- install -m 0644 ${WORKDIR}/dhclient-exit-hooks ${D}${sysconfdir}/dhcp/dhclient-exit-hooks
- sed 's%/etc/dhclient-exit-hooks%/etc/dhcp/dhclient-exit-hooks%g' -i ${D}${base_sbindir}/dhclient-script
-
- sed 's%request .*%\noption classless-static-routes code 121 = array of unsigned integer 8;\n\n&%g' -i ${D}${sysconfdir}/dhcp/dhclient.conf
- sed 's%netbios-name-servers,.*netbios-scope;%netbios-name-servers, netbios-scope, classless-static-routes;\n%g' -i ${D}${sysconfdir}/dhcp/dhclient.conf
-
-}
-
-FILES_${PN}-client += "${sysconfdir}/dhcp/dhclient-exit-hooks \
- "
diff --git a/recipes-connectivity/dhcp/files/dhclient-exit-hooks b/recipes-connectivity/dhcp/files/dhclient-exit-hooks
deleted file mode 100644
index 41bcb084..00000000
--- a/recipes-connectivity/dhcp/files/dhclient-exit-hooks
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/bash
-#
-# /etc/dhcp/dhclient-exit-hooks
-#
-# This file is sourced by /sbin/dhclient-script.
-#
-# dhcp option 121 is defined in RFC3442. The following is the link.
-# http://www.ietf.org/rfc/rfc3442.txt
-#
-# The code for this option is 121, and its minimum length is 5 bytes.
-# This option can contain one or more static routes, each of which
-# consists of a destination descriptor and the IP address of the router
-# that should be used to reach that destination.
-#
-# Code Len Destination 1 Router 1
-# +-----+---+----+-----+----+----+----+----+----+
-# | 121 | n | d1 | ... | dN | r1 | r2 | r3 | r4 |
-# +-----+---+----+-----+----+----+----+----+----+
-#
-# Destination 2 Router 2
-# +----+-----+----+----+----+----+----+
-# | d1 | ... | dN | r1 | r2 | r3 | r4 |
-# +----+-----+----+----+----+----+----+
-#
-# In the above example, two static routes are specified.
-#
-# The following table contains some examples of how various subnet
-# number/mask combinations can be encoded:
-#
-# Subnet number Subnet mask Destination descriptor
-# 0 0 0
-# 10.0.0.0 255.0.0.0 8.10
-# 10.0.0.0 255.255.255.0 24.10.0.0
-# 10.17.0.0 255.255.0.0 16.10.17
-# 10.27.129.0 255.255.255.0 24.10.27.129
-# 10.229.0.128 255.255.255.128 25.10.229.0.128
-# 10.198.122.47 255.255.255.255 32.10.198.122.47
-#
-# For metadata service, the following is a valid route from nova-api that
-# the VM instance can uses to retrieve metadata.
-#
-# 32 169 254 169 254 128 224 149 201
-#
-# In the above example, mask length of destination descriptor is always 32,
-# destination is always "169.254.169.254", and the gateway is a valid IP address.
-#
-# The add_routes function takes an array of unsigned integer 8, separated by spaces,
-# parse them, and added each of the routes into routing table.
-#
-
-function add_routes() {
-while [ $# -ne 0 ]; do
- mask=$1
- shift
-
- # Parse the arguments into a CIDR net/mask string
- if [ $mask -eq 32 ]; then
- destination="-host $1.$2.$3.$4"
- shift; shift; shift; shift
- elif [ $mask -gt 24 ]; then
- destination="-net $1.$2.$3.$4/$mask"
- shift; shift; shift; shift
- elif [ $mask -gt 16 ]; then
- destination="-net $1.$2.$3.0/$mask"
- shift; shift; shift
- elif [ $mask -gt 8 ]; then
- destination="-net $1.$2.0.0/$mask"
- shift; shift
- #Add the default route
- elif [ $mask -eq 0 ]; then
- destination="default"
- else
- destination="-net $1.0.0.0/$mask"
- shift
- fi
-
- # Read the gateway
- gateway="$1.$2.$3.$4"
- shift; shift; shift; shift
-
- # Add route into routing table
- route add $destination gw $gateway
-
- # Print it out if the route is added successfully
- if [ $? = 0 ]; then
- echo "Added route \"$destination gw $gateway\""
- fi
-done
-}
-
-# Call add_routes to add routes
-if [ "x$new_classless_static_routes" != x ]; then
- add_routes $new_classless_static_routes
-fi
-
diff --git a/recipes-connectivity/serf/hashicorp-serf_0.8.5.bb b/recipes-connectivity/serf/hashicorp-serf_0.8.5.bb
new file mode 100644
index 00000000..8318400d
--- /dev/null
+++ b/recipes-connectivity/serf/hashicorp-serf_0.8.5.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Decentralized Cluster Membership, Failure Detection, and Orchestration."
+DESCRIPTION = "Serf is a decentralized solution for service discovery and \
+orchestration that is lightweight, highly available, and fault tolerant.\
+\
+Serf runs on Linux, Mac OS X, and Windows. An efficient and lightweight gossip \
+protocol is used to communicate with other nodes. Serf can detect node failures \
+and notify the rest of the cluster. An event system is built on top of Serf, \
+letting you use Serf's gossip protocol to propagate events such as deploys, \
+configuration changes, etc. Serf is completely masterless with no single point \
+of failure."
+HOMEPAGE = "https://www.serf.io/"
+SECTION = "network"
+
+LICENSE = "Apache-2.0 & BSD-3-Clause & MIT & MPL-2.0"
+LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=b278a92d2c1509760384428817710378"
+
+require serf-vendor-licenses.inc
+
+GO_IMPORT = "github.com/hashicorp/serf"
+SRC_URI = "git://${GO_IMPORT}.git;protocol=https;branch=master"
+
+PV = "0.8.5+git${SRCPV}"
+SRCREV = "1d3fdf93bbe5002c5023da50402368a817488691"
+
+S = "${WORKDIR}/git"
+
+inherit go
+
+RDEPENDS:${PN}-dev += "bash make"
+
+# Apache serf in oe-core is a completely different beast
+RCONFLICTS:${PN} = "serf"
diff --git a/recipes-connectivity/serf/serf-vendor-licenses.inc b/recipes-connectivity/serf/serf-vendor-licenses.inc
new file mode 100644
index 00000000..df8665a1
--- /dev/null
+++ b/recipes-connectivity/serf/serf-vendor-licenses.inc
@@ -0,0 +1,32 @@
+LIC_FILES_CHKSUM += "\
+ file://src/${GO_IMPORT}/vendor/golang.org/x/crypto/LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707 \
+ file://src/${GO_IMPORT}/vendor/golang.org/x/sys/LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707 \
+ file://src/${GO_IMPORT}/vendor/golang.org/x/net/LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707 \
+ file://src/${GO_IMPORT}/vendor/github.com/google/btree/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+ file://src/${GO_IMPORT}/vendor/github.com/mitchellh/cli/LICENSE;md5=b278a92d2c1509760384428817710378 \
+ file://src/${GO_IMPORT}/vendor/github.com/mitchellh/mapstructure/LICENSE;md5=3f7765c3d4f58e1f84c4313cecf0f5bd \
+ file://src/${GO_IMPORT}/vendor/github.com/sean-/seed/LICENSE;md5=ae6a5709472e0833798453b9fa793364 \
+ file://src/${GO_IMPORT}/vendor/github.com/ryanuber/columnize/COPYING;md5=4b1989be3dc78e86f2c54cf3b03db7c9 \
+ file://src/${GO_IMPORT}/vendor/github.com/fatih/color/LICENSE.md;md5=316e6d590bdcde7993fb175662c0dd5a \
+ file://src/${GO_IMPORT}/vendor/github.com/posener/complete/LICENSE.txt;md5=6778be8533804ed9e25f746e2f0ba0ee \
+ file://src/${GO_IMPORT}/vendor/github.com/mattn/go-colorable/LICENSE;md5=24ce168f90aec2456a73de1839037245 \
+ file://src/${GO_IMPORT}/vendor/github.com/mattn/go-isatty/LICENSE;md5=f509beadd5a11227c27b5d2ad6c9f2c6 \
+ file://src/${GO_IMPORT}/vendor/github.com/miekg/dns/LICENSE;md5=147353de6868a20caa562d26eab7b3c5 \
+ file://src/${GO_IMPORT}/vendor/github.com/miekg/dns/COPYRIGHT;md5=2ba6b7bd91e16af46a856eca87db2504 \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/golang-lru/LICENSE;md5=f27a50d2e878867827842f2c60e30bfc \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/go-multierror/LICENSE;md5=d44fdeb607e2d2614db9464dbedd4094 \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/go-sockaddr/LICENSE;md5=9741c346eef56131163e13b9db1241b3 \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/errwrap/LICENSE;md5=b278a92d2c1509760384428817710378 \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/go-immutable-radix/LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/go-msgpack/LICENSE;md5=3f4c936a1236aa7f17ca2a0b0ce4bfdd \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/go-syslog/LICENSE;md5=cb04212e101fbbd028f325e04ad45778 \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/mdns/LICENSE;md5=cb04212e101fbbd028f325e04ad45778 \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/go.net/LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707 \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/memberlist/LICENSE;md5=b278a92d2c1509760384428817710378 \
+ file://src/${GO_IMPORT}/vendor/github.com/hashicorp/logutils/LICENSE;md5=b278a92d2c1509760384428817710378 \
+ file://src/${GO_IMPORT}/vendor/github.com/armon/go-metrics/LICENSE;md5=d2d77030c0183e3d1e66d26dc1f243be \
+ file://src/${GO_IMPORT}/vendor/github.com/armon/go-radix/LICENSE;md5=cb04212e101fbbd028f325e04ad45778 \
+ file://src/${GO_IMPORT}/vendor/github.com/armon/circbuf/LICENSE;md5=d2d77030c0183e3d1e66d26dc1f243be \
+ file://src/${GO_IMPORT}/vendor/github.com/bgentry/speakeasy/LICENSE;md5=adf5a740fe07eb2aa1ac54aafe2d41f2 \
+ file://src/${GO_IMPORT}/vendor/github.com/bgentry/speakeasy/LICENSE_WINDOWS;md5=b563ae7163bca24b2c0ed1486f8c944c \
+ "