首页
关于
留言
Search
1
红米 AX3000 (AX6) 路由器解锁 SSH 教程
6,676 阅读
2
网盘挂载程序sharelist美化教程
4,216 阅读
3
小米路由器 AX3600 开启SSH教程,官方固件即可安装 ShellClash开启科学上网
2,168 阅读
4
Oracle 甲骨文 ARM VPS 自动抢购脚本
1,819 阅读
5
编译带PassWall和SSR-plus插件的Openwrt系统
1,393 阅读
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
登录
Search
标签搜索
Java
Linux
Mysql
IDEA
Debian
Docker
Springboot
CentOS
Cloudflare
Maven
JavaScript
SQL
Wordpress
宝塔
Nginx
Windows
MacBook
JS
CSS
Openwrt
William
累计撰写
144
篇文章
累计收到
702
条评论
首页
栏目
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
页面
关于
留言
搜索到
49
篇与
的结果
2021-06-23
轻松搭建 FRP 内网穿透并设置开机自启动方法
1.它是什么?干嘛用的?先假设这样一个场景,在仅有的IPV4的环境下,你身处外面使用手机数据流量,想访问家里的路由器界面(如192.168.1.1),但奈何路由设备仅仅存与家庭局域网中,无法访问,怎么让路由器管理界面在世界各地都可以访问呢?Frp内网穿透工具就是为了解决这样一个问题的,可以在有网络的任何地方访问到你家庭的设备。家里头无法在外面访问的网络,我们以下称为内网公网:与内网相反,为什么我们都可以在任何地方访问百度?因为百度的服务器放在了一个大家都可以访问到底网络,公共使用的网络--公网2. Frp工具是如何做到的?简单的说转发,它需要一台在公网设备的帮助转发;借助下面的图就懂了Frp服务器部署在公网中,它是一个中间商,你想发数据给路由,先发给Frp服务器,Frp再转发给路由,路由发你的数据也是如此 IP:网络地址,字面意思,网络的地址,有地址才找到一个地方域名: 方便访问,为什么我们输入"baidu.com"就能访问百度呢?为什么大家不直接通过百度IP访问呢?不是所有人都能记住那一串数字的{IP地址:xxx.xxx.xxx.xxx}3.部署所需一台具有公网IP的设备(服务器)一个属于你的域名4.进行部署1、根据你的服务器或设备类型选择对应 frp 压缩包FRP Github ReleaseCDN加速下载 windows 64位:XXX_windows_amd64.zip windows 32位:XXX_windows_386.zip linux 64位:XXX_linux_amd64.tar.gz linux 32位:XXX_linux_386.tar.gz 2、然后使用ftp或sftp或者scp等方式,将frp压缩包上传到你的服务器中(也可以直接在服务器使用wget进行下载)3、对frp压缩包进行解压,里面会有几个文件其中包括有frpc(客户端),frpc.ini(客户端配置),frps(服务器),frps.ini(服务器配置)假设上传到了服务器的root路径下,对frp文件夹进行权限设置chmod 777 -R /root/frp4、配置frp服务器参数使用vim编辑: vim frps.ini[common] bind_addr = 0.0.0.0 bind_port = 服务器监听端口(10000) bind_udp_port = UDP端口(10001) kcp_bind_port = KCP端口(10002) vhost_http_port = 80 vhost_https_port = 443 subdomain_host = 你的域名(如:yourname.xxx) dashboard_addr = 0.0.0.0 dashboard_port = 后台管理端口(11000) dashboard_user = 管理用户名(root) dashboard_pwd = 管理密码(你自己填一个) token = 链接密钥(你自己想一个,别照抄啊!如:ABCDEFG) max_pool_count = 100 log_file = ./frps.log log_level = info log_max_days = 3 tcp_mux = true如果你的服务器已经部署了网站那些,也就是80跟443端口已经被占用,那么 vhost_http_port 和 vhost_https_port 这两个端口也需要改变。总之,frps.ini 中的任何端口不能跟 其他frp 或 其他程序 冲突,否则服务启动失败5.启动frp所有配置完成后,正常使用frp的话,肯定是要让frp在后台运行的,以下有几种后台启动方式nohub命令:# 在root根目录下执行 nohup /root/frp/frps -c /root/frp/frps.iniscreen命令:# 在frp目录下执行 screen -S frp ./frps -c ./frps.inirc.local修改/etc/rc.local文件,加入启动命令/root/frp/frps -c /root/frp/frps.ini &systemctl创建并编辑 frps.service 文件,执行代码:vim /lib/systemd/system/frps.service然后在该文件输入以下代码,并保存退出:[Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s ExecStart=/存放frp的目录/frps -c /存放frp的目录/frps.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target「操控命令」启动服务 systemctl start frps开机自启动 systemctl enable frps重启服务 systemctl restart frps停止服务 systemctl stop frps查看日志与状态 systemctl status frps客户端自启动与服务端相同,只需要创建 frpc.service 并把 ExecStart 路径改为存放frpc的路径,操控命令将 frps 改为 frpc不同的系统自启动会不太一样,ubuntu,debian,centOS,windows等等,可自行百度Openwrt进入 /etc/init.d 文件夹中,创建一个名为 frp 的文件,写入以下代码:#!/bin/sh /etc/rc.common START=90 STOP=90 SERVICE=frpc USE_PROCD=1 PROC="/存放frp的目录/frps -c /存放frp的目录/frps.ini" start_service(){ procd_open_instance procd_set_param command $PROC procd_set_param respawn procd_close_instance } service_triggers(){ procd_add_reload_trigger "rpcd" }6.解析一个域名到服务器比如解析了个 frp.example.com 到你的服务器7.在浏览器中访问frp管理后台在自己电脑打开浏览器,输入frp后台管理地址,比如本例子中:域名是:frp.example.com面板端口:11000那浏览器地址栏就写 frp.example.com:11000 域名后面的端口就是frps.ini中的dashboard_port。用户名就是dashboard_user,密码是dashboard_pwd如果frps.ini中没有配置 subdomain_host 那么就使用 服务器IP:FRP面板端口 形式访问,客户端配置时也使用服务器IP如果访问frp管理后台无法打开,那就是你的服务没启动或者端口没有开放。重新检查frps.ini文件,并确定该文件中的bind_port、dashboard_port在你的防火墙(服务器安全组)中放行了8.客户端连接服务器这个客户端是你要被控制的设备,下载frp程序,下载回来后,frps相关的可以删掉了,只有frpc才是客户端使用的编辑 frpc.ini[common] server_addr = frp.example.com(刚刚设置的域名解析) server_port = 服务器监听端口(10000) / bind_port token = frp服务器中你设置的token user = 客户端名称(可以随便填一个英文字符串,给这个客户端命名) [web] //代理内网的网站 type = http //类型http local_ip = 127.0.0.1 //内网设备IP local_port = 80 //端口 subdomain = http //子域名:如此时填入的是http,则浏览器输入(http.yourname.xxx)就会访问到此设备 [ssh] type = tcp //内网TCP代理 local_ip = 127.0.0.1 //内网设备IP local_port = 22 //要代理的端口 remote_port = 11022 //代理所生成的端口,远程ssh链接需要指定为这个端口9.被控设备为Windows电脑如果要被控制的设备是Windows,比如公司的电脑,下载frp相对应的压缩包,解压后将文件夹名字改为frp,删掉frps相关文件,只留frpc文件,用记事本打开frpc.ini进行配置[common] server_addr = 你的服务器域名或者IP server_port = 服务器监听端口(10000) / bind_port token = frp服务器中你设置的token user = 给本次客户端取一个名(全英文名) tls_enable=true [windows] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 33890(映射端口,可随便设置,但不能和其他frp客户端冲突,并且服务器防火墙要放行这个端口)在frp文件夹内,按住shift键盘并右键鼠标,点击右键菜单栏中的powershell,输入命令:./frpc.exe -c frpc.ini如果你看到start proxy success的字样,则表示成功了,如果没有,则表示frpc.ini配置有问题按ctrl+C停止程序运行,现在程序可以正常运行,但我们需要将其设置开机自启动需要一个叫winsw的工具,Github下载 CDN加速下载下载后放到frp的文件夹中,并改名为winsw.exe,并且新建一个文件winsw.xml用记事本打卡winsw.xml,填入下面内容,需要修改的是要运行的frp程序绝对路径,根据你的实际路径填写<service> <!-- 该服务的唯一标识 --> <id>frp</id> <!-- 该服务的名称 --> <name>frp_0.37.0_windows_amd64</name> <!-- 该服务的描述 --> <description>frpc客户端 - 实现内网穿透</description> <!-- 要运行的程序绝对路径,根据你的实际路径填写 --> <executable>C:\frp\frpc.exe</executable> <!-- 携带的参数 --> <arguments>-c frpc.ini</arguments> <!-- 第一次启动失败 60秒重启 --> <onfailure action="restart" delay="60 sec"/> <!-- 第二次启动失败 120秒后重启 --> <onfailure action="restart" delay="120 sec"/> <!-- 日志模式 --> <logmode>append</logmode> <!-- 指定日志文件目录(相对于executable配置的路径) --> <logpath>logs</logpath> </service>在frp文件夹中,按住shift并点击鼠标右键,可以在右键菜单栏中看到powershell,输入.\winsw.exe install,如下图如果提示下面,则成功!成功!重启电脑(被控制设备)后用手机端试试能不能远程桌面吧下载Remote Desktop安装,PC name(电脑名)那里输入FRP服务器域名/IP:端口(上面的remote_port = 33890)比如:frp.example.com:33890
2021年06月23日
253 阅读
0 评论
0 点赞
2021-06-03
CentOS 7 部署环境安装 JDK+Nginx+MySQL+Redis+Tomcat+Docker
安装JDK下面两种方式都可以安装,第一个是安装JRE,另一个是安装JDK。JRE 和 JDK 有什么区别?JRE(Java Runtime Environment, Java运行环境)是提供给 Java 程序运行的最小环境,换句话说,没有 JRE,JDK 程序就无法运行。JDK(Java Development Kit,Java开发工具包)是提供给 Java 程序员的开发工具包,是整个 Java 开发的核心。换句话说,没有 JDK,Java 程序员就无法使用 Java 语言编写 Java 程序。也就是说,JDK 是用于开发 Java 程序的最小环境。JVM(Java Virtual Machine, Java虚拟机)是JRE的一部分。JVM主要工作是解释自己的指令集(即字节码)并映射到本地的CPU指令集和OS的系统调用。Java语言是跨平台运行的,不同的操作系统会有不同的JVM映射规则,使之与操作系统无关,完成跨平台性。1、安装 OpenJDK 8 JREsudo yum install java-1.8.0-openjdk2、安装 OpenJDK 8 JDKsudo yum install java-1.8.0-openjdk-devel验证是否安装成功java -version // 或 javac -version查看Java路径update-alternatives --config java把 Java 添加到环境变量中编辑 .bash_profile 文件vim .bash_profile将光标移到文件最后,按 a 输入,填写路径:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar填写完,让修改生效source .bash_profile查看修改结果:echo $JAVA_HOME // 输出结果 /usr/lib/jvm/java-1.8.0-openjdk另一种方式,下载JDK手动安装下载JDK,上传到服务器或者服务器直接下载 jdk:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html mkdir /usr/local/java/ tar -zxvf jdk-8u291-linux-x64-demos.tar.gz -C /usr/local/java/ vi /etc/profile export JAVA_HOME=/usr/local/java/jdk-8u291 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=$PATH:${JAVA_HOME}/bin source /etc/profile安装 MySQL使用yum安装mysql5.7wget http://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm # mysql8 # wget http://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm #如果直接安装可能会报错,所以这一步看需要 yum module disable mysql # 安装mysql server yum -y install mysql-community-server # 启动mysql systemctl start mysqld.service # 查看mysql状态 systemctl status mysqld.service # 查看mysql初始密码 grep "password" /var/log/mysqld.log # 登录mysql mysql -u root -p # 更改密码,有字符要求 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; # 开启远程连接(通常不建议,因为不安全) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; # 刷新权限 flush privileges;安装Nginx安装编译环境sudo yum install -y gcc-c++ sudo yum install -y pcre pcre-devel sudo yum install -y zlib zlib-devel sudo yum install -y openssl openssl-devel添加Nginx仓库sudo yum install epel-release执行安装sudo yum install nginx启动Nginxsudo systemctl start nginx设置开机自启动sudo systemctl enable nginx安装Redis安装前更新软件源yum update -y下载Redis源码wget https://download.redis.io/releases/redis-6.2.5.tar.gz安装C++编译环境# 安装c++ yum install gcc-c++ -y # 查看版本 gcc -v编译安装tar -zxvf redis-6.2.5.tar.gz cd redis-6.2.5 make # 默认安装,通常这个就够了,安装在 /usr/local/bin make install # 自定义安装,PREFIX 是你想要安装的路径 # make install PREFIX=/usr/local/redis设置开机自启动# 进入到刚开始解压的redis-6.2.5目录中,把配置文件复制到安装目录中 cp redis.conf /usr/local/bin/ cd usr/local/bin # 编辑配置文件,把 daemonized 的值从 no 改为 yes,并保存,退出 vim redis.conf cd /etc/systemd/system # 创建自启动服务空白文件 touch redis.service编辑 redis.service,写入以下代码[Unit] #服务描述 Description=Redis Server Manager #服务类别 After=syslog.target network.target [Service] #后台运行的形式 Type=forking #服务命令。 路径根据自己实际情况填写,默认安装的话是下面这个路径 ExecStart=/usr/local/bin/redis-server /usr/local/bin/redis.conf #给服务分配独立的临时空间 PrivateTmp=true [Install] #运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3 WantedBy=multi-user.target常用命令#启动redis服务 systemctl start redis.service #设置redis开机自启动 systemctl enable redis.service #停止redis开机自启动 systemctl disable redis.service #查看redis服务当前状态 systemctl status redis.service #重新启动redis服务 systemctl restart redis.service #查看所有已启动的服务 systemctl list-units --type=service(可选)开启远程连接firewall-cmd --zone=public --add-port=6379/tcp --permanent firewall-cmd --reload修改 redis.conf 配置文件关闭 protected-mode 模式,即将其值设置成 no, 此时外部网络可以直接访问将 bind 127.0.0.1 修改成 bind * -::* 。 或者直接将bind这一行注释掉设置密码,在 protected-mode yes 下面添加一行 requirepass password使用redis-cli连接其他服务器redis进入到 /usr/local/bin 目录,执行以下代码./redis-cli -h 你服务器的ip -p 6379 -a 你的密码安装Tomcat下载Tomcat安装包官方Tomcat8下载:https://tomcat.apache.org/download-80.cgi# 进入到你想安装的目录,比如 /usr/local/tomcat wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.66/bin/apache-tomcat-8.5.66.tar.gz安装tar -zxvf apache-tomcat-8.5.47.tar.gz启动进入到tomcat目录,比如上面说的目录cd /usr/local/tomcat/apache-tomcat-8.5.47/bin ./startup.sh查看是否启动成功ps -ef | grep tomcat设置Tomcat开机自启动进入到 tomcat 的 bin 目录,就是启动那一步的 bin 目录,创建一个脚本 setenv.sh# 设置Tomcat的PID文件 CATALINA_PID="$CATALINA_BASE/tomcat.pid" # 添加JVM选项 JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"在/usr/local/tomcat/apache-tomcat-8.5.47/bin/catalina.sh文件开头添加JAVA_HOME和JRE_HOME,其中 /usr/lib/jvm/java-1.8.0-openjdk 为 jdk 的安装目录export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk/jre如果在catalina.sh不配置JAVA_HOME和JRE_HOME就会报错误在 /usr/lib/systemd/system 路径下添加 tomcat.service 文件,内容如下:[Unit] Description=Tomcat After=network.target remote-fs.target nss-lookup.target [Service] Type=forking TimeoutSec=0 PIDFile=/usr/local/tomcat/apache-tomcat-8.5.47/tomcat.pid ExecStart=/usr/local/tomcat/apache-tomcat-8.5.47/bin/startup.sh ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.targetservice 文件修改后需要调用systemctl daemon-reload命令重新加载配置TimeoutSec=0的目的是让开机启动不处理tomcat启动超时,保证tomcat耗时过长时不会被系统terminating,如果不配置可能出现错误把Tomcat加入自启动列表systemctl enable tomcat.service安装Dockeryum install -y yum-utils device-mapper-persistent-dat yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce
2021年06月03日
122 阅读
0 评论
0 点赞
2021-03-26
B2+cloudflare+ShareX,实现无成本图床和便捷上传
首先要准备好3个条件一个cloudflare账号 https://dash.cloudflare.com/一个B2账号 https://www.backblaze.com/b2/cloud-storage.htmlWindows软件ShareX步骤1、注册B2账号,点击进入B2 Cloud Storage,点击Buckets创建一个BUcket,设为public,并上传一个图片,记录下下图要用的域名2、点击App keys,添加一个新的key,bucket就选你刚创建的那个,记录下你的密钥,之后要在ShareX中用3、打开cf,cname一下上图要记的域名,小云朵点亮4、加一条页面缓存规则.5、创建一个workers,粘贴下列代码,记得b2domain和bucket的值改成自己的'use strict'; const b2Domain = 'img.domain.com'; // configure this as per instructions above const b2Bucket = 'bucket-name'; // configure this as per instructions above const b2UrlPath = `/file/${b2Bucket}/`; addEventListener('fetch', event => { return event.respondWith(fileReq(event)); }); // define the file extensions we wish to add basic access control headers to const corsFileTypes = ['png', 'jpg', 'gif', 'jpeg', 'webp']; // backblaze returns some additional headers that are useful for debugging, but unnecessary in production. We can remove these to save some size const removeHeaders = [ 'x-bz-content-sha1', 'x-bz-file-id', 'x-bz-file-name', 'x-bz-info-src_last_modified_millis', 'X-Bz-Upload-Timestamp', 'Expires' ]; const expiration = 31536000; // override browser cache for images - 1 year // define a function we can re-use to fix headers const fixHeaders = function(url, status, headers){ let newHdrs = new Headers(headers); // add basic cors headers for images if(corsFileTypes.includes(url.pathname.split('.').pop())){ newHdrs.set('Access-Control-Allow-Origin', '*'); } // override browser cache for files when 200 if(status === 200){ newHdrs.set('Cache-Control', "public, max-age=" + expiration); }else{ // only cache other things for 5 minutes newHdrs.set('Cache-Control', 'public, max-age=300'); } // set ETag for efficient caching where possible const ETag = newHdrs.get('x-bz-content-sha1') || newHdrs.get('x-bz-info-src_last_modified_millis') || newHdrs.get('x-bz-file-id'); if(ETag){ newHdrs.set('ETag', ETag); } // remove unnecessary headers removeHeaders.forEach(header => { newHdrs.delete(header); }); return newHdrs; }; async function fileReq(event){ const cache = caches.default; // Cloudflare edge caching const url = new URL(event.request.url); if(url.host === b2Domain && !url.pathname.startsWith(b2UrlPath)){ url.pathname = b2UrlPath + url.pathname; } let response = await cache.match(url); // try to find match for this request in the edge cache if(response){ // use cache found on Cloudflare edge. Set X-Worker-Cache header for helpful debug let newHdrs = fixHeaders(url, response.status, response.headers); newHdrs.set('X-Worker-Cache', "true"); return new Response(response.body, { status: response.status, statusText: response.statusText, headers: newHdrs }); } // no cache, fetch image, apply Cloudflare lossless compression response = await fetch(url, {cf: {polish: "lossless"}}); let newHdrs = fixHeaders(url, response.status, response.headers); if(response.status === 200){ response = new Response(response.body, { status: response.status, statusText: response.statusText, headers: newHdrs }); }else{ response = new Response('File not found!', { status: 404 }) } event.waitUntil(cache.put(url, response.clone())); return response; }6、workers里添加路由,使访问你的域名时,先走workers访问一下你的图片文件比如说一开始是https://f000.backblazeb2.com/file/backblaze1489498/wallhaven-md2x8m.jpg现在用https://dlcu.cf/wallhaven-md2x8m.jpg就可以访问了7、配置ShareX这个感觉没啥好说的,主页面–目标–上传目标设置–backblaze b2,填上就行了文章来自网络
2021年03月26日
21 阅读
0 评论
0 点赞
2021-03-15
Linux系统screen状态为Attached连接不上解决方法
问题场景:使用 screen -S screen-name 进入screen后,执行命令过程中,因为网络问题或其他原因中断。然后关掉terminal后,尝试重新连接 screen -r id 时,会提示没有相应screen-id匹配。解决办法其实不是没有相应 screen,而是该 screen-id 被上一个登录给占用了。这时候需要将上一个登录的 screen 用户给踢掉screen -r screen-id 改为 screen -D -r screen-id
2021年03月15日
34 阅读
0 评论
0 点赞
2021-03-02
给WordPress子比zibll主题添加页面加载时间、数据库查询次数及内存占用
代码页面加载时间代码本页数据库查询:<?php echo get_num_queries(); ?> 次;数据库查询次数代码页面生成操作耗时:<?php timer_stop(0,5); ?> 秒; //精确到第五位小数点内存占用代码$ram .= round(memory_get_peak_usage()/1024/1024,2) ; //通过round函数 四舍五入保留两位小数点修改步骤进入到zibll主题的 inc/functions 路径下,找到 zib-footer.php修改这个函数 zib_footer_con_2 的内容改成如图:$html .= '<div class="footer-muted em09">本页数据库查询:'.get_num_queries().' 次|页面生成操作耗时:' .timer_stop(0,5) . '秒|占用内存'.$neicun.'MB</div>';
2021年03月02日
46 阅读
0 评论
0 点赞
2021-03-02
WordPress的一些优化代码
把下面的代码放进主题的 functions.php 最下面:/*-----------------------------------------------------------------------------------*/ /* Disable the emoji's /*-----------------------------------------------------------------------------------*/ function disable_emojis() { remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); remove_action( 'wp_print_styles', 'print_emoji_styles' ); remove_action( 'admin_print_styles', 'print_emoji_styles' ); remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); //add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' ); } add_action( 'init', 'disable_emojis' ); /** * Filter function used to remove the tinymce emoji plugin. * * @param array $plugins * @return array Difference betwen the two arrays */ function disable_emojis_tinymce( $plugins ) { if ( is_array( $plugins ) ) { return array_diff( $plugins, array( 'wpemoji' ) ); } else { return array(); } } /*-----------------------------------------------------------------------------------*/ /* 去除头部菜单 /*-----------------------------------------------------------------------------------*/ add_filter( 'show_admin_bar', '__return_false' ); /*-----------------------------------------------------------------------------------*/ /* 去除头部冗余代码 /*-----------------------------------------------------------------------------------*/ remove_action('wp_head', 'feed_links_extra', 3); remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'index_rel_link'); remove_action('wp_head', 'start_post_rel_link', 10, 0); remove_action('wp_head', 'wp_generator' ); //隐藏wordpress版本 remove_filter('the_content', 'wptexturize'); //取消标点符号转义 remove_action('rest_api_init', 'wp_oembed_register_route'); remove_filter('rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4); remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10); remove_filter('oembed_response_data', 'get_oembed_response_data_rich', 10, 4); remove_action('wp_head', 'wp_oembed_add_discovery_links'); remove_action('wp_head', 'wp_oembed_add_host_js'); // Remove the Link header for the WP REST API // [link] => <http://cnzhx.net/wp-json/>; rel="https://api.w.org/" remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 ); /*-----------------------------------------------------------------------------------*/ /* 去除谷歌字体 /*-----------------------------------------------------------------------------------*/ function coolwp_remove_open_sans_from_wp_core() { wp_deregister_style( 'open-sans' ); wp_register_style( 'open-sans', false ); wp_enqueue_style('open-sans',''); } add_action( 'init', 'coolwp_remove_open_sans_from_wp_core' ); /*-----------------------------------------------------------------------------------*/ /* 修改后台字体 /*-----------------------------------------------------------------------------------*/ function admin_lettering(){ echo'<style type="text/css"> body{ font-family: Microsoft YaHei;} </style>'; } add_action('admin_head', 'admin_lettering'); /*-----------------------------------------------------------------------------------*/ /* Gravatar头像使用中国服务器 /*-----------------------------------------------------------------------------------*/ function ea_change_avatar_v2ex( $avatar ) { $avatar = preg_replace("/https:\/\/(secure|\d).gravatar.com\/avatar\//","https://dn-qiniu-avatar.qbox.me/robohash/",$avatar); return $avatar; } add_filter('get_avatar', 'ea_change_avatar_v2ex'); /*-----------------------------------------------------------------------------------*/ /* 阻止站内文章互相Pingback /*-----------------------------------------------------------------------------------*/ function theme_noself_ping( &$links ) { $home = get_option( 'home' ); foreach ( $links as $l => $link ) if ( 0 === strpos( $link, $home ) ) unset($links[$l]); } add_action('pre_ping','theme_noself_ping'); /*-----------------------------------------------------------------------------------*/ /* 删除后台某些版权和链接@wpdx /*-----------------------------------------------------------------------------------*/ add_filter('admin_title', 'wpdx_custom_admin_title', 10, 2); function wpdx_custom_admin_title($admin_title, $title){ return $title.' ‹ '.get_bloginfo('name'); } /*-----------------------------------------------------------------------------------*/ /* 去掉wordpress logo /*-----------------------------------------------------------------------------------*/ function remove_logo($wp_toolbar) { $wp_toolbar->remove_node('wp-logo'); } add_action('admin_bar_menu', 'remove_logo', 999); /*-----------------------------------------------------------------------------------*/ /* 去掉wp版权 /*-----------------------------------------------------------------------------------*/ function change_footer_admin () {return '';} add_filter('admin_footer_text', 'change_footer_admin', 9999); function change_footer_version() {return '';} add_filter( 'update_footer', 'change_footer_version', 9999); /*-----------------------------------------------------------------------------------*/ /* 去掉挂件 /*-----------------------------------------------------------------------------------*/ function disable_dashboard_widgets() { //remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');//近期评论 //remove_meta_box('dashboard_recent_drafts', 'dashboard', 'normal');//近期草稿 remove_meta_box('dashboard_primary', 'dashboard', 'core');//wordpress博客 remove_meta_box('dashboard_secondary', 'dashboard', 'core');//wordpress其它新闻 remove_meta_box('dashboard_right_now', 'dashboard', 'core');//wordpress概况 //remove_meta_box('dashboard_incoming_links', 'dashboard', 'core');//wordresss链入链接 //remove_meta_box('dashboard_plugins', 'dashboard', 'core');//wordpress链入插件 //remove_meta_box('dashboard_quick_press', 'dashboard', 'core');//wordpress快速发布 } add_action('admin_menu', 'disable_dashboard_widgets'); /*-----------------------------------------------------------------------------------*/ /* 去掉无用小工具 /*-----------------------------------------------------------------------------------*/ function unregister_default_widgets() { unregister_widget( 'WP_Widget_Pages' ); unregister_widget( 'WP_Widget_Calendar' ); unregister_widget( 'WP_Widget_Meta' ); unregister_widget( 'WP_Widget_Search' ); unregister_widget( 'WP_Widget_Categories' ); unregister_widget( 'WP_Widget_Recent_Posts' ); unregister_widget( 'WP_Widget_Recent_Comments' ); unregister_widget( 'WP_Widget_RSS' ); } add_action("widgets_init", "unregister_default_widgets", 11);
2021年03月02日
21 阅读
0 评论
0 点赞
2021-02-22
宝塔linux面板去除后台强制更新
下面需要修改的文件基本在 /www/server/panel/ 下。一、/class/ajax.py删除def UpdatePanel(self,get):下整段关于更新的代码。也就是到 # 检查是否安装任何 def CheckInstalled(self,get):前所有代码。二、/task.py注释(禁止运行)def update_panel(): 加入“#”即可。三、tools.py注释elif u_input == 16: 选项,加入“#”即可。
2021年02月22日
186 阅读
0 评论
1 点赞
2021-02-22
此内容被密码保护
加密文章,请前往内页查看详情
2021年02月22日
34 阅读
0 评论
1 点赞
1
...
3
4
5
...
7