You will use a TSIG key to authenticate yourself to your Knot server.
Using keymgr shipped in knot-dnsutils (for Debian releases) makes it simple.
keymgr -t <tsig_name> [<algorithm>] [<bits>]
| ;; SERVER: 108.61.10.10#53(108.61.10.10) | |
| ;; WHEN: Mon Dec 10 12:25:54 UTC 2018 | |
| 104.16.251.144 dl.discordapp.net | |
| 104.16.247.144 dl.discordapp.net | |
| 104.16.250.144 dl.discordapp.net | |
| 104.16.248.144 dl.discordapp.net | |
| 104.16.249.144 dl.discordapp.net | |
| 104.16.59.37 gateway.discord.gg | |
| 104.16.60.37 gateway.discord.gg |
| <# | |
| This PowerShell script locks your current session, then immediately turns off your monitor. | |
| You don't have to wait for or alter your screen timeout, | |
| or use a sleep button set to turning off monitor that doesn't exist on your computer. | |
| #> | |
| $LockWorkStation = Add-Type -Name "Win32LockWorkStation" -PassThru -MemberDefinition @" |
There're some Docker-ized configuration files to setup a weird proxy.
Since V2Ray doesn't support specifiy outbound address yet,
placing a Shadowsocks instance with -b option behind the V2Ray server is less complex than policy routing in the kernel.
The whole proxy chain for this VMess over WebSocket:
Reverse Proxy (NGINX, etc.) -> V2Ray (WebSocket -> VMess) -> Shadowsocks
| const path = require('path') | |
| const { CleanWebpackPlugin: CleanPlugin } = require('clean-webpack-plugin') | |
| const HtmlPlugin = require('html-webpack-plugin') | |
| const MiniCssExtractPlugin = require('mini-css-extract-plugin') | |
| module.exports = (env, argv) => { | |
| const isProduction = argv.mode === 'production' | |
| return { |
| using System.Diagnostics; | |
| var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(1)); | |
| var observer = new CancellationTokenSource(); | |
| var linked = CancellationTokenSource.CreateLinkedTokenSource(timeout.Token, observer.Token); | |
| await Task.Run(async () => { | |
| try | |
| { |
| #include <condition_variable> | |
| #include <cstdio> | |
| #include <mutex> | |
| #include <queue> | |
| #include <thread> | |
| extern "C" | |
| { | |
| #include <libavcodec/avcodec.h> | |
| #include <libavformat/avformat.h> |
| import { either, isLeft, isRight } from 'fp-ts/lib/Either' | |
| import * as it from 'io-ts' | |
| import { Int, Type, TypeOf } from 'io-ts' | |
| import { PathReporter } from 'io-ts/lib/PathReporter' | |
| // custom type: integer string | |
| const IntegerString = new Type<number, string, unknown>( | |
| 'IntegerString', | |
| Int.is, |
| print('Knot Resolver ' .. package_version()) | |
| modules = { | |
| 'bogus_log', | |
| 'hints', | |
| 'predict', | |
| 'prefill', | |
| 'workarounds < iterate', | |
| } |
| const start = 58600 | |
| const end = 58700 | |
| for (let i = start; i < end; i++) { | |
| if (i % 100 === 0) { | |
| console.log(`fetch block [${i}, ${i + 99}]`) | |
| } | |
| const blockHash = await api.rpc.chain.getBlockHash(i) | |
| try { |