使用容器快速创建远程桌面的GUI连接
技术实现:
- Guacamole Server
- xrdp Server
| #!/bin/bash | |
| set -e | |
| # install dnsmasq | |
| brew install dnsmasq | |
| WORKDIR="$(mktemp -d)" | |
| SERVERS=(114.114.114.114 114.114.115.115 180.76.76.76) | |
| # Not using best possible CDN pop: 1.2.4.8 210.2.4.8 223.5.5.5 223.6.6.6 | |
| # Dirty cache: 119.29.29.29 182.254.116.116 |
| #!/usr/bin/env bash | |
| # reffer: | |
| # https://medium.com/@acpanjan/download-google-drive-files-using-wget-3c2c025a8b99 | |
| file_name="youer_file_name" | |
| file_id="your_file_id" | |
| confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=${file_id}" -O-| sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p') | |
| wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=${confirm}&id=${field_id}" -O ${file_name} && rm -rf /tmp/cookies.txt |
| import androidx.test.ext.junit.runners.AndroidJUnit4 | |
| import com.google.android.gms.tasks.Task | |
| import com.google.common.truth.Truth.assertThat | |
| import com.google.firebase.database.DataSnapshot | |
| import com.google.firebase.database.DatabaseError | |
| import com.google.firebase.database.DatabaseReference | |
| import com.google.firebase.database.ValueEventListener | |
| import com.google.firebase.database.ktx.database | |
| import com.google.firebase.ktx.Firebase | |
| import org.junit.Before |
| import com.github.crazygit.tikheart.TikHeartApplication | |
| import com.github.crazygit.tikheart.data.dao.UserInfoDao | |
| import com.github.crazygit.tikheart.data.model.UserInfo | |
| import com.github.crazygit.tikheart.utilities.LocalStorage | |
| object LocalRepository { | |
| private val localStorage = LocalStorage(TikHeartApplication.appContext) | |
| private val localUserDao = UserInfoDao(localStorage) |
| def first_or_none(predicate, seq): | |
| return next(filter(predicate, seq), None) | |
| if __name__ == '__main__': | |
| print(first_or_none(lambda x: x % 2 == 0, [2, 4, 6, 8])) # 2 | |
| print(first_or_none(lambda x: x % 2 == 0, [1, 3, 5, 7])) # None |
| package main | |
| import ( | |
| "context" | |
| "fmt" | |
| "github.com/ethereum/go-ethereum" | |
| "github.com/ethereum/go-ethereum/accounts/abi" | |
| "github.com/ethereum/go-ethereum/common" | |
| "log" | |
| "math/big" |
| package main | |
| import ( | |
| "context" | |
| "fmt" | |
| "github.com/ethereum/go-ethereum/common" | |
| "github.com/ethereum/go-ethereum/ethclient" | |
| "log" | |
| ) |
| # bare secure mode: no https, no basic auth | |
| version: '3.8' | |
| services: | |
| reverse_proxy: | |
| image: traefik:v2.6 | |
| command: | |
| # - "--log.level=DEBUG" | |
| # Enable Docker in Traefik, so that it reads labels from Docker services | |
| - "--providers.docker" |
| [email protected] | |
| DASHBOARD_DOMAIN=traefik.example.com | |
| WHOAMI_SERVICE_DOMAIN=whoami.example.com | |
| # echo "DASHBOARD_USER=$(htpasswd -nb your_name your_password)" >> .env | |
| DASHBOARD_USER=your_name:$apr1$eMFHYd7e$2rl6G/UF80alLYInwv/tz0 |