2022年4月25日 星期一

[Mikortik] 封鎖一大堆blacklist

/ip firewall address-list add list=blacklist address=xxx.xxx.xxx.xxx/24
/ip firewall address-list add list=blacklist address=xxx.xxx.xxx.xxx-xxx.xxx.xxx.xxx

設定 raw:
/ip firewall raw add chain=prerouting action=drop src-address-list=blacklist

匯出 address list:
/ip firewall address-list export

目前的封鎖清單: (烏克蘭SpaceshipNetworks持續不斷, 持續封鎖)
/ip firewall address-list
add address=20.33.0.0-20.128.255.255 comment="Microsoft Azure" list=blacklist
add address=5.0.0.0/8 comment="Ukraine SpaceshipNetworks" list=blacklist
add address=133.0.0.0/8 comment="Japan Network Information Center" list=blacklist
add address=136.144.16.0-136.144.127.255 comment="RIPE Network Coordination Centre" list=blacklist
add address=45.126.65.0/24 comment=" IRT-TELE-ASIA" list=blacklist
add address=141.98.10.0/23 comment="Paulius Vancugovas" list=blacklist
add address=193.56.29.0/24 comment=" Web Hosted Group Ltd" list=blacklist
add address=114.80.0.0/12 comment="CHINANET SHANGHAI PROVINCE NETWORK" list=blacklist
add address=85.202.168.0/23 comment="Serverion BV" list=blacklist
add address=5.34.204.0/22 comment="Spaceshipnetworks LTD" list=blacklist
add address=60.166.0.0-60.175.255.255 comment=" CHINANET anhui province network" list=blacklist
add address=185.36.81.0/24 comment="UAB Host Baltic" list=blacklist
add address=185.222.56.0/23 comment=" RootLayer Web Services LTD" list=blacklist
add address=37.0.8.0/22 comment="Serverion BV" list=blacklist

2022年4月23日 星期六

樹莓派安裝執行 .NET Core 程式

參考影片: https://www.youtube.com/watch?v=WDlZ3f2xHcc

先安裝 visual studio code:
sudo apt install code

建立公用目錄:
sudo mkdir /usr/share/dotnet

先看微軟網頁 https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0, 找到下載 ARM32 (或64) 版本的連結, 然後用 wget 下載:

sudo wget https://download.visualstudio.microsoft.com/download/pr/e41a177d-9f0b-4afe-97a4-53587cd89d00/c2c897aa6442d49c1d2d86abb23c20b2/dotnet-sdk-6.0.202-linux-arm.tar.gz

或是5.0版:

wget https://download.visualstudio.microsoft.com/download/pr/17588888-bd97-41e6-a1ef-9f1da6b8bdf6/ab16a7b0b82297f76abc793b5d187952/dotnet-sdk-5.0.407-linux-arm.tar.gz

解開至公用目錄:
sudo tar zxvf dotnet-sdk-6.0.202-linux-arm.tar.gz -C /usr/share/dotnet

或是5.0版:

sudo tar zxvf dotnet-sdk-5.0.407-linux-arm.tar.gz -C /usr/share/dotnet

 
編輯 ~/.profile, 在最後增加 export 設定:
export PATH=$PATH:/usr/share/dotnet
export DOTNET_ROOT=/usr/share/dotnet


重新登入讓 profile 生效

建立 .net 專案
cd ~
mkdir hello


建立 console 專案:
cd hello
dotnet new console

這時會在目錄下產生 .csproj 與 Program.cs 等專案檔

編譯:
dotnet build

執行:
./bin/Debug/net6.0/hello

dotnet支援的專案類型:
dotnet new -l

 









2022年4月22日 星期五

[Rpi3] 3.5吋觸控LCD驅動

最近東西都漲價了, 拿出以前的 Rpi3, 買了一款 Rpi3 用的觸控LCD: https://www.jmaker.com.tw/products/product194

微雪原廠連結: https://www.waveshare.net/wiki/3.5inch_RPi_LCD_(A)#.E8.AE.BE.E7.BD.AE.E6.98.BE.E7.A4.BA.E6.96.B9.E5.90.91

指令:

git clone https://github.com/waveshare/LCD-show.git

cd LCD-show/

sudo ./LCD35-show

然後重新開機

ESP-IDF 使用 ESP32-S2 的設定/編譯/燒錄

有個 HMI OS 的構想, 買了一片 ESP32-S2-Kaluga-1 Kit 來用, 這片是 ESP32-S2, ES_IDF 預設是 ESP32, 如果沒有設定 target, 編譯後無法上傳. 紀錄一下設定/編譯/燒錄的指令:

 

進入 example project 目錄後 (例如 C:\Espressif\frameworks\esp-idf-v4.4.1\examples\get-started\blink) :

設定: idf.py set-target ESP32-S2

編譯: idf.py build

燒錄的指令 idf.py -p COMx flash



2022年3月30日 星期三

自建 DDNS 轉址

由於 HiNet 只提供一個固定 IP, 只能給一個路由器使用, 如果另一個路由器用 PPPOE 取得浮動 IP, 可透過這個固定 IP 下的網站來進行轉址. 本例中, 浮動 IP 端使用樹莓派當伺服器, 使用 python3 環境, 固定 IP 端為一般 PC, 安裝 xampp (apache+php+mysql).

PC端在 htdocs 下建立一個 smartcenter 目錄, 放3個 php 檔

set_ip.php:  設定 ddns ip

<?php

        $host =  htmlspecialchars($_GET["HOST"]);

        $ip = htmlspecialchars($_GET["IP"]);

        $filename = "ip.".$host; 

        $file = fopen($filename,"w");

        fwrite($file,$ip);

        fclose($file);

?>

 get_ip:php: 回傳 ddns ip

<?php

        $host =  htmlspecialchars($_GET["HOST"]);

        $filename = "ip.".$host;

        if (file_exists($filename))

        {

                $file = fopen($filename,"r");

                $ip = fread($file,filesize($filename));

                fclose($file);

        } else {

                $ip="0";

        }

        echo '{"IP":"'.$ip.'"}';

?>

 index.php: 轉址

<?php

        $filename = "ip.smartcenter";

        if (file_exists($filename))

        {

                $file = fopen($filename,"r");

                $ip = fread($file,filesize($filename));

                fclose($file);

        } else {

                $ip="0";

        }

       

    header('Location: http://'.$ip);

?>

樹莓派的 set_ddns_ip.py 程式: 先取得外部 ip, 呼叫 set_ip.php 進行設定, 再呼叫 get_ip.php 檢查結果:

#!python3

import requests

r =requests.get('https://api.myip.com/')

print(r.status_code)

print(r.text)

 

#print(r.json())

my_ip=r.json()['ip']

print('my_ip="'+my_ip+'"')

 

ddns_server='http://自己的網址'

host='smartcenter'

args = {'HOST':host,'IP':my_ip}

r = requests.get(ddns_server+'/smartcenter/set_ip.php',params=args)

#print(r.status_code)

#print(r.text)

 

 

args = {'HOST':host}

r = requests.get(ddns_server+'/smartcenter/get_ip.php',params=args)

#print(r.status_code)

registered_ip=r.json()['IP']

print('registered_ip="'+registered_ip+'"')

 

if(registered_ip!=my_ip):

    print("Bad")

else:

    print("OK");

 建立一個 /set_ddns_ip.sh

 

 然後只要設定 crontab 每分鐘自動更新即可:

# m h  dom mon dow   command

* * * * * /home/pi/set_ddns_ip.sh

 

 瀏覽器只要使用原先的網址, 例如 http://自己的網址/smartcenter, 即可自動轉址