2021年10月15日 星期五

Adsense API v2

Adsense API v1.4 只能用到 2021-10-12,需要 migrate 到 v2 版本

以下是用 PHP

需先安裝 google-api-php-client library
composer require google/apiclient:^2.11
再使用以下 Code,把 $account 設自己的帳號就行了,
不過 metrics TOTAL_EARNINGS 似乎有問題,都會取到 0

2021年10月9日 星期六

Bypass Windows 11 TPMCheck and SecureBootCheck

電腦不符合 Windows 11 需求,也可以安裝 Windows 11

安裝流程第一個畫面按 Shift-F10 開啟 CMD
下指令
reg add HKLM\System\Setup\LabConfig /v "BypassTPMCheck" /t REG_DWORD /d 1 /f
reg add HKLM\System\Setup\LabConfig /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f

後續就跟一般安裝一樣

TPMCheck 及 SecureBootCheck 是在選擇要安裝 Windows 版本之後,
若已看到此電腦無法執行 Windows 11,也可以按上一頁,再進行上面的 reg 動作

順便一提,Windows 11 仍是可以使用離線帳戶的
登入選項 / 離線帳戶


2021年10月7日 星期四

Rsyslog to PHP

以 PHP 為例,把 syslog 的資料即時 pipe 給程式分析

/etc/rsyslog.conf 加入
module(load="omprog")
*.* action(type="omprog" binary="/usr/local/bin/syslog-parser.php")

syslog-parser.php 內容

#!/usr/bin/php
<?php
while ($line=trim(fgets(STDIN))) {
  file_put_contents("/tmp/syslog-parser.log",$line."\n",FILE_APPEND);
}
?>

不要忘了 chmod +x syslog-parser.php,它需要有執行權限
本範例中的 $line 就是 syslog 會傳進來的每一行
當然這個方法不限於 PHP,可以讀取 STDIN 的程式都可以

2021年9月7日 星期二

Protect static files with Apache mod_xsendfile

網頁中的 Static files,若要經過驗證才能存取,
以 PHP 為例,
第一種做法是將檔案放在 DocumentRoot 以外的目錄,程式先檢查驗證,然後再用 readfile 讀檔吐出去
第二種做法是本文要介紹的 mod_xsendfile,一樣是將檔案放在 DocumentRoot 以外的目錄,
然後再送出 Header X-SENDFILE 告訴 Web Server 檔案在那,由 Web Server 直接存取。
若是檔案很大的話,第一種做法會耗用很多記憶體,第二種做法就省記憶體,跟 Static files 沒什麼兩樣

安裝 mod_xsendfile
yum -y install mod_xsendfile

httpd.conf 加入兩個參數
XSendFile On
XSendFilePath /data
XSendFilePath 是設定可以 X-SENDFILE 指向的白名單,可以設定多筆

應用範例:
DocumentRoot /var/www/html
Data folder /var/www/html/data
X-SENDFILE data folder /xsendfile

在 data 目錄建立 .htaccess,目的是將 data 下任何 URL 都先經過 index.php 檢查權限,再放行(X-SENDFILE)
.htaccess 內容
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L]

index.php 內容
<?php
if (authCheck()) {
$filename= basename($_SERVER['REQUEST_URI']);
header('X-SENDFILE: /xsendfile/'.$filename);
header('Content-Type: '.mime_content_type('/xsendfile/'.$filename));
exit;

}
?>
<h1>Permission denied</h1>

註: nginx 也有類似的模組,叫 X-Accel

ref. mod_xsendfile 官網

2021年9月4日 星期六

openfortivpn

openfortivpnFortiClient VPN 相容,若不想用官方的 Client 可以試試
只是它是命令列模式,沒有 GUI

使用很簡單
openfortivpn vpn-gateway:8443 -u username
然後會提示輸入 Password
若憑證是自簽的,需加 --trusted-cert 參數,後面接憑證的 SHA256 (沒加此參數撥不上時會有提示)


Android 11+ Wireless ADB

Android 11 開始支援的無線偵錯,滿方便的,電腦跟手機需在同一個子網路下
系統 / 開發人員選項 / 無線偵錯 / 使用配對碼配對裝置

以上圖的情況
cd %LOCALAPPDATA%\Android\Sdk\platform-tools
adb pair 192.168.0.5:38549 370573
就完成配對,若 Android Studio 仍沒有看到這個裝置,再手動下指令
adb connect 192.168.0.5:34961

ref. Android Debug Bridge (adb)

2021年9月3日 星期五

Increase or Decrease DNS TTL

BIND
可以用 max-cache-ttl 參數來縮短 TTL,但是無法增加

dnsmasq
可以用 max-cache-ttl 參數來縮短 TTL
可以用 min-cache-ttl 參數來加大 TTL,上限是 3600
若需要超過 3600 的數值,必需自行修改 src/config.h 裡的 #define TTL_FLOOR_LIMIT 數值,再重新編譯

2021年8月29日 星期日

Rclone empty Google Drive trash

Rclone 清空 Google Drive 垃圾桶

指令 rclone cleanup remote:

NOTICE: Google drive root '': Note that emptying the trash happens in the background and can take some time.

指令下完,會出現此提示,在背景作業,檔案多的話,需要一些時間,數百 G 的資料清理完可能會超過一小時,請耐心等待

2021年8月21日 星期六

2021年8月10日 星期二

Blockchain domains

foreverdomains.io

區塊鏈域名是使用區塊鏈 NFT (Non-Fungible Token) 建講的域名,特點是去中心化,只要一次性費用,免年費,也不會過期。
當然,它跟現有 ICANN 控制的中心化 root NS 是不互通的,要訪問區塊鏈域名的網站,還要加掛 Fingertip 程式才行

短期來看,區塊鏈域名的收藏價值可能大於實用價值。
長期來看,因 NFT 本身具唯一性,不可被竄改的特性,也許可以應用在抗封鎖、防止域名劫持上面。

2021年8月4日 星期三

Download file from free domain blocked by browsers

有遇到使用 Free domain 的站,Freenom 這五個 .cf .ga .gq .ml .tk
下載檔案瀏覽器會有安全性提示

Chrome: 一般使用者不常下載 xxx.zip,代表這個檔案可能不安全。ref. Google Chrome 封鎖下載內容

Firefox: 這個檔案不是常見的可下載檔案。
這個檔案不是常見的可下載檔案,開啟的話可能會不安全,這個檔案裡可能含有病毒,或會對您的程式與設定做出未預期的變更。
您可以搜尋其他下載來源,或稍後再試。

同一個站只要換個域名就正常了,很明顯就是針對 Free domain 的網址。
Free domain 網址常被濫用,建立惡意網站,被認定為惡意也是可以預期的。
所以免費域名開發、測試可以,正式使用還是要避免。

2021年7月28日 星期三

External IPv6 addresses for Google Cloud VM instances is now available

GCP 的 VM (Compute Engine) 終於支援 IPv6 Public IP 了

目前只支援以下地區
asia-east1
asia-south1
europe-west2
us-west2

有台灣區,參考 configure-ipv6-address 進行設定,似乎只能使用 gcloud 指令,無法經由 Web 設定

網路要先啟用 IPv6
gcloud compute networks subnets update network_name --stack-type=IPV4_IPV6 --ipv6-access-type=EXTERNAL --region=asia-east1

再啟用機器的 IPv6
gcloud compute instances network-interfaces update instance_name --ipv6-network-tier=PREMIUM --stack-type=IPV4_IPV6 --zone=asia-east1-c

機器就可以拿到一個 /128 的 IPv6 IP
但是設定文件提到有一些限制,目前無法用 IPv6 IP 連 Google 的 API 或服務,
所以 ping6 google.com 是不通的,會出現 Destination unreachable: No route
ping 其他地方例如 ping6 www.microsoft.com 是可以通的,
真窘,連自家反而不通
另外找不到地方可以設定 IPv6 的 Firewall,感覺還沒做得很完整,因為預設 INPUT 是 Block,就暫時無法用 IPv6 提供服務

Online UI Design Tool

https://www.figma.com/

https://www.invisionapp.com/

前者比較紅,Alexa 全球排名 698


2021年7月27日 星期二

VMware Horizon Client and Bluetooth

發現偶爾 Windows 10 電腦設定裡的藍牙開關會消失,導致藍牙無法連線

 

經過一段時間才發現是 VMware Horizon Client 所造成,當 USB 裝置裡面的藍牙有被開啟,藍牙就會映射到 VDI,關掉就好了

 

 

Adsense API v2

Adsense API v1.4 只能用到 2021-10-12,需要 migrate 到 v2 版本 以下是用 PHP 需先安裝 google-api-php-client library composer require google/apiclient:^2.11 再使...