首页
留言板
关于本站
Search
1
实现网站页面秒开-预加载JS脚本instant.page
56,553 阅读
2
解决Windows连接PPTP/L2TP时无法连接上外网Internet的困扰
55,633 阅读
3
Typecho通过阿里邮件推送和LoveKKComment插件实现评论邮件通知
39,416 阅读
4
如何做到网页性能的极致优化?
29,687 阅读
5
回村无网络之-《无线网桥使用记》
29,589 阅读
路由交换
华为笔记
华三笔记
Mikrotik笔记
中兴笔记
Linux
Nginx
数据库
typecho
WordPress
资源分享
网站技术
Windows
other
未分类
登录
Search
标签搜索
路由交换
运维
linux
ROS
mikrotik
华为
软路由
WordPress
ospf
路由
网站
centos
php
ARP
交换
nssa
typecho
广播风暴
Nginx
dns
Ledo
累计撰写
61
篇文章
累计收到
1,024
条评论
首页
栏目
路由交换
华为笔记
华三笔记
Mikrotik笔记
中兴笔记
Linux
Nginx
数据库
typecho
WordPress
资源分享
网站技术
Windows
other
未分类
页面
留言板
关于本站
搜索到
61
篇与
的结果
2019-01-11
Mikrotik ROS实现URL劫持push推送信息和重定向(图文教程)
[mark_a]ROS的高级玩法非常多,今天就介绍下如何利用网页上弹出来的小广告,把它拦截并替换为我们做好的内容,图片,网页,flash都可以,我这里只是不对特定的目标才做代理,针对所有的80和443连接做劫持进行重定向,一般小区宽带运营商这里会用防火墙把目标添加到一个地址列表,用来做代理的目标地址,配合radius计费系统,把即将到期的用户下发另外一个IP段,再只对这个源地址做代理,实现提醒即将到期用户续费的目的,如果用户量多的话,想在哪个知名网站做点小广告,再收取点广告赞助,这点我之前深有感触,最后实在受不了这种宽带运营商,决然换了![/mark_a]网上有很多这种方法实现的ros代码,可是很多都不是真的管用,我也是掉坑了好几次,本文将以ros的winbox操作进行演示。1,分类IP,将网内IP用户归类整理,通过标记功能实现建立src2地址表,动态删除时间间隔为8小时;这一步非常重要,在建立src1地址表是需要排除src2中已经包含的地址;建立src1地址表,自动删除时间间隔为1分钟;这时我们可以看见已经生成了动态的地址表:原理解析:系统维护src1地址表的时间是1分钟,src2地址表维护时间为8小时,当一个IP地址产生连接后会被记录到src1和src2中,但是src1中的地址只能生存1分钟,它检测到在src2中已经存在该地址后会在1分钟后删除掉该地址,接下来我们只需要处理src1中的地址即可。2,劫持与重定向处理劫持也就是替换连接,地址栏的地址不变,但是网页实体已经被替换;重定向不同于劫持,地址栏地址会转向到一个新地址;劫持的实现:然后即可在该ip下的端口绑定一个html页面来展示,用户的地址栏地址保持不变。重定向的实现:该重定向规则只能定向到自身的某个端口上,然后我们交给web-proxy来搞定通过ros的代理端口8088来处理,该端口会将所有请求禁止并跳转到指定的地址,然后打开浏览器,打开任意网页都会被跳转,当然只针对src1地址表中的ip用户。3,关于网页篡改及弹窗的实现:该方面主要进行匹配网页中的元素,然后做替换处理,按照本思路来处理并不难,比如:/ip proxy access add action=deny comment="" disabled=no path=/othercity/all.htm redirect-to=\ 192.168.0.2/qqpush.html add action=deny comment="" disabled=no path=/img/baidu_logo.gif redirect-to=\ 192.168.0.2/logo.gif add action=deny comment="" disabled=no path=/images/ad_router_club.gif \ redirect-to=192.168.0.2/routerclub.gif add action=deny comment="" disabled=no path=\ /upload/2019-01-11/guanggaotupian.gif redirect-to=192.168.0.2/00.gif电信运营商都是用类似这种手法,有兴趣可以试一下
2019年01月11日
11,875 阅读
2 评论
0 点赞
2019-01-10
此内容被密码保护
加密文章,请前往内页查看详情
2019年01月10日
6,299 阅读
0 评论
1 点赞
2018-12-23
nginx基本配置与参数说明
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好;本文记录一下常用的基本配置。#运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; #工作模式及连接数上限 events { #epoll是多路复用IO(I/O Multiplexing)中的一种方式, #仅用于linux2.6以上内核,可以大大提高nginx的性能 use epoll; #单个后台worker process进程的最大并发链接数 worker_connections 1024; # 并发总数是 worker_processes 和 worker_connections 的乘积 # 即 max_clients = worker_processes * worker_connections # 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4 为什么 # 为什么上面反向代理要除以4,应该说是一个经验值 # 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000 # worker_connections 值的设置跟物理内存大小有关 # 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数 # 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右 # 我们来看看360M内存的VPS可以打开的文件句柄数是多少: # $ cat /proc/sys/fs/file-max # 输出 34336 # 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内 # 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置 # 使得并发总数小于操作系统可以打开的最大文件数目 # 其实质也就是根据主机的物理CPU和内存进行配置 # 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。 # ulimit -SHn 65535 } http { #设定mime类型,类型由mime.type文件定义 include mime.types; default_type application/octet-stream; #设定日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件, #对于普通应用,必须设为 on, #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off, #以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile on; #tcp_nopush on; #连接超时时间 #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; #开启gzip压缩 gzip on; gzip_disable "MSIE [1-6]."; #设定请求缓冲 client_header_buffer_size 128k; large_client_header_buffers 4 128k; #设定虚拟主机配置 server { #侦听80端口 listen 80; #定义使用 www.nginx.cn访问 server_name www.nginx.cn; #定义服务器的默认网站根目录位置 root html; #设定本虚拟主机的访问日志 access_log logs/nginx.access.log main; #默认请求 location / { #定义首页索引文件的名称 index index.php index.html index.htm; } # 定义错误提示页面 error_page 500 502 503 504 /50x.html; location = /50x.html { } #静态文件,nginx自己处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ { #过期30天,静态文件不怎么更新,过期可以设大一点, #如果频繁更新,则可以设置得小一点。 expires 30d; } #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置. location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #禁止访问 .htxxx 文件 location ~ /.ht { deny all; } } }
2018年12月23日
12,787 阅读
12 评论
1 点赞
2018-12-23
CentOS7 常用命令集合整理
[mark_a]最近在对Centos进行学习,就想从网络上收集整理一些常用的指令,方便自己在学习中能够方便查找,也给需要的小伙伴们提供参考。下面是一些常用命令的集合![/mark_a] 常用命令文件与目录操作 命令 解析 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在目录 cp file1 file2 将file1复制为file2 cp -a dir1 dir2 复制一个目录 cp -a /tmp/dir1 . 复制一个目录到当前工作目录(.代表当前目录) ls 查看目录中的文件 ls -a 显示隐藏文件 ls -l 显示详细信息 ls -lrt 按时间显示文件(l表示详细列表,r表示反向排序,t表示按时间排序) pwd 显示工作路径 mkdir dir1 创建 ‘dir1’ 目录 mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树 mv dir1 dir2 移动/重命名一个目录 rm -f file1 删除 ‘file1’ rm -rf dir1 删除 ‘dir1’ 目录及其子目录内容 查看文件内容 命令 解析 cat file1 从第一个字节开始正向查看文件的内容 head -2 file1 查看一个文件的前两行 more file1 查看一个长文件的内容 tac file1 从最后一行开始反向查看一个文件的内容 tail -3 file1 查看一个文件的最后三行 vi file 打开并浏览文件 文本内容处理 命令 解析 grep str /tmp/test 在文件 ‘/tmp/test’ 中查找 “str” grep ^str /tmp/test 在文件 ‘/tmp/test’ 中查找以 “str” 开始的行 grep [0-9] /tmp/test 查找 ‘/tmp/test’ 文件中所有包含数字的行 grep str -r /tmp/* 在目录 ‘/tmp’ 及其子目录中查找 “str” diff file1 file2 找出两个文件的不同处 sdiff file1 file2 以对比的方式显示两个文件的不同 vi file 操作解析i进入编辑文本模式Esc退出编辑文本模式:w保存当前修改:q不保存退出vi:wq保存当前修改并退出vi 查询操作 命令 解析 find / -name file1 从 ‘/’ 开始进入根文件系统查找文件和目录 find / -user user1 查找属于用户 ‘user1’ 的文件和目录 find /home/user1 -name *.bin 在目录 ‘/ home/user1’ 中查找以 ‘.bin’ 结尾的文件 find /usr/bin -type f -atime +100 查找在过去100天内未被使用过的执行文件 find /usr/bin -type f -mtime -10 查找在10天内被创建或者修改过的文件 locate *.ps 寻找以 ‘.ps’ 结尾的文件,先运行 ‘updatedb’ 命令 find -name ‘*.[ch]’ | xargs grep -E ‘expr’ 在当前目录及其子目录所有.c和.h文件中查找 ‘expr’ find -type f -print0 | xargs -r0 grep -F ‘expr’ 在当前目录及其子目录的常规文件中查找 ‘expr’ find -maxdepth 1 -type f | xargs grep -F ‘expr’ 在当前目录中查找 ‘expr’ 压缩、解压 命令 解析 bzip2 file1 压缩 file1 bunzip2 file1.bz2 解压 file1.bz2 gzip file1 压缩 file1 gzip -9 file1 最大程度压缩 file1 gunzip file1.gz 解压 file1.gz tar -cvf archive.tar file1 把file1打包成 archive.tar(-c: 建立压缩档案;-v: 显示所有过程;-f: 使用档案名字,是必须的,是最后一个参数) tar -cvf archive.tar file1 dir1 把 file1,dir1 打包成 archive.tar tar -tf archive.tar 显示一个包中的内容 tar -xvf archive.tar 释放一个包 tar -xvf archive.tar -C /tmp 把压缩包释放到 /tmp目录下 zip file1.zip file1 创建一个zip格式的压缩包 zip -r file1.zip file1 dir1 把文件和目录压缩成一个zip格式的压缩包 unzip file1.zip 解压一个zip格式的压缩包到当前目录 unzip test.zip -d /tmp/ 解压一个zip格式的压缩包到 /tmp 目录 yum安装器 命令 解析 yum -y install [package] 下载并安装一个rpm包 yum localinstall [package.rpm] 安装一个rpm包,使用你自己的软件仓库解决所有依赖关系 yum -y update 更新当前系统中安装的所有rpm包 yum update [package] 更新一个rpm包 yum remove [package] 删除一个rpm包 yum list 列出当前系统中安装的所有包 yum search [package] 在rpm仓库中搜寻软件包 yum clean [package] 清除缓存目录(/var/cache/yum)下的软件包 yum clean headers 删除所有头文件 yum clean all 删除所有缓存的包和头文件 网络相关 命令 解析 ifconfig eth0 显示一个以太网卡的配置 ifconfig eth0 192.168.1.1 netmask 255.255.255.0 配置网卡的IP地址 ifdown eth0 禁用 ‘eth0’ 网络设备 ifup eth0 启用 ‘eth0’ 网络设备 iwconfig eth1 显示一个无线网卡的配置 iwlist scan 显示无线网络 ip addr show 显示网卡的IP地址 系统相关 命令 解析 su - 切换到root权限(与su有区别) shutdown -h now 关机 shutdown -r now 重启 top 罗列使用CPU资源最多的linux任务 (输入q退出) pstree 以树状图显示程序 man ping 查看参考手册(例如ping 命令) passwd 修改密码 df -h 显示磁盘的使用情况 cal -3 显示前一个月,当前月以及下一个月的月历 cal 10 1988 显示指定月,年的月历 date –date ‘1970-01-01 UTC 1427888888 seconds’ 把一相对于1970-01-01 00:00的秒数转换成时间 XSheel 5相关操作窗体快捷键 命令 解析 Ctrl + u 删除光标之前到行首的字符 Ctrl + k 删除光标之前到行尾的字符 Ctrl + c 取消当前行输入的命令,相当于Ctrl + Break Ctrl + a 光标移动到行首(ahead of line),相当于通常的Home键 Ctrl + e 光标移动到行尾(end of line) Ctrl + f 光标向前(forward)移动一个字符位置 Ctrl + b 光标往回(backward)移动一个字符位置 Ctrl + l 清屏,相当于执行clear命令 Ctrl + r 显示:号提示,根据用户输入查找相关历史命令(reverse-i-search) Ctrl + w 删除从光标位置前到当前所处单词(word)的开头 Ctrl + t 交换光标位置前的两个字符 Ctrl + y 粘贴最后一次被删除的单词 Ctrl + Alt + d 显示桌面 Alt + b 光标往回(backward)移动到前一个单词 Alt + d 删除从光标位置到当前所处单词的末尾 Alt + F2 运行 Alt + F4 关闭当前窗口 Alt + F9 最小化当前窗口 Alt + F10 最大化当前窗口 Alt + Tab 切换窗口 Alt + 左键 移动窗口(或在最下面的任务栏滚动鼠标滑轮) 操作小技巧: 鼠标中间键:粘贴突出显示的文本。(使用鼠标左键来选择文本。把光标指向想粘贴文本的地方。点击鼠标中间键来粘贴。)Tab:命令行自动补全。使用 shell 提示时可使用这一方式。键入命令或文件名的前几个字符,然后按 [Tab] 键,它会自动补全命令或显示匹配键入字符的所有命令。在滚动条的空白处点击鼠标中键:屏幕即滚动到那个地方。在桌面或文件管理器中直接按 /就可以输入位置,打开文件管理器。在 vi 或 Firefox 中直接按 / 即可进入快速搜索状态。 网站链接和图片可直接拖放到桌面或者目录,可以马上下载。直接将文件管理器中的文件拖到终端中就可以在终端中得到完整的路径名。
2018年12月23日
10,577 阅读
6 评论
0 点赞
2018-12-22
Mikrotik RouterOS 基本安全防范设置
针对MikroTik近期的一些漏洞做一些安全设置措施 将默认用户名admin更改为其他名称 /user set 0 name=myros 设置高强度的密码 /user set 0 password=“d*@bBsweUBe3@” 通过IP地址访问 /user set 0 allowed-address=xxxx/yy 只保留安全的服务 /ip service disable telnet,ftp,www,api,api-ssl ⚠️注意:该操作会禁用Telnet,FTP,WWW,API,API-SSL 更改默认端口,这将立即停止大多数随机SSH暴力登录尝试 /ip service set ssh port=2200 设置Winbox允许登陆的网段 /ip service set winbox address=192.168.88.0/24 禁用mac-telnet服务 /tool mac-server set allowed-interface-list=none 禁用mac-winbox服务 /tool mac-server mac-winbox set allowed-interface-list=none 禁用mac-ping服务 /tool mac-server ping set enabled=no 邻居发现 MikroTik邻居发现协议用于显示和识别网络中的其他MikroTik设备,禁用所有接口上的邻居发现 禁用IPv4 的邻居发现协议 /ip neighbor discovery-settings set discover-interface-list=none 禁用IPv6 的邻居发现协议 /ipv6 nd set [find] disabled=yes 带宽服务器用于测试两个MikroTik路由器之间的吞吐量,请在测试后禁用它。 /tool bandwidth-server set enabled=no DNS缓存 /ip dns set allow-remote-requests=no 设置更安全的SSH访问,打开SSH强加密 /ip ssh set strong-crypto=yes 关闭 Proxy,Socks代理 /ip proxy set enabled=no /ip socks set enabled=no MikroTik UPnP服务(通用即插即用协议) /ip upnp set enabled=no MikroTik自带的DDNS服务器(动态域名解析) 如果不是使用的话请用以下命令禁用 /ip cloud set ddns-enabled=no update-time=no 某些型号的RouterBOARD有LCD模块用于信息显示。 /lcd set enabled=no 如果你的路由器不提供VPN服务,请用以下命令关闭VPN /interface l2tp-server server set enabled=no /interface pptp-server server set enabled=no /interface sstp-server server set enabled=no /interface ovpn-server server set enabled=no 禁用在设备上使用Radius进行授权 /user aaa set use-radius=no ⚠️⚠️⚠️⚠️移除操作请慎用 /radius remove numbers=[/radius find]
2018年12月22日
9,290 阅读
3 评论
0 点赞
2018-12-17
WordPress限制ip登陆次数
为了防止这个无限尝试我后台登录密码,我采用了一个限制IP登录次数功能,它的原理很简单是采用当前ip限制登录,有效的防止登录错误密码次数,如果超过尝试3次密码错误时候,它会记录下你这登录ip地址,第4次登录时它会限制你继续访问后台登录,而且会显示空白地址让你无法在继续尝试,老规矩只需要添加一串代码就搞定,不用安装任何插件实现此功能!/*-----------------------------------------------------------------------------------*/ /* wordpress限制ip登陆次数 /*-----------------------------------------------------------------------------------*/ # 阻止登录的函数,直接 404 function block_login() {header("HTTP/1.1 404 Not Found");header("Status: 404 Not Found");exit;} # 登录前判断登陆的失败次数 add_action("login_head",function () { $login_ip = $_SERVER['REMOTE_ADDR']; $login_ip_list = unserialize(get_option("LOGIN_IP_LIST")); # 登录失败超过2次就进行阻止登陆 if($login_ip_list && ($login_ip_list[$login_ip] > 2)) {block_login();}}); # 登录失败的处理 add_action('login_errors', function ($info) { $login_ip = $_SERVER['REMOTE_ADDR']; $login_ip_list = get_option("LOGIN_IP_LIST"); if($login_ip_list) {$login_ip_list = unserialize($login_ip_list);} else {$login_ip_list = array();} # 登录次数 + 1 $login_ip_list[$login_ip] += 1; update_option('LOGIN_IP_LIST', serialize($login_ip_list)); # 提示登录失败的次数 return "$login_ip 登陆次数 " . $login_ip_list[$login_ip];}); # 证明已经登录成功了 add_action("admin_menu", function () { $login_ip = $_SERVER['REMOTE_ADDR']; $login_ip_list = unserialize(get_option("LOGIN_IP_LIST")); $login_ip_list[$login_ip] = 0; update_option('LOGIN_IP_LIST', serialize($login_ip_list));});
2018年12月17日
11,444 阅读
9 评论
0 点赞
2018-11-25
IS-IS协议原理与配置
前言 和OSPF一样,IS-IS也是一种基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议。IS-IS最初是国际化标准组织ISO为它的无连接网络协议CLNP设计的一种动态路由协议。 为了提供对IP的路由支持,IETF在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI环境中,修订后的IS-IS协议被称为集成化的IS-IS。由于IS-IS的简便性及扩展性强的特点,目前在大型ISP的网络中被广泛地部署 IS-IS协议基本原理应用场景历史起源路由计算过程地址结果路由器分类(路由角色)邻居Hello报文邻居的关系建立链路状态信息的载体链路状态信息的交互路由算法网络分层路由域区域间路由IS-IS与OSPF的区别IS-IS与OSPF差异性术语对照表IS-IS应用场景配置IS-IS路由配置需求IS-IS路由配置实现 (1)IS-IS路由配置实现 (2)IS-IS路由配置实现 (3)思考? IS-IS路由器类型有哪几种? PSNP报文在邻居交互中起到了什么作用? 相比OSPF,IS-IS的优势是什么?
2018年11月25日
9,458 阅读
2 评论
0 点赞
2018-11-20
华为OSPF实验记录
拓扑要求:1,根据图示配置正确的ip地址2,根据图示配置ospf协议及所属的区域,使全网互通3,AR1上有两个环回接口,为了减少路由表规模,需要配置区域汇总4,AR3上引入了两个环回接口地址(通过引入直连可实现)import direct5,AR3上对引入的路由汇总6,区域1希望降低路由计算、存储压力 ,同时考虑网络扩展,需要保留引入外部路由的功能。7,区域3外来人员较多,采用较安全的方式保证路由交互的安全性配置记录简述:1、配置ip地址:略过不写。2、宣告ospf各区,由于area3 不与骨干区area0 直接连接无法学习到其他区域的ospf路由,这里需要用到虚链路 vlink-peer,配置简述:area2 下 ar4 配置route-id 4.4.4.4 , ar5配置route-id 5.5.5.5;ospf下ar4 area2 配置vlink-peer 5.5.5.5 ,下ar5 area2 配置vlink-peer 4.4.4.4 使area3建立虚链路与骨干区直接相连。 3、area1下的abr(ar2)设置路由汇总 abr-summary 192.168.0.0 255.255.252.0 讲两个环回接口的路由汇总成一条。 4、ar3下的两个环回接口引入直连路由,ar3作为asbr(自治系统边界路由器)引入外部路由,ospf 下配置: import-route direct。 5、asbr-summary 172.16.0.0 255.255.252.0 路由汇总。 6、ar1 ,ar2 在区域1 下分别配置 nssa ,干掉 4 5 类lsa 保留外部路由。 7、区域3,ar5 和 ar6 分别ospf area3 配置authentication-mode md5 1 cipher admin 所有route的配置:[V200R003C00] # sysname ar1 # snmp-agent local-engineid 800007DB03000000000000 snmp-agent # clock timezone China-Standard-Time minus 08:00:00 # portal local-server load flash:/portalpage.zip # drop illegal-mac alarm # wlan ac-global carrier id other ac id 0 # set cpu-usage threshold 80 restore 75 # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$ local-user admin service-type http # firewall zone Local priority 15 # interface GigabitEthernet0/0/0 ip address 1.1.1.1 255.255.255.0 # interface GigabitEthernet0/0/1 # interface GigabitEthernet0/0/2 # interface NULL0 # interface LoopBack1 ip address 192.168.1.1 255.255.255.0 # interface LoopBack2 ip address 192.168.2.1 255.255.255.0 # ospf 1 area 0.0.0.1 network 1.1.1.0 0.0.0.255 network 192.168.1.0 0.0.0.255 network 192.168.2.0 0.0.0.255 nssa # user-interface con 0 authentication-mode password user-interface vty 0 4 user-interface vty 16 20 # wlan ac # return <ar1> -------------------------------------------------------- <ar2>disp cur <ar2>disp current-configuration [V200R003C00] # sysname ar2 # snmp-agent local-engineid 800007DB03000000000000 snmp-agent # clock timezone China-Standard-Time minus 08:00:00 # portal local-server load flash:/portalpage.zip # drop illegal-mac alarm # wlan ac-global carrier id other ac id 0 # set cpu-usage threshold 80 restore 75 # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$ local-user admin service-type http # firewall zone Local priority 15 # interface GigabitEthernet0/0/0 ip address 1.1.1.2 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 2.2.2.1 255.255.255.0 # interface GigabitEthernet0/0/2 # interface NULL0 # ospf 1 area 0.0.0.0 network 2.2.2.0 0.0.0.255 area 0.0.0.1 abr-summary 192.168.0.0 255.255.252.0 network 1.1.1.0 0.0.0.255 nssa # user-interface con 0 authentication-mode password user-interface vty 0 4 user-interface vty 16 20 # wlan ac # return <ar2> -------------------------------------------------------- <ar3>disp cur [V200R003C00] # sysname ar3 # snmp-agent local-engineid 800007DB03000000000000 snmp-agent # clock timezone China-Standard-Time minus 08:00:00 # portal local-server load flash:/portalpage.zip # drop illegal-mac alarm # wlan ac-global carrier id other ac id 0 # set cpu-usage threshold 80 restore 75 # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$ local-user admin service-type http # ospfv3 1 # firewall zone Local priority 15 # interface GigabitEthernet0/0/0 ip address 2.2.2.2 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 3.3.3.1 255.255.255.0 # interface GigabitEthernet0/0/2 # interface NULL0 # interface LoopBack1 ip address 172.16.1.1 255.255.255.0 # interface LoopBack2 ip address 172.16.2.1 255.255.255.0 # ospf 1 asbr-summary 172.16.0.0 255.255.252.0 import-route direct area 0.0.0.0 network 2.2.2.0 0.0.0.255 network 3.3.3.0 0.0.0.255 # user-interface con 0 authentication-mode password user-interface vty 0 4 user-interface vty 16 20 # wlan ac # return <ar3> -------------------------------------------------------- <ar4>disp cu [V200R003C00] # sysname ar4 # snmp-agent local-engineid 800007DB03000000000000 snmp-agent # clock timezone China-Standard-Time minus 08:00:00 # portal local-server load flash:/portalpage.zip # drop illegal-mac alarm # wlan ac-global carrier id other ac id 0 # set cpu-usage threshold 80 restore 75 # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$ local-user admin service-type http # firewall zone Local priority 15 # interface GigabitEthernet0/0/0 ip address 3.3.3.2 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 4.4.4.1 255.255.255.0 # interface GigabitEthernet0/0/2 # interface NULL0 # interface LoopBack0 ip address 44.44.44.44 255.255.255.0 # ospf 1 router-id 4.4.4.4 area 0.0.0.0 network 3.3.3.0 0.0.0.255 area 0.0.0.2 network 4.4.4.0 0.0.0.255 vlink-peer 5.5.5.5 # user-interface con 0 authentication-mode password user-interface vty 0 4 user-interface vty 16 20 # wlan ac # return <ar4> -------------------------------------------------------- <ar5>disp cur [V200R003C00] # sysname ar5 # snmp-agent local-engineid 800007DB03000000000000 snmp-agent # clock timezone China-Standard-Time minus 08:00:00 # portal local-server load flash:/portalpage.zip # drop illegal-mac alarm # wlan ac-global carrier id other ac id 0 # set cpu-usage threshold 80 restore 75 # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$ local-user admin service-type http # firewall zone Local priority 15 # interface GigabitEthernet0/0/0 ip address 4.4.4.2 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 5.5.5.1 255.255.255.0 # interface GigabitEthernet0/0/2 # interface NULL0 # interface LoopBack0 ip address 55.55.55.55 255.255.255.0 # ospf 1 router-id 5.5.5.5 area 0.0.0.2 network 4.4.4.0 0.0.0.255 vlink-peer 4.4.4.4 area 0.0.0.3 authentication-mode md5 1 cipher %$%$>g}P.Dx'yG#4|05aM->+ONqz%$%$ network 5.5.5.0 0.0.0.255 # user-interface con 0 authentication-mode password user-interface vty 0 4 user-interface vty 16 20 # wlan ac # return <ar5> ------------------------------------------------------- <ar6>disp cur [V200R003C00] # sysname ar6 # snmp-agent local-engineid 800007DB03000000000000 snmp-agent # clock timezone China-Standard-Time minus 08:00:00 # portal local-server load flash:/portalpage.zip # drop illegal-mac alarm # wlan ac-global carrier id other ac id 0 # set cpu-usage threshold 80 restore 75 # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$ local-user admin service-type http # firewall zone Local priority 15 # interface GigabitEthernet0/0/0 ip address 5.5.5.2 255.255.255.0 # interface GigabitEthernet0/0/1 # interface GigabitEthernet0/0/2 # interface NULL0 # ospf 1 area 0.0.0.3 authentication-mode md5 1 cipher %$%$Z9fIL=J(P)F1XG)Q[$!,OOK!%$%$ network 5.5.5.0 0.0.0.255 # user-interface con 0 authentication-mode password user-interface vty 0 4 user-interface vty 16 20 # wlan ac # return结束,谢谢阅读。
2018年11月20日
8,694 阅读
4 评论
0 点赞
2018-11-19
Begin知更鸟主题新版本修改评论Admin显示
Begin主题更新版本后因代码位置已修改,旧教程已无用,这里给出begin最终LTS版本的修改方法。首先登录后台-外观-编辑-主题文件(个人感觉后台修改方便,FTP和空间修改太太慢)找到inc点击找到inc.php打开键盘ctrl+f搜索author-admin找到旁边的admin修改成自己想要显示的(我这版本是699行)
2018年11月19日
8,767 阅读
5 评论
0 点赞
2018-11-17
给begin主题友情链接页面添加评论
今天下午一直在折腾begin主题的友情链接页面怎么把评论调用出来。和小伙伴说是在显示选项中打开讨论就可以了~居然不行。。。于是,就来看看这个页面了,发现这个页面并没有调用评论的代码。。也就打开讨论也没用了。然后就来添加代码了解决问题了,在单独页面中找到评论的代码,放到友情链接页面就可以了。代码如下。[mark_b] <?php while ( have_posts() ) : the_post(); ?> <?php if ( comments_open() || get_comments_number() ) : ?> <?php comments_template( '', true ); ?> <?php endif; ?> <?php endwhile; ?> [/mark_b]将以上代码添加到友情链接页面 </main> 前面就可以了。同理,也可以再其他页面添加评论。不要问我这个代码正不正确,其实我也是网上找的,只是知道放进去有用。虽然不懂这个PHP代码,但是大概是知道这是调用评论的。
2018年11月17日
6,257 阅读
2 评论
0 点赞
2018-11-15
wordpress关闭插件或主题更新提示
wordpress程序为提高安全性,往往程序、主题或插件都会进行定时更新,为安全起见,学建站网建议大家尽量做到定时更新,然而也会出现一些特殊的情况:如你使用的是一些已经汉化的主题或插件,为客户搭建网站后,往往不需要客户更新,那么这个时候我们就需要在后台关闭主题或插件的更新提示,不然一个个的小红点会让客户感觉不舒服:去除更新提示,我们可以通过如下代码完成操作:找到主题的函数文件functions.php,在?>结束位置放置如下代码;add_filter('pre_site_transient_update_core', create_function('$a', "return null;")); // 关闭核心提示 add_filter('pre_site_transient_update_plugins', create_function('$a', "return null;")); // 关闭插件提示 add_filter('pre_site_transient_update_themes', create_function('$a', "return null;")); // 关闭主题提示 remove_action('admin_init', '_maybe_update_core'); // 禁止 WordPress 检查更新 remove_action('admin_init', '_maybe_update_plugins'); // 禁止 WordPress 更新插件 remove_action('admin_init', '_maybe_update_themes'); // 禁止 WordPress 更新主题3.7以后开启了小版本的自动更新。很多时候更新不会询问你一觉起来就给你更新了,当然这也需要你的主机支持才可以完成。关闭自动更新在WordPress 根目录下的 wp-config.php 加入以下代码即可:define( 'AUTOMATIC_UPDATER_DISABLED', true );
2018年11月15日
6,128 阅读
0 评论
0 点赞
2018-11-02
RouteOS下使用dnspod的ddns
强制赋值变量为:code,token,domain_id,record_id 可选变量为:sub_domain,record_type,record_line,value 当变量sub_domain为空时,PHP自动赋值为:『routeos』 当变量record_type为空时,php自动赋值为:『A』 当变量record_line为空时,PHP自动赋值为:『默认』 当变量value为空时,php自动获取当前请求的IP为其值 PHP$realip = getIP(); $code = $_GET['code']; $token = $_GET['token']; $domain_id = $_GET['domain_id']; $record_id = $_GET['record_id']; $sub_domain = $_GET['sub_domain']; $value = $_GET['value']; $record_type = $_GET['record_type']; $record_line = $_GET['record_line']; if (empty($code)) { exit('code empty.'); } if (empty($token)) { exit('token empty.'); } if (empty($domain_id)) { exit('domain_id empty.'); } if (empty($record_id)) { exit('record_id empty.'); } if (empty($sub_domain)) { $sub_domain = "routeos"; } if (empty($record_type)) { $record_type = "A"; } if (empty($record_line)) { $record_line = "默认"; } if (empty($value)) { $value = $realip; } $ip = checkIP($code, $token, $domain_id, $record_id); if (empty($ip)) { exit('ip empty.'); } if ($ip == $value) { exit("IP一致."); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://dnsapi.cn/Record.Modify"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, "login_token=" . $code . "," . $token . "&format=json&domain_id=" . $domain_id . "&record_id=" . $record_id . "&sub_domain=" . $sub_domain . "&value=" . $value . "&record_type=" . $record_type . "&record_line=" . "$record_line"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); curl_close($ch); exit('ok'); function checkIP($code, $token, $domain_id, $record_id ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://dnsapi.cn/Record.Info"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, "login_token=" . $code . "," . $token . "&format=json&domain_id=" . $domain_id . "&record_id=" . $record_id . ""); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); curl_close($ch); $json = json_decode($server_output, TRUE); return $json['record']['value']; } function getIP(){ if (@$_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if (@$_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"]; else if (@$_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"]; else if (@getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (@getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); else if (@getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); else $ip = "Unknown"; return $ip; } RouteOS 6.x:global id "200000" :global token "*****************25712a6430c5f2" :global domainid "830000" :global recordid "295000000" :global subdomain "routeos" :global xx "https://www.dwhd.org/dnspod_2.php?code=$id&token=$token&domain_id=$domainid&record_id=$recordid" /tool fetch url=("$xx") mode=https keep-result=yes dst-path=ddns.txt RouteOS 5.x:global id "200000" :global token "*****************25712a6430c5f2" :global domainid "830000" :global recordid "295000000" :global subdomain "routeos" :global xx "http://www.dwhd.org/dnspod_2.php?code=$id&token=$token&domain_id=$domainid&record_id=$recordid" /tool fetch url=("$xx") mode=http keep-result=yes dst-path=ddns.txt
2018年11月02日
8,167 阅读
3 评论
0 点赞
2018-10-26
Simple Queue简单配置
功能包:system等级: Level 3操作路径: /queue simple在/queue simple创建一个流控配置项目,会分别有三个独立的队列,分别是 global-in, global-out和 global-total. 如果在/queue simple创建一个默认队列规则(无流控限制、queue type为默认),并且该队列没有子队列,即这样的队列实际上没有创建。如果队列只配置了upload/download流控属性,global-total队列可以被忽略。如果仔细观察,当建立一条queue simple规则同时在queue tree可以瞬间看到3条规则的建立,然后被隐藏到后台,即queue simple被建立在queue tree下。Simple queues是有序对队列即FIFO,每个数据包都必须经过每一个队列处理,直到最后一条队列规则,即如果有1000条队列,匹配的队列规则是排列在第1000条,那么数据包过经过前面999条后,才能到达该规则。 因此Simple queue在出现大量队列规则后,处理效率会降低。在v6大改动后,simple queue已经具备了和queue tree相同的等级流控功能。在v6前simple queue使用的是FIFO算法,后v6之后FIFO算法已经取消,优化了RouterOS在流控处理性能。 P2P流量队列 计划时间任务执行队列规则 优先级队列 从 /ip firewall mangle 使用多重包标记 双向流控(对上行和下行的带宽限制) 应用举例下面假设我们想要对网络192.168.0.0/24流量限制为:下行1Mb上行512kb,这里我们需要让服务器192.168.0.1不受流量控制。网络的基本设置如图:这里我们使用(simple queue)简单队列,首先我们配置RouterOS的IP地址、网关和NAT等基本网络参数:[admin@MikroTik] ip address> print Flags: X – disabled, I – invalid, D – dynamic # ADDRESS NETWORK BROADCAST INTERFACE 0 192.168.0.254/24 192.168.0.0 192.168.0.255 Local 1 10.5.8.104/24 10.5.8.0 10.5.8.255 Public [admin@MikroTik] ip address>路由配置:[admin@MikroTik] ip route> print Flags: X – disabled, A – active, D – dynamic, C – connect, S – static, r – rip, b – bgp, o – ospf # DST-ADDRESS G GATEWAY DISTANCE INTERFACE 0 ADC 10.5.8.0/24 Public 1 ADC 192.168.0.0/24 Local 2 A S 0.0.0.0/0 r 10.5.8.1 Public [admin@MikroTik] ip route>最后不要忘记在ip firewall nat中配置src-nat的伪装或nat,做地址转换操作。为网络192.168.0.0/24的所有客户端添加一个限制下载流量为2Mb上传流量1Mb的简单队列规则。[admin@MikroTik] queue simple> add name=Limit-Local target-address=192.168.0.0/24 max-limit=1000000/2000000 [admin@MikroTik] queue simple> print Flags: X – disabled, I – invalid, D – dynamic 0 name=”Limit-Local” target-addresses=192.168.0.0/24 dst-address=0.0.0.0/0 parent=none priority=8 queue=default/default limit-at=0/0 max-limit=1000000/2000000 total-queue=default [admin@MikroTik] queue simple>max-limit限制了最大可用带宽,从客户的角度看,参数target-addresses定义限制带宽的目标网络或者主机(也可以用逗号分隔开网络段或主机地址)。这里不想让服务器受到我们添加上面规则的任何流量限制,我们可以通过添加一个没有任何限制的规则(max-limit=0/0代表没有任何限制)并把它移到列表的顶部:[admin@MikroTik] queue simple> add name=Server target-addresses=192.168.0.1/32 [admin@MikroTik] queue simple> print Flags: X – disabled, I – invalid, D – dynamic 0 name=”Limit-Local” target-addresses=192.168.0.0/24 dst-address=0.0.0.0/0 parent=none priority=8 queue=default/default limit-at=0/0 max-limit=65536/131072 total-queue=default 1 name=”Server” target-addresses=192.168.0.1/32 dst-address=0.0.0.0/0 parent=none priority=8 queue=default/default limit-at=0/0 max-limit=0/0 total-queue=default使用move命令将第二条规则移动到第一条,即从编号1,移动到编号0,用于queue simple中FIFO的优先顺序(注意:v6.0后FIFO算法被取消,所以不存在move命令)[admin@MikroTik] queue simple> move 1 0 [admin@MikroTik] queue simple> print Flags: X – disabled, I – invalid, D – dynamic 0 name=”Server” target-addresses=192.168.0.1/32 dst-address=0.0.0.0/0 parent=none priority=8 queue=default/default limit-at=0/0 max-limit=0/0 total-queue=default 1 name=”Limit-Local” target-addresses=192.168.0.0/24 dst-address=0.0.0.0/0 parent=none priority=8 queue=default/default limit-at=0/0 max-limit=65536/131072 total-queue=default [admin@MikroTik] queue simple>
2018年10月26日
7,048 阅读
0 评论
0 点赞
2018-10-26
近期Mikrotik-RouterOS的几个漏洞说明
关于WEB 服务的漏洞WikiLeaks 开始使用一个新的代号 Vault 7 作为美国中情局(CIA)的敏感信息披露计划,这次被发布的第一份档案 Year Zero 大小高达 513MB,一共包含 8,761 份相关敏感文档。根据维基解密的阐述,这份包含了大量 0day,恶意软件,病毒,木马以及相关文档的高度机密资料,在美国政府黑客和承包商之间传播,其中有人向维基解密提交了这份绝密档案的部分内容。关于www服务器的漏洞,是从2017年维基解密公布新的代号 Vault 7的文档,据维基解密的阐述,这份包含了大量 0day,恶意软件,病毒,木马以及相关文档的高度机密资料,在美国政府黑客和承包商之间传播,其中有人向维基解密提交了这份绝密档案的部分内容。如果没有防火墙来保护www服务,该漏洞直接影响到RouterOS的webfig网页配置接口,MikroTik修改该漏洞从6.37.5 Bugfix 版本和6.38.5 发行版本,这两个版本都是在2017年3月9日发布该漏洞后来被几个恶意攻击利用,并且影响到之前未修复的RouterOS,以及将www服务端口(TCP 80端口)开放给不信任网络RouterOS系统。1、VPNfilter在2018年5月22日,MikroTik接到Cisco通知,一个恶意工具VPNfilter在多个网络设备中被发现,其中包括三款MikroTik的设备。MikroTik高度重视,该恶意软件通过RouterOS的一个漏洞安装进系统,但在2017年3月,MikroTik已经修补过该漏洞,被攻击的是老版本的RouterOS。因此建议尽快升级RouterOS最新版本,如果有更多关于该漏洞的消息请与MikroTik联系(support@mikrotik.com)。如果你运行的RouterOS版本是在2017年3月之前(6.37.5 bugifx版本和6.38.5发行版本),并且允许不信任网络访问设备的www服务(TCP 80端口)P.S: VPNfilter这个名字只是被发现的恶意软件的代号(更具体地说,是一个假的可执行名称),这个工具的执行方式与VPN隧道没有关联. 从基本的角度看,恶意软件可以嗅探某些类型的流量,并将其发送到某个地方,或者让路由器系统崩溃。2、流氓僵尸工具近期MikroTik官方注意到,一款流氓僵尸网络正在扫描随机的公共IP地址,以找到那些打开Winbox(TCP 8291)和WWW(TCP 80)端口的RouterOS,并利用以上描述的几个漏洞进行恶意攻击。注意Winbox与该漏洞没有关系,只是利用winbox的端口来识别MikroTik的RouterOS设备,当识别到后,会继续尝试通过TCP 80端口攻击如果在最近一年时间未升级过RouterOS,强烈的建议升级你的RouterOS设备,仅需要在winbox中打开/system packages 点击check for updates,选择Download&install,即可升级(确保RouterOS能正常连接网络,并在ip->dns下配置好dns服务器)对于80端口的RouterOS如何确定是否安全?– 如果你在最近一年内升级了RouterOS,是安全的 – 如果你在ip service关闭掉了www服务,是安全的 – 如果你有防火墙配置保护TCP 80端口,确保配置正确,是安全的 – 如果你的Hotspot只对局域网服务,但Webfig不能访问,是安全的 – 如果你的User Manager只对局域网服务,但Webfig不能访问,是安全的. – 如果你修改了Winbox默认端口,你可以幸免不会被扫描到,但并不代表不会被感染 – 如果你关闭Winbox端口,你可以幸免不会被扫描到,但并不代表不会被感染 – 如果”ip service”的 “allowed-from” 参数设置了信任网络,在信任网络内没有被感染设备,是安全的 – 如果Webfig仅局域网可访问,需要小心被局域网感染设备所利用如果保护?1、升级RouterOS最新版本,升级方式:Winbox中打开/system packages 点击check for updates,选择Download&install 升级 2、修改你的RouterOS所有管理员密码 3、根据MikroTik官方指南保护你的设备,下面是官方提供的保护路由器的防火墙规则介绍 https://wiki.mikrotik.com/wiki/Manual:Securing_Your_Router 如果监测?– 升级到6.38.5或更高版本,将会删除掉漏洞文件,修改密码,安全之前提到的方法保护到TCP 80端口 – 如果你升级设备后,仍然能看通过telnet或其他方式非法访问你的路由器,请打开Tool/torch工具,找到攻击源,但你本地网络的其他设备被感染,也请及时做出升级处理和安全措施关于Winbox漏洞RouterOS发现一个新的漏洞,针对RouterOS v6.29以后的版本,从6.29到6.43rc3受到该漏洞影响。这个漏洞与之前的TCP 80端口不同,这个是直接针对Winbox 8291端口漏洞说明:该漏洞通过一个特定的工具连接winbox端口(tcp/8291),并获取系统管理员的数据文件,从而得到RouterOS的登录账号和密码。受影响版本:6.29到6.43rc3受到该漏洞影响,从v6.40.8、v6.42.1和v6.43rc4修复该漏洞,请大家及时更新版本! 升级完成后,及时更改密码升级操作:/system packages 点击check for updates,选择Download&install 升级
2018年10月26日
7,892 阅读
0 评论
0 点赞
2018-10-26
多种环境下的WordPress伪静态配置
IIS7.5完美伪静态规则IIS 环境是 Windows 主机常用的服务器环境,但网上很多规则其实并不完美,很多地方依旧有些无法设置的地方,但这个却可以,新建两个 txt 文件,将下面的代码分别添加到文件中:第一个 web.config<configuration> <system.webServer> <rewrite> <rules> <rule name="ChineseURL" stopProcessing="true"> <match url="^(tag|category)/(.*)$" /> <action type="Rewrite" url="ihuanurl.php"/> </rule> <rule name="wordpress" patternSyntax="Wildcard"> <match url="*" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite> </system.webServer> </configuration>第二个辅助文件 ihuanurl.php:<?php // IIS Mod-Rewrite if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL']; } // IIS Isapi_Rewrite else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL']; } else { // Use ORIG_PATH_INFO if there is no PATH_INFO if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) ) $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice) if ( isset($_SERVER['PATH_INFO']) ) { if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] ) $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO']; else $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']; } // Append the query string if it exists and isn't null if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) { $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; } } require("index.php"); ?>然后保存文件,上传到WordPress站点的根目录即可。IIS6伪静态规则IIS 环境是 Windows 主机常用的服务器环境,新建一个 txt 文件,将下面的代码添加到文件中:[ISAPI_Rewrite] # Defend your computer from some worm attacks #RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 # Protect httpd.ini and httpd.parse.errors files # from accessing through HTTP # Rules to ensure that normal content gets through RewriteRule /tag/(.*) /index\.php\?tag=$1 RewriteRule /software-files/(.*) /software-files/$1 [L] RewriteRule /images/(.*) /images/$1 [L] RewriteRule /sitemap.xml /sitemap.xml [L] RewriteRule /favicon.ico /favicon.ico [L] # For file-based wordpress content (i.e. theme), admin, etc. RewriteRule /wp-(.*) /wp-$1 [L] # For normal wordpress content, via index.php RewriteRule ^/$ /index.php [L] RewriteRule /(.*) /index.php/$1 [L]然后另存为 httpd.ini 文件,上传到WordPress站点的根目录即可。Apache伪静态规则Apache是 Linux 主机下常见的环境,现在一般的 Linux 虚拟主机都采用这种环境。新建一个 htaccess.txt 文件,添加下面的代码:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>然后上传到 WordPress 站点的根目录,重命名为 .htaccess 即可(在win下是不可能这样命名的)Nginx伪静态规则Nginx环境一般是Linux 主机 VPS或服务器用户用的比较多,这些用户一般都会自己配置Nginx,或者有专门的人帮你配置,打开 nginx.conf 或者某个站点的配置环境,比如 wpdaxue.com.conf(不同人配置的不一样),在 server { } 大括号里面添加下面的代码:location / { if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } }保存,重启 Nginx 即可。
2018年10月26日
5,509 阅读
1 评论
0 点赞
2018-10-23
VMware ESXI 迁移至KVM
1.1.1 ESXI将虚拟机导出 导出ova模板 将导出的ova模板导入到KVM环境中。1.1.2 配置KVM环境安装所需要的组件[root@clsn7 ~]# yum install libvirt* virt-* qemu-kvm* -y配置桥接网卡[root@clsn7 ~]# virsh iface-bridge eth1 br1 使用附加设备 br1 生成桥接 eth1 失败 已启动桥接接口 br11.1.3 导入虚拟机启动kvm管理程序,并设置开机自启动[root@clsn7 ~]# systemctl start libvirtd.service [root@clsn7 ~]# systemctl enable libvirtd.service创建虚拟机存放目录[root@clsn7 ~]# virt-v2v -i ova centos-dev-test01-v2v.ova -o local -os /vmhost/dev/dev-test01 -of qcow2 [ 0.0] Opening the source -i ova centos-dev-test01-v2v.ova virt-v2v: warning: making OVA directory public readable to work around libvirt bug https://bugzilla.redhat.com/1045069 [ 23.1] Creating an overlay to protect the source from being modified [ 23.4] Initializing the target -o local -os /vmhost/dev/dev-test01 [ 23.4] Opening the overlay [ 41.4] Inspecting the overlay [ 57.5] Checking for sufficient free disk space in the guest [ 57.5] Estimating space required on target for each disk [ 57.5] Converting CentOS release 6.9 (Final) to run on KVM virt-v2v: This guest has virtio drivers installed. [ 178.6] Mapping filesystem data to avoid copying unused and blank areas [ 178.9] Closing the overlay [ 179.4] Checking if the guest needs BIOS or UEFI to boot [ 179.4] Assigning disks to buses [ 179.4] Copying disk 1/1 to /vmhost/dev/dev-test01/centos-dev-test01-v2v-sda (qcow2) (100.00/100%) [ 216.1] Creating output metadata [ 216.1] Finishing off 导入完成后在 /vmhost/dev/dev-test01 目录下会生成文件 [root@clsn7 dev-test01]# pwd /vmhost/dev/dev-test01 [root@clsn7 dev-test01]# ls centos-dev-test01-v2v-sda centos-dev-test01-v2v.xml修改网卡配置修改网卡source network 为桥接修改网卡使用virtio[root@clsn7 dev-test01]# cat centos-dev-test01-v2v.xml <?xml version='1.0' encoding='utf-8'?> <domain type='kvm'> <!-- generated by virt-v2v 1.36.3rhel=7,release=6.el7_4.3,libvirt --> <name>centos-dev-test01-v2v</name> <memory unit='KiB'>524288</memory> <currentMemory unit='KiB'>524288</currentMemory> <vcpu>1</vcpu> <features> <acpi/> <apic/> </features> <os> <type arch='x86_64'>hvm</type> </os> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/vmhost/dev/dev-test01/centos-dev-test01-v2v-sda'/> <target dev='vda' bus='virtio'/> </disk> <disk device='cdrom' type='file'> <driver name='qemu' type='raw'/> <target dev='hda' bus='ide'/> </disk> <disk device='floppy' type='file'> <driver name='qemu' type='raw'/> <target dev='fda'/> </disk> <interface type='bridge'> <source bridge='br1'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <video> <model type='qxl' ram='65536' heads='1'/> </video> <graphics type='vnc' autoport='yes' port='-1'/> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <console type='pty'/> </devices> </domain>1.1.4 启动虚拟机导入主机[root@clsn7 dev-test01]# virsh define centos-dev-test01-v2v.xml 定义域 centos-dev-test01-v2v(从 centos-dev-test01-v2v.xml)查看主机列表[root@clsn7 dev-test01]# virsh list --all Id 名称 状态 ---------------------------------------------------- - centos-dev-test01-v2v 关闭启动主机[root@clsn7 dev-test01]# virsh start centos-dev-test01-v2v 域 centos-dev-test01-v2v 已开始1.1.5 测试可用性登陆迁移后的虚拟机测试[root@clsn7 ~]# ssh root@192.168.19.123 The authenticity of host '192.168.19.123 (192.168.19.123)' can't be established. RSA key fingerprint is SHA256:iRmghFzgRIJy5+v8p4lqi8DyUG8F0hXR/qNdDZ2J6RY. RSA key fingerprint is MD5:37:b8:56:3b:b7:85:fa:cb:d9:55:a7:44:d5:de:f8:d9. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.19.123' (RSA) to the list of known hosts. root@192.168.19.123's password: Last login: Mon Mar 5 10:30:02 2018 from 192.168.19.9 [root@dev-test01 ~]# hostname -I 192.168.19.123设置虚拟机开机自启动。[root@clsn7 ~]# virsh autostart centos-dev-test01-v2v 域 centos-dev-test01-v2v标记为自动开始至此第一台机器的迁移完成,后续按照相同的方式将其他的虚拟机进行迁移即可。.
2018年10月23日
9,325 阅读
1 评论
0 点赞
2018-10-23
服务做两台Exchange CAS的集群配置完NLB后发现同网段访问正常跨网段不通
问题描述:微软的NLB(网络负载均衡)服务做两台Exchange CAS(Client Access Server)的集群,配置完NLB后发现同网段访问正常,跨网段都无法访问,甚至在NLB网段的网关上都无法访问。拓扑如下:故障截图:处理过程:1.首先尝试从网关S7700上ping NLB虚地址10.16.68.254,发现不通。同网段都不通,最常见的原因就是没有对应的ARP记录。2.然后在网关上查看10.16.68.254的ARP记录,发现果然没有学习到。3.在同网段某台服务器上通过arp –a查看10.16.68.254的ARP记录,发现是组播MAC 03bf-xxxx-xxxx。一般在设备没有启用组播服务或者IGMP监听的情况下,网关设备是不处理组播ARP对应的报文的。根因根据MAC地址的规范,最高位是1时代表组播地址,0是为单播地址。所以0x03开头的地址为组播地址,网络设备在没有启用组播和IGMP侦听的情况下,网关设备不处理组播ARP对应的报文的。由于缺少二层ARP解析,造成三层无法ping通。解决方案通过在网关上手工静态绑定ARP记录。建议与总结根据MAC地址的规范,0x01,03,05,07开头的都是组播MAC地址,而我们最熟悉的组播MAC地址为01-00-5e开头,由此可能会造成思维定式,认为只有01-00-5e开头才是组播MAC。 有
2018年10月23日
9,857 阅读
5 评论
1 点赞
2018-10-23
华为BFD功能简单配置
BFD:Bidirectional Forwarding Detection,双向转发检查作用:毫秒级故障检查,通常结合三层协议(如静态路由、vrrp、ospf、BGP等)实现链路故障快速检查。bfd 全局使能BFDbfd 1 bind peer-ip 12.1.1.2 source-ip 12.1.1.1 配置BFD组1 discriminator local 1 本地标识1 标识需要互为对称 discriminator remote 2 远端标识2 commit 确认提交 静态路由调用BFDip route-static 0.0.0.0 0.0.0.0 23.1.1.2 track bfd-session 1OSPF调用BFDospf 1 bfd all-interfaces enable .
2018年10月23日
10,405 阅读
2 评论
0 点赞
2018-10-07
wordpress获取各类页面链接的函数总结
在WordPress项目开发过程,很可能需要获取WordPress 各类页面的链接,包括首页、文章页、Page页面、存档页面等等,今天倡萌就简单分享下获取 WordPress 各类页面的链接的方法。获取文章或页面链接直接输出文章或页面的链接: <?php the_permalink(); ?> 返回文章或页面的链接,以供调用: get_permalink(); 可以使用 echo 输出,结果和直接使用 the_permalink() 一样: <?php echo get_permalink(); ?> 获取存档页面链接 function get_current_archive_link( $paged = true ) { $link = false; if ( is_front_page() ) { $link = home_url( '/' ); } else if ( is_home() && "page" == get_option('show_on_front') ) { $link = get_permalink( get_option( 'page_for_posts' ) ); } else if ( is_tax() || is_tag() || is_category() ) { $term = get_queried_object(); $link = get_term_link( $term, $term->taxonomy ); } else if ( is_post_type_archive() ) { $link = get_post_type_archive_link( get_post_type() ); } else if ( is_author() ) { $link = get_author_posts_url( get_query_var('author'), get_query_var('author_name') ); } else if ( is_archive() ) { if ( is_date() ) { if ( is_day() ) { $link = get_day_link( get_query_var('year'), get_query_var('monthnum'), get_query_var('day') ); } else if ( is_month() ) { $link = get_month_link( get_query_var('year'), get_query_var('monthnum') ); } else if ( is_year() ) { $link = get_year_link( get_query_var('year') ); } } } if ( $paged && $link && get_query_var('paged') > 1 ) { global $wp_rewrite; if ( !$wp_rewrite->using_permalinks() ) { $link = add_query_arg( 'paged', get_query_var('paged'), $link ); } else { $link = user_trailingslashit( trailingslashit( $link ) . trailingslashit( $wp_rewrite->pagination_base ) . get_query_var('paged'), 'archive' ); } } return $link; } 该函数可以输出首页、分类法(自定义分类法、标签、分类)、自定义文章类型的存档页面、作者存档页面、日期存档页面 的链接,包含分页。获取当前页面链接如果你不想判断页面类型,只想输出当前页面的链接,可以使用下面的代码: <?php global $wp; $current_url = home_url(add_query_arg(array(),$wp->request)); echo $current_url; ?> 好了,暂且说到这里。如果大家有什么补充,欢迎留言分享,谢谢。参考资料:http://wordpress.stackexchange.com/questions/29512/permalink-for-category-pages-and-postshttp://stephenharris.info/how-to-get-the-current-url-in-wordpress/
2018年10月07日
5,432 阅读
1 评论
0 点赞
2018-10-07
wordpress各种获取url函数
站点路径相关函数home_url()返回站点路径,相当于后台设置->常规中的”站点地址(URL)”。$url = home_url();echo $url;//输出: http://www.itgol.cn $url = home_url('/images/');echo $url;//输出:http://www.itgol.cn/images/site_url()如果WordPress安装在域名根目录下,则该函数与home_url()相同。如果WordPress安装在子目录下,例如http://www.itgol.cn/,则site_url()返回WordPress实际安装地址,相当于后台->设置->常规中的“WordPress 地址(URL)”。$url = site_url();echo $url;//假设WordPress安装在http://www.itgol.cn下//输出:http://www.itgol.cnadmin_url()返回后台地址,传递参数后也可返回后台menu的地址$url = admin_url();echo $url;//输出:http://www.itgol.cn/wp-admin/content_url()返回实际的wp-content目录,如果是默认安装,且装在根目录下,则如下所示$url = content_url();echo $url;//输出:http://www.itgol.cn/wp-content如果在wp-config.php中改变了wp-content目录的位置,则该函数会返回正确地址,例如wp-config.php中如下定义define('WP_CONTENT_DIR','/home/user/public_html/cdn');define('WP_CONTENT_URL','http://sola-cdn.me');则content_url()的返回值为http://sola-cdn.meincludes_url()返回当前WordPress站点存放核心文件的目录wp-includes的地址,可以带一个$path作为参数。$url = includes_url( '/js/');echo $url;//输出:http://www.itgol.cn/wp-includes/js/wp_upload_dir()返回WordPress上传目录的地址,是一个数组,包含一系列与上传地址相关的信息。<?php $upload_dir = wp_upload_dir(); ?>提供如下信息给你 ‘path’ – 上传目录的服务器绝对路径,通常以反斜杠(/)开头 ‘url’ – 上传目录的完整URL ‘subdir’ – 子目录名称,通常是以年/月形式组织的目录地址,例如/2012/07 ‘basedir’ – 上传目录的服务器绝对路径,不包含子目录 ‘baseurl’ – 上传目录的完整URL,不包含子目录 ‘error’ – 报错信息. 例如$upload_dir = wp_upload_dir();echo $upload_dir['baseurl'];//输出:http://www.itgol.cn/wp-content/uploads 主题路径相关函数get_theme_root_uri()获取存放主题的目录URIecho get_theme_root_uri();//输出:http://www.itgol.cn/wp-content/themesget_theme_root()获取存放主题的目录的服务器绝对路径echo get_theme_root();//输出:<tt>/home/user/public_html/wp-content/themes</tt>get_theme_roots()获取主题目录的目录名称,如果你的主题目录是/wp-content/themes,则echo get_theme_roots();//输出:/themesget_stylesheet_directory()获取当前启用的主题目录的服务器绝对路径,例如/home/user/public_html/wp-content/themes/twentyeleven可以用来include文件,例如<?phpinclude( get_stylesheet_directory() . ‘/includes/myfile.php’); ?>get_stylesheet_directory_uri()获取当前启用的主题目录的URI,例如echo get_stylesheet_directory_uri();//输出:http://www.itgol.cn/wp-content/themes/twentyeleven可以使用在需要主题目录URI的场合,例如图片<img src="<?php echo get_stylesheet_directory_uri() ?>/images/aternus.png" alt="wordpress各种获取url函数总结" alt="" title="" width="" height="" />get_template_directory_uri()如果当前启用的主题是一个child theme,该函数返回parent theme的主题目录URI,用法与get_stylesheet_directory_uri()类似。get_template_directory()如果当前启用的主题是一个child theme,该函数返回parent theme的主题目录的服务器绝对路径,用法与get_stylesheet_directory()类似。get_template()获取当前启用主题的主题目录名称,例如现在启用的主题为twentyeleven,则echo get_stylesheet();//输出:twentyelevenget_stylesheet()获取当前启用主题的主题目录名称,与get_template()的区别是,如果用了child theme,则返回child theme的目录名称。 插件路径相关函数plugins_url()获取当前插件的目录的URI,例如一个插件位于/wp-content/plugins/myplugin下,该目录下放有插件的主文件名为myplugin.php,在myplugin.php中执行下面的代码,结果如下echo plugins_url();//输出:http://www.itgol.cn/wp-content/plugins echo plugins_url('',__FILE__);//输出:http://www.itgol.cn/wp-content/plugins/myplugin echo plugins_url('js/myscript.js',__FILE__);//输出:http://www.itgol.cn/wp-content/plugins/myplugin/js/myscript.jsplugin_dir_url()返回当前插件的目录URI,例如echo plugin_dir_url(__FILE__ );//输出:http://www.itgol.cn/wp-content/plugins/myplugin/注意结尾有反斜杠。plugin_dir_path()返回当前插件目录的服务器绝对路径,例如echo plugin_dir_path(__FILE__ );//输出:/home/user/public_html/wp-content/plugins/myplugin/可以用来引用文件,例如<?phpdefine('MYPLUGINNAME_PATH', plugin_dir_path(__FILE__) );require MYPLUGINNAME_PATH . 'includes/class-metabox.php';require MYPLUGINNAME_PATH . 'includes/class-widget.php';?>plugin_basename()返回调用该函数的插件文件名称(包含插件路径)例如在插件myplugin下的myplugin.php文件中调用该函数,结果如下echo plugin_basename(__FILE__);//输出:myplugin/myplugin.php如果在myplugin/include/test.php文件中调用(test.php通过include引用到myplugin.php中),结果如下echo plugin_basename(__FILE__);//输出:myplugin/include/test.php 路径相关常量WordPress中还有一组用define定义的常量代表路径。WP_CONTENT_DIRwp-content目录的服务器绝对路径,例如/home/user/public_html/wp-contentWP_CONTENT_URLwp-content目录的URI地址,例如http://www.itgol.cn/wp-contentWP_PLUGIN_DIR插件目录的服务器绝对路径,例如/home/user/public_html/wp-content/pluginsWP_PLUGIN_URL插件目录的URI地址,例如http://www.itgol.cn/wp-content/pluginsTEMPLATEPATH当前启用主题目录的服务器绝对路径,相当于get_template_directory()例如/home/user/public_html/wp-content/themes/twentyelevenSTYLESHEETPATH当前启用主题目录的服务器绝对路径,相当于get_stylesheet_directory(),与TEMPLATEPATH的区别在于如果使用child theme,该常量指向child theme目录。
2018年10月07日
5,050 阅读
0 评论
0 点赞
1
2
3
4