星期二, 3月 20, 2018

Auto sync CentOS server time

要讓眾 Client 向 Server 對時已是很多系統的基本需求,所以我們得先搞懂 Server 如何讓自己的時間準確?
  • yum install ntp
  • 根據這個網站挑選合適的時間伺服器列表,ping 確認網路通暢後,加在 /etc/ntp.conf
  • systemctl start ntpd
  • systemctl enable ntpd
  • timedatectl set-ntp true
  • 等五分鐘
以前不知要有點耐心,下完指令總以為還缺什麼,就是沒有校正時間?「等五分鐘」值得一記。

Testing your private key and certificate for HTTPS

雖然各種 Web Application Server 很容易安裝私鑰與憑證來支援 HTTPS,但如何確認安裝是成功的?連連看應該有分幾個層次,否則一旦連不上,也不知道要找誰求救:
  • check ip
    • ping <Host_IP>
  • check name resolution
    • nslookup <Host_Name>
  • check port from client
    • telnet <Host> <Port>
    • echo > /dev/tcp/<Host>/<Port> && echo open || echo closed
  • check port from server
    • ss -tnlp
    • firewall-cmd --list-all
  • check response
    • curl <Url>
    • Browser
其實在最後一關,有時也必須再細分 HTTP / HTTPS,若在 Server 端一好一壞,可以檢查:
  • 檔案路徑
  • 存取權限
  • 私鑰密碼
  • 憑證串鍊
  • 加密協定
若是 Server 端正常,但 Client 端一好一壞,只剩一招:
  • openssl s_client -connect <Host>:<Port>
至少有一次檔案傳壞了就是這麼找到的。

星期五, 3月 02, 2018

ngrok + NextCloud + WebDAV + cURL

過去常在用 SCP + bakop.com 做為沒有圖形介面、沒有 VPN 時的抓檔來源,但畢竟是外部資源,用得不太安心。雖然以前也對 OwnCloud 下過功夫研究,但苦於必須有圖形介面瀏覽器限制,這次終於有突破:
  • 檔案分享-NextCloud
  • 指令存取-WebDAV + cURL
  • 內網外露-ngrok
其實公司早就在推 NextCloud,但並非網管,我一直試不成功。這次差別是我自己在內網用 docker 開了有絕對管理權限的一台新的,才知原來整合 LDAP 之後,各使用者有個 UUID 代表 UserName,並不等於登入帳號,所以取檔案大約像這樣:
  • curl -u 'user:pass' -O http://nc.acme.com/remote.php/dav/files/UUID/path/to/file
[2018/03/14]
原來 UUID 還是可以改的,不至於太難用,可參考 Internal Username 這段。

[2018/03/30]
ngrok 取來的主機名稱可以保留蠻久的,直到最近一次斷電。因為重新連上一定會換名字,每次都要進 config/config.php 改 trusted_domain 也實在麻煩,尤其是 docker 裡面連 vi 都沒有。一個修改訣竅是:
  • 'trusted_domains' =>
  • array (
  • 0 => '*.ngrok.io',
  • ),
另外提到在 docker 裡面不容易編輯 config.php,可以運用 occ 這個工具:
  • ./occ config:system:set 0 --value=*.ngrok.io
  • ./occ config:system:get
[2018/04/04]
單開一組帳密給外人使用似乎是管理者的特權,那我們一般小老百姓呢?也是可以在自己的管理範圍內開出共享目錄,以 http://nc.acme.com/s/<shareLink> 允許讀寫、不設密碼保護為例,上傳:
  • curl -u '<shareLink>:' -T <fileName> http://nc.acme.com/public.php/webdav/ [--progress-bar -o /dev/null]
下載:
  • curl -u '<shareLink>:' -O http://nc.acme.com/public.php/webdav/<fileName>
查詢目錄內容:
  • curl -u '<shareLink>:' -X PROPFIND http://nc.acme.com/public.php/webdav/ | grep -o '<d:href>[^<]*</d:href>'
[2018/09/06]
共享匿名個別檔案有些不同:
  • curl http://nc.acme.com/s/<shareLink>/download -o <fileName>