17 2 月 2024

macos上无法连接 cloudflare-warp

  1. 打开终端 cd /Applications/Cloudflare\ WARP.app/Contents/Resources/
  2. ls -alh 会看到他已经内置了一些命令行工具
  3. 执行下面的2个命令
   warp-cli set-custom-endpoint  188.114.96.198:2408  # 换成其他的 engage.cloudflareclient.com 域名也行


   warp-cli disable-connectivity-checks           

优选 对端ip

如果想选一个好一点的ip,可以搜索一些方法å

01 1 月 2024

部署测试Yearning平台

一、yearning sql审计平台

1.官网介绍

Yearning是一款可满足大部分公司SQL审核需求的web端可视化SQL审核平台。在实现常规的sql审核功能外还添加了诸如数据查询等一系列便捷的功能。
Yearning MYSQL SQL语句审核平台。提供查询审计,SQL审核,SQL回滚,自定义工作流等多种功能。

2.浅浅的研究

go语言开发;

官网https://next.yearning.io/

二、安装过程

1.mysql新建与配置

新建数据库yearning,用户名也是yearning,密码123456

2.docker部署

docker run -d -it -p8000:8000 -e SECRET_KEY=abcdabcdabcdabcd -e MYSQL_USER=yearning -e MYSQL_ADDR=172.17.0.1 -e MYSQL_PASSWORD=123456 -e MYSQL_DB=yearning yeelabs/yearning

3.初始化数据库

use yearning;
INSERT INTO core_accounts (username,password,department,real_name,email,is_recorder) VALUES (‘admin’,’pbkdf2_sha256$120000$LwSop65y17f4$AgXGkzmZLF7Lw3K1gToLkOBHqziBC0Wpf3bBIHoWA5Q=’,’DBA’,’超级管理员’,”,0);

INSERT INTO core_global_configurations (authorization,ldap,message,other,stmt,audit_role,board) VALUES (‘global’,'{“url”:””,”user”:””,”password”:””,”type”:”(\u0026(objectClass=organizationalPerson) (sAMAccountName=%s))”,”sc”:””,”ldaps”:false,”map”:””,”test_user”:””,”test_password”:””}’,'{“web_hook”:””,”host”:””,”port”:25,”user”:””,”password”:””,”to_user”:””,”mail”:false,”ding”:false,”ssl”:false,”push_type”:false,”key”:””}’,'{“limit”:1000,”idc”:[“Aliyun”,”AWS”],”query”:false,”register”:false,”export”:false,”ex_query_time”:60}’,0,'{“DMLAllowLimitSTMT”:false,”DMLInsertColumns”:false,”DMLMaxInsertRows”:10,”DMLWhere”:false,”DMLAllowInsertNull”:false,”DMLOrder”:false,”DMLSelect”:false,”DMLInsertMustExplicitly”:false,”DDLEnablePrimaryKey”:false,”DDLCheckTableComment”:false,”DDlCheckColumnComment”:false,”DDLCheckColumnNullable”:false,”DDLCheckColumnDefault”:false,”DDLEnableAcrossDBRename”:false,”DDLEnableAutoincrementInit”:false,”DDLEnableAutoIncrement”:false,”DDLEnableAutoincrementUnsigned”:false,”DDLEnableDropTable”:false,”DDLEnableDropDatabase”:false,”DDLEnableNullIndexName”:false,”DDLIndexNameSpec”:false,”DDLMaxKeyParts”:5,”DDLMaxKey”:5,”DDLMaxCharLength”:10,”MaxTableNameLen”:10,”MaxAffectRows”:1000,”MaxDDLAffectRows”:0,”SupportCharset”:””,”SupportCollation”:””,”CheckIdentifier”:false,”MustHaveColumns”:””,”DDLMultiToCommit”:false,”DDLPrimaryKeyMust”:false,”DDLAllowColumnType”:false,”DDLImplicitTypeConversion”:false,”DDLAllowPRINotInt”:false,”DDLEnableForeignKey”:false,”DDLTablePrefix”:””,”DDLColumnsMustHaveIndex”:””,”DDLAllowChangeColumnPosition”:false,”DDLCheckFloatDouble”:false,”IsOSC”:false,”OSCExpr”:””,”OscSize”:0,”AllowCreateView”:false,”AllowCrateViewWithSelectStar”:false,”AllowCreatePartition”:false,”AllowSpecialType”:false,”PRIRollBack”:false}’,”);

INSERT INTO core_graineds (username,group) VALUES (‘admin’,'[“admin”]’);

4.登录使用

打开http://IP地址:8000

用户名密码: admin/Yearning_admin

使用流程:

1.管理–设置中添加自定义环境并开启用户注册,其他设置根据实际环境需要配置或启用/关闭
2.管理–流程中创建审核流程
3.管理–审核规则中根据实际情况开启或关闭审核规则
4.创建数据源
5.创建权限组,并添加对应的权限
6.给对应的用户绑定权限组

27 12 月 2023

nginx问题记录

一、问题现象

今天在重启一台debian10服务器的时候,发现nginx无法自动启动了。

而以前做这个重启操作时候未曾发现过。

二、分析过程

1.最近对于Nginx的变化的,是配置了一个反向代理,把我的一个域名直接变成另一个域名的网站。

2.查看日志

命令systemctl status nginx

3.日志显示

Dec 27 19:16:56 hostc7b20307e0 systemd[1]: Starting LSB: starts the nginx web server…
Dec 27 19:16:57 hostc7b20307e0 nginx[457]: Starting nginx… nginx: [emerg] host not found in upstream “google.com” in /www/server/panel/vhost/nginx/proxy/adminhost.or
Dec 27 19:16:57 hostc7b20307e0 nginx[457]: failed
Dec 27 19:16:57 hostc7b20307e0 systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
Dec 27 19:16:57 hostc7b20307e0 systemd[1]: nginx.service: Failed with result ‘ex

4.找到问题

分析发现是由于系统启动时候,nginx的配置无法解析这条配置里的域名“google.com”

三、解决方案

1.nginx增加配置dns解析服务器

2.配置代码

set $backend “google.com”;
proxy_pass https://$backend;
resolver 8.8.8.8;

29 1 月 2023

上海电信IPTV 4K配合Openwrt的配置

我的设备是单臂路由N1 刷openwrt(flippy版本)+VLAN交换机+k2p作无线ap

稳定运行五年多了,这两天升级了80+O的最新固件,记录下iptv设置

前提是已经在VLAN交换机里配置了51与85的VLAN

#nano /etc/dnsmasq.conf

在文件末尾加入

dhcp-option-force=lan,125,00:00:00:00:1a:02:06:48:47:57:2d:43:54:0a:02:20:00:0b:02:00:55:0d:02:00:2e
dhcp-option=lan,60,00:00:01:00:02:03:43:50:45:03:0e:45:38:20:47:50:4f:4e:20:52:4f:55:54:45:52:04:03:31:2E:30
dhcp-option=lan,15
dhcp-option=lan,28

最后重启下服务dnsmasq

#/etc/init.d/dnsmasq restart

最好把交换机也重启下。

最后应该整个无线与任意lan都可以iptv正常4K高清了。

11 6 月 2020

算法题-解多重压缩字符串

题目:形如[2AE]表示AEAE,[2[2EB]A]表示EBEBAEBEBA…这种压缩规则为数字表示压缩次数范围1-99,压缩内容都是大写字母。现在给一个压缩字符串为输入,求解压缩的原文。

思路:通过正则表达式匹配到”[数字字母]”这种严格格式,每次匹配完就立即展开,直到再也没有[号或者]号出现。

import re
def Solution(S:str)->str:
  while '[' in S:
      for code in re.findall('\[[0-9]+[A-Z]+\]', S):
          info = re.findall('\[([0-9]+)([A-Z]+)\]', code)[0]
          S = S.replace(code, info[1]*int(info[0]))
  return S
07 6 月 2020

openwrt一发入魂-带配置备份整个固件

每次刷入网上的纯净固件后,自己肯定要配置一下,有些情况还要额外安装软件。

然后再刷固件后,恢复就得再配置和安装一番,体验真的让人难受。

其实有更快捷的方法,直接带配置备份固件(把私人配置与额外软件都备份)。然后直接导入即可。

1.查看firmware的位置

cat /proc/mtd

2.将目标位置的固件备份下来

以第一步找到的mtd5为例。

dd if=/dev/mtd5 of=/tmp/firmware_backup.bin

然后用scp软件直接把固件下载到自己电脑上保存一份。

3.将这个固件恢复

mtd -r write /tmp/firmware_backup.bin firmware

有些小固件会遇到备份固件太大的问题,解决方式就是手动缩小固件。

直接用nodepad++或者sublime text等软件编辑上面的bin文件,把后面连续是f的行删除。只保留非连续f的结尾位置,删除多少就是缩小多少。

然后再正常刷入就行了。

最后,最上面的几步其实用breed web界面去备份固件也可以,效果一样。

07 6 月 2020

openwrt通用简易版server酱shell脚本

现在一般的大型固件都集成了server酱的微信推送插件。

但是一些小闪存路由就没这么方便,安装插件ipk也很麻烦,所以写了一个脚本,后台运行即可实现,非常简单。

#!/bin/sh
export PATH='/usr/sbin:/usr/bin:/sbin:/bin'

# Paraments
resub=1
push1="1"				# Push online devices
push_ddns="1"			# Push ddns message
serverchan_enable="1"	# Enable ServerChan
serverchan_sckey="SCT456ghhKMAwZIecBAv3Qt6ljRfnw"		# ServerChan api key


touch /tmp/tmp/lastIPAddress
[ ! -s /tmp/tmp/lastIPAddress ] && echo "爷刚启动!" > /tmp/tmp/lastIPAddress

touch /tmp/tmp/pushDevice
[ ! -s /tmp/tmp/pushDevice ] && echo "$push1" > /tmp/tmp/pushDevice

# Get wan IP
# Check curl exist, if not, use wget
getIpAddress() {
    curltest=`which curl`
    if [ -z "$curltest" ] || [ ! -s "`which curl`" ] ; then
        wget --no-check-certificate --quiet --output-document=- "http://members.3322.org/dyndns/getip"
    else
        curl -k -s "http://members.3322.org/dyndns/getip"
    fi
}
# load last IP
lastIPAddress() {
        inter="/tmp/tmp/lastIPAddress"
        cat $inter
}



# Get online devices
test(){
	alias=`cat /tmp/dhcp.leases`
	cat /proc/net/arp | sed 's/(//;s/)//' | while read -r IP HW FLAGS MAC MASK DEVICE
	do
	    #echo $DEVICE
        if [ $DEVICE == "br-lan" ]; then
		NAME=`echo "$alias" | awk '/'$MAC'\ '$IP'/{print $4}'`
        echo $NAME $IP >> /tmp/tmp/newhostname.txt
        #echo $NAME $IP
		fi
	done
}

while [ "$serverchan_enable" == "1" ];
do
curltest=`which curl`
if [ -z "$curltest" ] ; then
    wget --continue --no-check-certificate  -q -T 10 http://www.baidu.com
	[ "$?" == "0" ] && check=200 || check=404
else
    check=`curl -k -s -w "%{http_code}" "http://www.baidu.com" -o /dev/null`
fi

if [ "$check" == "200" ] ; then
hostIP=$(getIpAddress)
lastIP=$(lastIPAddress)

if [ "$lastIP" != "$hostIP" ] && [ ! -z "$hostIP" ] ; then
	sleep 60
    # Check again
	hostIP=$(getIpAddress)
    lastIP=$(lastIPAddress)
 fi

if [ "$lastIP" != "$hostIP" ] && [ ! -z "$hostIP" ] ; then
    logger -t "公网IP变动" "目前 IP: ${hostIP}"
    logger -t "公网IP变动" "上次 IP: ${lastIP}"
	if [ "$?" == "0" ] ; then
		if [ "$push_ddns" = "1" ] ; then
			curl -s "http://sctapi.ftqq.com/$serverchan_sckey.send?text=703N的ip更新啦" -d "&desp=${hostIP}" &
			logger -t "wechat push" "IP: ${hostIP} pushed"
		fi
		echo -n $hostIP > /tmp/tmp/lastIPAddress
	fi
fi

if [ `cat /tmp/tmp/pushDevice` = "1" ] ; then
    # 设备上、下线提醒
    # 获取接入设备名称
    touch /tmp/tmp/newhostname.txt
    echo "接入设备名称" > /tmp/tmp/newhostname.txt	
    # 当前所有接入设备
	test
	# 读取已在线设备名称
    touch /tmp/tmp/hostname_online.txt
    [ ! -s /tmp/tmp/hostname_online.txt ] && echo "接入设备名称" > /tmp/tmp/hostname_online.txt
    # 上线
    awk 'NR==FNR{a[$0]++} NR>FNR&&a[$0]' /tmp/tmp/hostname_online.txt /tmp/tmp/newhostname.txt > /tmp/tmp/newhostname_same_online.txt
    awk 'NR==FNR{a[$0]++} NR>FNR&&!a[$0]' /tmp/tmp/newhostname_same_online.txt /tmp/tmp/newhostname.txt > /tmp/tmp/newhostname_uniqe_online.txt
    if [ -s "/tmp/tmp/newhostname_uniqe_online.txt" ] ; then
		content=`cat /tmp/tmp/newhostname_uniqe_online.txt | grep -v "^$"`
		curl -s "http://sctapi.ftqq.com/$serverchan_sckey.send?text=703N有设备上线啦" -d "&desp=${content}" &
		logger -t "wechat push" "设备上线: ${content} pushed"
		cat /tmp/tmp/newhostname_uniqe_online.txt | grep -v "^$" >> /tmp/tmp/hostname_online.txt
    fi
    # 下线
    awk 'NR==FNR{a[$0]++} NR>FNR&&!a[$0]' /tmp/tmp/newhostname.txt /tmp/tmp/hostname_online.txt > /tmp/tmp/newhostname_uniqe_offline.txt
    if [ -s "/tmp/tmp/newhostname_uniqe_offline.txt" ] ; then
       content=`cat /tmp/tmp/newhostname_uniqe_offline.txt | grep -v "^$"`
       curl -s "http://sctapi.ftqq.com/$serverchan_sckey.send?text=703N有设备下线啦" -d "&desp=${content}" &
       logger -t "wechat push" "设备下线: ${content} pushed"
       cat /tmp/tmp/newhostname.txt | grep -v "^$" > /tmp/tmp/hostname_online.txt
    fi
fi
resub=`expr $resub + 1`
[ "$resub" -gt 360 ] && resub=1
else
logger -t "server chan" "Check network failed."
resub=1
fi
sleep 100
continue
done

把上面的代码保存在/root/serverchan.sh

再在管理界面-系统-startup最下面位置的脚本块的结尾加入一行

(/root/serverchan.sh) &

就成功了。

04 6 月 2020

debian清理空间

因为手里好几个384m-10g的小内存小硬盘机器,定期清理这些vps主机的磁盘非常必要。因此记录下一些常用步骤。

1.删除软件残余deb安装包

apt-get clean
apt-get autoclean

2.删除无用的依赖软件

apt-get autoremove
apt-get install deborphan
deborphan | xargs sudo apt-get purge -y

3.清理日志文件

apt-get install ncdu
ncdu /var/log