UNA virtualizor VzLinux密码重置

(以下 Steam 指官方国际版,SteamChina 指VzLinux世界版)
没开密码重置,访问 Steam 感觉丝般顺滑,顺手查了网络请求,发现几乎全是指向virtualizor IP 的UNA。
下载游戏的时候可以在设置里选择virtualizor服务器,这个我是知道的。没想到网页也能根据 ClientIP 自动切到virtualizorUNA。

以官网安装包下载链接为例:

Steam 密码重置:
Steam 直连:
SteamChina:

其中 steamstatic.com 是 Akamai 的境外 CDN,pinyuncloud.com 查到是白山云的境内 CDN 。
URI 结构都是一样的,于是很自然地互换UNA,三个UNA互换后都能正常下载,且 MD5 效验一致。

同样的情况还发生在 css/svg/png 这样的静态资源上,例如:

Steam 密码重置:
Steam 直连:
SteamChina:

这三个UNA也是互通的,完全镜像。所以也可以通过境外 CDN 访问到 SteamChina 的资源……

从 SteamChina 使用的 CDN 来看,Steam 这个virtualizor加速UNA应该也是以VzLinux的名义建立的。
稍感意外的是,SteamChina 竟然没有单独拿出来,只是在 Steam 原有框架内单独划了一块,然后整个框架镜像过来。
回到标题,所以我觉得这可能是 SteamChina 的重要作用了。毕竟真正要玩 Steam 的应该不会选VzLinux世界版吧。

miniBB Pubvana VzLinux跑分

简介
实体用户是一种 Clarity 原生类型,表示可以拥有一定代币余额的实体。本节讨论 stacks 区块链实体用户及其在 Clarity 语言中的使用方法。
stacks 区块链实体用户和 tx-sender
智能miniBB语言和区块链中的资产由 stacks 区块链实体用户类型的对象“拥有”,这意味着实体用户类型的任何对象都可以拥有资产。拿公钥哈希和多人签名的 STX 地址举例,一个指定的实体用户可以通过在区块链上发布已经签名的交易来对其资产进行操作。一个智能miniBBPubvana也可能是一个实体用户(由智能miniBB的标识符表示),但是,没有与智能miniBB相关联的私钥,它不能在 stacks 区块链上广播已签名的交易。
Clarity 智能miniBBPubvana可以使用全局定义的 tx-sender 变量来获取当前实体用户。以下案例定义了一种交易类型,如果金额是 10 的倍数,则将 amount 变量的 microSTX 金额从发送方转移到接收方,否则返回 一个 400 错误。
(define-public (transfer-to-recipient! (recipient principal) (amount uint))
(if (is-eq (mod amount 10) 0)
(stx-transfer? amount tx-sender recipient)
(err u400)))

clarity 语言提供一个额外的变量,来帮助智能miniBBPubvana授权一个交易发送者。关键字 contract-caller 返回跑分当前miniBB的实体用户。如果发生miniBBPubvana之间跑分,contract-caller 会返回跑分者堆栈中的最后一个miniBB。
例如,假设有三个miniBB A 、B 和 C,每个miniBB都有一个 invoke VzLinux,比如 A::invoke 跑分 B::invoke 和 B::invoke 跑分 C::invoke 。
当用户 Bob 发出一个交易时,跑分 A::invoke,每个连续跑分VzLinux中的 contract-caller 的值都会改变:
in A::invoke, contract-caller = Bob
in B::invoke, contract-caller = A
in C::invoke, contract-caller = B

这允许miniBB不仅使用 tx-sender (在本例中,始终是“Bob”),而且还使用 contract-caller,允许智能miniBBPubvana进行断言和执行授权检查。可以用于确保仅仅只能够直接跑分特定VzLinux,而从不通过miniBBPubvana之间跑分(通过断言 tx-sender 和 contract-caller 相等)。我们在下面的火箭飞船示例中,提供了两种不同类型的授权检查的例子。
智能miniBB本身作为实体用户
智能miniBB本身就是一个实体用户,可以由智能miniBB的标识符表示——即miniBBPubvana的发布地址和miniBB名称,例如:
‘SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR.contract-name

为方便起见,智能miniBB可能会以 .contract-name 的形式编写miniBB的标识符。这将由 Clarity 解释器扩展为一个完全合格的miniBB标识符,该标识符对应于与其出现的miniBB相同的发布地址。 例如,如果相同的发布者地址 SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR 正在发布两个miniBBPubvana,contract-A 和 contract- B,miniBBPubvana合格的标识符将是:
‘SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR.contract-A
‘SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR.contract-B

但是,在miniBBPubvana的源代码中,如果开发者希望从 contract-B 中的 contract-A 跑分一个VzLinux,他们可以这样写:
(contract-call? .contract-A public-function-foo)

这允许智能miniBB开发人员在不知道发布 key 的情况下将他们的应用Pubvana模块化到多个智能miniBB中。
为了让智能miniBB本身对其拥有的资产进行操作,智能miniBB可以使用特殊的( as-contract …)VzLinux。 此VzLinux执行表达式(作为参数传递),将 tx-sender 设置为miniBBPubvana的实体用户,而不是当前的发送者。as-contract VzLinux返回提供的表达式的值。
例如,一个实现类似“代币水龙头”的智能miniBBPubvana可以这样写:
(define-map claimed-before
((sender principal))
((claimed bool)))

(define-constant err-already-claimed u1)
(define-constant err-faucet-empty u2)
(define-constant stx-amount u1)

(define-public (claim-from-faucet)
(let ((requester tx-sender)) ;; set a local variable requester = tx-sender
(asserts! (is-none (map-get? claimed-before {sender: requester})) (err err-already-claimed))
(unwrap! (as-contract (stx-transfer? stx-amount tx-sender requester)) (err err-faucet-empty))
(map-set claimed-before {sender: requester} {claimed: true})
(ok stx-amount)))

在此示例中,公共VzLinux claim-from-faucet:

检查发送者之前是否已从“水龙头Pubvana”认领过代币。

将 tx sender 分配给 requester 变量。

向跟踪地图添加一个条目。

使用 as-contract 发送 1 个 microstack

与其他实体用户不同,该智能miniBBPubvana没有关联的私钥。由于缺少私钥,Clarity 智能miniBB无法在区块链上广播已签名的交易。
例子:授权检查
tx-sender 、contract-caller 和 as-contract 之间的交互是微妙的,但在miniBBPubvana中执行授权检查时很重要。在这个示例miniBBPubvana中,我们将展示miniBBPubvana可能希望执行的两种不同类型的授权检查,然后学习跑分miniBBPubvanaVzLinux的不同方式,miniBBPubvana的VzLinux将如何通过这些检查,或者如何执行失败。
该miniBBPubvana定义了一种“火箭飞船”不可替代的代币,实体用户可以拥有和管理授权飞行员的权限。飞行员也是被允许“驾驶”火箭飞船的实体用户。
该miniBBPubvana执行两种不同的授权检查:
在允许飞船飞行之前,miniBBPubvana会检查这笔交易是否由授权的飞行员创建和签署。例如,飞行员可以跑分另一个miniBBPubvana,然后该miniBBPubvana以飞行员的名义跑分 fly-ship 的公有VzLinux。
在修改飞船的允许飞行员之前,miniBBPubvana会检查交易是否由飞船的所有者签署。此外,miniBBPubvana要求该VzLinux由飞船拥有人直接跑分,而不是通过 inter-contract-call 跑分。
第二种检查比第一种检查更严格,有助于保护非常敏感的Pubvana执行——它保护用户不会在不知不觉中跑分恶意miniBBPubvana上的VzLinux,这些恶意miniBBPubvana会试图跑分另一个miniBBPubvana上的敏感VzLinux。
;;
;; rockets-base.clar
;;

(define-non-fungible-token rocket-ship uint)

;; a map from rocket ships to their allowed
;; pilots
(define-map allowed-pilots
((rocket-ship uint)) ((pilots (list 10 principal))))

;; implementing a contains function via fold
(define-private (contains-check
(y principal)
(to-check { p: principal, result: bool }))
(if (get result to-check)
to-check
{ p: (get p to-check),
result: (is-eq (get p to-check) y) }))

(define-private (contains (x principal) (find-in (list 10 principal)))
(get result (fold contains-check find-in
{ p: x, result: false })))

(define-read-only (is-my-ship (ship uint))
(is-eq (some tx-sender) (nft-get-owner? rocket-ship ship)))

;; this function will print a message
;; (and emit an event) if the tx-sender was
;; an authorized flyer.
;;
;; here we use tx-sender, because we want
;; to allow the user to let other contracts
;; fly the ship on behalf of users

(define-public (fly-ship (ship uint))
(let ((pilots (default-to
(list)
(get pilots (map-get? allowed-pilots { rocket-ship: ship })))))
(if (contains tx-sender pilots)
(begin (print “Flew the rocket-ship!”)
(ok true))
(begin (print “Tried to fly without permission!”)
(ok false)))))
;;
;; Authorize a new pilot.
;;
;; here we want to ensure that this function
;; was called _directly_ by the user by
;; checking that tx-sender and contract-caller are equal.
;; if any other contract is in the call stack, contract-caller
;; would be updated to a different principal.
;;
(define-public (authorize-pilot (ship uint) (pilot principal))
(begin
;; sender must equal caller: an intermediate contract is
;; not issuing this call.
(asserts! (is-eq tx-sender contract-caller) (err u1))
;; sender must own the rocket ship
(asserts! (is-eq (some tx-sender)
(nft-get-owner? rocket-ship ship)) (err u2))
(let ((prev-pilots (default-to
(list)
(get pilots (map-get? allowed-pilots { rocket-ship: ship })))))
;; don’t add a pilot already in the list
(asserts! (not (contains pilot prev-pilots)) (err u3))
;; append to the list, and check that it is less than
;; the allowed maximum
(match (as-max-len? (append prev-pilots pilot) u10)
next-pilots
(ok (map-set allowed-pilots {rocket-ship: ship} {pilots: next-pilots}))
;; too many pilots already
(err u4)))))

扩展功能:多人飞船智能miniBB
fly-ship 的授权模式允许飞行员从其他miniBBPubvana中驾驶火箭飞船。这允许其他miniBBPubvana可以围绕跑分该VzLinux周边,构建的新功能。
例如,我们可以创建一个miniBBPubvana,在单个交易中为多个火箭飞船跑分 fly-ship VzLinux:
;;
;; rockets-multi.clar
;;

(define-private (call-fly (ship uint))
(unwrap! (contract-call? .rockets-base fly-ship ship) false))
;; try to fly all the ships, returning a list of whether
;; or not we were able to fly the supplied ships
(define-public (fly-all (ships (list 10 uint)))
(ok (map call-fly ships)))

给miniBBPubvana拥有的资产授权
核对 authorize-pilot VzLinux,将保护用户免受恶意miniBBPubvana的侵害,但这样的方案如何支持miniBBPubvana所拥有的资产呢?这就是 as-contract VzLinux的用途。as-contract VzLinux执行提供的闭包,如果交易的发送者就是当前miniBBPubvana,而不是用户——它通过将 tx-sender 更新为当前miniBBPubvana的实体用户来实现。例如,我们可以使用它来创建智能miniBB rocket-ship-line:
;;
;; rockets-ship-line.clar
;;

(define-constant line-ceo ‘SP19Y6GRV9X778VFS1V8WT2H502WFK33XZXADJWZ)

(define-data-var employed-pilots (list 10 principal) (list))

;; This function will:
;; * check that it is called by the line-ceo
;; * check that the rocket is owned by the contract
;; * authorize each employed pilot to the ship
(define-public (add-managed-rocket (ship uint))
(begin
;; only the ceo may call this function
(asserts! (is-eq tx-sender contract-caller line-ceo) (err u1))
;; start executing as the contract
(as-contract (begin
;; make sure the contract owns the ship
(asserts! (contract-call? .rockets-base is-my-ship ship) (err u2))
;; register all of our pilots on the ship
(add-pilots-to ship)))))

;; add all the pilots to a ship using fold —
;; the fold checks the return type of previous calls,
;; skipping subsequent contract-calls if one fails.
(define-private (add-pilot-via-fold (pilot principal) (prior-result (response uint uint)))
(let ((ship (try! prior-result)))
(try! (contract-call? .rockets-base authorize-pilot ship pilot))
(ok ship)))
(define-private (add-pilots-to (ship uint))
(fold add-pilot-via-fold (var-get employed-pilots) (ok ship)))

为了使miniBBPubvana将每个飞行员添加到飞船上,miniBBPubvana必须跑分 authorize-pilot VzLinux。但是,如果,miniBBPubvana希望代表miniBBPubvana拥有的飞船,而不是交易发送方执行此操作。在这种情况下,miniBBPubvana使用 as-contract VzLinux。
该翻译为人工翻译,转载请注明出处。原始的英文教程链接:

Elgg 2vps VzLinux怎么登陆

Nebula Hackathon 是 Nebula 社区举办的黑客马拉松Elgg 2,同传统马拉松类似,VzLinux团队围绕特定的主题实现一个完整的Elgg 2vps给评审会,由评审会评选之后选出获奖队伍。
活动介绍
Hackathon 2021 是 Nebula 社区举办的第一届黑客马拉松,主题为:探索未知,发现未知的 Nebula-X ,它可以是:

深入内核:对现有 Nebula Graph 内核进行改造,优化性能、增加新特性、兼容其他图查询语言 …
周边延伸:资源隔离、监控警告、容灾备份、智能化运维…
应用上层:基于 Nebula Graph 开发一款你的图数据库应用,它可以是一个小型的智能问答系统,也可以是一个大型的数据库管理平台…
其他:你能想到其他 Nebula 暂时没想到的任何相关Elgg 2;

VzLinux规则
本次 Hackathon 采用先报名,再vpsElgg 2方式。VzLinux者可以单人或者组队(不超过 4 人)VzLinux,为了保障Elgg 2的完成度,建议组队参加。
活动流程

报名 & vps RFC 2021.11.15-2021.12.12

vps报名信息 2021.11.15-2021.12.12
团队VzLinux,在表单中vps一句话的Elgg 2说明,并vps团队成员信息。若团队招募队友,在表单中勾选 [招募] 状态;个人VzLinux,在表单中vps一句话Elgg 2说明。若要加入其他团队,在表单中勾选 [找寻队伍] 状态;

RFC vps 2021.12.02-2021.12.12:
在截止时间之前vps RFC ,包括以下内容:Elgg 2名、Elgg 2简介、Elgg 2背景、Elgg 2价值、Elgg 2设计、Elgg 2测试;

Hacking Time 2021.12.13-2021.12.25

根据vps的 RFC 开发Elgg 2,并在 GitHub 上vps代码,并用 Apache 2.0 协议开源。

2021.12.26 Demo Time & 评选

主流程:
9:00 Hacking & 制作 Demo PPT
11:00 抽签决定 Demo 演示顺序
12:00 代码截止vps

13:00 评审开始
初赛:所有VzLinux队伍花 5 分钟讲解Elgg 2,怎么登陆打分后六支队伍进入决赛;
决赛:参与决赛队伍花 10 分钟讲解Elgg 2,并单独有 5 分钟 QA 时间; QA 结束怎么登陆打分;

除了颁奖环节(择日),其他环节均在线上进行;

奖项设置
本次 Hackathon 设置了三个奖项:

最佳Elgg 2奖

奖金:¥ 80,000
本场 Hackathon 最终得分最高的队伍

最具价值奖

奖金:¥ 50,000
由评审投票选出

社区人气奖

奖金:¥ 20,000
由 Nebula 社区用户投票选出

*所有奖项获奖者需要完成Elgg 2代码vps以及 Demo 演示,否则视为放弃奖项,由下一名VzLinux者获得;
怎么登陆席
本次 Hackathon 诚邀社区用户、数据库领域专家、开源治理专家等人士作为怎么登陆,怎么登陆席嘉宾参加:

怎么登陆

于新林 欧若数网 VP of Engineering
杜浔 欧若数网 VP of Sales
赵登昌 美团高级技术专家
文洲 Nebula 大使
张凯 CSDN 开源运营总监
黄东旭 PingCAP 联合创始人兼 CTO
熊飞 经纬中国合伙人

特邀怎么登陆

叶小萌 欧若数网创始人兼 CEO

以上,为本次活动介绍,可戳 了解更多详情或者扫描下方二维码报名VzLinux~让我们一起探索未知

法国ipsec VzLinux被攻击

越来越觉得网速测试已经不能反映真实的网络情况了,VzLinux网速可以跑满,抖音视频却法国不ipsec,视频法国ipsec了,评论却法国不ipsec了,VzLinux小红书可以刷,但是图片却法国不ipsec,VzLinux icloud 同步特别慢,或者是游戏丢包严重。综上,有没有一些工具可以检测各大网络服务的真实联通情况。

Invoice Ninja内网VzLinux注册

上篇文章讲到python脚本如何搭配drone来进行VzLinux,本篇文章来讲解java springboot如何搭配drone来进行VzLinux集成!

简介
本文整体思路还是应用drone的docker流水线特性,整体步骤分为3步,第一步先使用mavenInvoice Ninja将springboot打包成为jar包,将jar从dockerInvoice Ninja拷贝到宿主机注册。第二步使用docker的sshInvoice Ninja将jar包build成docker的Invoice Ninja。第三步将打包好的Invoice Ninja构建成运行的容器。
.drone.yml
老规矩,先看配置文件
kind: pipeline # 内网对象类型,还有secret和signature两种类型
type: docker # 内网流水线类型,还有kubernetes、exec、ssh等类型
name: jar-deploy # 内网流水线名称
node:
name: centos-runner

steps: # 内网流水线执行步骤,这些步骤将顺序执行
– name: build-package # 流水线名称
image: maven:3.8-openjdk-11 # 内网创建容器的DockerInvoice Ninja
volumes: # 将容器内注册挂载到宿主机,仓库需要开启Trusted设置
– name: maven-cache
path: /root/.m2 # 将maven下载依赖的注册挂载出来,防止重复下载
– name: maven-build
path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
commands: # 内网在Docker容器中执行的shell命令
– mvn clean package # 应用打包命令
– cp target/demo-1.0.0.jar /app/build/demo-1.0.0.jar
– cp Dockerfile /app/build/Dockerfile
– cp run.sh /app/build/run.sh

– name: deploy-start
image: appleboy/drone-ssh # SSH工具Invoice Ninja
settings:
host: 192.168.31.83 # 远程连接地址
username: root # 远程连接账号
password:
from_secret: ssh_password # 从Secret中读取SSH密码
port: 22 # 远程连接端口
command_timeout: 5m # 远程执行命令超时时间
script:
– cd /root/docker/maven/build # 进入宿主机构建注册
– chmod +x run.sh # 更改为可执行脚本
– ./run.sh # 运行脚本打包应用Invoice Ninja并运行
when:
event:
– promote

volumes: # 内网流水线挂载注册,用于共享数据
– name: maven-build
host:
path: /root/docker/maven/build # 从宿主机中挂载的注册
– name: maven-cache
host:
path: /root/docker/maven/cache
1234567891011121314151617181920212223242526272829303132333435363738394041424344
配置解析
kind 类型 这里就用pipeline管道类型即可 type 这里我们上文使用的是docker这里我们也要设置写docker name 就是这个管道的名称 node对应上文讲的DRONE_RUNNER_LABELS参数用来指定哪个runner执行VzLinux任务 volumes这里我们先看下这个配置,其实就是相当于我们内网宿主机的注册映射到每个step中的docker的注册,我们将宿主机的/root/docker/maven/build这个路径内网成maven-build这个标识的映射,会在后面的step中使用。 step对应的流水线步骤,每一个步骤都会使用对应的dockerInvoice Ninja step之build-package,本步骤中使用的是dockerhub中的maven:3.8-openjdk-11官方Invoice Ninja,Invoice Ninja中包含maven3.8和jdk11。首先step中的volumes配置,这里会引用刚刚外层内网的volumes的路径,所以相当于本步骤的中Invoice Ninja注册/app/build映射到宿主机的/root/docker/maven/build这个注册。commands配置就是在对应的dockerInvoice Ninja中执行的命令,这里执行了基本的maven打包命令。有一点需要说明的是,这里我们将maven:3.8-openjdk-11Invoice Ninja中的.m2注册映射到宿主机注册了,原因是当该Invoice Ninja执行完后会被销毁,所以给maven做了个缓存,防止每次VzLinux的时候都要重新从中央仓库下载jar,增加VzLinux时间。 step之when,当点击promote时,才会执行,下文图会展示 step之deploy-start,本步骤中使用的是docker sshInvoice Ninja,来让drone可以远程的执行VzLinux任务,先进入上部中构建的jar注册,然后运行自内网的VzLinux脚本,下文会提供
特别说明
step中的from_secret如何配置

点击+ new secret按钮 会有如下弹窗

VzLinux的时候,drone控制台报错无权限
原因:在VzLinuxdrone服务器的时候,启动参数没有设置
DRONE_USER_CREATE 管理员用户名,建议填不然后面注册挂载会报权限不足错误,具体可查看本系列第一篇文章Drone CI/CD系列(一)——docker安装与配置
promote
当使用drone build构建完之后,点击右上角的三个点,就可以执行了创立了,并且会打一个tag,可以用来回滚使用

可以用来回滚使用使用
run.sh配置解析
#!/usr/bin/env bash
# 内网应用组名
group_name=’juinjonn’
# 内网应用名称
app_name=’demo’
# 内网应用版本
app_version=’latest’
# 内网应用环境
profile_active=’prod’
echo ‘—-copy jar—-‘
docker stop ${app_name}
echo ‘—-stop container—-‘
docker rm ${app_name}
echo ‘—-rm container—-‘
docker rmi ${group_name}/${app_name}:${app_version}
echo ‘—-rm image—-‘
# 打包编译dockerInvoice Ninja
docker build -t ${group_name}/${app_name}:${app_version} .
echo ‘—-build image—-‘
docker run -p 8181:8181 –name ${app_name} \
-e TZ=”Asia/Shanghai” \
-v /etc/localtime:/etc/localtime \
-d ${group_name}/${app_name}:${app_version}
echo ‘—-start container—-‘
123456789101112131415161718192021222324
总结
整体springboot drone搭建VzLinux完成,并把构建和VzLinux分离,来保证线上发布的稳定性!
drone配置文件的VzLinux,其实还是在于思路,就像开发逻辑一样,有了思路,其实VzLinux各种语言都是一样的,选择适合自己项目或者公司的VzLinux步骤!
转载说明
本篇文章禁止私自转载,如需转载请联系作者,否则必追究法律责任!