Giter Site home page Giter Site logo

blog's Introduction

Hi there 👋

Full Stack Developer / Software Engineer / Technical Product Manager

  • I'm a full-stack developer and a technical product manager, specializing in tool products, developer products, enterprise service products, and testing products.
  • I have extensive development experience, have been in the internet industry for 20 years, and have been coding for 15 years.
  • I have high standards for the user experience of products.
  • Currently, my main focus in development is frontend and cloud-native applications, and I'm also well-versed in networking, operating systems, and storage.
  • I have a passion for technology and hardware, and I'm also a white-hat hacker.
  • I mostly code in JavaScript, Go, C, and Rust, but I'm not limited to any specific programming language.

(^▽^)

William Chan's github stats

blog's People

Contributors

luckyyyyy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blog's Issues

《剑网3》DBM插件使用说明

文档最后更新时间:2017年06月15日17:46:20
本文档为官方文档,部分进阶使用实例可查阅玩家编写的参考资料。

参考资料

前言

如果您只想知道如何导入数据而不想全面的了解插件,就不需要继续往下看了,您只需要点击头像右键菊花插件集打开DBM面板点击右上角的系统菜单选择导入网络数据即可,或者您可以查看参考资料中的新手使用说明。

简介

《剑网3》DBM插件是基于《剑网3》团队事件监控以及魔兽DBM插件作为参考而开发的一款副本辅助插件,下称为插件

插件主要功能与特点

  • 无须其他插件依赖,仅需安装菊花插件集基础库即可。
  • 模块化设计,所有模块均独立分开工作,可自由删除或关闭不需要的模块。
  • 核心模块与界面毫不相关,当不打开数据设置面板时,界面不占用任何的资源,关闭后将释放所有的资源!
  • 强大的近期事件记录,近期遇到的各种BUFF和技能,甚至NPC,以及NPC的喊话一个都不错过,开荒BOSS绝对利器!
  • 所有数据均根据当前副本来自动加载与抛弃,提高插件性能,非常低的CPU以及内存占用,几乎可以忽略不计!
  • 多项设置可自定义,包括颜色,自定义数据等,可自由更换,可以编辑属于自己习惯的插件,创建各种自定义计时器!
  • 模块化事件API,可自由调用各项模块进行工作,可自由更改DBM数据权利,如果您是插件作者!
  • 在网络中可以分享自己定制的数据供玩家使用!(http://www.j3ui.com)

插件设置

插件设置在《菊花插件集》管理。可以在游戏页面Esc - 插件管理中打开《菊花插件集》,然后点击团队副本中找到DBM分类,除了基本的设置外,还可以从此处进入数据设置面板。

特别注意

  • 所有涉及到界面的,如果不能直接拖动都可以按Shift+U进行拖动位置。
  • 您可以尝试给插件的面板增加一个快捷键来打开它。

数据介绍

插件的数据分为以下几大类,大类下的数据均拥有自己独立的设置项。

  • 增益效果:可以监控Buff的获得和消失等情况。
  • 减益效果:可以监控DeBuff的获得和消失等情况。
  • 技能:可以监控技能的释放等情况。
  • NPC:可以监控NPC的战斗、血量变化、出现与消失等诸多情况。
  • 交互物件:可以监控交互物件的出现与消失等情况。
  • 圈圈:可以给对应的NPC或者DOODAD(交互类物品)绘制面向圈,可以监控NPC的目标变化。
  • 喊话:可以监控对应的NPC喊话内容以及系统提示框的提示内容。
  • 系统喊话:可以监控聊天框黄色文字的内容。

特别注意

  • 圈圈数据需要画圈圈插件的支持,其数据界面由DBM界面管理。

数据地图分类介绍

插件的数据地图分类,根据团队副本的地图进行分类,即一个副本只调用地图中已存在的数据,其他数据将被暂时抛弃,以提高插件的性能以及数据分类的清晰度,并且插件设有通用分类,来实现对某些数据全地图使用的需求。

特别注意

  • 右键数据可以修改数据的分类,如果按住Ctrl点击,即可以复制这个数据到其他分类,来实现单独区分或共用的目的。
  • 数据可以按住左键拖拽移动,如果左边树列表中不存在某些地图,可以尝试先右键手动输入地图名称。
  • 当存在相同数据时,地图分类中的数据优先级大于通用分类。

数据导入导出

插件数据使用LUA TABLE形式,导出的数据和插件调用的数据完全相同,导入与导出仅限有高级功能需求的玩家进行操作,一般玩家无须理会。

特别注意

  • 插件的数据保存模式默认情况下是所有角色通用的,即一个角色改动了数据其他角色均共享,除非您的特殊需求,否则建议共用数据。
  • 插件导入导出功能在DBM数据设置面板上,无特殊需求的玩家根本无须理会。
  • 插件默认导入和导出的路径为./interface/JH/DBM/data

快速清空数据

DBM支持快速清空数据,只需要创建导入一个空白的文件即可,文件内容如下。

data = {
    ["BUFF"]    = {},
    ["DEBUFF"]  = {},
    ["CASTING"] = {},
    ["NPC"]     = {},
    ["DOODAD"]  = {},
    ["TALK"]    = {},
    ["CIRCLE"]  = {},
    ["CHAT"]  = {},
}

监控介绍

监控的设置内容较多,下面依次介绍一些比较关键的设置。

报警通用颜色

部分监控模块会受到报警通用颜色的影响,下面有介绍,如果需要修改可以点击数据设置面板上的图标进行修改。

监控通用设置

监控通用设置中的项目均会影响数据是否会触发。

  • 监控对象列表,顾名思义,自己、团队(包含自己),敌对。
  • 自身心法要求,顾名思义对应心法才触发监控,支持多选,全部不勾选即代表对心法没有要求。
  • 层数需求/数量需求,BUFF的层数达到指定的层数或者NPC在场数量达到指定数量。
  • 区分Level,对于BUFF和技能监控,默认情况下插件不会去区分BUFF的或者技能的等级。在英雄和普通副本中,BOSS释放的BUFF或技能大部分均有等级的区分,对于有特定要求区分的可以勾选区分。

近期事件记录

插件提供近期记录功能,可以记录周边发生的多数事件,包括NPC喊话在内,所有的近期事件会在数据面板的右侧展示,直接拖拽可以使其添加至左边的监控列表。

搜索

插件提供强大的搜索功能,普通搜索默认会根据名称或者ID进行匹配,勾选全局搜索后,可以对数据做全面的搜索,小到一个倒计时的名称,大到右边的近期记录技能释放BOSS的名称,都可以完全匹配。

全局搜索例

  • 搜搜非玩家的近期记录可以输入"bIsPlayer":false,同理过滤BOSS记录可以输入true。
  • 搜索谭雪释放的所有技能可以输入谭雪

喊话监控

插件的喊话监控支持监听BOSS的喊话以及系统警告框的喊话,并且拥有灵活的自定义功能。

特别注意

  • 喊话对象中%为通配符,表示不管是谁喊的都监控,留空则表示系统报警框。
  • 喊话内容中$me代表自己的名字,$team代表团队中任意一名成员的名字。
  • 喊话默认不会模糊匹配,$me以及$team除外,但可以手动查看原始数据增加特殊字段bSearchtrue使得其支持模糊匹配(不熟悉json格式请勿操作)。

系统喊话监控

插件的系统喊话监控支持系统喊话,并且拥有灵活的自定义功能。

特别注意

刷马例: 江湖快马飞报!段氏马场发布最新《九州寻驹图》消息:约五到十分钟后,将有宝马良驹在巴陵县出没!各位侠士可以前往捕捉!切莫错过!

抓马例: 江湖快马飞报!侠士“(.*)”在(.*)捕获(%d+)级稀有坐骑马“里飞沙”的马驹!假以时日,此马驹必能成长为一匹纵横江湖的宝马神骏!

  • 一般情况下系统喊话都会带一个换行符即\n,如果您手动修改内容导致不生效,请确认是否加入了换行符,在输入框内回车即代表换行符,并不是\n
  • 喊话内容中$me代表自己的名字,$team代表团队中任意一名成员的名字。
  • 喊话默认不会模糊匹配,$me以及$team除外,但可以手动查看原始数据增加特殊字段bSearchtrue使得其支持模糊匹配(不熟悉json格式请勿操作)。
  • 喊话默认不开启正则匹配,如果您用于抓马准确匹配,您可能需要使用正则匹配,增加字段bReg即可开启。

lua正则参考:http://www.cnblogs.com/meamin9/p/4502461.html

提醒模块

插件提醒模块目前拥有以下几个,可以被各类事件自由的调用,未安装的模块不影响插件使用,打钩表示默认已经安装,没打钩表示需要从插件列表中单独安装。

  • 倒计时
  • 标记系统
  • 频道报警
  • **报警
  • 普通效果列表
  • 全屏泛光报警
  • 推送团队面板
  • 特大文字报警
  • 头顶报警
  • 重要效果列表

倒计时系统

插件的倒计时模块拥有灵活的可定制度,包括但不限于图标 多段倒计时 重复调用时间限制 等设置,下面来介绍一个倒计时的基本组成。

一个倒计时,由一个数据所驱动,目前插件支持 BUFF获得 BUFF消失 NPC进入场景 NPC消失 NPC全部消失 NPC进入战斗 NPC死亡 NPC全部死亡 技能开始释放 技能成功释放 触发喊话 NPC血量报警(这个有些特殊)等多种倒计时触发方式。

一个普通的倒计时(血量报警除外)由 触发方式 图标 团队喊话报警 倒计时时间 重复调用时间限制 所组成。

  • 触发方式:根据数据的类别驱动倒计时的方式各有不同,会在倒计时设置面板提供触发方式的选择与更改。
  • 图标:可以自由更改,制作特色的倒计时。
  • 团队喊话报警:设置面板显示一个“队”字,勾选后倒计时5秒时会在团队中倒数。
  • 倒计时时间:倒计时时间格式分为两种,第一种是普通秒数倒计时;第二种属于分段倒计时,制作格式例如10,倒计时1;25,倒计时2;55,倒计时3代表第一个倒计时1结束再触发倒计时2(当前倒计时设置的触发时间-已过时间)15秒的倒计时。后面以此类推,再触发第3个倒计时,并不限制倒计时的数量,可自由填写,常用于BOSS进入战斗后开始的阶段倒计时。
  • 重复调用时间限制:当倒计时所属的数据再次被驱动时,可能会重复触发同样的倒计时导致倒计时被覆盖,这个设置就是解决这个问题,在倒计时最后的小框内直接输入时间即可保证在这段时间内不会再次被重复同样的倒计时,请注意,分段倒计时默认取最大的时间作为重复调用时间限制,当然您也可以自由更改。
关于NPC血量报警

这是一个特殊的分类,它的设置格式

例: 0.72,即将进入P2,10;0.3,即将进入P3

  • 当NPC血量为72%时 将触发一个**报警以及特大文字报警,并且触发10秒倒计时。
  • 当NPC血量为30%时 将触发一个**报警以及特大文字报警。

特别注意

  • 不支持0.724这样的血量格式。
  • NPC血量报警暂时不支持调用分段倒计时。
  • NPC血量变化跨度瞬间大于50%时,不适用本功能。
  • NPC血量只监控递减,即从高到低才会被监控到。

标记系统

插件的标记系统支持单选标记或多选标记,基本标记规则如下。

例 勾选 白云 红鼓 棒槌

  • 如果是NPC 若npc是当前npc 即给予白云标记 若场上同时存在多个相同npc,则根据顺序依次给予白云、红鼓、棒槌标记。
  • 如果是BUFF 若buff是当前buff 即给予白云标记 若场上同时在存在多个玩家拥有相同buff,则根据顺序依次给予白云、红鼓、棒槌标记。
  • 如果是技能 无条件给标记

频道报警

插件的频道报警会根据数据以及应用场景自动生成内容发送到聊天频道,主要用于团队频道 私聊频道

特别注意

  • 默认插件关闭了全局的报警,避免团队成员安装多个插件重复发送相同内容,

**报警

插件的**报警会根据数据以及应用场景自动生成报警内容,带有明显的颜色区别以判断内容的重要性,在屏幕中间弹出红色闪烁框以作为报警提醒。


头顶报警

插件的头顶报警可以根据数据内容,在指定的玩家头上增加提示箭头、文字,并且跟随玩家移动而移动。

特别注意

  • 箭头颜色受报警通用颜色影响。

普通效果列表

普通效果列表根据插件推送的BUFF,会将其添加到列表中一个单独的BUFF提醒作为提醒,你可以尝试按住Ctrl+右键点击列表中的BUFF来取消可以取消的BUFF。

特别注意

  • 文字颜色受报警通用颜色影响。
  • 该提醒仅提醒自身的BUFF

重要效果列表

重要效果列表根据插件推送的BUFF,会将其添加到一个单独的重要BUFF列表框作为提醒,点击可以选中目标玩家,一般用于加快治疗需要识别的对象。


特大文字报警

特大文字报警会在屏幕中显示一个相当大的文本来提醒数据所推送的内容。

特别注意

  • 默认情况下,BUFF类仅提醒与自身相关内容。

全屏泛光报警

屏幕四周泛光提醒,如果是BUFF类别,会生成一个小边框,当BUFF彻底消失时边框才会消失。

特别注意

  • 该提醒仅提醒自身相关内容。
  • 泛光颜色受报警通用颜色影响。

推送团队面板

将BUFF推送至指定团队面板以于显示,支持的面板如下。

  • 系统团队面板
  • Cataclysm团队面板
  • RaidGridEx团队面板

特别注意

  • 部分面板支持背景颜色受报警通用颜色影响。
  • 若勾选了仅显示来源自己的BUFF,那么只有当该效果是受你所触发时才会显示。

附 高级设置相关

这里的内容主要面向高级玩家,如果觉得看不明白可以忽略。


倒计时唯一标识设置

倒计时key字段:唯一标识设置属于高级应用,一般情况下无须理会,在现有的倒计时机制无法实现理想的结果或需要清空和屏蔽重复倒计时的情况下,可以利用此方法来覆盖现有的任意倒计时(仅需倒计时两个唯一标识相同,插件即认为这两个倒计时属于同一事件所触发,可以彼此覆盖),按住Ctrl点击倒计时类型下拉框来打开唯一标识设置项,(常用于控制多个重复的倒计时,例如安禄山小怪倒计时,血战天策火箭雨倒计时等)。

倒计时过地图不消失设置

倒计时过地图不消失属于特殊应用,点击Ctrl加左键打开设置项,用于抓马等高级应用。

倒计时脱战不消失设置

倒计时脱战消失属于特殊应用,点击Ctrl加左键打开设置项,用于特殊的副本应用,只有进入战斗触发的倒计时可设置。

特别注意

  • 倒计时不消失在跨服时可能导致显示不正常,两个服务器之间的时间有些许时差。
  • 此功能属于高级应用,使用时请勿打扰玩家,否则被举报数据将做下架和通告处理。

倒计时颜色

倒计时可以设置初始颜色用于区分倒计时的类型和重要程度,您可以参考下表来设置倒计时的nFrame字段(需要手动编辑数据文件)。

Farme   Left    Top Width   High    File
0   0   0   256 32  C:\Users\Webster\Desktop\计时条\橙色.tga
1   0   34  256 32  C:\Users\Webster\Desktop\计时条\粉色.tga
2   0   68  256 32  C:\Users\Webster\Desktop\计时条\红色.tga
3   0   102 256 32  C:\Users\Webster\Desktop\计时条\黄色.tga
4   0   136 256 32  C:\Users\Webster\Desktop\计时条\灰色.tga
5   0   170 256 32  C:\Users\Webster\Desktop\计时条\蓝色.tga
6   0   204 256 32  C:\Users\Webster\Desktop\计时条\绿色.tga
7   0   238 256 32  C:\Users\Webster\Desktop\计时条\青色.tga
8   0   272 256 32  C:\Users\Webster\Desktop\计时条\紫色.tga

JSON数据

JSON数据仅提供外部编辑数据的能力,如果您会制作小程序,可以尝试来辨别这些导出的数据,然后转为LUA TABLE字符串。

插件数据结构与枚举

-- 数据文件基本结构
data = {
    ["BUFF"] = {
        [dwMapID] = {
            [int index] = {
                [field] = value,
                [DBM_TYPE] = {
                    [field] = value,
                },
                [DBM_TYPE] = {
                    [field] = value,
                },
                -- ...
                [tCountdown] = {
                    [int index] = {
                        [field] = value,
                    }
                }
            }
        }
    },
    -- ...
}

-- 5,10,16暂时是废弃的,喊话监控使用的是14.
DBM_TYPE = {
    OTHER           = 0,
    BUFF_GET        = 1,
    BUFF_LOSE       = 2,
    NPC_ENTER       = 3,
    NPC_LEAVE       = 4,
    NPC_TALK        = 5,
    NPC_LIFE        = 6,
    NPC_FIGHT       = 7,
    SKILL_BEGIN     = 8,
    SKILL_END       = 9,
    SYS_TALK        = 10,
    NPC_ALLLEAVE    = 11,
    NPC_DEATH       = 12,
    NPC_ALLDEATH    = 13,
    TALK_MONITOR    = 14,
    COMMON          = 15,
    NPC_MANA        = 16,
    DOODAD_ENTER    = 17,
    DOODAD_LEAVE    = 18,
    DOODAD_ALLLEAVE = 19,
    CHAT_MONITOR    = 20,
}

-- 监控类型null则为All
DBM_SCRUTINY_TYPE = { SELF  = 1, TEAM  = 2, ENEMY = 3, TARGET = 4 }

开始使用Issue写Blog

开始使用Issue写Blog也是受玉伯影响,并且打算使用GitHub API和Vue.js制作一个简单的静态页面用于展示,应该在这几天就可以完成。

会慢慢地把之前的Blog搬到这里。

也顺便从html转变为Markdown

利用GitHub Pages以及Cloudflare搭建一个自己的BLOG

互联网真的是发展迅速,还记得上一次搭建自己的个人站点那都是十几年前的事了,如今2017年了,格局已经大不相同,那时的虚拟主机就像现在的云服务一样,到处都是,大家都在求免费的虚拟主机,国内也是万网当道,现如今这么些年过去,随着各种云的发展,建立一个个人站点的成本已经非常低了,技术也越来越成熟,各家都在拉拢客户提供免费服务,下面不谈历史,就谈谈如何使用GitHub Pages 加上 Cloudflare 一步步免费建立自己的TLS站点。

本文不适合初学者阅读,没有任意网络知识建议先补充基础知识。

概述

简单的介绍一下GitHub Pages和Cloudflare吧

GitHub Pages

GitHub Pages是GitHub提供的快速搭建项目展示页的服务,但如今越来越多的人已经拿他当Blog使用,也有一些比较靠谱的工具,例如 https://hexo.io/ 等,不过为了吃透所有流程,我还是自己做了一遍所有的实现,目的是使用GitHub的Issues Markdown来写作,然后使用GitHub的API来获取内容,然后用目前常见的各种类库来制作界面,虽然目前无法SEO,但是其实GitHub的Issues本身就已经是SEO了,制作界面只是为了让自己看的赏心悦目,也方便展示给其他人看。

Cloudflare

Cloudflare是大名鼎鼎的全球CDN服务提供商,我第一次使用它的时候那会也才09年初,不过现在它的功能更加丰富了,定位也类似国内的百度云加速和360网站卫士等,提供网站优化和防攻击等业务,但是比起国内这些服务商,它的技术实力还是很强劲的。

注册域名

其实这里我不是很想说,但是还是给大家推荐一下到国外的服务商注册,例如 https://sg.godaddy.com/ 或者 https://www.name.com/ ,至于具体原因,大家都懂的,外面自由一点。

建立GitHub Pages

官方的教程也非常详细了,不过我这里还是简单的说一下吧,其实就是创建一个你同名的repo。

  • 创建一个username.github.io的repo。
  • 上传一个index.html。

这样就可以使用 https://username.github.io/ 访问你的GitHub Pages了,现在的github.io是支持TLS的。

配置GitHub API

https://developer.github.com/

创建Access Token

由于GitHub的API是有访问次数限制的,但是使用Access Token访问时没有限制的,所以为了网站稳定,我们需要到 https://github.com/settings/tokens/ 去创建一个Token,但是注意把这个Token的权限降到最低,仅用于Public Access即可。

阅读API手册

GitHub的API一直是业界标杆,非常详细,也非常好用,其实我们只需要Issues相关的API即可,所以可以直接到 https://developer.github.com/v3/issues/ 获取需要的内容,举个简单的例子。

// List issues for a repository
GET https://api.github.com/repos/:owner/:repo/issues

// 我们使用简单的Basic Authentication认证即可
// curl -u username:token https://api.github.com/user
const Authorization = new Buffer(':token').toString('base64');
req.headers.Authorization = `Basic ${Authorization}`;

使用Cloudflare 开启STL

先到你的GitHub Pages repo去绑定你的域名,绑定后无法开启STL了,因为GitHub毕竟不是干这个的,所以我们需要借助Cloudflare。

注册过程不再介绍, https://www.cloudflare.com ,创建网站填写个人域名,然后它会要求你把NS记录指向它,那么你可以去你的域名服务器修改NS记录了,虽然有不修改的方法,但是我建议大家还是修改过去比较省事,而且它对我们天朝有一些副作用,但毕竟我们个人博客并不是很在意这些。

然后到Cloudflare控制面板中,修改DNS记录,将域名的CNAME记录指向username.github.io,可以使用dig查询是否生效。并且开启 DNS and HTTP proxy,就是旁边那个黄色的标志点亮状态。

dig williamchan.me
dig williamchan.me NS
dig williamchan.me NS @8.8.8.8

如果域名NS验证通过,我们就可以申请证书了,Cloudflare默认提供共享证书,当然你可以付费选择独享证书或者付费上传自己的证书,这点大家都懂,毕竟人家也需要赚钱,我们使用共享证书其实也没什么问题,在控制面板中找到crypto,下面的Origin Certificates,创建一个即可,等待一段按时间你的网站就可以使用STL了,当然生效需要一点时间,需要大家耐心等待。

搭建博客

这里就不再多做介绍, 大家利用API获取Issues即可,我今天花了点时间自己用Vue.js写了一个,repo在下面,可以尝试着自己做一个或者直接把我的clone下来。

https://github.com/luckyyyyy/Blog

JavaScript中的this关键词

JavaScript拥有一个名为this 的关键字,在JavaScript程序中的不同位置,this所引用的值会有所不同。
这其实是一件比较头疼的事,因为随着ES6的发布和NodeJS的搅和,这个概念可能会被混淆。
今天我们只说浏览器中的this

全局上下文中

这个还是比较好理解的,如果直接在代码中使用this,那么this === window。
所以下面两行赋值做的是同一件事,创建一个名为hello的全局变量。

console.log(this === window); // true

this.hello = 'hello world';
window.hello = 'hello world';

console.log(this.hello); // hello world
console.log(window.hello); // hello world
console.log(hello); // hello world

函数上下文中

在函数或是闭包中引用了this结果又会如何?
在这个没有任何嵌套的函数中,this的指向取决于你是否使用了严格模式。

简单的例子

function hello () {
    console.log(this === window); // true
    console.log(this); // object global
}

hello();
function hello () {
    "use strict";
    console.log(this === window); // false
    console.log(this); // undefined
}

hello();

在模块模式中

下面来看一下,在这种情况中,this的指向又发生了什么变化。

var hello = {
    init: function () {
        console.log(this); // references hello
    },
};

hello.init();

所以你可以向下面这样做,来封装一个模块。

var hello = {
    default: {
        base: 'www.baidu.com',
        limit: 20,
    },
    init: function (cfg) {
        var config = cfg || this.default;
        console.log(config);
    },
};

hello.init();

嵌套函数

在匿名函数中

var hello = {
    init: function () {
        setTimeout(function () {
            console.log(this); // window
        })
    },
};

hello.init();

ES6箭头函数中

在ES6箭头函数中,this和普通函数中的指向是不同的,他永远会跟随上下文。
所以我们不会在非严格模式下的匿名函数或者全局函数中遇到this指向window的情况了。

const hello = {
    init: function() {
        console.log(this === hello); // true
        setTimeout(() => {
            console.log(this === hello); // true
        })
    },
};

hello.init();

再复杂一点

const hello = {
    init: function() {
        'use strict';
        console.log(this === hello); // true
        const func = function () {
            console.log(this === undefined); // true
            setTimeout(() => {
                console.log(this === undefined); // true
            })
        }
        setTimeout(() => {
            console.log(this === hello); // true
        })
        setTimeout(function() {
            console.log(this === window); // true
        })
        func();
    },
};

hello.init();

2017年 一些吐槽 一些想法

内容不会提及任何新手应该如何入门的细节,请读者不要介意,这里主要是我的一些想法。

回顾2017年一整年,学习了非常多的知识,列一下的话应该主要是下面这些。
webpack
webassembly
nodejs
vue
react
php7
yii2

码农,只要能顺利度过初期,就能快速成长,那些大神根本不是遥不可及,谁都是从一点点的积累过来的。

编程这一行业,在写业务逻辑上,在初期基本不可能遇到什么大的挑战,等业务真正起来了,那么整个逻辑会被拆的很细很细,不同的人会负责不同的业务节点,这时候压力已经不在于如何写业务逻辑,而是如何把负责的这一部分做到最优了。

举个例子就是,一家C/D轮公司看似没什么用的一个后台界面,只是b2b使用,一天登录不了几次,结果却有一个大佬带十几个人维护开发?因为公司赚钱了,我们可以降低每个人的工作负荷,可以多招实习生,往往也是因为要促成三个臭皮匠顶个诸葛亮的局面,毕竟厉害的人在这个行业里真的太少了,也要给新人机会,培养适合来接管大局的新人。

我学过这么多语言,其实对于编程语言来说,我更感兴趣的是他们的背后设计,可能初学者一直在纠结这门语言如何使用,语法是什么样的,这根本不是我关心的问题,不同的语言有不同的语法,这并不是一件奇怪的事情,但是他们具有非常多的共同性,所以上手的速度应该都会在一个月内,可能入行更久的只需要一星期,就可以上手写业务了。

所有的语言或者框架,官方的Doc那么详细,却有那么多新手去依赖百度搜索,一是因为这么多年,他们养成了一种百度搜索是最快的知识来源的习惯,二是因为,他们的英语水平和源码阅读能力真的不够,这两点造成的一个最直接结果是,安于现状,不再继续学习,因为我所有的业务逻辑我都可以完成呀。

英语在编程中起到的作用也实在太重要了,在有英语的基础上,学习新的语言或者框架,基本是事半功倍,最近刚学完php的yii2,根本不需要看文档,想知道怎么用直接追源码就行了,PHP是一门高级语言,他不像C/C++追一个类或者函数可能涉及各种奇怪的宏定义,硬件定义,系统定义,从源码中获取文档的速度绝对比看官方文档更快。并且官方文档也不是实时更新,也不会讲解高级的用法,作者xue qiang的在注解中写的英语水平非常不错,编码能力也实在让我着实佩服,架构就是这样,每一个函数都应该标注它的作用以及标准的doc解释,但往往大部分新手,写了那么久的yii,却还在问,这个应该怎么用,那个应该怎么用,而不考虑一个应用本身的架构应该怎么做,如何去扩展,能让我写更少的代码,用起来更顺畅,真是令人大跌眼镜。

新手的学习真的很容易进入误区,业务我能做,框架我会用,代码我会写,我已经入行了?北上广深2w+的工资证明我已经有足够的实力了?NO!这根本没有入行,或者说跟真正的程序员根本不是同一类人,充其量这只是一个重复劳动力,以后会被机器学习所取代的重复劳动力,看看阿里的鲁班已经可以用AI来做广告图了,一点都不担心自己被人工智能取代吗?

个人编码已经十余年,并且个人的兴趣爱好就在于此,不同于其他工程师,见过形形色色的人,也见过无数的代码,深知行业的现状以及一些对应方式,待人也非常诚恳,我也希望让他们成为我这样的人,在一天8小时的工作中,用1小时去写出高效的代码,7小时在娱乐,在思考。

编程其实只是把想说的话翻译给机器听而已,为什么会有这么多BUG?
那还不是根本没想清楚就开始写,理解业务逻辑,理解语言本身,真的很困难吗?

应该庆幸有我这样的 leader 什么时候我不再有这样的热情来待人,只做对自己有益的事的时候,可能真的是一个损失。

lua 中的 oo

很久没写lua了,最近在学习王争的设计模式之美,所以还是补一下功课。
非面向对象语言利用语言特性实现面向对象的部分特性。

local _class = {}

function class(super)
  local class_type = {}
  class_type.ctor = false
  class_type.super = super
  class_type.new = function(...)
    local obj = {}
    do
      local create
      create = function(c, ...)
        if c.super then
          create(c.super, ...)
        end
        if c.ctor then
          c.ctor(obj, ...)
        end
      end
      create(class_type, ...)
    end
    setmetatable(obj,{ __index=_class[class_type] })
    return obj
  end
  local vtbl = {}
  _class[class_type] = vtbl
  setmetatable(class_type, { __newindex = function(t, k, v)
      vtbl[k] = v
    end
  })

  if super then
    setmetatable(vtbl, { __index = function(t, k)
      local ret = _class[super][k]
      vtbl[k] = ret
      return ret
    end})
  end
  return class_type
end





local a = class()
function a:ctor()
  self.hello = 1;
	return self
end

function a:print()
    print(self.hello)
end

-- class
A = setmetatable({}, { __call = function(me, ...) return a:new( ... ) end, __metatable = true, __newindex = function() end })

local b = class(a)
function b:ctor()
  self.hello2 = 2;
	return self
end

function b:print2()
    print(self.hello2)
end

B = setmetatable({}, { __call = function(me, ...) return b:new( ... ) end, __metatable = true, __newindex = function() end })

local instance = B()
-- for k, v in pairs(instance) do
--   print(k)
-- end
instance:print()
instance:print2()

正确的 git workflow

在工作中,经常会遇到很多使用git新手提交的commit,把git当成一个历史提交工具或者干脆当成编辑器的save功能,这是非常有问题的,我们可以来对比下下面两个记录。

 * fix typo
 * update eslint config
 * add chinese note in issue template
 * improve add missing html and svg tag 
 * Add types for vue-server-renderer (fix #5772) (#5775)
 * Merge pull request #167 from aaa/bbb
 * fix typo
 * update eslint config
 * add chinese note in issue template
 * Merge pull request #119 from aaa/bbb
 * Merge pull request #138 from aaa/bbb
 * update #1102
 * Merge branch 'aaa' into bbb
 * mprove add missing html and svg tag 

很明显,第一种是非常清爽的提交历史,但第二种,夹杂各种merge信息,非常混乱,那么如何正确的归档commit记录呢?

建立全新分支

在开始开发时,建立一个全新的分支用于开发feature。

git checkout -b dev_20170620_feature1

接下来我们进行开发,完成后的确认工作。

git status
git diff 
git add {modified files}
git commit -m "add feature1"

rebase

git rebase master

如果遇到冲突

git status
git add .
git rebase --continue

git log 高级用法

此篇仅为记录一些常用的方法,已经经过优化,涉及到shell知识,不过也比较简单。

统计所有人贡献行数

echo "\n---------- git commit stat ----------\n"; \
git log --format='%aN <%aE>' | \
sort -u | \
while read name; do echo -en "$name\t"; \
git log --author="$name" --pretty=tformat: --numstat | \
awk '{ add += $1; subs += $2; loc += $1 - $2; commit += 1 } END \
{ printf "added lines: \033[1;32m%s\033[0m removed lines: \033[1;31m%s\033[0m total lines: \033[1;33m%s\033[0m\n", add, subs, loc }' -; done

统计某人的代码行数

默认是 git config --get user.name 可以自行做修改

git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | \
awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END \
{ printf "\nadded lines: \033[1;32m%s\033[0m removed lines: \033[1;31m%s\033[0m total lines: \033[1;33m%s\n", add, subs, loc }' -

commit 相关

排行榜

git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r

根据邮箱统计

git log --pretty=format:%ae | \
awk -- '{ ++c[$0]; } END \
{ for(cc in c) printf "%5d %s\n",c[cc],cc; }' | sort -u -n -r

commit 总数

git log --oneline | wc -l

commit 贡献者计数

git log --pretty='%aN' | sort -u | wc -l

总计行数 (不包含删除行数)

git log --stat | \
perl -ne 'END { print $c } $c += $1 if /(\d+) insertions/;'

无关 git 统计当前目录下代码行数

其他语言请自行更换

find . -name "*.php" | \
grep -v /vendor/ | \
grep -v /views/ | \
xargs wc -l

一个BUG的反思

我自己一直有一个《剑网3》的开源项目叫菊花插件集,虽然目前由于工作原因已经不再维护,但是也算是个人花了较多精力的一个项目,目前也稳定运行服务于百万玩家。

这个项目是基于西山居《剑网3》游戏作为宿主,提供API的所制作的插件,我个人完成了绝大部分代码的编写,由于游戏一直在更新,所以也有些许维护成本,一直到最近,遇到的一件事让我有所反思,技术到底是什么?

绝大多数人是没有开源经验的,开源意味着你需要对这个项目全权负责,代码都是经过验证的,不管是代码规范还是结构,都应该是较优的,为了贡献者所提供的代码统一,你还需要制定一些规则,来保证项目多人协作后的一致性,但在西山居《剑网3》的KGUI项目中,并没有这种规定,大家都是自己按照自己的风格来编码,其造成的结果其实也比较显而易见,修复BUG需要阅读的成本过高,离职后部分代码片段几乎不可维护,但这丝毫并不影响《剑网3》这个项目的发展,玩家基数和运营数据也一直一路飙升。

最近我遇到的事情是因为一个API的变动,导致我的部分功能无法运行,我尝试做了修复,但最终发现是官方的编码导致的BUG,而非API变动,我开始尝试定位错误,但看到了类似下面这样的函数。

OutputItemTip(UI_OBJECT_ITEM_ONLY_ID, dwID, nil, nil, {x, y, w, h, bFixedTip}, bStaticTip, nil, nil, nil, nil, nil, nil, nTipPosType)

这导致我无法继续下去,因为阅读这一函数所消耗的时间,可能比我写这篇文章所花的时间还要长的多,最终我开始向官方求助,提醒他们哪一函数有BUG,让他们修改,但丝毫无反应,也许是他们也无能为力,我尝试换了一种方式,找出了使用相同函数的具体UI位置,他们终于开始着手修复,结果官方的修复让我大吃一惊,他们并不是去修改这个无法阅读的函数,而是直接在调用的地方加了几个无意义的参数。

其实这个函数的确是由于参数移位导致的BUG,但这种修复,也的确过于暴力,没办法我也只能紧随其后,写出了如下代码,意思是在参数数量等于3的时候,在第三个位置追加一个无意义的参数,使其长度变为4。

local KItemInfo = GetItemInfo(data[1], data[2])
if KItemInfo.nGenre == ITEM_GENRE.BOOK and #data == 3 then -- fix item box bug
	table.insert(data, 3, 99999)
end

一开始我有点无法理解,但后来想想其实这么修复也不全无道理,因为对于这种无法阅读的函数所花费的时间,的确是应该想办法快速修复才是,但对这种方式,出于对技术的热衷,我个人并不认同,应该归根究底重写函数,但从整个项目角度来说,这的确无可厚非。

从项目角度来说,技术是服务于项目的,团队协作中,尽可能不让大家彼此浪费时间,虽然写这个超10个参数的同学的确有问题,但也应在保证项目能按时完成的前提下,再去试图优化和完善我们的代码,如果一开始就追求超高质量的项目,那么这个项目一定无法按时完成,我们应该在两者之间做适当的取舍。

OpenWrt/LEDE 利用MWAN3多线多拨配置

OpenWrt/LEDE是目前大部分联发科、博通、高通解决方案的路由器固件,可玩性较高,基于Linux,具体内容请各位自行查阅资料,这里主要记录个人的一些配置过程。

多线多拨主要是用于多运营商,目前由于我个人住所有移动和电信两条线路,电信的带宽较小,希望只用于游戏,移动的带宽可以拿来看视频或其他娱乐,希望通过MWAN3负载均衡来达到预期的效果。

接下来直接上配置过程,由于个人很少使用Luci,如果希望使用luci的同学也可以根据本文反推。

安装mwan3

opkg update
opkg install mwan3
# 使用luci的同学可以安装luci界面
opkg install luci-app-mwan3

Switch配置

交换机配置这里,主要是将一个LAN口作为WAN使用,这样使路由器可以拥有两个WAN口,具体需要看各种解决方案提供的交换机方案,以下是NETGEAR R7800的配置,大部分联发科和此例有非常大的区别,建议新手通过luci观察后再进行配置。

配置文件路径/etc/config/network

config switch
    option name 'switch0'
    option reset '1'
    option enable_vlan '1'

config switch_vlan
    option device 'switch0'
    option vlan '1'
    option vid '1'
    option ports '1 2 4 6'

config switch_vlan
    option device 'switch0'
    option vlan '2'
    option vid '2'
    option ports '0 5 6t'

config switch_vlan
    option device 'switch0'
    option vlan '3'
    option vid '3'
    option ports '3 6t'

Interface配置

这就简单了,由于lan已经存在,我们就不需要在创建,一般长下面这样。

配置文件路径/etc/config/network

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

下面我们需要创建两个wan接口,分配到不同的端口上,并且需要指定不同的gateway metric,
注意下面实例配置中的ifname和metric,ifname必须对应上述交换机配置的位置,使其可以正确工作。

config interface 'cmcc'
    option ifname 'eth0'
    option _orig_ifname 'eth0'
    option _orig_bridge 'false'
    option proto 'pppoe'
    option ipv6 'auto'
    option metric '41'
    option username '********'
    option password '********'

config interface 'ctcc'
    option ifname 'eth1.3'
    option _orig_ifname 'eth0'
    option _orig_bridge 'false'
    option proto 'pppoe'
    option ipv6 'auto'
    option metric '42'
    option username '********'
    option password '********'

如果完成以上步骤,网络应该已经可以通了,两个接口分别可以使用PPPoE取到对应的公网IP。
但是目前还没有配置均衡,所以也没法让对应的出口走对应的线路。
这里提醒一句,如果两条线是不同的运营商就不要想着带宽叠加了,因为由于DNS关系,不同的运营商都有最优的DNS,由于浏览器等软件都有缓存策略,反而会遇到一些意外情况的发生,例如电信走移动DNS或移动走电信DNS,都会导致解析出的IP很奇怪,当然如果仅仅是迅雷等P2P下载是没有关系的,可以完美叠加网速。

mwan3负载均衡配置

我们可以删除mwan3的示例配置文件然后一步步来重新配置。

配置文件路径/etc/config/mwan3

新建interface

我们需要新建两个和上述network中一致的interface,具体配置如下,配置项都是字面意思,可以为不同的运营商配置不同的track ip。

config interface 'cmcc'
    option enabled '1'
    option reliability '1'
    option count '1'
    option timeout '2'
    option interval '5'
    option down '3'
    option up '8'
    list track_ip '211.140.13.188'
    list track_ip '211.140.188.188'

config interface 'ctcc'
    option enabled '1'
    option reliability '1'
    option count '1'
    option timeout '2'
    option interval '5'
    option down '3'
    option up '8'
    list track_ip '223.5.5.5'
    list track_ip '114.114.114.114'

新建Member

Member用于配置每个接口的分流比例,做一个简单的配置即可,这里我们没有特殊的需求。

config member 'cmcc_m1_w1'
    option metric '1'
    option weight '1'
    option interface 'cmcc'

config member 'ctcc_m1_w1'
    option metric '1'
    option weight '1'
    option interface 'ctcc'

新建Policy

策略就简单了,我们需要建三个策略,分别是balanced,only_ctcc,only_cmcc。

config policy 'balanced'
    list use_member 'ctcc_m1_w1'
    list use_member 'cmcc_m1_w1'
    option last_resort 'unreachable'

config policy 'only_ctcc'
    list use_member 'ctcc_m1_w1'
    option last_resort 'unreachable'

config policy 'only_cmcc'
    list use_member 'cmcc_m1_w1'
    option last_resort 'unreachable'

新建Rule

路由策略就是我们最终的杀手锏了,在这里可以对不同的APP,不同的IP,配置不同的策略,balanced亦或是only_ctcc或是only_cmcc,但是注意他们的先后顺序,最先的会先被匹配。

config rule 'hz_sd'
    option proto 'all'
    option sticky '0'
    option use_policy 'only_ctcc'
    option dest_ip '202.91.240.0/24,202.75.216.0/24'

config rule 'jx3'
    option sticky '0'
    option use_policy 'only_ctcc'
    option proto 'all'
    option dest_ip '121.14.64.0/24,121.14.23.0/24,121.14.28.0/24'

config rule 'icmp'
    option proto 'icmp'
    option sticky '0'
    option use_policy 'only_ctcc'

config rule 'yy'
    option dest_port '8443:8460'
    option proto 'udp'
    option sticky '0'
    option use_policy 'only_ctcc'

config rule 'default_rule'
    option dest_ip '0.0.0.0/0'
    option proto 'all'
    option sticky '0'
    option use_policy 'only_cmcc'

NGINX try_files + alias directives

最近需要配置一下nginx alias中的的FastCGI,发现巨坑无比,找了不少资料算是搞定了,但是又遇到try_files的巨坑,查阅了无数资料,最终在stack overflow中找到了解决方案,不过似乎这就是一个多年以来,一直没有得到解决的问题。

记录一下

https://stackoverflow.com/questions/20426812/nginx-try-files-alias-directives
server {
    server_name localhost;
    root /app/frontend/www;

    location /backend/ {

        alias /app/backend/www/;

        # serve static files direct + allow friendly urls
        # Note: The seemingly weird syntax is due to a long-standing bug in nginx: https://trac.nginx.org/nginx/ticket/97
        try_files $uri $uri/ /backend//backend/index.php?$args;

        location ~ /backend/.+\.php$ {
            include fastcgi_params;
            fastcgi_buffers 256 4k;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_param HTTPS $proxied_https;
            fastcgi_pass phpfiles;
        }

    } # / location

}
``

Webpack Module Resolution && nodejs require

在一个月前遇到了一个棘手的问题,起因大概是这样的,由于我自己希望了解全部的生态,所以我一直都是使用自己的脚手架,而不是Vue或者React官方的提供的脚手架,虽然诸如umi,vue-cli,create-react-app他们做的都很优秀,但是我还是想从中知道每一个plugin,每一个loader都做了什么事情。

在最近的一次升级中,我使用了最新的babel7,并且使用了core-js@3版本,但在过程中遇到了一些问题。

问题

先来看一下我遇到的问题,我使用了ant-design-vue这个UI库,他依赖了[email protected],从编译后的代码可以看到存在着诸如许多import _extends from 'babel-runtime/helpers/extends';这样的代码。

然后我们再来看一下[email protected]这个库,他依赖了core-js@2的版本,主要是提供运行时的新 API 转换,例如 babel 不能转换的一些新的 API,他会提供一些 polyfill 级别的解决方案,当然与babel-polyfill是有本质差异的,babel-polyfill更多是偏向业务层面的东西,他所支持的语法更多,毕竟babel-runtime只支持到 static 语法,并不能对[1, 2, 3].includes(1)进行处理,这里不展开,后面会有篇幅重点介绍。

那么现在依赖关系就是我依赖了ant-design-vuecore-js@3,但是ant-design-vue依赖了core-js@2,看了 core-js 2和3版本,发现差异还是非常大的,连目录结构都不同了,我仔细查看了依赖结构,实际上其实是不应该有问题的,我把依赖结构写在下面,为了清晰表达省略一些内容。

test
├─┬ [email protected]
│ ├── [email protected] extraneous
│ └── [email protected]
└── [email protected]

但当我执行编译时,webpack 却提示找不到core-js@2中的模块。

Uncaught Error: Cannot find module 'core-js/library/fn/object/define-property'

定位问题

当发现这个问题后,首先想到的肯定是查看 node_modules 中是否存在这个模块,但是查询后发现由于依赖关系的原因,core-js@2被放到了babel-runtime中的 node_modules,然后我就去查阅了 nodejs 的 require 规则,发现他是从 module.paths 的目录中依次顺序查找的,那么根据规则,实际上在babel-runtime中的调用并不会去找我项目中的 node_modules 而是去寻找 babel-runtime 中的 node_modules。

那么从nodejs的行为上来说,这是正确的,并不会造成两个库依赖的版本不同。找不到模块的情况。

然后我尝试写了一个简单的 demo 来验证这个结论,直接执行 node src/main.js,注释掉对vue文件的引用,因为没有经过 vue-loader 处理的 vue 文件是无法被 nodejs 直接解析的,发现可以顺利通过。

随后使用 webpack 执行,发现报告了找不到模块的错误,这时候第一反应就是 webpack 的配置是有问题的。

解决问题

查阅文档后,最终发现,在 webpack 中其实是可以定义模块解析规则的,除了省略扩展名,定义 alias 外,还可以指定路径,这一项在默认情况下其实是正确的,但是如果你定义了绝对路径,那么他只会根据你定义的路径进行解析,这一部分的 webpack 源码晚些我会发布在下面。

webpack 的具体配置如下

// 文档中的描述

// Tell webpack what directories should be searched when resolving modules.

// Absolute and relative paths can both be used, but be aware that they will behave a bit differently.

// A relative path will be scanned similarly to how Node scans for node_modules, by looking through the current directory as well as its ancestors (i.e. ./node_modules, ../node_modules, and on).

// With an absolute path, it will only search in the given directory.

resolve: {
  modules: ['node_modules'],  // 这部分非常重要,之前错误的定义为决定路径,实则如果不定义,那么它就会和 nodejs 的行为相近
},

实际上这个问题如果说的复杂,还需要牵扯到许多,我会分几期来说这些问题。

把微信聊天框作为路由器的终端使用,实现各种奇奇怪怪的功能。

直接上图,原理也比较简单,因为微信需要80端口,所以需要用到Frp内网穿透和一台外网服务器,这个还是比较容易的。

现在还是半成品,本来打算用hotplug来监听事件的,接口已经写好了,发现有个问题,国内PPPOE断网是强制断开的,其实应该不是接口开启和关闭的事件,所以可能无法监听到,只能一直获取然后缓存,这个方案还需要在思考。

新玩具是把公众号作为终端使用,因为以前做过公众号开发,所以开发起来非常快,一分钟好几个接口,代码非常可扩展易于维护,具体可以看我的GitHub中的项目。

配合 OpenWRT 获取家里的wan口IP

ubus call network.interface.wan status | jsonfilter -e '@["ipv4-address"][0].address'

image
image
image

家用网络布局方面的一点心得

也是因为今年的疫情原因,所以才有空来好好折腾自己的家庭网络。
作为互联网相关行业的从业者和对科技的爱好和热情,还是有必要为自己打造一套舒适的上网和工作环境的。

下面有一些自己的看法,分享给大家。

运营商网络选择

从目前国内的情况来看,选择电信对于南方还是没有错的,且上海的国际出口是非常优秀的。
当然对于北方来说,联通也是可选的,不同的运营商拥有自己的骨干网络,对于国际的出口也各不相同。

从数据来看,电信的国际出口依然是最大的,并且有用高端CN2(GIA)出口,晚上的时候依然稳定不丢包。

速率选择

下面说的速率都是内网速率,外网速率只要给够了钱都可以,当然建议大家选择性价比最高的方案,因为你并不是无时不刻的在下载。

如果普通家用速率千兆足以,这并不是说和当年很多人说百兆足以一样。
且千兆其实是个槛,普通用户普及万兆的可能性目前来看并不高,且性价比非常低。

如果考虑日后的万兆(NAS)使用,布线是可以提前做调整的,可以选择光纤或超六类及以上(也不是说六类不可以万兆)。
光纤价格便宜但依赖特定设备和模块(服务器淘汰设备较便宜),电口兼容性好但价格较贵(个人用户普及度非常低,万兆电口交换目前也是天价)。

当然前提是你有 10Gbps sfp+ 的需求。
考虑光纤布线是比较靠谱的。如果你有自己的方案,也可以上万兆电口。

设备选择

家庭设备选择其实比较简单,大多数人购买的是普通路由器,普通路由器对于只需要上网的同学来说,是完全可以满足的。
但是对于喜欢折腾和一些特殊出口的同学来说,其实还是很难的,下面我会详细说这部分的内容。

以下直接借用 lintel 的原话

  • 当前能满足千兆NAT的路由器虽有很多,但是能满足无线千兆转发的路由器少之又少。
  • 想达到千兆WiFi的,你需要有千兆网卡的前提,路由器和网卡都是11ac 160MHz / 11ax才有机会达到。
  • 你既想要跑广告过滤什么的,又想跑千兆的NAT,这想法天真了。这就如同既想马儿跑,又想马儿不吃草的一样。
  • 千兆宽带的铁憨憨,多花点钱上更好的设备,宽带跟上了,设备也要跟上。什么x86软路由,高端的11AX路由器都是很好的选择,都花几千块钱买了宽带了,还缺几千块钱买新路由器么。
  • 别老是天天喷断流掉网什么的,有问题就帮忙找问题,协助解决。天朝不缺只会喷的键盘侠。
  • 穷?穷这是理由么?你看,一个才跑300Mbps,你买3个凑一起不就能达到千兆嘛。
  • 既然你都觉得这路由器不好了,那建议再去找找还有没有其他更合适的吧,如果还没有,那就先将就。
  • 少喷一点当前,多做一点贡献,众人拾柴薪火高。

有线设备

直接扔弱电箱
推荐设备:x86软路由(有虚拟机需求可上更好的配置,但建议尽可能压低功耗缩小空间)
独立的AC+POE交换机,控制各个AP,也可以为监控或门禁系统供电。

无线设备选择

推荐方案:独立AP或普通路由器作为AP使用。
无线其实应用场景不太可能是重度依赖速度的工作。

如果你说你想无线万兆,那我只能说,我上面说的都不适合你看。

路由系统选择

这里只说 ROS 爱快 OpenWRT 梅林 这四个比较常见的。

这四个系统都是比较优秀的路由器系统。
不要问会不会断流,本身都不会存在断流的问题,也没有性能的高低,只是他们的面向群体不一样。
就和 GitHub 和 GitLab 的区别,你能说谁好谁坏吗?

梅林:硬路由博通系的选择,普通用户的选择。
OpenWRT:软路由,x86,有一定开发能力的个人用户选择。
爱快:软路由,x86,对于不懂网络或新手,或习惯图形界面的普通用户选择。
ROS:专业用户的选择,企业用户,租房大客户,例如开N个PPPoE提供租客使用(非网络运维不建议尝试)。

小米等之类的他们是什么系统?其实小米就是 OpenWRT 改,
各家反正都有一个 Base 的基础上修改的,当然也可能有自己的系统。
但他们都是 Linux 内核,也离不开一些常见的嵌入式软件,例如 udhcp dnsmasq 等等。

路由系统的使用方式

不推荐开个虚拟机,然后装2-3个路由系统套娃使用,这是小白不懂的用户才会这样去操作。
根据我上面说的,选择你觉得最合适的系统即可。

在使用的时候,还是希望大家了解常见的网络协议,路由的本质。
配合开源的软件,很容易达到N网融合、透明转发等等效果。

诸如我们强大的科学上网等等。

JavaScript中数组迭代方法

使用数组总是会碰到数组的遍历(迭代)操作。说到迭代,可能会立马想起for语句对数组进行迭代。
比如需要迭代出下面数组peoples年龄(age)大于30的人名(name)。

var peoples = [
    {
        name: '张三',
        gender:'F',
        age: 29,
    },
    {
        name: '李四',
        gender:'F',
        age: 31,
    },
    {
        name: '王五',
        gender:'F',
        age: 21,
    },
    {
        name: 'tony',
        gender:'F',
        age: 33,
    },
    {
        name: 'cassie',
        gender:'M',
        age: 29,
    },
]
for (var i = 0; i < peoples.length; i++ ) {
    if (peoples[i].age > 30) {
        console.log(peoples[i].name + ':' + peoples[i].age);
    }
}
// 李四:31
// tony:33

但其实我们大可不必使用for循环,ES5为我们定义了几个数组迭代方法,它们都会将数组中的所有元素执行回调函数。

  • forEach:没有返回值,仅对数组进行操作。
  • every: 返回一个布尔值(true或false),判断每个数组项是否符合指定函数的条件,符合为true,反之为false。
  • some: 返回一个布尔值(true或false),判断每个数组项是否符合指定函数的条件,只要任何一项符合条件,就会返回true。
  • filter: 将条件为true的值返回,生成一个新的数组。
  • map: 返回所有的值,生成一个新的数组。
  • reduce:将该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。
  • reduceRight:和reduce一样,只是它是从末尾开始。
var peoples = [
   {
       name: '张三',
       gender:'F',
       age: 29,
   },
   {
       name: '李四',
       gender:'F',
       age: 31,
   },
   {
       name: '王五',
       gender:'F',
       age: 21,
   },
   {
       name: 'tony',
       gender:'F',
       age: 33,
   },
   {
       name: 'cassie',
       gender:'M',
       age: 29,
   },
]
peoples.forEach(item, index, array) => {
   if (item.age > 30) {
       console.log(item.name);
   }
})
const result = peoples.every((item, index, array) => item.age > 30); // false
const result = peoples.some(item, index, array) => item.age > 30); // true
const result = peoples.filter(item, index, array) => item.age > 30); // 0: {name: "李四", gender: "F", age: 31} 1: {name: "tony", gender: "F", age: 33}
const result = peoples.map(item, index, array) => item.age > 30); // [false, true, false, true, false]
// reduce
const result = peoples.reduce((preValue, item, index, array) => item.age > 30 && ++preValue || preValue, 0); // 2
const result = peoples.reduce((preValue, item, index, array) => item.age > 30 && item || preValue); // {name: "tony", gender: "F", age: 33}
const result = peoples.reduceRight((preValue, item, index, array) => item.age > 30 && item || preValue); // {name: "李四", gender: "F", age: 31}

JavaScript中函数的call和apply以及bind

上一篇介理清了this在不同场景中的指向,这一篇继续讲一下有关的内容。
Function对象中,都有call,apply,bind三个方法,他们可以将一个对象绑定到这个函数中的this

var c = 1;
var obj = {
    c: 2,
}
function sum (a, b) {
    console.log(this);
    console.log(this.c + a + b);
}
sum(5, 6); // window, 12
sum.call(obj, 5, 6); // { c: 2 }, 13
sum.apply(obj, [5, 6]); // { c: 2 }, 13

var f = sum.bind(obj); // ƒ sum
f(5, 6) // { c: 2 }, 13

OpenWrt/LEDE 挂载移动硬盘使用Samba共享存储

前些时间不是入手了NETGEAR R7800么,在这之前我一直用的小米的mini,虽然说够用,MTK7620的吞吐量和配置已经远远跟不上我的需求了,所以还是换了。

刷入LEDE

刷机方法非常简单只需要用TFTP协议上传文件就可以。

  • 链接路由器LAN口,设置本机IP为192.168.1.10。
  • 路由断电,按住reset不要松开,然后上电。
  • 电源灯显示橘色,等待一会,到随即电源灯白色闪烁,即可松开reset。
  • 打开terminal,使用curl -T xxx.img tftp://192.168.1.1即可上传文件自动开始刷机。

安装必要的工具

LEDE稳定版都会自带luci,但是我不太常用图形界面面,所以直接ssh到路由器就可以开始安装工具了,默认密码是admin

安装必要组件和USB扩展

我使用硬盘是ext4文件系统,是已经格式化好的,如果没有格式化的硬盘,还需要格式化操作,注意映射的位置,先看一眼ls /dev

opkg update
opkg install libext2fs kmod-fs-ext4 kmod-usb-storage-extras samba36-server

# 格式化
mkfs.ext4 /dev/sda1

挂载磁盘

然后就是挂载和设置共享了,其实挂载很简单,我一般懒得设置启动挂载,所以直接手动敲命令就可以了。

mkdir /data
mount /dev/sda1 /data

设置samba

配置文件路径在 /etc/config/samba,内容也很简单。

config samba
    option name 'Lede'
    option workgroup 'WORKGROUP'
    option description 'Lede'
    option homes '1'

config sambashare
    option name 'data'
    option path '/data'
    option read_only 'no'
    option guest_ok 'yes'
    option create_mask '0777'
    option dir_mask '0777'

设置完毕后启动即可。

/etc/init.d/samba start|stop|reload

promise 和 generator

Auout Promise

Promise 作为 ECMAScript 6 的异步规范,为我们解决了很多异步回调问题,Ajax 出现的时候,刮来了一阵异步之风,现在 Nodejs 火爆,又一阵异步狂风刮了过来。需求是越来越苛刻,用户对性能的要求也是越来越高,随之而来的是页面异步操作指数般增长,如果不能恰当的控制代码逻辑,我们就会陷入无穷的回调地狱中。

由于 JavaScript 的单线程性质,我们必须等待上一个事件执行完成才能处理下一步,下面是一个很经典的例子。

$(function() { 
  // 获取模板 
  $.get(url, function(tpl) { 
    // 获取数据 
    $.get(url2, function(data) { 
    // 构建 DOMString 
      makeHtml(tpl, data, function(str) { 
      // 插入到 DOM 中 
        $(obj).html(str); 
      }); 
    }); 
  }); 
});

上面是一个很经典的例子,为了首屏快速加载,我们会把模板放在服务器,当用户获取数据时,我们会拉取模板并且拉取数据,最终拼接起来插入DOM中,但这就可能陷入了无限的回调地狱中,代码看起来既不美观又容易扰乱我们的思维,下面我们就用Promise来解决上面的问题。

// 伪代码
new Promise(ready).then(getTpl).then(getData).then(makeHtml).resolve();

如果变成上面这样,是不是就清晰多了?不过的确使用Promise上面的代码可以成立,那么我们就来详细介绍一下。

Deferred & Promise

在 Promise 之前,其实我们早已迎来的 jQuery 的 Deferred,当然它与 Promise 并不兼容,具体可以查看这里

创建 Promise 对象

// 创建一个promise对象
const promise = new Promise((resolve, reject) => {
  // do a thing, possibly async, then…
  if (/* everything turned out fine */) {
    resolve("Stuff worked!");
  } else {
    reject(Error("It broke"));
  }
});

Promise 构造函数包含一个参数和一个带有 resolve(解析)和 reject(拒绝)两个参数的回调。在回调中执行一些操作(例如异步),如果一切都正常,则调用 resolve,否则调用 reject,与普通旧版 JavaScript 中的 throw 一样,通常拒绝时会给出 Error 对象,但这不是必须的。Error 对象的优点在于它们能够捕捉堆追踪,因而使得调试工具非常有用。

// 使用刚才创建的promise对象
promise.then(result => {
  console.log(result); // "Stuff worked!"
}, err => {
  console.log(err); // Error: "It broke"
});

promise.then(result => {
  console.log(result); // "Stuff worked!"
}).catch(err => {
  console.log(err); // Error: "It broke"
});

then() 包含两个参数:一个用于成功情形的回调和一个用于失败情形的回调。这两个都是可选的,因此您可以只添加一个用于成功情形或失败情形的回调。
catch() 没有任何特殊之处,它只是 then(undefined, func) 的锦上添花,但可读性更强。注意,以上两个代码示例行为并不相同,后者相当于:

promise.then(result => {
  console.log(result); // "Stuff worked!"
}).then((undefined, err) => {
  console.log(err); // Error: "It broke"
})

两者之间的差异虽然很微小,但非常有用。Promise 拒绝后,将跳至带有拒绝回调的下一个 then()(或具有相同功能的 catch())。如果是 then(func1, func2),则 func1 或 func2 中的一个将被调用,而不会二者均被调用。但如果是 then(func1).catch(func2),则在 func1 拒绝时两者均被调用,因为它们在该链中是单独的步骤。

JavaScript promise 最初是在 DOM 中出现并称为Futures,之后重命名为Promises,最后又移入 JavaScript。在 JavaScript 中使用比在 DOM 中更好,因为它们将在如 Node.js 等非浏览器 JS 环境中可用(而它们是否会在核心 API 中使用 Promise 则是另外一个问题)。

尽管它们是 JavaScript 的一项功能,但 DOM 也能使用。实际上,采用异步成功/失败方法的所有新 DOM API 均使用 promise。

兼容性问题

现在前端的兼容性问题在babel出现后已经不存在较大的问题了,对于这种API,也基本用一种叫polyfill(垫片)的技术,当然 Promise 也有其响应的polyfill

下面列出已经原生支持的浏览器,IE全版本全军覆没。

Chrome Opera Firefox Safari Microsoft Edge
32+ 19+ 29+ 8+ all

Promise API 参考

方法名 说明
Promise.resolve(promise); 返回 Promise(仅当 promise.constructor == Promise 时)
Promise.resolve(thenable); 从 thenable 中生成一个新 Promise。thenable 是具有 then() 方法的类似于 Promise 的对象。
Promise.resolve(obj); 在此情况下,生成一个 Promise 并在执行时返回 obj。
Promise.reject(obj); 生成一个 Promise 并在拒绝时返回 obj。为保持一致和调试之目的(例如堆叠追踪), obj 应为 instanceof Error。
Promise.all(array); 生成一个 Promise,该 Promise 在数组中各项执行时执行,在任意一项拒绝时拒绝。每个数组项均传递给 Promise.resolve,因此数组可能混合了类似于 promise 的对象和其他对象。执行值是一组有序的执行值。拒绝值是第一个拒绝值。
Promise.race(array); 生成一个 Promise,该 Promise 在任意项执行时执行,或在任意项拒绝时拒绝,以最先发生的为准。

构造函数

new Promise((resolve, reject) => {});

// resolve(thenable)
// Promise 依据 thenable 的结果而执行/拒绝。

// resolve(obj)
// Promise 执行并返回 obj

// reject(obj)
// Promise 拒绝并返回 obj。为保持一致和调试(例如堆叠追踪),obj 应为 instanceof Error。 在构造函数回调中引发的任何错误将隐式传递给 reject()。

实例方法

promise.then(onFulfilled, onRejected)	

// 当/如果“promise”解析,则调用 onFulfilled。当/如果“promise”拒绝,则调用 onRejected。 两者均可选,如果任意一个或两者都被忽略,则调用链中的下一个 onFulfilled/onRejected。 两个回调都只有一个参数:执行值或拒绝原因。 then() 将返回一个新 promise,它相当于从 onFulfilled/onRejected 中返回、 通过 Promise.resolve 传递的值。如果在回调中引发了错误,返回的 promise 将拒绝并返回该错误。

promise.catch(onRejected)	
// promise.then(undefined, onRejected)

generator

ES6 还为我们提供了 generator,它可让某些功能在某个位置退出(类似于return),但之后能以相同位置和状态恢复,例如:

function *addGenerator() {
  let i = 0;
  while (true) {
    i += yield i;
  }
}

注意函数名称前面的星号,这表示 generator。yield 关键字是我们的返回/恢复位置。我们可按下述方式使用:

const adder = addGenerator();
adder.next().value; // 0
adder.next(5).value; // 5
adder.next(5).value; // 10
adder.next(5).value; // 15
adder.next(50).value; // 65

更深入的不在这里讲解,generator其实存在诸多问题,所以在ES7中,我们有了更好的方式,asyncawait,等下一篇详解。

terminal 下的一些 proxy 操作

由于众所周知的原因,国内有时候必须科学上网才可以友好的进行日常劳作。

http 和 https 协议在 terminal 中的使用方式 配合 Shadowsocks 等软件开放 http 转发

export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;

针对 github 如果使用 ssh 协议 可以在 ~/.ssh/config 中加入

Host github.com
    HostName github.com
    User git
    ProxyCommand nc -X 5 -x 127.0.0.1:1086 %h %p

当然还有个终极神器 proxychains

#macOS
brew install proxychains-ng
proxychains4 git clone [email protected]:torvalds/linux.git

配置方法

~/.proxychains » cat proxychains.conf 
[ProxyList]
socks5 127.0.0.1 1086

~/.proxychains » pwd
/Users/william/.proxychains

macrotasks vs microtasks

macrotasks

func Browser Node
I/O
setTimeout
setInterval
setImmediate
requestAnimationFrame

microtasks

func Browser Node
Iprocess.nextTick
MutationObserver
Promise.then catch finally
// see: https://gist.github.com/yyx990803/d1a0eaac052654f93a1ccaab072076dd

// macrotasks: setTimeout, setInterval, setImmediate, I/O, UI rendering
// microtasks: process.nextTick, Promise, MutationObserver

console.log(1)

setTimeout(() => {
    console.log(2)
}, 0);

setTimeout(() => {
    console.log(3)
}, 0);

new Promise((resolve, reject) => {
    console.log('Promise 1');
    resolve();
}).then(() => {
    console.log('Promise 2');
}).then(() => {
    console.log('Promise 3');
});

process.nextTick(() => {
    console.log('process 1')
});

process.nextTick(() => {
    console.log('process 2')
});
/**
 * ➜  ~ node task.js
 * 1
 * Promise 1
 * process 1
 * process 2
 * Promise 2
 * Promise 3
 * 2
 * 3
 */

Sublime Text 3 Package

Sublime Text 3是我目前用的最顺手的编辑器,对比庞大的IDE,除工作需要外,几乎任何语言都可以在Sublime Text下工作,包括简单的C项目也可以配置Build选项来完成Build操作。

Package Control

安装插件之前,必须安装Package Control,对于目前的新版,官方已经集成了安装指令,只需要按cmd+shift+p调出快捷命令创输入 package install即可调出安装Package Control,然后输入pci调出Package Control Install Package,在列表中即可安装所有的插件包,网页地址:https://packagecontrol.io/

All Autocomplete

Extend Sublime autocompletion to find matches in all open files of the current window

Alignment

Easy alignment of multiple selections and multi-line selections

Bracket​Highlighter

Bracket and tag highlighter for Sublime Text http://facelessuser.github.io/BracketHighlighter/

Convert​To​UTF8

A Sublime Text 2 & 3 plugin for editing and saving files encoded in GBK, BIG5, EUC-KR, EUC-JP, Shift_JIS, etc.

IMESupport (Windows)

IMESupport for Sublime Text 2/3

FE

Emmet

see https://packagecontrol.io/packages/Emmet

Java​Script Completions

JavaScript Completions for sublime text. It helps you to write your scripts more quickly with hints and completions.

Babel

Syntax definitions for ES6 JavaScript with React JSX extensions.

React​JS

Sublime Text helpers for React. Syntax highlighting DEPRECATED in favor of babel/babel-sublime

Vue Syntax Highlight

Sublime Text syntax highlighting for single-file Vue components

LESS / Sass / Stylus

syntax highlighting for Sublime Text.

Color Highlighter

ColorHighlighter - is a plugin for the Sublime text 2 and 3, which underlays selected hexadecimal colorcodes (like "#FFFFFF", "rgb(255,255,255)", "white", etc.) with their real color. Also, plugin adds color picker to easily modify colors.

除上述之外,可以查看 https://packagecontrol.io/browse/popular

Linux 磁盘相关命令

先备份

vgdisplay 显示LVM卷组的信息
vgcreate 创建LVM卷组
vgscan 扫描并显示系统中的卷组
vgextend 向卷组中添加物理卷
vgreduce 从卷组中删除物理卷
vgchange 修改卷组属性
vgconvert 转换卷组元数据格式
vgremove 用于用户删除LVM卷组

pvcreate 将物理硬盘分区初始化为物理卷
pvdisplay 显示物理卷的属性
pvremove 删除一个存在的物理卷
pvck 检测物理卷的LVM元数据的一致性
pvchange 修改物理卷属性
pvs 输出物理卷信息报表
partprobe 不重启的情况下重读分区

lvdisplay 显示逻辑卷属性
lvresize 调整逻辑卷空间大小
lvreduce 收缩逻辑卷空间
lvextend 扩展逻辑卷空间
lvcreate 创建逻辑卷
lvremove 删除逻辑卷
lvscan 扫描逻辑卷
lvchange -an # inactive
lvchange -ay # active

问题

在将几块盘做LVM时,遇到一个之前都没遇到过的问题
Can't open /dev/sdb1 exclusively. Mounted filesystem?
首先第一反应就是查看这个分区是否已经在使用了,但是没有。
查看硬盘的一些信息: cat /proc/partitions

接着看一些底层的信息:
dmsetup 是一个底层的逻辑卷管理, dm 应该是 Device Mapper 简称。
dmsetup status

▶ ll /dev/mapper

total 0
crw------- 1 root root 10, 236 Jan 18 16:26 control
lrwxrwxrwx 1 root root       7 Jan 20 21:08 pve-data -> ../dm-5
lrwxrwxrwx 1 root root       7 Jan 20 21:08 pve-data_tdata -> ../dm-3
lrwxrwxrwx 1 root root       7 Jan 20 21:08 pve-data_tmeta -> ../dm-2
lrwxrwxrwx 1 root root       7 Jan 20 21:08 pve-data-tpool -> ../dm-4
lrwxrwxrwx 1 root root       7 Jan 20 20:55 pve-root -> ../dm-1
lrwxrwxrwx 1 root root       7 Jan 20 20:51 pve-swap -> ../dm-0
lrwxrwxrwx 1 root root       8 Jan 20 21:14 pve-vm--100--disk--0 -> ../dm-40
lrwxrwxrwx 1 root root       8 Jan 20 21:13 pve-vm--101--disk--0 -> ../dm-39
lrwxrwxrwx 1 root root       8 Jan 20 21:14 pve-vm--102--disk--0 -> ../dm-41
lrwxrwxrwx 1 root root       8 Jan 20 21:13 pve-vm--103--disk--0 -> ../dm-42
lrwxrwxrwx 1 root root       8 Jan 20 21:24 pve-vm--104--disk--0 -> ../dm-43

使用 dmsetup remove xxx 移除掉就可以了

yii2 旗标位处理公共代码

<?php
/**
 * This file is part of the Muggle.
 * @copyright Copyright (c) 2017 Hangzhou Muggle Network Technology Co., Ltd.
 * @author William Chan <[email protected]>
 */
namespace app\models;

use Yii;
use yii\db\ActiveRecord;
use yii\db\Expression;

/**
 * 旗标位处理公共代码
 *
 * @author William Chan <[email protected]>
 */
trait FlagTrait
{
    /**
     * 判断属性上是否有某个旗标 (bit)
     * @param int|string $flag 旗标值或名称
     * @return bool
     */
    public function hasFlag($flag)
    {
        return $this->flag & $this->intFlagBit($flag) ? true : false;
    }

    /**
     * 判断属性上是否完全拥有某些旗标组合
     * @param int $flag 旗标组合值
     * @return bool
     */
    public function hasFullFlag($flag)
    {
        $flag = $this->intFlagBit($flag);
        return ($this->flag & $flag) === $flag ? true : false;
    }

    /**
     * 添加旗标
     * @param int|string $flag 旗标值或名称
     * @param bool $sync 是否同步写入数据库
     */
    public function addFlag($flag, $sync = false)
    {
        $flag = $this->intFlagBit($flag);
        $this->flag |= $flag;
        if ($sync && $this instanceof ActiveRecord) {
            $this->updateAll(['flag' => new Expression('flag | ' . $flag)], $this->getOldPrimaryKey(true));
        }
    }

    /**
     * 移除旗标
     * @param int|string $flag 旗标值或名称
     * @param bool $sync 是否同步写入数据库
     */
    public function removeFlag($flag, $sync = false)
    {
        $flag = $this->intFlagBit($flag);
        $this->flag &= ~$flag;
        if ($sync === true && $this instanceof ActiveRecord) {
            $this->updateAll(['flag' => new Expression('flag & ~' . $flag)], $this->getOldPrimaryKey(true));
        }
    }

    /**
     * 切换旗标
     * @param int|string $flag 旗标值或名称
     * @param bool $sync 是否同步写入数据库
     */
    public function toggleFlag($flag, $sync = false)
    {
        $flag = $this->intFlagBit($flag);
        $this->flag ^= $flag;
        if ($sync === true && $this instanceof ActiveRecord) {
            $this->updateAll(['flag' => new Expression('flag ^ ' . $flag)], $this->getOldPrimaryKey(true));
        }
    }

    /**
     * @param int|string $flag 旗标值或名称
     * @return int
     */
    private function intFlagBit($flag)
    {
        if (is_int($flag)) {
            return $flag;
        }
        $key = 'self::FLAG_' . strtoupper($flag);
        return defined($key) ? constant($key) : 0;
    }

    /**
     * 设置标记组
     * @param array $values
     */
    public function setFlags($values)
    {
        if (is_array($values)) {
            $options = static::flagOptions();
            foreach ($values as $bit => $value) {
                $bit = intval($bit);
                if (!isset($options[$bit])) {
                    continue;
                } else {
                    if ($value['have'] === true) {
                        $this->addFlag($bit);
                    } else {
                        $this->removeFlag($bit);
                    }
                }
            }
        }
    }

    /**
     * 获取标记组
     * have (bool) 代表是否设置
     * 管理员显示全部标记
     * ```json
     * {
     *     "0x1": {
     *         "have": true,
     *         "label": "超级管理员",
     *     },
     *     "0x2": {
     *         "have": false,
     *         "label": "微信管理员",
     *     }
     * }
     * ```
     * @param bool $labels 是否强制显示label 有些label不能给用户看
     * @return array
     */
    public function getFlags($labels = false)
    {
        $flags = [];
        $isSuper = Yii::$app->user->isSuper;
        foreach (static::flagOptions() as $flag => $label) {
            $have = $this->hasFlag($flag);
            if ($isSuper || $have) {
                $dat = ['have' => $have];
                if ($isSuper || $labels) {
                    $dat['label'] = $label;
                }
                $flags[$flag] = $dat;
            }
        }
        return $flags;
    }

}

对浙江杭州电信ITV的抓包研究 Part 2

主要是赘述原理和过程,下方有抓包的内容。

  • 本篇需要你了解基本的 VLAN HTTP 抓包 app开发模式 Web前端 流媒体协议。
  • 本篇着重叙述机顶盒的认证原理。
  • 本篇篇末还是继续介绍如何抓包。

机顶盒

本质是个安卓大家都知道,这也是可以找到的技术成本最低的可安装APP,可扩展的方案。
从我拿到的这款中兴的机顶盒来看,所有的启动画面都是一个浏览器加原生app界面完成的,可以理解为完全就是一个hybrid app

app提供了很多内置的接口,都是通过JavaScript调用的,并且杭州电信整个机顶盒登录流程走的均是http(专线内网),当然你需要过第一步DHCP认证加入专线。

上游可控

机顶盒的固件升级(强制),机顶盒内的设置和家用的猫是一样的,均是上游可控,用户看到的设置界面都不是最高权限。

配置也可以做到上游下发,目前小部分配置是的,也许是因为各家使用的机顶盒型号太多,没有做到完全下发。

认证过程

认证过程均为机顶盒打开浏览器使用form表单构建POST请求完成,由于需要调用机顶盒内部API获取一些关键信息,所以被做成了hybrid模式。

认证过程步骤较多,由于一些不可抗因素,这里不做分析和拆解,有兴趣的同学可自行抓包查看,整个过程其实非常简单

是否通过认证不影响视频播放,只影响API的调用

认证后端使用的是Java编写,其中有多个核验参数,例如MAC地址,机顶盒序列号等

认证成功

成功后会下发tempKeyUserTokenJSESSION(cookie),具体哪些起作用还是全部起作用,这里不做赘述。

使用这些认证信息即可调用 API,例如下面这个最重要的 API,获取 iptv 源,均是使用的HTTP方法,并且全部由一个用户不可见的 html + form 构建表单发出。

10.0.0.10	115.233.41.149	HTTP	843	POST /EPG/jsp/getchannellistHWCTC.jsp HTTP/1.1  (application/x-www-form-urlencoded)

任意设备播放 rtsp 流

对于简单的使用 rtsp(这货很多人说走外网,杭州电信是走专线,不会影响上网)
可以考虑将下方IP地址 rule 到 iptv 的接口(杭州电信专用,其他地区请自行抓包)

115.233.41.0/24,122.229.6.0/24,122.229.17.0/24,220.191.136.0/24,115.233.1.0/24,115.233.41.0/24,115.233.200.0/24	

这样你就可以使用我最下方列出的 rtsp://xx 在任意设备上自由播放了,这种方式目前来看还是非常稳定的。

组播

关于组播,下一篇介绍 OpenWRT 和组播的设置,请先补全相关知识。

关于抓包

方案有很多种,我可以介绍几种不需要借助外部设备的方案。
请注意,我的方案均为将猫设置为桥接模式。

VLAN + 盒子自我认证模式

将猫上的 IPTV 接口和盒子接入路由器,或者使用单线绑定划分用户侧 VLAN 即上网和 IPTV 都走千兆端口(我使用的是这个方式)。
划分 VLAN 或桥接,自带交换机的路由请合理根据交换机的 VLAN 设置,打开盒子自我认证(杭州是DHCP+模式),使用 tcpdump 抓取盒子侧的端口收发包。

VLAN + 路由认证(我目前在使用的)

接线方式一样,不同的是在路由中新建接口拿到内网IP,需要使用 ip rule 将盒子的内网IP的流量都发往 IPTV 接口。
盒子的内网IP使用静态绑定,盒子使用普通的 DHCP 模式获取路由器所在的内网 IP 即可。

快速分析 cap 文件

直接过滤出 http 协议,根据报文大小倒序排,过滤掉PNG等图片文件即可。

用 React 写了一个版本

随手写的,从脚手架创建到写完不到两个小时,用了TypeScript,后期需要进行整理,现在没时间,路由和状态管理也没用上,主要是用上了 Motion Design,不得不佩服蚂蚁金服的设计,很厉害。

一种旗标简易算法

最近这几天,后端代码写的超过前端了,也很忙,博客很久没写了,还是输出一些吧。

使用一些比较冷门的运算符,做一个简易的旗标,前端很少这么用,因为受限于JavaScript语言的弱类型不确定性。

// 添加一个标记
0x20 | 0 // 32

// 添加多个标记
(0x40 | 0x80 | 0x100) | 32  // 480

// 查询一个标记 
(0x20 & 480) !== 0 // true

// 查询多个标记 
((0x20 | 0x80) & 480) !== 0 // true

// 切换一个标记的状态 
0x20 ^ 480 // 448
0x20 ^ 448 // 480

// 删除一个标记
480 & ~0x20 // 448 
448 & ~0x40 // 384

// 删除多个标记
480 & ~(0x20 | 0x40) // 384

获取China IP

curl -s http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest\
 | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }'
1.0.1.0/24
1.0.2.0/23
1.0.8.0/21
1.0.32.0/19
1.1.0.0/24
1.1.2.0/23
1.1.4.0/22
1.1.8.0/24
1.1.9.0/24
1.1.10.0/23
1.1.12.0/22
1.1.16.0/20
1.1.32.0/19
1.2.0.0/23
1.2.2.0/24
1.2.4.0/24
1.2.5.0/24
1.2.6.0/23
1.2.8.0/24
1.2.9.0/24
1.2.10.0/23
1.2.12.0/22
1.2.16.0/20
1.2.32.0/19
1.2.64.0/18
1.3.0.0/16
1.4.1.0/24
1.4.2.0/23
1.4.4.0/24
1.4.5.0/24
1.4.6.0/23
1.4.8.0/21
1.4.16.0/20
1.4.32.0/19
1.4.64.0/18
1.8.0.0/16
1.10.0.0/21
1.10.8.0/23
1.10.11.0/24
1.10.12.0/22
1.10.16.0/20
1.10.32.0/19
1.10.64.0/18
1.12.0.0/14
1.24.0.0/13
1.45.0.0/16
1.48.0.0/15
1.50.0.0/16
1.51.0.0/16
1.56.0.0/13
1.68.0.0/14
1.80.0.0/13
1.88.0.0/14
1.92.0.0/15
1.94.0.0/15
1.116.0.0/15
1.118.0.0/16
1.119.0.0/17
1.119.128.0/17
1.180.0.0/14
1.184.0.0/15
1.188.0.0/14
1.192.0.0/13
1.202.0.0/15
1.204.0.0/14
14.0.0.0/21
14.0.12.0/22
14.1.0.0/22
14.1.24.0/22
14.1.96.0/22
14.1.108.0/22
14.16.0.0/12
14.102.128.0/22
14.102.156.0/22
14.102.180.0/22
14.103.0.0/16
14.104.0.0/13
14.112.0.0/12
14.130.0.0/15
14.134.0.0/15
14.144.0.0/12
14.192.4.0/22
14.192.56.0/22
14.192.60.0/22
14.192.76.0/22
14.196.0.0/15
14.204.0.0/15
14.208.0.0/12
27.0.128.0/22
27.0.132.0/22
27.0.160.0/22
27.0.164.0/22
27.0.188.0/22
27.0.204.0/22
27.0.208.0/22
27.0.212.0/22
27.8.0.0/13
27.16.0.0/12
27.34.232.0/21
27.36.0.0/14
27.40.0.0/13
27.50.40.0/21
27.50.128.0/17
27.54.72.0/21
27.54.152.0/21
27.54.192.0/18
27.98.208.0/20
27.98.224.0/19
27.99.128.0/17
27.103.0.0/16
27.106.128.0/18
27.106.204.0/22
27.109.32.0/19
27.109.124.0/22
27.112.0.0/18
27.112.80.0/20
27.112.112.0/22
27.112.116.0/22
27.113.128.0/18
27.115.0.0/17
27.116.44.0/22
27.121.72.0/21
27.121.120.0/21
27.123.232.0/22
27.128.0.0/15
27.131.220.0/22
27.144.0.0/16
27.148.0.0/14
27.152.0.0/13
27.184.0.0/13
27.192.0.0/11
27.224.0.0/14
36.0.0.0/22
36.0.8.0/21
36.0.16.0/20
36.0.32.0/19
36.0.64.0/18
36.0.128.0/17
36.1.0.0/16
36.4.0.0/14
36.16.0.0/12
36.32.0.0/14
36.36.0.0/16
36.37.0.0/19
36.37.36.0/23
36.37.39.0/24
36.37.40.0/21
36.37.48.0/20
36.40.0.0/13
36.48.0.0/15
36.51.0.0/16
36.56.0.0/13
36.96.0.0/11
36.128.0.0/10
36.192.0.0/11
36.248.0.0/14
36.254.0.0/16
36.255.116.0/22
36.255.128.0/22
36.255.164.0/22
36.255.172.0/22
36.255.176.0/22
36.255.192.0/22
36.255.220.0/22
39.0.0.0/24
39.0.2.0/23
39.0.4.0/22
39.0.8.0/21
39.0.16.0/20
39.0.32.0/19
39.0.64.0/18
39.0.128.0/17
39.64.0.0/11
39.96.0.0/13
39.104.0.0/14
39.108.0.0/16
39.128.0.0/10
40.72.0.0/15
40.125.128.0/17
40.126.64.0/18
42.0.0.0/22
42.0.8.0/21
42.0.16.0/21
42.0.24.0/22
42.0.32.0/19
42.0.128.0/17
42.1.0.0/19
42.1.32.0/20
42.1.48.0/21
42.1.56.0/22
42.1.128.0/17
42.4.0.0/14
42.48.0.0/15
42.50.0.0/16
42.51.0.0/16
42.52.0.0/14
42.56.0.0/14
42.62.0.0/17
42.62.128.0/19
42.62.160.0/20
42.62.180.0/22
42.62.184.0/21
42.63.0.0/16
42.80.0.0/15
42.83.64.0/20
42.83.80.0/22
42.83.88.0/21
42.83.96.0/19
42.83.128.0/17
42.84.0.0/14
42.88.0.0/13
42.96.64.0/19
42.96.96.0/21
42.96.108.0/22
42.96.112.0/20
42.96.128.0/17
42.97.0.0/16
42.99.0.0/18
42.99.64.0/19
42.99.96.0/20
42.99.112.0/22
42.99.120.0/21
42.100.0.0/14
42.120.0.0/15
42.122.0.0/16
42.123.0.0/19
42.123.36.0/22
42.123.40.0/21
42.123.48.0/20
42.123.64.0/18
42.123.128.0/17
42.128.0.0/12
42.156.0.0/19
42.156.36.0/22
42.156.40.0/21
42.156.48.0/20
42.156.64.0/18
42.156.128.0/17
42.157.0.0/16
42.158.0.0/15
42.160.0.0/12
42.176.0.0/13
42.184.0.0/15
42.186.0.0/16
42.187.0.0/18
42.187.64.0/19
42.187.96.0/20
42.187.112.0/21
42.187.120.0/22
42.187.128.0/17
42.192.0.0/15
42.194.0.0/21
42.194.8.0/22
42.194.12.0/22
42.194.16.0/20
42.194.32.0/19
42.194.64.0/18
42.194.128.0/17
42.195.0.0/16
42.196.0.0/14
42.201.0.0/17
42.202.0.0/15
42.204.0.0/14
42.208.0.0/12
42.224.0.0/12
42.240.0.0/17
42.240.128.0/17
42.242.0.0/15
42.244.0.0/14
42.248.0.0/13
43.224.12.0/22
43.224.24.0/22
43.224.44.0/22
43.224.52.0/22
43.224.56.0/22
43.224.64.0/22
43.224.68.0/22
43.224.72.0/22
43.224.80.0/22
43.224.100.0/22
43.224.144.0/22
43.224.160.0/22
43.224.176.0/22
43.224.184.0/22
43.224.200.0/22
43.224.204.0/22
43.224.208.0/22
43.224.212.0/22
43.224.216.0/22
43.224.224.0/22
43.224.240.0/22
43.225.76.0/22
43.225.84.0/22
43.225.120.0/22
43.225.124.0/22
43.225.140.0/22
43.225.172.0/22
43.225.180.0/22
43.225.208.0/22
43.225.216.0/22
43.225.220.0/22
43.225.224.0/22
43.225.228.0/22
43.225.232.0/22
43.225.236.0/22
43.225.240.0/22
43.225.244.0/22
43.225.252.0/22
43.226.32.0/22
43.226.36.0/22
43.226.40.0/22
43.226.44.0/22
43.226.48.0/22
43.226.52.0/22
43.226.56.0/22
43.226.60.0/22
43.226.64.0/22
43.226.68.0/22
43.226.72.0/22
43.226.76.0/22
43.226.80.0/22
43.226.84.0/22
43.226.88.0/22
43.226.92.0/22
43.226.96.0/22
43.226.100.0/22
43.226.104.0/22
43.226.108.0/22
43.226.112.0/22
43.226.116.0/22
43.226.120.0/22
43.226.128.0/22
43.226.132.0/22
43.226.136.0/22
43.226.140.0/22
43.226.144.0/22
43.226.148.0/22
43.226.152.0/22
43.226.156.0/22
43.226.160.0/22
43.226.164.0/22
43.226.168.0/22
43.226.172.0/22
43.226.176.0/22
43.226.180.0/22
43.226.184.0/22
43.226.188.0/22
43.226.192.0/22
43.226.196.0/22
43.226.200.0/22
43.226.204.0/22
43.226.208.0/22
43.226.212.0/22
43.226.236.0/22
43.226.240.0/22
43.226.244.0/22
43.226.248.0/22
43.226.252.0/22
43.227.0.0/22
43.227.4.0/22
43.227.8.0/22
43.227.32.0/22
43.227.36.0/22
43.227.40.0/22
43.227.44.0/22
43.227.48.0/22
43.227.52.0/22
43.227.56.0/22
43.227.60.0/22
43.227.64.0/22
43.227.68.0/22
43.227.72.0/22
43.227.76.0/22
43.227.80.0/22
43.227.84.0/22
43.227.88.0/22
43.227.92.0/22
43.227.96.0/22
43.227.100.0/22
43.227.104.0/22
43.227.136.0/22
43.227.140.0/22
43.227.144.0/22
43.227.152.0/22
43.227.156.0/22
43.227.160.0/22
43.227.164.0/22
43.227.168.0/22
43.227.172.0/22
43.227.176.0/22
43.227.180.0/22
43.227.188.0/22
43.227.192.0/22
43.227.196.0/22
43.227.200.0/22
43.227.204.0/22
43.227.208.0/22
43.227.212.0/22
43.227.216.0/22
43.227.220.0/22
43.227.232.0/22
43.227.248.0/22
43.227.252.0/22
43.228.0.0/22
43.228.4.0/22
43.228.8.0/22
43.228.12.0/22
43.228.16.0/22
43.228.20.0/22
43.228.24.0/22
43.228.28.0/22
43.228.32.0/22
43.228.36.0/22
43.228.40.0/22
43.228.44.0/22
43.228.48.0/22
43.228.52.0/22
43.228.56.0/22
43.228.60.0/22
43.228.64.0/22
43.228.68.0/22
43.228.76.0/22
43.228.100.0/22
43.228.116.0/22
43.228.120.0/22
43.228.132.0/22
43.228.136.0/22
43.228.148.0/22
43.228.152.0/22
43.228.188.0/22
43.229.16.0/22
43.229.40.0/22
43.229.48.0/22
43.229.56.0/22
43.229.96.0/22
43.229.120.0/22
43.229.136.0/22
43.229.140.0/22
43.229.144.0/22
43.229.168.0/22
43.229.172.0/22
43.229.176.0/22
43.229.180.0/22
43.229.184.0/22
43.229.188.0/22
43.229.192.0/22
43.229.196.0/22
43.229.216.0/22
43.229.220.0/22
43.229.232.0/22
43.229.236.0/22
43.230.20.0/22
43.230.32.0/22
43.230.68.0/22
43.230.72.0/22
43.230.84.0/22
43.230.124.0/22
43.230.136.0/22
43.230.168.0/22
43.230.220.0/22
43.230.224.0/22
43.230.228.0/22
43.230.232.0/22
43.230.236.0/22
43.230.240.0/22
43.230.244.0/22
43.230.248.0/22
43.230.252.0/22
43.231.32.0/22
43.231.36.0/22
43.231.40.0/22
43.231.44.0/22
43.231.80.0/22
43.231.84.0/22
43.231.88.0/22
43.231.92.0/22
43.231.96.0/22
43.231.100.0/22
43.231.104.0/22
43.231.108.0/22
43.231.136.0/22
43.231.140.0/22
43.231.144.0/22
43.231.148.0/22
43.231.152.0/22
43.231.156.0/22
43.231.160.0/22
43.231.164.0/22
43.231.168.0/22
43.231.172.0/22
43.231.176.0/22
43.231.180.0/22
43.236.0.0/22
43.236.4.0/22
43.236.8.0/22
43.236.12.0/22
43.236.16.0/22
43.236.20.0/22
43.236.24.0/22
43.236.28.0/22
43.236.32.0/22
43.236.36.0/22
43.236.40.0/22
43.236.44.0/22
43.236.48.0/22
43.236.52.0/22
43.236.56.0/22
43.236.60.0/22
43.236.64.0/22
43.236.68.0/22
43.236.72.0/22
43.236.76.0/22
43.236.80.0/22
43.236.84.0/22
43.236.88.0/22
43.236.92.0/22
43.236.96.0/22
43.236.100.0/22
43.236.104.0/22
43.236.108.0/22
43.236.112.0/22
43.236.116.0/22
43.236.120.0/22
43.236.124.0/22
43.236.128.0/22
43.236.132.0/22
43.236.136.0/22
43.236.140.0/22
43.236.144.0/22
43.236.148.0/22
43.236.152.0/22
43.236.156.0/22
43.236.160.0/22
43.236.164.0/22
43.236.168.0/22
43.236.172.0/22
43.236.176.0/22
43.236.180.0/22
43.236.184.0/22
43.236.188.0/22
43.236.192.0/22
43.236.196.0/22
43.236.200.0/22
43.236.204.0/22
43.236.208.0/22
43.236.212.0/22
43.236.216.0/22
43.236.220.0/22
43.236.224.0/22
43.236.228.0/22
43.236.232.0/22
43.236.236.0/22
43.236.240.0/22
43.236.244.0/22
43.236.248.0/22
43.236.252.0/22
43.237.0.0/22
43.237.4.0/22
43.237.8.0/22
43.237.12.0/22
43.237.16.0/22
43.237.20.0/22
43.237.24.0/22
43.237.28.0/22
43.237.32.0/22
43.237.36.0/22
43.237.40.0/22
43.237.44.0/22
43.237.48.0/22
43.237.52.0/22
43.237.56.0/22
43.237.60.0/22
43.237.64.0/22
43.237.68.0/22
43.237.72.0/22
43.237.76.0/22
43.237.80.0/22
43.237.84.0/22
43.237.88.0/22
43.237.92.0/22
43.237.96.0/22
43.237.100.0/22
43.237.104.0/22
43.237.108.0/22
43.237.112.0/22
43.237.116.0/22
43.237.120.0/22
43.237.124.0/22
43.237.128.0/22
43.237.132.0/22
43.237.136.0/22
43.237.140.0/22
43.237.144.0/22
43.237.148.0/22
43.237.152.0/22
43.237.156.0/22
43.237.160.0/22
43.237.164.0/22
43.237.168.0/22
43.237.172.0/22
43.237.176.0/22
43.237.180.0/22
43.237.184.0/22
43.237.188.0/22
43.237.192.0/22
43.237.196.0/22
43.237.200.0/22
43.237.204.0/22
43.237.208.0/22
43.237.212.0/22
43.237.216.0/22
43.237.220.0/22
43.237.224.0/22
43.237.228.0/22
43.237.232.0/22
43.237.236.0/22
43.237.240.0/22
43.237.244.0/22
43.237.248.0/22
43.237.252.0/22
43.238.0.0/22
43.238.4.0/22
43.238.8.0/22
43.238.12.0/22
43.238.16.0/22
43.238.20.0/22
43.238.24.0/22
43.238.28.0/22
43.238.32.0/22
43.238.36.0/22
43.238.40.0/22
43.238.44.0/22
43.238.48.0/22
43.238.52.0/22
43.238.56.0/22
43.238.60.0/22
43.238.64.0/22
43.238.68.0/22
43.238.72.0/22
43.238.76.0/22
43.238.80.0/22
43.238.84.0/22
43.238.88.0/22
43.238.92.0/22
43.238.96.0/22
43.238.100.0/22
43.238.104.0/22
43.238.108.0/22
43.238.112.0/22
43.238.116.0/22
43.238.120.0/22
43.238.124.0/22
43.238.128.0/22
43.238.132.0/22
43.238.136.0/22
43.238.140.0/22
43.238.144.0/22
43.238.148.0/22
43.238.152.0/22
43.238.156.0/22
43.238.160.0/22
43.238.164.0/22
43.238.168.0/22
43.238.172.0/22
43.238.176.0/22
43.238.180.0/22
43.238.184.0/22
43.238.188.0/22
43.238.192.0/22
43.238.196.0/22
43.238.200.0/22
43.238.204.0/22
43.238.208.0/22
43.238.212.0/22
43.238.216.0/22
43.238.220.0/22
43.238.224.0/22
43.238.228.0/22
43.238.232.0/22
43.238.236.0/22
43.238.240.0/22
43.238.244.0/22
43.238.248.0/22
43.238.252.0/22
43.239.0.0/22
43.239.4.0/22
43.239.8.0/21
43.239.16.0/22
43.239.20.0/22
43.239.24.0/22
43.239.28.0/22
43.239.32.0/22
43.239.36.0/22
43.239.40.0/22
43.239.44.0/22
43.239.48.0/22
43.239.116.0/22
43.239.120.0/22
43.239.172.0/22
43.239.176.0/22
43.240.0.0/22
43.240.48.0/22
43.240.56.0/22
43.240.60.0/22
43.240.68.0/22
43.240.72.0/22
43.240.76.0/22
43.240.84.0/22
43.240.124.0/22
43.240.128.0/22
43.240.132.0/22
43.240.136.0/22
43.240.156.0/22
43.240.160.0/22
43.240.164.0/22
43.240.168.0/22
43.240.172.0/22
43.240.176.0/22
43.240.180.0/22
43.240.184.0/22
43.240.188.0/22
43.240.192.0/22
43.240.196.0/22
43.240.200.0/22
43.240.204.0/22
43.240.208.0/22
43.240.212.0/22
43.240.216.0/22
43.240.220.0/22
43.240.236.0/22
43.240.240.0/22
43.240.244.0/22
43.240.248.0/22
43.240.252.0/22
43.241.0.0/22
43.241.4.0/22
43.241.8.0/22
43.241.12.0/22
43.241.16.0/22
43.241.20.0/22
43.241.48.0/22
43.241.76.0/22
43.241.80.0/22
43.241.84.0/22
43.241.88.0/22
43.241.92.0/22
43.241.112.0/22
43.241.168.0/22
43.241.172.0/22
43.241.176.0/22
43.241.180.0/22
43.241.184.0/22
43.241.196.0/22
43.241.208.0/22
43.241.212.0/22
43.241.216.0/22
43.241.220.0/22
43.241.224.0/22
43.241.228.0/22
43.241.232.0/22
43.241.236.0/22
43.241.240.0/22
43.241.248.0/22
43.241.252.0/22
43.242.8.0/22
43.242.12.0/22
43.242.16.0/22
43.242.20.0/22
43.242.24.0/22
43.242.28.0/22
43.242.44.0/22
43.242.48.0/22
43.242.52.0/22
43.242.56.0/22
43.242.60.0/22
43.242.64.0/22
43.242.72.0/22
43.242.76.0/22
43.242.80.0/22
43.242.84.0/22
43.242.88.0/22
43.242.92.0/22
43.242.96.0/22
43.242.144.0/22
43.242.148.0/22
43.242.152.0/22
43.242.156.0/22
43.242.160.0/22
43.242.164.0/22
43.242.168.0/22
43.242.180.0/22
43.242.188.0/22
43.242.192.0/22
43.242.196.0/22
43.242.204.0/22
43.242.216.0/22
43.242.220.0/22
43.242.252.0/22
43.243.4.0/22
43.243.8.0/22
43.243.12.0/22
43.243.16.0/22
43.243.24.0/22
43.243.88.0/22
43.243.128.0/22
43.243.136.0/22
43.243.144.0/22
43.243.148.0/22
43.243.156.0/22
43.243.168.0/22
43.243.180.0/22
43.243.188.0/22
43.243.228.0/22
43.243.232.0/22
43.243.244.0/22
43.246.0.0/22
43.246.4.0/22
43.246.8.0/22
43.246.12.0/22
43.246.16.0/22
43.246.20.0/22
43.246.24.0/22
43.246.28.0/22
43.246.32.0/22
43.246.36.0/22
43.246.40.0/22
43.246.44.0/22
43.246.48.0/22
43.246.52.0/22
43.246.56.0/22
43.246.60.0/22
43.246.64.0/22
43.246.68.0/22
43.246.72.0/22
43.246.76.0/22
43.246.80.0/22
43.246.84.0/22
43.246.88.0/22
43.246.92.0/22
43.246.96.0/22
43.246.112.0/22
43.246.212.0/22
43.246.228.0/22
43.247.4.0/22
43.247.8.0/22
43.247.44.0/22
43.247.48.0/22
43.247.68.0/22
43.247.76.0/22
43.247.84.0/22
43.247.88.0/22
43.247.92.0/22
43.247.96.0/22
43.247.100.0/22
43.247.108.0/22
43.247.112.0/22
43.247.148.0/22
43.247.152.0/22
43.247.176.0/22
43.247.180.0/22
43.247.184.0/22
43.247.188.0/22
43.247.196.0/22
43.247.200.0/22
43.247.204.0/22
43.247.208.0/22
43.247.212.0/22
43.247.216.0/22
43.247.220.0/22
43.247.224.0/22
43.247.228.0/22
43.247.232.0/22
43.247.236.0/22
43.247.240.0/22
43.247.244.0/22
43.247.248.0/22
43.247.252.0/22
43.248.0.0/22
43.248.4.0/22
43.248.20.0/22
43.248.28.0/22
43.248.48.0/22
43.248.76.0/22
43.248.80.0/22
43.248.84.0/22
43.248.88.0/22
43.248.92.0/22
43.248.96.0/22
43.248.100.0/22
43.248.104.0/22
43.248.108.0/22
43.248.112.0/22
43.248.116.0/22
43.248.120.0/22
43.248.124.0/22
43.248.128.0/22
43.248.132.0/22
43.248.136.0/22
43.248.140.0/22
43.248.144.0/22
43.248.148.0/22
43.248.176.0/22
43.248.180.0/22
43.248.184.0/22
43.248.188.0/22
43.248.192.0/22
43.248.196.0/22
43.248.200.0/22
43.248.204.0/22
43.248.208.0/22
43.248.228.0/22
43.248.232.0/22
43.248.244.0/22
43.249.0.0/22
43.249.4.0/22
43.249.8.0/22
43.249.24.0/22
43.249.120.0/22
43.249.132.0/22
43.249.136.0/22
43.249.144.0/22
43.249.148.0/22
43.249.152.0/22
43.249.156.0/22
43.249.160.0/22
43.249.164.0/22
43.249.168.0/22
43.249.192.0/22
43.249.236.0/22
43.250.4.0/22
43.250.12.0/22
43.250.16.0/22
43.250.20.0/22
43.250.28.0/22
43.250.32.0/22
43.250.36.0/22
43.250.72.0/22
43.250.96.0/22
43.250.100.0/22
43.250.104.0/22
43.250.108.0/22
43.250.112.0/22
43.250.116.0/22
43.250.128.0/22
43.250.144.0/22
43.250.148.0/22
43.250.160.0/22
43.250.168.0/22
43.250.172.0/22
43.250.176.0/22
43.250.200.0/22
43.250.212.0/22
43.250.216.0/22
43.250.220.0/22
43.250.236.0/22
43.250.244.0/22
43.251.4.0/22
43.251.8.0/22
43.251.12.0/22
43.251.36.0/22
43.251.116.0/22
43.251.192.0/22
43.251.232.0/22
43.251.236.0/22
43.251.244.0/22
43.252.40.0/22
43.252.48.0/22
43.252.56.0/22
43.252.224.0/22
43.254.0.0/22
43.254.4.0/22
43.254.8.0/22
43.254.24.0/22
43.254.36.0/22
43.254.44.0/22
43.254.52.0/22
43.254.64.0/22
43.254.72.0/22
43.254.84.0/22
43.254.88.0/22
43.254.92.0/22
43.254.100.0/22
43.254.104.0/22
43.254.112.0/22
43.254.116.0/22
43.254.128.0/22
43.254.136.0/22
43.254.140.0/22
43.254.144.0/22
43.254.148.0/22
43.254.152.0/22
43.254.156.0/22
43.254.168.0/22
43.254.172.0/22
43.254.180.0/22
43.254.184.0/22
43.254.188.0/22
43.254.192.0/22
43.254.196.0/22
43.254.200.0/22
43.254.208.0/22
43.254.220.0/22
43.254.224.0/22
43.254.228.0/22
43.254.232.0/22
43.254.236.0/22
43.254.240.0/22
43.254.248.0/22
43.254.252.0/22
43.255.0.0/22
43.255.4.0/22
43.255.8.0/22
43.255.16.0/22
43.255.48.0/22
43.255.64.0/22
43.255.68.0/22
43.255.72.0/22
43.255.76.0/22
43.255.84.0/22
43.255.96.0/22
43.255.108.0/22
43.255.144.0/22
43.255.168.0/22
43.255.176.0/22
43.255.184.0/22
43.255.192.0/22
43.255.200.0/22
43.255.204.0/22
43.255.208.0/22
43.255.212.0/22
43.255.224.0/22
43.255.228.0/22
43.255.232.0/22
43.255.244.0/22
45.65.16.0/22
45.65.20.0/22
45.65.24.0/22
45.65.28.0/22
45.112.132.0/22
45.112.188.0/22
45.112.208.0/22
45.112.212.0/22
45.112.216.0/22
45.112.220.0/22
45.112.228.0/22
45.112.232.0/22
45.112.236.0/22
45.113.12.0/22
45.113.16.0/22
45.113.20.0/22
45.113.24.0/22
45.113.28.0/22
45.113.40.0/22
45.113.52.0/22
45.113.56.0/22
45.113.72.0/22
45.113.108.0/22
45.113.144.0/22
45.113.148.0/22
45.113.168.0/22
45.113.176.0/22
45.113.184.0/22
45.113.200.0/22
45.113.204.0/22
45.113.208.0/22
45.113.212.0/22
45.113.216.0/22
45.113.220.0/22
45.113.228.0/22
45.113.240.0/22
45.113.252.0/22
45.114.0.0/22
45.114.12.0/22
45.114.32.0/22
45.114.40.0/22
45.114.52.0/22
45.114.96.0/22
45.114.104.0/22
45.114.108.0/22
45.114.136.0/22
45.114.196.0/22
45.114.200.0/22
45.114.228.0/22
45.114.236.0/22
45.114.252.0/22
45.115.44.0/22
45.115.100.0/22
45.115.120.0/22
45.115.132.0/22
45.115.144.0/22
45.115.156.0/22
45.115.164.0/22
45.115.200.0/22
45.115.212.0/22
45.115.216.0/22
45.115.228.0/22
45.115.236.0/22
45.115.244.0/22
45.115.248.0/22
45.116.12.0/22
45.116.16.0/22
45.116.20.0/22
45.116.24.0/22
45.116.32.0/22
45.116.36.0/22
45.116.52.0/22
45.116.96.0/22
45.116.100.0/22
45.116.140.0/22
45.116.152.0/22
45.116.208.0/22
45.117.8.0/22
45.117.20.0/22
45.117.40.0/22
45.117.68.0/22
45.117.124.0/22
45.117.252.0/22
45.119.52.0/22
45.119.60.0/22
45.119.64.0/22
45.119.68.0/22
45.119.72.0/22
45.119.104.0/22
45.119.116.0/22
45.119.232.0/22
45.120.100.0/22
45.120.140.0/22
45.120.164.0/22
45.120.220.0/22
45.120.240.0/22
45.121.20.0/22
45.121.52.0/22
45.121.64.0/22
45.121.68.0/22
45.121.72.0/22
45.121.92.0/22
45.121.96.0/22
45.121.104.0/22
45.121.172.0/22
45.121.176.0/22
45.121.212.0/22
45.121.240.0/22
45.121.244.0/22
45.121.248.0/22
45.121.252.0/22
45.122.0.0/22
45.122.4.0/22
45.122.8.0/22
45.122.12.0/22
45.122.16.0/22
45.122.20.0/22
45.122.24.0/22
45.122.28.0/22
45.122.32.0/22
45.122.36.0/22
45.122.40.0/22
45.122.60.0/22
45.122.64.0/22
45.122.68.0/22
45.122.72.0/22
45.122.76.0/22
45.122.80.0/22
45.122.84.0/22
45.122.88.0/22
45.122.92.0/22
45.122.96.0/21
45.122.104.0/22
45.122.108.0/22
45.122.112.0/22
45.122.116.0/22
45.122.160.0/22
45.122.164.0/22
45.122.168.0/22
45.122.172.0/22
45.122.176.0/22
45.122.180.0/22
45.122.184.0/22
45.122.188.0/22
45.122.192.0/22
45.122.196.0/22
45.122.200.0/22
45.122.204.0/22
45.122.208.0/22
45.122.212.0/22
45.122.216.0/22
45.123.28.0/22
45.123.32.0/22
45.123.36.0/22
45.123.44.0/22
45.123.48.0/22
45.123.52.0/22
45.123.56.0/22
45.123.60.0/22
45.123.64.0/22
45.123.68.0/22
45.123.72.0/22
45.123.76.0/22
45.123.80.0/22
45.123.84.0/22
45.123.88.0/22
45.123.120.0/22
45.123.128.0/22
45.123.132.0/22
45.123.136.0/22
45.123.148.0/22
45.123.152.0/22
45.123.156.0/22
45.123.164.0/22
45.123.168.0/22
45.123.172.0/22
45.123.176.0/22
45.123.180.0/22
45.123.184.0/22
45.123.204.0/22
45.123.212.0/22
45.123.224.0/22
45.123.228.0/22
45.123.232.0/22
45.123.236.0/22
45.123.240.0/22
45.123.244.0/22
45.123.248.0/22
45.123.252.0/22
45.124.0.0/22
45.124.20.0/22
45.124.28.0/22
45.124.32.0/22
45.124.36.0/22
45.124.44.0/22
45.124.68.0/22
45.124.76.0/22
45.124.80.0/22
45.124.100.0/22
45.124.124.0/22
45.124.172.0/22
45.124.176.0/22
45.124.208.0/22
45.124.248.0/22
45.124.252.0/22
45.125.12.0/22
45.125.16.0/22
45.125.24.0/22
45.125.28.0/22
45.125.32.0/22
45.125.44.0/22
45.125.52.0/22
45.125.56.0/22
45.125.76.0/22
45.125.80.0/22
45.125.84.0/22
45.125.88.0/22
45.125.92.0/22
45.125.96.0/22
45.125.100.0/22
45.125.104.0/22
45.125.136.0/22
45.126.48.0/22
45.126.52.0/22
45.126.100.0/22
45.126.108.0/22
45.126.112.0/22
45.126.116.0/22
45.126.120.0/22
45.126.212.0/22
45.126.220.0/22
45.127.8.0/22
45.127.12.0/22
45.127.36.0/22
45.127.96.0/22
45.127.116.0/22
45.127.124.0/22
45.127.128.0/22
45.127.144.0/22
45.127.148.0/22
45.127.156.0/22
45.127.216.0/22
45.248.8.0/22
45.248.80.0/22
45.248.84.0/22
45.248.88.0/22
45.248.96.0/22
45.248.100.0/22
45.248.104.0/22
45.248.108.0/22
45.248.128.0/22
45.248.132.0/22
45.248.204.0/22
45.248.208.0/22
45.248.212.0/22
45.248.216.0/22
45.248.220.0/22
45.248.224.0/22
45.248.228.0/22
45.248.232.0/22
45.248.236.0/22
45.248.240.0/22
45.248.244.0/22
45.248.248.0/22
45.248.252.0/22
45.249.0.0/22
45.249.4.0/22
45.249.12.0/22
45.249.16.0/22
45.249.20.0/22
45.249.24.0/22
45.249.28.0/22
45.249.32.0/22
45.249.36.0/22
45.249.92.0/22
45.249.112.0/22
45.249.180.0/22
45.249.188.0/22
45.249.192.0/22
45.249.196.0/22
45.249.200.0/22
45.249.204.0/22
45.249.208.0/22
45.249.212.0/22
45.250.12.0/22
45.250.16.0/22
45.250.28.0/22
45.250.32.0/22
45.250.36.0/22
45.250.40.0/22
45.250.76.0/22
45.250.80.0/22
45.250.84.0/22
45.250.88.0/22
45.250.92.0/22
45.250.96.0/22
45.250.104.0/22
45.250.108.0/22
45.250.112.0/22
45.250.116.0/22
45.250.120.0/22
45.250.124.0/22
45.250.128.0/22
45.250.132.0/22
45.250.136.0/22
45.250.140.0/22
45.250.144.0/22
45.250.148.0/22
45.250.152.0/22
45.250.164.0/22
45.250.180.0/22
45.250.184.0/22
45.250.188.0/22
45.250.192.0/22
45.251.0.0/22
45.251.8.0/22
45.251.16.0/22
45.251.20.0/22
45.251.52.0/22
45.251.84.0/22
45.251.88.0/22
45.251.92.0/22
45.251.96.0/22
45.251.100.0/22
45.251.120.0/22
45.251.124.0/22
45.251.136.0/22
45.251.140.0/22
45.251.144.0/22
45.251.148.0/22
45.251.152.0/22
45.251.156.0/22
45.251.160.0/22
45.251.164.0/22
45.251.168.0/22
45.251.172.0/22
45.251.176.0/22
45.251.180.0/22
45.251.184.0/22
45.251.188.0/22
45.251.192.0/22
45.251.196.0/22
45.251.200.0/22
45.251.204.0/22
45.251.208.0/22
45.251.212.0/22
45.251.216.0/22
45.251.220.0/22
45.251.224.0/22
45.252.0.0/22
45.252.4.0/22
45.252.8.0/22
45.252.12.0/22
45.252.16.0/22
45.252.20.0/22
45.252.24.0/22
45.252.28.0/22
45.252.32.0/22
45.252.36.0/22
45.252.40.0/22
45.252.44.0/22
45.252.48.0/22
45.252.60.0/22
45.252.84.0/22
45.252.88.0/22
45.252.92.0/22
45.252.96.0/22
45.252.100.0/22
45.252.104.0/22
45.252.108.0/22
45.252.112.0/22
45.252.116.0/22
45.252.120.0/22
45.252.124.0/22
45.252.128.0/22
45.252.132.0/22
45.252.136.0/22
45.252.140.0/22
45.252.144.0/22
45.252.148.0/22
45.252.152.0/22
45.252.156.0/22
45.252.160.0/22
45.252.164.0/22
45.252.168.0/22
45.252.172.0/22
45.252.176.0/22
45.252.192.0/22
45.252.196.0/22
45.252.200.0/22
45.252.204.0/22
45.252.208.0/22
45.252.212.0/22
45.252.216.0/22
45.252.220.0/22
45.252.224.0/22
45.252.228.0/22
45.252.232.0/22
45.253.0.0/22
45.253.4.0/22
45.253.8.0/22
45.253.12.0/22
45.253.16.0/22
45.253.20.0/22
45.253.24.0/22
45.253.28.0/22
45.253.32.0/22
45.253.36.0/22
45.253.40.0/22
45.253.44.0/22
45.253.48.0/22
45.253.52.0/22
45.253.56.0/22
45.253.60.0/22
45.253.64.0/22
45.253.68.0/22
45.253.72.0/22
45.253.76.0/22
45.253.80.0/22
45.253.84.0/22
45.253.92.0/22
45.253.96.0/22
45.253.100.0/22
45.253.104.0/22
45.253.108.0/22
45.253.112.0/22
45.253.116.0/22
45.253.120.0/22
45.253.130.0/23
45.253.132.0/22
45.253.136.0/22
45.253.140.0/22
45.253.144.0/22
45.253.148.0/22
45.253.152.0/22
45.253.156.0/22
45.253.160.0/22
45.253.164.0/22
45.253.168.0/22
45.253.172.0/22
45.253.176.0/22
45.253.180.0/22
45.253.184.0/22
45.253.188.0/22
45.253.192.0/22
45.253.196.0/22
45.253.200.0/22
45.253.204.0/22
45.253.208.0/22
45.253.212.0/22
45.253.216.0/22
45.253.220.0/22
45.253.224.0/22
45.253.228.0/22
45.253.232.0/22
45.253.236.0/22
45.253.240.0/22
45.253.244.0/22
45.253.248.0/22
45.253.252.0/22
45.254.0.0/22
45.254.4.0/22
45.254.8.0/22
45.254.12.0/22
45.254.16.0/22
45.254.20.0/22
45.254.24.0/22
45.254.28.0/22
45.254.40.0/22
45.254.48.0/22
45.254.52.0/22
45.254.56.0/22
45.254.60.0/22
45.254.64.0/22
45.254.68.0/22
45.254.72.0/22
45.254.76.0/22
45.254.80.0/22
45.254.84.0/22
45.254.88.0/22
45.254.92.0/22
45.254.96.0/22
45.254.100.0/22
45.254.104.0/22
45.254.108.0/22
45.254.112.0/22
45.254.116.0/22
45.254.120.0/22
45.254.124.0/22
45.254.128.0/22
45.254.132.0/22
45.254.136.0/22
45.254.140.0/22
45.254.144.0/22
45.254.148.0/22
45.254.152.0/22
45.254.156.0/22
45.254.160.0/22
45.254.164.0/22
45.254.168.0/22
45.254.172.0/22
45.254.176.0/22
45.254.180.0/22
45.254.184.0/22
45.254.188.0/22
45.254.192.0/22
45.254.196.0/22
45.254.200.0/22
45.254.204.0/22
45.254.208.0/22
45.254.212.0/22
45.254.216.0/22
45.254.220.0/22
45.254.224.0/22
45.254.228.0/22
45.254.236.0/22
45.254.240.0/22
45.254.248.0/22
45.255.0.0/22
45.255.4.0/22
45.255.8.0/22
45.255.12.0/22
45.255.16.0/22
45.255.20.0/22
45.255.24.0/22
45.255.28.0/22
45.255.32.0/22
45.255.36.0/22
45.255.40.0/22
45.255.44.0/22
45.255.48.0/22
45.255.52.0/22
45.255.56.0/22
45.255.60.0/22
45.255.64.0/22
45.255.68.0/22
45.255.72.0/22
45.255.76.0/22
45.255.80.0/22
45.255.84.0/22
45.255.88.0/22
45.255.92.0/22
45.255.96.0/22
45.255.100.0/22
45.255.104.0/22
45.255.108.0/22
45.255.112.0/22
45.255.116.0/22
45.255.120.0/22
45.255.124.0/22
45.255.132.0/22
45.255.136.0/22
45.255.140.0/22
45.255.144.0/22
45.255.148.0/22
45.255.152.0/22
45.255.156.0/22
45.255.160.0/22
45.255.164.0/22
45.255.168.0/22
45.255.172.0/22
45.255.176.0/22
45.255.180.0/22
45.255.184.0/22
45.255.188.0/22
45.255.192.0/22
45.255.196.0/22
45.255.200.0/22
45.255.204.0/22
45.255.208.0/22
45.255.212.0/22
45.255.216.0/22
45.255.220.0/22
45.255.224.0/22
45.255.228.0/22
45.255.232.0/22
45.255.236.0/22
45.255.240.0/22
45.255.244.0/22
45.255.248.0/22
47.92.0.0/14
47.96.0.0/11
49.4.0.0/14
49.51.0.0/16
49.52.0.0/14
49.64.0.0/11
49.112.0.0/13
49.120.0.0/14
49.128.0.0/24
49.128.2.0/23
49.128.4.0/22
49.140.0.0/15
49.152.0.0/14
49.208.0.0/15
49.210.0.0/15
49.220.0.0/14
49.232.0.0/14
49.239.0.0/18
49.239.192.0/18
49.246.224.0/19
52.80.0.0/16
52.81.0.0/16
52.82.0.0/15
54.222.0.0/15
58.14.0.0/15
58.16.0.0/16
58.17.0.0/17
58.17.128.0/17
58.18.0.0/16
58.19.0.0/16
58.20.0.0/16
58.21.0.0/16
58.22.0.0/15
58.24.0.0/15
58.30.0.0/15
58.32.0.0/13
58.40.0.0/15
58.42.0.0/16
58.43.0.0/16
58.44.0.0/14
58.48.0.0/13
58.56.0.0/15
58.58.0.0/16
58.59.0.0/17
58.59.128.0/17
58.60.0.0/14
58.65.232.0/21
58.66.0.0/15
58.68.128.0/17
58.82.0.0/17
58.83.0.0/17
58.83.128.0/17
58.87.64.0/18
58.99.128.0/17
58.100.0.0/15
58.116.0.0/14
58.128.0.0/13
58.144.0.0/16
58.154.0.0/15
58.192.0.0/15
58.194.0.0/15
58.196.0.0/15
58.198.0.0/15
58.200.0.0/13
58.208.0.0/12
58.240.0.0/15
58.242.0.0/15
58.244.0.0/15
58.246.0.0/15
58.248.0.0/13
59.32.0.0/13
59.40.0.0/15
59.42.0.0/16
59.43.0.0/16
59.44.0.0/14
59.48.0.0/16
59.49.0.0/17
59.49.128.0/17
59.50.0.0/16
59.51.0.0/17
59.51.128.0/17
59.52.0.0/14
59.56.0.0/14
59.60.0.0/15
59.62.0.0/15
59.64.0.0/14
59.68.0.0/14
59.72.0.0/15
59.74.0.0/15
59.76.0.0/16
59.77.0.0/16
59.78.0.0/15
59.80.0.0/15
59.82.0.0/15
59.107.0.0/17
59.107.128.0/17
59.108.0.0/15
59.110.0.0/15
59.151.0.0/17
59.152.16.0/22
59.152.20.0/22
59.152.24.0/22
59.152.28.0/22
59.152.32.0/22
59.152.36.0/22
59.152.64.0/22
59.152.68.0/22
59.152.72.0/22
59.152.76.0/22
59.152.112.0/22
59.152.116.0/22
59.153.4.0/22
59.153.32.0/22
59.153.60.0/22
59.153.64.0/22
59.153.68.0/22
59.153.72.0/22
59.153.92.0/22
59.153.116.0/22
59.153.136.0/22
59.153.152.0/22
59.153.156.0/22
59.153.164.0/22
59.153.168.0/22
59.153.172.0/22
59.153.176.0/22
59.153.180.0/22
59.153.184.0/22
59.153.188.0/22
59.153.192.0/22
59.155.0.0/16
59.172.0.0/15
59.174.0.0/15
59.191.0.0/17
59.191.240.0/20
59.192.0.0/10
60.0.0.0/13
60.8.0.0/15
60.10.0.0/16
60.11.0.0/16
60.12.0.0/16
60.13.0.0/18
60.13.64.0/18
60.13.128.0/17
60.14.0.0/15
60.16.0.0/13
60.24.0.0/14
60.28.0.0/15
60.30.0.0/16
60.31.0.0/16
60.55.0.0/16
60.63.0.0/16
60.160.0.0/15
60.162.0.0/15
60.164.0.0/15
60.166.0.0/15
60.168.0.0/13
60.176.0.0/12
60.194.0.0/15
60.200.0.0/14
60.204.0.0/16
60.205.0.0/16
60.206.0.0/15
60.208.0.0/13
60.216.0.0/15
60.218.0.0/15
60.220.0.0/14
60.232.0.0/15
60.235.0.0/16
60.245.128.0/17
60.247.0.0/16
60.252.0.0/16
60.253.128.0/17
60.255.0.0/16
61.4.80.0/22
61.4.84.0/22
61.4.88.0/21
61.4.176.0/20
61.8.160.0/20
61.14.212.0/22
61.14.216.0/22
61.14.220.0/22
61.14.240.0/22
61.14.244.0/22
61.28.0.0/20
61.28.16.0/20
61.28.32.0/19
61.28.64.0/18
61.29.128.0/18
61.29.192.0/19
61.29.224.0/20
61.29.240.0/20
61.45.128.0/18
61.45.224.0/20
61.47.128.0/18
61.48.0.0/14
61.52.0.0/15
61.54.0.0/16
61.55.0.0/16
61.87.192.0/18
61.128.0.0/15
61.130.0.0/15
61.132.0.0/16
61.133.0.0/17
61.133.128.0/17
61.134.0.0/18
61.134.64.0/19
61.134.96.0/19
61.134.128.0/18
61.134.192.0/18
61.135.0.0/16
61.136.0.0/18
61.136.64.0/18
61.136.128.0/17
61.137.0.0/17
61.137.128.0/17
61.138.0.0/18
61.138.64.0/18
61.138.128.0/18
61.138.192.0/18
61.139.0.0/17
61.139.128.0/18
61.139.192.0/18
61.140.0.0/14
61.144.0.0/14
61.148.0.0/15
61.150.0.0/15
61.152.0.0/16
61.153.0.0/16
61.154.0.0/15
61.156.0.0/16
61.157.0.0/16
61.158.0.0/17
61.158.128.0/17
61.159.0.0/18
61.159.64.0/18
61.159.128.0/17
61.160.0.0/16
61.161.0.0/18
61.161.64.0/18
61.161.128.0/17
61.162.0.0/16
61.163.0.0/16
61.164.0.0/16
61.165.0.0/16
61.166.0.0/16
61.167.0.0/16
61.168.0.0/16
61.169.0.0/16
61.170.0.0/15
61.172.0.0/14
61.176.0.0/16
61.177.0.0/16
61.178.0.0/16
61.179.0.0/16
61.180.0.0/17
61.180.128.0/17
61.181.0.0/16
61.182.0.0/16
61.183.0.0/16
61.184.0.0/14
61.188.0.0/16
61.189.0.0/17
61.189.128.0/17
61.190.0.0/15
61.232.0.0/14
61.236.0.0/15
61.240.0.0/14
101.0.0.0/22
101.1.0.0/22
101.2.172.0/22
101.4.0.0/14
101.16.0.0/12
101.32.0.0/14
101.36.0.0/17
101.36.128.0/17
101.37.0.0/16
101.38.0.0/15
101.40.0.0/13
101.48.0.0/15
101.50.8.0/22
101.50.12.0/22
101.50.56.0/22
101.52.0.0/16
101.53.100.0/22
101.54.0.0/16
101.55.224.0/21
101.64.0.0/13
101.72.0.0/14
101.76.0.0/15
101.78.0.0/22
101.78.32.0/19
101.80.0.0/12
101.96.0.0/21
101.96.8.0/22
101.96.16.0/20
101.96.128.0/17
101.99.96.0/19
101.101.64.0/19
101.101.100.0/24
101.101.102.0/23
101.101.104.0/21
101.101.112.0/20
101.102.64.0/19
101.102.100.0/23
101.102.102.0/24
101.102.104.0/21
101.102.112.0/20
101.104.0.0/14
101.110.64.0/19
101.110.96.0/20
101.110.116.0/22
101.110.120.0/21
101.120.0.0/14
101.124.0.0/15
101.126.0.0/16
101.128.0.0/22
101.128.8.0/21
101.128.16.0/20
101.128.32.0/19
101.129.0.0/16
101.130.0.0/15
101.132.0.0/14
101.144.0.0/12
101.192.0.0/14
101.196.0.0/14
101.200.0.0/15
101.203.128.0/19
101.203.160.0/21
101.203.172.0/22
101.203.176.0/20
101.204.0.0/14
101.224.0.0/13
101.232.0.0/15
101.234.64.0/21
101.234.76.0/22
101.234.80.0/20
101.234.96.0/19
101.236.0.0/14
101.240.0.0/14
101.244.0.0/14
101.248.0.0/15
101.251.0.0/22
101.251.8.0/21
101.251.16.0/20
101.251.32.0/19
101.251.64.0/18
101.251.128.0/17
101.252.0.0/15
101.254.0.0/16
103.1.8.0/22
103.1.20.0/22
103.1.24.0/22
103.1.72.0/22
103.1.88.0/22
103.1.168.0/22
103.2.108.0/22
103.2.156.0/22
103.2.164.0/22
103.2.200.0/22
103.2.204.0/22
103.2.208.0/22
103.2.212.0/22
103.3.84.0/22
103.3.88.0/22
103.3.92.0/22
103.3.96.0/22
103.3.100.0/22
103.3.104.0/22
103.3.108.0/22
103.3.112.0/22
103.3.116.0/22
103.3.120.0/22
103.3.124.0/22
103.3.128.0/22
103.3.132.0/22
103.3.136.0/22
103.3.140.0/22
103.3.148.0/22
103.3.152.0/22
103.3.156.0/22
103.4.56.0/22
103.4.168.0/22
103.4.184.0/22
103.4.224.0/22
103.5.36.0/22
103.5.52.0/22
103.5.56.0/22
103.5.152.0/22
103.5.168.0/22
103.5.192.0/22
103.5.252.0/22
103.6.76.0/22
103.6.108.0/22
103.6.120.0/22
103.6.220.0/22
103.6.228.0/22
103.7.4.0/22
103.7.28.0/22
103.7.120.0/22
103.7.140.0/22
103.7.212.0/22
103.7.216.0/22
103.7.220.0/22
103.8.0.0/22
103.8.4.0/22
103.8.8.0/22
103.8.32.0/22
103.8.52.0/22
103.8.68.0/22
103.8.108.0/22
103.8.156.0/22
103.8.200.0/22
103.8.204.0/22
103.8.220.0/22
103.9.8.0/22
103.9.24.0/22
103.9.108.0/22
103.9.152.0/22
103.9.192.0/22
103.9.248.0/22
103.9.252.0/22
103.10.0.0/22
103.10.16.0/22
103.10.84.0/22
103.10.140.0/22
103.11.16.0/22
103.11.168.0/22
103.11.180.0/22
103.12.32.0/22
103.12.68.0/22
103.12.92.0/22
103.12.136.0/22
103.12.184.0/22
103.12.232.0/22
103.13.12.0/22
103.13.72.0/23
103.13.124.0/22
103.13.144.0/22
103.13.196.0/22
103.13.220.0/22
103.13.244.0/22
103.14.32.0/22
103.14.84.0/22
103.14.100.0/22
103.14.112.0/22
103.14.132.0/22
103.14.136.0/22
103.14.156.0/22
103.14.240.0/22
103.15.4.0/22
103.15.8.0/22
103.15.16.0/22
103.15.96.0/22
103.15.200.0/22
103.16.52.0/22
103.16.80.0/22
103.16.84.0/22
103.16.88.0/22
103.16.108.0/22
103.16.124.0/22
103.17.40.0/22
103.17.64.0/22
103.17.120.0/22
103.17.136.0/22
103.17.160.0/22
103.17.204.0/22
103.17.228.0/22
103.18.192.0/22
103.18.208.0/22
103.18.212.0/22
103.18.224.0/22
103.19.0.0/22
103.19.12.0/22
103.19.40.0/22
103.19.44.0/22
103.19.64.0/22
103.19.68.0/22
103.19.72.0/22
103.19.232.0/22
103.20.12.0/22
103.20.32.0/22
103.20.44.0/22
103.20.68.0/22
103.20.112.0/22
103.20.128.0/22
103.20.160.0/22
103.20.248.0/22
103.21.112.0/22
103.21.116.0/22
103.21.136.0/22
103.21.140.0/22
103.21.176.0/22
103.21.208.0/22
103.21.240.0/22
103.22.0.0/22
103.22.4.0/22
103.22.8.0/22
103.22.12.0/22
103.22.16.0/22
103.22.20.0/22
103.22.24.0/22
103.22.28.0/22
103.22.32.0/22
103.22.36.0/22
103.22.40.0/22
103.22.44.0/22
103.22.48.0/22
103.22.52.0/22
103.22.56.0/22
103.22.60.0/22
103.22.64.0/22
103.22.68.0/22
103.22.72.0/22
103.22.76.0/22
103.22.80.0/22
103.22.84.0/22
103.22.88.0/22
103.22.92.0/22
103.22.100.0/22
103.22.104.0/22
103.22.108.0/22
103.22.112.0/22
103.22.116.0/22
103.22.120.0/22
103.22.124.0/22
103.22.188.0/22
103.22.228.0/22
103.22.252.0/22
103.23.8.0/22
103.23.56.0/22
103.23.160.0/22
103.23.164.0/22
103.23.176.0/22
103.23.228.0/22
103.24.24.0/22
103.24.116.0/22
103.24.128.0/22
103.24.144.0/22
103.24.176.0/22
103.24.184.0/22
103.24.220.0/22
103.24.228.0/22
103.24.248.0/22
103.24.252.0/22
103.25.8.0/23
103.25.20.0/22
103.25.24.0/22
103.25.28.0/22
103.25.32.0/22
103.25.36.0/22
103.25.40.0/22
103.25.48.0/22
103.25.64.0/22
103.25.68.0/22
103.25.148.0/22
103.25.156.0/22
103.25.216.0/22
103.26.0.0/22
103.26.64.0/22
103.26.76.0/22
103.26.116.0/22
103.26.132.0/22
103.26.156.0/22
103.26.160.0/22
103.26.228.0/22
103.26.240.0/22
103.27.4.0/22
103.27.12.0/22
103.27.24.0/22
103.27.56.0/22
103.27.96.0/22
103.27.184.0/22
103.27.208.0/22
103.27.212.0/22
103.27.240.0/22
103.28.4.0/22
103.28.8.0/22
103.28.184.0/22
103.28.204.0/22
103.28.212.0/22
103.29.0.0/22
103.29.16.0/22
103.29.128.0/22
103.29.132.0/22
103.29.136.0/22
103.30.20.0/22
103.30.96.0/22
103.30.148.0/22
103.30.200.0/22
103.30.228.0/22
103.30.236.0/22
103.31.0.0/22
103.31.48.0/22
103.31.52.0/22
103.31.56.0/22
103.31.60.0/22
103.31.64.0/22
103.31.68.0/22
103.31.148.0/22
103.31.160.0/22
103.31.168.0/22
103.31.200.0/22
103.31.236.0/22
103.32.0.0/22
103.32.4.0/22
103.32.8.0/22
103.32.12.0/22
103.32.16.0/22
103.32.20.0/22
103.32.24.0/22
103.32.28.0/22
103.32.32.0/22
103.32.36.0/22
103.32.40.0/22
103.32.44.0/22
103.32.48.0/22
103.32.52.0/22
103.32.56.0/22
103.32.60.0/22
103.32.64.0/22
103.32.68.0/22
103.32.72.0/22
103.32.76.0/22
103.32.80.0/22
103.32.84.0/22
103.32.88.0/22
103.32.92.0/22
103.32.96.0/22
103.32.100.0/22
103.32.104.0/22
103.32.108.0/22
103.32.112.0/22
103.32.116.0/22
103.32.120.0/22
103.32.124.0/22
103.32.128.0/22
103.32.132.0/22
103.32.136.0/22
103.32.140.0/22
103.32.144.0/22
103.32.148.0/22
103.32.152.0/22
103.32.156.0/22
103.32.160.0/22
103.32.164.0/22
103.32.168.0/22
103.32.172.0/22
103.32.176.0/22
103.32.180.0/22
103.32.184.0/22
103.32.188.0/22
103.32.192.0/22
103.32.196.0/22
103.32.200.0/22
103.32.204.0/22
103.32.208.0/22
103.32.212.0/22
103.32.216.0/22
103.32.220.0/22
103.32.224.0/22
103.32.228.0/22
103.32.232.0/22
103.32.236.0/22
103.32.240.0/22
103.32.244.0/22
103.32.248.0/22
103.32.252.0/22
103.33.0.0/22
103.33.4.0/22
103.33.8.0/22
103.33.12.0/22
103.33.16.0/22
103.33.20.0/22
103.33.24.0/22
103.33.28.0/22
103.33.32.0/22
103.33.36.0/22
103.33.40.0/22
103.33.44.0/22
103.33.48.0/22
103.33.52.0/22
103.33.56.0/22
103.33.60.0/22
103.33.64.0/22
103.33.68.0/22
103.33.72.0/22
103.33.76.0/22
103.33.80.0/22
103.33.84.0/22
103.33.88.0/22
103.33.92.0/22
103.33.96.0/22
103.33.100.0/22
103.33.104.0/22
103.33.108.0/22
103.33.112.0/22
103.33.116.0/22
103.33.120.0/22
103.33.124.0/22
103.33.128.0/22
103.33.132.0/22
103.33.136.0/22
103.33.140.0/22
103.33.144.0/22
103.33.148.0/22
103.33.152.0/22
103.33.156.0/22
103.33.160.0/22
103.33.164.0/22
103.33.168.0/22
103.33.172.0/22
103.33.176.0/22
103.33.180.0/22
103.33.184.0/22
103.33.188.0/22
103.33.192.0/22
103.33.196.0/22
103.33.200.0/22
103.33.204.0/22
103.33.208.0/22
103.33.212.0/22
103.33.216.0/22
103.33.220.0/22
103.33.224.0/22
103.33.228.0/22
103.33.232.0/22
103.33.236.0/22
103.33.240.0/22
103.33.244.0/22
103.33.248.0/22
103.33.252.0/22
103.34.0.0/22
103.34.4.0/22
103.34.8.0/22
103.34.12.0/22
103.34.16.0/22
103.34.20.0/22
103.34.24.0/22
103.34.28.0/22
103.34.32.0/22
103.34.36.0/22
103.34.40.0/22
103.34.44.0/22
103.34.48.0/22
103.34.52.0/22
103.34.56.0/22
103.34.60.0/22
103.34.64.0/22
103.34.68.0/22
103.34.72.0/22
103.34.76.0/22
103.34.80.0/22
103.34.84.0/22
103.34.88.0/22
103.34.92.0/22
103.34.96.0/22
103.34.100.0/22
103.34.104.0/22
103.34.108.0/22
103.34.112.0/22
103.34.116.0/22
103.34.120.0/22
103.34.124.0/22
103.34.128.0/22
103.34.132.0/22
103.34.136.0/22
103.34.140.0/22
103.34.144.0/22
103.34.148.0/22
103.34.152.0/22
103.34.156.0/22
103.34.160.0/22
103.34.164.0/22
103.34.168.0/22
103.34.172.0/22
103.34.176.0/22
103.34.180.0/22
103.34.184.0/22
103.34.188.0/22
103.34.192.0/22
103.34.196.0/22
103.34.200.0/22
103.34.204.0/22
103.34.208.0/22
103.34.212.0/22
103.34.216.0/22
103.34.220.0/22
103.34.224.0/22
103.34.228.0/22
103.34.232.0/22
103.34.236.0/22
103.34.240.0/22
103.34.244.0/22
103.34.248.0/22
103.34.252.0/22
103.35.0.0/22
103.35.4.0/22
103.35.8.0/22
103.35.12.0/22
103.35.16.0/22
103.35.20.0/22
103.35.24.0/22
103.35.28.0/22
103.35.32.0/22
103.35.36.0/22
103.35.40.0/22
103.35.44.0/22
103.35.48.0/22
103.35.104.0/22
103.35.116.0/22
103.35.180.0/22
103.35.200.0/22
103.35.220.0/22
103.36.20.0/22
103.36.28.0/22
103.36.36.0/22
103.36.56.0/22
103.36.60.0/22
103.36.64.0/22
103.36.72.0/22
103.36.96.0/22
103.36.132.0/22
103.36.136.0/22
103.36.160.0/22
103.36.164.0/22
103.36.168.0/22
103.36.172.0/22
103.36.176.0/22
103.36.180.0/22
103.36.184.0/22
103.36.188.0/22
103.36.192.0/22
103.36.196.0/22
103.36.200.0/22
103.36.204.0/22
103.36.208.0/22
103.36.212.0/22
103.36.216.0/22
103.36.220.0/22
103.36.224.0/22
103.36.228.0/22
103.36.232.0/22
103.36.236.0/22
103.36.240.0/22
103.36.244.0/22
103.37.0.0/22
103.37.12.0/22
103.37.16.0/22
103.37.24.0/22
103.37.44.0/22
103.37.52.0/22
103.37.56.0/22
103.37.72.0/22
103.37.100.0/22
103.37.104.0/22
103.37.124.0/22
103.37.136.0/22
103.37.140.0/22
103.37.144.0/22
103.37.148.0/22
103.37.152.0/22
103.37.156.0/22
103.37.160.0/22
103.37.164.0/22
103.37.172.0/22
103.37.176.0/22
103.37.188.0/22
103.37.208.0/22
103.37.212.0/22
103.37.216.0/22
103.37.220.0/22
103.37.248.0/22
103.37.252.0/22
103.38.0.0/22
103.38.32.0/22
103.38.40.0/22
103.38.44.0/22
103.38.56.0/22
103.38.76.0/22
103.38.84.0/22
103.38.92.0/22
103.38.96.0/22
103.38.116.0/22
103.38.132.0/22
103.38.140.0/22
103.38.220.0/22
103.38.224.0/22
103.38.228.0/22
103.38.232.0/22
103.38.252.0/22
103.39.16.0/22
103.39.64.0/22
103.39.88.0/22
103.39.100.0/22
103.39.104.0/22
103.39.108.0/22
103.39.160.0/22
103.39.164.0/22
103.39.168.0/22
103.39.172.0/22
103.39.176.0/22
103.39.180.0/22
103.39.184.0/22
103.39.188.0/22
103.39.200.0/22
103.39.204.0/22
103.39.208.0/22
103.39.212.0/22
103.39.216.0/22
103.39.220.0/22
103.39.224.0/22
103.39.228.0/22
103.39.232.0/22
103.40.12.0/22
103.40.16.0/22
103.40.20.0/22
103.40.24.0/22
103.40.28.0/22
103.40.32.0/22
103.40.36.0/22
103.40.40.0/22
103.40.44.0/22
103.40.88.0/22
103.40.100.0/22
103.40.112.0/22
103.40.192.0/22
103.40.212.0/22
103.40.220.0/22
103.40.228.0/22
103.40.232.0/22
103.40.236.0/22
103.40.240.0/22
103.40.244.0/22
103.40.248.0/22
103.40.252.0/22
103.41.0.0/22
103.41.16.0/22
103.41.52.0/22
103.41.140.0/22
103.41.148.0/22
103.41.152.0/22
103.41.160.0/22
103.41.164.0/22
103.41.220.0/22
103.41.224.0/22
103.41.228.0/22
103.41.232.0/22
103.42.8.0/22
103.42.24.0/22
103.42.28.0/22
103.42.32.0/22
103.42.64.0/22
103.42.68.0/22
103.42.76.0/22
103.42.104.0/22
103.42.180.0/22
103.42.232.0/22
103.43.16.0/22
103.43.84.0/22
103.43.96.0/22
103.43.100.0/22
103.43.104.0/22
103.43.124.0/22
103.43.184.0/22
103.43.192.0/22
103.43.196.0/22
103.43.208.0/22
103.43.220.0/22
103.43.224.0/22
103.43.232.0/22
103.43.240.0/22
103.44.56.0/22
103.44.80.0/22
103.44.88.0/22
103.44.120.0/22
103.44.124.0/22
103.44.132.0/22
103.44.144.0/22
103.44.168.0/22
103.44.176.0/22
103.44.180.0/22
103.44.184.0/22
103.44.188.0/22
103.44.192.0/22
103.44.196.0/22
103.44.200.0/22
103.44.204.0/22
103.44.224.0/22
103.44.236.0/22
103.44.240.0/22
103.44.244.0/22
103.44.248.0/22
103.44.252.0/22
103.45.0.0/22
103.45.4.0/22
103.45.8.0/22
103.45.12.0/22
103.45.16.0/22
103.45.20.0/22
103.45.24.0/22
103.45.28.0/22
103.45.32.0/22
103.45.36.0/22
103.45.40.0/22
103.45.44.0/22
103.45.48.0/22
103.45.52.0/22
103.45.56.0/22
103.45.60.0/22
103.45.72.0/22
103.45.76.0/22
103.45.80.0/22
103.45.84.0/22
103.45.88.0/22
103.45.92.0/22
103.45.96.0/22
103.45.100.0/22
103.45.104.0/22
103.45.108.0/22
103.45.112.0/22
103.45.116.0/22
103.45.120.0/22
103.45.124.0/22
103.45.128.0/22
103.45.132.0/22
103.45.136.0/22
103.45.140.0/22
103.45.144.0/22
103.45.148.0/22
103.45.152.0/22
103.45.156.0/22
103.45.160.0/22
103.45.164.0/22
103.45.168.0/22
103.45.172.0/22
103.45.176.0/22
103.45.180.0/22
103.45.184.0/22
103.45.188.0/22
103.45.192.0/22
103.45.196.0/22
103.45.200.0/22
103.45.204.0/22
103.45.208.0/22
103.45.212.0/22
103.45.216.0/22
103.45.220.0/22
103.45.224.0/22
103.45.248.0/22
103.46.0.0/22
103.46.12.0/22
103.46.16.0/22
103.46.20.0/22
103.46.24.0/22
103.46.28.0/22
103.46.32.0/22
103.46.36.0/22
103.46.40.0/22
103.46.44.0/22
103.46.48.0/22
103.46.52.0/22
103.46.56.0/22
103.46.60.0/22
103.46.64.0/22
103.46.68.0/22
103.46.72.0/22
103.46.76.0/22
103.46.80.0/22
103.46.84.0/22
103.46.88.0/22
103.46.92.0/22
103.46.96.0/22
103.46.100.0/22
103.46.104.0/22
103.46.108.0/22
103.46.112.0/22
103.46.116.0/22
103.46.120.0/22
103.46.124.0/22
103.46.128.0/22
103.46.132.0/22
103.46.136.0/22
103.46.152.0/22
103.46.156.0/22
103.46.160.0/22
103.46.164.0/22
103.46.168.0/22
103.46.172.0/22
103.46.176.0/22
103.46.180.0/22
103.46.244.0/22
103.46.248.0/22
103.47.4.0/22
103.47.20.0/22
103.47.36.0/22
103.47.40.0/22
103.47.48.0/22
103.47.80.0/22
103.47.96.0/22
103.47.108.0/22
103.47.116.0/22
103.47.120.0/22
103.47.136.0/22
103.47.140.0/22
103.47.212.0/22
103.48.20.0/22
103.48.52.0/22
103.48.92.0/22
103.48.144.0/22
103.48.148.0/22
103.48.152.0/22
103.48.156.0/22
103.48.202.0/23
103.48.216.0/22
103.48.220.0/22
103.48.224.0/22
103.48.228.0/22
103.48.232.0/22
103.48.236.0/22
103.48.240.0/22
103.48.244.0/22
103.49.12.0/22
103.49.20.0/22
103.49.72.0/22
103.49.76.0/22
103.49.92.0/22
103.49.96.0/22
103.49.108.0/22
103.49.128.0/22
103.49.176.0/22
103.49.180.0/22
103.49.196.0/22
103.49.248.0/22
103.50.36.0/22
103.50.44.0/22
103.50.48.0/22
103.50.52.0/22
103.50.56.0/22
103.50.60.0/22
103.50.64.0/22
103.50.68.0/22
103.50.72.0/22
103.50.108.0/22
103.50.112.0/22
103.50.116.0/22
103.50.120.0/22
103.50.124.0/22
103.50.132.0/22
103.50.136.0/22
103.50.140.0/22
103.50.172.0/22
103.50.176.0/22
103.50.180.0/22
103.50.184.0/22
103.50.188.0/22
103.50.192.0/22
103.50.196.0/22
103.50.200.0/22
103.50.220.0/22
103.50.224.0/22
103.50.228.0/22
103.50.232.0/22
103.50.236.0/22
103.50.240.0/22
103.50.244.0/22
103.50.248.0/22
103.52.40.0/22
103.52.72.0/22
103.52.76.0/22
103.52.80.0/22
103.52.84.0/22
103.52.96.0/22
103.52.100.0/22
103.52.104.0/22
103.52.160.0/22
103.52.164.0/22
103.52.172.0/22
103.52.176.0/22
103.52.184.0/22
103.52.196.0/22
103.53.4.0/22
103.53.64.0/22
103.53.68.0/22
103.53.92.0/22
103.53.100.0/22
103.53.124.0/22
103.53.128.0/22
103.53.132.0/22
103.53.136.0/22
103.53.140.0/22
103.53.144.0/22
103.53.160.0/22
103.53.180.0/22
103.53.204.0/22
103.53.208.0/22
103.53.212.0/22
103.53.216.0/22
103.53.236.0/22
103.53.248.0/22
103.54.8.0/22
103.54.48.0/22
103.54.60.0/22
103.54.160.0/22
103.54.164.0/22
103.54.212.0/22
103.54.228.0/22
103.54.240.0/22
103.55.24.0/22
103.55.80.0/22
103.55.120.0/22
103.55.152.0/22
103.55.172.0/22
103.55.204.0/22
103.55.208.0/22
103.55.228.0/22
103.55.236.0/22
103.55.240.0/22
103.56.8.0/22
103.56.16.0/22
103.56.20.0/22
103.56.32.0/22
103.56.52.0/22
103.56.56.0/22
103.56.60.0/22
103.56.72.0/22
103.56.76.0/22
103.56.140.0/22
103.56.152.0/22
103.56.184.0/22
103.56.200.0/22
103.57.12.0/22
103.57.52.0/22
103.57.56.0/22
103.57.76.0/22
103.57.108.0/22
103.57.136.0/22
103.57.196.0/22
103.58.24.0/22
103.58.182.0/23
103.59.76.0/22
103.59.100.0/22
103.59.112.0/22
103.59.116.0/22
103.59.120.0/22
103.59.124.0/22
103.59.128.0/22
103.59.148.0/22
103.59.164.0/22
103.60.32.0/22
103.60.44.0/22
103.60.164.0/22
103.60.228.0/22
103.60.236.0/22
103.61.60.0/22
103.61.104.0/22
103.61.140.0/22
103.61.152.0/22
103.61.156.0/22
103.61.160.0/22
103.61.172.0/22
103.61.176.0/22
103.61.184.0/22
103.61.188.0/22
103.62.24.0/22
103.62.52.0/22
103.62.72.0/22
103.62.76.0/22
103.62.80.0/22
103.62.84.0/22
103.62.88.0/22
103.62.96.0/22
103.62.100.0/22
103.62.104.0/22
103.62.108.0/22
103.62.112.0/22
103.62.116.0/22
103.62.120.0/22
103.62.124.0/22
103.62.128.0/22
103.62.132.0/22
103.62.156.0/22
103.62.160.0/22
103.62.164.0/22
103.62.168.0/22
103.62.172.0/22
103.62.176.0/22
103.62.180.0/22
103.62.184.0/22
103.62.188.0/22
103.62.192.0/22
103.62.204.0/22
103.62.208.0/22
103.62.212.0/22
103.62.216.0/22
103.62.220.0/22
103.62.224.0/22
103.63.32.0/22
103.63.36.0/22
103.63.40.0/22
103.63.44.0/22
103.63.48.0/22
103.63.52.0/22
103.63.56.0/22
103.63.60.0/22
103.63.64.0/22
103.63.68.0/22
103.63.72.0/22
103.63.76.0/22
103.63.80.0/22
103.63.84.0/22
103.63.88.0/22
103.63.140.0/22
103.63.144.0/22
103.63.152.0/22
103.63.160.0/22
103.63.164.0/22
103.63.168.0/22
103.63.172.0/22
103.63.176.0/22
103.63.180.0/22
103.63.184.0/22
103.63.192.0/22
103.63.196.0/22
103.63.200.0/22
103.63.204.0/22
103.63.208.0/22
103.63.240.0/22
103.63.244.0/22
103.63.248.0/22
103.63.252.0/22
103.64.0.0/22
103.64.4.0/22
103.64.24.0/22
103.64.28.0/22
103.64.32.0/22
103.64.36.0/22
103.64.40.0/22
103.64.44.0/22
103.64.48.0/22
103.64.52.0/22
103.64.56.0/22
103.64.60.0/22
103.64.64.0/22
103.64.68.0/22
103.64.72.0/22
103.64.76.0/22
103.64.80.0/22
103.64.84.0/22
103.64.88.0/22
103.64.92.0/22
103.64.96.0/22
103.64.100.0/22
103.64.104.0/22
103.64.108.0/22
103.64.112.0/22
103.64.116.0/22
103.64.120.0/22
103.64.124.0/22
103.64.140.0/22
103.64.144.0/22
103.64.152.0/22
103.64.156.0/22
103.64.160.0/22
103.64.164.0/22
103.64.168.0/22
103.64.172.0/22
103.64.176.0/22
103.64.180.0/22
103.64.184.0/22
103.64.188.0/22
103.64.192.0/22
103.64.196.0/22
103.64.200.0/22
103.64.204.0/22
103.64.208.0/22
103.64.212.0/22
103.64.216.0/22
103.64.220.0/22
103.64.224.0/22
103.64.228.0/22
103.64.232.0/22
103.64.236.0/22
103.64.240.0/22
103.64.244.0/22
103.64.248.0/22
103.64.252.0/22
103.65.0.0/22
103.65.4.0/22
103.65.8.0/22
103.65.12.0/22
103.65.16.0/22
103.65.36.0/22
103.65.40.0/22
103.65.48.0/22
103.65.52.0/22
103.65.56.0/22
103.65.60.0/22
103.65.64.0/22
103.65.68.0/22
103.65.72.0/22
103.65.76.0/22
103.65.80.0/22
103.65.84.0/22
103.65.88.0/22
103.65.92.0/22
103.65.100.0/22
103.65.104.0/22
103.65.108.0/22
103.65.112.0/22
103.65.116.0/22
103.65.120.0/22
103.65.124.0/22
103.65.128.0/22
103.65.132.0/22
103.65.136.0/22
103.65.144.0/22
103.65.148.0/22
103.65.152.0/22
103.65.156.0/22
103.65.160.0/22
103.65.164.0/22
103.65.168.0/22
103.65.172.0/22
103.66.32.0/22
103.66.40.0/22
103.66.92.0/22
103.66.108.0/22
103.66.200.0/22
103.66.216.0/22
103.66.240.0/22
103.66.244.0/22
103.66.248.0/22
103.66.252.0/22
103.67.0.0/22
103.67.4.0/22
103.67.8.0/22
103.67.40.0/22
103.67.44.0/22
103.67.48.0/22
103.67.52.0/22
103.67.56.0/22
103.67.60.0/22
103.67.64.0/22
103.67.68.0/22
103.67.72.0/22
103.67.76.0/22
103.67.80.0/22
103.67.84.0/22
103.67.88.0/22
103.67.92.0/22
103.67.96.0/22
103.67.100.0/22
103.67.104.0/22
103.67.108.0/22
103.67.112.0/22
103.67.116.0/22
103.67.120.0/22
103.67.124.0/22
103.67.128.0/22
103.67.132.0/22
103.67.136.0/22
103.67.140.0/22
103.67.144.0/22
103.67.148.0/22
103.67.172.0/22
103.67.192.0/22
103.67.212.0/22
103.67.252.0/22
103.68.64.0/22
103.68.88.0/22
103.68.100.0/22
103.68.128.0/22
103.68.192.0/22
103.69.16.0/22
103.69.116.0/22
103.69.132.0/22
103.69.152.0/22
103.69.212.0/22
103.70.8.0/22
103.70.148.0/22
103.70.184.0/22
103.70.220.0/22
103.70.224.0/22
103.70.236.0/22
103.70.252.0/22
103.71.0.0/22
103.71.32.0/22
103.71.48.0/22
103.71.68.0/22
103.71.72.0/22
103.71.80.0/22
103.71.84.0/22
103.71.88.0/22
103.71.120.0/22
103.71.124.0/22
103.71.128.0/22
103.71.144.0/22
103.71.196.0/22
103.71.200.0/22
103.71.232.0/22
103.72.12.0/22
103.72.16.0/22
103.72.20.0/22
103.72.24.0/22
103.72.28.0/22
103.72.32.0/22
103.72.36.0/22
103.72.40.0/22
103.72.44.0/22
103.72.48.0/22
103.72.52.0/22
103.72.112.0/22
103.72.116.0/22
103.72.120.0/22
103.72.124.0/22
103.72.128.0/22
103.72.132.0/22
103.72.144.0/22
103.72.148.0/22
103.72.164.0/22
103.72.172.0/22
103.72.180.0/22
103.72.224.0/22
103.72.228.0/22
103.72.232.0/22
103.72.236.0/22
103.72.240.0/22
103.72.244.0/22
103.72.248.0/22
103.72.252.0/22
103.73.0.0/22
103.73.4.0/22
103.73.8.0/22
103.73.12.0/22
103.73.16.0/22
103.73.20.0/22
103.73.24.0/22
103.73.28.0/22
103.73.48.0/22
103.73.88.0/22
103.73.96.0/22
103.73.116.0/22
103.73.120.0/22
103.73.128.0/22
103.73.132.0/22
103.73.136.0/22
103.73.140.0/22
103.73.144.0/22
103.73.168.0/22
103.73.176.0/22
103.73.204.0/22
103.73.208.0/22
103.73.240.0/22
103.73.244.0/22
103.73.248.0/22
103.74.24.0/22
103.74.28.0/22
103.74.32.0/22
103.74.36.0/22
103.74.40.0/22
103.74.44.0/22
103.74.48.0/22
103.74.56.0/22
103.74.60.0/22
103.74.80.0/22
103.74.124.0/22
103.74.148.0/22
103.74.152.0/22
103.74.156.0/22
103.74.204.0/22
103.74.232.0/22
103.75.16.0/22
103.75.84.0/22
103.75.88.0/22
103.75.92.0/22
103.75.104.0/22
103.75.108.0/22
103.75.112.0/22
103.75.120.0/22
103.75.128.0/22
103.75.144.0/22
103.75.152.0/22
103.75.236.0/24
103.76.60.0/22
103.76.64.0/22
103.76.68.0/22
103.76.72.0/22
103.76.84.0/22
103.76.92.0/22
103.76.104.0/22
103.76.216.0/22
103.76.220.0/22
103.76.224.0/22
103.77.28.0/22
103.77.52.0/22
103.77.56.0/22
103.77.72.0/22
103.77.88.0/22
103.77.92.0/22
103.77.132.0/22
103.77.148.0/22
103.77.220.0/22
103.78.56.0/22
103.78.60.0/22
103.78.64.0/22
103.78.68.0/22
103.78.124.0/22
103.78.172.0/22
103.78.176.0/22
103.78.196.0/22
103.78.228.0/22
103.79.24.0/22
103.79.28.0/22
103.79.36.0/22
103.79.40.0/22
103.79.44.0/22
103.79.52.0/22
103.79.56.0/22
103.79.60.0/22
103.79.64.0/22
103.79.68.0/22
103.79.80.0/22
103.79.84.0/22
103.79.120.0/22
103.79.136.0/22
103.79.188.0/22
103.79.192.0/22
103.79.196.0/22
103.79.200.0/22
103.79.204.0/22
103.79.208.0/22
103.79.212.0/22
103.79.240.0/22
103.80.24.0/22
103.80.28.0/22
103.80.44.0/22
103.80.72.0/22
103.80.176.0/22
103.80.180.0/22
103.80.184.0/22
103.80.192.0/22
103.80.200.0/22
103.80.212.0/22
103.80.232.0/22
103.81.4.0/22
103.81.8.0/22
103.81.16.0/22
103.81.20.0/22
103.81.44.0/22
103.81.48.0/22
103.81.96.0/22
103.81.120.0/22
103.81.148.0/22
103.81.164.0/22
103.81.168.0/22
103.81.183.0/24
103.81.184.0/22
103.81.200.0/22
103.81.232.0/22
103.82.52.0/22
103.82.60.0/22
103.82.68.0/22
103.82.84.0/22
103.82.104.0/22
103.82.224.0/22
103.82.236.0/22
103.83.44.0/22
103.83.52.0/22
103.83.60.0/22
103.83.64.0/22
103.83.72.0/22
103.83.112.0/22
103.83.120.0/22
103.83.132.0/22
103.83.180.0/22
103.84.0.0/22
103.84.12.0/22
103.84.16.0/22
103.84.20.0/22
103.84.24.0/22
103.84.28.0/22
103.84.48.0/22
103.84.56.0/22
103.84.64.0/22
103.84.72.0/22
103.84.92.0/22
103.84.108.0/22
103.84.136.0/22
103.85.20.0/22
103.85.24.0/22
103.85.44.0/22
103.85.48.0/22
103.85.52.0/22
103.85.56.0/22
103.85.84.0/22
103.85.136.0/22
103.85.144.0/22
103.85.164.0/22
103.85.168.0/22
103.85.172.0/22
103.85.176.0/22
103.85.224.0/22
103.85.244.0/22
103.86.28.0/22
103.86.32.0/22
103.86.44.0/22
103.86.60.0/22
103.86.68.0/22
103.86.80.0/22
103.86.84.0/22
103.86.88.0/22
103.86.129.0/24
103.86.204.0/22
103.86.208.0/22
103.86.212.0/22
103.86.216.0/22
103.86.220.0/22
103.86.224.0/22
103.86.228.0/22
103.86.232.0/22
103.86.236.0/22
103.86.240.0/22
103.86.244.0/22
103.86.248.0/22
103.86.252.0/22
103.87.0.0/22
103.87.4.0/22
103.87.20.0/22
103.87.32.0/22
103.87.72.0/22
103.87.96.0/22
103.87.132.0/22
103.87.180.0/22
103.87.224.0/22
103.88.4.0/22
103.88.8.0/22
103.88.12.0/22
103.88.16.0/22
103.88.20.0/22
103.88.32.0/22
103.88.36.0/22
103.88.60.0/22
103.88.64.0/22
103.88.72.0/22
103.88.96.0/22
103.88.100.0/22
103.88.139.0/24
103.88.152.0/23
103.88.164.0/22
103.88.176.0/22
103.88.184.0/22
103.88.188.0/22
103.88.212.0/22
103.89.28.0/22
103.89.96.0/22
103.89.100.0/22
103.89.104.0/22
103.89.108.0/22
103.89.112.0/22
103.89.116.0/22
103.89.148.0/22
103.89.172.0/22
103.89.184.0/22
103.89.188.0/22
103.89.192.0/22
103.89.196.0/22
103.89.200.0/22
103.89.204.0/22
103.89.208.0/22
103.89.212.0/22
103.89.216.0/22
103.89.220.0/22
103.89.224.0/22
103.89.228.0/22
103.90.52.0/22
103.90.92.0/22
103.90.100.0/22
103.90.104.0/22
103.90.108.0/22
103.90.112.0/22
103.90.116.0/22
103.90.120.0/22
103.90.124.0/22
103.90.128.0/22
103.90.132.0/22
103.90.152.0/22
103.90.168.0/22
103.90.173.0/24
103.90.176.0/22
103.90.188.0/22
103.90.192.0/22
103.91.36.0/22
103.91.40.0/22
103.91.108.0/22
103.91.152.0/22
103.91.176.0/22
103.91.200.0/22
103.91.208.0/22
103.91.212.0/22
103.91.219.0/24
103.91.236.0/22
103.91.252.0/22
103.92.0.0/22
103.92.4.0/22
103.92.8.0/22
103.92.12.0/22
103.92.48.0/22
103.92.52.0/22
103.92.56.0/22
103.92.60.0/22
103.92.64.0/22
103.92.68.0/22
103.92.72.0/22
103.92.76.0/22
103.92.80.0/22
103.92.86.0/24
103.92.88.0/22
103.92.108.0/22
103.92.124.0/22
103.92.128.0/24
103.92.132.0/22
103.92.156.0/22
103.92.164.0/22
103.92.168.0/22
103.92.172.0/22
103.92.176.0/22
103.92.180.0/22
103.92.184.0/22
103.92.188.0/22
103.92.192.0/22
103.92.236.0/22
103.92.240.0/22
103.92.244.0/22
103.92.248.0/22
103.92.252.0/22
103.93.0.0/22
103.93.4.0/22
103.93.28.0/22
103.93.76.0/22
103.93.84.0/22
103.93.121.0/24
103.93.152.0/22
103.93.180.0/22
103.93.204.0/22
103.94.12.0/22
103.94.20.0/22
103.94.28.0/22
103.94.32.0/22
103.94.36.0/22
103.94.40.0/22
103.94.44.0/22
103.94.72.0/22
103.94.88.0/22
103.94.116.0/22
103.94.160.0/22
103.94.180.0/22
103.94.200.0/22
103.95.28.0/22
103.95.52.0/22
103.95.64.0/22
103.95.68.0/22
103.95.88.0/22
103.95.92.0/22
103.192.0.0/22
103.192.4.0/22
103.192.8.0/22
103.192.12.0/22
103.192.16.0/22
103.192.20.0/22
103.192.24.0/22
103.192.28.0/22
103.192.48.0/22
103.192.52.0/22
103.192.56.0/22
103.192.84.0/22
103.192.88.0/22
103.192.92.0/22
103.192.96.0/22
103.192.100.0/22
103.192.104.0/22
103.192.108.0/22
103.192.112.0/22
103.192.128.0/22
103.192.132.0/22
103.192.136.0/22
103.192.140.0/22
103.192.144.0/22
103.192.164.0/22
103.192.188.0/22
103.192.208.0/22
103.192.212.0/22
103.192.216.0/22
103.192.252.0/22
103.193.40.0/22
103.193.44.0/22
103.193.120.0/22
103.193.124.0/22
103.193.140.0/22
103.193.144.0/22
103.193.148.0/22
103.193.160.0/22
103.193.188.0/22
103.193.192.0/22
103.193.212.0/22
103.193.216.0/22
103.193.220.0/22
103.193.224.0/22
103.193.228.0/22
103.193.232.0/22
103.193.236.0/22
103.193.240.0/22
103.194.16.0/22
103.195.104.0/22
103.195.112.0/22
103.195.136.0/22
103.195.148.0/22
103.195.152.0/22
103.195.160.0/22
103.195.192.0/22
103.196.60.0/22
103.196.64.0/22
103.196.72.0/22
103.196.88.0/22
103.196.92.0/22
103.196.96.0/22
103.196.168.0/22
103.196.204.0/22
103.197.180.0/22
103.197.228.0/22
103.198.20.0/22
103.198.60.0/22
103.198.64.0/22
103.198.72.0/22
103.198.124.0/22
103.198.156.0/22
103.198.180.0/22
103.198.196.0/22
103.198.200.0/22
103.198.216.0/22
103.198.220.0/22
103.198.224.0/22
103.198.228.0/22
103.198.232.0/22
103.198.236.0/22
103.198.240.0/22
103.198.244.0/22
103.199.164.0/22
103.199.196.0/22
103.199.228.0/22
103.199.248.0/22
103.199.252.0/22
103.200.28.0/22
103.200.32.0/22
103.200.52.0/22
103.200.64.0/22
103.200.68.0/22
103.200.136.0/22
103.200.140.0/22
103.200.144.0/22
103.200.148.0/22
103.200.152.0/22
103.200.156.0/22
103.200.160.0/22
103.200.164.0/22
103.200.168.0/22
103.200.172.0/22
103.200.176.0/22
103.200.180.0/22
103.200.184.0/22
103.200.188.0/22
103.200.192.0/22
103.200.220.0/22
103.200.224.0/22
103.200.228.0/22
103.200.232.0/22
103.200.236.0/22
103.200.240.0/22
103.200.244.0/22
103.200.248.0/22
103.200.252.0/22
103.201.0.0/22
103.201.4.0/22
103.201.8.0/22
103.201.12.0/22
103.201.16.0/22
103.201.20.0/22
103.201.28.0/22
103.201.32.0/22
103.201.36.0/22
103.201.40.0/22
103.201.44.0/22
103.201.48.0/22
103.201.52.0/22
103.201.56.0/22
103.201.60.0/22
103.201.64.0/22
103.201.76.0/22
103.201.80.0/22
103.201.84.0/22
103.201.88.0/22
103.201.92.0/22
103.201.96.0/22
103.201.100.0/22
103.201.104.0/22
103.201.108.0/22
103.201.112.0/22
103.201.116.0/22
103.201.120.0/22
103.201.152.0/22
103.201.156.0/22
103.201.160.0/22
103.201.164.0/22
103.201.168.0/22
103.201.172.0/22
103.201.176.0/22
103.201.180.0/22
103.201.184.0/22
103.201.188.0/22
103.201.192.0/22
103.201.196.0/22
103.201.200.0/22
103.201.204.0/22
103.201.208.0/22
103.201.212.0/22
103.201.216.0/22
103.201.220.0/22
103.201.224.0/22
103.201.228.0/22
103.201.232.0/22
103.201.236.0/22
103.201.240.0/22
103.201.244.0/22
103.201.248.0/22
103.201.252.0/22
103.202.0.0/22
103.202.4.0/22
103.202.8.0/22
103.202.12.0/22
103.202.16.0/22
103.202.20.0/22
103.202.24.0/22
103.202.28.0/22
103.202.32.0/22
103.202.36.0/22
103.202.40.0/22
103.202.44.0/22
103.202.56.0/22
103.202.60.0/22
103.202.64.0/22
103.202.68.0/22
103.202.72.0/22
103.202.76.0/22
103.202.80.0/22
103.202.84.0/22
103.202.88.0/22
103.202.92.0/22
103.202.96.0/22
103.202.100.0/22
103.202.104.0/22
103.202.108.0/22
103.202.112.0/22
103.202.116.0/22
103.202.120.0/22
103.202.124.0/22
103.202.128.0/22
103.202.132.0/22
103.202.136.0/22
103.202.140.0/22
103.202.144.0/22
103.202.152.0/22
103.202.156.0/22
103.202.160.0/22
103.202.164.0/22
103.202.168.0/22
103.202.172.0/22
103.202.176.0/22
103.202.180.0/22
103.202.184.0/22
103.202.188.0/22
103.202.192.0/22
103.202.196.0/22
103.202.200.0/21
103.202.212.0/22
103.202.228.0/22
103.202.236.0/22
103.202.240.0/22
103.202.244.0/22
103.202.248.0/22
103.202.252.0/22
103.203.0.0/22
103.203.4.0/22
103.203.8.0/22
103.203.12.0/22
103.203.16.0/22
103.203.20.0/22
103.203.24.0/22
103.203.28.0/22
103.203.32.0/22
103.203.52.0/22
103.203.56.0/22
103.203.96.0/22
103.203.100.0/22
103.203.104.0/22
103.203.108.0/22
103.203.112.0/22
103.203.116.0/22
103.203.120.0/22
103.203.124.0/22
103.203.128.0/22
103.203.140.0/22
103.203.164.0/22
103.203.168.0/22
103.203.192.0/22
103.203.200.0/22
103.203.212.0/22
103.203.216.0/22
103.204.24.0/22
103.204.72.0/22
103.204.88.0/22
103.204.112.0/22
103.204.136.0/22
103.204.140.0/22
103.204.144.0/22
103.204.148.0/22
103.204.152.0/22
103.204.196.0/22
103.204.232.0/22
103.204.236.0/22
103.205.4.0/22
103.205.8.0/22
103.205.40.0/22
103.205.44.0/22
103.205.52.0/22
103.205.108.0/22
103.205.116.0/22
103.205.120.0/22
103.205.136.0/22
103.205.162.0/24
103.205.188.0/22
103.205.192.0/22
103.205.196.0/22
103.205.200.0/22
103.205.236.0/22
103.205.248.0/22
103.205.252.0/22
103.206.0.0/22
103.206.44.0/22
103.206.108.0/22
103.206.148.0/22
103.207.48.0/22
103.207.104.0/22
103.207.164.0/22
103.207.184.0/22
103.207.188.0/22
103.207.192.0/22
103.207.196.0/22
103.207.200.0/22
103.207.204.0/22
103.207.208.0/22
103.207.212.0/22
103.207.220.0/22
103.207.228.0/22
103.207.232.0/22
103.208.12.0/22
103.208.16.0/22
103.208.28.0/22
103.208.40.0/22
103.208.44.0/22
103.208.48.0/22
103.208.148.0/22
103.209.112.0/22
103.209.136.0/22
103.209.200.0/22
103.209.208.0/22
103.209.216.0/22
103.209.232.0/22
103.210.0.0/22
103.210.20.0/22
103.210.96.0/22
103.210.156.0/22
103.210.160.0/22
103.210.164.0/22
103.210.168.0/22
103.210.172.0/22
103.210.176.0/22
103.210.180.0/22
103.210.184.0/22
103.210.188.0/22
103.210.216.0/22
103.211.44.0/22
103.211.96.0/22
103.211.100.0/22
103.211.156.0/22
103.211.164.0/22
103.211.168.0/22
103.211.192.0/22
103.211.220.0/22
103.211.224.0/22
103.211.228.0/22
103.211.248.0/22
103.212.0.0/22
103.212.4.0/22
103.212.8.0/22
103.212.12.0/22
103.212.32.0/22
103.212.44.0/22
103.212.48.0/22
103.212.84.0/22
103.212.100.0/22
103.212.104.0/22
103.212.108.0/22
103.212.148.0/22
103.212.164.0/22
103.212.196.0/22
103.212.200.0/22
103.212.252.0/22
103.213.40.0/22
103.213.44.0/22
103.213.48.0/22
103.213.52.0/22
103.213.56.0/22
103.213.60.0/22
103.213.64.0/22
103.213.68.0/22
103.213.72.0/22
103.213.76.0/22
103.213.80.0/22
103.213.84.0/22
103.213.88.0/22
103.213.92.0/22
103.213.96.0/22
103.213.132.0/22
103.213.136.0/22
103.213.140.0/22
103.213.144.0/22
103.213.148.0/22
103.213.152.0/22
103.213.156.0/22
103.213.160.0/22
103.213.164.0/22
103.213.168.0/22
103.213.172.0/22
103.213.176.0/22
103.213.180.0/22
103.213.184.0/22
103.213.188.0/22
103.213.248.0/22
103.213.252.0/22
103.214.32.0/22
103.214.48.0/22
103.214.84.0/22
103.214.168.0/22
103.214.212.0/22
103.214.224.0/22
103.214.240.0/22
103.214.244.0/22
103.215.28.0/22
103.215.32.0/22
103.215.36.0/22
103.215.44.0/22
103.215.48.0/22
103.215.100.0/22
103.215.104.0/22
103.215.108.0/22
103.215.116.0/22
103.215.120.0/22
103.215.140.0/22
103.215.184.0/22
103.215.228.0/22
103.216.4.0/22
103.216.8.0/22
103.216.12.0/22
103.216.16.0/22
103.216.20.0/22
103.216.24.0/22
103.216.28.0/22
103.216.32.0/22
103.216.36.0/22
103.216.40.0/22
103.216.44.0/22
103.216.64.0/22
103.216.108.0/22
103.216.136.0/22
103.216.152.0/22
103.216.224.0/22
103.216.228.0/22
103.216.240.0/22
103.216.244.0/22
103.216.248.0/22
103.216.252.0/22
103.217.0.0/22
103.217.4.0/22
103.217.8.0/22
103.217.12.0/22
103.217.16.0/22
103.217.20.0/22
103.217.24.0/22
103.217.28.0/22
103.217.32.0/22
103.217.36.0/22
103.217.40.0/22
103.217.44.0/22
103.217.48.0/22
103.217.52.0/22
103.217.56.0/22
103.217.60.0/22
103.217.168.0/22
103.217.180.0/22
103.217.184.0/22
103.217.188.0/22
103.217.192.0/22
103.217.196.0/22
103.217.200.0/22
103.217.204.0/22
103.218.0.0/22
103.218.8.0/22
103.218.12.0/22
103.218.16.0/22
103.218.20.0/22
103.218.28.0/22
103.218.32.0/22
103.218.36.0/22
103.218.40.0/22
103.218.44.0/22
103.218.48.0/22
103.218.52.0/22
103.218.56.0/22
103.218.60.0/22
103.218.64.0/22
103.218.68.0/22
103.218.72.0/22
103.218.76.0/22
103.218.80.0/22
103.218.84.0/22
103.218.88.0/22
103.218.92.0/22
103.218.184.0/22
103.218.192.0/22
103.218.196.0/22
103.218.200.0/22
103.218.204.0/22
103.218.208.0/22
103.218.212.0/22
103.218.216.0/22
103.219.24.0/22
103.219.28.0/22
103.219.32.0/22
103.219.36.0/22
103.219.64.0/22
103.219.84.0/22
103.219.88.0/22
103.219.92.0/22
103.219.96.0/22
103.219.100.0/22
103.219.176.0/22
103.219.184.0/22
103.220.48.0/22
103.220.52.0/22
103.220.56.0/22
103.220.60.0/22
103.220.64.0/22
103.220.92.0/22
103.220.96.0/22
103.220.100.0/22
103.220.104.0/22
103.220.108.0/22
103.220.116.0/22
103.220.120.0/22
103.220.124.0/22
103.220.128.0/22
103.220.132.0/22
103.220.136.0/22
103.220.140.0/22
103.220.144.0/22
103.220.148.0/22
103.220.152.0/22
103.220.160.0/22
103.220.164.0/22
103.220.168.0/22
103.220.172.0/22
103.220.176.0/22
103.220.180.0/22
103.220.184.0/22
103.220.188.0/22
103.220.192.0/22
103.220.196.0/22
103.220.200.0/22
103.220.240.0/22
103.220.244.0/22
103.220.248.0/22
103.220.252.0/22
103.221.0.0/22
103.221.4.0/22
103.221.8.0/22
103.221.12.0/22
103.221.16.0/22
103.221.20.0/22
103.221.24.0/22
103.221.28.0/22
103.221.32.0/22
103.221.36.0/22
103.221.40.0/22
103.221.44.0/22
103.221.48.0/22
103.221.88.0/22
103.221.92.0/22
103.221.96.0/22
103.221.100.0/22
103.221.104.0/22
103.221.108.0/22
103.221.112.0/22
103.221.116.0/22
103.221.120.0/22
103.221.124.0/22
103.221.128.0/22
103.221.132.0/22
103.221.136.0/22
103.221.140.0/22
103.221.144.0/22
103.221.148.0/22
103.221.152.0/22
103.221.156.0/22
103.221.160.0/22
103.221.164.0/22
103.221.168.0/22
103.221.172.0/22
103.221.176.0/22
103.221.180.0/22
103.221.184.0/22
103.221.188.0/22
103.221.192.0/22
103.221.196.0/22
103.221.200.0/22
103.221.204.0/22
103.222.0.0/22
103.222.4.0/22
103.222.8.0/22
103.222.12.0/22
103.222.16.0/22
103.222.24.0/22
103.222.28.0/22
103.222.32.0/22
103.222.36.0/22
103.222.40.0/22
103.222.44.0/22
103.222.48.0/22
103.222.52.0/22
103.222.56.0/22
103.222.60.0/22
103.222.64.0/22
103.222.68.0/22
103.222.72.0/22
103.222.76.0/22
103.222.80.0/22
103.222.84.0/22
103.222.88.0/22
103.222.92.0/22
103.222.96.0/22
103.222.100.0/22
103.222.104.0/22
103.222.108.0/22
103.222.112.0/22
103.222.116.0/22
103.222.120.0/22
103.222.124.0/22
103.222.128.0/22
103.222.132.0/22
103.222.136.0/22
103.222.140.0/22
103.222.144.0/22
103.222.148.0/22
103.222.152.0/22
103.222.156.0/22
103.222.160.0/22
103.222.164.0/22
103.222.168.0/22
103.222.172.0/22
103.222.176.0/22
103.222.180.0/22
103.222.184.0/22
103.222.188.0/22
103.222.192.0/22
103.222.196.0/22
103.222.200.0/22
103.222.204.0/22
103.222.208.0/22
103.222.212.0/22
103.222.216.0/22
103.222.220.0/22
103.222.224.0/22
103.222.228.0/22
103.222.232.0/22
103.222.240.0/22
103.222.244.0/22
103.223.16.0/22
103.223.20.0/22
103.223.24.0/22
103.223.28.0/22
103.223.32.0/22
103.223.36.0/22
103.223.40.0/22
103.223.44.0/22
103.223.48.0/22
103.223.52.0/22
103.223.56.0/22
103.223.60.0/22
103.223.64.0/22
103.223.68.0/22
103.223.72.0/22
103.223.76.0/22
103.223.80.0/22
103.223.84.0/22
103.223.88.0/22
103.223.92.0/22
103.223.96.0/22
103.223.100.0/22
103.223.104.0/22
103.223.108.0/22
103.223.112.0/22
103.223.116.0/22
103.223.120.0/22
103.223.124.0/22
103.223.128.0/22
103.223.132.0/22
103.223.140.0/22
103.223.144.0/22
103.223.148.0/22
103.223.152.0/22
103.223.156.0/22
103.223.160.0/22
103.223.164.0/22
103.223.168.0/22
103.223.172.0/22
103.223.176.0/22
103.223.180.0/22
103.223.188.0/22
103.223.192.0/22
103.223.196.0/22
103.223.200.0/22
103.223.204.0/22
103.223.208.0/22
103.223.212.0/22
103.223.216.0/22
103.223.220.0/22
103.223.224.0/22
103.223.228.0/22
103.223.232.0/22
103.223.236.0/22
103.223.240.0/22
103.223.244.0/22
103.223.248.0/22
103.223.252.0/22
103.224.0.0/22
103.224.16.0/22
103.224.40.0/22
103.224.44.0/22
103.224.60.0/22
103.224.80.0/22
103.224.220.0/22
103.224.224.0/22
103.224.228.0/22
103.224.232.0/22
103.225.84.0/22
103.226.16.0/22
103.226.40.0/22
103.226.56.0/22
103.226.60.0/22
103.226.80.0/22
103.226.116.0/22
103.226.132.0/22
103.226.156.0/22
103.226.180.0/22
103.226.196.0/22
103.227.48.0/22
103.227.72.0/22
103.227.76.0/22
103.227.80.0/22
103.227.100.0/22
103.227.120.0/22
103.227.132.0/22
103.227.136.0/22
103.227.196.0/22
103.227.204.0/22
103.227.212.0/22
103.227.228.0/22
103.228.12.0/22
103.228.28.0/22
103.228.68.0/22
103.228.88.0/22
103.228.128.0/22
103.228.136.0/22
103.228.160.0/22
103.228.176.0/22
103.228.204.0/22
103.228.208.0/22
103.228.228.0/22
103.228.232.0/22
103.229.20.0/22
103.229.60.0/22
103.229.136.0/22
103.229.148.0/22
103.229.172.0/22
103.229.212.0/22
103.229.216.0/22
103.229.220.0/22
103.229.228.0/22
103.229.236.0/22
103.229.240.0/22
103.230.0.0/22
103.230.28.0/22
103.230.40.0/22
103.230.44.0/22
103.230.96.0/22
103.230.196.0/22
103.230.200.0/22
103.230.204.0/22
103.230.212.0/22
103.230.236.0/22
103.231.16.0/22
103.231.20.0/22
103.231.64.0/22
103.231.68.0/22
103.231.144.0/22
103.231.180.0/22
103.231.184.0/22
103.231.244.0/22
103.232.4.0/22
103.232.144.0/22
103.232.188.0/22
103.232.212.0/22
103.233.4.0/22
103.233.44.0/22
103.233.52.0/22
103.233.104.0/22
103.233.128.0/22
103.233.136.0/22
103.233.228.0/22
103.234.0.0/22
103.234.20.0/22
103.234.56.0/22
103.234.124.0/22
103.234.128.0/22
103.234.172.0/22
103.234.180.0/22
103.234.244.0/22
103.235.16.0/22
103.235.48.0/22
103.235.56.0/22
103.235.60.0/22
103.235.80.0/22
103.235.84.0/22
103.235.128.0/22
103.235.132.0/22
103.235.136.0/22
103.235.140.0/22
103.235.144.0/22
103.235.148.0/22
103.235.184.0/22
103.235.192.0/22
103.235.200.0/22
103.235.220.0/22
103.235.224.0/22
103.235.228.0/22
103.235.232.0/22
103.235.236.0/22
103.235.240.0/22
103.235.244.0/22
103.235.248.0/22
103.235.252.0/22
103.236.0.0/22
103.236.4.0/22
103.236.8.0/22
103.236.12.0/22
103.236.16.0/22
103.236.20.0/22
103.236.24.0/22
103.236.28.0/22
103.236.32.0/22
103.236.36.0/22
103.236.40.0/22
103.236.44.0/22
103.236.48.0/22
103.236.52.0/22
103.236.56.0/22
103.236.60.0/22
103.236.64.0/22
103.236.68.0/22
103.236.72.0/22
103.236.76.0/22
103.236.80.0/22
103.236.84.0/22
103.236.88.0/22
103.236.92.0/22
103.236.96.0/22
103.236.120.0/22
103.236.184.0/22
103.236.220.0/22
103.236.232.0/22
103.236.240.0/22
103.236.244.0/22
103.236.248.0/22
103.236.252.0/22
103.237.0.0/22
103.237.4.0/22
103.237.8.0/22
103.237.12.0/22
103.237.24.0/22
103.237.28.0/22
103.237.68.0/22
103.237.88.0/22
103.237.152.0/22
103.237.176.0/22
103.237.180.0/22
103.237.184.0/22
103.237.188.0/22
103.237.192.0/22
103.237.196.0/22
103.237.200.0/22
103.237.204.0/22
103.237.208.0/22
103.237.212.0/22
103.237.216.0/22
103.237.220.0/22
103.237.224.0/22
103.237.228.0/22
103.237.232.0/22
103.237.236.0/22
103.237.240.0/22
103.237.244.0/22
103.237.248.0/22
103.237.252.0/22
103.238.0.0/22
103.238.4.0/22
103.238.16.0/22
103.238.20.0/22
103.238.24.0/22
103.238.28.0/22
103.238.32.0/22
103.238.36.0/22
103.238.40.0/22
103.238.44.0/22
103.238.48.0/22
103.238.52.0/22
103.238.56.0/22
103.238.88.0/22
103.238.92.0/22
103.238.96.0/22
103.238.132.0/22
103.238.140.0/22
103.238.144.0/22
103.238.160.0/22
103.238.164.0/22
103.238.168.0/22
103.238.172.0/22
103.238.176.0/22
103.238.180.0/22
103.238.184.0/22
103.238.188.0/22
103.238.196.0/22
103.238.204.0/22
103.238.252.0/22
103.239.0.0/22
103.239.44.0/22
103.239.68.0/22
103.239.96.0/22
103.239.152.0/22
103.239.156.0/22
103.239.176.0/22
103.239.180.0/22
103.239.184.0/22
103.239.192.0/22
103.239.196.0/22
103.239.204.0/22
103.239.208.0/22
103.239.224.0/22
103.239.244.0/22
103.240.16.0/22
103.240.36.0/22
103.240.72.0/22
103.240.84.0/22
103.240.124.0/22
103.240.156.0/22
103.240.172.0/22
103.240.188.0/22
103.240.244.0/22
103.241.12.0/22
103.241.72.0/22
103.241.92.0/22
103.241.96.0/22
103.241.160.0/22
103.241.184.0/22
103.241.188.0/22
103.241.220.0/22
103.242.8.0/22
103.242.64.0/22
103.242.128.0/22
103.242.132.0/22
103.242.160.0/22
103.242.168.0/22
103.242.172.0/22
103.242.176.0/22
103.242.200.0/22
103.242.212.0/22
103.242.220.0/22
103.242.240.0/22
103.243.136.0/22
103.243.252.0/22
103.244.16.0/22
103.244.58.0/23
103.244.60.0/22
103.244.64.0/22
103.244.68.0/22
103.244.72.0/22
103.244.76.0/22
103.244.80.0/22
103.244.84.0/22
103.244.116.0/22
103.244.164.0/22
103.244.232.0/22
103.244.252.0/22
103.245.23.0/24
103.245.52.0/22
103.245.60.0/22
103.245.80.0/22
103.245.124.0/22
103.245.128.0/22
103.246.8.0/22
103.246.12.0/22
103.246.72.0/22
103.246.120.0/22
103.246.124.0/22
103.246.132.0/22
103.246.152.0/22
103.246.156.0/22
103.247.168.0/22
103.247.172.0/22
103.247.176.0/22
103.247.200.0/22
103.247.212.0/22
103.248.0.0/23
103.248.64.0/22
103.248.100.0/22
103.248.124.0/22
103.248.152.0/22
103.248.168.0/22
103.248.192.0/22
103.248.212.0/22
103.248.220.0/22
103.248.224.0/22
103.248.228.0/22
103.249.8.0/22
103.249.12.0/22
103.249.52.0/22
103.249.104.0/22
103.249.128.0/22
103.249.136.0/22
103.249.144.0/22
103.249.164.0/22
103.249.168.0/22
103.249.172.0/22
103.249.176.0/22
103.249.188.0/22
103.249.192.0/22
103.249.244.0/22
103.249.252.0/22
103.250.32.0/22
103.250.104.0/22
103.250.124.0/22
103.250.180.0/22
103.250.192.0/22
103.250.216.0/22
103.250.224.0/22
103.250.236.0/22
103.250.248.0/22
103.250.252.0/22
103.251.32.0/22
103.251.36.0/22
103.251.84.0/22
103.251.96.0/22
103.251.124.0/22
103.251.128.0/22
103.251.160.0/22
103.251.192.0/22
103.251.204.0/22
103.251.236.0/22
103.251.240.0/22
103.252.28.0/22
103.252.36.0/22
103.252.64.0/22
103.252.96.0/22
103.252.104.0/22
103.252.172.0/22
103.252.204.0/22
103.252.208.0/22
103.252.232.0/22
103.252.248.0/22
103.253.4.0/22
103.253.60.0/22
103.253.204.0/22
103.253.220.0/22
103.253.224.0/22
103.253.232.0/22
103.254.8.0/22
103.254.20.0/22
103.254.64.0/22
103.254.68.0/22
103.254.72.0/22
103.254.76.0/22
103.254.112.0/22
103.254.176.0/22
103.254.188.0/22
103.254.196.0/24
103.254.220.0/22
103.255.56.0/22
103.255.68.0/22
103.255.88.0/22
103.255.92.0/22
103.255.136.0/22
103.255.140.0/22
103.255.184.0/22
103.255.200.0/22
103.255.212.0/22
103.255.228.0/22
106.0.0.0/24
106.0.2.0/23
106.0.4.0/22
106.0.8.0/21
106.0.16.0/20
106.0.44.0/22
106.0.64.0/18
106.2.0.0/15
106.4.0.0/14
106.8.0.0/15
106.11.0.0/16
106.12.0.0/14
106.16.0.0/12
106.32.0.0/12
106.48.0.0/15
106.50.0.0/16
106.52.0.0/14
106.56.0.0/13
106.74.0.0/16
106.75.0.0/16
106.80.0.0/12
106.108.0.0/14
106.112.0.0/13
106.120.0.0/13
106.224.0.0/12
110.6.0.0/15
110.16.0.0/14
110.34.40.0/22
110.34.44.0/22
110.40.0.0/14
110.44.12.0/22
110.44.144.0/20
110.48.0.0/16
110.51.0.0/16
110.52.0.0/15
110.56.0.0/13
110.64.0.0/15
110.72.0.0/15
110.75.0.0/17
110.75.128.0/19
110.75.160.0/19
110.75.192.0/18
110.76.0.0/19
110.76.32.0/19
110.76.132.0/22
110.76.156.0/22
110.76.184.0/22
110.76.192.0/18
110.77.0.0/17
110.80.0.0/13
110.88.0.0/14
110.92.68.0/22
110.93.32.0/19
110.94.0.0/15
110.96.0.0/11
110.152.0.0/14
110.156.0.0/15
110.165.32.0/19
110.166.0.0/15
110.172.192.0/18
110.173.0.0/19
110.173.32.0/20
110.173.64.0/19
110.173.96.0/19
110.173.192.0/19
110.176.0.0/13
110.184.0.0/13
110.192.0.0/11
110.228.0.0/14
110.232.32.0/19
110.236.0.0/15
110.240.0.0/12
111.0.0.0/10
111.66.0.0/16
111.67.192.0/20
111.68.64.0/19
111.72.0.0/13
111.85.0.0/16
111.91.192.0/19
111.92.248.0/22
111.92.252.0/22
111.112.0.0/15
111.114.0.0/15
111.116.0.0/15
111.118.200.0/21
111.119.64.0/18
111.119.128.0/19
111.120.0.0/14
111.124.0.0/16
111.126.0.0/15
111.128.0.0/11
111.160.0.0/13
111.170.0.0/16
111.172.0.0/14
111.176.0.0/13
111.186.0.0/15
111.192.0.0/12
111.208.0.0/14
111.212.0.0/14
111.221.28.0/24
111.221.128.0/17
111.222.0.0/16
111.223.4.0/22
111.223.8.0/22
111.223.12.0/22
111.223.16.0/22
111.223.240.0/22
111.223.248.0/22
111.224.0.0/14
111.228.0.0/14
111.235.96.0/19
111.235.156.0/22
111.235.160.0/19
112.0.0.0/10
112.64.0.0/15
112.66.0.0/15
112.73.0.0/16
112.74.0.0/15
112.80.0.0/13
112.88.0.0/13
112.96.0.0/15
112.98.0.0/15
112.100.0.0/14
112.109.128.0/17
112.111.0.0/16
112.112.0.0/14
112.116.0.0/15
112.122.0.0/15
112.124.0.0/14
112.128.0.0/14
112.132.0.0/16
112.137.48.0/21
112.192.0.0/14
112.224.0.0/11
113.0.0.0/13
113.8.0.0/15
113.11.192.0/19
113.12.0.0/14
113.16.0.0/15
113.18.0.0/16
113.21.232.0/22
113.21.236.0/22
113.24.0.0/14
113.31.0.0/16
113.44.0.0/14
113.48.0.0/14
113.52.160.0/19
113.52.228.0/22
113.54.0.0/15
113.56.0.0/15
113.58.0.0/16
113.59.0.0/17
113.59.224.0/22
113.62.0.0/15
113.64.0.0/11
113.96.0.0/12
113.112.0.0/13
113.120.0.0/13
113.128.0.0/15
113.130.96.0/20
113.130.112.0/21
113.132.0.0/14
113.136.0.0/13
113.194.0.0/15
113.197.100.0/22
113.200.0.0/15
113.202.0.0/16
113.204.0.0/14
113.208.96.0/19
113.208.128.0/17
113.209.0.0/16
113.212.0.0/18
113.212.100.0/22
113.212.184.0/21
113.213.0.0/17
113.214.0.0/15
113.218.0.0/15
113.220.0.0/14
113.224.0.0/12
113.240.0.0/13
113.248.0.0/14
114.28.0.0/16
114.31.64.0/22
114.31.68.0/22
114.54.0.0/15
114.60.0.0/14
114.64.0.0/14
114.68.0.0/16
114.79.64.0/18
114.80.0.0/12
114.96.0.0/13
114.104.0.0/14
114.110.0.0/20
114.110.64.0/18
114.111.0.0/19
114.111.160.0/19
114.112.0.0/14
114.116.0.0/16
114.117.0.0/16
114.118.0.0/16
114.119.0.0/17
114.119.128.0/18
114.119.192.0/21
114.119.200.0/22
114.119.204.0/22
114.119.208.0/20
114.119.224.0/19
114.132.0.0/16
114.135.0.0/16
114.138.0.0/15
114.141.64.0/21
114.141.80.0/22
114.141.84.0/22
114.141.128.0/18
114.196.0.0/15
114.198.248.0/21
114.208.0.0/14
114.212.0.0/15
114.214.0.0/16
114.215.0.0/16
114.216.0.0/13
114.224.0.0/12
114.240.0.0/12
115.24.0.0/14
115.28.0.0/15
115.31.64.0/22
115.31.68.0/22
115.31.72.0/22
115.31.76.0/22
115.32.0.0/14
115.42.56.0/22
115.44.0.0/15
115.46.0.0/16
115.47.0.0/16
115.48.0.0/12
115.69.64.0/20
115.84.0.0/18
115.84.192.0/19
115.85.192.0/18
115.100.0.0/14
115.104.0.0/14
115.120.0.0/14
115.124.16.0/20
115.148.0.0/14
115.152.0.0/15
115.154.0.0/15
115.156.0.0/15
115.158.0.0/16
115.159.0.0/16
115.166.64.0/19
115.168.0.0/14
115.172.0.0/14
115.180.0.0/14
115.187.0.0/22
115.187.4.0/22
115.187.8.0/22
115.187.12.0/22
115.190.0.0/15
115.192.0.0/11
115.224.0.0/12
116.0.8.0/21
116.0.24.0/21
116.1.0.0/16
116.2.0.0/15
116.4.0.0/14
116.8.0.0/14
116.13.0.0/16
116.16.0.0/12
116.50.0.0/20
116.52.0.0/14
116.56.0.0/15
116.58.128.0/20
116.58.208.0/20
116.60.0.0/14
116.66.0.0/17
116.66.176.0/22
116.68.136.0/22
116.68.140.0/22
116.68.176.0/22
116.68.180.0/22
116.69.0.0/16
116.70.0.0/17
116.76.0.0/15
116.78.0.0/15
116.85.0.0/16
116.89.144.0/20
116.89.240.0/22
116.90.80.0/20
116.90.184.0/21
116.95.0.0/16
116.112.0.0/14
116.116.0.0/15
116.128.0.0/10
116.192.0.0/16
116.193.16.0/20
116.193.32.0/19
116.193.152.0/22
116.193.164.0/22
116.193.176.0/21
116.194.0.0/15
116.196.0.0/16
116.197.160.0/22
116.197.164.0/22
116.198.0.0/16
116.199.0.0/17
116.199.128.0/19
116.204.0.0/15
116.206.92.0/22
116.206.100.0/22
116.206.176.0/22
116.207.0.0/16
116.208.0.0/14
116.212.160.0/20
116.213.40.0/22
116.213.44.0/22
116.213.64.0/18
116.213.128.0/17
116.214.32.0/19
116.214.64.0/20
116.214.128.0/17
116.215.0.0/16
116.216.0.0/14
116.224.0.0/12
116.242.0.0/15
116.244.0.0/15
116.246.0.0/15
116.248.0.0/15
116.251.64.0/18
116.252.0.0/15
116.254.104.0/22
116.254.108.0/22
116.254.128.0/17
116.255.128.0/17
117.8.0.0/13
117.21.0.0/16
117.22.0.0/15
117.24.0.0/13
117.32.0.0/13
117.40.0.0/14
117.44.0.0/15
117.48.0.0/14
117.53.48.0/20
117.53.176.0/20
117.57.0.0/16
117.58.0.0/17
117.59.0.0/16
117.60.0.0/14
117.64.0.0/13
117.72.0.0/15
117.74.64.0/20
117.74.80.0/20
117.74.128.0/17
117.75.0.0/16
117.76.0.0/14
117.80.0.0/12
117.100.0.0/15
117.103.16.0/20
117.103.40.0/21
117.103.72.0/21
117.103.128.0/20
117.104.168.0/21
117.106.0.0/15
117.112.0.0/13
117.120.64.0/18
117.120.128.0/17
117.121.0.0/17
117.121.128.0/18
117.121.192.0/21
117.122.128.0/17
117.124.0.0/14
117.128.0.0/10
118.24.0.0/15
118.26.0.0/16
118.28.0.0/15
118.30.0.0/16
118.31.0.0/16
118.64.0.0/15
118.66.0.0/16
118.67.112.0/20
118.72.0.0/13
118.80.0.0/15
118.84.0.0/15
118.88.32.0/19
118.88.64.0/18
118.88.128.0/17
118.89.0.0/16
118.91.240.0/20
118.102.16.0/20
118.102.32.0/21
118.103.164.0/22
118.103.168.0/22
118.103.172.0/22
118.103.176.0/22
118.107.180.0/22
118.112.0.0/13
118.120.0.0/14
118.124.0.0/15
118.126.0.0/16
118.127.128.0/19
118.132.0.0/14
118.144.0.0/14
118.178.0.0/16
118.180.0.0/14
118.184.0.0/17
118.184.128.0/17
118.186.0.0/15
118.188.0.0/16
118.190.0.0/16
118.191.0.0/16
118.192.0.0/16
118.193.0.0/20
118.193.32.0/19
118.193.64.0/20
118.193.96.0/19
118.193.128.0/17
118.194.0.0/17
118.194.128.0/17
118.195.0.0/17
118.195.128.0/17
118.196.0.0/14
118.202.0.0/15
118.204.0.0/14
118.212.0.0/16
118.213.0.0/16
118.215.192.0/18
118.224.0.0/14
118.228.0.0/15
118.230.0.0/16
118.239.0.0/16
118.242.0.0/16
118.244.0.0/14
118.248.0.0/13
119.0.0.0/15
119.2.0.0/19
119.2.128.0/17
119.3.0.0/16
119.4.0.0/14
119.8.0.0/16
119.10.0.0/17
119.15.136.0/21
119.16.0.0/16
119.18.192.0/20
119.18.208.0/21
119.18.224.0/20
119.18.240.0/20
119.19.0.0/16
119.20.0.0/14
119.27.64.0/18
119.27.128.0/19
119.27.160.0/19
119.27.192.0/18
119.28.0.0/15
119.30.48.0/20
119.31.192.0/19
119.32.0.0/14
119.36.0.0/16
119.37.0.0/17
119.37.128.0/18
119.37.192.0/18
119.38.0.0/17
119.38.128.0/18
119.38.192.0/20
119.38.208.0/20
119.38.224.0/19
119.39.0.0/16
119.40.0.0/18
119.40.64.0/20
119.40.128.0/17
119.41.0.0/16
119.42.0.0/19
119.42.52.0/22
119.42.128.0/21
119.42.136.0/21
119.42.224.0/19
119.44.0.0/15
119.48.0.0/13
119.57.0.0/16
119.58.0.0/16
119.59.128.0/17
119.60.0.0/16
119.61.0.0/16
119.62.0.0/16
119.63.32.0/19
119.75.208.0/20
119.78.0.0/15
119.80.0.0/16
119.82.208.0/20
119.84.0.0/14
119.88.0.0/14
119.96.0.0/13
119.108.0.0/15
119.112.0.0/13
119.120.0.0/13
119.128.0.0/12
119.144.0.0/14
119.148.160.0/20
119.148.176.0/20
119.151.192.0/18
119.160.200.0/21
119.161.120.0/22
119.161.124.0/22
119.161.128.0/17
119.162.0.0/15
119.164.0.0/14
119.176.0.0/12
119.232.0.0/15
119.235.128.0/18
119.248.0.0/14
119.252.96.0/21
119.252.240.0/20
119.253.0.0/16
119.254.0.0/15
120.0.0.0/12
120.24.0.0/14
120.30.0.0/16
120.31.0.0/16
120.32.0.0/13
120.40.0.0/14
120.44.0.0/14
120.48.0.0/15
120.52.0.0/16
120.53.0.0/16
120.54.0.0/15
120.64.0.0/14
120.68.0.0/14
120.72.32.0/19
120.72.128.0/17
120.76.0.0/14
120.80.0.0/13
120.88.8.0/21
120.90.0.0/15
120.92.0.0/16
120.94.0.0/16
120.95.0.0/16
120.128.0.0/14
120.132.0.0/17
120.132.128.0/17
120.133.0.0/16
120.134.0.0/15
120.136.16.0/22
120.136.20.0/22
120.136.128.0/18
120.137.0.0/17
120.143.128.0/19
120.192.0.0/10
121.0.8.0/21
121.0.16.0/20
121.4.0.0/15
121.8.0.0/13
121.16.0.0/13
121.24.0.0/14
121.28.0.0/15
121.30.0.0/16
121.31.0.0/16
121.32.0.0/14
121.36.0.0/16
121.37.0.0/16
121.38.0.0/15
121.40.0.0/14
121.46.0.0/18
121.46.76.0/22
121.46.128.0/17
121.47.0.0/16
121.48.0.0/15
121.50.8.0/21
121.51.0.0/16
121.52.160.0/19
121.52.208.0/20
121.52.224.0/19
121.54.176.0/21
121.54.188.0/22
121.55.0.0/18
121.56.0.0/15
121.58.0.0/17
121.58.136.0/21
121.58.144.0/20
121.58.160.0/21
121.59.0.0/16
121.60.0.0/14
121.68.0.0/14
121.76.0.0/15
121.79.128.0/18
121.89.0.0/16
121.100.128.0/17
121.101.0.0/18
121.101.208.0/20
121.192.0.0/16
121.193.0.0/16
121.194.0.0/15
121.196.0.0/14
121.200.192.0/21
121.201.0.0/16
121.204.0.0/14
121.224.0.0/12
121.248.0.0/14
121.255.0.0/16
122.0.64.0/18
122.0.128.0/17
122.4.0.0/14
122.8.0.0/16
122.9.0.0/16
122.10.0.0/17
122.10.128.0/22
122.10.132.0/23
122.10.134.0/23
122.10.136.0/23
122.10.138.0/23
122.10.140.0/22
122.10.144.0/20
122.10.160.0/19
122.10.192.0/18
122.11.0.0/17
122.12.0.0/16
122.13.0.0/16
122.14.0.0/17
122.14.128.0/18
122.14.192.0/18
122.48.0.0/16
122.49.0.0/18
122.51.0.0/16
122.64.0.0/11
122.96.0.0/15
122.102.0.0/20
122.102.64.0/20
122.102.80.0/20
122.112.0.0/14
122.119.0.0/16
122.128.100.0/22
122.128.120.0/21
122.136.0.0/13
122.144.128.0/17
122.152.192.0/18
122.156.0.0/14
122.188.0.0/14
122.192.0.0/14
122.198.0.0/16
122.200.40.0/22
122.200.44.0/22
122.200.64.0/18
122.201.48.0/20
122.204.0.0/14
122.224.0.0/12
122.240.0.0/13
122.248.24.0/21
122.248.48.0/20
122.255.64.0/21
123.0.128.0/18
123.4.0.0/14
123.8.0.0/13
123.49.128.0/17
123.50.160.0/19
123.52.0.0/14
123.56.0.0/15
123.58.0.0/20
123.58.16.0/20
123.58.32.0/19
123.58.64.0/19
123.58.96.0/19
123.58.128.0/18
123.58.192.0/19
123.58.224.0/20
123.58.240.0/20
123.59.0.0/16
123.60.0.0/16
123.61.0.0/16
123.62.0.0/16
123.64.0.0/11
123.96.0.0/15
123.98.0.0/17
123.99.128.0/17
123.100.0.0/19
123.101.0.0/16
123.103.0.0/17
123.108.128.0/20
123.108.208.0/20
123.112.0.0/12
123.128.0.0/13
123.136.80.0/20
123.137.0.0/16
123.138.0.0/15
123.144.0.0/14
123.148.0.0/16
123.149.0.0/16
123.150.0.0/15
123.152.0.0/13
123.160.0.0/14
123.164.0.0/14
123.168.0.0/14
123.172.0.0/15
123.174.0.0/15
123.176.60.0/22
123.176.80.0/20
123.177.0.0/16
123.178.0.0/15
123.180.0.0/14
123.184.0.0/14
123.188.0.0/14
123.196.0.0/15
123.199.128.0/17
123.206.0.0/15
123.232.0.0/14
123.242.0.0/17
123.242.192.0/22
123.242.196.0/22
123.244.0.0/14
123.249.0.0/16
123.254.96.0/22
123.254.100.0/22
124.6.64.0/18
124.14.0.0/15
124.16.0.0/15
124.20.0.0/16
124.21.0.0/20
124.21.16.0/20
124.21.32.0/19
124.21.64.0/18
124.21.128.0/17
124.22.0.0/15
124.28.192.0/18
124.29.0.0/17
124.31.0.0/16
124.40.112.0/20
124.40.128.0/18
124.40.192.0/19
124.40.240.0/22
124.42.0.0/17
124.42.128.0/17
124.47.0.0/18
124.64.0.0/15
124.66.0.0/17
124.67.0.0/16
124.68.0.0/14
124.72.0.0/16
124.73.0.0/16
124.74.0.0/15
124.76.0.0/14
124.88.0.0/16
124.89.0.0/17
124.89.128.0/17
124.90.0.0/15
124.92.0.0/14
124.108.8.0/21
124.108.40.0/21
124.109.96.0/21
124.112.0.0/15
124.114.0.0/15
124.116.0.0/16
124.117.0.0/16
124.118.0.0/15
124.126.0.0/15
124.128.0.0/13
124.147.128.0/17
124.150.137.0/24
124.151.0.0/16
124.152.0.0/16
124.156.0.0/16
124.160.0.0/16
124.161.0.0/16
124.162.0.0/16
124.163.0.0/16
124.164.0.0/14
124.172.0.0/15
124.174.0.0/15
124.192.0.0/15
124.196.0.0/16
124.200.0.0/13
124.220.0.0/14
124.224.0.0/16
124.225.0.0/16
124.226.0.0/15
124.228.0.0/14
124.232.0.0/15
124.234.0.0/15
124.236.0.0/14
124.240.0.0/17
124.240.128.0/18
124.242.0.0/16
124.243.192.0/18
124.248.0.0/17
124.249.0.0/16
124.250.0.0/15
124.254.0.0/18
125.31.192.0/18
125.32.0.0/16
125.33.0.0/16
125.34.0.0/16
125.35.0.0/17
125.35.128.0/17
125.36.0.0/14
125.40.0.0/13
125.58.128.0/17
125.61.128.0/17
125.62.0.0/18
125.64.0.0/13
125.72.0.0/16
125.73.0.0/16
125.74.0.0/15
125.76.0.0/17
125.76.128.0/17
125.77.0.0/16
125.78.0.0/15
125.80.0.0/13
125.88.0.0/13
125.96.0.0/15
125.98.0.0/16
125.104.0.0/13
125.112.0.0/12
125.169.0.0/16
125.171.0.0/16
125.208.0.0/18
125.210.0.0/16
125.211.0.0/16
125.213.0.0/17
125.214.96.0/19
125.215.0.0/18
125.216.0.0/15
125.218.0.0/16
125.219.0.0/16
125.220.0.0/15
125.222.0.0/15
125.254.128.0/18
125.254.192.0/18
137.59.59.0/24
137.59.88.0/22
139.5.56.0/22
139.5.60.0/22
139.5.80.0/22
139.5.92.0/22
139.5.108.0/22
139.5.128.0/22
139.5.160.0/22
139.5.192.0/22
139.5.204.0/22
139.5.208.0/22
139.5.212.0/22
139.5.244.0/22
139.9.0.0/16
139.129.0.0/16
139.148.0.0/16
139.155.0.0/16
139.159.0.0/16
139.170.0.0/16
139.176.0.0/16
139.183.0.0/16
139.186.0.0/16
139.189.0.0/16
139.196.0.0/14
139.200.0.0/13
139.208.0.0/13
139.217.0.0/16
139.219.0.0/16
139.220.0.0/15
139.224.0.0/16
139.226.0.0/15
140.75.0.0/16
140.143.0.0/16
140.205.0.0/16
140.206.0.0/15
140.210.0.0/16
140.224.0.0/16
140.237.0.0/16
140.240.0.0/16
140.243.0.0/16
140.246.0.0/16
140.249.0.0/16
140.250.0.0/16
140.255.0.0/16
144.0.0.0/16
144.7.0.0/16
144.12.0.0/16
144.48.8.0/22
144.48.12.0/22
144.48.56.0/22
144.48.64.0/22
144.48.88.0/22
144.48.156.0/22
144.48.172.0/22
144.48.180.0/22
144.48.184.0/22
144.48.204.0/22
144.48.208.0/22
144.48.212.0/22
144.48.220.0/22
144.48.252.0/22
144.52.0.0/16
144.123.0.0/16
144.255.0.0/16
146.196.56.0/22
146.196.68.0/22
146.196.72.0/22
146.196.76.0/22
146.196.92.0/22
146.196.112.0/22
146.196.116.0/22
146.196.124.0/22
150.0.0.0/16
150.115.0.0/16
150.121.0.0/16
150.122.0.0/16
150.129.136.0/22
150.129.152.0/22
150.129.192.0/22
150.129.216.0/22
150.129.252.0/22
150.138.0.0/15
150.223.0.0/16
150.242.0.0/22
150.242.4.0/22
150.242.8.0/22
150.242.28.0/22
150.242.44.0/22
150.242.48.0/22
150.242.52.0/22
150.242.56.0/22
150.242.76.0/22
150.242.80.0/22
150.242.92.0/22
150.242.96.0/22
150.242.112.0/22
150.242.116.0/22
150.242.120.0/22
150.242.152.0/22
150.242.156.0/22
150.242.160.0/22
150.242.164.0/22
150.242.168.0/22
150.242.184.0/22
150.242.188.0/22
150.242.192.0/22
150.242.212.0/22
150.242.224.0/22
150.242.228.0/22
150.242.232.0/22
150.242.236.0/22
150.242.240.0/22
150.242.244.0/22
150.242.248.0/22
150.255.0.0/16
152.104.128.0/17
153.0.0.0/16
153.3.0.0/16
153.34.0.0/15
153.36.0.0/15
153.99.0.0/16
153.101.0.0/16
153.118.0.0/15
157.0.0.0/16
157.18.0.0/16
157.61.0.0/16
157.119.0.0/22
157.119.8.0/22
157.119.12.0/22
157.119.16.0/22
157.119.28.0/22
157.119.68.0/22
157.119.112.0/22
157.119.132.0/22
157.119.136.0/22
157.119.140.0/22
157.119.144.0/22
157.119.148.0/22
157.119.152.0/22
157.119.156.0/22
157.119.160.0/22
157.119.164.0/22
157.119.172.0/22
157.119.192.0/22
157.119.196.0/22
157.119.240.0/22
157.119.252.0/22
157.122.0.0/16
157.148.0.0/16
157.156.0.0/16
157.255.0.0/16
159.226.0.0/16
160.19.48.0/22
160.19.208.0/22
160.19.212.0/22
160.19.216.0/22
160.20.48.0/22
160.202.60.0/22
160.202.148.0/22
160.202.152.0/22
160.202.212.0/22
160.202.216.0/22
160.202.220.0/22
160.202.224.0/22
160.202.228.0/22
160.202.232.0/22
160.202.236.0/22
160.202.240.0/22
160.202.244.0/22
160.202.248.0/22
160.202.252.0/22
160.238.64.0/22
161.207.0.0/16
162.105.0.0/16
163.0.0.0/16
163.47.4.0/22
163.53.0.0/22
163.53.4.0/22
163.53.8.0/22
163.53.12.0/22
163.53.36.0/22
163.53.40.0/22
163.53.44.0/22
163.53.48.0/22
163.53.52.0/22
163.53.56.0/22
163.53.60.0/22
163.53.64.0/22
163.53.88.0/22
163.53.92.0/22
163.53.96.0/22
163.53.100.0/22
163.53.104.0/22
163.53.108.0/22
163.53.112.0/22
163.53.116.0/22
163.53.120.0/22
163.53.124.0/22
163.53.128.0/22
163.53.132.0/22
163.53.136.0/22
163.53.160.0/22
163.53.164.0/22
163.53.168.0/22
163.53.172.0/22
163.53.188.0/22
163.53.220.0/22
163.53.240.0/22
163.125.0.0/16
163.142.0.0/16
163.177.0.0/16
163.179.0.0/16
163.204.0.0/16
164.52.0.0/17
166.111.0.0/16
167.139.0.0/16
167.189.0.0/16
167.220.244.0/22
168.160.0.0/16
170.179.0.0/16
171.8.0.0/13
171.34.0.0/15
171.36.0.0/14
171.40.0.0/13
171.80.0.0/14
171.84.0.0/14
171.88.0.0/13
171.104.0.0/13
171.112.0.0/14
171.116.0.0/14
171.120.0.0/13
171.208.0.0/12
175.0.0.0/12
175.16.0.0/13
175.24.0.0/14
175.30.0.0/15
175.42.0.0/15
175.44.0.0/16
175.46.0.0/15
175.48.0.0/12
175.64.0.0/11
175.102.0.0/16
175.106.128.0/17
175.111.108.0/22
175.111.144.0/22
175.111.148.0/22
175.111.152.0/22
175.111.156.0/22
175.111.160.0/22
175.111.164.0/22
175.111.168.0/22
175.111.172.0/22
175.111.184.0/22
175.146.0.0/15
175.148.0.0/14
175.152.0.0/14
175.158.96.0/22
175.160.0.0/12
175.176.156.0/22
175.176.176.0/22
175.176.188.0/22
175.178.0.0/16
175.184.128.0/18
175.185.0.0/16
175.186.0.0/15
175.188.0.0/14
180.76.0.0/16
180.77.0.0/16
180.78.0.0/15
180.84.0.0/15
180.86.0.0/16
180.88.0.0/14
180.94.56.0/21
180.94.96.0/20
180.94.120.0/22
180.94.124.0/22
180.95.128.0/17
180.96.0.0/11
180.129.128.0/17
180.130.0.0/16
180.136.0.0/13
180.148.16.0/21
180.148.152.0/21
180.148.216.0/21
180.148.224.0/19
180.149.128.0/19
180.149.236.0/22
180.150.160.0/19
180.152.0.0/13
180.160.0.0/12
180.178.112.0/22
180.178.116.0/22
180.178.192.0/18
180.184.0.0/14
180.188.0.0/17
180.189.148.0/22
180.200.252.0/22
180.201.0.0/16
180.202.0.0/15
180.208.0.0/15
180.210.212.0/22
180.210.224.0/19
180.212.0.0/15
180.222.224.0/19
180.223.0.0/16
180.233.0.0/18
180.233.64.0/19
180.233.144.0/22
180.235.64.0/19
180.235.112.0/22
180.235.136.0/22
182.16.144.0/22
182.16.148.0/22
182.16.192.0/19
182.18.0.0/17
182.23.184.0/21
182.23.200.0/21
182.32.0.0/12
182.48.96.0/19
182.49.0.0/16
182.50.0.0/20
182.50.112.0/20
182.51.0.0/16
182.54.0.0/17
182.54.244.0/22
182.61.0.0/16
182.80.0.0/14
182.84.0.0/14
182.88.0.0/14
182.92.0.0/16
182.96.0.0/12
182.112.0.0/12
182.128.0.0/12
182.144.0.0/13
182.157.0.0/16
182.160.64.0/19
182.174.0.0/15
182.200.0.0/13
182.236.128.0/17
182.237.24.0/22
182.237.28.0/22
182.238.0.0/16
182.239.0.0/19
182.240.0.0/13
182.254.0.0/16
182.255.36.0/22
182.255.60.0/22
183.0.0.0/10
183.64.0.0/13
183.78.160.0/22
183.78.164.0/22
183.78.180.0/22
183.81.172.0/22
183.81.180.0/22
183.84.0.0/15
183.91.128.0/22
183.91.136.0/21
183.91.144.0/20
183.92.0.0/14
183.128.0.0/11
183.160.0.0/13
183.168.0.0/15
183.170.0.0/16
183.172.0.0/14
183.182.0.0/19
183.184.0.0/13
183.192.0.0/10
192.124.154.0/24
192.140.128.0/22
192.140.132.0/22
192.140.136.0/22
192.140.156.0/22
192.140.160.0/22
192.140.164.0/22
192.140.168.0/22
192.140.172.0/22
192.140.176.0/22
192.140.180.0/22
192.140.184.0/22
192.140.188.0/22
192.140.192.0/22
192.140.196.0/22
192.140.200.0/22
192.140.204.0/22
192.140.208.0/22
192.140.212.0/22
202.0.100.0/23
202.0.122.0/23
202.0.176.0/22
202.3.128.0/23
202.4.128.0/19
202.4.252.0/22
202.5.208.0/22
202.5.212.0/22
202.5.216.0/22
202.6.6.0/23
202.6.66.0/23
202.6.72.0/23
202.6.87.0/24
202.6.88.0/23
202.6.92.0/23
202.6.103.0/24
202.6.108.0/24
202.6.110.0/23
202.6.114.0/24
202.6.176.0/20
202.8.0.0/24
202.8.2.0/23
202.8.4.0/23
202.8.12.0/24
202.8.24.0/24
202.8.77.0/24
202.8.128.0/19
202.8.192.0/20
202.9.32.0/24
202.9.34.0/23
202.9.48.0/23
202.9.51.0/24
202.9.52.0/23
202.9.54.0/24
202.9.57.0/24
202.9.58.0/23
202.10.64.0/20
202.10.112.0/22
202.10.116.0/22
202.10.120.0/22
202.10.124.0/22
202.12.1.0/24
202.12.2.0/24
202.12.17.0/24
202.12.18.0/24
202.12.19.0/24
202.12.72.0/24
202.12.84.0/23
202.12.96.0/24
202.12.98.0/23
202.12.106.0/24
202.12.111.0/24
202.12.116.0/24
202.14.64.0/23
202.14.69.0/24
202.14.73.0/24
202.14.74.0/23
202.14.76.0/24
202.14.78.0/23
202.14.88.0/24
202.14.97.0/24
202.14.104.0/23
202.14.108.0/23
202.14.111.0/24
202.14.114.0/23
202.14.118.0/23
202.14.124.0/23
202.14.127.0/24
202.14.129.0/24
202.14.135.0/24
202.14.136.0/24
202.14.149.0/24
202.14.151.0/24
202.14.157.0/24
202.14.158.0/23
202.14.169.0/24
202.14.170.0/23
202.14.172.0/22
202.14.176.0/24
202.14.184.0/23
202.14.208.0/23
202.14.213.0/24
202.14.219.0/24
202.14.220.0/24
202.14.222.0/23
202.14.225.0/24
202.14.226.0/23
202.14.231.0/24
202.14.235.0/24
202.14.236.0/23
202.14.238.0/24
202.14.239.0/24
202.14.246.0/24
202.14.251.0/24
202.20.66.0/24
202.20.79.0/24
202.20.87.0/24
202.20.88.0/23
202.20.90.0/24
202.20.94.0/23
202.20.114.0/24
202.20.117.0/24
202.20.120.0/24
202.20.125.0/24
202.20.126.0/24
202.20.127.0/24
202.21.48.0/22
202.21.52.0/22
202.21.56.0/22
202.21.60.0/22
202.21.131.0/24
202.21.132.0/24
202.21.141.0/24
202.21.142.0/24
202.21.147.0/24
202.21.148.0/24
202.21.150.0/23
202.21.152.0/23
202.21.154.0/24
202.21.156.0/24
202.22.248.0/22
202.22.252.0/22
202.27.12.0/24
202.27.14.0/24
202.27.136.0/23
202.36.226.0/24
202.38.0.0/23
202.38.2.0/23
202.38.8.0/21
202.38.48.0/20
202.38.64.0/19
202.38.96.0/19
202.38.128.0/23
202.38.130.0/23
202.38.132.0/23
202.38.134.0/24
202.38.135.0/24
202.38.136.0/23
202.38.138.0/24
202.38.140.0/23
202.38.142.0/23
202.38.146.0/23
202.38.149.0/24
202.38.150.0/23
202.38.152.0/23
202.38.154.0/23
202.38.156.0/24
202.38.158.0/23
202.38.160.0/23
202.38.164.0/22
202.38.168.0/23
202.38.170.0/24
202.38.171.0/24
202.38.176.0/23
202.38.184.0/21
202.38.192.0/18
202.40.4.0/23
202.40.7.0/24
202.40.15.0/24
202.40.135.0/24
202.40.136.0/24
202.40.140.0/24
202.40.143.0/24
202.40.144.0/23
202.40.150.0/24
202.40.155.0/24
202.40.156.0/24
202.40.158.0/23
202.40.162.0/24
202.41.8.0/23
202.41.11.0/24
202.41.12.0/23
202.41.128.0/24
202.41.130.0/23
202.41.152.0/21
202.41.192.0/24
202.41.196.0/22
202.41.200.0/22
202.41.240.0/20
202.43.76.0/22
202.43.144.0/20
202.44.16.0/20
202.44.48.0/22
202.44.67.0/24
202.44.74.0/24
202.44.97.0/24
202.44.129.0/24
202.44.132.0/23
202.44.146.0/23
202.45.0.0/23
202.45.2.0/24
202.45.15.0/24
202.45.16.0/20
202.46.16.0/23
202.46.18.0/24
202.46.20.0/23
202.46.32.0/19
202.46.128.0/24
202.46.224.0/20
202.47.82.0/23
202.47.96.0/22
202.47.100.0/22
202.47.104.0/22
202.47.108.0/22
202.47.124.0/24
202.47.126.0/24
202.47.128.0/24
202.47.130.0/23
202.52.33.0/24
202.52.34.0/24
202.52.47.0/24
202.52.143.0/24
202.52.144.0/24
202.53.140.0/24
202.53.143.0/24
202.57.192.0/22
202.57.196.0/22
202.57.200.0/22
202.57.204.0/22
202.57.212.0/22
202.57.216.0/22
202.57.240.0/20
202.58.0.0/24
202.58.104.0/22
202.58.112.0/22
202.59.0.0/24
202.59.1.0/24
202.59.212.0/22
202.59.236.0/24
202.59.240.0/24
202.60.48.0/21
202.60.96.0/21
202.60.112.0/20
202.60.132.0/22
202.60.136.0/21
202.60.144.0/20
202.61.68.0/22
202.61.76.0/22
202.61.88.0/22
202.61.123.0/24
202.61.127.0/24
202.62.112.0/22
202.62.248.0/22
202.62.252.0/24
202.62.255.0/24
202.63.80.0/24
202.63.81.0/24
202.63.82.0/23
202.63.84.0/22
202.63.88.0/21
202.63.160.0/19
202.63.248.0/22
202.63.253.0/24
202.65.0.0/21
202.65.8.0/23
202.65.96.0/22
202.65.100.0/22
202.65.104.0/22
202.65.108.0/22
202.66.168.0/22
202.67.0.0/22
202.69.4.0/22
202.69.16.0/20
202.70.0.0/19
202.70.96.0/20
202.70.192.0/20
202.71.32.0/22
202.71.36.0/22
202.71.40.0/22
202.71.44.0/22
202.72.40.0/21
202.72.80.0/20
202.72.112.0/22
202.72.116.0/22
202.72.120.0/22
202.72.124.0/22
202.73.128.0/22
202.73.240.0/22
202.73.244.0/22
202.73.248.0/22
202.73.252.0/22
202.74.8.0/21
202.74.36.0/24
202.74.42.0/24
202.74.52.0/24
202.74.80.0/20
202.74.232.0/22
202.74.254.0/23
202.75.208.0/20
202.75.252.0/22
202.76.252.0/22
202.77.80.0/21
202.77.92.0/22
202.78.8.0/21
202.79.224.0/21
202.79.248.0/22
202.80.192.0/21
202.80.200.0/21
202.81.0.0/22
202.81.176.0/22
202.81.180.0/22
202.81.184.0/22
202.81.188.0/22
202.83.252.0/22
202.84.0.0/22
202.84.4.0/22
202.84.8.0/21
202.84.16.0/23
202.84.22.0/24
202.84.24.0/21
202.85.208.0/20
202.86.249.0/24
202.86.252.0/22
202.87.80.0/20
202.88.32.0/22
202.89.8.0/21
202.89.96.0/22
202.89.108.0/22
202.89.119.0/24
202.89.232.0/21
202.90.0.0/22
202.90.16.0/22
202.90.20.0/22
202.90.24.0/22
202.90.28.0/22
202.90.37.0/24
202.90.96.0/22
202.90.100.0/22
202.90.104.0/22
202.90.108.0/22
202.90.112.0/20
202.90.193.0/24
202.90.196.0/24
202.90.205.0/24
202.90.224.0/20
202.91.0.0/22
202.91.36.0/22
202.91.96.0/20
202.91.128.0/22
202.91.176.0/20
202.91.224.0/19
202.92.0.0/22
202.92.8.0/21
202.92.48.0/20
202.92.252.0/22
202.93.0.0/22
202.93.252.0/22
202.94.74.0/24
202.94.81.0/24
202.94.92.0/22
202.95.0.0/22
202.95.4.0/22
202.95.8.0/21
202.95.16.0/20
202.95.240.0/21
202.95.252.0/22
202.96.0.0/18
202.96.64.0/21
202.96.72.0/21
202.96.80.0/20
202.96.96.0/21
202.96.104.0/21
202.96.112.0/20
202.96.128.0/21
202.96.136.0/21
202.96.144.0/20
202.96.160.0/21
202.96.168.0/21
202.96.176.0/20
202.96.192.0/21
202.96.200.0/21
202.96.208.0/20
202.96.224.0/21
202.96.232.0/21
202.96.240.0/20
202.97.0.0/21
202.97.8.0/21
202.97.16.0/20
202.97.32.0/19
202.97.64.0/19
202.97.96.0/20
202.97.112.0/20
202.97.128.0/18
202.97.192.0/19
202.97.224.0/21
202.97.232.0/21
202.97.240.0/20
202.98.0.0/21
202.98.8.0/21
202.98.16.0/20
202.98.32.0/21
202.98.40.0/21
202.98.48.0/20
202.98.64.0/19
202.98.96.0/21
202.98.104.0/21
202.98.112.0/20
202.98.128.0/19
202.98.160.0/21
202.98.168.0/21
202.98.176.0/20
202.98.192.0/21
202.98.200.0/21
202.98.208.0/20
202.98.224.0/21
202.98.232.0/21
202.98.240.0/20
202.99.0.0/18
202.99.64.0/19
202.99.96.0/21
202.99.104.0/21
202.99.112.0/20
202.99.128.0/19
202.99.160.0/21
202.99.168.0/21
202.99.176.0/20
202.99.192.0/21
202.99.200.0/21
202.99.208.0/20
202.99.224.0/21
202.99.232.0/21
202.99.240.0/20
202.100.0.0/21
202.100.8.0/21
202.100.16.0/20
202.100.32.0/19
202.100.64.0/21
202.100.72.0/21
202.100.80.0/20
202.100.96.0/21
202.100.104.0/21
202.100.112.0/20
202.100.128.0/21
202.100.136.0/21
202.100.144.0/20
202.100.160.0/21
202.100.168.0/21
202.100.176.0/20
202.100.192.0/21
202.100.200.0/21
202.100.208.0/20
202.100.224.0/19
202.101.0.0/18
202.101.64.0/19
202.101.96.0/19
202.101.128.0/18
202.101.192.0/19
202.101.224.0/21
202.101.232.0/21
202.101.240.0/20
202.102.0.0/19
202.102.32.0/19
202.102.64.0/18
202.102.128.0/21
202.102.136.0/21
202.102.144.0/20
202.102.160.0/19
202.102.192.0/21
202.102.200.0/21
202.102.208.0/20
202.102.224.0/21
202.102.232.0/21
202.102.240.0/20
202.103.0.0/21
202.103.8.0/21
202.103.16.0/20
202.103.32.0/19
202.103.64.0/19
202.103.96.0/21
202.103.104.0/21
202.103.112.0/20
202.103.128.0/18
202.103.192.0/19
202.103.224.0/21
202.103.232.0/21
202.103.240.0/20
202.104.0.0/15
202.106.0.0/16
202.107.0.0/17
202.107.128.0/17
202.108.0.0/16
202.109.0.0/16
202.110.0.0/18
202.110.64.0/18
202.110.128.0/18
202.110.192.0/18
202.111.0.0/17
202.111.128.0/19
202.111.160.0/19
202.111.192.0/18
202.112.0.0/16
202.113.0.0/20
202.113.16.0/20
202.113.32.0/19
202.113.64.0/18
202.113.128.0/18
202.113.192.0/19
202.113.224.0/20
202.113.240.0/20
202.114.0.0/19
202.114.32.0/19
202.114.64.0/18
202.114.128.0/17
202.115.0.0/19
202.115.32.0/19
202.115.64.0/18
202.115.128.0/17
202.116.0.0/19
202.116.32.0/20
202.116.48.0/20
202.116.64.0/19
202.116.96.0/19
202.116.128.0/17
202.117.0.0/18
202.117.64.0/18
202.117.128.0/17
202.118.0.0/19
202.118.32.0/19
202.118.64.0/18
202.118.128.0/17
202.119.0.0/19
202.119.32.0/19
202.119.64.0/20
202.119.80.0/20
202.119.96.0/19
202.119.128.0/17
202.120.0.0/18
202.120.64.0/18
202.120.128.0/17
202.121.0.0/16
202.122.0.0/21
202.122.32.0/21
202.122.64.0/19
202.122.112.0/21
202.122.120.0/21
202.122.128.0/24
202.122.132.0/24
202.123.96.0/20
202.123.116.0/22
202.123.120.0/22
202.124.16.0/21
202.124.24.0/22
202.125.107.0/24
202.125.109.0/24
202.125.112.0/20
202.125.176.0/20
202.127.0.0/23
202.127.2.0/24
202.127.3.0/24
202.127.4.0/24
202.127.5.0/24
202.127.6.0/23
202.127.12.0/22
202.127.16.0/20
202.127.40.0/21
202.127.48.0/20
202.127.112.0/20
202.127.128.0/20
202.127.144.0/20
202.127.160.0/21
202.127.192.0/23
202.127.194.0/23
202.127.196.0/22
202.127.200.0/21
202.127.208.0/24
202.127.209.0/24
202.127.212.0/22
202.127.216.0/21
202.127.224.0/19
202.129.208.0/24
202.130.0.0/19
202.130.39.0/24
202.130.224.0/19
202.131.16.0/21
202.131.48.0/20
202.131.208.0/20
202.133.32.0/20
202.134.58.0/24
202.134.128.0/20
202.134.208.0/22
202.134.212.0/22
202.134.216.0/22
202.134.220.0/22
202.136.48.0/20
202.136.208.0/20
202.136.224.0/20
202.136.248.0/22
202.137.231.0/24
202.140.140.0/22
202.140.144.0/22
202.140.148.0/22
202.140.152.0/22
202.140.156.0/22
202.141.160.0/19
202.142.16.0/20
202.143.4.0/22
202.143.16.0/20
202.143.32.0/20
202.143.56.0/21
202.143.100.0/22
202.143.104.0/22
202.146.160.0/20
202.146.186.0/24
202.146.188.0/22
202.146.196.0/22
202.146.200.0/21
202.147.144.0/20
202.148.32.0/20
202.148.64.0/19
202.148.96.0/19
202.149.32.0/19
202.149.160.0/19
202.149.224.0/19
202.150.16.0/20
202.150.32.0/20
202.150.56.0/22
202.150.192.0/20
202.150.224.0/19
202.151.0.0/22
202.151.33.0/24
202.151.128.0/19
202.152.176.0/20
202.153.0.0/22
202.153.7.0/24
202.153.48.0/20
202.157.192.0/19
202.158.160.0/19
202.158.242.0/24
202.160.140.0/22
202.160.156.0/22
202.160.176.0/20
202.162.67.0/24
202.162.75.0/24
202.164.0.0/20
202.164.96.0/19
202.165.96.0/20
202.165.176.0/20
202.165.208.0/20
202.165.239.0/24
202.165.240.0/23
202.165.243.0/24
202.165.245.0/24
202.165.251.0/24
202.165.252.0/22
202.166.224.0/19
202.168.80.0/22
202.168.128.0/22
202.168.132.0/22
202.168.136.0/22
202.168.140.0/22
202.168.160.0/20
202.168.176.0/20
202.170.128.0/19
202.170.216.0/21
202.170.224.0/19
202.171.216.0/21
202.171.232.0/24
202.171.235.0/24
202.172.0.0/22
202.172.7.0/24
202.173.0.0/22
202.173.6.0/24
202.173.8.0/21
202.173.112.0/22
202.173.224.0/19
202.174.64.0/20
202.174.124.0/22
202.176.224.0/19
202.179.160.0/22
202.179.164.0/22
202.179.168.0/22
202.179.172.0/22
202.179.240.0/20
202.180.128.0/19
202.180.208.0/21
202.181.8.0/22
202.181.28.0/22
202.181.112.0/20
202.182.32.0/20
202.182.192.0/19
202.189.0.0/18
202.189.80.0/20
202.189.184.0/21
202.191.0.0/24
202.191.68.0/22
202.191.72.0/21
202.191.80.0/20
202.192.0.0/13
202.200.0.0/14
202.204.0.0/14
203.0.4.0/22
203.0.10.0/23
203.0.18.0/24
203.0.24.0/24
203.0.42.0/23
203.0.45.0/24
203.0.46.0/23
203.0.81.0/24
203.0.82.0/23
203.0.90.0/23
203.0.96.0/23
203.0.104.0/21
203.0.114.0/23
203.0.122.0/24
203.0.128.0/24
203.0.130.0/23
203.0.132.0/22
203.0.137.0/24
203.0.142.0/24
203.0.144.0/24
203.0.146.0/24
203.0.148.0/24
203.0.150.0/23
203.0.152.0/24
203.0.177.0/24
203.0.224.0/24
203.1.4.0/22
203.1.18.0/24
203.1.26.0/23
203.1.65.0/24
203.1.66.0/23
203.1.70.0/23
203.1.76.0/23
203.1.90.0/24
203.1.97.0/24
203.1.98.0/23
203.1.100.0/22
203.1.108.0/24
203.1.253.0/24
203.1.254.0/24
203.2.64.0/21
203.2.73.0/24
203.2.112.0/21
203.2.126.0/23
203.2.140.0/24
203.2.150.0/24
203.2.152.0/22
203.2.156.0/23
203.2.160.0/21
203.2.180.0/23
203.2.196.0/23
203.2.209.0/24
203.2.214.0/23
203.2.226.0/23
203.2.229.0/24
203.2.236.0/23
203.3.68.0/24
203.3.72.0/23
203.3.75.0/24
203.3.80.0/21
203.3.96.0/22
203.3.105.0/24
203.3.112.0/21
203.3.120.0/24
203.3.123.0/24
203.3.135.0/24
203.3.139.0/24
203.3.143.0/24
203.4.132.0/23
203.4.134.0/24
203.4.151.0/24
203.4.152.0/22
203.4.174.0/23
203.4.180.0/24
203.4.186.0/24
203.4.205.0/24
203.4.208.0/22
203.4.227.0/24
203.4.230.0/23
203.5.4.0/23
203.5.7.0/24
203.5.8.0/23
203.5.11.0/24
203.5.21.0/24
203.5.22.0/24
203.5.44.0/24
203.5.46.0/23
203.5.52.0/22
203.5.56.0/23
203.5.60.0/23
203.5.114.0/23
203.5.118.0/24
203.5.120.0/24
203.5.172.0/24
203.5.180.0/23
203.5.182.0/24
203.5.185.0/24
203.5.186.0/24
203.5.188.0/23
203.5.190.0/24
203.5.195.0/24
203.5.214.0/23
203.5.218.0/23
203.6.131.0/24
203.6.136.0/24
203.6.138.0/23
203.6.142.0/24
203.6.150.0/23
203.6.157.0/24
203.6.159.0/24
203.6.224.0/20
203.6.248.0/23
203.7.129.0/24
203.7.138.0/23
203.7.147.0/24
203.7.150.0/23
203.7.158.0/24
203.7.192.0/23
203.7.200.0/24
203.8.0.0/24
203.8.8.0/24
203.8.23.0/24
203.8.24.0/21
203.8.70.0/24
203.8.82.0/24
203.8.86.0/23
203.8.91.0/24
203.8.110.0/23
203.8.115.0/24
203.8.166.0/23
203.8.169.0/24
203.8.173.0/24
203.8.184.0/24
203.8.186.0/23
203.8.190.0/23
203.8.192.0/24
203.8.197.0/24
203.8.198.0/23
203.8.203.0/24
203.8.209.0/24
203.8.210.0/23
203.8.212.0/22
203.8.217.0/24
203.8.220.0/24
203.9.32.0/24
203.9.36.0/23
203.9.57.0/24
203.9.63.0/24
203.9.65.0/24
203.9.70.0/23
203.9.72.0/24
203.9.75.0/24
203.9.76.0/23
203.9.96.0/22
203.9.100.0/23
203.9.108.0/24
203.9.158.0/24
203.10.34.0/24
203.10.56.0/24
203.10.74.0/23
203.10.84.0/22
203.10.88.0/24
203.10.95.0/24
203.10.125.0/24
203.11.70.0/24
203.11.76.0/22
203.11.82.0/24
203.11.84.0/22
203.11.100.0/22
203.11.109.0/24
203.11.117.0/24
203.11.122.0/24
203.11.126.0/24
203.11.136.0/22
203.11.141.0/24
203.11.142.0/23
203.11.180.0/22
203.11.208.0/22
203.12.16.0/24
203.12.19.0/24
203.12.24.0/24
203.12.57.0/24
203.12.65.0/24
203.12.66.0/24
203.12.70.0/23
203.12.87.0/24
203.12.88.0/21
203.12.100.0/23
203.12.103.0/24
203.12.114.0/24
203.12.118.0/24
203.12.130.0/24
203.12.137.0/24
203.12.196.0/22
203.12.200.0/21
203.12.211.0/24
203.12.219.0/24
203.12.226.0/24
203.12.240.0/22
203.13.18.0/24
203.13.24.0/24
203.13.44.0/23
203.13.80.0/21
203.13.88.0/23
203.13.92.0/22
203.13.173.0/24
203.13.224.0/23
203.13.227.0/24
203.13.233.0/24
203.14.24.0/22
203.14.33.0/24
203.14.56.0/24
203.14.61.0/24
203.14.62.0/24
203.14.104.0/24
203.14.114.0/23
203.14.118.0/24
203.14.162.0/24
203.14.184.0/21
203.14.192.0/24
203.14.194.0/23
203.14.214.0/24
203.14.231.0/24
203.14.246.0/24
203.15.0.0/20
203.15.20.0/23
203.15.22.0/24
203.15.87.0/24
203.15.88.0/23
203.15.105.0/24
203.15.112.0/21
203.15.130.0/23
203.15.149.0/24
203.15.151.0/24
203.15.156.0/22
203.15.174.0/24
203.15.227.0/24
203.15.232.0/21
203.15.240.0/23
203.15.246.0/24
203.16.10.0/24
203.16.12.0/23
203.16.16.0/21
203.16.27.0/24
203.16.38.0/24
203.16.49.0/24
203.16.50.0/23
203.16.58.0/24
203.16.63.0/24
203.16.133.0/24
203.16.161.0/24
203.16.162.0/24
203.16.186.0/23
203.16.228.0/24
203.16.238.0/24
203.16.240.0/24
203.16.245.0/24
203.17.2.0/24
203.17.18.0/24
203.17.28.0/24
203.17.39.0/24
203.17.56.0/24
203.17.74.0/23
203.17.88.0/23
203.17.136.0/24
203.17.164.0/24
203.17.187.0/24
203.17.190.0/23
203.17.231.0/24
203.17.233.0/24
203.17.248.0/24
203.17.249.0/24
203.17.255.0/24
203.18.2.0/23
203.18.4.0/24
203.18.7.0/24
203.18.31.0/24
203.18.37.0/24
203.18.48.0/23
203.18.52.0/24
203.18.72.0/22
203.18.80.0/23
203.18.87.0/24
203.18.100.0/23
203.18.105.0/24
203.18.107.0/24
203.18.110.0/24
203.18.129.0/24
203.18.131.0/24
203.18.132.0/23
203.18.144.0/24
203.18.153.0/24
203.18.199.0/24
203.18.208.0/24
203.18.211.0/24
203.18.215.0/24
203.19.1.0/24
203.19.18.0/24
203.19.24.0/24
203.19.30.0/24
203.19.32.0/21
203.19.41.0/24
203.19.44.0/23
203.19.46.0/24
203.19.58.0/24
203.19.60.0/23
203.19.64.0/24
203.19.68.0/24
203.19.72.0/24
203.19.101.0/24
203.19.111.0/24
203.19.131.0/24
203.19.133.0/24
203.19.144.0/24
203.19.147.0/24
203.19.149.0/24
203.19.156.0/24
203.19.176.0/24
203.19.178.0/23
203.19.208.0/24
203.19.228.0/22
203.19.233.0/24
203.19.242.0/24
203.19.248.0/23
203.19.255.0/24
203.20.17.0/24
203.20.40.0/23
203.20.44.0/24
203.20.48.0/24
203.20.61.0/24
203.20.65.0/24
203.20.84.0/23
203.20.89.0/24
203.20.106.0/23
203.20.115.0/24
203.20.117.0/24
203.20.118.0/23
203.20.122.0/24
203.20.126.0/23
203.20.135.0/24
203.20.136.0/21
203.20.150.0/24
203.20.230.0/24
203.20.232.0/24
203.20.236.0/24
203.21.0.0/23
203.21.2.0/24
203.21.8.0/24
203.21.10.0/24
203.21.18.0/24
203.21.33.0/24
203.21.34.0/24
203.21.41.0/24
203.21.44.0/24
203.21.68.0/24
203.21.82.0/24
203.21.96.0/22
203.21.124.0/24
203.21.136.0/23
203.21.145.0/24
203.21.206.0/24
203.22.24.0/24
203.22.28.0/23
203.22.31.0/24
203.22.68.0/24
203.22.76.0/24
203.22.78.0/24
203.22.84.0/24
203.22.87.0/24
203.22.92.0/22
203.22.99.0/24
203.22.106.0/24
203.22.122.0/23
203.22.131.0/24
203.22.163.0/24
203.22.166.0/24
203.22.170.0/24
203.22.176.0/21
203.22.194.0/24
203.22.242.0/23
203.22.245.0/24
203.22.246.0/24
203.22.252.0/23
203.23.0.0/24
203.23.47.0/24
203.23.61.0/24
203.23.62.0/23
203.23.73.0/24
203.23.85.0/24
203.23.92.0/22
203.23.98.0/24
203.23.107.0/24
203.23.112.0/24
203.23.130.0/24
203.23.140.0/23
203.23.172.0/24
203.23.182.0/24
203.23.186.0/23
203.23.192.0/24
203.23.197.0/24
203.23.198.0/24
203.23.204.0/22
203.23.224.0/24
203.23.226.0/23
203.23.228.0/22
203.23.249.0/24
203.23.251.0/24
203.24.13.0/24
203.24.18.0/24
203.24.27.0/24
203.24.43.0/24
203.24.56.0/24
203.24.58.0/24
203.24.67.0/24
203.24.74.0/24
203.24.79.0/24
203.24.80.0/23
203.24.84.0/23
203.24.86.0/24
203.24.90.0/24
203.24.111.0/24
203.24.112.0/24
203.24.116.0/24
203.24.122.0/23
203.24.145.0/24
203.24.152.0/23
203.24.157.0/24
203.24.161.0/24
203.24.167.0/24
203.24.186.0/23
203.24.199.0/24
203.24.202.0/24
203.24.212.0/23
203.24.217.0/24
203.24.219.0/24
203.24.244.0/24
203.25.19.0/24
203.25.20.0/23
203.25.46.0/24
203.25.48.0/21
203.25.64.0/23
203.25.91.0/24
203.25.99.0/24
203.25.100.0/24
203.25.106.0/24
203.25.131.0/24
203.25.135.0/24
203.25.138.0/24
203.25.147.0/24
203.25.153.0/24
203.25.154.0/23
203.25.164.0/24
203.25.166.0/24
203.25.174.0/23
203.25.180.0/24
203.25.182.0/24
203.25.191.0/24
203.25.199.0/24
203.25.200.0/24
203.25.202.0/23
203.25.208.0/20
203.25.229.0/24
203.25.235.0/24
203.25.236.0/24
203.25.242.0/24
203.26.12.0/24
203.26.34.0/24
203.26.49.0/24
203.26.50.0/24
203.26.55.0/24
203.26.56.0/23
203.26.60.0/24
203.26.65.0/24
203.26.68.0/24
203.26.76.0/24
203.26.80.0/24
203.26.84.0/24
203.26.97.0/24
203.26.102.0/23
203.26.115.0/24
203.26.116.0/24
203.26.129.0/24
203.26.143.0/24
203.26.144.0/24
203.26.148.0/23
203.26.154.0/24
203.26.158.0/23
203.26.170.0/24
203.26.173.0/24
203.26.176.0/24
203.26.185.0/24
203.26.202.0/23
203.26.210.0/24
203.26.214.0/24
203.26.222.0/24
203.26.224.0/24
203.26.228.0/24
203.26.232.0/24
203.27.0.0/24
203.27.10.0/24
203.27.15.0/24
203.27.16.0/24
203.27.20.0/24
203.27.22.0/23
203.27.40.0/24
203.27.45.0/24
203.27.53.0/24
203.27.65.0/24
203.27.66.0/24
203.27.81.0/24
203.27.88.0/24
203.27.102.0/24
203.27.109.0/24
203.27.117.0/24
203.27.121.0/24
203.27.122.0/23
203.27.125.0/24
203.27.200.0/24
203.27.202.0/24
203.27.233.0/24
203.27.241.0/24
203.27.250.0/24
203.28.10.0/24
203.28.12.0/24
203.28.33.0/24
203.28.34.0/23
203.28.43.0/24
203.28.44.0/24
203.28.54.0/24
203.28.56.0/24
203.28.73.0/24
203.28.74.0/24
203.28.76.0/24
203.28.86.0/24
203.28.88.0/24
203.28.112.0/24
203.28.131.0/24
203.28.136.0/24
203.28.140.0/24
203.28.145.0/24
203.28.165.0/24
203.28.169.0/24
203.28.170.0/24
203.28.178.0/23
203.28.185.0/24
203.28.187.0/24
203.28.196.0/24
203.28.226.0/23
203.28.239.0/24
203.29.2.0/24
203.29.8.0/23
203.29.13.0/24
203.29.14.0/24
203.29.28.0/24
203.29.46.0/24
203.29.57.0/24
203.29.61.0/24
203.29.63.0/24
203.29.69.0/24
203.29.73.0/24
203.29.81.0/24
203.29.90.0/24
203.29.95.0/24
203.29.100.0/24
203.29.103.0/24
203.29.112.0/24
203.29.120.0/22
203.29.182.0/23
203.29.187.0/24
203.29.189.0/24
203.29.190.0/24
203.29.205.0/24
203.29.210.0/24
203.29.217.0/24
203.29.227.0/24
203.29.231.0/24
203.29.233.0/24
203.29.234.0/24
203.29.248.0/24
203.29.254.0/23
203.30.16.0/23
203.30.25.0/24
203.30.27.0/24
203.30.29.0/24
203.30.66.0/24
203.30.81.0/24
203.30.87.0/24
203.30.111.0/24
203.30.121.0/24
203.30.123.0/24
203.30.152.0/24
203.30.156.0/24
203.30.162.0/24
203.30.173.0/24
203.30.175.0/24
203.30.187.0/24
203.30.194.0/24
203.30.217.0/24
203.30.220.0/24
203.30.222.0/24
203.30.232.0/23
203.30.235.0/24
203.30.240.0/23
203.30.246.0/24
203.30.250.0/23
203.31.45.0/24
203.31.46.0/24
203.31.49.0/24
203.31.51.0/24
203.31.54.0/23
203.31.69.0/24
203.31.72.0/24
203.31.80.0/24
203.31.85.0/24
203.31.97.0/24
203.31.105.0/24
203.31.106.0/24
203.31.108.0/23
203.31.124.0/24
203.31.162.0/24
203.31.174.0/24
203.31.177.0/24
203.31.181.0/24
203.31.187.0/24
203.31.189.0/24
203.31.204.0/24
203.31.220.0/24
203.31.222.0/23
203.31.225.0/24
203.31.229.0/24
203.31.248.0/23
203.31.253.0/24
203.32.20.0/24
203.32.48.0/23
203.32.56.0/24
203.32.60.0/24
203.32.62.0/24
203.32.68.0/23
203.32.76.0/24
203.32.81.0/24
203.32.84.0/23
203.32.95.0/24
203.32.102.0/24
203.32.105.0/24
203.32.130.0/24
203.32.133.0/24
203.32.140.0/24
203.32.152.0/24
203.32.186.0/23
203.32.192.0/24
203.32.196.0/24
203.32.203.0/24
203.32.204.0/23
203.32.212.0/24
203.33.4.0/24
203.33.7.0/24
203.33.8.0/21
203.33.21.0/24
203.33.26.0/24
203.33.32.0/24
203.33.63.0/24
203.33.64.0/24
203.33.67.0/24
203.33.68.0/24
203.33.73.0/24
203.33.79.0/24
203.33.100.0/24
203.33.122.0/24
203.33.129.0/24
203.33.131.0/24
203.33.145.0/24
203.33.156.0/24
203.33.158.0/23
203.33.174.0/24
203.33.185.0/24
203.33.200.0/24
203.33.202.0/23
203.33.204.0/24
203.33.206.0/23
203.33.214.0/23
203.33.224.0/23
203.33.226.0/24
203.33.233.0/24
203.33.243.0/24
203.33.250.0/24
203.34.4.0/24
203.34.21.0/24
203.34.27.0/24
203.34.39.0/24
203.34.48.0/23
203.34.54.0/24
203.34.56.0/23
203.34.67.0/24
203.34.69.0/24
203.34.76.0/24
203.34.92.0/24
203.34.106.0/24
203.34.113.0/24
203.34.147.0/24
203.34.150.0/24
203.34.152.0/23
203.34.161.0/24
203.34.162.0/24
203.34.187.0/24
203.34.192.0/21
203.34.204.0/22
203.34.232.0/24
203.34.240.0/24
203.34.242.0/24
203.34.245.0/24
203.34.251.0/24
203.55.2.0/23
203.55.4.0/24
203.55.10.0/24
203.55.13.0/24
203.55.22.0/24
203.55.30.0/24
203.55.93.0/24
203.55.101.0/24
203.55.109.0/24
203.55.110.0/24
203.55.116.0/23
203.55.119.0/24
203.55.128.0/23
203.55.146.0/23
203.55.192.0/24
203.55.196.0/24
203.55.218.0/23
203.55.221.0/24
203.55.224.0/24
203.56.1.0/24
203.56.4.0/24
203.56.12.0/24
203.56.24.0/24
203.56.38.0/24
203.56.40.0/24
203.56.46.0/24
203.56.48.0/21
203.56.68.0/23
203.56.82.0/23
203.56.84.0/23
203.56.95.0/24
203.56.110.0/24
203.56.121.0/24
203.56.161.0/24
203.56.169.0/24
203.56.172.0/23
203.56.175.0/24
203.56.183.0/24
203.56.185.0/24
203.56.187.0/24
203.56.192.0/24
203.56.198.0/24
203.56.201.0/24
203.56.208.0/23
203.56.210.0/24
203.56.214.0/24
203.56.216.0/24
203.56.227.0/24
203.56.228.0/24
203.56.231.0/24
203.56.232.0/24
203.56.240.0/24
203.56.252.0/24
203.56.254.0/24
203.57.5.0/24
203.57.6.0/24
203.57.12.0/23
203.57.28.0/24
203.57.39.0/24
203.57.46.0/24
203.57.58.0/24
203.57.61.0/24
203.57.66.0/24
203.57.69.0/24
203.57.70.0/23
203.57.73.0/24
203.57.90.0/24
203.57.101.0/24
203.57.109.0/24
203.57.123.0/24
203.57.157.0/24
203.57.200.0/24
203.57.202.0/24
203.57.206.0/24
203.57.222.0/24
203.57.224.0/20
203.57.246.0/23
203.57.249.0/24
203.57.253.0/24
203.57.254.0/23
203.62.2.0/24
203.62.131.0/24
203.62.139.0/24
203.62.161.0/24
203.62.197.0/24
203.62.228.0/22
203.62.234.0/24
203.62.246.0/24
203.76.160.0/22
203.76.168.0/22
203.76.208.0/22
203.76.212.0/22
203.76.216.0/22
203.76.240.0/22
203.76.244.0/22
203.77.180.0/22
203.78.48.0/20
203.78.156.0/22
203.79.0.0/20
203.79.32.0/20
203.80.4.0/23
203.80.32.0/20
203.80.57.0/24
203.80.129.0/24
203.80.132.0/22
203.80.136.0/21
203.80.144.0/20
203.81.0.0/21
203.81.16.0/20
203.81.244.0/22
203.82.0.0/23
203.82.16.0/21
203.82.112.0/22
203.82.116.0/22
203.82.120.0/22
203.82.124.0/22
203.82.224.0/22
203.82.228.0/22
203.82.232.0/22
203.82.236.0/22
203.83.0.0/22
203.83.8.0/22
203.83.12.0/22
203.83.56.0/21
203.83.224.0/20
203.86.0.0/19
203.86.32.0/19
203.86.64.0/20
203.86.80.0/20
203.86.96.0/19
203.86.250.0/24
203.86.254.0/23
203.88.32.0/19
203.88.192.0/19
203.89.0.0/22
203.89.8.0/21
203.89.133.0/24
203.89.136.0/22
203.89.144.0/24
203.90.0.0/22
203.90.8.0/22
203.90.12.0/22
203.90.128.0/19
203.90.160.0/19
203.90.192.0/19
203.91.32.0/19
203.91.96.0/20
203.91.120.0/21
203.92.0.0/22
203.92.6.0/24
203.92.160.0/19
203.93.0.0/22
203.93.4.0/22
203.93.8.0/24
203.93.9.0/24
203.93.10.0/23
203.93.12.0/22
203.93.16.0/20
203.93.32.0/19
203.93.64.0/18
203.93.128.0/21
203.93.136.0/22
203.93.140.0/24
203.93.141.0/24
203.93.142.0/23
203.93.144.0/20
203.93.160.0/19
203.93.192.0/18
203.94.0.0/22
203.94.4.0/22
203.94.8.0/21
203.94.16.0/20
203.95.0.0/21
203.95.96.0/20
203.95.112.0/20
203.95.128.0/18
203.95.200.0/22
203.95.204.0/22
203.95.208.0/22
203.95.224.0/19
203.99.8.0/21
203.99.16.0/20
203.99.80.0/20
203.100.32.0/20
203.100.48.0/21
203.100.58.0/24
203.100.60.0/24
203.100.63.0/24
203.100.80.0/20
203.100.96.0/19
203.100.192.0/20
203.104.32.0/20
203.105.96.0/19
203.105.128.0/19
203.107.0.0/17
203.110.160.0/19
203.110.208.0/20
203.110.232.0/23
203.110.234.0/24
203.114.80.0/22
203.114.84.0/22
203.114.88.0/22
203.114.92.0/22
203.114.244.0/22
203.118.192.0/19
203.118.241.0/24
203.118.248.0/22
203.119.24.0/21
203.119.32.0/22
203.119.80.0/22
203.119.85.0/24
203.119.113.0/24
203.119.114.0/23
203.119.116.0/22
203.119.120.0/21
203.119.128.0/17
203.123.58.0/24
203.128.32.0/19
203.128.96.0/19
203.128.224.0/21
203.129.8.0/21
203.130.32.0/19
203.132.32.0/19
203.134.240.0/21
203.135.96.0/20
203.135.112.0/20
203.135.160.0/20
203.142.219.0/24
203.142.224.0/19
203.144.96.0/19
203.145.0.0/19
203.148.0.0/18
203.148.64.0/20
203.148.80.0/22
203.148.86.0/23
203.149.92.0/22
203.152.64.0/19
203.152.128.0/19
203.153.0.0/22
203.156.192.0/18
203.158.16.0/21
203.160.52.0/22
203.160.104.0/21
203.160.129.0/24
203.160.192.0/19
203.161.0.0/22
203.161.180.0/24
203.161.183.0/24
203.161.192.0/19
203.166.160.0/19
203.167.28.0/22
203.168.0.0/19
203.170.58.0/23
203.171.0.0/22
203.171.208.0/24
203.171.224.0/20
203.174.4.0/24
203.174.6.0/24
203.174.7.0/24
203.174.96.0/19
203.175.128.0/19
203.175.192.0/18
203.176.0.0/18
203.176.64.0/19
203.176.168.0/21
203.184.80.0/20
203.185.189.0/24
203.187.160.0/19
203.189.0.0/23
203.189.6.0/23
203.189.112.0/22
203.189.192.0/19
203.189.232.0/22
203.189.236.0/22
203.189.240.0/22
203.190.96.0/20
203.190.249.0/24
203.191.0.0/23
203.191.2.0/24
203.191.5.0/24
203.191.7.0/24
203.191.16.0/20
203.191.64.0/18
203.191.133.0/24
203.191.144.0/21
203.191.152.0/21
203.192.0.0/19
203.193.224.0/19
203.194.120.0/21
203.195.64.0/19
203.195.112.0/21
203.195.128.0/17
203.196.0.0/21
203.196.8.0/21
203.196.28.0/22
203.201.181.0/24
203.201.182.0/24
203.202.236.0/22
203.205.64.0/19
203.205.128.0/17
203.207.64.0/20
203.207.80.0/21
203.207.88.0/22
203.207.92.0/22
203.207.96.0/20
203.207.112.0/20
203.207.128.0/18
203.207.192.0/21
203.207.200.0/21
203.207.208.0/20
203.207.224.0/19
203.208.0.0/20
203.208.16.0/22
203.208.32.0/19
203.209.224.0/19
203.212.0.0/20
203.212.80.0/20
203.215.232.0/21
203.217.164.0/22
203.222.192.0/20
203.223.0.0/20
203.223.16.0/21
210.2.0.0/20
210.2.16.0/20
210.5.0.0/19
210.5.56.0/21
210.5.128.0/20
210.5.144.0/20
210.7.56.0/22
210.7.60.0/22
210.12.0.0/18
210.12.64.0/18
210.12.128.0/18
210.12.192.0/18
210.13.0.0/18
210.13.64.0/18
210.13.128.0/17
210.14.64.0/19
210.14.112.0/20
210.14.128.0/19
210.14.160.0/19
210.14.192.0/19
210.14.224.0/19
210.15.0.0/19
210.15.32.0/19
210.15.64.0/19
210.15.96.0/19
210.15.128.0/18
210.16.104.0/22
210.16.128.0/18
210.21.0.0/17
210.21.128.0/17
210.22.0.0/16
210.23.32.0/19
210.25.0.0/16
210.26.0.0/15
210.28.0.0/14
210.32.0.0/14
210.36.0.0/14
210.40.0.0/13
210.51.0.0/16
210.52.0.0/18
210.52.64.0/18
210.52.128.0/17
210.53.0.0/17
210.53.128.0/17
210.56.192.0/19
210.72.0.0/17
210.72.128.0/19
210.72.160.0/19
210.72.192.0/18
210.73.0.0/19
210.73.32.0/19
210.73.64.0/18
210.73.128.0/17
210.74.0.0/19
210.74.32.0/19
210.74.64.0/19
210.74.96.0/19
210.74.128.0/19
210.74.160.0/19
210.74.192.0/18
210.75.0.0/16
210.76.0.0/19
210.76.32.0/19
210.76.64.0/18
210.76.128.0/17
210.77.0.0/16
210.78.0.0/19
210.78.32.0/19
210.78.64.0/18
210.78.128.0/19
210.78.160.0/19
210.78.192.0/18
210.79.64.0/18
210.79.224.0/19
210.82.0.0/15
210.87.128.0/20
210.87.144.0/20
210.87.160.0/19
210.185.192.0/18
210.192.96.0/19
211.64.0.0/14
211.68.0.0/15
211.70.0.0/15
211.80.0.0/16
211.81.0.0/16
211.82.0.0/16
211.83.0.0/16
211.84.0.0/15
211.86.0.0/15
211.88.0.0/16
211.89.0.0/16
211.90.0.0/15
211.92.0.0/15
211.94.0.0/15
211.96.0.0/15
211.98.0.0/16
211.99.0.0/18
211.99.64.0/19
211.99.96.0/19
211.99.128.0/17
211.100.0.0/16
211.101.0.0/18
211.101.64.0/18
211.101.128.0/17
211.102.0.0/16
211.103.0.0/17
211.103.128.0/17
211.136.0.0/14
211.140.0.0/15
211.142.0.0/17
211.142.128.0/17
211.143.0.0/16
211.144.0.0/15
211.146.0.0/16
211.147.0.0/16
211.148.0.0/14
211.152.0.0/15
211.154.0.0/16
211.155.0.0/18
211.155.64.0/19
211.155.96.0/19
211.155.128.0/17
211.156.0.0/14
211.160.0.0/14
211.164.0.0/14
216.250.108.0/22
218.0.0.0/16
218.1.0.0/16
218.2.0.0/15
218.4.0.0/15
218.6.0.0/16
218.7.0.0/16
218.8.0.0/15
218.10.0.0/16
218.11.0.0/16
218.12.0.0/16
218.13.0.0/16
218.14.0.0/15
218.16.0.0/14
218.20.0.0/16
218.21.0.0/17
218.21.128.0/17
218.22.0.0/15
218.24.0.0/15
218.26.0.0/16
218.27.0.0/16
218.28.0.0/15
218.30.0.0/15
218.56.0.0/14
218.60.0.0/15
218.62.0.0/17
218.62.128.0/17
218.63.0.0/16
218.64.0.0/15
218.66.0.0/16
218.67.0.0/17
218.67.128.0/17
218.68.0.0/15
218.70.0.0/15
218.72.0.0/14
218.76.0.0/15
218.78.0.0/15
218.80.0.0/14
218.84.0.0/14
218.88.0.0/13
218.96.0.0/15
218.98.0.0/17
218.98.128.0/18
218.98.192.0/19
218.98.224.0/19
218.99.0.0/16
218.100.88.0/21
218.100.96.0/19
218.100.128.0/17
218.104.0.0/17
218.104.128.0/19
218.104.160.0/19
218.104.192.0/21
218.104.200.0/21
218.104.208.0/20
218.104.224.0/19
218.105.0.0/16
218.106.0.0/15
218.108.0.0/16
218.109.0.0/16
218.185.192.0/19
218.185.240.0/21
218.192.0.0/16
218.193.0.0/16
218.194.0.0/16
218.195.0.0/16
218.196.0.0/14
218.200.0.0/14
218.204.0.0/15
218.206.0.0/15
218.240.0.0/14
218.244.0.0/15
218.246.0.0/15
218.249.0.0/16
219.72.0.0/16
219.82.0.0/16
219.83.128.0/17
219.90.68.0/22
219.90.72.0/22
219.90.76.0/22
219.128.0.0/12
219.144.0.0/14
219.148.0.0/16
219.149.0.0/17
219.149.128.0/18
219.149.192.0/18
219.150.0.0/19
219.150.32.0/19
219.150.64.0/19
219.150.96.0/20
219.150.112.0/20
219.150.128.0/17
219.151.0.0/19
219.151.32.0/19
219.151.64.0/18
219.151.128.0/17
219.152.0.0/15
219.154.0.0/15
219.156.0.0/15
219.158.0.0/17
219.158.128.0/17
219.159.0.0/18
219.159.64.0/18
219.159.128.0/17
219.216.0.0/15
219.218.0.0/15
219.220.0.0/16
219.221.0.0/16
219.222.0.0/15
219.224.0.0/15
219.226.0.0/16
219.227.0.0/16
219.228.0.0/15
219.230.0.0/15
219.232.0.0/14
219.236.0.0/15
219.238.0.0/15
219.242.0.0/15
219.244.0.0/14
220.101.192.0/18
220.112.0.0/14
220.152.128.0/17
220.154.0.0/15
220.158.240.0/22
220.160.0.0/11
220.192.0.0/15
220.194.0.0/15
220.196.0.0/14
220.200.0.0/13
220.231.0.0/18
220.231.128.0/17
220.232.64.0/18
220.234.0.0/16
220.242.0.0/15
220.247.136.0/21
220.248.0.0/14
220.252.0.0/16
221.0.0.0/15
221.2.0.0/16
221.3.0.0/17
221.3.128.0/17
221.4.0.0/16
221.5.0.0/17
221.5.128.0/17
221.6.0.0/16
221.7.0.0/19
221.7.32.0/19
221.7.64.0/19
221.7.96.0/19
221.7.128.0/17
221.8.0.0/15
221.10.0.0/16
221.11.0.0/17
221.11.128.0/18
221.11.192.0/19
221.11.224.0/19
221.12.0.0/17
221.12.128.0/18
221.13.0.0/18
221.13.64.0/19
221.13.96.0/19
221.13.128.0/17
221.14.0.0/15
221.122.0.0/15
221.128.128.0/17
221.129.0.0/16
221.130.0.0/15
221.133.224.0/19
221.136.0.0/16
221.137.0.0/16
221.172.0.0/14
221.176.0.0/13
221.192.0.0/15
221.194.0.0/16
221.195.0.0/16
221.196.0.0/15
221.198.0.0/16
221.199.0.0/19
221.199.32.0/20
221.199.48.0/20
221.199.64.0/18
221.199.128.0/18
221.199.192.0/20
221.199.224.0/19
221.200.0.0/14
221.204.0.0/15
221.206.0.0/16
221.207.0.0/18
221.207.64.0/18
221.207.128.0/17
221.208.0.0/14
221.212.0.0/16
221.213.0.0/16
221.214.0.0/15
221.216.0.0/13
221.224.0.0/13
221.232.0.0/14
221.236.0.0/15
221.238.0.0/16
221.239.0.0/17
221.239.128.0/17
222.16.0.0/15
222.18.0.0/15
222.20.0.0/15
222.22.0.0/16
222.23.0.0/16
222.24.0.0/15
222.26.0.0/15
222.28.0.0/14
222.32.0.0/11
222.64.0.0/13
222.72.0.0/15
222.74.0.0/16
222.75.0.0/16
222.76.0.0/14
222.80.0.0/15
222.82.0.0/16
222.83.0.0/17
222.83.128.0/17
222.84.0.0/16
222.85.0.0/17
222.85.128.0/17
222.86.0.0/15
222.88.0.0/15
222.90.0.0/15
222.92.0.0/14
222.125.0.0/16
222.126.128.0/17
222.128.0.0/14
222.132.0.0/14
222.136.0.0/13
222.160.0.0/15
222.162.0.0/16
222.163.0.0/19
222.163.32.0/19
222.163.64.0/18
222.163.128.0/17
222.168.0.0/15
222.170.0.0/15
222.172.0.0/17
222.172.128.0/17
222.173.0.0/16
222.174.0.0/15
222.176.0.0/13
222.184.0.0/13
222.192.0.0/14
222.196.0.0/15
222.198.0.0/16
222.199.0.0/16
222.200.0.0/14
222.204.0.0/15
222.206.0.0/15
222.208.0.0/13
222.216.0.0/15
222.218.0.0/16
222.219.0.0/16
222.220.0.0/15
222.222.0.0/15
222.240.0.0/13
222.248.0.0/16
222.249.0.0/17
222.249.128.0/19
222.249.160.0/20
222.249.176.0/20
222.249.192.0/18
223.0.0.0/15
223.2.0.0/15
223.4.0.0/14
223.8.0.0/13
223.20.0.0/15
223.27.184.0/22
223.29.208.0/22
223.29.252.0/22
223.64.0.0/11
223.96.0.0/12
223.112.0.0/14
223.116.0.0/15
223.120.0.0/13
223.128.0.0/15
223.130.8.0/22
223.144.0.0/12
223.160.0.0/14
223.166.0.0/15
223.192.0.0/15
223.198.0.0/15
223.201.0.0/16
223.202.0.0/15
223.208.0.0/14
223.212.0.0/15
223.214.0.0/15
223.220.0.0/15
223.223.176.0/20
223.223.192.0/20
223.240.0.0/13
223.248.0.0/14
223.252.128.0/17
223.254.0.0/16
223.255.0.0/17
223.255.236.0/22
223.255.252.0/23

pon stick 踩坑记录

很久没写内容了,实在太忙了,不好意思。

最近折腾了一下pon stick模块,给大家避雷。

购买指南

  • 目前市面上方案几乎都一样,没有区别,成本其实很便宜。
  • 模块本身是 RTL8672 方案,发热量较大,一般外表能到65度以上。
  • 价格千兆普遍在300以内,不要买贵了。
  • 有几家厂商做OEM,各自的固件不同,其他都一样。
  • 模块本身挑网卡,不同的网卡会出现不同的情况,但有一点是一样的,插入后不用接光纤,模块即可发热。
  • 大部分交换机中使用模块最稳定,但可能需要浪费一个RJ45端口。

目前正在x86 OpenWRT 上使用,暂时表现较为稳定。

image

image

OpenWrt 使用阿里云对 DDNS 的实现

为方便第一时间获取家里的IP地址,故使用此方式,不太喜欢 3322 之类的 DDNS 服务商,所以打算使用阿里云自建一个。

尝试简单搜索,最终找到可用的项目 https://github.com/chenhw2/luci-app-aliddns

配置

安装后进行配置,需要阿里云的 AccessKey 和 Access Key Secret
实际上只是调用阿里云的 API 对域名动态设置解析记录而已
项目依赖 curl 和 openssl 对 Secret 进行加密以及发送请求

根据阿里云的提示,现在推荐使用 RAW 访问控制,给予一个最小权限。
申请一个新的用户,给予 API 调用权限 赋予以下两项权限即可

  • AliyunDNSReadOnlyAccess
  • AliyunDNSFullAccess

脚本

#!/bin/sh

aliddns_ak=`uci get aliddns.base.app_key 2>/dev/null`
aliddns_sk=`uci get aliddns.base.app_secret 2>/dev/null`
aliddns_record_id=`uci get aliddns.base.record_id 2>/dev/null`
time=`uci get aliddns.base.time 2>/dev/null`
aliddns_enable=`uci get aliddns.base.enable`
aliddns_domain=`uci get aliddns.base.main_domain 2>/dev/null`
aliddns_name=`uci get aliddns.base.sub_domain 2>/dev/null`
interface=`uci get aliddns.base.interface 2>/dev/null`
DATE=$(date +'%Y-%m-%d %H:%M:%S')
timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`
ip=$(ifconfig $interface 2> /dev/null | grep 'inet addr' | awk '{print $2}' | cut -d: -f2  2>/dev/null)

check_aliddns() {
#ip=`wget -qO- http://whatismyip.akamai.com/ 2>/dev/null`
#current_ip=`nslookup $aliddns_name.$aliddns_domain | grep "Address 1"|tail -n1|cut -d' ' -f3  2>/dev/null`
current_ip=`echo $query_result | sed 's/.*,"Value":"\([0-9\.]*\)",.*/\1/'`
echo "$DATE 当前路由IP: ${ip}" >> /var/log/aliddns.log
echo "$DATE 远程解析IP: ${current_ip}" >> /var/log/aliddns.log
if [ "$ip" = "$current_ip" ]
then
   echo "$DATE IP未改变,无需更新" >> /var/log/aliddns.log
   exit 0
  else
   echo "$DATE 更新中..." >> /var/log/aliddns.log
fi
}

urlencode() {
    # urlencode <string>

    local length="${#1}"
    i=0
    out=""
    for i in $(awk "BEGIN { for ( i=0; i<$length; i++ ) { print i; } }")
    do
        local c="${1:$i:1}"
        case $c in
            [a-zA-Z0-9._-]) out="$out$c" ;;
            *) out="$out`printf '%%%02X' "'$c"`" ;;
        esac
        i=$(($i + 1))
    done
    echo -n $out
}

send_request() {
    local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"
    local hash=$(urlencode $(echo -n "GET&%2F&$(urlencode $args)" | openssl dgst -sha1 -hmac "$aliddns_sk&" -binary | openssl base64))
    wget -qO- "http://alidns.aliyuncs.com/?$args&Signature=$hash" 2> /dev/null
}

get_recordid() {
    grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
}

query_recordid() {
    send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$(urlencode "$aliddns_name").$aliddns_domain&Timestamp=$timestamp"
}

update_record() {
    send_request "UpdateDomainRecord" "RR=$(urlencode "$aliddns_name")&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&Timestamp=$timestamp&Type=A&Value=$ip"
}

add_record() {
    send_request "AddDomainRecord&DomainName=$aliddns_domain" "RR=$(urlencode "$aliddns_name")&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&Timestamp=$timestamp&Type=A&Value=$ip"
}

go_record() {
if [ "$aliddns_record_id" = "" ]
then
    aliddns_record_id=`echo $query_result | get_recordid`
fi
if [ "$aliddns_record_id" = "" ]
then
    aliddns_record_id=`add_record | get_recordid`
    echo "$DATE 添加 record $aliddns_record_id" >> /var/log/aliddns.log
else
    update_record $aliddns_record_id
    echo "$DATE 更新 record $aliddns_record_id" >> /var/log/aliddns.log
fi
# save to file
if [ "$aliddns_record_id" = "" ]; then
    # failed
    echo "$DATE : 更新出错,请检查设置!" >> /var/log/aliddns.log
    exit 0
else
    uci set aliddns.base.record_id=$aliddns_record_id
    uci commit
    echo "$DATE : 更新成功!($ip)" >> /var/log/aliddns.log
fi
}
#将执行脚本写入crontab定时运行
add_aliddns_cru(){
wirtecron=$(cat /etc/crontabs/root | grep "$time * * * *" | grep aliddns)
if [ -z "$wirtecron" ];then
  sed -i '/aliddns/d' /etc/crontabs/root >/dev/null 2>&1
  echo "*/$time * * * * /usr/sbin/aliddns" >> /etc/crontabs/root
fi
}

#清除过多记录
clean_log(){
logrow=$(grep -c "" /var/log/aliddns.log)
if [ $logrow -ge 15 ];then
  cat /dev/null > /var/log/aliddns.log
  echo "$DATE Log条数超限,清空处理!" >> /var/log/aliddns.log
fi
}

#停止服务
stop_aliddns(){
        #停掉cru里的任务
  sed -i '/aliddns/d' /etc/crontabs/root >/dev/null 2>&1
}

if [ "$aliddns_enable" != "1" ]; then
    stop_aliddns
    echo "$DATE : aliddns没有开启!" >> /var/log/aliddns.log
  else
    clean_log
    query_result=$(query_recordid)
    check_aliddns
    go_record
    add_aliddns_cru
fi

image

image

框架模式与拼装代码

最近又有一些新的感悟,对于程序的框架模式以及拼装码农的一些见解,看到了许多码农习以为常的拼装代码,想对这种错误进行一个简单的矫正,从最简单的MVC模式开始说起。

拼装代码

新手写代码往往会存在一个误区,使用框架只使用它最基础的UrlRule部分,为什么这么说呢?

因为现在无论何种框架,前后端也好,它教你的写一个Hello World一定是告诉你如何在屏幕上输出一段你想要的东西,这一段东西在哪里修改,为了展现框架的优雅,往往只有一行代码或者少许代码来演示这个Demo,那么新手使用者也会跟随者一起进入一个误区,觉得这个框架很完美,实现非常优雅,然后就依样画葫芦的进行开发,并没有去了解框架的架构模式,并且也没有心思去完整阅读框架的文档,更不用说源代码了。

这样写出来的代码,往往只是拼装而已,使用最基础的函数,如果有重复的逻辑就封装函数,互相调用,然后达到最终的目的,输出想要的结果,
再高一层次的,可能使用了以前自己完全没有接触过的领域,例如Message QueueWebSocket,就认为这是使用了框架的高级功能,使用它会显得非常优雅。
或者在某些可以进行Hook的部分注册一段代码,称之为middleware
却不知这只是皮毛而已,因为这只是停留在最浅的那一层,这一层大部分人都捅不破,一直在摸爬滚打。
当你完整的阅读过apueunp系列丛书的时候,你可能会有更广阔的思维。
切记不要局限于一个框架如何使用,一门语言语法或者一个圈子(泛指web前端和后端),这是新手编程时最大的忌讳。

MVC框架模式

注意:MVC仅仅是一种框架模式,它并不是一种设计模式,如果非要说它是一种设计模式,那么也只能说它是一种复合型的设计模式,因为他可能包含了许多的经典设计模式。

这个问题其实本身很简单,主要是同一个词用在不同语境下,所以造成了表达不清。MVC 三者中,Model 是核心。

MVC已经流行了非常之久,大部分框架也是以此设计的,不过因为近几年前端的巨变,MVC中的View已经被分摊到了前端,并且前端也衍生出了许多优秀的框架。

View 视图

自从前端ajax开始流行后angularjs、react、vue等框架流行后开始,渐渐的Web应用的View层被慢慢的剥离出去,这一层其实很好理解,这是你真正看到的内容,而不是你想象当中的 Model

Controller 控制器

顾名思义,它掌握着整个应用的流程控制,它负责从模型中获取数据,转换格式,做验证,提交数据等等,它所做的事情,其实就是起到了一个向导员的作用,只负责指路,引路而已。

Model 模型

这才是这篇文章的重点,什么是Model?它是做什么用的?

举个例子,我们现在常见的手机、机顶盒、ATM、Pad,他们本质上是同一种东西,那就是 Android 电脑,至于他们长什么样,其实这是View来控制的,但是他们本质上都属于同一种类型的东西,只是被装上不同大小屏幕或者有些被安装上了键盘。

现在回到 Web 开发的话题。你最关心什么问题呢?

显然,对于不同的人,关心的问题是不同的,对他来说Model也不同。

从数据库管理员的角度上看,你的数据库整个就是一个 Model。很显然,数据库的数据变化已经反映出了用户所关心的一切。在数据库管理员的眼中,你的Servelet 整个就是一个大Controller,就是把用户的请求转换成数据库查询而已。由于 Model 没有逻辑,所以整个就像一块橡皮泥,想怎么捏,就怎么捏。所以如果你得寄希望于一双灵巧的手(Controller),才能避免犯错。但手本质上是不适合重复性劳动的,所这种Model未必合适所有问题。

写后台的人为了解决这个问题,只好再把数据库包装一层,即通过所谓的业务逻辑对象来读写数据。然后这些业务逻辑对象就成了Model。当然数据库管理员可能会说,我可以有逻辑啊,你可以写存储过程嘛。也有人觉得我自己建自己的Model,数据库只管存数据就行了。所以他们倾向直接把对象序列化丢服务器,或者用对象数据库。

还有些人妥协一点,认为数据库也是有Model的但它是关系型(Relational)的Model,但我也有自己的面向对象(Object-Oriented)的Model,所以两个Model之间需要同步。这就是ORM(Object-Relation Mapping)。

最后写前端的人说,我做 View 也不容易啊。我要保存中间的输入状态,要做逻辑验证逻辑等。在最终提交到服务器之前,你总不能让用户中间输错一个数据,就重启系统,整个步骤重来吧?你去银行申请服务,还得填表(Submit a Form)呢,表个还要改好几次呢。于是 View 也要有自己的 Model,这个特定的情形。

更有甚至者,你的 View 根本就不是你自己开发的。比如开发 视屏播放器 (View) 的人哪管你是干什么的啊?人家只关心你给他的东西是什么格式的,这也是他的 Model,叫 ViewModel (MVVM里的VM)。

为什么 MVC 难?

一个难点就是,你对你要解决的问题没有一个清晰的认识,所以根本就没有 Model;
另一个难点就是,你没有经验的时候,不知道怎么控制Model的粒度。

使用 nginx 搭建自己的 shadowsocks 集群 并利用 DDNS 来避免在公司被 GFW 的干扰

由于众所周知的原因,程序员一般需要自己的科学上网方式,除大厂的基础建设外,我们普通程序员有时候也需要会使用自己的科学上网方式。
今天就来介绍一下使用 nginx 来搭建 shadowsocks 集群。

当然我们也可以使用 HAProxy 来搭建,目前最新消息 HAProxy2 已经支持 Lua + UDP 啦,后面我会单独写一篇 HAProxy 的配置方式。

机场采购

首选既然是集群,必须要有一个好的机场,自费的话成本太高,那么建议采购一些还不错的机场。
目前我个人使用的还不错 可以发给大家做参考 https://wmsxwd888.men/auth/register?code=QpBC

配置 nginx

编译时一定要加入--with-stream参数来确保支持 stream 转发。
配置可以参考下方的配置方式。

stream {
    log_format proxy '$remote_addr [$time_local] '
                 '$protocol $status "$bytes_sent/$bytes_received" '
                 '$session_time "$server_addr -> $upstream_addr" '
                 '"$upstream_bytes_sent/$upstream_bytes_received" "$upstream_connect_time"';
    #access_log /mnt/sda1/logs/nginx-access_log proxy;
    #error_log /mnt/sda1/logs/nginx-error.log;

    access_log off;
    error_log off;

    upstream ss_group {
        #hash $remote_addr consistent;
        #hash $upstream_addr consistent;
	    include server.conf;
    }
    server {
        listen 10088;
        listen 10088 udp;
        proxy_pass ss_group;
    }
}
# server.conf
server server_ip:port fail_timeout=1s max_fails=2;
server server_ip:port fail_timeout=1s max_fails=2;

端口转发

如果家里有电信光猫最高权限的,可以设置光猫内的端口转发,否则可以打电话把光猫改为桥接模式,然后在路由器中 PPPoE 拨号,然后设置 10088 端口对外开放,配合我之前的 DDNS 就可以在公司中使用家里的集群转发啦。

这样做的好处是避免公司人多,出口容易引起 GFW 的注意和干扰,在 SS 配置中连回家中,然后由家中转发出去,就非常完美的避开人多这一点了。

自动生成 server.conf 脚本

使用我上面推荐的服务商,可以使用我这个脚本来自动更新 SS 服务器的更新,选择了最优的 hk 和 tw 的节点。

<?php
$link = 'SERVER_IP';
$path = '/usr/local/nginx/conf/server.conf';

$stream_opts = [
    "ssl" => [
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ]
];
echo 'DOWNLOAD...', PHP_EOL;
$txt = json_decode(base64_decode(substr(file_get_contents($link, false, stream_context_create($stream_opts)), 6)));
$servers = '';
$flags = STREAM_CLIENT_CONNECT | STREAM_CLIENT_ASYNC_CONNECT;
$port = '1737';
$afds = $wfds = [];
if ($txt && $txt->servers) {
    foreach ($txt->servers as $i => $value) {
        if (!preg_match("/**|俄罗斯|免费|官网/i",$value->remarks) && (strstr($value->server, 'hk') || strstr($value->server, 'tw')) ) {
            $fd = @stream_socket_client('tcp://' . $value->server . ':' . $port, $errno, $error, 1, $flags);
            if ($fd === false) {
                echo 'server: ' . $value->server . ':' . $port . ' fail', PHP_EOL;
            } else {
                $afds[$i] = $wfds[$i] = $fd;
            }
        }
    }
    if (count($wfds) === 0) {
        echo 'FAIL COUNT 0', PHP_EOL;
        return;
    }
    sleep(2);
    $rfds = $xfds = [];
    if (@stream_select($rfds, $wfds, $xfds, 0, 0) !== false) {
        foreach ($afds as $i => $fd) {
            // 连接超时
            if (!isset($wfds[$i])) {
                $value = $txt->servers[$i];
                echo 'server: ' . $value->server . ':' . $port . ' fail', PHP_EOL;
            }
        }
        foreach ($wfds as $i => $fd) {
            echo 'server: ' . $value->server . ':' . $port . ' success', PHP_EOL;
            $value = $txt->servers[$i];
            $servers .= 'server ' . $value->server . ':' . $port . ' fail_timeout=1s max_fails=2;' . PHP_EOL;
        }
    }
    // close
    foreach ($afds as $fd) {
        @fclose($fd);
    }
}
echo 'UPDATE...', PHP_EOL;
if ($servers) {
    file_put_contents($path, $servers);
    echo 'DONE', PHP_EOL;
} else {
    echo 'FAIL', PHP_EOL;
}

跨域资源共享 Cross-origin resource sharing (CORS)

CORS是一个W3C标准,全称是跨域资源共享 Cross-origin resource sharing
它允许浏览器跨域发出XMLHttpRequest请求,解决AJAX只允许同源请求的限制。

与JSONP对比

它做的事情与JSONP解决的问题相同,都是解决跨域请求的问题,但是比JSONP更加强大与完善。

优势

  • JSONP只局限于GET请求,CORS可以实现一切HTTP请求方式,包括 DELETE、HEAD、POST、GET、PUT、PATCH。
  • 较JSONP来说,服务端的 API 设计可以更加完美,不需要再出现奇怪的附加信息,浏览器调试也更加方便。

注意点

  • 兼容性问题,但从目前来说,如果用的不是 IE7还是没问题的,但是只有IE11才完整的支持CORS,可以查看 http://caniuse.com/#search=cors
  • 服务端限制,服务端需要配合输出对应的response响应头,具体可以见下文。
  • 如果不同源的非简单请求,浏览器会发起一次预检请求,会多一次 http request,当然这可以被浏览器缓存。

两种请求类型

浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。

简单请求

  • 请求方式是 HEAD GET POST 其中之一。
  • 发起的请求头中不超出 Accept Accept-Language Content-Language Last-Event-ID 这几种字段。
  • 请求头中的Content-Type限定于application/x-www-form-urlencoded multipart/form-data text/plain

凡是不满足上述条件的都不是简单请求,浏览器会用不同的方式处理。
对于简单请求,浏览器直接发出CORS请求,就像下面这样。

GET /user HTTP/1.1
Origin: http://example.com
Host: api.example.com

Origin字段代表这次请求来自哪个源,协议://域名:端口,这是浏览器自动添加的,服务端根据这个字段来决定是否同意本次请求。

如果服务器不同意本次请求,可以返回一个正常的HTTP回应。浏览器发现,这个回应的头信息没有包含Access-Control-Allow-Origin字段,就知道出错了,从而抛出一个错误,被XMLHttpRequestonerror回调函数捕获。

如果服务器同意这次请求,那么响应的头部会多出几个字段。

Access-Control-Allow-Origin: http://example.com
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: Foo

Access-Control-Allow-Origin

这个字段是必须的,它的值要可以请求时Origin字段的值,也可以是一个*表示接受任意域名的请求。

Access-Control-Allow-Credentials

这个字段是可选值,它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。

这里涉及到 xhr 的 withCredentials 属性,XMLHttpRequest 默认的 withCredentials属性是 false,必须手动打开才会在本次请求中处理 cookie 信息,发送与设置。

Access-Control-Allow-Credentials: true
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;

所以这是一个双向同意的过程,既要客户端打开 withCredentials,又要服务端允许,否则,即使服务器同意发送Cookie,浏览器也不会发送,或者,服务器要求设置Cookie,浏览器也不会处理。

注意:如果要发送Cookie,Access-Control-Allow-Origin就不能设为星号,必须明确的指定与请求网页一致的域名。同时,Cookie依然遵循同源政策,只有用服务器域名设置的Cookie才会上传,其他域名的Cookie并不会上传,且(跨源)原网页代码中的document.cookie也无法读取服务器域名下的Cookie,并且目前Safari浏览器不允许通过 CORS 来设置未访问过域Cookie(第三方 Cookie),且目前除了访问一次该域名并没有其他方法,IE 可以通过 P3P 规范来设置,除此之外其他浏览器并无问题。

Access-Control-Expose-Headers

这个字段是可选值,CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必须在Access-Control-Expose-Headers里面指定。上面的例子指定,getResponseHeader('Foo')可以返回Foo字段的值。

非简单请求

  • 不满足简单请求的任意条件。
  • 请求方法是DELETE或PUT。
  • Content-Type字段是application/json。

满足以上条件之一就是非简单请求,如果用到RESTful API,就一定会遇到非简单请求。

非简单请求的CORS,会在正式请求之前,增加一次HTTP查询请求,称为预检请求(preflight)。
浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP方法和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错,正式请求的流程与简单请求一致。

预检请求

const url = 'http://api.example.com/user';
const xhr = new XMLHttpRequest();
xhr.open('PUT', url, true);
xhr.setRequestHeader('Authentication', 'base64');
xhr.send();

浏览器发现,这是一个非简单请求,就自动发出一个预检请求,要求服务器确认可以这样请求。下面是这个"预检"请求的HTTP头信息。

OPTIONS /user HTTP/1.1
Origin: http://example.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: Authentication
Host: api.example.com

预检请求用的请求方法是OPTIONS,表示这个请求是用来询问的。头信息里面,关键字段是Origin,和简单请求中的Origin相同,并且浏览器自动增加了Access-Control-Request-Method以及Access-Control-Request-Headers

Access-Control-Request-Method

这个字段是必须的,用来列出浏览器的CORS请求会用到哪些HTTP方法,上例是PUT。

Access-Control-Request-Headers

这个字段的值是一个逗号分隔的字符串,指定浏览器CORS请求会额外发送的头信息字段。

预检回应

服务器收到预检请求以后,会检查检查Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段。

如果服务器同意这次请求,那么响应的头部会多出几个字段。

Access-Control-Allow-Origin: http://example.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: Authentication

Access-Control-Allow-Methods

这个字段必需,它的值是逗号分隔的一个字符串,表明服务器支持的所有跨域请求的方法。注意,返回的是所有支持的方法,而不单是浏览器请求的那个方法。这是为了避免多次预检请求。

Access-Control-Allow-Headers

如果浏览器请求包括Access-Control-Request-Headers字段,则Access-Control-Allow-Headers字段是必需的。它也是一个逗号分隔的字符串,表明服务器支持的所有头信息字段,不限于浏览器在预检中请求的字段。

Access-Control-Allow-Credentials

该字段与简单请求时的含义相同。

Access-Control-Max-Age

这个字段可选,用来指定本次预检请求的有效期,单位为秒,在缓存期间,不用发出另一条预检请求,它的作用域仅仅是该资源地址。

Vue2.x+webpack3脚手架 包含SSR

为了方便自己 抽空做了2个比较简单的脚手架

vue-template-ssr

SSR不用NUXT的原因是我还需要学习NUXT那一套,目前没这个必要,自己做了一个。

vue-mobile-boilerplate

This repo is a boilerplate for vue-mobile project. You could use it as a base to build your own web app.

Features

  • Equip with Vue, ES6 & Babel 6.
  • Lint with ESlint and Airbnb's style sheet.
  • Build with Webpack 2 (support Webpack 2 & Webpack 3).
  • Support hot module replacement
  • Auto Open a new browser tab when Webpack loads, and reload the page when you modified the code.
  • Support auto px2rem (Default off).
  • Support Postcss

How to use

First, clone the repo.

git clone https://github.com/luckyyyyy/vue-example.git <yourAppName>
cd <yourAppName>

# Second, delete the old .git history and initialize new history.
rm -rf .git
git init

# If you are in China, please modify the npm registry
npm config set registry https://registry.npm.taobao.org

# Third, install the dependencies.
npm install

# Then, launch the boilerplate app.
npm run dev

Referer & Referrer

Referer 头可以追溯到 HTTP 协议的起源,这可能是 HTTP 协议中第一个被拼写错误的标准头,

HTTP 规范是这样描述它的:
···
Referer[sic] 请求头字段允许由客户端指定资源的 URI 来自于哪一个请求地址,这对服务器有好处(应该是 “referrer” 这个字段拼错了)。Referer 请求头让服务器能够拿到请求资源的来源,可以用于分析用户的兴趣爱好、收集日志、优化缓存等等。同时也让服务器能够发现过时的和错误的链接并及时维护。
···

尽管如此,其实它涉及到一些隐私泄露问题,例如在一个网盘中,你存放了一份重要的文档,网盘的url按照文件夹的path来变化,当你点击网盘中的其中一个外部链接后,外部网站的日志中就会记录你的referrer信息,即<prot://host:port/path>,这也是为什么腾讯等邮箱点击第三方链接后需要二次确认的原因之一,这其实也只是一个小把戏。

2014 年,W3C 的 Web 应用安全工作组(Web Application Security Working Group)发布了 Referrer Policy 草案,对浏览器该如何发送 Referrer 做了详细的规定。新版 Chrome 已经支持了这份草案,我们终于可以灵活地控制自己网站的 Referrer 策略了。

那么本文主要说明的是新的Referrer Policy

Referrer Policy

新的 Referrer Policy 指定了五种 Referrer 策略。

新的规则如下

  • no-referrer
  • no-referrer-when-downgrade
  • origin
  • origin-when-cross-origin
  • unsafe-url

其实之前就已经有三种策略,只不过在新的策略中他们改名了,他们分别是。

  • default (no-referrer-when-downgrade)
  • always (unsafe-url)
  • never (no-referrer)
策略名字 属性值(新) 属性值(旧)
No Referrer no-referrer never
No Referrer When Downgrade no-referrer-when-downgrade default
Origin Only origin -
Origin When Cross-origin origin-when-cross-origin -
Unsafe URL unsafe-url always

可以看到,新标准给之前的三种策略赋予了更具意义的新名称,同时增加了两种新策略。
另外现阶段支持 Referrer Policy 的浏览器保留了对旧标准的支持,但还是推荐大家尽快更新。简单介绍下这五种类型的具体含义。

  • No Referrer:任何情况下都不发送 Referrer 信息。
  • No Referrer When Downgrade:仅当发生协议降级(如 HTTPS 页面引入 HTTP 资源,从 HTTPS 页面跳到 HTTP 等)时不发送 Referrer 信息。这个规则是现在大部分浏览器默认所采用的。
  • Origin Only:发送只包含 host 部分的 Referrer。启用这个规则,无论是否发生协议降级,无论是本站链接还是站外链接,都会发送 Referrer 信息,但是只包含协议 + host 部分(不包含具体的路径及参数等信息)。
  • Origin When Cross-origin:仅在发生跨域访问时发送只包含 host 的 Referrer,同域下还是完整的。它与 Origin Only 的区别是多判断了是否 Cross-origin。需要注意的是协议、域名和端口都一致,才会被浏览器认为是同域。
  • Unsafe URL:无论是否发生协议降级,无论是本站链接还是站外链接,统统都发送 Referrer 信息。正如其名,这是最宽松而最不安全的策略。

Referrer Policy Delivery

那么如何指定 Referrer Policy ?下面介绍三种方法,任选其中一种即可实现。

CSP 响应头

CSP(Content Security Policy),是一个跟页面内容安全有关的规范。在 HTTP 中通过响应头中的 Content-Security-Policy 字段来告诉浏览器当前页面要使用何种 CSP 策略。我之前写过一篇 Content Security Policy 介绍,可以先看看。现在 CSP 还可以通过 referrer 指令和五种可选的指令值,来指定 Referrer 策略,格式非常简单:

Content-Security-Policy: referrer no-referrer|no-referrer-when-downgrade|origin|origin-when-cross-origin|unsafe-url;

CSP 的指令和指令值之间以空格分割,多个指令之间用英文分号分割。

标签

通过 标签很简单,但是注意请放在head之间。

<meta name="referrer" content="no-referrer|no-referrer-when-downgrade|origin|origin-when-cross-origin|unsafe-url">

标签的 referrer 属性

它的作用域只有单个链接,而且目前支持并不理想,需要酌情考虑。

php安装lua扩展

由于最近需要php解析lua,所以想到了laruence的php-lua扩展。
Pecl: http://pecl.php.net/package/lua

请注意,从 PHP 7 开始,需要使用2.0.0以上的版本,并且每个版本有最低的Lua版本限制,不可混用,最新版本 2.0.4 暂不支持 PHP 7.2。

安装和编译 Lua 比较简单,但是注意要修改编译时的参数。

http://www.lua.org/ftp/lua-5.3.4.tar.gz
tar zxvf lua-5.3.4.tar.gz
cd lua-5.3.4/src

修改Makefile,找到CFLAGS,添加-fPIC选项。

CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) -fPIC $(MYCFLAGS)

然后进行编译和安装

make linux 
make install

查找一下liblua.awhereis liblua.a将其丢到/usr/lib

最后直接pecl install lua大功告成。

可以愉快的PHP中使用Lua了。

$lua = new Lua($lua_script_file = NULL);
   
$lua->eval("lua_statements");     // eval lua codes
$lua->include("lua_script_file");  // import a lua script
 
$lua->assign("name", $value);  // assign a php variable to Lua
$lua->registerCallback("name", $function);  // register a PHP function to Lua with "name"
 
$lua->call($string_lua_function_name, array() /* args */);
$lua->call($resouce_lua_anonymous_function, array() /* args */);
$lua->call(array("table", "method"), array(...., "push_self" => [true | false]) /* args */);
 
$lua->{$lua_function}(array() /* args */ );

OpenWRT 分流DNS的设置

目前还是有许多人喜欢设置DNS,虽然会浪费一些转发性能,但如果明白其中的链路关系,合理设置后,还是能起到不错的效果的。同时也把正确的设置方式告诉大家。

此教程基于当前路由是主路由,如果是旁路由虽差不多,但有一些差异,需要格外注意。

同时请注意,删除你电脑,手机上的DNS(不要设置任何DNS)

注意事项

建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户


不是非常了解DNS,请不要设置,避免各种问题,作者本人已更换Clash,非常稳定。
同时作者建议使用 shellclash 如需要x86稳定固件 不喜欢折腾的 可以联系我
telegram: eval0xFFFD20

涉及到的组件

  • Passwall
  • AdGuard Home(可选)
  • Dnsmasq (无需进行任何设置)
  • SmartDNS (分流+主DNS服务器)

AdGuard Home(可选)

主要是起到记录的作用,对需要查看记录的同学有帮助,至于DNS广告屏蔽,虽然有用但会误伤,慎重选择。
同时由于记录文件较大,请一定要注意把记录时间改小,或者设置到有足够空间的目录中,否则会导致时间久了将磁盘撑满

  • 配置上游DNS为127.0.0.1
  • 设置重定向53端口到AdGuardHome,如果使用了lean大佬的固件,请在防火墙,自定义规则中删除添加的两条53端口重定向规则(大部分人都使用了lean的固件)

注意:设置了重定向后,所有DNS结果都将应答非权威记录,如果不了解DNS协议请无视,这条并不会影响什么。

SmartDNS

主要用于分流和DNS查询,国外走 Cloudflare DNS ove TLS/HTTPS ,国内延迟优先(但可能影响P2P下载,实测实际还好)。

  • 启用第一组服务器,选择作为dnsmasq上游,其余默认配置即可。
  • 启用第二组服务器,端口7913,跳过测速,跳过Nameserver规则(非常重要,否则会死循环),跳过双栈优选,跳过cache,其余设置保持默认。
  • 配置上游服务器,部分设置要填写后点编辑才能看到
    • 国内上游填写你的运营商,额外填写一些国内常用的,例如阿里云,DNSPod等等,可以参考文末的配置,分组信息填写cn。
    • 国外上游填写1.1.1.1端口853,协议填写tls,分组信息填写passwall,额外的服务参数填写 -exclude-default-group

Passwall

  • DNS分流 smartdns
  • 国内分组名 cn
  • 过滤模式 通过UDP请求DNS 127.0.0.1:7913

Dnsmasq

无需任何设置,如果有设置请改回,除了上游服务器是127.0.0.1:6053。

一些配置

smartdns 部分直接 vim 编辑 /etc/config/smartdns 照抄即可,无需手动设置,配置完记得界面上点击保存应用,或者uci命令刷新配置,我里面有杭州电信的DNS服务器,不是杭州的记得自己改掉,否则可能有负面效果。

config smartdns
	option server_name 'smartdns'
	option port '6053'
	option tcp_server '1'
	option seconddns_tcp_server '1'
	option coredump '0'
	option seconddns_server_group 'passwall'
	option seconddns_no_speed_check '1'
	option seconddns_no_dualstack_selection '1'
	option prefetch_domain '1'
	option ipv6_server '0'
	option force_aaaa_soa '1'
	option dualstack_ip_selection '1'
	option serve_expired '1'
	option redirect 'dnsmasq-upstream'
	option rr_ttl_min '300'
	option seconddns_port '7913'
	option seconddns_enabled '1'
	option seconddns_no_rule_nameserver '1'
	option seconddns_no_rule_addr '0'
	option seconddns_no_rule_soa '0'
	option seconddns_no_rule_ipset '0'
	option cache_size '300'
	option seconddns_no_cache '1'
	option enabled '1'
	list old_redirect 'dnsmasq-upstream'
	list old_port '6053'
	list old_enabled '1'

config server
	option name 'aliyun'
	option ip '223.5.5.5'
	option port '53'
	option type 'udp'
	option blacklist_ip '0'
	option server_group 'cn'
	option enabled '1'

config server
	option name '114'
	option ip '114.114.114.114'
	option port '53'
	option type 'udp'
	option blacklist_ip '0'
	option server_group 'cn'
	option enabled '1'

config server
	option enabled '1'
	option type 'udp'
	option name '电信'
	option ip '202.101.172.35'
	option port '53'
	option server_group 'cn'
	option blacklist_ip '0'

config server
	option enabled '1'
	option type 'udp'
	option name '电信'
	option ip '202.101.172.47'
	option port '53'
	option server_group 'cn'
	option blacklist_ip '0'

config server
	option type 'udp'
	option port '53'
	option name 'DNSPod'
	option ip '119.29.29.29'
	option blacklist_ip '0'
	option server_group 'cn'
	option enabled '1'

config server
	option enabled '1'
	option name 'cloud'
	option ip '1.1.1.1'
	option port '853'
	option type 'tls'
	option server_group 'passwall'
	option blacklist_ip '0'
	option addition_arg ' -exclude-default-group'

config server
	option enabled '1'
	option type 'udp'
	option name 'CNNIC SDNS'
	option ip '1.2.4.8'
	option port '53'
	option server_group 'cn'
	option blacklist_ip '0'

如何验证?

登录路由器 使用 dig 或者 nslookup 检查下各端口的DNS以及分流情况

nslookup www.taobao.com 127.0.0.1:7913 返回的是节点对应淘宝最快的IP
nslookup www.taobao.com 127.0.0.1:6053 返回的是国内最快的IP
nslookup www.taobao.com 应该是国内

注:如果手动查询规则列表内的域名,使用端口6053,然后匹配规则,转发给7913,然后被缓存住。(国外因为跳过测速,所以多个域名是正确的)

Xnip2022-04-15_20-06-42

对浙江杭州电信ITV的抓包研究 Part 1

先说折腾的目的:实现任意设备走内网观看IPTV,可保留,也可丢弃机顶盒。

  • 本篇只记录折腾过程,需要一定的网络知识才可看明白,至少明白VLAN,抓包,DHCP协议等。
  • 路由器系统:OpenWrt 浙江电信目前抓包来看,采用的是 DHCP+认证。
  • 我这里使用的是单线VLAN模式,如果您用多线,请无视猫的设置和VLAN的划分,如果您用多线,请无视猫的设置和VLAN的划分,如果您用多线,请无视猫的设置和VLAN的划分。

对猫的设置(需要超级管理员)

密码直接问电信要即可,需要将上网和IPTV都改为桥接。
浙江杭州电信光猫划分的 VLAN 列表如下,可能每个片区都不一样,详细需要登录你的猫查看

VLAND ID 作用
41 2_INTERNET_B_VID_41(上网)
43 3_OTHER_B_VID_43(IPTV)
46 1_TR069_VOICE_R_VID_46(电话和上级控制)

VLAN绑定

在猫中选择网络,VLAN绑定,我简单好记按照下表设置,这是改动最小的单线方案。

用户侧端口 用户侧VLAN WAN侧VLAN
千兆口 41 41
千兆口 43 43

OpenWRT 设置

我使用的是x86软路由,都是独立网口,所以用软件模拟 switch,硬路由请自行在 switch 中划分。

创建主要接口

创建接口上网 PPPoE 接口为 eth1.41(双线请使用独立接口,不要用VLAN)
创建接口IPTV DHCP 接口为 eth1.43(双线请使用独立接口,不要用VLAN)

抓包获取 DHCP discover Option: (60) Vendor class identifier

可以使用 tcpdump 进行抓包,最简单的方法像我这样操作。

创建接口VLAN 不配置协议 勾选桥接,设置接口为 eth1.43 eth2。
将路由的 eth2 和盒子相连接,获取一次DHCP。

tcpdump 使用方法也很简单,导出的文件交由 Wireshark 分析即可

tcpdump -i eth2 -s 0 -c 100 -w /root/IPTV.cap

image

生成IPTV DHCP配置

不明白的话参考 https://openwrt.org/docs/guide-user/network/ipv4/configuration#protocol_dhcp

config interface 'IPTV'
	option proto 'dhcp'
	option ifname 'eth1.43'
	option metric '20'
	option delegate '0'
	option macaddr 'xx:xx:xx:xx:xx:xx' # 你的盒子 MAC地址 不要错
	option hostname 'XXXXXXXX' # 你抓到的 Option: (12) host name 是个明文
	option sendopts '0x3c:YYYYYYYYYYYYYYYYYYYYYYYYY' # 发送 Option: (60)

说一下抓到的 Option 60
3c XX YY YY YY YY YY YY YY YY YY YY YY YY
3c不需要
后面那位是长度 所以也不需要
抓到的数据包去掉前两位填入即可

修改udhcpc脚本

不修改会导致发出两个 Option 60,这个具体可以看 https://koolshare.cn/thread-149406-1-1.html

vi /lib/netifd/proto/dhcp.sh
找到

	proto_run_command "$config" udhcpc \
		-p /var/run/udhcpc-$iface.pid \
		-s /lib/netifd/dhcp.script \
		-f -t 0 -i "$iface" \
		${ipaddr:+-r $ipaddr} \
		${hostname:+-x "hostname:$hostname"} \
		${vendorid:+-V "$vendorid"} \
		$clientid $defaultreqopts $broadcast $release $dhcpopts

修改为

	proto_run_command "$config" udhcpc \
		-p /var/run/udhcpc-$iface.pid \
		-s /lib/netifd/dhcp.script \
		-f -t 0 -i "$iface" \
		${ipaddr:+-r $ipaddr} \
		${hostname:+-x "hostname:$hostname"} \
		-V '' \
		$clientid $defaultreqopts $broadcast $release $dhcpopts

大功告成

记得一定要 /etc/init.d/network restart

image

非magic mouse和magic keyboard的兼容性问题处理

最近在家里越发懒得打开笔记本了,但是没有Mac有时候工作不方便,于是就安装了黑苹果。

懒人版安装过程简述

黑苹果安装过程就不详细阐述了,可以关注远景论坛或者其他黑苹果社区,安装其实也挺简单的,主要的步骤就是先空出一个盘符利用一些磁盘工具转成 Apple HFS 格式,下载最新的 DMG 镜像写入,使用Clover EFI bootloaderI 引导启动,针对不同的配置详调,这里不再详细叙述,最终进入系统后配置对应的驱动和参数,现在大部分论坛都有大礼包,一般情况下 Intel 大佬加上 Nvidia 基本都可以无痛驱动,当然从10.14开始必须是AMD卡才行了。

解决普通鼠标滚轮不平滑的问题

一般非苹果自家鼠标,都有滚轮不平滑的问题,苹果的 Magic Mouse 又存在公认的手感问题,当然其实我个人还是比较习惯的,无奈 PC 没有蓝牙,也不想为了这个去买一个外置的,那么就想办法解决,在 GitHub 搜索一圈还是有帮助的,

GitHub 地址:https://github.com/Caldis/Mos

尝试用了一下。基本上可以上解决了80%的问题,虽然和自家的 Magic Mouse 比是有差距的,但是毕竟是黑苹果嘛,要求不高,能解决问题就好。

解决普通键盘快捷键问题

苹果的 Magic Keyboard 2 公认的好用,但是用多了机械键盘有时候还是想换比较高的键帽,终于搜索了一圈,找到了 Karabiner 这个神器,但是官方说只支持到 EI Capitan 也的确 Sierra 改动还是蛮大的,不过又发现官方有个新的项目,Karabiner-Elements,在 GitHub 看了一下,也基本是一个可用的版本,也算是完美解决了我的问题。

GitHub 地址:https://github.com/tekezo/Karabiner-Elements/

{
    "global": {
        "check_for_updates_on_startup": true,
        "show_in_menu_bar": true,
        "show_profile_name_in_menu_bar": false
    },
    "profiles": [
        {
            "devices": [],
            "fn_function_keys": {
                "f1": "display_brightness_decrement",
                "f10": "mute",
                "f11": "volume_decrement",
                "f12": "volume_increment",
                "f2": "display_brightness_increment",
                "f3": "mission_control",
                "f4": "launchpad",
                "f5": "illumination_decrement",
                "f6": "illumination_increment",
                "f7": "rewind",
                "f8": "play_or_pause",
                "f9": "fastforward"
            },
            "name": "Default profile",
            "selected": true,
            "simple_modifications": {
                "application": "fn",
                "f1": "display_brightness_decrement",
                "f10": "mute",
                "f11": "volume_decrement",
                "f12": "volume_increment",
                "f2": "display_brightness_increment",
                "f3": "mission_control",
                "f4": "launchpad",
                "f5": "illumination_decrement",
                "f6": "illumination_increment",
                "f7": "rewind",
                "f8": "play_or_pause",
                "f9": "fastforward",
                "left_command": "left_option",
                "left_option": "left_command",
                "right_command": "right_option",
                "right_option": "right_command"
            },
            "virtual_hid_keyboard": {
                "caps_lock_delay_milliseconds": 0,
                "keyboard_type": "ansi"
            }
        }
    ]
}

openwrt lua 接口遇到的一些坑

这段时间活跃在openwrt社区,其实时间也不久
不过还是记录一下遇到的一个最大的坑。

首先由于各种原因,openwrt国内都把luci稳定在17或18的版本上,大家开发应用其实都是互相抄官方的写法,因为文档其实很稀缺或者说大多数都已经过时了。

近期用rust写了一个简单的demo(过段时间公开),但是开发时候遇到了不少问题总结一下。

1、首先大多数应用都是shell脚本读取配置交由应用来完成,会lua的同学其实不多,导致shell脚本会调用大量的grep sed等命令,性能不是很好。
2、大家的luci的lua脚本其实都是来自于官方,甚至找不到api直接exec shell脚本来实现。
3、官方的luci,19版本改造的前后端分离,导致大量老应用不兼容的情况。

今天发现,其实官方的API也非常坑,对于不了解lua的同学来说非常不友好。
我们后面再来介绍 openwrt uci 与 ubus之间的关系,这一篇且说遇到的坑。

luci.model.uci其实最终调用是ubus而非uci
这是最终触达代码

local _ubus_connection = nil
local function ubus(object, method, data)
	if not _ubus_connection then
		_ubus_connection = _ubus.connect()
	end
    _ubus_connection:call(object, method, data)
end
ubus("uci", "commit", { config = "config" })

等价于

ubus call uci commit '{"config":"config"}'

其实大家对ubus的C/S,跨进程通讯架构在应用中用到的并不到,大部分都是shell(应用控制)+lua(界面+控制器)的形式。
包括shell脚本,大家也都是直接 uci get xxx。

其实完全可以直接调用uci,下方列出一些API供参考。

// lua/uci.c
static const luaL_Reg uci[] = {
	{ "__gc", uci_lua_gc },
	{ "close", uci_lua_gc },
	{ "cursor", uci_lua_cursor },
	{ "load", uci_lua_load },
	{ "unload", uci_lua_unload },
	{ "get", uci_lua_get },
	{ "get_all", uci_lua_get_all },
	{ "add", uci_lua_add },
	{ "set", uci_lua_set },
	{ "rename", uci_lua_rename },
	{ "save", uci_lua_save },
	{ "delete", uci_lua_delete },
	{ "commit", uci_lua_commit },
	{ "revert", uci_lua_revert },
	{ "reorder", uci_lua_reorder },
	{ "changes", uci_lua_changes },
	{ "foreach", uci_lua_foreach },
	{ "add_history", uci_lua_add_delta },
	{ "add_delta", uci_lua_add_delta },
	{ "get_confdir", uci_lua_get_confdir },
	{ "set_confdir", uci_lua_set_confdir },
	{ "get_savedir", uci_lua_get_savedir },
	{ "set_savedir", uci_lua_set_savedir },
	{ "list_configs", uci_lua_list_configs },
	{ NULL, NULL },
};

微信 JSSDK 在 SPA html5 history 的坑爹之旅

话说这问题其实早在2016年末就已经遇到过了,没想到时隔接近一年,这次又重回微信开发,遇到了更坑爹的情况。
下文所有的情况都是基于SPA html5 history所讨论,其他情况不列入在内,比如终结方案就是不用 history 路由。
首先吐槽一下微信文档,我认为微信团队根本没把心思花在这个上面,包括小程序也是一样,不管API还是文档,都写的很烂。

配置签名步骤

说实话配置签名还算是简单,不过官方给的demo质量也也太差了,相信大部分人都是复制粘贴的,下面贴一个质量稍微高一点的php签名算法。
客户端只需要把window.location.href发来即可。

$sParams = [
  'noncestr' => uniqid('wjs_'),
  'jsapi_ticket' => $jsapi_ticket,
  'timestamp' => time(),
  'url' => $url,
];
if (($pos = strpos($sParams['url'], '#')) !== false) {
    $sParams['url'] = substr($sParams['url'], 0, $pos);
}
ksort($sParams);
$rawData = '';
foreach ($sParams as $k => $v) {
    $rawData .= '&' . $k . '=' . $v;
}
$signature = sha1(substr($rawData, 1));
return [
  'appId' => WECHAT_APPID,
  'nonceStr' => $sParams['noncestr'],
  'timestamp'=> $sParams['timestamp'],
  'url' => $url,
  'signature' => $signature,
  // 'rawString' => $rawData,
];

调用接口

接口都必须在wx.config后的wx.ready执行,首先吐槽官方的SDK,绝对可以让新手写出回调地狱。

$.ajax({
  success: function({
    // ...
    wx.config()
  })
})

wx.ready(function(){
  //...
  wx.xxx(function(){
    success: function() {
      // ...  
    }
  })
})

对于SPA的注意点

  • wx.ready只会执行一次,即无论是否多次调用wx.config,均只执行一次。
  • 就算config ok了,也有概率会出现切页面后无法调用分享的情况。
  • 在用户第一次OAuth2认证进来时,有极大可能是config ok后切页面就无法调用分享的情况。
  • 在上述情况下,页面切换后无法调用分享,但依然可以唤起wx.scanQRCode
  • 页面切换回第一次进入的页面后恢复正常,关闭浏览器再次进入也正常,只有在第一次OAuth2认证时不正常,并且在第一页reload无效,需要切换任意到第二页reload。
  • 在config fail的情况下,基本都是签名错误,这时候只需要reload即可,除此之外别无方法,本人尝试过将所有url发去做签名,均是失败,最后直接调用reload则成功。
  • 在iOS上,config的是第一个进入时的url,在安卓上则是每次pushstate后url。
  • 警告:千万别尝试去找规律,鄙人在此花费的时间 > 24h。

在 Promoxe LXC 中需要用到 /dev/net/tun 映射方式

https://www.kernel.org/doc/Documentation/networking/tuntap.txt

TUN/TAP provides packet reception and transmission for user space programs.
It can be seen as a simple Point-to-Point or Ethernet device, which,
instead of receiving packets from physical media, receives them from
user space program and instead of sending packets via physical media
writes them to the user space program.

部分 VPN 软件例如 OpenConnect 和 OpenVPN 需要用到 /dev/net/tun 有些还需要用到 tap,如果在 LXC 中默认是没有这部分设备的,非特权容器需要设置才可以。

# Promoxe 不要去 /var/lib/lxc/{id}/config 直接改,这样是不会生效的。
vim /etc/pve/lxc/{id}.conf  

# 挂载设备
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
# 设置权限
lxc.cgroup.devices.allow: c 10:200 rwm

cgroup 怎么写?
如果不懂是什么先看 https://linuxcontainers.org/lxc/manpages//man1/lxc-cgroup.1.html 由于这里不介绍 LXC,不展开。

cgroup 怎么写其实很简单,注意看下面,
c
10
200

root@pve /dev/net$ ls -l /dev
crw-rw-rw- 1 root root 10, 200 Sep 21 14:17 tun
crw-rw-rw- 1 root root 10, 200 Sep 21 14:17 tun

lxc.cgroup.devices.deny = a
# Allow any mknod (but not using the node)
lxc.cgroup.devices.allow = c *:* m
lxc.cgroup.devices.allow = b *:* m
# /dev/null and zero
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm
# consoles
lxc.cgroup.devices.allow = c 5:1 rwm
lxc.cgroup.devices.allow = c 5:0 rwm
#lxc.cgroup.devices.allow = c 4:0 rwm
#lxc.cgroup.devices.allow = c 4:1 rwm
# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm
lxc.cgroup.devices.allow = c 1:8 rwm
lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 5:2 rwm
# rtc
lxc.cgroup.devices.allow = c 254:0 rwm
# fuse
lxc.cgroup.devices.allow = c 10:229 rwm
# tun
lxc.cgroup.devices.allow = c 10:200 rwm
# full
lxc.cgroup.devices.allow = c 1:7 rwm
# hpet
lxc.cgroup.devices.allow = c 10:228 rwm
# kvm
lxc.cgroup.devices.allow = c 10:232 rwm

Proxmox 添加新硬盘 创建LVM-Thin

fdisk /dev/sdx
g
n

t
List all 31 or 8e by Linux LVM
p (check)
w

pvcreate /dev/sdx1
vgcreate ssd /dev/sdx1
lvcreate --type thin-pool -L 100G -c 64K -n data ssd

IPTV成果展示 并利用 nginx-rtmp-module 使 rtsp to rtmp(并转FLV/HLS等流媒体协议) 让移动端愉快地看视频

首先是需要魔改的 nginx-rtmp-module https://github.com/im-pingo/nginx-rtmp-module

由于我需要给移动设备观看 所以需要利用他自动唤起 ffmpeg,当没有人看的时候自动停止pull。

server {
    listen 1935;

    chunk_size 4000;

    application hls {
        send_all off;
        zero_start off;
        mpegts_cache_time 20s;
        cache_time 2s;
        hls_path /dev/shm/hls;
        live on;
        hls on;
        exec_options on;
        # 央视一套高清
        exec_pull ffmpeg -rtsp_transport tcp -i rtsp://115.233.41.137/PLTV/88888913/224/3221228078/10000100000000060000000002460690_0.smil -vcodec libx264 -preset ultrafast -acodec aac -f flv rtmp://localhost/$app/$name name=yangshiyitaogaoqing;
        # 以下省略 ...
    }
}
server {
    listen       80;
    ...
    location /flv {
        flv_live 1935 app=hls;
    }
}

image

从终端用subl启动Sublime Text编辑器

Macterminal中,大家都知道可以使用open命令打开指定目录的文件夹到Finder中,当然和大部分编辑器相同,sublime text也是可以被打开的。

对于Sublime Text 3可以使用以下命令

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl

对于Sublime Text 2可以使用以下命令

sudo ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl

用法很简单

cd to/path
subl .
subl to/path

彻底搞明白 JavaScript TypeScript 面向对象 继承 封装 多态

前言

面向对象程序设计(Object Oriented Programming),是目前比较流行的程序设计方法,当然与之对应的还有面向过程。
JavaScript可以通过原型继承的方式来实现,许多人还没有认识到JavaScript支持继承。
但当开始写面向对象的代码时,它能给你很强大的能量,也可以使用它写出高可复用,可封装的代码。
但较于面向过程来说,他可能需要一些更深层次的抽象理解,这也是许多新手无法彻底掌握的原因。
当然其实JavaScript还有另外一种概念叫面向原型,这个和本文说的并不冲突。

一、什么是面向对象编程?

在了解什么是面向对象编程之前,我们来看看语言的分类。
总体可以分为三类:面向机器、面向过程还有面向对象。
面向对象的语言主要有C++、Java、PHP等。

1.面向过程与面向对象

  • 面向过程:面向过程专注于如何去解决一个问题的过程步骤。编程特点是由一个个函数去实现每一步的过程步骤,没有类和对象的概念。
  • 面向对象:专注于由哪一个对象来解决这个问题,编程特点是出现了一个类,从类中拿到对象,由这个对象去解决具体问题。
  • 对于调用者来说,面向过程需要调用者自己去实现各种函数。而面向对象,只需要告诉调用者,对象中具体方法的功能,而不需要调用者了解方法中的实现细节。

2.面向对象的三大特征

  • 面向对象的三大特征是继承、封装、多态。JavaScript可以模拟实现继承和封装,但是无法很好的模拟实现多态,所以我们说JavaScript是一门基于对象的语言,而非是面向对象的语言。
  • 当然在TypeScript可以实现多态,后面会有实例讲到。

3.类和对象

  • 类:具有相同特征或行为的合集,比如人有名字、身高和体重等属性,有吃饭,睡觉等行为,所以我们可以把人规划为类。
  • 对象:从类中实例化出来的具体个体,例如人类有个名叫张三的同学,身高180,体重150,会吃饭,也会睡觉。

类和对象的关系

类是一个抽象的概念,在类中定义了这个属性和方法,但不能给到具体的数值。
比如人类有名字,但是不能说人类的名字叫什么。

对象是一个具体的个例,每个对象都是从类中创建赋值而来。
每一个对象都是独一无二的,比如他叫张三身高是180,她叫李四身高160。
虽然可能有相同的,比如他们两个名字和身高一样,但是他们也是两个不同的个例。

类的具体代码实现(JavaScript)

// ES5
function Person(attr) {
    this.name = attr.name;
    this.height = attr.height;
    this.weight = attr.weight;
    this.say = function() {
        console.log(this.name);
    }
}

// 实例化一个张三
// 熟悉OOP的朋友应该意识到了,当new的时候,其实Person本身就是构造函数。
var zhangsan = new Person({ name: '张三', height: 180, weight: 150 });

// 相较于ES5,在ES6中 class 的语法糖就很好理解了
class Person {
    constructor(attr) {
        this.name = attr.name;
        this.height = attr.height;
        this.weight = attr.weight;
    };

    say() {
        console.log(this.name);
    };
}
const zhangsan = new Person({ name: '张三', height: 180, weight: 150 });
zhangsan.say()
// 当然不管是ES5还是ES6
// 下面的表达式均成立
zhangsan.constructor === Person; // true
zhangsan instanceof Person; // true

二、成员属性和方法,公开、静态、私有

在一个类中的成员,有三种类型的属性或方法,分别是公开,私有,静态,其他语言中,一般对应为public private static

  • 成员:在构造函数中,使用this.属性或方法名声明。或者在实例化出对象以后,使用对象.属性或方法名追加的,都属于员属性或成员方法,他们默认情况下属于公开类型。

  • 公开:在外使用对象.属性或方法名,可以被自由调用和继承。

  • 私有:很好理解,对内不对外,使用对象.属性或方法名,无法调用,但在类中的所有方法可以自由访问它,也无法被继承。

  • 静态:静态属性与静态方法,通过类名.属性或方法名声明的,称为静态属性、静态方法,ES6中可以加上static关键词。

  • 在JavaScript,私有属性和私有方法都是使用作用域模拟的,在后面的提案中加入了#作为关键词,在TypeScript中可以使用private作为关键词。

  • 成员属性是属于实例化出的对象的,只能使用对象.属性或方法调用,静态属性是属于构造函数的,只能使用类名.属性或方法名调用。

三、封装

方法的封装:将类内部的函数进行私有化处理,不对外提供接口,无法在类外部使用的方法,称为私有方法,即方法的封装。
属性的封装:将类中的属性进行私有化处理,对外不能直接使用对象.属性或方法名。同时,需要提供专门用于设置和读取私有属性的set/get方法,让外部使用我们提供的方法,对属性进行操作。这就叫属性的封装。

封装不是拒绝访问,而是限制访问。
要求调用者,必须使用我们提供的set/get方法进行属性的操作,而不是直接拒绝操作。
因此,单纯的属性私有化,不能称为封装!必须要有私有化后,提供对应的set/get方法。

// ES5 中
function Person(attr){
    this.name = attr.name;
    // this.height = attr.height;
    this.weight = attr.weight;
    var _height = 0;
    this.setHeight = function(height) {
        if (height <= 0) {
            console.log('正常人的身高不应该小于等于0')
        } else {
            _height = height
        }
    }
    this.getHeight = function(height) {
        return _height;
    }
}

var zhangsan = new Person({ name: '张三', weight: 150 });
zhangsan.setHeight(180);
// 在ES6 class 中目前还无法使用,当然也可以WeakMap或Symbol之类的办法模拟,但都不是很完善。
// 目前有提案使用#作为私有属性的标记。
// 在TypeScript中可以使用private关键词,这样非常符合编码习惯。

interface personAttr {
    name: string;
    weight: number;
};

class Person {

    public name: string;
    public weight: number;
    private _height: number;

    constructor(attr: personAttr) {
        this.name = attr.name;
        // this.height = attr.height;
        this.weight = attr.weight;
    };

    setHeight(height: number): void {
        this._height = height;
    };

    getHeight(): number {
        return this._height;
    };

    say(): void {
        console.log(this.name);
    };
    private testPrivate(): void {
        //
    }

}

四、继承

继承是使用一个子类继承另一个父类,那么子类可以自动拥有父类中的所有属性和方法,这个过程叫做继承!
JavaScript中有很多实现继承的方法,这里我们不展开原型链,只说最简单的方法。
如果使用ES6中的class语法,那么从观感上是最为清晰明了。

// ES5

function Person(attr) {
    this.name = attr.name;
    this.height = attr.height;
    this.weight = attr.weight;
    this.say = function() {
        console.log(this.name);
    }
}
// 声明一个子类
function Student(attr) {
    Person.call(this, attr);
    this.no = attr.no; // 学号
}

var student = new Student({ name: '张三', weight: 150, height: 180, no: 4 });
console.log(student.no); // 4
console.log(student.weight); // 150
student.say();
console.dir(student)

// 相较于ES5 ES6可谓是清晰明了
// 在 Chrome 调试中,能很清晰的看到__proto__关系,再也不需要像ES5那样的写法了。
class Person {
    constructor(attr) {
        this.name = attr.name;
        this.height = attr.height;
        this.weight = attr.weight;
    };
    say() {
        console.log(this.name);
    };
}

class Student extends Person {
    constructor(attr) {
        super(attr);
        this.no = attr.no;
    }
}
const student = new Student({ name: '张三', weight: 150, height: 180, no: 4 });
console.log(student.no); // 4
console.log(student.weight); // 150
student.say();
console.dir(student)

五、多态

多态是同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果。
例如同样是云存储API,我们可以封装一套相同的接口,可以完成百度云,阿里云的封装。
多态和重载最大的区别在于参数的上,前者参数必须一致,后者可以重载扩展。
由于在JavaScript上比较难模拟,故此使用TypeScript来解释它。

interface personAttr {
    name: string;
    height: number;
    weight: number;
};

interface studentAttr extends personAttr {
    no: number;
};

// 定义抽象类
abstract class Person  {

    public name: string;
    public weight: number;
    public height: number;

    constructor(attr: personAttr) {
        this.name = attr.name;
        this.height = attr.height;
        this.weight = attr.weight;
    };
    // 在这里不实现任何代码,由下面的子类实现
    abstract say(number: number): void;
}

class Student extends Person {
    public no: number;
    constructor(attr: studentAttr) {
        super(attr);
        this.no = attr.no;
    }
    public say(number: number) {
        console.log('我是学生,我的数字是' + number);
    }
}

class Teacher extends Person {
    public no: number;
    constructor(attr: studentAttr) {
        super(attr);
        this.no = attr.no;
    }
    public say(number: number) {
        console.log('我是老师,我的数字是' + number);
    }
}

// 当然,我们还可以使用interface实现
interface PersonInterface {
    say(number: number): void;
}

class Person implements PersonInterface {
    public say(number: number): void {
        // code...
    }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.