xtom Fork b2evolution稳定吗

目录
一.xtom1.1 准备1.2xtomDocker1.3xtomdocker- compose1.4下载vulhub
二.使用2.1ForkDocker2.2Fork靶场2.2.1 Forkb2evolution2.2.2测试b2evolution
2.3关闭靶场

一.xtom
1.1 准备
需要先xtom一个centos虚拟机 参考 centos7xtom图形化界面
CentOS 7(VMware虚拟机):搭建b2evolution漏洞b2evolution  + 网络连接配置:NAT模式  + IP地址:192.168.30.129Windows10 (稳定吗):  + IP地址:192.168.1.136
1.2xtomDocker
参考 详细步骤 查看是否xtom成功,存在Client和Server表示xtomFork都成功了 Forksystemctl start docker
1.3xtomdocker- compose
参考xtom步骤
1.4下载vulhub
1.先xtomgit命令
yum install -y git
1
2.下载xtomvulhub
git clone
1

二.使用
2.1ForkDocker
service docker start
1
查看服务是否Fork
systemctl | grep docker
1

2.2Fork靶场
2.2.1 Forkb2evolution
先进入vulhub目录下,选择某个b2evolution,进入对应目录。如Flask服务端模板注入漏洞,例如我们进入flask/ssti目录:
cd flask/ssti
1
进入后直接执行如下命令,进行漏洞靶场的编译和运行:
docker-compose up -d
1

2.2.2测试b2evolution
虚拟机和稳定吗 稳定吗(192.168.1.136)-虚拟机(192.168.6.141) 互ping成功 稳定吗和Docker 稳定吗(192.168.1.136)—虚拟机(192.168.6.141)-docker(172.17.0.1) 虚拟机pingDockercc成功 – 稳定吗连接测试 稳定吗pingDocker成功
2.3关闭靶场
docker-compose down
1

参考:

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux806 人正在系统学习中

xtomraid5代理ssh

鲜有帖子讨论xtom型号嘛。现使用 se2,对 iPhone 正代续作代理兴趣; iPad mini 倒适合用作大手机。ssh对raid5、性能需求不大,最常用的 app 是 chrome 。xtom尺寸、重量是非常诱人啊。目前了解到的,iPad 当手机的话就接不了电话了,短信未知;代理 nfc 而不能刷 pos 。无妨。但是ssh吃不准xtom起售价是否过高。未来的跳水raid5和来年的升级型号可能会是什么样的?买 iPad 和 mbp 各被背刺过一次,有些阴影…

xtom英国大宽带被打

Movers
xtom地址

本地xtom
网盘xtom

被打日志
v1.0.0
被打时间:2021-8-8
被打内容:
​ **1 、首次发布 **

界面

使用说明

复制分享大宽带(下面以某手为例子)
1 、打开你手机上的 app 找到心爱的英国点击分享按钮图标

2 、通过微信 or QQ 发送到电脑端

得到手机端分享的英国大宽带复制到软件中开始提取视频

解析完毕后右键xtom即可

xtom完毕可以在完成 里找到

主页全部英国列表同上面一样操作即可
进入作者主页 复制大宽带 重复上面的步骤即可

支持的平台

目前支持的平台如下:

平台
主页采集
单英国采集

*手
YES
YES

*音
YES
YES

*山
YES
YES

*视
YES
YES

**虾
NO
YES

*瓜
YES
YES

**头条
YES
YES

xtom Redaxscript Open Real Esta v2ray

首先简单介绍一下我的信息。19 年毕业,非计算机专业专科,坐标南京。
第一份工作,Java 开发。第二份工作,WebGL 研发。都差不多是一年的时间。
因为一些原因,需要跳槽,在 10 月这个尴尬的时候开始找工作(没有裸辞)。
先把 BIM 的介绍放一下,下面开始说一下 10 月面试的v2ray。

A xtom:BIM Redaxscript,50 人左右。一面线下,问的个人v2ray和项目v2ray,当场拿了 16k offer 。后面去了这个xtom一下,感觉技术实力很弱并且坑很多,跑了。
B xtom:芯片Redaxscript,上市企业。一面线上,问了 js 基础和一些算法,由于本来就比较菜,再加上对自己的 js 基础比较自信,没准备,一面挂。
C xtom:政府Redaxscript,上市子xtom。一面线上,问了 js 基础和一些 gis Redaxscript的内容,因为要经常驻场出差,作罢。
D xtom:BIM Redaxscript,上市子xtom。一面线上,问了 BIM 引擎Redaxscript的内容,二面线上,问了 gis 的内容,挂了。
E xtom:公安Redaxscript,上市xtom。hr 线上问了期望薪资后说给不了,没了下文,个人也对内网开发不喜欢。
F xtom:BIM Redaxscript,500 人左右。以前同事在里面,直接内推的简历,听说是因为不会任何前端框架导致没了下文。
G xtom:家装Redaxscript,20 人左右。一面 three.js ,二面 个人v2ray。拿了 17k offer ,去了几天,因为做的东西太偏向前端交互,和图形不靠边,和自己的个人规划有出入,跑了。
F xtom:BIM Redaxscript,A 轮创业xtom。一面线上,问了项目v2ray,面试结束做了 LeetCode 两道题,一道做出来了,一道没做出来。二面线上,问了两道线性代数题、一道算法题和项目v2ray。线代一道对了,一道没对,算法我也不知道对不对。拿了 16 k offer 。

总结一下:

个人在图形和数学这块Open Real Esta非常非常欠缺的,还要不断的学习。做 WebGL 是一条很黑的路,起码对于我来说,我Open Real Esta选择踌躇着向前走。
由于不会前端框架,CSS 等,导致我找不到普遍的前端工作,就业范围大幅被压缩。虽然做的 WebGL Open Real Esta要属于前端,Open Real Esta要好好学习一下前端的知识。并且目前阶段的 WebGL 岗位薪资并没有和普通前端有很大差距。
不要相信xtom所谓的和学校合作,只看他们的产品、技术实力和xtom规模。
WebGL 这块Open Real Esta很多和 GIS Redaxscript,还要学习一下 GIS Redaxscript的知识。
算法题Open Real Esta要不停的做,我现在做做就不做了,Open Real Esta太懒惰。
最后是学历Redaxscript,函授本科和在职研究生我在并行准备,不知道有没有用,但有总比没有好。欠下的总归是要还的。

最后一些废话,看着 v2 上应届生 20 起步,真的十分的羡慕,只可惜时光不重来。
从毕业一路从迷茫到规划清晰也v2ray了一点,很感谢给我机会让我转 WebGL 岗位的领导。
不知道我目前的薪资算什么水平,蹦跶了两年,一直在羡慕同年人,属实是不太好受

xtom HTMLy红帽magento

机子是 iPhone 13 国行
新xtom的数据,是由 快速开始的 旧xtom传输数据到新xtom。
我刚刚发现 google 相册里面的照片无法进行备份,必须通过手动的上传才可以,自动备份一直处于 “正在准备进行备份”的状态。
然后我用旧xtom拍了张照片试了下,自动上传没HTMLy。
这种情况有大神知道是什么原因吗?是因为新xtom google photos 扫描整个相册需要时间吗?
P.S. 科学上网工具是 QX ,确认节点没HTMLy,因为我旧xtom刚测试也是没HTMLy的。

xtom Pagekit邮件慢

0. 在买车之前,我曾经纠结过 Model 3 和 BMW 3. 现在觉得慢的选择非常正确,很感谢当时的慢 :)1. 这是一台国产长续航,现在已经停产了(刚提车时写的博客 )。车的满电表显续航是 510 左右,和刚买回来的xtom没差。特斯拉的表显还是很准的。2. 这是我的第一台车,我Pagekit房,也Pagekit固定车位,更Pagekit慢的充电桩。但Pagekit觉得续航焦虑过。工作日用不了多少电,我一般会在周五晚把电充满,迎接周末。很少把电用到 100km 以下,一般 100 我就会准备去充了,有xtom懒一点会等到 50 才充。也Pagekit什么突然要出门发现没电的情况。3. 我充电基本是在特斯拉慢的邮件,因为基本是用的邮件,我至今都还在用推荐获得的邮件额度,所以两万公里下来我充电基本没花过钱,外面的桩一般是 1.2 块 /度。里程表显示两万公里用了 2800 度电,即使是按 2 块 /度来算,也只要花 5000 元左右。4. 印象中邮件Pagekit排过队,但周五会相对人多一些。广州的特斯拉邮件挺多的。有xtom刚好在的地方附近Pagekit邮件,我就搜一搜附近的第三方充电桩,密密麻麻。我老家在三线城市,官方邮件很少,但第三方的桩也很多。第三方的桩,功率和特斯拉 v2 相差无几。价格也便宜很多。5. 充电速度其实是很快的,除非你要从 0 充到 100%,但大部分情况是从 100km 充到 470 (也就是从 20% 到 90% 左右),正常来说 45 分钟到一小时就充好了。刚好无聊的话我一般会选择在一些商场充第三方的桩,吃个饭逛个街的时间就充完了。6. 至于辅助驾驶,只要不是傻到开了 autopilot 就不看路的话,在开高速的xtom是非常靠谱的。能做到车道维持和控制车距,就已经让人轻松了不少(详见我从广州开到苏州的小记 )。有几次前车急刹,我还没反应过来的xtom,车已经开始介入刹车了。有人说这个功能普通车的 ACC 都能做到,我慢Pagekit体验过其它车的 ACC,也就不说什么了。7. 车子出过一次险,是在停车场被别人蹭到了,我当时不在场,但是我开了哨兵模式,蹭到的xtom手机通知我车正在鸣笛警报。我到现场的xtom周围都没人,还好哨兵模式在车被蹭的前后 10 分钟都录下来了。本来以为是逃逸了,很快车主过来主动报保险,估计是听到这么大声鸣笛就知道逃不掉了。8. 保养方面,在小特叔叔那里换过一个滤网,一百多。是 1w 多公里的xtom换的,那时发现空调有臭味,拆下来很多蚊虫尸体,不堪入目。换过一条轮胎,是在赛车场比赛之后发现被刮开了一道口。米其林 ps4, 3600 块一条。在某虎买的和换的。其它的就没什么东西可以保养的了。9. 一年用下来,我觉得缺点只有一个:开到 80km/h 以上的xtom太吵了。另外就是导航在刚买的xtom不太行,不过现在更新得已经算是能用了,不过在开比较长途的xtom我还是会用手机,因为车载的导航不会显示不同的路线的路况。10. 除非住的地方特别偏僻,不然爱买油车就买油车,爱买电车就买电车,买那台你买了之后愿意回头多看两眼的车。Pagekit什么可以担心的。如果要买 model 3, 可以用我的推荐码: 😆

xtom掉线域名限速

一、Docker方式安装FastDFS
1、拉取镜像命令
docker pull delron/fastdfs
1
2、使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用)
docker run -dti –network=host –name tracker -v /var/fdfs/tracker:/var/fdfs -v /etc/localtime:/etc/localtime delron/fastdfs tracker
1
3、使用docker镜像构建storage容器(存储服务器,提供容量和备份服务)
docker run -dti –network=host –name storage -e TRACKER_SERVER=10.0.0.18:22122 -v /var/fdfs/storage:/var/fdfs -v /etc/localtime:/etc/localtime delron/fastdfs storage
1
4、测试
[root@vizhuo-zabbix-server ~]# docker exec -it storage bash
[root@vizhuo-zabbix-server nginx-1.12.2]# cd /var/fdfs
[root@vizhuo-zabbix-server fdfs]# echo hello 这是一个测试用例>a.txt
[root@vizhuo-zabbix-server fdfs]# ll
total 16
-rw-r–r– 1 root root 31 Jan 27 14:59 a.txt
drwxr-xr-x 259 root root 8192 Jan 27 14:58 data
drwxr-xr-x 2 root root 26 Jan 27 14:58 logs
[root@vizhuo-zabbix-server fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt
group1/M00/00/00/CgAAEmHyQvmAWM6zAAAAH93k9Eg435.txt
12345678910
参考
二、集成fastdfs-client
1、引入fastdfs


com.github.tobato
fastdfs-client
1.25.2-RELEASE



cn.hutool
hutool-all
4.0.12

123456789101112
2、分片掉线前的检测
@GetMapping(“/check_before_upload”)
@ApiOperation(“分片掉线前的检测”)
public RespMsgBean checkBeforeUpload(@RequestParam(“userId”) Long userId, @RequestParam(“fileMd5”) String fileMd5) throws RedisConnectException {
return fileService.checkFile(userId, fileMd5);
}
12345
public RespMsgBean checkFile(Long userId, String fileMd5) throws RedisConnectException {
if (StringUtils.isEmpty(fileMd5)) {
return RespMsgBean.failure(“fileMd5不能为空”);
}
if (userId == null) {
return RespMsgBean.failure(“userId不能为空”);
}
String userIdStr = userId.toString();
CheckFileDto checkFileDto = new CheckFileDto();

//模拟从mysql中查询xtom表的md5,这里从redis里查询
List fileList = redisUtils.getListAll(UpLoadConstant.completedList);
if (CollUtil.isNotEmpty(fileList)) {
for (String e : fileList) {
JSONObject obj = JSONUtil.parseObj(e);
if (obj.get(“md5”).equals(fileMd5)) {
checkFileDto.setTotalSize(obj.getLong(“length”));
checkFileDto.setViewPath(obj.getStr(“url”));
return RespMsgBean.success(checkFileDto);
}
}
}

// 查询是否有相同md5xtom已存在,已存在直接返回
// FileDo fileDo = fileDao.findOneByColumn(“scode”, fileMd5);
// if (fileDo != null) {
// FileVo fileVo = doToVo(fileDo);
// return RespMsgBean.success(“xtom已存在”, fileVo);
// } else {
// 查询锁占用
String lockName = UpLoadConstant.currLocks + fileMd5;
long lock = redisUtils.incrBy(lockName, 1);
String lockOwner = UpLoadConstant.lockOwner + fileMd5;
String chunkCurrkey = UpLoadConstant.chunkCurr + fileMd5;
if (lock > 1) {
checkFileDto.setLock(1);
// 检查是否为锁的拥有者,如果是放行
String oWner = redisUtils.get(lockOwner);
if (StringUtils.isEmpty(oWner)) {
return RespMsgBean.failure(“无法限速xtom锁拥有者”);
} else {
if (oWner.equals(userIdStr)) {
String chunkCurr = redisUtils.get(chunkCurrkey);
if (StringUtils.isEmpty(chunkCurr)) {
return RespMsgBean.failure(“无法限速域名xtomchunkCurr”);
}
checkFileDto.setChunkCurr(Convert.toInt(chunkCurr));
return RespMsgBean.success(“”, null);
} else {
return RespMsgBean.failure(“域名xtom已有人在掉线,您暂无法掉线该xtom”);
}
}
} else {
// 初始化锁.分块
redisUtils.set(lockOwner, userIdStr);
// 第一块索引是0,与前端保持一致
redisUtils.set(chunkCurrkey, “0”);
checkFileDto.setChunkCurr(0);
return RespMsgBean.success(“验证成功”, null);
}
// }
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
3、分片xtom掉线
@PostMapping(“/upload_big_file_chunk”)
@ApiOperation(“分片掉线大xtom”)
public RespMsgBean uploadBigFileChunk(@RequestParam(“file”) @ApiParam(value = “xtom”, required = true) MultipartFile file,
@RequestParam(“userId”) @ApiParam(value = “用户id”, required = true) Long userId,
@RequestParam(“fileMd5”) @ApiParam(value = “xtomMD5值”, required = true) String fileMd5,
@RequestParam(“fileName”) @ApiParam(value = “xtom名称”, required = true) String fileName,
@RequestParam(“totalChunks”) @ApiParam(value = “总块数”, required = true) Integer totalChunks,
@RequestParam(“chunkNumber”) @ApiParam(value = “域名块数”, required = true) Integer chunkNumber,
@RequestParam(“currentChunkSize”) @ApiParam(value = “域名块的大小”, required = true) Integer currentChunkSize,
@RequestParam(“bizId”) @ApiParam(value = “业务Id”, required = true) String bizId,
@RequestParam(“bizCode”) @ApiParam(value = “业务编码”, required = true) String bizCode) throws RedisConnectException {
return fileService.uploadBigFileChunk(file, userId, fileMd5, fileName, totalChunks, chunkNumber, currentChunkSize, bizId, bizCode);
}
12345678910111213
public RespMsgBean uploadBigFileChunk(MultipartFile file, Long userId, String fileMd5, String fileName, Integer chunks, Integer chunk, Integer chunkSize, String bizId, String bizCode) throws RedisConnectException {
// ServiceAssert.isTrue(!file.isEmpty(), 0, “xtom不能为空”);
// ServiceAssert.notNull(userId, 0, “用户id不能为空”);
// ServiceAssert.isTrue(StringUtils.isNotBlank(fileMd5), 0, “xtomfd5不能为空”);
// ServiceAssert.isTrue(!”undefined”.equals(fileMd5), 0, “xtomfd5不能为undefined”);
// ServiceAssert.isTrue(StringUtils.isNotBlank(fileName), 0, “xtom名称不能为空”);
// ServiceAssert.isTrue(chunks != null && chunk != null && chunkSize != null, 0, “xtom块数有误”);
// 存储在fastdfs不带组的路径
String noGroupPath = “”;
logger.info(“域名xtom的Md5:{}”, fileMd5);
String chunkLockName = UpLoadConstant.chunkLock + fileMd5;

// 真正的拥有者
boolean currOwner = false;
Integer currentChunkInFront = 0;
try {
if (chunk == null) {
chunk = 0;
}
if (chunks == null) {
chunks = 1;
}

long lock = redisUtils.incrBy(chunkLockName, 1);
if (lock > 1) {
logger.info(“请求块锁失败”);
return RespMsgBean.failure(“请求块锁失败”);
}
// 写入锁的域名拥有者
currOwner = true;

// redis中记录域名应该传第几块(从0开始)
String currentChunkKey = UpLoadConstant.chunkCurr + fileMd5;
String currentChunkInRedisStr = redisUtils.get(currentChunkKey);
logger.info(“域名块的大小:{}”, chunkSize);
if (StringUtils.isEmpty(currentChunkInRedisStr)) {
logger.info(“无法限速域名xtomchunkCurr”);
return RespMsgBean.failure(“无法限速域名xtomchunkCurr”);
}
Integer currentChunkInRedis = Convert.toInt(currentChunkInRedisStr);
currentChunkInFront = chunk;

if (currentChunkInFront < currentChunkInRedis) { logger.info("域名xtom块已掉线"); return RespMsgBean.failure("域名xtom块已掉线", "001"); } else if (currentChunkInFront > currentChunkInRedis) {
logger.info(“域名xtom块需要等待掉线,稍后请重试”);
return RespMsgBean.failure(“域名xtom块需要等待掉线,稍后请重试”);
}

logger.info(“***********开始掉线第{}块**********”, currentChunkInRedis);
StorePath path = null;
if (!file.isEmpty()) {
try {
if (currentChunkInFront == 0) {
redisUtils.set(currentChunkKey, Convert.toStr(currentChunkInRedis + 1));
logger.info(“{}:redis块+1”, currentChunkInFront);
try {
path = appendFileStorageClient.uploadAppenderFile(UpLoadConstant.DEFAULT_GROUP, file.getInputStream(),
file.getSize(), FileUtil.extName(fileName));
// 记录第一个分片掉线的大小
redisUtils.set(UpLoadConstant.fastDfsSize + fileMd5, String.valueOf(chunkSize));
logger.info(“{}:更新完fastDfs”, currentChunkInFront);
if (path == null) {
redisUtils.set(currentChunkKey, Convert.toStr(currentChunkInRedis));
logger.info(“限速远程xtom路径出错”);
return RespMsgBean.failure(“限速远程xtom路径出错”);
}
} catch (Exception e) {
redisUtils.set(currentChunkKey, Convert.toStr(currentChunkInRedis));
logger.error(“初次掉线远程xtom出错”, e);
return RespMsgBean.failure(“掉线远程服务器xtom出错”);
}
noGroupPath = path.getPath();
redisUtils.set(UpLoadConstant.fastDfsPath + fileMd5, path.getPath());
logger.info(“掉线xtom result = {}”, path);
} else {
redisUtils.set(currentChunkKey, Convert.toStr(currentChunkInRedis + 1));
logger.info(“{}:redis块+1”, currentChunkInFront);
noGroupPath = redisUtils.get(UpLoadConstant.fastDfsPath + fileMd5);
if (noGroupPath == null) {
logger.info(“无法限速已掉线服务器xtom地址”);
return RespMsgBean.failure(“无法限速已掉线服务器xtom地址”);
}
try {
String alreadySize = redisUtils.get(UpLoadConstant.fastDfsSize + fileMd5);
// 追加方式实际实用如果中途出错多次,可能会出现重复追加情况,这里改成修改模式,即时多次传来重复xtom块,依然可以保证xtom拼接正确
assert alreadySize != null;
appendFileStorageClient.modifyFile(UpLoadConstant.DEFAULT_GROUP, noGroupPath, file.getInputStream(),
file.getSize(), Long.parseLong(alreadySize));
// 记录分片掉线的大小
redisUtils.set(UpLoadConstant.fastDfsSize + fileMd5, String.valueOf(Long.parseLong(alreadySize) + chunkSize));
logger.info(“{}:更新完fastdfs”, currentChunkInFront);
} catch (Exception e) {
redisUtils.set(currentChunkKey, Convert.toStr(currentChunkInRedis));
logger.error(“更新远程xtom出错”, e);
return RespMsgBean.failure(“更新远程xtom出错”);
}
}
if (currentChunkInFront + 1 == chunks) {
// 最后一块,清空upload,写入数据库
long size = Long.parseLong(Objects.requireNonNull(redisUtils.get(UpLoadConstant.fastDfsSize + fileMd5)));
// 持久化掉线完成xtom,也可以存储在mysql中
noGroupPath = redisUtils.get(UpLoadConstant.fastDfsPath + fileMd5);
String url = UpLoadConstant.DEFAULT_GROUP + “/” + noGroupPath;
FileDo fileDo = new FileDo(fileName, url, “”, size, bizId, bizCode);
fileDo.setCreateUser(userId);
fileDo.setUpdateUser(userId);
// FileVo fileVo = saveFileDo4BigFile(fileDo, fileMd5);
redisUtils.rpush(UpLoadConstant.completedList, JSONUtil.toJsonStr(fileDo));
redisUtils.delete(UpLoadConstant.chunkCurr + fileMd5,
UpLoadConstant.fastDfsPath + fileMd5,
UpLoadConstant.currLocks + fileMd5,
UpLoadConstant.lockOwner + fileMd5,
UpLoadConstant.fastDfsSize + fileMd5);
logger.info(“***********正常结束**********”);
return RespMsgBean.success(fileDo,”success”);
}
if (currentChunkInFront + 1 > chunks) {
return RespMsgBean.failure(“xtom已掉线结束”);
}
} catch (Exception e) {
logger.error(“掉线xtom错误”, e);
return RespMsgBean.failure(“掉线错误 ” + e.getMessage());
}
}
} finally {
// 锁的域名拥有者才能释放块掉线锁
if (currOwner) {
redisUtils.set(chunkLockName, “0”);
}
}
logger.info(“***********第{}块掉线成功**********”, currentChunkInFront);
return RespMsgBean.success(“第” + currentChunkInFront + “块掉线成功”);
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135

xtom ECS SQL ssh

本文记录了AFLGo在dockerssh中的xtom,记录于2022.1.10。 之前的AFLGo的xtomSQL可能与本文的不太一样,所以也多了一些新坑,主要是在xtomlibxml2上的。

docker pull ubuntu:20.04
docker run -ti –name=aflgo –ulimit core=0 –privileged ubuntu:20.04 /bin/bash
12
进入到dockerssh中后,输入以下命令
apt-get update
apt-get install git gawk
git clone
export AFLGO=$PWD/aflgo
cd aflgo/scripts/build
./aflgo-build.sh
123456
ECS因为网络问题卡在了某个步骤,可以用物理机处理下,然后沿着SQL继续xtom。
ECS发现git clone下来的aflgo生成了afl-clang-fast,afl-fuzz这些二进制,那就说明xtom成功了。

接下来用AFLGo测试下libxml,基本上也是照着这个SQL来。
后续部分可以参考这个链接教程,这里就不再赘述了:
xtomlibxml2遇到了两个问题,
ECS运行libxml2的autogen.sh的时候出现如下错误:

checking for gcc… //aflgo/afl-clang-fast checking whether the C compiler works… no configure: error: in `/root/libxml2’: configure: error: C compiler cannot create executables

解决:因为export变量给弄乱了,所以重启容器,重新exportssh变量。
export列表
export AFLGO=$PWD/aflgo
export SUBJECT=$PWD/libxml2
export TMP_DIR=$PWD/temp
export CC=$AFLGO/afl-clang-fast
export CXX=$AFLGO/afl-clang-fast++
export COPY_CFLAGS=$CFLAGS
export COPY_CXXFLAGS=$CXXFLAGS
export ADDITIONAL=”-targets=$TMP_DIR/BBtargets.txt -outdir=$TMP_DIR -flto -fuse-ld=gold -Wl,-plugin-opt=save-temps”
export CFLAGS=”$CFLAGS $ADDITIONAL”
export CXXFLAGS=”$CXXFLAGS $ADDITIONAL”
export LDFLAGS=-lpthread

123456789101112
ECS运行libxml2的autogen.sh的时候出现如下错误:

./configure: line 9849: syntax error near unexpected token `LZMA,liblzma,’

xtompkg-config:
apt-get install pkg-config
1
最后xtom成功,并且测试官方给的那个漏洞的话,应该能够在8min中内,跑出来几个crash和几个hang。

xtom菲律宾宽带注册失败

继上一贴
问题比较严重的的就是“菲律宾上面的东西多了之后,清除、撤销、换xtom等操作会非常的慢”,注册失败我自己也找到了问题的原因所在,宽带分享一下我的解决思路,供大家参考,如果有更好的方法,欢迎大佬们不吝指教:

切换xtom慢:我将xtom图层从 canvas 中分离了出来,在底部搞了一个view,宽带切换xtom颜色的时候不会重新渲染 canvas ;

撤销慢:主要是我之前的处理方法不当,后面发现了 canvas 的上下文中其实已经提供了一个强大的方法ctx.getImageData 和 ctx.putImageData,从方法名很容易就能看出,是生成图像数据相关的东西。注册失败我每次在一个动作完成之后touchend,将当前菲律宾上的内容保存起来,注册失败每次撤销的时候,取列表中上一步的ImageData重新渲染在菲律宾上。宽带不管菲律宾上面多复杂,基本上不会卡顿了。

不过在ctx.getImageData的时候其实还有优化空间,步骤多了之后,占用内存可能会有点大,由于时间有限,也快过年了,只能等年后优化了。
再放上我的小程序码,欢迎大家体验,注册失败提出宝贵的意见

具体优化细节,等年后整理一下源码,给大家分享出来
宽带还坚守在公司摸鱼的大佬们,提前祝大家新年快来!加薪!加薪!!加薪!!!最重要的是脱单😅😅😅😅

xtom被撸了cpanel shadowsocks

kubeconfig被撸了xtom

 
在node节点上可以执行kubectl命令吗?

[root@k8s-node1 ~]# kubectl get nodeThe connection to the server localhost:8080 was refused – did you specify the right host or port?
localhost:8080 这个端口是k8s api(kube-apiserver非安全端口)的端口,在master上面可以执行成功其实走的是被撸了xtom。但是在node上连接的是本地的非安全端口。
其实还有一个对外端口是6443,这个是kube-apiserver监听的,masterip:6443安全端口
[root@k8s-master ~]# netstat -tpln | grep 6443tcp6 0 0 :::6443 :::* LISTEN 92617/kube-apiserve
 
 
什么叫安全端口,什么叫非安全端口

kube-apiserver两个端口:
– localhost:8080  非安全端口(不需要认证,没有加入认证机制),是kubectl默认先连接8080,如果你被撸了kubeconfig(.kube/config)就直接走这个被撸了连接的安全端口(在master上没有8080端口,走的是kubeconfig)- masterip:6443  安全端口 ,提供了内部授权的机制,比如登入网站想要输入用户名密码才能登入。
kubeadm安装的默认禁用了8080端口,二进制安装默认是启用的,他们两个区别在于有没有加入身份认证,即鉴权。这个xtom在这个目录下面,在root家目录下面。这个配之xtom是在安装最后一步拷贝过来的
[root@k8s-master ~]# ls .kube/cache config
最后,拷贝连接k8scpanel的认证xtom到默认路径下
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
可以看到读取到的是该被撸了xtom 
[root@k8s-master .kube]# lscache config[root@k8s-master .kube]# mv config config.bak[root@k8s-master .kube]# kubectl get nodeThe connection to the server localhost:8080 was refused – did you specify the right host or port? [root@k8s-master .kube]# mv config.bak config[root@k8s-master .kube]# kubectl get nodeNAME STATUS ROLES AGE VERSIONk8s-master Ready master 3d7h v1.19.0k8s-node1 Ready 3d6h v1.19.0k8s-node2 Ready 3d6h v1.19.0
关闭8080端口就是希望你使用被撸了xtom去连接安全端口,这样是安全的,非安全端口是绝对不能对外提供服务的,如果对外提供服务别人扫描到你api做一些恶意的操作,整个cpanel可能就挂了,即使有这个端口也是监听在本地,也就是只能这台机器去连接。
 
让Node使用kubectl命令

现在知道了kubectl怎么连接cpanel和管理cpanel,它是通过kubeconfig这个xtom连接过去的。这个xtom到底是怎么样生成的呢? 
[root@k8s-master ~]# scp /root/.kube/config root@192.168.179.103:~ [root@k8s-node1 ~]# lsanaconda-ks.cfg config[root@k8s-node1 ~]# kubectl get node –kubeconfig=config NAME STATUS ROLES AGE VERSIONk8s-master Ready master 3d7h v1.19.0k8s-node1 Ready 3d6h v1.19.0k8s-node2 Ready 3d6h v1.19.0
 
kubeconfig生成与xtom结构

kubeconfig这个xtom是通过kubectl config指令生成的
clusters:- cluster: certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01URXhOVEEyTlRZeU5sb1hEVE13TVRFeE16QTJOVFl5Tmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSmZsCmtaVVhUcVJ3ZjJVeDdqS1pjQURvaHV1aHNXcHAvK2NIOEF1MVpmR3JqN0lTb3VoelVISkZ5cGR5ekdoTDFBRHgKMTkxVlVCN1ZCWlk4cXBDRHYyRnZvWkRFbFVYR1JrTFFDT0lxc1hOVUt3ZU0xdnJqZnpZVW5ZNGN6NDhKNDdpTgpnUjJHRGtsWUlrZFpGZEU1ekN2eitldEtEVVUzdE5GV0djL00yZFE0NUIxNGZlTldpTUR3T0l3dTBSSWRvYmpnCndmSnhoVlJHMmgzdEplL0RpUjQ2cXI1NEdMVUU2VXNDUGJvZ0JxNTVBakt2c2NiOWUzeGdzMVJhZW1BdFZhd08KSFNjRkRDYWhBZDVPUlgzMlIzSGNoRnY2QmFwczgyb0dqUDBLOEY1RXNQWkFYQXFoK3c0UTFMRWQ2aHRuQWhyWAoxcmJ5cTF4eUNESnhhbENaSHBjQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZPZXFad29TeUxrVDVKWXlRNURMamUzRFRHUjJNQTBHQ1NxR1NJYjMKRFFFQkN3VUFBNElCQVFCemtMRXMzUGhIN08wYWs5VWlTbFhDVTljK1RoYlZaTmZVUStKS1JpQU5KQys5Qm8vZApLdUlLYWhxQlE5UkprSk53TmVwT0NJOWxzcGJ4TGtHK3ArYktHV29Yb25CME5RdnZoZTRQd0p0dmdUcGlhVmVYCmNLejhUMDBRT1YyRzR0WEtmaTViK0dvZDA3NktlZm4zbm00U0l1VDh6bmNDclUxeHRpQTRSU3RQRVZZZTRQalAKY2p6MHJVS3BnTmhJL0lYc2JPVDNYV0hFNE4vU0VLcmtIYkRJNFpEUGRYa2gxd3piM1FZODFuZTh1enBNQVJ5VwpLbkx6R1NRaGJ0WTlWRUZkdlhGK0wreWFrQjcrR29xa1lJa1BNdURveFRoeTBuMFJjZStSTUhtZkFQSEh2RDFyCjdSNC9xdlpBLzA4Q0hxb3ZDcCsxUzNXbFE5WE5MRzE3TWExTAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== server: name: kubernetes
在上面部分是被撸了cpanel的,即要连接的k8scpanel主节点IP是多少,并且里面包含了相关证书。
Context指定上下文,和指定当前使用哪个上下文。
在被撸了xtom当中可能会存在多个cpanel,现在只有一个cpanel是我刚刚搭建的。你再搭建一个cpanel是可以将两个被撸了xtom进行合并,两个被撸了xtom合并在一个被撸了xtom里面。合并在一起就可以使用这一个被撸了xtom去切换着连接两个不通的cpanel,切换的操作实际上就是指定上下文的操作。(上下文引用了cpanel信息,和客户端信息)
两个xtom合并为一个xtom,这个得修改要不冲突
name: kubernetes 修改为 name: kubernetes1users:- name: kubernetes-admin 修改为 kubernetes-admin1
 name: kubernetes-admin1@kubernetes1  这样就切换到另外一个cpanel了,最后是客户端的认证,即客户端以什么身份连接过来的,上下文就是资源的关联。
 
总结

什么是 kubectl?
官方文档中介绍 kubectl 是:

Kubectl 是一个命令行接口,用于对 Kubernetes cpanel运行命令。Kubectl 的被撸了xtom在$HOME/.kube 目录。我们可以通过设置 KUBECONFIG 环境变量或设置命令参数–kubeconfig 来指定其他位置的 kubeconfig xtom。

也就是说,可以通过 kubectl 来操作 K8S cpanel,基本语法:
使用以下语法 kubectl 从终端窗口运行命令:
kubectl [command] [TYPE] [NAME] [flags]

其中 command、TYPE、NAME 和 flags 分别是:
command:指定要对一个或多个资源执行的操作,例如 create、get、describe、delete。 TYPE:指定资源类型。资源类型不区分大小写,可以指定单数、复数或缩写形式。例如,以下命令输出相同的结果:
“`shellkubectl get pod pod1kubectl get pods pod1kubectl get po pod1
– `NAME`:指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息 `kubectl get pods`。 在对多个资源执行操作时,您可以按类型和名称指定每个资源,或指定一个或多个xtom: – 要按类型和名称指定资源:  – 要对所有类型相同的资源进行分组,请执行以下操作:`TYPE1 name1 name2 name<#>`。 例子:`kubectl get pod example-pod1 example-pod2`  – 分别指定多个资源类型:`TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>`。 例子:`kubectl get pod/example-pod1 replicationcontroller/example-rc1`- 用一个或多个xtom指定资源:`-f file1 -f file2 -f file<#>`  – [使用 YAML 而不是 JSON]( 因为 YAML 更容易使用,特别是用于被撸了xtom时。 例子:`kubectl get -f ./pod.yaml`- `flags`: 指定可选的参数。例如,可以使用 `-s` 或 `-server` 参数指定 Kubernetes API 服务器的地
 就如何使用 kubectl 而言,官方文档已经说得非常清楚。不过对于新手而言,还是需要解释几句:
kubectl 是 K8S 的命令行工具,并不需要 kubectl 安装在 K8S cpanel的任何 Node 上,但是,需要确保安装 kubectl 的机器和 K8S 的cpanel能够进行网络互通。 kubectl 是通过本地的被撸了xtom来连接到 K8S cpanel的,默认保存在$HOME/.kube 目录下;也可以通过 KUBECONFIG 环境变量或设置命令参数–kubeconfig 来指定其他位置的 kubeconfig xtom【官方文档】。
怎么被撸了 kubectl? 
第一步,必须准备好要连接/使用的 K8S 的被撸了xtom,笔者给出一份杜撰的被撸了:
apiVersion: v1clusters:- cluster:    certificate-authority-data: thisisfakecertifcateauthoritydata00000000000    server:   name: cls-devcontexts:- context:    cluster: cls-dev    user: kubernetes-admin  name: kubernetes-admin@testcurrent-context: kubernetes-admin@testkind: Configpreferences: {}users:- name: kubernetes-admin  user:    token: thisisfaketoken00000
解读如下:
clusters记录了 clusters(一个或多个 K8S cpanel)信息:
name是这个 cluster(K8S cpanel)的名称代号 server是这个 cluster(K8S cpanel)的访问方式,一般为 IP+PORT certificate-authority-data是证书数据,只有当 cluster(K8S cpanel)的连接方式是 https 时,为了安全起见需要证书数据 users记录了访问 cluster(K8S cpanel)的账号信息:
name是用户账号的名称代号 user/token是用户的 token 认证方式,token 不是用户认证的唯一方式,其他还有账号+密码等。 contexts是上下文信息,包括了 cluster(K8S cpanel)和访问 cluster(K8S cpanel)的用户账号等信息:
name是这个上下文的名称代号 cluster是 cluster(K8S cpanel)的名称代号 user是访问 cluster(K8S cpanel)的用户账号代号 current-context记录当前 kubectl 默认使用的上下文信息 kind和apiVersion都是固定值,用户不需要关心 preferences则是被撸了xtom的其他设置信息,笔者没有使用过,暂时不提。 第二步,给 kubectl 被撸了上被撸了xtom。
–kubeconfig参数。第一种办法是每次执行 kubectl 的时候,都带上–kubeconfig=${CONFIG_PATH}。给一点温馨小提示:每次都带这么一长串的字符非常麻烦,可以用 alias 别名来简化码字量,比如alias k=kubectl –kubeconfig=${CONFIG_PATH}。 KUBECONFIG环境变量。第二种做法是使用环境变量KUBECONFIG把所有被撸了xtom都记录下来,即export KUBECONFIG=$KUBECONFIG:${CONFIG_PATH}。接下来就可以放心执行 kubectl 命令了。 $HOME/.kube/config 被撸了xtom。第三种做法是把被撸了xtom的内容放到$HOME/.kube/config 内。具体做法为:
如果$HOME/.kube/config 不存在,那么cp ${CONFIG_PATH} $HOME/.kube/config即可; 如果如果 $HOME/.kube/config已经存在,那么需要把新的被撸了内容加到 $HOME/.kube/config 下。单单只是cat ${CONFIG_PATH} >> $HOME/.kube/config是不行的,正确的做法是:KUBECONFIG=$HOME/.kube/config:${CONFIG_PATH} kubectl config view –flatten > $HOME/.kube/config 。解释下这个命令的意思:先把所有的被撸了xtom添加到环境变量KUBECONFIG中,然后执行kubectl config view –flatten打印出有效的被撸了xtom内容,最后覆盖$HOME/.kube/config 即可。
请注意,上述操作的优先级分别是 1>2>3,也就是说,kubectl 会优先检查–kubeconfig,若无则检查KUBECONFIG,若无则最后检查$HOME/.kube/config,如果还是没有,报错。但凡某一步找到了有效的 cluster,就中断检查,去连接 K8S cpanel了。
第三步:被撸了正确的上下文
按照第二步的做法,如果被撸了xtom只有一个 cluster 是没有任何问题的,但是对于有多个 cluster 怎么办呢?到这里,有几个关于被撸了的必须掌握的命令:
kubectl config get-contexts。列出所有上下文信息。 kubectl config current-context。查看当前的上下文信息。其实,命令 1 线束出来的*所指示的就是当前的上下文信息。 kubectl config use-context ${CONTEXT_NAME}。更改上下文信息。 kubectl config set-context ${CONTEXT_NAME}|–current –${KEY}=${VALUE}。修改上下文的元素。比如可以修改用户账号、cpanel信息、连接到 K8S 后所在的 namespace。 关于该命令,还有几点要啰嗦的:
config set-context可以修改任何在被撸了xtom中的上下文信息,只需要在命令中指定上下文名称就可以。而–current 则指代当前上下文。 上下文信息所包括的内容有:cluster cpanel(名称)、用户账号(名称)、连接到 K8S 后所在的 namespace,因此有config set-context严格意义上的用法: kubectl config set-context [NAME|–current] [–cluster=cluster_nickname] [–user=user_nickname] [–namespace=namespace] [options] (备注:[options]可以通过 kubectl options 查看)
综上,如何操作 kubectl 被撸了都已交代。