Deprecated: Creation of dynamic property Typecho\Widget\Request::$feed is deprecated in /www/wwwroot/blog.iletter.top/var/Widget/Archive.php on line 246
白荼日记 - 优化 https://blog.iletter.top/index.php/tag/%E4%BC%98%E5%8C%96/ 去除宝塔界面一些烦人的东西 https://blog.iletter.top/index.php/archives/400.html 2025-07-25T13:18:02+08:00 更新之后越来越难用了,自己懒得配置nginx,mysql,这些环境,开心版的又怕后门,自己改后端的js文件看的脑瓜子疼,反正都是界面,直接js删掉一些dom元素就行了。有需要的可以拿走。// ==UserScript== // @name 宝塔面板优化 - 界面美化 // @namespace http://tampermonkey.net/ // @version 1.3 // @description 移除指定 class 元素、替换特定 span 文字内容,并删除包含“需求反馈”的 span // @match http://152.136.153.72:9999/* // @grant none // ==/UserScript== (function () { 'use strict'; console.log('⚠ 脚本准备加载'); // 定义需要移除的 class 组合 const selectorsToRemove = [ '.h-auto.mt-\\[1\\.2rem\\]', // h-auto mt-[1.2rem] '.svgtofont-desired.\\!mr-4px.\\!text-\\[16px\\]', // svgtofont-desired !mr-4px !text-[16px] '.icon-end-time-free.icon-unpaid-ltd', // icon-end-time-free icon-unpaid-ltd '.el-card.is-always-shadow.is-always-shadow.\\!border-\\[\\#efefef\\]', // el-card is-always-shadow is-always-shadow !border-[#efefef] '.icon-end-time.icon-unpaid-ltd' // icon-end-time icon-unpaid-ltd ]; // 移除指定 class 的元素 const removeElementsByClass = () => { selectorsToRemove.forEach(selector => { document.querySelectorAll(selector).forEach(el => el.remove()); }); }; // 替换指定 span 的文字内容 const replaceSpanText = () => { const spanSelector = 'span.mr-1rem.ml-\\[-1\\.5rem\\]'; document.querySelectorAll(spanSelector).forEach(span => { span.textContent = '精简版'; }); }; // 删除 span/button 包含 指定字符 的 span 元素 const removeSpansWithText = () => { const spans = document.querySelectorAll('span'); spans.forEach(span => { if (span.textContent.trim() == '需求反馈') { span.remove(); } }); const buttons = document.querySelectorAll('button'); buttons.forEach(span => { if (span.textContent.trim() == '立即体验') { span.remove(); } }); }; // 删除指定class 包含置顶字符的元素 const removeClassWithText =()=>{ const parents = document.querySelectorAll('.header-child-tab'); parents.forEach(span => { if ( span.textContent.trim() == '安全检测' || span.textContent.trim() == '违规词检测' || span.textContent.trim() == 'PHP网站安全' || span.textContent.trim() == '入侵防御' || span.textContent.trim() == '系统加固' || span.textContent.trim() == '扫描感知' || span.textContent.trim() == '日志审计' || span.textContent.trim() == 'SSH登录日志' ) { span.remove(); } }); const classparents = document.querySelectorAll('.el-collapse-item'); classparents.forEach(span => { if ( span.textContent.trim().includes('top5') ) { span.remove(); } }); } // 删除包含特定子元素的 el-col 元素 const removeParentIfChildExists = () => { // 获取所有 el-col.el-col-6.wrapper-item 元素 const parents = document.querySelectorAll('.el-col.el-col-6.wrapper-item'); parents.forEach(parent => { // 检查子元素是否包含指定的 class const child = parent.querySelector('.absolute.-left-1\\.5.-top-1'); if (child) { parent.remove(); // 移除父元素 } }); }; // 综合执行函数 const removeElements = () => { removeElementsByClass(); replaceSpanText(); removeSpansWithText(); removeParentIfChildExists(); removeClassWithText(); }; // 等待dom加载完毕后执行综合函数 let timeoutId; const debouncedRemove = () => { clearTimeout(timeoutId); timeoutId = setTimeout(removeElements, 200); }; let runCount = 0; const maxRuns = 5; const observer = new MutationObserver((mutations, obs) => { if (runCount >= maxRuns) { obs.disconnect(); return; } obs.disconnect(); debouncedRemove(); runCount++; obs.observe(document.body, { childList: true, subtree: true }); }); observer.observe(document.body, { childList: true, subtree: true }); // 点击一次执行一次综合函数 let clickTimeout; document.addEventListener('click', () => { clearTimeout(clickTimeout); clickTimeout = setTimeout(removeElements, 200); }); // 初始执行(延迟 1 秒,等待 DOM 加载) setTimeout(() => { removeElements(); }, 1000); })(); ubuntu server设置samba共享服务 https://blog.iletter.top/index.php/archives/399.html 2025-07-25T13:17:00+08:00 在 Ubuntu Server 上搭建 Samba 文件共享服务 是一个非常常见的需求,适用于局域网内的文件共享、打印机共享等场景。下面是一个完整教程 ,帮助你快速搭建一个基础的 Samba 服务,并允许其他用户访问你的共享目录。第一步:安装 Sambasudo apt update sudo apt install samba -y安装完成后,Samba 会自动启动。第二步:备份默认配置文件(可选)Samba 的主配置文件位于:/etc/samba/smb.conf建议先做一个备份:sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak第三步:添加共享目录配置你可以选择共享一个现有目录,比如 /home/dellevin/shared。1. 创建共享目录(如果还没有)mkdir -p /home/dellevin/shared2. 编辑 Samba 配置文件sudo nano /etc/samba/smb.conf在文件末尾添加如下内容(以共享 shared 目录为例):[Shared] comment = Shared Folder path = /home/dellevin/shared browseable = yes read only = no writable = yes valid users = dellevin[Shared]:共享名称(客户端看到的名字)path:要共享的目录路径read only = no 和 writable = yes 表示允许写入valid users:允许访问该共享的用户第四步:设置 Samba 用户密码你需要为允许访问的用户设置 Samba 密码(即使该用户已存在 Linux 系统中):sudo smbpasswd -a dellevin系统会提示你输入并确认 Samba 密码。⚠️ 注意:这个密码可以和系统密码不同。第五步:重启 Samba 服务sudo systemctl restart smbd第六步:设置开机自启sudo systemctl enable smbd第七步:检查是否运行正常systemctl status smbd确保服务状态是 active (running)。第八步:从 Windows 或 Linux 客户端访问Windows 访问方式:打开“此电脑”或资源管理器,在地址栏输入:\\你的Ubuntu服务器IP地址例如:\\192.168.1.100然后输入用户名 dellevin 和你在 smbpasswd 中设置的密码即可访问。Linux 访问方式(如 Ubuntu 桌面):打开文件管理器(如 Nautilus),按下 Ctrl + L 输入:smb://192.168.1.100或者使用命令行挂载:sudo mount -t cifs //192.168.1.100/Shared /mnt/shared -o user=dellevin可选:配置防火墙(UFW)如果你启用了防火墙 UFW,需要开放 Samba 所需端口:sudo ufw allow 'Samba'总结:常用命令一览表操作命令安装 Sambasudo apt install samba配置文件位置/etc/samba/smb.conf添加共享目录在配置文件中添加[ShareName]块设置 Samba 用户密码sudo smbpasswd -a username重启 Sambasudo systemctl restart smbd开机自启sudo systemctl enable smbd查看服务状态systemctl status smbd客户端访问地址\\IP地址或smb://IP地址 macos卸载系统内置软件 https://blog.iletter.top/index.php/archives/344.html 2024-12-27T10:57:16+08:00 1、关闭系统完整性(SIP)1.1进入recovery的方式有的人使用的vmware虚拟机,在开机时候按键被屏蔽,咋都不管用,网上找找boot.efi启动,也找不到。这里我们可以挂载你安装的iso镜像然后在开机的时候选择“打开电源时进入固件”,然后在里面找到你挂载的光盘也就是带有“cdrm drivcer”这个。在进入安装模式之后找到终端。如果您使用的是黑苹果或者白苹果,可以选择 重启按住Command+R 进入,如果是m系列芯片,长按关机键,进入硬盘选择界面进入。进入系统Recovery模式,然后点击菜单栏,“实用工具 >> 终端”。打开终端执行如下命令:csrutil disable csrutil authenticated-root disable然后手动输入reboot重启2.正常重启系统重启完毕后,可以用status查看是否为disabled,如果都是那就说明是关闭了csrutil status csrutil authenticated-root status3.查找挂载位置使用diskutil list可以找到自己硬盘的所在分区创建挂载目录 mkdir ~/mount3.1虚拟机macos设置挂载硬盘sudo mount -o nobrowse -t apfs /dev/disk1s5 ~/mount进入挂载目录cd ~/mount/System/Applications删除所需要的软件sudo rm -rf 你的软件名称重建系统快照sudo bless --folder /Users/levin/mount/System/Library/CoreServices -bootefi --create-snapshot3.2物理机器macos设置(以mac mini m1为例)挂载硬盘sudo mount -o nobrowse -t apfs /dev/disk3s1 ~/mount进入挂载目录cd mount/System/Applications删除所需要的软件sudo rm -rf 你的软件名称重建系统快照(这里和虚拟机的操作有一点点区别使用的是--setBoot)sudo bless --mount "/Users/mac/mount/System/Library/CoreServices" --setBoot --create-snapshot参考文件:如何删除Mac OS Monterey自带(预装)软件?:https://blog.csdn.net/yzh0911/article/details/127930513关于MacOS升级到Big Sur之后根目录无法挂载问题的解决方案:https://juejin.cn/post/6895635776642482183VMware16Pro中安装的MacOS11.13禁用系统完整性保护(rootless):https://blog.csdn.net/u012332816/article/details/112803018 巧用nginx自建cdn加速服务器 https://blog.iletter.top/index.php/archives/323.html 2024-11-10T12:45:00+08:00 之前使用cloudflare加速网站的时候,虽然是负加速把。。。但好歹能用啊。结果周五早上,看网站的时候忽然死掉了。去cloudflare查看,结果解析的界面一直404所以没办法,就很绝望。想到自己有一台国内的服务器,便想着自建cdn服务器。CDN 就是内容分发网络的意思,其英文全称为 Content Delivery Network。简单地说,CDN 可以提前把数据存在离用户最近的数据节点,从而避免长途跋涉经过长途骨干网,最终达到减少骨干网负担、提高访问速度的目的。其实很好理解,就是你访问网站的时候数据如果经过的那个cdn,就会有个缓存,如果你再次访问的时候,就会读取那个cdn的缓存,就不用再跑很远去找你的服务器了。好了,闲话不多说,现在开始实操。准备一台国外服务器10.0.0.1 绑定域名 www.ittoolman.com一台国内服务器10.0.0.2操作安装nginx需要在所有CDN服务器节点安装Nginx。也就是链接10.0.0.2,给这台服务器安装nginx,这里我是用的是xiaoz的一键Nginx安装包。如果想自己用的话可以自己设置nginx。wget https://raw.githubusercontent.com/helloxz/nginx-cdn/master/nginx.sh chmod +x nginx.sh && ./nginx.sh反向代理配置反向代在这里你把它理解成CDN节点就行了源站服务器: 10.0.0.1,就是网站数据真实存放的地方CDN服务器: 10.0.0.2在10.0.0.2上编辑hosts,这样做的目的就是告知服务器从哪里去获取网站数据,也就是回源地址,需要在CDN上做如下修改vi /etc/hosts 10.0.0.1 www.ittoolman.com配置一下各种目录#创建缓存目录 mkdir -p /data/wwwroot/caches/www.ittoolman.com #设置缓存目录权限 chown -R www:www /data/wwwroot/caches/www.ittoolman.com #如果网站是https创建证书路径 mkdir -p /data/wwwssl/www.ittoolman.com #创建配置文件 vi /usr/local/nginx/conf/vhost/ittoolman.com.conf在ittoolman.com.conf中添加下面的内容,缓存目录/缓存时间请根据实际情况调整,详细参数和含义请自行百度。proxy_cache_path /data/wwwroot/caches/www.ittoolman.com levels=1:2 keys_zone=ittoolman:50m inactive=30m max_size=50m; # HTTP 请求重定向到 HTTPS(可选) server { listen 80; server_name www.ittoolman.com; return 301 https://$host$request_uri; } # HTTPS 配置 server { listen 443 ssl; server_name www.ittoolman.com; # 设置 SSL 证书和私钥路径 ssl_certificate /data/wwwssl/www.ittoolman.com/fullchain.pem; ssl_certificate_key /data/wwwssl/www.ittoolman.com/privkey.pem; # 优化ssl配置 ssl_session_timeout 1d; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_stapling on; ssl_stapling_verify on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; access_log /data/wwwlogs/www.ittoolman.com_nginx.log combined; # 自定义 Server 头 server_tokens off; add_header Server ittoolmanCDN; # 启用缓存 location / { proxy_ssl_verify off; proxy_pass https://www.ittoolman.com; proxy_set_header Accept-Encoding ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache ittoolman; proxy_cache_valid 200 304 30m; proxy_cache_valid 301 24h; proxy_cache_valid 500 502 503 504 0s; proxy_cache_valid any 1s; proxy_cache_min_uses 1; expires 12h; proxy_redirect off; } }nginx整体配置为user www www; worker_processes auto; worker_rlimit_nofile 50000; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid /var/run/nginx.pid; events { use epoll; worker_connections 51200; #worker_connections 1024; multi_accept on; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 1024m; client_body_buffer_size 10m; sendfile on; tcp_nopush on; keepalive_timeout 120; server_tokens off; tcp_nodelay on; proxy_headers_hash_max_size 51200; proxy_headers_hash_bucket_size 6400; #开启Brotli压缩 brotli on; brotli_comp_level 6; #最小长度 brotli_min_length 512; brotli_types text/plain text/javascript text/css text/xml text/x-component application/javascript application/x-javascript application/xml application/json application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype; brotli_static always; gzip on; gzip_buffers 16 8k; gzip_comp_level 6; gzip_http_version 1.1; gzip_min_length 256; gzip_proxied any; gzip_vary on; gzip_types text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml text/javascript application/javascript application/x-javascript text/x-json application/json application/x-web-app-manifest+json text/css text/plain text/x-component font/opentype application/x-font-ttf application/vnd.ms-fontobject image/x-icon; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency. open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; #limit connection limit_conn_zone $binary_remote_addr zone=addr:10m; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } include cdn/*.conf; include vhost/*.conf; }所有配置写完之后,需要检测文件是否写的正确,以及重载nginx配置让配置生效。# 检查文件是否正确,如果是正确的,会有个successful提示 /usr/local/nginx/sbin/nginx -t # 重载nginx配置 /usr/local/nginx/sbin/nginx -s reloaddns解析在腾讯云/阿里云/cloudflare等dns服务商上面添加a解析主机记录:www记录类型:A记录值:10.0.0.2做完之后,等待一段时间让其生效,再次访问网站查看server有这个,表示已经弄好了。 cloudflare实现网站加速 https://blog.iletter.top/index.php/archives/250.html 2024-10-24T22:54:00+08:00 前几天刚把服务器换上,给同学展示后,他说“你这网站访问速度有些慢啊”。这时候我才反应过来,腾讯域名+国外服务器,最终解析还是在国外的服务器上面。慢还是慢。。。于是想到了cdn加速。但是又遇到了一个问题,由于我本人懒得备案,导致又拍云,腾讯云的cdn解析都没办法使用,毕竟都需要备案才能使用(可恶啊)。看了几篇帖子之后,他们说阿里云国外版可以cdn国内加速,我申请了一下,但是需要手机号。。。好的,还是pass了。最后还是选择了免费的cloudflare的加速。先是添加网站,然后再域名提供商填写上cloudflare的ns解析值。等一会就验证过了。好了,这样就配置好了。。。但是,毕竟是国外的加速,用在国内cdn加速还是一坨屎,完全随缘了属于是。。。。最后贴一张自己写的主页www.ittoolman.com