-
-
-
-
-
-
-
+ {INPUT_FIELDS.map(({
+ name, component, type, className, placeholder, getTitle, subtitle, disabled,
+ }) =>
+ {typeof getTitle === 'function' && getTitle()}
+
+
)}
-
-
-
-
- bootstrap_dns_desc
-
-
+
+
+
+ bootstrap_dns_desc
+
@@ -92,12 +109,11 @@ let Form = (props) => {
className={testButtonClass}
onClick={() =>
testUpstream({
- upstream_dns: upstreamDns,
- bootstrap_dns: bootstrapDns,
- all_servers: allServers,
+ upstream_dns,
+ bootstrap_dns,
})
}
- disabled={!upstreamDns || processingTestUpstream}
+ disabled={!upstream_dns || processingTestUpstream}
>
test_upstream_btn
@@ -105,7 +121,7 @@ let Form = (props) => {
type="submit"
className="btn btn-success btn-standard"
disabled={
- submitting || invalid || processingSetUpstream || processingTestUpstream
+ submitting || invalid || processingSetConfig || processingTestUpstream
}
>
apply_btn
@@ -122,24 +138,28 @@ Form.propTypes = {
submitting: PropTypes.bool,
invalid: PropTypes.bool,
initialValues: PropTypes.object,
- upstreamDns: PropTypes.string,
- bootstrapDns: PropTypes.string,
- allServers: PropTypes.bool,
+ upstream_dns: PropTypes.string,
+ bootstrap_dns: PropTypes.string,
+ fastest_addr: PropTypes.bool,
+ parallel_requests: PropTypes.bool,
processingTestUpstream: PropTypes.bool,
- processingSetUpstream: PropTypes.bool,
+ processingSetConfig: PropTypes.bool,
t: PropTypes.func,
};
const selector = formValueSelector('upstreamForm');
Form = connect((state) => {
- const upstreamDns = selector(state, 'upstream_dns');
- const bootstrapDns = selector(state, 'bootstrap_dns');
- const allServers = selector(state, 'all_servers');
+ const upstream_dns = selector(state, 'upstream_dns');
+ const bootstrap_dns = selector(state, 'bootstrap_dns');
+ const fastest_addr = selector(state, 'fastest_addr');
+ const parallel_requests = selector(state, 'parallel_requests');
+
return {
- upstreamDns,
- bootstrapDns,
- allServers,
+ upstream_dns,
+ bootstrap_dns,
+ fastest_addr,
+ parallel_requests,
};
})(Form);
diff --git a/client/src/components/Settings/Dns/Upstream/index.js b/client/src/components/Settings/Dns/Upstream/index.js
index 292c2cfd..62a93795 100644
--- a/client/src/components/Settings/Dns/Upstream/index.js
+++ b/client/src/components/Settings/Dns/Upstream/index.js
@@ -7,7 +7,7 @@ import Card from '../../../ui/Card';
class Upstream extends Component {
handleSubmit = (values) => {
- this.props.setUpstream(values);
+ this.props.setDnsConfig(values);
};
handleTest = (values) => {
@@ -17,11 +17,14 @@ class Upstream extends Component {
render() {
const {
t,
- upstreamDns: upstream_dns,
- bootstrapDns: bootstrap_dns,
- allServers: all_servers,
- processingSetUpstream,
processingTestUpstream,
+ dnsConfig: {
+ upstream_dns,
+ bootstrap_dns,
+ fastest_addr,
+ parallel_requests,
+ processingSetConfig,
+ },
} = this.props;
return (
@@ -36,12 +39,13 @@ class Upstream extends Component {
initialValues={{
upstream_dns,
bootstrap_dns,
- all_servers,
+ fastest_addr,
+ parallel_requests,
}}
testUpstream={this.handleTest}
onSubmit={this.handleSubmit}
processingTestUpstream={processingTestUpstream}
- processingSetUpstream={processingSetUpstream}
+ processingSetConfig={processingSetConfig}
/>
@@ -51,14 +55,11 @@ class Upstream extends Component {
}
Upstream.propTypes = {
- upstreamDns: PropTypes.string,
- bootstrapDns: PropTypes.string,
- allServers: PropTypes.bool,
- setUpstream: PropTypes.func.isRequired,
testUpstream: PropTypes.func.isRequired,
- processingSetUpstream: PropTypes.bool.isRequired,
processingTestUpstream: PropTypes.bool.isRequired,
t: PropTypes.func.isRequired,
+ dnsConfig: PropTypes.object.isRequired,
+ setDnsConfig: PropTypes.func.isRequired,
};
export default withNamespaces()(Upstream);
diff --git a/client/src/components/Settings/Dns/index.js b/client/src/components/Settings/Dns/index.js
index aae1fdab..85a4bcf5 100644
--- a/client/src/components/Settings/Dns/index.js
+++ b/client/src/components/Settings/Dns/index.js
@@ -10,7 +10,6 @@ import Loading from '../../ui/Loading';
class Dns extends Component {
componentDidMount() {
- this.props.getDnsSettings();
this.props.getAccessList();
this.props.getDnsConfig();
}
@@ -18,59 +17,45 @@ class Dns extends Component {
render() {
const {
t,
- dashboard,
settings,
access,
setAccessList,
testUpstream,
- setUpstream,
dnsConfig,
setDnsConfig,
} = this.props;
- const isDataLoading = dashboard.processingDnsSettings
- || access.processing
- || dnsConfig.processingGetConfig;
- const isDataReady = !dashboard.processingDnsSettings
- && !access.processing
- && !dnsConfig.processingGetConfig;
+ const isDataLoading = access.processing || dnsConfig.processingGetConfig;
return (
- {isDataLoading && }
- {isDataReady && (
+ {isDataLoading ?
+ :
-
- )}
+ }
);
}
}
Dns.propTypes = {
- dashboard: PropTypes.object.isRequired,
settings: PropTypes.object.isRequired,
- setUpstream: PropTypes.func.isRequired,
testUpstream: PropTypes.func.isRequired,
getAccessList: PropTypes.func.isRequired,
setAccessList: PropTypes.func.isRequired,
access: PropTypes.object.isRequired,
- getDnsSettings: PropTypes.func.isRequired,
dnsConfig: PropTypes.object.isRequired,
setDnsConfig: PropTypes.func.isRequired,
getDnsConfig: PropTypes.func.isRequired,
diff --git a/client/src/components/ui/Checkbox.css b/client/src/components/ui/Checkbox.css
index ff657898..bab88c79 100644
--- a/client/src/components/ui/Checkbox.css
+++ b/client/src/components/ui/Checkbox.css
@@ -83,6 +83,7 @@
.checkbox__input:disabled + .checkbox__label {
cursor: default;
+ color: var(--gray);
}
.checkbox__input:disabled + .checkbox__label:before {
diff --git a/client/src/containers/Dns.js b/client/src/containers/Dns.js
index f32e1510..961c2f3e 100644
--- a/client/src/containers/Dns.js
+++ b/client/src/containers/Dns.js
@@ -1,5 +1,5 @@
import { connect } from 'react-redux';
-import { handleUpstreamChange, setUpstream, testUpstream, getDnsSettings } from '../actions';
+import { testUpstream } from '../actions';
import { getAccessList, setAccessList } from '../actions/access';
import {
getRewritesList,
@@ -25,8 +25,6 @@ const mapStateToProps = (state) => {
};
const mapDispatchToProps = {
- handleUpstreamChange,
- setUpstream,
testUpstream,
getAccessList,
setAccessList,
@@ -34,7 +32,6 @@ const mapDispatchToProps = {
addRewrite,
deleteRewrite,
toggleRewritesModal,
- getDnsSettings,
getDnsConfig,
setDnsConfig,
};
diff --git a/client/src/helpers/form.js b/client/src/helpers/form.js
index d075feee..97c0daa2 100644
--- a/client/src/helpers/form.js
+++ b/client/src/helpers/form.js
@@ -117,29 +117,30 @@ export const renderSelectField = ({
placeholder,
subtitle,
disabled,
+ onClick,
modifier = 'checkbox--form',
meta: { touched, error },
}) => (
-
-
- {!disabled &&
- touched &&
- (error && {error})}
-
+
+ {!disabled &&
+ touched &&
+ (error &&
{error})}
+
);
export const renderServiceField = ({
diff --git a/client/src/reducers/dnsConfig.js b/client/src/reducers/dnsConfig.js
index ad45e631..9f55bee7 100644
--- a/client/src/reducers/dnsConfig.js
+++ b/client/src/reducers/dnsConfig.js
@@ -15,6 +15,8 @@ const dnsConfig = handleActions(
const {
blocking_ipv4,
blocking_ipv6,
+ upstream_dns,
+ bootstrap_dns,
...values
} = payload;
@@ -23,6 +25,8 @@ const dnsConfig = handleActions(
...values,
blocking_ipv4: blocking_ipv4 || DEFAULT_BLOCKING_IPV4,
blocking_ipv6: blocking_ipv6 || DEFAULT_BLOCKING_IPV6,
+ upstream_dns: (upstream_dns && upstream_dns.join('\n')) || '',
+ bootstrap_dns: (bootstrap_dns && bootstrap_dns.join('\n')) || '',
processingGetConfig: false,
};
},
diff --git a/client/src/reducers/index.js b/client/src/reducers/index.js
index 046fce67..245cf17d 100644
--- a/client/src/reducers/index.js
+++ b/client/src/reducers/index.js
@@ -35,14 +35,6 @@ const settings = handleActions(
const newSettingsList = { ...settingsList, [settingKey]: newSetting };
return { ...state, settingsList: newSettingsList };
},
- [actions.setUpstreamRequest]: state => ({ ...state, processingSetUpstream: true }),
- [actions.setUpstreamFailure]: state => ({ ...state, processingSetUpstream: false }),
- [actions.setUpstreamSuccess]: (state, { payload }) => ({
- ...state,
- ...payload,
- processingSetUpstream: false,
- }),
-
[actions.testUpstreamRequest]: state => ({ ...state, processingTestUpstream: true }),
[actions.testUpstreamFailure]: state => ({ ...state, processingTestUpstream: false }),
[actions.testUpstreamSuccess]: state => ({ ...state, processingTestUpstream: false }),
@@ -50,7 +42,6 @@ const settings = handleActions(
{
processing: true,
processingTestUpstream: false,
- processingSetUpstream: false,
processingDhcpStatus: false,
settingsList: {},
},
@@ -67,12 +58,9 @@ const dashboard = handleActions(
version,
dns_port: dnsPort,
dns_addresses: dnsAddresses,
- upstream_dns: upstreamDns,
- bootstrap_dns: bootstrapDns,
- all_servers: allServers,
protection_enabled: protectionEnabled,
- language,
http_port: httpPort,
+ language,
} = payload;
const newState = {
...state,
@@ -81,9 +69,6 @@ const dashboard = handleActions(
dnsVersion: version,
dnsPort,
dnsAddresses,
- upstreamDns: (upstreamDns && upstreamDns.join('\n')) || '',
- bootstrapDns: (bootstrapDns && bootstrapDns.join('\n')) || '',
- allServers,
protectionEnabled,
language,
httpPort,
@@ -138,11 +123,6 @@ const dashboard = handleActions(
return newState;
},
- [actions.handleUpstreamChange]: (state, { payload }) => {
- const { upstreamDns } = payload;
- return { ...state, upstreamDns };
- },
-
[actions.getLanguageSuccess]: (state, { payload }) => {
const newState = { ...state, language: payload };
return newState;
@@ -159,24 +139,6 @@ const dashboard = handleActions(
return newState;
},
- [actions.getDnsSettingsRequest]: state => ({ ...state, processingDnsSettings: true }),
- [actions.getDnsSettingsFailure]: state => ({ ...state, processingDnsSettings: false }),
- [actions.getDnsSettingsSuccess]: (state, { payload }) => {
- const {
- upstream_dns: upstreamDns,
- bootstrap_dns: bootstrapDns,
- all_servers: allServers,
- } = payload;
-
- return {
- ...state,
- allServers,
- upstreamDns: (upstreamDns && upstreamDns.join('\n')) || '',
- bootstrapDns: (bootstrapDns && bootstrapDns.join('\n')) || '',
- processingDnsSettings: false,
- };
- },
-
[actions.getProfileRequest]: state => ({ ...state, processingProfile: true }),
[actions.getProfileFailure]: state => ({ ...state, processingProfile: false }),
[actions.getProfileSuccess]: (state, { payload }) => ({
@@ -191,11 +153,7 @@ const dashboard = handleActions(
processingVersion: true,
processingClients: true,
processingUpdate: false,
- processingDnsSettings: true,
processingProfile: true,
- upstreamDns: '',
- bootstrapDns: '',
- allServers: false,
protectionEnabled: false,
processingProtection: false,
httpPort: 80,
From 4153d973ecac72ed2e87f4606d163a9db311b949 Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Wed, 22 Apr 2020 21:02:38 +0300
Subject: [PATCH 14/37] update snap script, added temp files to .gitignore
---
.gitignore | 7 +++++++
build_snap.sh | 5 +++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/.gitignore b/.gitignore
index 78d61cdf..7b15eb29 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,10 @@ coverage.txt
# Test output
dnsfilter/tests/top-1m.csv
dnsfilter/tests/dnsfilter.TestLotsOfRules*.pprof
+
+# Snapcraft build temporary files
+*.snap
+launchpad_credentials
+snapcraft_login
+snapcraft.yaml
+snapcraft.yaml.bak
\ No newline at end of file
diff --git a/build_snap.sh b/build_snap.sh
index 8879fd22..525b210b 100755
--- a/build_snap.sh
+++ b/build_snap.sh
@@ -260,9 +260,10 @@ case "$1" in
"build-docker") build_docker ;;
"build") build ;;
"publish-docker-beta") publish_docker beta ;;
-"publish-docker-release") publish_docker release ;;
+"publish-docker-release") publish_docker stable ;;
"publish-beta") publish beta ;;
-"publish-release") publish release ;;
+"publish-release") publish stable ;;
+"prepare") prepare ;;
"cleanup") cleanup ;;
*) usage ;;
esac
From e2ee2d48df1f165a3d6b8e6e5fe6c5ce5d20c0b0 Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Wed, 22 Apr 2020 21:57:25 +0300
Subject: [PATCH 15/37] Allow to build a specific snap architecture
---
build_snap.sh | 30 ++++++++++++++++++++----------
1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/build_snap.sh b/build_snap.sh
index 525b210b..07e61b53 100755
--- a/build_snap.sh
+++ b/build_snap.sh
@@ -195,17 +195,27 @@ publish_snap_docker() {
#######################################
build() {
- ARCH=i386 build_snap
- ARCH=arm64 build_snap
- ARCH=armhf build_snap
- ARCH=amd64 build_snap
+ if [[ -n "$1" ]]; then
+ echo "ARCH is set to $1"
+ ARCH=$1 build_snap
+ else
+ ARCH=i386 build_snap
+ ARCH=arm64 build_snap
+ ARCH=armhf build_snap
+ ARCH=amd64 build_snap
+ fi
}
build_docker() {
- ARCH=i386 build_snap_docker
- ARCH=arm64 build_snap_docker
- ARCH=armhf build_snap_docker
- ARCH=amd64 build_snap_docker
+ if [[ -n "$1" ]]; then
+ echo "ARCH is set to $1"
+ ARCH=$1 build_snap_docker
+ else
+ ARCH=i386 build_snap_docker
+ ARCH=arm64 build_snap_docker
+ ARCH=armhf build_snap_docker
+ ARCH=amd64 build_snap_docker
+ fi
}
publish_docker() {
@@ -257,8 +267,8 @@ if [[ -z $1 || $1 == "--help" || $1 == "-h" ]]; then
fi
case "$1" in
-"build-docker") build_docker ;;
-"build") build ;;
+"build-docker") build_docker $2 ;;
+"build") build $2 ;;
"publish-docker-beta") publish_docker beta ;;
"publish-docker-release") publish_docker stable ;;
"publish-beta") publish beta ;;
From 1041aa8aff48a8815eae7f9c437c052a452a2331 Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Thu, 23 Apr 2020 00:27:03 +0300
Subject: [PATCH 16/37] fix stable snap publishing
---
build_snap.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/build_snap.sh b/build_snap.sh
index 07e61b53..412cba4e 100755
--- a/build_snap.sh
+++ b/build_snap.sh
@@ -224,7 +224,7 @@ publish_docker() {
exit 1
fi
CHANNEL="${1}"
- if [ "$CHANNEL" != "release" ] && [ "$CHANNEL" != "beta" ]; then
+ if [ "$CHANNEL" != "stable" ] && [ "$CHANNEL" != "beta" ]; then
echo "$CHANNEL is an invalid value for the update channel!"
exit 1
fi
@@ -241,7 +241,7 @@ publish() {
exit 1
fi
CHANNEL="${1}"
- if [ "$CHANNEL" != "release" ] && [ "$CHANNEL" != "beta" ]; then
+ if [ "$CHANNEL" != "stable" ] && [ "$CHANNEL" != "beta" ]; then
echo "$CHANNEL is an invalid value for the update channel!"
exit 1
fi
From 63d525c4d43c060f8c0f678c0da394e41a3ed90f Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Thu, 23 Apr 2020 01:05:31 +0300
Subject: [PATCH 17/37] upd snap yaml
---
packaging/snap/snapcraft.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/packaging/snap/snapcraft.yaml b/packaging/snap/snapcraft.yaml
index ba7a47d0..e810aab3 100644
--- a/packaging/snap/snapcraft.yaml
+++ b/packaging/snap/snapcraft.yaml
@@ -6,6 +6,7 @@ description: |
AdGuard Home is a network-wide software for blocking ads & tracking. After
you set it up, it'll cover ALL your home devices, and you don't need any
client-side software for that.
+
It operates as a DNS server that re-routes tracking domains to a "black hole,"
thus preventing your devices from connecting to those servers. It's based
on software we use for our public AdGuard DNS servers -- both share a lot
From 4889f2d00a2153c6b78d3b92cf050d3b0ad5c763 Mon Sep 17 00:00:00 2001
From: Archive5 <63988538+Archive5@users.noreply.github.com>
Date: Mon, 20 Apr 2020 15:52:45 -0700
Subject: [PATCH 18/37] * blocked_services.go: Update blocked services
component
rearrange
rearrange
---
dnsfilter/blocked_services.go | 39 ++++++++++++++++++++++++++++-------
1 file changed, 31 insertions(+), 8 deletions(-)
diff --git a/dnsfilter/blocked_services.go b/dnsfilter/blocked_services.go
index f11eed5a..1c77d1bc 100644
--- a/dnsfilter/blocked_services.go
+++ b/dnsfilter/blocked_services.go
@@ -24,6 +24,7 @@ var serviceRulesArray = []svc{
"||facebook.com^",
"||facebook.net^",
"||fbcdn.net^",
+ "||accountkit.com^",
"||fb.me^",
"||fb.com^",
"||fbsbx.com^",
@@ -31,7 +32,7 @@ var serviceRulesArray = []svc{
"||facebookcorewwwi.onion^",
"||fbcdn.com^",
}},
- {"twitter", []string{"||twitter.com^", "||t.co^", "||twimg.com^"}},
+ {"twitter", []string{"||twitter.com^", "||twttr.com^", "||t.co^", "||twimg.com^"}},
{"youtube", []string{
"||youtube.com^",
"||ytimg.com^",
@@ -40,17 +41,31 @@ var serviceRulesArray = []svc{
"||youtubei.googleapis.com^",
"||youtube-nocookie.com^",
}},
- {"twitch", []string{"||twitch.tv^", "||ttvnw.net^"}},
- {"netflix", []string{"||nflxext.com^", "||netflix.com^"}},
+ {"twitch", []string{"||twitch.tv^", "||ttvnw.net^", "||jtvnw.net^", "||twitchcdn.net^"}},
+ {"netflix", []string{"||nflxext.com^", "||netflix.com^", "||nflximg.net^", "||nflxvideo.net^"}},
{"instagram", []string{"||instagram.com^", "||cdninstagram.com^"}},
- {"snapchat", []string{"||snapchat.com^", "||sc-cdn.net^", "||impala-media-production.s3.amazonaws.com^"}},
+ {"snapchat", []string{
+ "||snapchat.com^",
+ "||sc-cdn.net^",
+ "||snap-dev.net^",
+ "||snapkit.co",
+ "||snapads.com^",
+ "||impala-media-production.s3.amazonaws.com^",
+ }},
{"discord", []string{"||discord.gg^", "||discordapp.net^", "||discordapp.com^", "||discord.media^"}},
{"ok", []string{"||ok.ru^"}},
- {"skype", []string{"||skype.com^"}},
- {"vk", []string{"||vk.com^"}},
+ {"skype", []string{"||skype.com^", "||skypeassets.com^"}},
+ {"vk", []string{"||vk.com^", "||userapi.com^", "||vk-cdn.net^", "||vkuservideo.net^"}},
{"origin", []string{"||origin.com^", "||signin.ea.com^", "||accounts.ea.com^"}},
- {"steam", []string{"||steam.com^", "||steampowered.com^"}},
- {"epic_games", []string{"||epicgames.com^"}},
+ {"steam", []string{
+ "||steam.com^",
+ "||steampowered.com^",
+ "||steamcommunity.com^",
+ "||steamstatic.com^",
+ "||steamstore-a.akamaihd.net^",
+ "||steamcdn-a.akamaihd.net^",
+ }},
+ {"epic_games", []string{"||epicgames.com^", "||easyanticheat.net^", "||easy.ac^", "||eac-cdn.com^"}},
{"reddit", []string{"||reddit.com^", "||redditstatic.com^", "||redditmedia.com^", "||redd.it^"}},
{"mail_ru", []string{"||mail.ru^"}},
{"cloudflare", []string{
@@ -72,7 +87,13 @@ var serviceRulesArray = []svc{
{"amazon", []string{
"||amazon.com^",
"||media-amazon.com^",
+ "||primevideo.com^",
+ "||amazontrust.com^",
"||images-amazon.com^",
+ "||ssl-images-amazon.com^",
+ "||amazonpay.com^",
+ "||amazonpay.in^",
+ "||amazon-adsystem.com^",
"||a2z.com^",
"||amazon.ae^",
"||amazon.ca^",
@@ -88,6 +109,7 @@ var serviceRulesArray = []svc{
"||amazon.co.jp^",
"||amazon.com.mx^",
"||amazon.co.uk^",
+ "||createspace.com^",
}},
{"ebay", []string{
"||ebay.com^",
@@ -119,6 +141,7 @@ var serviceRulesArray = []svc{
{"tiktok", []string{
"||tiktok.com^",
"||tiktokcdn.com^",
+ "||musical.ly^",
"||snssdk.com^",
"||amemv.com^",
"||toutiao.com^",
From 4d73a0148e8671c839416eba4398eb13504e9cc0 Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Thu, 23 Apr 2020 16:18:58 +0300
Subject: [PATCH 19/37] change snap name to adguard-home
---
build_snap.sh | 2 +-
packaging/snap/snapcraft.yaml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/build_snap.sh b/build_snap.sh
index 412cba4e..7150b394 100755
--- a/build_snap.sh
+++ b/build_snap.sh
@@ -6,7 +6,7 @@ set -x
BUILDER_IMAGE="adguard/snapcraft:1.0"
SNAPCRAFT_TMPL="packaging/snap/snapcraft.yaml"
-SNAP_NAME="adguardhometest"
+SNAP_NAME="adguard-home"
LAUNCHPAD_CREDENTIALS_DIR=".local/share/snapcraft/provider/launchpad"
if [[ -z ${VERSION} ]]; then
diff --git a/packaging/snap/snapcraft.yaml b/packaging/snap/snapcraft.yaml
index e810aab3..5d1c2280 100644
--- a/packaging/snap/snapcraft.yaml
+++ b/packaging/snap/snapcraft.yaml
@@ -1,4 +1,4 @@
-name: adguardhometest
+name: adguard-home
base: core18
version: 'dev_version'
summary: Network-wide ads & trackers blocking DNS server
From 25361836bf5ff357e59e70235d7370431611184c Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Fri, 24 Apr 2020 01:15:53 +0300
Subject: [PATCH 20/37] *: snap: don't use SNAP_COMMON
---
packaging/snap/snapcraft.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packaging/snap/snapcraft.yaml b/packaging/snap/snapcraft.yaml
index 5d1c2280..1d6c5274 100644
--- a/packaging/snap/snapcraft.yaml
+++ b/packaging/snap/snapcraft.yaml
@@ -26,7 +26,7 @@ parts:
cp AdGuardHome ${SNAPCRAFT_PART_INSTALL}/
apps:
adguard-home:
- command: AdGuardHome -c ${SNAP_COMMON}/AdGuardHome.yaml -w ${SNAP_DATA} --no-check-update
+ command: AdGuardHome -w ${SNAP_DATA} --no-check-update
plugs: [ network-bind ]
daemon: simple
restart-condition: always
\ No newline at end of file
From 490784c285acc6ae32994062e3d9d1db73639713 Mon Sep 17 00:00:00 2001
From: Simon Zolin
Date: Fri, 24 Apr 2020 10:25:46 +0300
Subject: [PATCH 21/37] dnsproxy v0.26.3
---
go.mod | 2 +-
go.sum | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/go.mod b/go.mod
index 06bb22f5..8a39908f 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,7 @@ module github.com/AdguardTeam/AdGuardHome
go 1.14
require (
- github.com/AdguardTeam/dnsproxy v0.26.2
+ github.com/AdguardTeam/dnsproxy v0.26.3
github.com/AdguardTeam/golibs v0.4.2
github.com/AdguardTeam/urlfilter v0.10.0
github.com/NYTimes/gziphandler v1.1.1
diff --git a/go.sum b/go.sum
index bab761e2..be1e5861 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,5 @@
-github.com/AdguardTeam/dnsproxy v0.26.2 h1:VaFDlhoIbhPtnpcQ/sBNVgvpMQSvMotLS+9ZzB/xuhE=
-github.com/AdguardTeam/dnsproxy v0.26.2/go.mod h1:hOYFV9TW+pd5XKYz7KZf2FFD8SvSPqjyGTxUae86s58=
+github.com/AdguardTeam/dnsproxy v0.26.3 h1:SHvJS3xnIPkJwHqP5tQa2PTqesHgoUJeeWZQw2seXiY=
+github.com/AdguardTeam/dnsproxy v0.26.3/go.mod h1:hOYFV9TW+pd5XKYz7KZf2FFD8SvSPqjyGTxUae86s58=
github.com/AdguardTeam/golibs v0.4.0 h1:4VX6LoOqFe9p9Gf55BeD8BvJD6M6RDYmgEiHrENE9KU=
github.com/AdguardTeam/golibs v0.4.0/go.mod h1:skKsDKIBB7kkFflLJBpfGX+G8QFTx0WKUzB6TIgtUj4=
github.com/AdguardTeam/golibs v0.4.2 h1:7M28oTZFoFwNmp8eGPb3ImmYbxGaJLyQXeIFVHjME0o=
From b5d437c92af5b9f516212e0f8dbba5e88fcce8b8 Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Fri, 24 Apr 2020 12:00:20 +0300
Subject: [PATCH 22/37] *: snapfile for edge channel builds
---
.gitignore | 1 -
build_snap.sh | 1 +
snapcraft.yaml | 35 +++++++++++++++++++++++++++++++++++
3 files changed, 36 insertions(+), 1 deletion(-)
create mode 100644 snapcraft.yaml
diff --git a/.gitignore b/.gitignore
index 7b15eb29..77c43738 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,5 +22,4 @@ dnsfilter/tests/dnsfilter.TestLotsOfRules*.pprof
*.snap
launchpad_credentials
snapcraft_login
-snapcraft.yaml
snapcraft.yaml.bak
\ No newline at end of file
diff --git a/build_snap.sh b/build_snap.sh
index 7150b394..f44b950c 100755
--- a/build_snap.sh
+++ b/build_snap.sh
@@ -257,6 +257,7 @@ cleanup() {
rm -f snapcraft.yaml
rm -f snapcraft.yaml.bak
rm -f snapcraft_login
+ git checkout snapcraft.yaml
}
#######################################
diff --git a/snapcraft.yaml b/snapcraft.yaml
new file mode 100644
index 00000000..d2f4f375
--- /dev/null
+++ b/snapcraft.yaml
@@ -0,0 +1,35 @@
+# Note that this snapcraft.yaml file is used for automatic Edge channel builds ONLY!
+# We use packaging/snap/snapcraft.yaml for beta and release builds
+# Check out build_snap.sh for more details
+name: adguard-home
+base: core18
+version: 'edge'
+summary: Network-wide ads & trackers blocking DNS server
+description: |
+ AdGuard Home is a network-wide software for blocking ads & tracking. After
+ you set it up, it'll cover ALL your home devices, and you don't need any
+ client-side software for that.
+
+ It operates as a DNS server that re-routes tracking domains to a "black hole,"
+ thus preventing your devices from connecting to those servers. It's based
+ on software we use for our public AdGuard DNS servers -- both share a lot
+ of common code.
+grade: stable
+confinement: strict
+
+parts:
+ adguard-home:
+ plugin: make
+ source: .
+ build-snaps: [ node/13/stable, go ]
+ build-packages: [ git, build-essential ]
+ override-build: |
+ make clean
+ make
+ cp AdGuardHome ${SNAPCRAFT_PART_INSTALL}/
+apps:
+ adguard-home:
+ command: AdGuardHome -w ${SNAP_DATA} --no-check-update
+ plugs: [ network-bind ]
+ daemon: simple
+ restart-condition: always
\ No newline at end of file
From c7a2cbe04ef1b4418f774cc589eaf9c05ff1c650 Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Fri, 24 Apr 2020 12:28:00 +0300
Subject: [PATCH 23/37] *(global): limit architectures list for edge build
---
snapcraft.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/snapcraft.yaml b/snapcraft.yaml
index d2f4f375..cda2f165 100644
--- a/snapcraft.yaml
+++ b/snapcraft.yaml
@@ -17,6 +17,9 @@ description: |
grade: stable
confinement: strict
+architectures:
+ - build-on: [ amd64, i386, arm64, armhf ]
+
parts:
adguard-home:
plugin: make
From 44353821e6bf99839dac15f0049a3335c0376258 Mon Sep 17 00:00:00 2001
From: Simon Zolin
Date: Fri, 24 Apr 2020 14:04:36 +0300
Subject: [PATCH 24/37] * TestAuth: improve test
---
home/auth_test.go | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/home/auth_test.go b/home/auth_test.go
index 38f826ec..a4829b93 100644
--- a/home/auth_test.go
+++ b/home/auth_test.go
@@ -47,7 +47,7 @@ func TestAuth(t *testing.T) {
// add session with TTL = 2 sec
s = session{}
- s.expire = uint32(now + 2)
+ s.expire = uint32(time.Now().UTC().Unix() + 2)
a.addSession(sess, &s)
assert.True(t, a.CheckSession(sessStr) == 0)
@@ -59,7 +59,7 @@ func TestAuth(t *testing.T) {
// the session is still alive
assert.True(t, a.CheckSession(sessStr) == 0)
// reset our expiration time because CheckSession() has just updated it
- s.expire = uint32(now + 2)
+ s.expire = uint32(time.Now().UTC().Unix() + 2)
a.storeSession(sess, &s)
a.Close()
From 9ce2a66c0e05d4525411e46db73df3cf3f52c1d0 Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Fri, 24 Apr 2020 15:08:58 +0300
Subject: [PATCH 25/37] *(documentation): added Snap Store to documentation
---
README.md | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 99575e34..c44dddef 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,9 @@
+
+
+
@@ -59,7 +62,9 @@ It operates as a DNS server that re-routes tracking domains to a "black hole," t
## Getting Started
-Please read the [Getting Started](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started) article on our Wiki to learn how to install AdGuard Home, and how to configure your devices to use it.
+Please read the **[Getting Started](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started)** article on our Wiki to learn how to install AdGuard Home, and how to configure your devices to use it.
+
+If you're running **Linux**, there's a secure and easy way to install AdGuard Home - you can get it from the [Snap Store](https://snapcraft.io/adguard-home).
Alternatively, you can use our [official Docker image](https://hub.docker.com/r/adguard/adguardhome).
@@ -69,6 +74,7 @@ Alternatively, you can use our [official Docker image](https://hub.docker.com/r/
* [AdGuard Home as a DNS-over-HTTPS or DNS-over-TLS server](https://github.com/AdguardTeam/AdGuardHome/wiki/Encryption)
* [How to install and run AdGuard Home on Raspberry Pi](https://github.com/AdguardTeam/AdGuardHome/wiki/Raspberry-Pi)
* [How to install and run AdGuard Home on a Virtual Private Server](https://github.com/AdguardTeam/AdGuardHome/wiki/VPS)
+* [How to write your own hosts blocklists properly](https://github.com/AdguardTeam/AdGuardHome/wiki/Hosts-Blocklists)
### API
From 8ad9422a4809a29f1f0e157250d67c9806ecb77f Mon Sep 17 00:00:00 2001
From: Andrey Meshkov
Date: Fri, 24 Apr 2020 15:13:24 +0300
Subject: [PATCH 26/37] *(documentation): added info about snap edge/beta
channels
---
README.md | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index c44dddef..48d78b9a 100644
--- a/README.md
+++ b/README.md
@@ -171,11 +171,12 @@ You are welcome to fork this repository, make your changes and submit a pull req
### Test unstable versions
-There are two options how you can install an unstable version.
-You can either install a beta version of AdGuard Home which we update periodically,
-or you can use the Docker image from the `edge` tag, which is synced with the repo master branch.
+There are three options how you can install an unstable version.
+
+1. You can either install a beta version of AdGuard Home which we update periodically.
+2. You can use the Docker image from the `edge` tag, which is synced with the repo master branch.
+3. You can install AdGuard Home from `beta` or `edge` channels on the Snap Store.
-* [Docker Hub](https://hub.docker.com/r/adguard/adguardhome)
* Beta builds
* [Raspberry Pi (32-bit ARMv6)](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_arm.tar.gz)
* [MacOS](https://static.adguard.com/adguardhome/beta/AdGuardHome_MacOS.zip)
@@ -188,6 +189,8 @@ or you can use the Docker image from the `edge` tag, which is synced with the re
* [Linux 32-bit ARMv5](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_armv5.tar.gz)
* [MIPS](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mips.tar.gz)
* [MIPSLE](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mipsle.tar.gz)
+* [Docker Hub](https://hub.docker.com/r/adguard/adguardhome)
+* [Snap Store](https://snapcraft.io/adguard-home)
### Report issues
From e24143a1962c16763cb73f4e41b30117bcf0d80c Mon Sep 17 00:00:00 2001
From: Simon Zolin
Date: Fri, 24 Apr 2020 15:50:57 +0300
Subject: [PATCH 27/37] - Web: flush the bufferred response data before
performing global operations
---
home/control_install.go | 7 +++++--
home/control_update.go | 4 +++-
home/tls.go | 5 ++++-
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/home/control_install.go b/home/control_install.go
index 4a39983f..864ad96b 100644
--- a/home/control_install.go
+++ b/home/control_install.go
@@ -351,6 +351,11 @@ func (web *Web) handleInstallConfigure(w http.ResponseWriter, r *http.Request) {
registerControlHandlers()
+ returnOK(w)
+ if f, ok := w.(http.Flusher); ok {
+ f.Flush()
+ }
+
// this needs to be done in a goroutine because Shutdown() is a blocking call, and it will block
// until all requests are finished, and _we_ are inside a request right now, so it will block indefinitely
if restartHTTP {
@@ -358,8 +363,6 @@ func (web *Web) handleInstallConfigure(w http.ResponseWriter, r *http.Request) {
_ = Context.web.httpServer.Shutdown(context.TODO())
}()
}
-
- returnOK(w)
}
func (web *Web) registerInstallHandlers() {
diff --git a/home/control_update.go b/home/control_update.go
index b0080e44..6115fac1 100644
--- a/home/control_update.go
+++ b/home/control_update.go
@@ -548,7 +548,9 @@ func handleUpdate(w http.ResponseWriter, r *http.Request) {
}
returnOK(w)
+ if f, ok := w.(http.Flusher); ok {
+ f.Flush()
+ }
- time.Sleep(time.Second) // wait (hopefully) until response is sent (not sure whether it's really necessary)
go finishUpdate(u)
}
diff --git a/home/tls.go b/home/tls.go
index 1e6267fe..5977f859 100644
--- a/home/tls.go
+++ b/home/tls.go
@@ -279,11 +279,14 @@ func (t *TLSMod) handleTLSConfigure(w http.ResponseWriter, r *http.Request) {
tlsConfigStatus: t.status,
}
marshalTLS(w, data2)
+ if f, ok := w.(http.Flusher); ok {
+ f.Flush()
+ }
+
// this needs to be done in a goroutine because Shutdown() is a blocking call, and it will block
// until all requests are finished, and _we_ are inside a request right now, so it will block indefinitely
if restartHTTPS {
go func() {
- time.Sleep(time.Second) // TODO: could not find a way to reliably know that data was fully sent to client by https server, so we wait a bit to let response through before closing the server
Context.web.TLSConfigChanged(data)
}()
}
From 3b0914715ee0be2a5b6236729b9976193db9bb17 Mon Sep 17 00:00:00 2001
From: ArtemBaskal
Date: Fri, 24 Apr 2020 16:51:44 +0300
Subject: [PATCH 28/37] + client: Switch places for "Upstream DNS servers" and
"DNS servers configuration"
---
client/package-lock.json | 843 ++++++++++++++------
client/src/components/Settings/Dns/index.js | 8 +-
2 files changed, 606 insertions(+), 245 deletions(-)
diff --git a/client/package-lock.json b/client/package-lock.json
index 0f020587..6c73efd3 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -167,9 +167,9 @@
}
},
"minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"ms": {
@@ -778,9 +778,9 @@
}
},
"acorn": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz",
- "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==",
+ "version": "5.7.4",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+ "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
"dev": true
},
"acorn-dynamic-import": {
@@ -2259,8 +2259,7 @@
},
"kind-of": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "resolved": "",
"dev": true
}
}
@@ -3057,8 +3056,7 @@
},
"kind-of": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "resolved": "",
"dev": true
},
"micromatch": {
@@ -3208,6 +3206,17 @@
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"dev": true
},
+ "coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+ "dev": true,
+ "requires": {
+ "@types/q": "^1.5.1",
+ "chalk": "^2.4.1",
+ "q": "^1.1.2"
+ }
+ },
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -3679,8 +3688,7 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "resolved": "",
"dev": true
},
"normalize-path": {
@@ -3734,6 +3742,22 @@
"nth-check": "~1.0.1"
}
},
+ "css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
+ "dev": true
+ },
+ "css-tree": {
+ "version": "1.0.0-alpha.37",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
+ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.4",
+ "source-map": "^0.6.1"
+ }
+ },
"css-what": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
@@ -3752,6 +3776,33 @@
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true
},
+ "csso": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz",
+ "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==",
+ "dev": true,
+ "requires": {
+ "css-tree": "1.0.0-alpha.39"
+ },
+ "dependencies": {
+ "css-tree": {
+ "version": "1.0.0-alpha.39",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz",
+ "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.6",
+ "source-map": "^0.6.1"
+ }
+ },
+ "mdn-data": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz",
+ "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==",
+ "dev": true
+ }
+ }
+ },
"csstype": {
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.8.tgz",
@@ -4024,9 +4075,9 @@
"dev": true
},
"kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
}
}
@@ -4918,6 +4969,12 @@
"acorn-jsx": "^3.0.0"
}
},
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
"esquery": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
@@ -5231,8 +5288,7 @@
},
"kind-of": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "resolved": "",
"dev": true
}
}
@@ -6226,9 +6282,9 @@
},
"dependencies": {
"kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
}
}
@@ -6268,20 +6324,12 @@
"dev": true
},
"gonzales-pe": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.3.tgz",
- "integrity": "sha512-Kjhohco0esHQnOiqqdJeNz/5fyPkOMD/d6XVjwTAoPGUFh0mCollPUTUTa2OZy4dYNAqlPIQdTiNzJTWdd9Htw==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz",
+ "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==",
"dev": true,
"requires": {
- "minimist": "1.1.x"
- },
- "dependencies": {
- "minimist": {
- "version": "1.1.3",
- "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz",
- "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=",
- "dev": true
- }
+ "minimist": "^1.2.5"
}
},
"graceful-fs": {
@@ -6324,6 +6372,12 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
+ "has-symbols": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+ "dev": true
+ },
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -6890,9 +6944,9 @@
"dev": true
},
"kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
},
"micromatch": {
@@ -7589,6 +7643,16 @@
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
"jsesc": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
@@ -7706,13 +7770,13 @@
}
},
"loader-fs-cache": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz",
- "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz",
+ "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==",
"dev": true,
"requires": {
"find-cache-dir": "^0.1.1",
- "mkdirp": "0.5.1"
+ "mkdirp": "^0.5.1"
},
"dependencies": {
"find-cache-dir": {
@@ -7978,9 +8042,9 @@
}
},
"mdn-data": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz",
- "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
"dev": true
},
"media-typer": {
@@ -8070,9 +8134,9 @@
},
"dependencies": {
"kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
}
}
@@ -8136,9 +8200,9 @@
}
},
"minimist": {
- "version": "0.0.8",
- "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"minimist-options": {
@@ -8191,12 +8255,12 @@
}
},
"mkdirp": {
- "version": "0.5.1",
- "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
- "minimist": "0.0.8"
+ "minimist": "^1.2.5"
}
},
"move-concurrently": {
@@ -8284,9 +8348,9 @@
"dev": true
},
"kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
}
}
@@ -8489,6 +8553,12 @@
"integrity": "sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ==",
"dev": true
},
+ "object-inspect": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
+ "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
+ "dev": true
+ },
"object-keys": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
@@ -8512,6 +8582,18 @@
}
}
},
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
"object.getownpropertydescriptors": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
@@ -8539,6 +8621,80 @@
}
}
},
+ "object.values": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
+ "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ },
+ "dependencies": {
+ "es-abstract": {
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
+ "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.1.5",
+ "is-regex": "^1.0.5",
+ "object-inspect": "^1.7.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.0",
+ "string.prototype.trimleft": "^2.1.1",
+ "string.prototype.trimright": "^2.1.1"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
+ "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
+ "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ }
+ }
+ },
"obuf": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
@@ -8879,30 +9035,39 @@
"dev": true
},
"portfinder": {
- "version": "1.0.20",
- "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz",
- "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==",
+ "version": "1.0.25",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
+ "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
"dev": true,
"requires": {
- "async": "^1.5.2",
- "debug": "^2.2.0",
- "mkdirp": "0.5.x"
+ "async": "^2.6.2",
+ "debug": "^3.1.1",
+ "mkdirp": "^0.5.1"
},
"dependencies": {
"async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "lodash": "^4.17.14"
}
+ },
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
}
}
},
@@ -10028,171 +10193,6 @@
"postcss-value-parser": "3.x",
"svgo": "1.x",
"xmldoc": "1.x"
- },
- "dependencies": {
- "coa": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
- "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
- "dev": true,
- "requires": {
- "@types/q": "^1.5.1",
- "chalk": "^2.4.1",
- "q": "^1.1.2"
- }
- },
- "css-select": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz",
- "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==",
- "dev": true,
- "requires": {
- "boolbase": "^1.0.0",
- "css-what": "^2.1.2",
- "domutils": "^1.7.0",
- "nth-check": "^1.0.2"
- },
- "dependencies": {
- "css-what": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
- "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
- "dev": true
- },
- "domutils": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
- "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
- "dev": true,
- "requires": {
- "dom-serializer": "0",
- "domelementtype": "1"
- }
- },
- "nth-check": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
- "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
- "dev": true,
- "requires": {
- "boolbase": "~1.0.0"
- }
- }
- }
- },
- "csso": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz",
- "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==",
- "dev": true,
- "requires": {
- "css-tree": "1.0.0-alpha.29"
- },
- "dependencies": {
- "css-tree": {
- "version": "1.0.0-alpha.29",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
- "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==",
- "dev": true,
- "requires": {
- "mdn-data": "~1.1.0",
- "source-map": "^0.5.3"
- }
- }
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "svgo": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.2.tgz",
- "integrity": "sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "coa": "^2.0.2",
- "css-select": "^2.0.0",
- "css-select-base-adapter": "^0.1.1",
- "css-tree": "1.0.0-alpha.28",
- "css-url-regex": "^1.1.0",
- "csso": "^3.5.1",
- "js-yaml": "^3.13.1",
- "mkdirp": "~0.5.1",
- "object.values": "^1.1.0",
- "sax": "~1.2.4",
- "stable": "^0.1.8",
- "unquote": "~1.1.1",
- "util.promisify": "~1.0.0"
- },
- "dependencies": {
- "css-select-base-adapter": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
- "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
- "dev": true
- },
- "css-tree": {
- "version": "1.0.0-alpha.28",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz",
- "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==",
- "dev": true,
- "requires": {
- "mdn-data": "~1.1.0",
- "source-map": "^0.5.3"
- }
- },
- "css-url-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz",
- "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=",
- "dev": true
- },
- "object.values": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
- "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.12.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
- }
- },
- "stable": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
- "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
- "dev": true
- },
- "unquote": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
- "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
- "dev": true
- }
- }
- }
}
},
"postcss-syntax": {
@@ -11525,8 +11525,7 @@
},
"kind-of": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "resolved": "",
"dev": true
}
}
@@ -11772,6 +11771,12 @@
"safe-buffer": "^5.1.1"
}
},
+ "stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "dev": true
+ },
"state-toggle": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz",
@@ -11871,6 +11876,296 @@
}
}
},
+ "string.prototype.trimend": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
+ "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ },
+ "dependencies": {
+ "es-abstract": {
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
+ "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.1.5",
+ "is-regex": "^1.0.5",
+ "object-inspect": "^1.7.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.0",
+ "string.prototype.trimleft": "^2.1.1",
+ "string.prototype.trimright": "^2.1.1"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
+ "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
+ "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ }
+ }
+ },
+ "string.prototype.trimleft": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
+ "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5",
+ "string.prototype.trimstart": "^1.0.0"
+ },
+ "dependencies": {
+ "es-abstract": {
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
+ "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.1.5",
+ "is-regex": "^1.0.5",
+ "object-inspect": "^1.7.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.0",
+ "string.prototype.trimleft": "^2.1.1",
+ "string.prototype.trimright": "^2.1.1"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
+ "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
+ "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ }
+ }
+ },
+ "string.prototype.trimright": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
+ "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5",
+ "string.prototype.trimend": "^1.0.0"
+ },
+ "dependencies": {
+ "es-abstract": {
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
+ "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.1.5",
+ "is-regex": "^1.0.5",
+ "object-inspect": "^1.7.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.0",
+ "string.prototype.trimleft": "^2.1.1",
+ "string.prototype.trimright": "^2.1.1"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
+ "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
+ "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ }
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
+ "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ },
+ "dependencies": {
+ "es-abstract": {
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
+ "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.1.5",
+ "is-regex": "^1.0.5",
+ "object-inspect": "^1.7.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.0",
+ "string.prototype.trimleft": "^2.1.1",
+ "string.prototype.trimright": "^2.1.1"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
+ "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
+ "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ }
+ }
+ },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -12572,9 +12867,9 @@
"dev": true
},
"kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
},
"micromatch": {
@@ -12645,6 +12940,66 @@
}
}
},
+ "svgo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
+ "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "coa": "^2.0.2",
+ "css-select": "^2.0.0",
+ "css-select-base-adapter": "^0.1.1",
+ "css-tree": "1.0.0-alpha.37",
+ "csso": "^4.0.2",
+ "js-yaml": "^3.13.1",
+ "mkdirp": "~0.5.1",
+ "object.values": "^1.1.0",
+ "sax": "~1.2.4",
+ "stable": "^0.1.8",
+ "unquote": "~1.1.1",
+ "util.promisify": "~1.0.0"
+ },
+ "dependencies": {
+ "css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "css-what": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz",
+ "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==",
+ "dev": true
+ },
+ "domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ }
+ }
+ },
"symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
@@ -13041,6 +13396,12 @@
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
"dev": true
},
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+ "dev": true
+ },
"unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
diff --git a/client/src/components/Settings/Dns/index.js b/client/src/components/Settings/Dns/index.js
index 85a4bcf5..8eb6e5a4 100644
--- a/client/src/components/Settings/Dns/index.js
+++ b/client/src/components/Settings/Dns/index.js
@@ -33,16 +33,16 @@ class Dns extends Component {
{isDataLoading ?
:
-
+
}
From 80c3112ab3cf28c75fc7ededf8b917915c32d538 Mon Sep 17 00:00:00 2001
From: Simon Zolin
Date: Fri, 24 Apr 2020 16:54:37 +0300
Subject: [PATCH 29/37] * client: router guide: add more info
---
client/src/__locales/en.json | 1 +
client/src/components/ui/Guide.js | 3 +++
2 files changed, 4 insertions(+)
diff --git a/client/src/__locales/en.json b/client/src/__locales/en.json
index 71d9daaf..ffbadfbd 100644
--- a/client/src/__locales/en.json
+++ b/client/src/__locales/en.json
@@ -257,6 +257,7 @@
"install_devices_router_list_1": "Open the preferences for your router. Usually, you can access it from your browser via a URL (like http://192.168.0.1/ or http://192.168.1.1/). You may be asked to enter the password. If you don't remember it, you can often reset the password by pressing a button on the router itself. Some routers require a specific application, which in that case should be already installed on your computer/phone.",
"install_devices_router_list_2": "Find the DHCP/DNS settings. Look for the DNS letters next to a field which allows two or three sets of numbers, each broken into four groups of one to three digits.",
"install_devices_router_list_3": "Enter your AdGuard Home server addresses there.",
+ "install_devices_router_list_4": "You can't set a custom DNS server on some types of routers. In this case it may help if you set up AdGuard Home as a DHCP server. Otherwise, you should search for the manual on how to customize DNS servers for your particular router model.",
"install_devices_windows_list_1": "Open Control Panel through Start menu or Windows search.",
"install_devices_windows_list_2": "Go to Network and Internet category and then to Network and Sharing Center.",
"install_devices_windows_list_3": "On the left side of the screen find Change adapter settings and click on it.",
diff --git a/client/src/components/ui/Guide.js b/client/src/components/ui/Guide.js
index bc18366a..cbb0035b 100644
--- a/client/src/components/ui/Guide.js
+++ b/client/src/components/ui/Guide.js
@@ -34,6 +34,9 @@ const Guide = (props) => {
install_devices_router_list_3
+
+ install_devices_router_list_4
+