ShareX

今天SpaceX成功發射了一架運載力達到63噸(63噸是近地軌道LEO,如果是地球同步轉移軌道GTO則為27噸,而發往火星的話是16噸)的火箭Falcon Heavy。但我今天介紹的卻是Windows下一款很好用的截屏軟件ShareX。ShareX好處有很多,我看中的有開源、免費、無廣告、輕量。雖然它還有強大的截屏分享、錄製gif等功能,但我並未用到。

安裝後在「快捷動作」中可以設置自己喜歡的快捷按鍵來觸發截屏。在「截圖後動作」中我選擇了打開圖像編輯器和圖像複製到剪切版。「任務設置」中取消了截圖後聲音提示。這樣就能愉快的使用了!

Termux是個好軟件

Termux是一個無需root權限和複雜安裝步驟的安卓終端模擬器和Linux環境軟件。推薦使用F-Droid安裝Termux,如果用谷歌市場,有些插件要付費,而開源平台F-Droid則不必。一個很厲害的東西就是,它可以玩python(3.6)。

使用內部儲存空間

在手機的設定>應用程式>Termux>權限中打開「儲存空間」的開關。然後在Termux中運行termux-setup-storage。

常用軟件

nano python openssh

配置ssh

由於安全原因,Termux禁止使用賬號密碼連接到手機,只能用key。同時為了照顧未root的手機,所以ssh端口監聽在8022端口。

如果你客戶端(你的電腦)已經有密鑰對,那麼把公鑰傳到手機上,然後追加到手機~/.ssh/authorized_keys里就可以了。如果沒有,就在客戶端生成一個密鑰對,建議提示輸入密碼的時候設置一個密碼。

然後在手機上運行sshd開啟ssh服務,客戶端用ssh -p 8022 172.16.5.223來鏈接到手機。停止手機上的ssh服務可以執行pkill sshd。

使用Termux API

首先手機安裝Termux:API,然後在Termux中安裝termux-api,執行apt install termux-api即可。最後就可以參考Termux API文檔來玩耍了。

#查看當前位置
#termux-location [-p gps/network/passive] [-r once/last/updates]
termux-location -p gps -r once
#設置剪切版內容
termux-clipboard-set 

在centos6上裝Synapse

裝了Matrix家的Synapse就可以使用Riot.im聊天了,好處是服務器是自己的,客戶端是開源的。

首先跟着官方文檔,安裝依賴。此時需要注意centos6自帶的sqlite版本太低,而且插件FTS4也未啟用。參考Install Python and Sqlite from Source安裝sqlite和python2.7即可。

#安裝sqlite3.12並開啟FTS4
mkdir -p ~/tmp/compile&&mkdir ~/tmp/opt&&cd ~/tmp/compile
wget https://www.sqlite.org/2016/sqlite-autoconf-3120200.tar.gz
tar xf ./sqlite-autoconf-3120200.tar.gz
cd sqlite-autoconf-3120200
./configure --prefix=~/opt/sqlite/sqlite3 --disable-static --enable-fts5 --enable-json1 CFLAGS="-g -O2 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_RTREE=1"
make
make install
mkdir ~/bin
ln -s ~/opt/sqlite/sqlite3/bin/sqlite3 ~/bin/sqlite
#到這裡就安裝好了,執行sqlite即可看到版本為3.12
#執行pragma compile_options;可見FTS4已開啟
#.quit退出sqlite
#安裝使用sqlite3.12的python2.7
wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz
xz -d Python-2.7.14.tar.xz&&tar -xvf Python-2.7.14.tar
cd Python-2.7.14
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib ./configure LDFLAGS="-L$HOME/opt/sqlite/sqlite3/lib" CPPFLAGS="-I $HOME/opt/sqlite/sqlite3/include"
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib make
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib make install

使用virtualenv生成一個Synapse專用的虛擬環境。安裝Synapse時還會遇到Twisted版本過低,在虛擬環境下這樣操作一下:

wget https://twistedmatrix.com/Releases/Twisted/17.1/Twisted-17.1.0.tar.bz2
tar -jxvf Twisted-17.1.0.tar.bz2
cd Twisted-17.1.0
python setup.py install 
cd ..

配置nginx前置代理的時候,用letsencrypt的centbot各種失敗,最後還是用回ssl for free的笨方法。推薦使用letsencrypt的centbot,配好後非常省時省力。順便貼一下nginx配置:

server {
    listen 443 ssl;
    server_name YOURDOMIN;

    ssl_certificate     /etc/letsencrypt/live/YOURDOMIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/YOURDOMIN/privkey.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location /_matrix {
        proxy_pass http://localhost:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

由於使用了nginx做代理,所以8008端口的監聽範圍可以在homeserver.yaml中改成127.0.0.1。

最後跟着官方教程增加用戶,然後在Riot.im里勾上自定義服務器就可以聊天了。也可以參考下Run your end-to-end encrypted chat server using Matrix and Riot

Android我從F-droid下載的客戶端,沒有gcm,所以在後台時檢查消息的頻率可以自行設置,我設置的5分鐘,默認10分鐘。網頁端打開的時候有一點點慢,打開後就沒問題了。Fedora可以安裝taw/Riot的源,即

sudo dnf copr enable taw/Riot 
sudo dnf install -y riot --refresh

Synapse搬家

官方文檔並未給出具體備份與還原方法,經過摸索發現非常簡單。如果是按照我上面步驟安裝的,只需再新服務器上搭建好環境,然後複製如下文件到虛擬環境中就可以啟動了。

homeserver.yaml
YOURDOMIN.log.config   
YOURDOMIN.signing.key  
YOURDOMIN.tls.crt
YOURDOMIN.tls.dh
YOURDOMIN.tls.key
media_store
homeserver.db

Synapse重置用戶密碼

參考:reset password for matrix/synapse accounts

Termux Python3.6安裝paramiko

之前寫過一個python腳本通過paramiko使用SSH鏈接越獄後的iPhone執行一些安裝軟件或重啟SpringBoard之類的操作。後來遇到Termux覺得安卓手機也可以試試,不試不知道,一試坑不少,好在最後還是裝好了。

#首先安裝系統的依賴
apt install libffi-dev clang libsodium libsodium-dev openssl-dev libcrypt-dev python-dev
#然後安裝pynacl,直接pip裝會報錯,指定使用系統的sodium庫即可
SODIUM_INSTALL=system
pip install pynacl
#最後再安裝paramiko和python-nmap
pip install paramiko python-nmap

17112709

郭:于謙的父親王老爺子是個心地善良的富人,放出話來“別的地方我管不了,我方圓十里內不能有窮人”。然後,他把附近的窮人都趕走了。“我心善,見不了窮人”。