Re init git

This commit is contained in:
ookangzheng
2019-08-04 00:25:17 +08:00
commit a9fadc5d00
67 changed files with 1580436 additions and 0 deletions

91
website/.gitignore vendored Executable file
View File

@@ -0,0 +1,91 @@
# Created by https://www.gitignore.io/api/node
# Edit at https://www.gitignore.io/?templates=node
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# End of https://www.gitignore.io/api/node

88
website/api/index.js Executable file
View File

@@ -0,0 +1,88 @@
const port = process.env.PORT || 3000
const express = require('express')
const AbortController = require('abort-controller')
const { Resolver } = require('dns').promises
const resolver = new Resolver()
var app = express()
app.use(express.json())
// const cors = require("cors");
// app.use(
// cors({
// allowedHeaders: ["sessionId", "Content-Type"],
// exposedHeaders: ["sessionId"],
// origin: "*",
// methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
// preflightContinue: false
// })
// );
app.get('/api', function (req, res) {
res.json({
hello: 'world'
})
})
resolver.setServers(['159.69.198.101', '108.61.201.119'])
app.get('/api/:domainName', function (req, res) {
let controller = new AbortController()
let signal = controller.signal
let timeout = 3000
function myTimer () {
timeout = setTimeout(() => {
controller.abort()
res.json({
status: 'timeout'
})
}, timeout)
}
myTimer()
resolver
.resolve(`${req.params.domainName}`)
.then(addresses => {
// console.log(addresses)
clearTimeout(timeout)
let ip = addresses[0].toString()
if ((ip == '0.0.0.0' && ip != null) || undefined) {
res.json({
status: 'failed'
})
} else {
res.json({
status: 'ok'
})
}
})
.catch(error => {
if (
error.code === 'NOTFOUND' ||
error.code === 'SERVFAIL' ||
error.code === 'REFUSED'
) {
clearTimeout(timeout)
res.json({
status: 'failed'
})
} else if (error.code === 'TIMEOUT') {
clearTimeout(timeout)
res.json({
status: 'timeout'
})
} else if (
error.code === 'ENOTFOUND' ||
error.code === 'NXDOMAIN' ||
error.code === 'NOTIMP'
) {
clearTimeout(timeout)
res.json({
status: 'failed'
})
}
})
})
app.listen(port, err => {
if (err) throw err
console.log(`Server ready on port ${port}`)
})

385
website/api/package-lock.json generated Executable file
View File

@@ -0,0 +1,385 @@
{
"name": "blahdns-api",
"version": "0.0.6",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"abort-controller": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-2.0.3.tgz",
"integrity": "sha512-EPSq5wr2aFyAZ1PejJB32IX9Qd4Nwus+adnp7STYFM5/23nLPBazqZ1oor6ZqbH+4otaaGXTlC8RN5hq3C8w9Q==",
"requires": {
"event-target-shim": "^5.0.0"
}
},
"accepts": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
"requires": {
"mime-types": "~2.1.18",
"negotiator": "0.6.1"
}
},
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
"body-parser": {
"version": "1.18.3",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
"integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
"requires": {
"bytes": "3.0.0",
"content-type": "~1.0.4",
"debug": "2.6.9",
"depd": "~1.1.2",
"http-errors": "~1.6.3",
"iconv-lite": "0.4.23",
"on-finished": "~2.3.0",
"qs": "6.5.2",
"raw-body": "2.3.3",
"type-is": "~1.6.16"
}
},
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
},
"content-disposition": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
"integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
},
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
"cookie": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
},
"cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"cors": {
"version": "2.8.5",
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
"requires": {
"object-assign": "^4",
"vary": "^1"
}
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
"destroy": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
"event-target-shim": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
},
"express": {
"version": "4.16.4",
"resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
"integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
"requires": {
"accepts": "~1.3.5",
"array-flatten": "1.1.1",
"body-parser": "1.18.3",
"content-disposition": "0.5.2",
"content-type": "~1.0.4",
"cookie": "0.3.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "1.1.1",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "~2.3.0",
"parseurl": "~1.3.2",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.4",
"qs": "6.5.2",
"range-parser": "~1.2.0",
"safe-buffer": "5.1.2",
"send": "0.16.2",
"serve-static": "1.13.2",
"setprototypeof": "1.1.0",
"statuses": "~1.4.0",
"type-is": "~1.6.16",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
}
},
"finalhandler": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
"requires": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "~2.3.0",
"parseurl": "~1.3.2",
"statuses": "~1.4.0",
"unpipe": "~1.0.0"
}
},
"forwarded": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
},
"fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"http-errors": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.0",
"statuses": ">= 1.4.0 < 2"
}
},
"iconv-lite": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ipaddr.js": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
"integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
},
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
},
"mime-db": {
"version": "1.38.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
"integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg=="
},
"mime-types": {
"version": "2.1.22",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
"integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
"requires": {
"mime-db": "~1.38.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"negotiator": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"requires": {
"ee-first": "1.1.1"
}
},
"parseurl": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
"integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
},
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"proxy-addr": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.8.0"
}
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
},
"range-parser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
},
"raw-body": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
"integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
"requires": {
"bytes": "3.0.0",
"http-errors": "1.6.3",
"iconv-lite": "0.4.23",
"unpipe": "1.0.0"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"send": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
"requires": {
"debug": "2.6.9",
"depd": "~1.1.2",
"destroy": "~1.0.4",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
"http-errors": "~1.6.2",
"mime": "1.4.1",
"ms": "2.0.0",
"on-finished": "~2.3.0",
"range-parser": "~1.2.0",
"statuses": "~1.4.0"
}
},
"serve-static": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
"requires": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.2",
"send": "0.16.2"
}
},
"setprototypeof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
},
"statuses": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
},
"type-is": {
"version": "1.6.16",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
"integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
"requires": {
"media-typer": "0.3.0",
"mime-types": "~2.1.18"
}
},
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
},
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
}
}
}

29
website/api/package.json Executable file
View File

@@ -0,0 +1,29 @@
{
"name": "blahdns-api",
"version": "0.0.6",
"description": "blahdns api check domain status",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ookanzheng/blahdns.git"
},
"keywords": [
"blahdns"
],
"author": "ookangzheng",
"license": "MIT",
"bugs": {
"url": "https://github.com/ookanzheng/blahdns/issues"
},
"homepage": "https://github.com/ookanzheng/blahdns#readme",
"dependencies": {
"abort-controller": "^2.0.3",
"cors": "^2.8.5",
"express": "^4.16.4"
}
}

123
website/black.css Executable file
View File

@@ -0,0 +1,123 @@
.bmc-button img {
width: 27px !important;
margin-bottom: 1px !important;
box-shadow: none !important;
border: none !important;
vertical-align: middle !important;
}
.bmc-button {
line-height: 36px !important;
height:37px !important;
text-decoration: none !important;
display:inline-flex !important;
color:#ffffff !important;
background-color:#FF813F !important;
border-radius: 3px !important;
border: 1px solid transparent !important;
padding: 0px 9px !important;
font-size: 17px !important;
letter-spacing:-0.08px !important;
;
box-shadow: 0px 1px 2px rgba(190, 190, 190, 0.5) !important;
-webkit-box-shadow: 0px 1px 2px 2px rgba(190, 190, 190, 0.5) !important;
margin: 0 auto !important;
font-family:'Lato', sans-serif !important;
-webkit-box-sizing: border-box !important;
box-sizing: border-box !important;
-o-transition: 0.3s all linear !important;
-webkit-transition: 0.3s all linear !important;
-moz-transition: 0.3s all linear !important;
-ms-transition: 0.3s all linear !important;
transition: 0.3s all linear !important;
}
.bmc-button:hover, .bmc-button:active, .bmc-button:focus {
-webkit-box-shadow: 0px 1px 2px 2px rgba(190, 190, 190, 0.5) !important;
text-decoration: none !important;
box-shadow: 0px 1px 2px 2px rgba(190, 190, 190, 0.5) !important;
opacity: 0.85 !important;
color:#ffffff !important;
}
.myPadding {
padding-top:1%;
padding-left:10%;
padding-right:10%;
max-width: 1920px;
}
textarea {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
}
.w3-theme-l5 {
color:#000 !important;
background-color:#f0f0f0 !important
}
.w3-theme-l4 {
color:#000 !important;
background-color:#cccccc !important
}
.w3-theme-l3 {
color:#fff !important;
background-color:#999999 !important
}
.w3-theme-l2 {
color:#fff !important;
background-color:#666666 !important
}
.w3-theme-l1 {
color:#fff !important;
background-color:#333333 !important
}
.w3-theme-d1 {
color:#fff !important;
background-color:#000000 !important
}
.w3-theme-d2 {
color:#fff !important;
background-color:#000000 !important
}
.w3-theme-d3 {
color:#fff !important;
background-color:#000000 !important
}
.w3-theme-d4 {
color:#fff !important;
background-color:#000000 !important
}
.w3-theme-d5 {
color:#fff !important;
background-color:#000000 !important
}
.w3-theme-light {
color:#000 !important;
background-color:#f0f0f0 !important
}
.w3-theme-dark {
color:#fff !important;
background-color:#000000 !important
}
.w3-theme-action {
color:#fff !important;
background-color:#000000 !important
}
.w3-theme {
color:#fff !important;
background-color:#000000 !important
}
.w3-text-theme {
color:#000000 !important
}
.w3-border-theme {
border-color:#000000 !important
}
.w3-hover-theme:hover {
color:#fff !important;
background-color:#000000 !important
}
.w3-hover-text-theme:hover {
color:#000000 !important
}
.w3-hover-border-theme:hover {
border-color:#000000 !important
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 MiB

BIN
website/favicon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
website/img-ad.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
website/img-free.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
website/img-privacy.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

490
website/index.html Executable file
View File

@@ -0,0 +1,490 @@
<!DOCTYPE html>
<html>
<title>Blahdns -- Dns service support DoH, DoT, DNSCrypt </title>
<meta charset="UTF-8">
<meta name="keywords" content="small hobby adblocks DNS resolver with dot doh dnscrpyt">
<meta name="description" content="DNS, Adblock, dnscrypt, doh, dot, dns-over-https, dns-over-tls, no-logs, dnssec">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="ookangzheng">
<!--<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">-->
<!--<meta http-equiv="Content-Security-Policy" content="default-src 'self' *.blahdns.com">-->
<link rel="stylesheet" href="https://cdn.blahdns.com/w3.css">
<link rel="stylesheet" href="https://cdn.blahdns.com/black.css">
<body>
<!-- Header -->
<header class="w3-container w3-sand w3-padding" style="height:90%" id="myHeader">
<div class=" w3-center">
<img src="https://cdn.blahdns.com/logo.png" style="max-width: 90%; margin-top: 15%; margin-bottom:10%;" />
<div class="w3-row w3-black w3-center w3-padding">
<h4 class="w3-text-white w3-center ">
A small hobby ads block dns project with doh, dot, dnscrypt support.</h4>
</div>
<p id="status" class="w3-margin-top"> You are not using Blahdns !</p>
</div>
</header>
<div class="w3-row myPadding">
<div class="w3-row-padding w3-center">
<!--Announcements area-->
<div class="w3-indigo w3-center">
<h3>Announcements</h3>
</div>
No logs | No EDNS Client-Subnet | OpenNIC TLDs | DNSSEC ready | Filtered some ads, trackers, malware
<ul class="w3-left-align">
<li class="w3-text-red">DNS-over-TLS, DNS-over-HTTPS on PORT 443 will required strict SNI, without SNI will drop by default. </li>
<li class="w3-text-red">If you are developer, this DNS will block analytics, crashlytics, admob, baidu stats, Pls be aware. </li>
<li class="w3-text-purple"> Start from Jan 1 2019, our serivce only support DoT, DoH, DNScryptv2 </li>
<li><a href="https://stats.blahdns.com" target="_blank"><strong>Server status</strong></a></li>
<li>If you encounter problem, please submit it on <a href="https://github.com/ookangzheng/blahdns" target="_blank">Github</a></li>
</ul>
</div>
<div class="w3-container">
<div class="w3-center">
<h2 style="text-shadow:1px 1px 0 #444">Our servers</h2>
</div>
</div>
<div class="w3-row-padding">
<!-- Switzerland server -->
<div class="w3-third">
<div class="w3-card white">
<div class="w3-container w3-indigo">
<h3>Switzerland 🇨🇭</h3>
</div>
<ul class="w3-ul w3-border-top">
<li>
<h3>DNS-over-HTTPS</h3>
<textarea readonly rows="1" cols="50" maxlength="50">https://doh-ch.blahdns.com/dns-query</textarea>
<p>IPv6-stamp:</p>
<textarea readonly rows="3" cols="50" maxlength="50">sdns://AgMAAAAAAAAAIFsyYTBhOmU1YzA6MjoyOjA6YzhmZjpmZTY4OmJmNDhdABJkb2gtY2guYmxhaGRucy5jb20KL2Rucy1xdWVyeQ</textarea>
<h3>DNS-over-TLS</h3>
<p>IP: <br>
<textarea readonly rows="2" cols="20" maxlength="50">2a0a:e5c0:2:2:0:c8ff:fe68:bf48</textarea>
<p>tls_auth_name: <br>
<textarea readonly rows="1" cols="50" maxlength="50">dot-ch.blahdns.com</textarea>
port: 853
</p>
<h3>DNSCrypt v2</h3>
port: 8443
<p>IPv6 - DNSStamp: <br>
<textarea readonly rows="4" cols="50" maxlength="50">sdns://AQMAAAAAAAAAJVsyYTBhOmU1YzA6MjoyOjA6YzhmZjpmZTY4OmJmNDhdOjg0NDMgyJjbSS4IgTY_2KH3NVGG0DNIgBPzLEqf8r00nAbcUxQbMi5kbnNjcnlwdC1jZXJ0LmJsYWhkbnMuY29t</textarea>
</p>
</li>
</ul>
</div>
</div>
<!-- Japan Server-->
<div class="w3-third">
<div class="w3-card white">
<div class="w3-container w3-indigo">
<h3>Japan🇯🇵</h3>
</div>
<ul class="w3-ul w3-border-top">
<li>
<h3>DNS-over-HTTPS</h3>
<textarea readonly rows="1" cols="50" maxlength="50">https://doh-jp.blahdns.com/dns-query
</textarea>
<p>IPv4-stamp:</p>
<textarea readonly rows="3" cols="50" maxlength="50">sdns://AgMAAAAAAAAADjEwOC42MS4yMDEuMTE5ABJkb2gtanAuYmxhaGRucy5jb20KL2Rucy1xdWVyeQ
</textarea>
<p>IPv6-stamp:</p>
<textarea readonly rows="3" cols="50" maxlength="50">sdns://AgMAAAAAAAAAKVsyMDAxOjE5ZjA6NzAwMToxZGVkOjU0MDA6MDFmZjpmZTkwOjk0NWJdABJkb2gtanAuYmxhaGRucy5jb20KL2Rucy1xdWVyeQ
</textarea>
<h3>DNS-over-TLS</h3>
<p>IP: <br>
<textarea readonly rows="2" cols="20" maxlength="50">108.61.201.119
2001:19f0:7001:1ded:5400:01ff:fe90:945b</textarea>
<p>tls_auth_name: <br>
<textarea readonly rows="1" cols="50" maxlength="50">dot-jp.blahdns.com</textarea>
port: 853, 443 (Strict SNI, without SNI will drop)
</p>
<h3>DNSCrypt v2</h3>
port: 8443
<p>IPv4 - DNSStamp: <br>
<textarea readonly rows="3" cols="50" maxlength="50">sdns://AQMAAAAAAAAAEzEwOC42MS4yMDEuMTE5Ojg0NDMgyJjbSS4IgTY_2KH3NVGG0DNIgBPzLEqf8r00nAbcUxQbMi5kbnNjcnlwdC1jZXJ0LmJsYWhkbnMuY29t</textarea>
</p>
<p>IPv6 - DNSStamp: <br>
<textarea readonly rows="4" cols="50" maxlength="50">sdns://AQMAAAAAAAAALlsyMDAxOjE5ZjA6NzAwMToxZGVkOjU0MDA6MDFmZjpmZTkwOjk0NWJdOjg0NDMgyJjbSS4IgTY_2KH3NVGG0DNIgBPzLEqf8r00nAbcUxQbMi5kbnNjcnlwdC1jZXJ0LmJsYWhkbnMuY29t</textarea>
</p>
</li>
</ul>
</div>
</div>
<!-- Germany Server -->
<div class="w3-third">
<div class="w3-card white">
<div class="w3-container w3-theme">
<h3>Germany🇩🇪</h3>
</div>
<ul class="w3-ul w3-border-top">
<li>
<h3>DNS-over-HTTPS</h3>
<textarea readonly rows="1" cols="50" maxlength="50">https://doh-de.blahdns.com/dns-query
</textarea>
<p>IPv4-stamp:</p>
<textarea readonly rows="3" cols="50" maxlength="50">sdns://AgMAAAAAAAAADjE1OS42OS4xOTguMTAxABJkb2gtZGUuYmxhaGRucy5jb20KL2Rucy1xdWVyeQ
</textarea>
<p>IPv6-stamp:</p>
<textarea readonly rows="3" cols="50" maxlength="50">sdns://AgMAAAAAAAAAF1syYTAxOjRmODoxYzFjOjZiNGI6OjFdABJkb2gtZGUuYmxhaGRucy5jb20KL2Rucy1xdWVyeQ
</textarea>
<h3>DNS-over-TLS</h3>
<p>IP: <br>
<textarea readonly rows="2" cols="20" maxlength="50">159.69.198.101
2a01:4f8:1c1c:6b4b::1</textarea>
<p>
tls_auth_name:<br>
<textarea readonly rows="1" cols="50" maxlength="50">dot-de.blahdns.com</textarea>
port: 853, 443 (Strict SNI, without SNI will drop)
</p>
<h3>DNSCrypt v2</h3>
port: 8443
<p>IPv4 - DNSStamp: <br>
<textarea readonly rows="3" cols="50" maxlength="50">sdns://AQMAAAAAAAAAEzE1OS42OS4xOTguMTAxOjg0NDMgyJjbSS4IgTY_2KH3NVGG0DNIgBPzLEqf8r00nAbcUxQbMi5kbnNjcnlwdC1jZXJ0LmJsYWhkbnMuY29t</textarea></p>
<p>IPv6 - DNSStamp: <br>
<textarea readonly rows="4" cols="50" maxlength="50">sdns://AQMAAAAAAAAAHFsyYTAxOjRmODoxYzFjOjZiNGI6OjFdOjg0NDMgyJjbSS4IgTY_2KH3NVGG0DNIgBPzLEqf8r00nAbcUxQbMi5kbnNjcnlwdC1jZXJ0LmJsYWhkbnMuY29t</textarea>
</p>
</li>
</ul>
</div>
</div>
</div>
<div class="w3-container w3-center">
<h2 class="w3-center" style="text-shadow:1px 1px 0 #444">News</h2>
<button onclick="myAccFunc('Demo000')" class="w3-padding-16 w3-button w3-block w3-left-align w3-purple">Check
Domain Status</button><a href="#check"></a>
<div id="Demo000" class="w3-hide">
<div class="w3-left-align w3-margin-top">
<label class="w3-text-blue">
<b>Domain Name</b>
</label>
<div class="w3-row">
<div class="w3-col m5">
<input class="w3-input w3-border" placeholder="...domainName" type="text" id="domainName">
</div>
<div class="w3-col m4 w3-margin-left">
<button class="w3-btn w3-blue" id="btnCheck">Check</button>
</div>
</div>
<div class="w3-row">
<p id="returnStatus">
</p>
</div>
</div>
</div>
<button onclick="myAccFunc('Demo00')" class="w3-padding-16 w3-button w3-block w3-left-align w3-sand">DNS client
</button>
<div id="Demo00" class="w3-hide">
<div class="w3-left-align">
<div class="w3-row">
<div class="w3-col m4 l3">
<h3>DNSCrypt v2</h3>
<ul>
<li><a href="https://simplednscrypt.org" target="_blank">Simple DNSCrypt (Windows)</a></li>
<li><a href="https://github.com/jedisct1/dnscrypt-proxy" target="_blank">dnscrypt-proxy
(macOS, Linux)</a></li>
<li><a href="https://itunes.apple.com/app/dnscloak-secure-dns-client/id1452162351" target="_blank">DNSCloak
(iOS)</a></li>
</ul>
</div>
<div class="w3-col m4 l3">
<h3>DNS-over-TLS</h3>
<ul>
<li><a href="https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Daemon+-+Stubby" target="_blank">Stubby (Linux, Windows, Mac)</a></li>
<li><a href="https://play.google.com/store/apps/details?id=com.frostnerd.smokescreen" target="_blank">Nebulo (DoT, DoH) -- Android</a></li>
<li><a href="https://www.nlnetlabs.nl/projects/unbound/about/" target="_blank">Unbound</a></li>
</ul>
</div>
<div class="w3-col m4 l3">
<h3>DNS-over-HTTPS</h3>
<ul>
<li><a href="https://play.google.com/store/apps/details?id=com.frostnerd.smokescreen" target="_blank">Nebulo (DoT, DoH) -- Android</a></li>
<li><a href="https://simplednscrypt.org/" target="_blank">Simple DNSCrypt (Windows)</a></li>
<li><a href="https://github.com/jedisct1/dnscrypt-proxy" target="_blank">dnscrypt-proxy
(macOS, Linux)</a></li>
<li><a href="https://itunes.apple.com/app/dnscloak-secure-dns-client/id1452162351" target="_blank">DNSCloak
(iOS)</a></li>
<li><a href="https://github.com/Jigsaw-Code/Intra" target="_blank">Intra (Android)</a></li>
<li><a href="https://www.mozilla.org/en-US/firefox/nightly/all/" target="_blank">Mozilla
Firefox (v66 above)</a></li>
</ul>
</div>
</div>
</div>
</div>
<button onclick="myAccFunc('Demo0')" class="w3-padding-16 w3-button w3-block w3-left-align w3-blue">More tools
</button>
<div id="Demo0" class="w3-hide">
<div class="w3-container w3-white">
<p class="w3-left-align">
DNSSEC validate <br>
1. DNSSEC validation: <a href="https://dnssec.vs.uni-due.de/" target="_blank"> Go</a> <br>
2. Internet.nl: <a href="https://internet.nl/" target="_blank">Go</a> <br>
3. DNSSEC resolver algorithm test: <a href="https://rootcanary.org/test.html" target="_blank">Go</a> <br>
4. Cloudflare tools: <a href="https://www.cloudflare.com/cdn-cgi/tracepoof" target="_blank">Go</a> | <a href="https://cloudflare-dns.com/help/">Go</a> <br>
5. Browserleaks test: <a href="https://browserleaks.com/ip">Go</a> <br>
6. Check my DNS: <a href="//cmdns.dev.dns-oarc.net/" target="_blank">Go</a><br>
7. DNS randomness: <a href="//www.dns-oarc.net/oarc/services/dnsentropy" target="_blank">Go</a><br>
8. DNS Spoofability test: <a href="https://www.grc.com/dns/dns.htm" target="_blank">Go</a><br>
9. DNSTrace: <a href="https://dnsdumpster.com/" target="_blank">Go</a><br>
10. Threats search: <a href="https://www.threatcrowd.org/">Go</a> <br>
11. Whoer.net <a href="https://whoer.net/" >Go</a> <br>
12. EDNS test <a href="https://ednscomp.isc.org/ednscomp/">Go</a>
</p>
</div>
</div>
<button onclick="myAccFunc('Demo1')" class="w3-padding-16 w3-button w3-block w3-left-align w3-red">What is Dns
over https (DoH)</button>
<div id="Demo1" class="w3-hide">
<div class="w3-container w3-white">
<p class="w3-left-align"> DNS over HTTPs (DoH)<br>
DNS over HTTPS is a new protocol designed to encrypt and secure DNS traffic over HTTPs.
<br>
It prevents DNS hijacking and ISPs from sniffing your traffic.
<br>
You can use will Infra on Android Phone, Mozilla firefox nightly, Chrome coming soon.
<br>
DNSCrypt v2 client does support DoH, see dnscrypt <a href="https://github.com/ookangzheng/blahdns/blob/master/client-conf/dnscrypt/dnscrypt-proxy.toml"><strong>configuration
example</strong></a> on Windows, Mac, Ios (DNSCloak)
</p>
</div>
</div>
<button onclick="myAccFunc('Demo2')" class="w3-padding-16 w3-yellow w3-button w3-block w3-left-align">What is
Dns-over-TLS</button>
<div id="Demo2" class="w3-hide">
<div class="w3-container w3-white">
<p class="w3-left-align">
Encrypted DNS - DNS over TLS <br>
DNS over TLS support is available on all our services through port 853 (standard port, some service may
support 443). <br>
DNS over TLS encrypts and authenticates all your DNS traffic to protect your privacy and prevent DNS
hijacking and sniffing.<br>
Client software: <a href="https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Daemon+-+Stubby">Stubby</a> |
<a href="https://www.nlnetlabs.nl/projects/unbound/about/"> Unbound </a>
<br>
<strong>How to get SPKI </strong>
<br>
Be sure you already install package <i>apt install gnutls-bin</i> <br>
<code>
gnutls-cli --print-cert -p 853 108.61.201.119 | grep "pin-sha256" | head -1
</code>
<br>
OR
<code>
kdig -d @108.61.201.119 +tls-ca +tls-host=dot-jp.blahdns.com blahdns.com
</code>
<br>
OR
<br>
<code>
echo | openssl s_client -connect '108.61.201.119:853' 2>/dev/null | openssl x509 -pubkey -noout | openssl
pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
</code>
<br>
<b>TLS1.3 support check</b> <br>
<code>
openssl s_client -connect 108.61.201.119:853
</code>
<br>
<i>Will return message: </i>
<pre>
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
</pre>
For troubleshooting go <a href="https://getdnsapi.net/query/">HERE</a>
</p>
</div>
</div>
<button onclick="myAccFunc('Demo3')" class="w3-padding-16 w3-pale-red w3-button w3-block w3-left-align">What is
DNS</button>
<div id="Demo3" class="w3-hide">
<div class="w3-container">
<p class="w3-left-align">The Domain Name System (DNS) is the phonebook of the Internet. Humans access
information online through domain names, like nytimes.com or espn.com. Web browsers interact through
Internet Protocol (IP) addresses. DNS translates domain names to IP addresses so browsers can load Internet
resources.</p>
<p class="w3-left-align"> Each device connected to the Internet has a unique IP address which other machines
use to find the device. DNS servers eliminate the need for humans to memorize IP addresses such as
192.168.1.1 (in IPv4), or more complex newer alphanumeric IP addresses such as 2400:cb00:2048:1::c629:d7a2
(in IPv6).</p>
</div>
</div>
</div>
<div class="w3-container">
<h2 class="w3-center" style="text-shadow:1px 1px 0 #444">FAQ</h2>
<div class="w3-border">
<div class="w3-bar w3-theme">
<button class="w3-bar-item w3-button testbtn w3-padding-16" onclick="openCity(event,'TLS')">Common question</button>
<button class="w3-bar-item w3-button testbtn w3-padding-16" onclick="openCity(event,'News')">News</button>
<button class="w3-bar-item w3-button testbtn w3-padding-16" onclick="openCity(event,'troubleshooting')">Troubleshoot</button>
</div>
<div id="TLS" class="w3-container city w3-animate-opacity">
<ul>
<li>How to fix Chrome on Android phone leaking DNS, check <a href="https://github.com/ookangzheng/blahdns/blob/master/FAQ.md#prevent-dns-leaking-from-chrome-browser-on-android-phone">HERE</a></li>
<li>Supported TLS v1.3, 1.2</li>
<li>We drop ANY type.</li>
<li>Why you building this porject? I started this project around 2016. During that time, with my private
dns, I need an easy way to filter ads and tracker, so I rent a server and learn how to achive this.</li>
<li>Why you dont like huge traffic? I'm still a student. and I run this service with my pocket money and
spare time. Just as a hobby to learn somehting new. buying big server or Anti-DDOS service will cost lot.</li>
</ul>
</div>
<div id="News" class="w3-container city w3-animate-opacity">
<ul>
<li><a href="https://techbeasts.com/block-ads-samsung-galaxy-without-third-party-applications-no-root/" target="_blank">Block Ads on Samsung Galaxy without third-party applications [No root required]</a></li>
<li><a href="https://www.reddit.com/r/GalaxyS8/comments/agoxl0/here_is_how_to_block_ads_on_android_pie_without/" target="_blank">Here is how to block Ads on Android Pie without root on the S8. NO APPS NEEDED! New option in Pie.</a></li>
<li><a href="https://www.reddit.com/r/GalaxyS9/comments/a94im7/blocking_ads_without_additional_software_in/" target="_blank">Blocking ads without additional software in Android 9.0 Pie (finally :D)</a></li>
<li><a href="https://www.androidsage.com/2018/12/25/how-to-block-ads-using-private-dns-dns-over-tls-feature/" target="_blank">How to Block Ads using Private DNS (DNS over TLS) Feature on Android 9.0 Pie or later without root https://www.androidsage.com/2018/12/25/how-to-block-ads-using-private-dns-dns-over-tls-feature/</a></li>
</ul>
</div>
<!-- troubleshooting -->
<div id="troubleshooting" class="w3-container city w3-animate-opacity">
<p>
curl -H 'content-type: application/dns-message' -vL -v 'https://doh-jp.blahdns.com/dns-query?dns=AAABAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB' | hexdump -C
</p>
<p>
kdig google.com @2001:19f0:7001:1ded:5400:1ff:fe90:945b +tls -p 443
</p>
<p>
kdig google.com @108.61.201.119
</p>
<p>
https://gist.github.com/meanevo/e70ca58e361fb4d1a9d262a8f12b173a (HAProxy)
https://stuff-things.net/2016/11/30/haproxy-sni/
https://pre-prod.chown.me/blog/running-dot-on-openbsd.html
https://www.haproxy.com/blog/introduction-to-haproxy-acls/
</p>
</div>
</div>
</div>
</div>
<!-- End padding -->
<!-- Footer -->
<footer class="w3-container w3-theme-dark w3-padding-16 w3-margin-top">
<div class="myPadding">
<p>
<h3>Disclamier</h3>
<p> Use at your own risk. Under no circumstances will the operator be held responsible or liable in any way for
any claims, damages, losses, expenses, costs or liabilities whatsoever (including, without limitation, any
direct or indirect damages for loss of profits, business interruption or loss of information) resulting or
arising directly or indirectly from accessing or otherwise using this service (Blahdns server).<br> The
operator does not guarantee in any way the access, availability and continuity of the functioning of this
service. By using this website and service you consent to the disclaimer and agree to its terms and
conditions. <br>
By using <a href="https://www.cloudflare.com/">Cloudflare</a> this website stores a cookie, created and
evaluated by Cloudflare. <br> This cookie is strictly necessary for Cloudflare's security features and cannot
be turned off. <a href="https://support.cloudflare.com/hc/en-us/articles/200170156-What-does-the-Cloudflare-cfduid-cookie-do-">More
information.</a>
</p>
<p>Copyright 2016 - 2019 blahdns.com </p>
<p>
<i class="fa fa-github" aria-hidden="true"></i> <a href="https://github.com/ookangzheng/blahdns">Github</a>
|
<a href='https://ko-fi.com/P5P4GPQ8' target='_blank'>
<img height='36' style='border:0px;height:30px;' src='https://cdn.blahdns.com/kofi4.png'
border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
|
<script src="https://liberapay.com/ookangzheng/widgets/button.js"></script>
<noscript><a href="https://liberapay.com/ookangzheng/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a></noscript>
|
<!--<a class="bmc-button" target="_blank" href="https://www.buymeacoffee.com/elk6NqZhi">-->
<!-- <img src="https://www.buymeacoffee.com/assets/img/BMC-btn-logo.svg">-->
<!-- <span style="margin-left:5px">Buy me a coffee</span></a>-->
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=F2H8HS44QAV8N&source=url"><img style="height:40px" src="https://camo.githubusercontent.com/f896f7d176663a1559376bb56aac4bdbbbe85ed1/68747470733a2f2f7777772e70617970616c6f626a656374732e636f6d2f656e5f55532f692f62746e2f62746e5f646f6e61746543435f4c472e676966" alt="Donate with PayPal button" /></a>
|
🧘‍♂ <a href="https://qr.allpay.com.tw/ZoYHr">贊助</a>
</p>
<div style="position:relative;bottom:55px;" class="w3-tooltip w3-right">
<span class="w3-text w3-theme-light w3-padding">Go To Top</span> 
<a class="w3-text-white" href="#myHeader"><span class="w3-xlarge">
<i class="fa fa-chevron-circle-up"></i></span></a>
</div>
</div>
</footer>
<script src="https://cdn.blahdns.com/script.js"></script>
</body>
</html>

681
website/index.origin.html Executable file
View File

@@ -0,0 +1,681 @@
<!DOCTYPE html>
<html>
<title>Blahdns</title>
<meta charset="UTF-8">
<meta name="keywords" content="Ads block with DNS service for free">
<meta name="description" content="DNS, Adsblock, Content Farm, DNS server, hosts, malware, porn, drug, phishing">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="w3.css">
<link rel="stylesheet" href="black.css">
<!--<link rel="stylesheet" href="main.css">-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<body>
<!-- Side Navigation -->
<!--<nav class="w3-sidebar w3-bar-block w3-card w3-animate-left w3-center" style="display:none" id="mySidebar">-->
<!-- <h1 class="w3-xxxlarge w3-text-theme">Side Navigation</h1>-->
<!-- <button class="w3-bar-item w3-button" onclick="w3_close()">Close <i class="fa fa-remove"></i></button>-->
<!-- <a href="#" class="w3-bar-item w3-button">Link 1</a>-->
<!-- <a href="#" class="w3-bar-item w3-button">Link 2</a>-->
<!-- <a href="#" class="w3-bar-item w3-button">Link 3</a>-->
<!-- <a href="#" class="w3-bar-item w3-button">Link 4</a>-->
<!--</nav>-->
<!-- Header -->
<header class="w3-container w3-sand w3-padding" style="height:100vh" id="myHeader">
<!--<i onclick="w3_open()" class="fa fa-bars w3-xlarge w3-button w3-theme"></i> -->
<div class=" w3-center">
<img src="logo.png" style="max-width: 70vw; margin-top: 15%; margin-bottom: 8%" />
</div>
<div class="w3-row w3-black w3-center w3-padding">
<h4 class="w3-text-white w3-center">Youre two minutes away from browsing a faster, more private internet.</h4>
</div>
<div class=" w3-row w3-pink w3-center w3-padding">
<h1 class="w3-opacity w3-animate-bottom w3-center">Browse the web without surprises</h1>
</div>
<!--<div class="w3-padding-32">-->
<!-- <button class="w3-btn w3-xlarge w3-dark-grey w3-hover-light-grey" onclick="document.getElementById('id01').style.display='block'" style="font-weight:900;">LEARN W3.CSS</button>-->
<!--</div>-->
</header>
<!-- Modal -->
<!--<div id="id01" class="w3-modal">-->
<!-- <div class="w3-modal-content w3-card-4 w3-animate-top">-->
<!-- <header class="w3-container w3-theme-l1"> -->
<!-- <span onclick="document.getElementById('id01').style.display='none'"-->
<!-- class="w3-button w3-display-topright">×</span>-->
<!-- <h4>Oh snap! We just showed you a modal..</h4>-->
<!-- <h5>Because we can <i class="fa fa-smile-o"></i></h5>-->
<!-- </header>-->
<!-- <div class="w3-padding">-->
<!-- <p>Cool huh? Ok, enough teasing around..</p>-->
<!-- <p>Go to our <a class="w3-btn" href="/w3css/default.asp">W3.CSS Tutorial</a> to learn more!</p>-->
<!-- </div>-->
<!-- <footer class="w3-container w3-theme-l1">-->
<!-- <p>Modal footer</p>-->
<!-- </footer>-->
<!-- </div>-->
<!--</div>-->
<div class="w3-row-padding w3-center w3-margin-top">
<div class="w3-third">
<div class="w3-card w3-container" style="min-height:460px">
<h3>Block ads and tracker</h3><br>
<div>
<img src="img-ad.png" style="width: 200px" alt="">
</div>
<p>How to block ads on router level? <br> The answer is DNS ad blocking. </p>
<p>It can be set up literally on any platform — PC, Mac, Android, iOS, etc. </p>
<p> You can even set it up on your router to block ads on all devices connected to your home Wi-Fi network.</p>
</div>
</div>
<div class="w3-third">
<div class="w3-card w3-container" style="min-height:460px">
<h3>Keep your anonymity</h3><br>
<div>
<img src="img-privacy.png" style="width: 180px" alt="">
</div>
<p>Blahdns allows you to use a specific encrypted protocol — DNS over HTTPS/2. </p>
<p>DNS requests are encrypted, which protects you from possible request interception and subsequent eavesdropping and/or alteration.</p>
<p>Every DNS request comes with DNSSEC</p>
</div>
</div>
<div class="w3-third">
<div class="w3-card w3-container" style="min-height:460px">
<h3>No logs and open</h3><br>
<div>
<img src="img-free.png" style="width: 200px" alt="">
</div>
<p>We will never log your IP address</p>
<p>We also support OpenNIC top-level domains</p>
<p>No logs</p>
<p>Always free to use</p>
</div>
</div>
</div>
<div class="w3-container">
<!--<div class="w3-center">-->
<!-- <h2>Color Classes</h2>-->
<!--</div>-->
<!--<div class="w3-row">-->
<!-- <div class="w3-col w3-container m2 w3-red"><p>Red</p></div>-->
<!-- <div class="w3-col w3-container m2 w3-blue"><p>Blue</p></div>-->
<!-- <div class="w3-col w3-container m2 w3-blue-grey"><p>Blue Grey</p></div>-->
<!-- <div class="w3-col w3-container m2 w3-teal"><p>Teal</p></div>-->
<!-- <div class="w3-col w3-container m2 w3-yellow"><p>Yellow</p></div>-->
<!-- <div class="w3-col w3-container m2 w3-orange"><p>Orange</p></div>-->
<!--</div>-->
<!--<hr>-->
<!--<div class="w3-center">-->
<!-- <h2>Built-In Responsiveness</h2>-->
<!-- <p class="w3-large">Resize the page to see the effect!</p>-->
<!--</div>-->
<!--<br>-->
<!--<div class="w3-row w3-border">-->
<!-- <div class="w3-half w3-container w3-blue w3-border">-->
<!-- <h5>w3-half</h5> -->
<!-- <p>The w3-half class uses half (50%) of the screen window.</p>-->
<!-- <p>On small screens (max 600 pixels) it automatically resizes to full screen width.</p>-->
<!-- </div>-->
<!-- <div class="w3-half w3-container">-->
<!-- <h5>w3-half</h5> -->
<!-- </div>-->
<!--</div>-->
<!--<br>-->
<!--<div class="w3-row w3-border">-->
<!-- <div class="w3-third w3-container w3-green">-->
<!-- <h5>w3-third</h5> -->
<!-- <p>The w3-third class uses one third (33.33%) of the screen widow.</p>-->
<!-- <p>On small screens (max 600 pixels) it automatically resizes to full screen width.</p>-->
<!-- </div>-->
<!-- <div class="w3-third w3-container">-->
<!-- <h5>w3-third</h5> -->
<!-- </div>-->
<!-- <div class="w3-third w3-container">-->
<!-- <h5>w3-third</h5> -->
<!-- </div>-->
<!--</div>-->
<!--<br>-->
<!--<div class="w3-row w3-border">-->
<!-- <div class="w3-quarter w3-container w3-red">-->
<!-- <h5>w3-quarter</h5> -->
<!-- <p>The w3-quarter class uses one quarter (25%) of the screen window.</p>-->
<!-- <p>On small screens (max 600 pixels) it automatically resizes to full screen width.</p>-->
<!-- </div>-->
<!-- <div class="w3-quarter w3-container">-->
<!-- <h5>w3-quarter</h5> -->
<!-- </div>-->
<!-- <div class="w3-quarter w3-container">-->
<!-- <h5>w3-quarter</h5> -->
<!-- </div>-->
<!-- <div class="w3-quarter w3-container">-->
<!-- <h5>w3-quarter</h5> -->
<!-- </div>-->
<!--</div> -->
<!--<div class="w3-center">-->
<!-- <h2>Containers</h2>-->
<!-- <p>Use containers to create headers, sections and footers.</p>-->
<!--</div> -->
<!--<header class="w3-container w3-blue-grey">-->
<!-- <h2>Header</h2>-->
<!--</header>-->
<!--<div class="w3-padding w3-white w3-display-container">-->
<!-- <span onclick="this.parentElement.style.display='none'" class="w3-button w3-display-topright"><i class="fa fa-remove"></i></span>-->
<!-- <h2>London</h2>-->
<!-- <p>London is the capital city of England. It is the most populous city in the United Kingdom,-->
<!-- with a metropolitan area of over 13 million inhabitants.</p>-->
<!-- <p>Standing on the River Thames, London has been a major settlement for two millennia,-->
<!-- its history going back to its founding by the Romans, who named it Londinium.</p>-->
<!-- <p>By the way, you can add a close icon to all containers if you want the ability to hide them. Look to your right!</p>-->
<!--</div>-->
<!--<footer class="w3-container w3-blue-grey">-->
<!-- <h5>Footer</h5>-->
<!-- <p class="w3-opacity">Footer information goes here</p>-->
<!--</footer>-->
<hr>
<div class="w3-center">
<h2 style="text-shadow:1px 1px 0 #444">Our servers</h2>
<!--<p>The color themes have been designed to work harmoniously with each other.</p>-->
</div>
</div>
<div class="w3-row-padding">
<div class="w3-half">
<div class="w3-card white">
<div class="w3-container w3-indigo">
<h3>Tokyo, Japan</h3>
</div>
<!--<div class="w3-container">-->
<!--<h3 class="w3-text-indigo">Movies 2014</h3>-->
<!--</div>-->
<ul class="w3-ul w3-border-top">
<li>
<h3>IPv4</h3>
<p>45.63.124.65</p>
</li>
<li>
<h3>IPv6</h3>
<p>2001:19f0:7002:1249:5400:1ff:fe70:15a6</p>
</li>
<li>
<h3>Dns over https/2</h3>
<p>https://doh.blahdns.com/dns-query</p>
</li>
</ul>
<!--<div class="w3-container w3-indigo w3-large"><span class="w3-right">Next</span></div>-->
</div>
</div>
<div class="w3-half">
<div class="w3-card white">
<div class="w3-container w3-theme">
<h3>Frankfut, Germany</h3>
</div>
<!--<div class="w3-container">-->
<!--<h3 class="w3-text-theme">Movies 2014</h3>-->
<!--</div>-->
<ul class="w3-ul w3-border-top">
<li>
<h3>IPv4</h3>
<p>217.61.0.97</p>
</li>
<li>
<h3>IPv6</h3>
<p>soon.</p>
</li>
<li>
<h3>Dns over TLS</h3>
<p>soon.</p>
</li>
</ul>
<!--<div class="w3-container w3-theme w3-large"><span class="w3-right">Next</span></div>-->
</div>
</div>
</div>
<!--<div class="w3-container w3-center">-->
<!-- <h3>News</h3>-->
<!--</div>-->
<!--<div class="w3-row-padding"> -->
<!--<div class="w3-third">-->
<!--<div class="w3-card">-->
<!-- <img src="/w3images/car.jpg" alt="Car" style="width:100%">-->
<!-- <div class="w3-container">-->
<!-- <p>w3-card</p>-->
<!-- </div>-->
<!--</div>-->
<!--</div>-->
<!--<div class="w3-third">-->
<!--<div class="w3-card-4">-->
<!-- <img src="/w3images/car.jpg" alt="Car" style="width:100%">-->
<!-- <div class="w3-container">-->
<!-- <p>w3-card-4</p>-->
<!-- </div>-->
<!--</div>-->
<!--</div>-->
<!--<div class="w3-third">-->
<!--<div class="w3-card-4">-->
<!-- <img src="/w3images/car.jpg" alt="Car" style="width:100%">-->
<!-- <div class="w3-container">-->
<!-- <p>w3-card-4</p>-->
<!-- </div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<div class="w3-container">-->
<!-- <hr>-->
<!-- <div class="w3-center">-->
<!-- <h2>Tables</h2>-->
<!-- <p w3-class="w3-large">Don't worry. W3.CSS takes care of your tables.</p>-->
<!-- </div>-->
<!--<div class="w3-responsive w3-card-4">-->
<!--<table class="w3-table w3-striped w3-bordered">-->
<!--<thead>-->
<!--<tr class="w3-theme">-->
<!-- <th>First Name</th>-->
<!-- <th>Last Name</th>-->
<!-- <th>Points</th>-->
<!--</tr>-->
<!--</thead>-->
<!--<tbody>-->
<!--<tr>-->
<!-- <td>Jill</td>-->
<!-- <td>Smith</td>-->
<!-- <td>50</td>-->
<!--</tr>-->
<!--<tr class="w3-white">-->
<!-- <td>Eve</td>-->
<!-- <td>Jackson</td>-->
<!-- <td>94</td>-->
<!--</tr>-->
<!--<tr>-->
<!-- <td>Adam</td>-->
<!-- <td>Johnson</td>-->
<!-- <td>67</td>-->
<!--</tr>-->
<!--</tbody>-->
<!--</table>-->
<!--</div>-->
<!--<hr>-->
<!--<h2 class="w3-center">Forms and Lists</h2>-->
<!--</div>-->
<!--<div class="w3-row-padding">-->
<!--<div class="w3-half">-->
<!--<form class="w3-container w3-card-4">-->
<!-- <h2>Input Form</h2>-->
<!-- <div class="w3-section"> -->
<!-- <input class="w3-input" type="text" required>-->
<!-- <label>Name</label>-->
<!-- </div>-->
<!-- <div class="w3-section"> -->
<!-- <input class="w3-input" type="text" required>-->
<!-- <label>Email</label>-->
<!-- </div>-->
<!-- <div class="w3-section"> -->
<!-- <input class="w3-input" type="text" required>-->
<!-- <label>Subject</label>-->
<!-- </div>-->
<!-- <div class="w3-row">-->
<!-- <div class="w3-half">-->
<!-- <input id="milk" class="w3-check" type="checkbox" checked="checked">-->
<!-- <label>Milk</label>-->
<!-- <br>-->
<!-- <input id="sugar" class="w3-check" type="checkbox">-->
<!-- <label>Sugar</label>-->
<!-- <br>-->
<!-- <input id="lemon" class="w3-check" type="checkbox" disabled>-->
<!-- <label>Lemon (Disabled)</label>-->
<!-- <br><br>-->
<!-- </div>-->
<!-- <div class="w3-half">-->
<!-- <input id="male" class="w3-radio" type="radio" name="gender" value="male" checked>-->
<!-- <label>Male</label>-->
<!-- <br>-->
<!-- <input id="female" class="w3-radio" type="radio" name="gender" value="female">-->
<!-- <label>Female</label>-->
<!-- <br>-->
<!-- <input id="unknown" class="w3-radio" type="radio" name="gender" value="" disabled>-->
<!-- <label> Don't know (Disabled)</label>-->
<!-- </div>-->
<!-- </div>-->
<!--</form>-->
<!--</div>-->
<!--<div class="w3-half">-->
<!--<div class="w3-card-4 w3-container">-->
<!--<h2>Lists</h2>-->
<!--<ul class="w3-ul w3-margin-bottom">-->
<!-- <li>Jill</li>-->
<!-- <li>Eve</li>-->
<!-- <li>Adam</li>-->
<!--</ul>-->
<!--<br>-->
<!--<ul class="w3-ul w3-border w3-hoverable">-->
<!-- <li class="w3-theme">Jill</li>-->
<!-- <li>Eve</li>-->
<!-- <li>Adam</li>-->
<!-- <li>Steve</li>-->
<!--</ul>-->
<!--<br>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<hr>-->
<!--<h2 class="w3-center">Progress Bars</h2>-->
<!--<div class="w3-container">-->
<!--<div class="w3-light-gray">-->
<!-- <div id="myBar" class="w3-center w3-padding w3-theme" style="width:5%">5%</div>-->
<!--</div><br>-->
<!--<button class="w3-btn w3-theme" onclick="move()">Click Me</button> -->
<!--</div>-->
<!--<hr>-->
<!--<h2 class="w3-center">Slideshows</h2>-->
<!--<div class="w3-content" style="max-width:800px;position:relative">-->
<!--<img class="mySlides w3-animate-opacity" src="/w3images/snow.jpg" style="width:100%">-->
<!--<img class="mySlides w3-animate-opacity" src="/w3images/lights.jpg" style="width:100%">-->
<!--<img class="mySlides w3-animate-opacity" src="/w3images/mountains.jpg" style="width:100%">-->
<!--<img class="mySlides w3-animate-opacity" src="/w3images/forest.jpg" style="width:100%">-->
<!--<a class="w3-button w3-hover-dark-grey" style="position:absolute;top:45%;left:0;" onclick="plusDivs(-1)"></a>-->
<!--<a class="w3-button w3-hover-dark-grey" style="position:absolute;top:45%;right:0;" onclick="plusDivs(+1)"></a>-->
<!--</div>-->
<!--<div class="w3-container">-->
<!--<hr>-->
<!--<h2 class="w3-center">Navigation</h2>-->
<!--<div class="w3-bar w3-theme">-->
<!-- <a href="#" class="w3-bar-item w3-button w3-padding-16">Home</a>-->
<!-- <a href="#" class="w3-bar-item w3-button w3-padding-16">Link 1</a>-->
<!-- <div class="w3-dropdown-hover">-->
<!-- <button class="w3-button w3-padding-16">-->
<!-- Dropdown <i class="fa fa-caret-down"></i>-->
<!-- </button>-->
<!-- <div class="w3-dropdown-content w3-card-4 w3-bar-block">-->
<!-- <a href="javascript:void(0)" class="w3-bar-item w3-button">Link 1</a>-->
<!-- <a href="javascript:void(0)" class="w3-bar-item w3-button">Link 2</a>-->
<!-- <a href="javascript:void(0)" class="w3-bar-item w3-button">Link 3</a>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->
<!--<hr>-->
<div class="w3-container w3-center">
<h2 class="w3-center" style="text-shadow:1px 1px 0 #444">News</h2>
<button onclick="myAccFunc('Demo1')" class="w3-padding-16 w3-button w3-block w3-left-align w3-red">What is Dns over https (DoH)</button>
<div id="Demo1" class="w3-hide">
<div class="w3-container w3-white">
<p class="w3-left-align"> DNS over HTTPS (DoH)<br>
DNS over HTTPS is a new protocol designed to encrypt and secure DNS traffic over HTTPS (or HTTP/2).
<br>
It prevents DNS hijacking and ISPs from sniffing your traffic. We built an anycast network for our DoH service to give you a good performance, like you would get with our DNSCrypt or standard DNS services.
</p>
<p class="w3-left-align"><i class="fa fa-bookmark-o" aria-hidden="true"></i> alternative: https://doh.datt.pw/dns-query </p>
</div>
</div>
<button onclick="myAccFunc('Demo2')" class="w3-padding-16 w3-yellow w3-button w3-block w3-left-align">What is DnsCrypt</button>
<div id="Demo2" class="w3-hide">
<p class="w3-left-align">
Encrypted DNS - DNS over TLS support
DNS over TLS support is available on all our services through port 853. <br>
DNS over TLS encrypts and authenticates all your DNS traffic to protect your privacy and prevent DNS hijacking and sniffing.
</p>
</div>
<button onclick="myAccFunc('Demo3')" class="w3-padding-16 w3-pale-red w3-button w3-block w3-left-align">What is DNS</button>
<div id="Demo3" class="w3-hide">
<div class="w3-container">
<p class="w3-left-align">Accordion with Images:</p>
<img src="https://2r4s9p1yi1fa2jd7j43zph8r-wpengine.netdna-ssl.com/files/2018/05/02_06.png" style="width:50%;" class="w3-animate-zoom">
<p class="w3-left-align">The Domain Name System (DNS) is the phonebook of the Internet. Humans access information online through domain names, like nytimes.com or espn.com. Web browsers interact through Internet Protocol (IP) addresses. DNS translates domain names to IP addresses so browsers can load Internet resources.</p>
<p class="w3-left-align"> Each device connected to the Internet has a unique IP address which other machines use to find the device. DNS servers eliminate the need for humans to memorize IP addresses such as 192.168.1.1 (in IPv4), or more complex newer alphanumeric IP addresses such as 2400:cb00:2048:1::c629:d7a2 (in IPv6).</p>
</div>
</div>
</div>
<div class="w3-container">
<h2 class="w3-center" style="text-shadow:1px 1px 0 #444">How to setup</h2>
<div class="w3-border">
<div class="w3-bar w3-theme">
<button class="w3-bar-item w3-button testbtn w3-padding-16" onclick="openCity(event,'Mac')">Mac</button>
<button class="w3-bar-item w3-button testbtn w3-padding-16" onclick="openCity(event,'Windows')">Windows</button>
<button class="w3-bar-item w3-button testbtn w3-padding-16" onclick="openCity(event,'Router')">Router</button>
</div>
<div id="Mac" class="w3-container city w3-animate-opacity">
<ul >
<li>1. Open System Preferences</li>
<li>2. Search for DNS Servers and select it from the dropdown.</li>
<li>3. Click the + button to add a DNS Server and enter IPv4/6</li>
<li>4. Click Ok, then click Apply.</li>
<li>5. Youre all set! Your device now has faster, more private DNS servers ✌️✌️</li>
</ul>
</div>
<div id="Windows" class="w3-container city w3-animate-opacity">
<ul >
<li>1. Click on the Start menu, then click on Control Panel.</li>
<li>2. Click on Network and Internet.</li>
<li>3. Click on Change Adapter Settings.</li>
<li>4. Right click on the Wi-Fi network you are connected to, then click <strong>Properties </strong>.</li>
<li>5. Select Internet Protocol Version 4 (or Version 6 if desired).</li>
<li>6. Click Properties.</li>
<li>7. Click Use The Following DNS Server Addresses.</li>
<li>8. Replace those addresses with the Blahdns addresses</li>
<li>9. Youre all set! Your device now has faster, more private DNS servers ✌️✌️</li>
</ul>
</div>
<div id="Router" class="w3-container city w3-animate-opacity">
<ul >
<li>1. Enter your routers gateway IP address in your browser, exp. 192.168.1.1</li>
<li>2. In your routers configuration page, locate the DNS server settings. (DHCP/WAN)</li>
<li>3. Replace those addresses with the Blahdns addresses</li>
<li>4. Save your settings, then restart your router.</li>
<li>5. Youre all set! Your device now has faster, more private DNS servers ✌️✌️</li>
</ul>
</div>
</div>
</div>
<!--<hr>-->
<!--<h2 class="w3-center">Buttons</h2>-->
<!--<div class="w3-center">-->
<!-- <br>-->
<!-- <a class="w3-button w3-theme">Button</a>-->
<!-- <a class="w3-button w3-theme">Button</a>-->
<!-- <a class="w3-button w3-theme-d3 w3-disabled">Button</a>-->
<!-- <br><br>-->
<!-- <a class="w3-button w3-circle w3-large w3-black"><i class="fa fa-plus"></i></a>-->
<!-- <a class="w3-button w3-circle w3-large w3-theme"><i class="fa fa-plus"></i></a> -->
<!-- <a class="w3-button w3-circle w3-large w3-card-4"><i class="fa fa-plus"></i></a>-->
<!--</div>-->
<!--<br>-->
<!--<div class="w3-center">-->
<!-- <div class="w3-dropdown-hover">-->
<!-- <button class="w3-button w3-theme">Dropdown <i class="fa fa-caret-down"></i></button>-->
<!-- <div class="w3-dropdown-content w3-bar-block w3-border">-->
<!-- <a href="#" class="w3-bar-item w3-button">Link 1</a>-->
<!-- <a href="#" class="w3-bar-item w3-button">Link 2</a>-->
<!-- <a href="#" class="w3-bar-item w3-button">Link 3</a>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->
<!--</div>-->
<!--<hr>-->
<!--<div class="w3-center">-->
<!-- <h2>Pagination</h2>-->
<!-- Pagination -->
<!-- <div class="w3-center w3-padding-32">-->
<!-- <div class="w3-bar">-->
<!-- <a href="#" class="w3-bar-item w3-button w3-hover-theme">«</a>-->
<!-- <a href="#" class="w3-bar-item w3-button w3-theme w3-hover-theme">1</a>-->
<!-- <a href="#" class="w3-bar-item w3-button w3-hover-theme">2</a>-->
<!-- <a href="#" class="w3-bar-item w3-button w3-hover-theme">3</a>-->
<!-- <a href="#" class="w3-bar-item w3-button w3-hover-theme">4</a>-->
<!-- <a href="#" class="w3-bar-item w3-button w3-hover-theme">5</a>-->
<!-- <a href="#" class="w3-bar-item w3-button w3-hover-theme">»</a>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->
<!--<br>-->
<!-- Footer -->
<footer class="w3-container w3-theme-dark w3-padding-16 w3-margin-top">
<h3 style="text-shadow:1px 1px 0 #444">Blahdns</h3>
<p>Copyright 2016 - 2018 blahdns.com </p>
<i class="fa fa-github" aria-hidden="true"></i> <a href="https://github.com/ookangzheng/blahdns">Github</a>
|
<i class="fa fa-coffee" aria-hidden="true"></i> <a href="https://buymeacoff.ee/elk6NqZhi">Buy me a coffee</a>
|
🧘‍♂ <a href="https://qr.allpay.com.tw/ZoYHr"> 咖啡一杯</a>
|
<i class="fa fa-envelope-o" aria-hidden="true"></i> <a href="mailto:hi@blahdns.com">Contact Me</a>
<div style="position:relative;bottom:55px;" class="w3-tooltip w3-right">
<span class="w3-text w3-theme-light w3-padding">Go To Top</span> 
<a class="w3-text-white" href="#myHeader"><span class="w3-xlarge">
<i class="fa fa-chevron-circle-up"></i></span></a>
</div>
<!--<p>Remember to check out our  <a href="w3css_references.asp" class="w3-btn w3-theme-light" target="_blank">W3.CSS Reference</a></p>-->
</footer>
<!-- Script for Sidebar, Tabs, Accordions, Progress bars and slideshows -->
<script>
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-10405417-12', 'auto');
ga('send', 'pageview');
// Side navigation
function w3_open() {
var x = document.getElementById("mySidebar");
x.style.width = "100%";
x.style.fontSize = "40px";
x.style.paddingTop = "10%";
x.style.display = "block";
}
function w3_close() {
document.getElementById("mySidebar").style.display = "none";
}
// Tabs
function openCity(evt, cityName) {
var i;
var x = document.getElementsByClassName("city");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
var activebtn = document.getElementsByClassName("testbtn");
for (i = 0; i < x.length; i++) {
activebtn[i].className = activebtn[i].className.replace(" w3-dark-grey", "");
}
document.getElementById(cityName).style.display = "block";
evt.currentTarget.className += " w3-dark-grey";
}
var mybtn = document.getElementsByClassName("testbtn")[0];
mybtn.click();
// Accordions
function myAccFunc(id) {
var x = document.getElementById(id);
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
} else {
x.className = x.className.replace(" w3-show", "");
}
}
// Slideshows
var slideIndex = 1;
function plusDivs(n) {
slideIndex = slideIndex + n;
showDivs(slideIndex);
}
function showDivs(n) {
var x = document.getElementsByClassName("mySlides");
if (n > x.length) {slideIndex = 1}
if (n < 1) {slideIndex = x.length} ;
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
x[slideIndex-1].style.display = "block";
}
showDivs(1);
// Progress Bars
function move() {
var elem = document.getElementById("myBar");
var width = 5;
var id = setInterval(frame, 10);
function frame() {
if (width == 100) {
clearInterval(id);
} else {
width++;
elem.style.width = width + '%';
elem.innerHTML = width * 1 + '%';
}
}
}
</script>
</body>
</html>

BIN
website/logo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

143
website/script.js Executable file
View File

@@ -0,0 +1,143 @@
// Edited Jun 27, 2019
// Maintainer: @ookangzheng
// https://developer.mozilla.org/en-US/docs/Web/API/AbortController
(function() {
const url = "https://test.blahdns.com";
let controller = new AbortController();
let signal = controller.signal;
let timeout = 1500;
let time = setTimeout(() => {
//console.log("TEST request timeout");
controller.abort();
}, timeout);
fetch(url, {
time,
credentials: "same-origin",
method: "HEAD",
mode: "no-cors",
cache: "no-cache"
})
.then(function(response) {
clearTimeout(time);
if (response.status == 0 || response.status == 403) {
text.innerHTML = "You're <strong> using </strong> Blahdns";
} else {
text.innerHTML = "You're <strong> not </strong> using Blahdns";
}
})
.catch(error => console.log(error));
})();
function handleErrors(response) {
console.log("Resopone here");
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}
const text = document.querySelector("#status");
//const domainRegex = /^([a-zA-Z0-9]+(([\-]?[a-zA-Z0-9]+)*\.)+)*[a-zA-Z]{2,}$/;
const domainRegex = /^(?:(?:(?:[a-zA-z\-]+)\:\/{1,3})?(?:[a-zA-Z0-9])(?:[a-zA-Z0-9-\.]){1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+|\[(?:(?:(?:[a-fA-F0-9]){1,4})(?::(?:[a-fA-F0-9]){1,4}){7}|::1|::)\]|(?:(?:[0-9]{1,3})(?:\.[0-9]{1,3}){3}))(?:\:[0-9]{1,5})?$/;
// const domainRegex = /^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/
const domainInput = document.querySelector("#domainName");
const btnCheck = document.querySelector("#btnCheck");
const returnStat = document.querySelector("#returnStatus");
btnCheck.addEventListener("click", queryStatus);
function queryStatus() {
const url = `https://blahdns.com/api/${domainInput.value}`;
if (!domainRegex.test(domainInput.value)) {
return returnStat.innerHTML = `Please input valid URL and no space`
}
if (domainRegex.test(domainInput.value)) {
returnStat.innerHTML = `loading....`;
let controller = new AbortController();
let signal = controller.signal;
let timeout = 2000;
let time = setTimeout(() => {
console.log("Client request timeout");
returnStat.innerHTML = `Request timeout`;
controller.abort();
}, timeout);
fetch(url, { time })
.then(response => {
return response.json()
})
.then(data => {
// Work with JSON data here
console.log(data)
let result = JSON.stringify(data.status);
if (result === '"ok"') {
clearTimeout(time);
returnStat.innerHTML = `Domain: ${
domainInput.value
} is <strong>not</strong> block`;
}
if (result === '"failed"') {
clearTimeout(time);
returnStat.innerHTML = `Domain: ${
domainInput.value
} lookup <strong>failed or blocked</strong>`;
}
})
.catch(error => console.log(error));
}
//return (returnStat.innerHTML = `Please input valid URL and no space`);
}
(function(a,b,c){var d=a.history,e=document,f=navigator||{},g=localStorage,
h=encodeURIComponent,i=d.pushState,k=function(){return Math.random().toString(36)},
l=function(){return g.cid||(g.cid=k()),g.cid},m=function(r){var s=[];for(var t in r)
r.hasOwnProperty(t)&&void 0!==r[t]&&s.push(h(t)+"="+h(r[t]));return s.join("&")},
n=function(r,s,t,u,v,w,x){var z="https://www.google-analytics.com/collect",
A=m({v:"1",ds:"web",aip:c.anonymizeIp?1:void 0,tid:b,cid:l(),t:r||"pageview",
sd:c.colorDepth&&screen.colorDepth?screen.colorDepth+"-bits":void 0,dr:e.referrer||
void 0,dt:e.title,dl:e.location.origin+e.location.pathname+e.location.search,ul:c.language?
(f.language||"").toLowerCase():void 0,de:c.characterSet?e.characterSet:void 0,
sr:c.screenSize?(a.screen||{}).width+"x"+(a.screen||{}).height:void 0,vp:c.screenSize&&
a.visualViewport?(a.visualViewport||{}).width+"x"+(a.visualViewport||{}).height:void 0,
ec:s||void 0,ea:t||void 0,el:u||void 0,ev:v||void 0,exd:w||void 0,exf:"undefined"!=typeof x&&
!1==!!x?0:void 0});if(f.sendBeacon)f.sendBeacon(z,A);else{var y=new XMLHttpRequest;
y.open("POST",z,!0),y.send(A)}};d.pushState=function(r){return"function"==typeof d.onpushstate&&
d.onpushstate({state:r}),setTimeout(n,c.delay||10),i.apply(d,arguments)},n(),
a.ma={trackEvent:function o(r,s,t,u){return n("event",r,s,t,u)},
trackException:function q(r,s){return n("exception",null,null,null,null,r,s)}}})
(window,"UA-10405417-12",{anonymizeIp:true,colorDepth:true,characterSet:true,screenSize:true,language:true});
function w3_close() {
document.getElementById("mySidebar").style.display = "none";
}
// Tabs
function openCity(evt, cityName) {
var i;
var x = document.getElementsByClassName("city");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
var activebtn = document.getElementsByClassName("testbtn");
for (i = 0; i < x.length; i++) {
activebtn[i].className = activebtn[i].className.replace(
" w3-dark-grey",
""
);
}
document.getElementById(cityName).style.display = "block";
evt.currentTarget.className += " w3-dark-grey";
}
var mybtn = document.getElementsByClassName("testbtn")[0];
mybtn.click();
// Accordions
function myAccFunc(id) {
var x = document.getElementById(id);
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
} else {
x.className = x.className.replace(" w3-show", "");
}
}

1
website/w3.css Executable file

File diff suppressed because one or more lines are too long