當 Windows 10 首次安裝開機後, 位於虎尾科大網段的電腦, 可以直接連線到 Windows 10 網誌, 下載 windows_kms.bat, 並且在 IPv4 網路協定中 (已經向學校反應多年, 希望能夠讓 IPv6 網路協定上的電腦也可以認證, 但至今未果), 以管理者帳號執行 windows_kms.bat, 以便啟用教育版的 Windows 10.
安裝 Firefox 與 Waterfox
Windows 10 啟用之後的第一件事, 就是利用 Edge 安裝 Firefox, 然後再利用 Firefox 安裝 Waterfox. 至於 7zip 與 grepwin 也是必要安裝的套件. 7zip 用於解開所有格式的壓縮檔案, 而 grepwin 則可以用來搜尋特定目錄中檔案中的關鍵字或取代特定字串.
配置 uniextract
當使用 Windows 10 時, 假如希望以可攜方式執行各種套件, 可以配置 uniextract. 針對採用 .msi 安裝的套件, 可以直接將安裝後的目錄抽出, 直接利用設定以可攜模式執行. 例如: Putty 就是採用 .msi 安裝, 若使用 uniextract 就可以直接以免安裝方式取得所有可執行檔案.
nginx, Fossil SCM, stunnel, nssm
nginx 是 WWW server, Fossil SCM 是分散式版次管理系統, stunnel 則用於 https 代理, nssm 則可以將執行程式設為系統服務. 以上相關套件檔案也可以從 pj5073 中的討論區下載.
可攜程式環境
這裡的 compile_copsim_for_pj2022.7z 可攜程式環境帶有 [MSYS2], [CMake], [Python] 等套件. 可用來編譯 Solvespace 與 CoppeliaSim.
建立 Fossil SCM 網站
這裡所謂的 Fossil SCM 網站, 是能夠讓特定倉儲以網際的方式呈現, 功能類似 Github, 且功能並不遜於 Github, 可以透過 Fossil SCM 方式, 伺服 WWW 網站資料, 而且能夠直接宣告倉儲中的版次編號, 調出各版次的 WWW 網站.
首先以 fossil init pj2022.fossil 建立倉儲檔案, 若不想使用系統以隨機方式建立的密碼, 可以將 pj2022 帳號密碼在第一時間先改為 pj2022, 待登入後再進行變更如下:
Y:\>c: C:\compile_copsim>cd \pj2022 C:\pj2022>set path=%path%;C:\pj2022 C:\pj2022>cd repo C:\pj2022\repo>fossil init pj2022.fossil project-id: 82ce97c37f857c3b59d8f3ac6c1cae4b7198e0fc server-id: 7bc357d1f0d56f154a39b60aee2db5cf69bd1c0d admin-user: pj2022 (initial password is "EZ8FTR2fCB") C:\pj2022\repo>fossil user password pj2022 pj2022 -R pj2022.fossil
接下來要在 Windows 10 中啟動 Fossil SCM Web server, 可以採用:
C:\pj2022\fossil server C:\pj2022\repo\pj2022.fossil --port 9000
就可以在 http://localhost:9000 連接 Fossil SCM server.
假如要透過 stunnel 中的 https 合用, 則 Fossil SCM server 端則需要額外設定 --https, 也就是執行:
C:\pj2022\fossil server C:\pj2022\repo\pj2022.fossil --port 9000 --https
並且讓 stunnel 在 port 9000 接收 Fossil SCM server 送出的資料, 然後以 443 port 的 https 接受外部連線.
這時 stunnel 端的設定為:
[https] accept = c1.cycu.org:443 connect = 9000 cert = fullchain.pem key = privkey.pem TIMEOUTclose = 0
而 stunnel 中的 public key server 數位簽章, 則可以透過 Let's Encrypt 取得.
fossiloauth
由於 Fossil SCM 並不支援 Oauth2 協定登入, 因此利用 Flask 建立 fossiloauth, 允許採用 server 端 session 的互換, 讓採 Oauth2 登入的用戶可以設法視為登入 Fossil SCM, 此一應用主要允許各方用戶以 Oauth2 登入 Fossil SCM server, 在類似 Fossil SCM 模組中進行互動.
配置 fossiloauth 的設定範例如下:
# pip install authomatic mako waitress import authomatic from authomatic.providers import oauth2 # read client_id and client_secret from safe place other than put into script keyFile = open('./../cycu_org_oauth.txt', 'r') with open('./../cycu_org_oauth.txt', 'r') as f: key = f.read().splitlines() CONFIG = { 'google': { 'class_': oauth2.Google, 'consumer_key': key[0], 'consumer_secret': key[1], 'scope': oauth2.Google.user_info_scope } } domain_name = "c1.cycu.org" default_repo = "pj2022" repo_caps = "bfjk234C" # for Windows repo_path = "c:/pj2022/repo/" # for Ubuntu #repo_path = "/home/wcm2021/repository/" #fossil_port = "5443" fossil_port = "443" flask_port = "8443" uwsgi = True # derived default_repo_path = repo_path+default_repo+".fossil" flask_url = "https://"+domain_name+":"+flask_port flask_forum = "https://"+domain_name+":"+flask_port+"/forum" #login_url = "https://"+domain_name+":"+fossil_port+"/"+default_repo+"/login" login_url = "https://"+domain_name+":"+fossil_port+"/login" #forum_url = "https://"+domain_name+":"+fossil_port+"/"+default_repo+"/forum" forum_url = "https://"+domain_name+":"+fossil_port+"/forum" CALLBACK_URL = flask_forum
這時的 stunnel 則需要加入:
[https] accept = c1.cycu.org:8443 connect = 5000 cert = fullchain.pem key = privkey.pem TIMEOUTclose = 0
且 fossiloauth 採 waitress 方式啟動:
# pip install waitress from waitress import serve # under cmsimde import fossilapp import fossiloauth # run cmsimde dynamic site with production waitress #serve(fossiloauth.app, host='0.0.0.0', port=5000, url_scheme='https') serve(fossiloauth.app, host='127.0.0.1', port=5000, url_scheme='https')
也就是 fossiloauth 在 port 5000 執行, 然後以 port 8443 由 stunnel 接受外部以 https 連線.
最後, 為了要將網站 http 連線導向 https, 可以將 nginx 的 index.html 設為:
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <meta http-equiv="refresh" content="time; URL=https://c1.cycu.org" /> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <!-- <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> --> <script> window.location.replace("https://c1.cycu.org"); </script> </body> </html>
改採 nginx rewrite 設定
上述利用 meta 或 javascript 將 http 跳轉到 https 的效果都不是太好, 於是改為:
server { listen [::]:80 default ipv6only=on; server_name c1.cycu.org; return 301 https://$server_name$request_uri; }
No comments:
Post a Comment