Anping English

一次性連結 API

一個呼叫產生一個連結。它跟 Thinfinity Workspace 8.5 的一次性連結 API(One-Time URL)一樣:路徑、選項名稱、型別、預設值和回應都相同。

大多數呼叫端只送 3 個值:apikey、apiuser、model。其他設定都放在 model 裡,在 Anping 伺服器上設定一次就好(model)。

curl -X POST https://anping.example.com/ws/oturl/get \
  --data-urlencode "apikey=$ANPING_API_KEY" \
  --data-urlencode "apiuser=alice@example.com" \
  --data-urlencode "model=sales-desktop"

回應:/oturl.html?key=...&pass=...。在前面接上 Anping 的網址,把使用者帶過去。

一個連結,從頭到尾

一次性連結的順序:你的伺服器申請連結,瀏覽器兌換並連線,連線結束時寫進連線記錄。 你的伺服器 使用者的瀏覽器 Anping 伺服器 Windows 經由 guacd 1 POST /ws/oturl/get apikey、apiuser、model 2 /oturl.html?key=...&pass=... 未使用:expires 分鐘內有效(預設 10) 3 連結 新分頁或你的網頁 4 頁面使用連結 綁定這個瀏覽器(/ws/oturl/redeem) 5 短效通行證 或:請使用者輸入缺少的帳號或密碼 6 即時連線 帶著通行證(WebSocket /tunnel) 7 遠端桌面 檢查登入和電腦的憑證 8 瀏覽器裡的桌面:畫面、按鍵、剪貼簿、檔案、聲音 9 重新整理或 Reconnect 只限同一個瀏覽器(/ws/oturl/connect) 10 End 連結永久失效(/ws/oturl/end) 11 連線記錄:每次連線一筆 一次性連結的順序:你的伺服器申請連結,瀏覽器兌換並連線,連線結束時寫進連線記錄。 你的伺服器 瀏覽器 Anping Windows 經由 guacd 1 POST /ws/oturl/get apikey、apiuser、model 2 /oturl.html?key=...&pass=... 未使用:expires 分鐘內有效(預設 10) 3 連結 新分頁或你的網頁 4 頁面使用連結 綁定這個瀏覽器(/ws/oturl/redeem) 5 短效通行證 或:請使用者輸入缺少的帳號或密碼 6 即時連線 帶著通行證(WebSocket /tunnel) 7 遠端桌面 檢查登入和電腦的憑證 8 瀏覽器裡的桌面 畫面、按鍵、剪貼簿、檔案、聲音 9 重新整理或 Reconnect 只限同一個瀏覽器(/ws/oturl/connect) 10 End 連結永久失效(/ws/oturl/end) 11 連線記錄:每次連線一筆
實線箭頭是請求,虛線箭頭是回應。第 4、9、10 步是連結頁面自己送出的呼叫。

請求

規則說明
方法從你的伺服器用表單送出(POST)。
更多表單內容:application/x-www-form-urlencoded 或 multipart/form-data。GET /ws/oturl/get?apikey=... 是與 Thinfinity 相容的寫法,給從 Thinfinity 移過來的程式用(什麼時候改):它會把金鑰和任何密碼放進網址,而代理伺服器和遙測常會記下網址。
同一個名稱出現兩次同一個名稱同時出現在表單和網址裡時,以表單為準,apikey 例外。
更多查詢字串裡的金鑰會在讀取內容之前先檢查。
內容最多 64 KB;超過會得到錯誤 413。不讀 JSON。
名稱不分大小寫。不認得的名稱會被忽略。
是或否的值是或否的值:true/false、1/0、yes/no、on/off。

model、overrideDefaults、不用 model

model 是在 Anping 伺服器上設定好的一台電腦(Targets:N:*),相當於 Access Profile;它的 Id 可以沿用你設定檔的代號。三種模式跟 Thinfinity 一樣:

你送的設定來自附註
model=<id>只有 model請求裡的連線選項一律忽略,只有 model 缺少的使用者名稱或密碼例外。
更多連不合法的也忽略。apiuser、plen、expires 和 format 照常有效。
model=<id>
overrideDefaults=true
先看請求,再看 model只能在 model 的上限(Allow 設定)和它的程式範圍內(安全性)。
更多請求裡的 computer 永遠拿不到 model 的帳密、安全性或憑證設定,只用它自己的(連結指定的電腦)。
不給 model只有請求computer 必填,而且必須被允許。

都沒給的選項用下表的預設值。誰給了使用者名稱,密碼也由誰給;缺少的由連結頁面請使用者輸入。

參數

每張表列出選項、預設值、作用,以及跟 Thinfinity 比起來如何:✓ 跟文件一致,部分支援 有差異,無法支援 桌面引擎(Apache Guacamole 的 guacd 1.6.0)做不到,Anping 新增 額外功能。Allow 上限:model 的,或請求指定的電腦用 Oturl:ComputerPolicy。

請求本身

參數預設作用Thinfinity
apikey必填Oturl:ApiKeys 其中一把。沒給或錯誤:錯誤 401。
更多以固定時間比對。同一個位址一分鐘內錯了 Oturl:MaxFailuresPerMinute 次之後,再錯的金鑰回 429;正確的金鑰永遠不會被擋。每把金鑰每分鐘最多產生 Oturl:MaxLinksPerKeyPerMinute 個連結。
✓
apiuser必填申請者,例如電子郵件;寫進連線記錄。
更多最多 256 字元。跟連結一起保存,並寫進每次連線的記錄;Anping 伺服器自己的記錄只寫連結 id。
✓
model無一組電腦設定的名稱(Targets:N:Id),大小寫要相同。不存在:錯誤 400。✓
overrideDefaultsfalsetrue:請求裡的選項優先於 model 的。✓
plen8pass 的長度,8 到 64。
更多超出範圍會被夾到邊界。只用不易混淆的英文字母和數字(沒有 0、O、1、l、I)。
✓
expires10沒用過的連結可用幾分鐘,1 到 1440。
更多超出範圍會被夾到邊界。預設和上限:Oturl:DefaultExpiresMinutes、Oturl:MaxExpiresMinutes。
✓
format文字json:改用 {"url": "...", "expiresAt": "..."} 回應,而不是純文字。Anping 新增

電腦和登入

參數預設作用Thinfinity
computermodel 的哪一台電腦:host、host:port 或 [IPv6]:port。必須在 Oturl:AllowedComputers 允許之內,否則得到錯誤 403。
更多連接埠 3389,desttype=VMID 時 2179。它的安全性和憑證檢查來自 Oturl:ComputerSettings(連結指定的電腦)。
✓
username
password
model 的缺少的由連結頁面詢問;永遠不會保存。
更多被拒絕時表單會再出現,使用者名稱保留;登入失敗的次數有限制(登入次數限制)。DOMAIN\user 會拆成網域和使用者;user@domain 原樣送出。
✓

程式

參數預設作用Thinfinity
startprg00 桌面,1 一個程式,2 單一程式視窗(RemoteApp)。
更多RemoteApp 用傳統的 RDP 圖形(不用圖形管線)。會啟動程式的 model 會保留它的程式,即使 overrideDefaults=true 也一樣,除非 model 設了 AllowProgramOverride。
✓
command無1:程式的路徑。2:RemoteApp 的名稱或 ||alias。
更多startprg 為 1 或 2 時必填。路徑含空白時自動加引號,後接 cmdargs。
✓
cmdargs無程式的參數。✓
directory無RemoteApp 的起始資料夾。部分支援
原因startprg=1 時會被忽略:guacd 1.6.0 沒有程式的起始資料夾。

畫面

參數預設作用Thinfinity
bpp32色彩深度(位元):8、15、16、24 或 32。
更多15 以 16 送出。低於 32 會關閉 RDP 圖形管線。沒給:32 位元色彩,搭配圖形管線(Thinfinity 預設是 16)。
✓
resolutionfittobrowserfittobrowser 跟著視窗,fittoscreen 用螢幕大小,fixed 用 width x height。
更多fittoscreen 和 fixed 都置中顯示,最大只到原本的大小,視窗比較小時會縮小;工具列的 More > Fit to window 會把它放大到填滿視窗。
✓
width
height
使用者的螢幕fixed 時:1 到 8192 像素。
更多96 dpi(Windows 100%)。缺少的一邊用使用者螢幕的大小。
✓
imagequality10 最清楚(無損);1 隨連線狀況調整。
更多1:連線變慢時 guacd 會降低 JPEG/WebP 品質,靜止的內容維持無損。
部分支援
原因2 和 3 的效果跟 1 一樣:guacd 1.6.0 沒有分開的等級。
desktopbackground
visualstyles
menuwindowanimation
fontsmoothing
showwindowcontent
desktopcomposition
false桌布、佈景主題、選單動畫、字型平滑、拖曳時顯示視窗內容、桌面組合。✓

鍵盤

參數預設作用Thinfinity
unicodekeyboardtrue按鍵以按鍵送出;其他字元以文字(Unicode)送出。
更多使用 model 的鍵盤配置(預設美式)。配置裡有的鍵以按鍵送出,快速鍵照常可用。
部分支援
原因遠端連線用同一種配置時,文字才會正確。連線設成其他配置時,會照那個配置打字。
keyboardlayout00000409unicodekeyboard=false 時:Windows 鍵盤配置的編號(已對應 24 個)。
更多其他 id 用 model 的配置。已對應:美式和英式英文、德文、瑞士德文和法文、法文、比利時、加拿大法文、義大利文、西班牙文、拉丁美洲、葡萄牙文、巴西、瑞典文、丹麥文、挪威文、波蘭文、捷克文、匈牙利文、羅馬尼亞文、土耳其文、日文。
✓

連線和安全性

參數預設作用Thinfinity
consolefalse連到電腦的主畫面(主控台工作階段)。✓
wscompressiontrue瀏覽器可以的話,壓縮即時連線(WebSocket)。
更多permessage-deflate,兩個方向都不沿用壓縮上下文。
✓
disablenlafalse略過提早的登入檢查(NLA),給不支援它的伺服器用(非 Microsoft 的 CredSSP)。憑證照樣檢查。✓
desttype
destinfo
無VMID:Hyper-V 虛擬機器。RDS:伺服器群(RD 連線代理)。
更多VMID:destinfo 是 VM id,連接埠 2179。RDS:destinfo 當作負載平衡資訊交給連線代理。其他值:一般連線。
✓ 還沒實測

共用資料夾和剪貼簿

參數預設作用Thinfinity
diskenabledtrue共用資料夾,不超過 AllowUpload、AllowDownload。✓
disknameAnping共用資料夾的名稱(Thinfinity 預設是 ThinDisk)。
更多Anping 伺服器預設:Oturl:DefaultDiskName。頁面上稱它為 <名稱> drive(Anping 伺服器沒說時是 Shared drive)。
部分支援
原因還沒確認 Windows 顯示的是這個名稱還是 GUACFS。
diskautodownloadtrue存進共用資料夾的檔案,會自己下載到瀏覽器。
更多檔案關閉後 2 秒沒有再動就下載(Files:AutoDownloadSettleMs)。false:檔案留在共用資料夾裡,從 Files 面板取用。不會送出:一開始就在的檔案、上傳的檔案、空檔和暫存檔、只被改名或開啟過的檔案,以及程式一直開著的檔案。超過 Files:MaxUploadBytes,或共用資料夾的上限已經放不下 Anping 伺服器的副本時,檔案會留在共用資料夾裡,Transfers 會說明。Download 資料夾以外的檔案需要 Anping 伺服器跑在 Linux 上(部署)。
✓ 還沒在 Windows 上確認
clipboardtrue文字的複製貼上,不超過 AllowCopy、AllowPaste。
更多false:兩個方向都關閉,Anping 伺服器也會強制執行。把檔案貼到遠端焦點所在的地方,還需要共用資料夾的上傳(AllowUpload);不能貼上時,檔案仍然可以上傳。
✓

聲音和列印

參數預設作用Thinfinity
soundenabledfalse遠端電腦的聲音,不超過 AllowAudio。
更多頁面上第一次點擊或按鍵後開始。
✓
soundquality10 到 3(下方)。✓
printerenabledfalsePDF 印表機,不超過 AllowPrinting,而且只在列印有開啟時(Guacd:Printing,預設關閉)。
更多每個工作都下載成 PDF。關閉共用資料夾時也能用。列印關閉時連結照樣能開,只是沒有印表機,試跑會說明原因。要開啟需要有 Ghostscript 的桌面引擎,而 Ghostscript 是 AGPL-3 授權,或要向 Artifex 買商業授權。
✓
printersetasdefaulttrue這台印表機是遠端電腦的預設印表機。部分支援
原因false 做不到:guacd 1.6.0 一定把它的印表機設成預設。
printernameAnping PDF Printer它在遠端電腦上的名稱。
更多Anping 伺服器預設:Oturl:DefaultPrinterName。
✓
printerdriver無忽略。無法支援
原因guacd 1.6.0 一定使用它自己的 PostScript 驅動程式名稱。

聲音品質

soundquality聲音資料量(kbit/s)
0Windows 送來的原樣(通常是 44.1 kHz 立體聲、16 位元)1411
1(預設)22.05 kHz 立體聲,16 位元706
222.05 kHz 單聲道,16 位元353
311.025 kHz 單聲道,8 位元88
聲音的其他細節

數字是 base64 編碼和壓縮之前的位元率。瀏覽器還在擋聲音時送來的聲音會丟掉,不會排隊。第一次點擊或按鍵之前,工具列會顯示 Enable sound,之後是 Mute 和 Unmute。

回應

format回應(成功,200)
無純文字(text/plain; charset=utf-8):連結的後半段,接在 Anping 的網址後面:
/oturl.html?key=<43 characters>&pass=<plen characters>
jsonJSON(application/json):
{"url": "/oturl.html?key=...&pass=...", "expiresAt": "2026-11-01T05:41:42.0640041+00:00"}

回應一律不會被快取(Cache-Control: no-store)。

錯誤

錯誤以純文字(text/plain)回傳:一句簡短原因,指出是哪個選項,但不會重複它的值。

錯誤代碼何時訊息(舉例)
400選項缺少或不對。
更多超過長度限制或含控制字元的值也會被拒絕。
Unknown model.
更多apiuser is required.
computer or model is required.
computer must be host or host:port.
command is required when startprg is 1 or 2.
destinfo is required with desttype.
bpp must be one of 8, 15, 16, 24, 32.
console must be true or false.
401金鑰沒給或錯誤,或 Anping 伺服器沒有設定金鑰。Invalid API key.
403computer 不在 Oturl:AllowedComputers 裡。computer is not allowed.
413請求超過 64 KB。Request body too large.
429你的位址送了太多錯誤金鑰,或同一把金鑰產生太多連結。
更多錯誤金鑰:這一分鐘內、從你的位址;正確的金鑰永遠不會被擋。連結:同一把金鑰一分鐘內超過 Oturl:MaxLinksPerKeyPerMinute 個。
Too many failed attempts. Try again later.
Too many links for this API key. Try again later.
503Anping 已經保存了 Oturl:MaxLinks 個連結。
更多沒用過、開著或還在重新連線視窗內的都算。
Too many open links. Try again later.

連結效期和重新連線

連結效期:沒用過時最多 expires 分鐘,開啟後連線,每次斷線後有 10 分鐘的重新連線視窗,第一次開啟 12 小時後結束。 產生 第一次開啟 斷線 Reconnect 還沒用過 expires:10 分鐘 連線中 只限這個瀏覽器 重新連線視窗 每次斷線後 10 分鐘 再次連線 重新整理或 Reconnect 連結結束 不能再建立新連線 第一次開啟後最多 12 小時(Oturl:MaxLifetimeHours) 連結效期:沒用過時最多 expires 分鐘,開啟後連線,每次斷線後有 10 分鐘的重新連線視窗,第一次開啟 12 小時後結束。 產生 第一次開啟 斷線 Reconnect 還沒用過 expires:10 分鐘 連線中 只限這個瀏覽器 重新連線視窗 每次斷線後 10 分鐘 再次連線 重新整理或 Reconnect 連結結束 不能再建立新連線 第一次開啟後最多 12 小時(Oturl:MaxLifetimeHours)
圖中是預設值。
時機會發生什麼
還沒用過產生後 expires 分鐘內有效。
第一次開啟變成已使用,並綁定那個瀏覽器(用 cookie)。
更多只屬於這個連結的 cookie(HttpOnly,Path=/ws/oturl)。網址列只留下連結 id(?link=)。
重新整理、Reconnect只限同一個瀏覽器,最後一次斷線後 Oturl:ReconnectMinutes(10)分鐘內,而且在第一次開啟後 Oturl:MaxLifetimeHours(12)小時內。
更多連線中的連線到那時也會結束(max_duration)。
網路斷掉頁面會自己重新連線 60 秒。
更多畫面顯示 Reconnecting…,沿用使用者輸入的帳密,它們只存在頁面的記憶體裡。被拒絕的登入、已使用或過期的連結、Anping 伺服器重新啟動,都不會自動重試。
另一個分頁最新的連線優先;舊的頁面會提供 Use here。
更多一次一條連線:同一個瀏覽器重新整理、重新連線或開另一個分頁,會立刻接手。舊的頁面顯示 This desktop was opened in another tab or window.
沒有輸入、時間上限閒置 Sessions:IdleTimeoutMinutes(60)分鐘或滿 Sessions:MaxDurationMinutes(720)分鐘,連線和連結一起結束。
更多輸入指使用者透過頁面送出的東西:按鍵、滑鼠、觸控、剪貼簿和檔案傳輸;遠端在播放的影片不算。閒置結束前一分鐘、時間上限前五分鐘會出現倒數(任何輸入都會取消閒置的倒數)。兩種結束之後都不能重新整理或 Reconnect。
End、DisconnectEnd 讓連結永久失效;Disconnect 保留重新連線視窗。
更多End 會先詢問,下一個用這台共用電腦的人就不能重新整理進到這個連線。不論哪一種,Windows 連線都會保持登入(已中斷連線),直到 Windows 自己的時間限制結束它。
Anping 伺服器重新啟動所有連線結束;使用者需要新的連結。
更多連結存在 Anping 伺服器的記憶體裡。重新啟動或重新部署時頁面顯示 The remote desktop service restarted.
其他所有人已使用、過期、不存在或錯誤的連結都顯示同一句話。
更多This link has already been used or has expired.
缺少使用者名稱或密碼頁面會詢問;只用在那一次連線,永遠不會保存。
更多連結缺少的使用者名稱和密碼只為那一次連線送到 Anping 伺服器。登入失敗的次數有限制(下方)。

登入次數限制

讓拿到連結的人不能透過 Anping 猜 Windows 密碼。

限制預設之後
每個連結連續 5 次(Oturl:MaxSignInFailures)連結鎖住。每次失敗之間等 2、4、8、16 秒(Oturl:SignInDelaySeconds)。
更多成功一次就重新計算。下一次輸入的登入之前,頁面會自己等。
自帶使用者名稱和密碼的連結1第一次被拒絕就鎖住,所以 Windows 帳號不會被鎖。
每個網路10 分鐘內 20 次(Oturl:MaxSignInFailuresPerIp、Oturl:SignInFailureWindowMinutes)從那個網路輸入的登入,要等這 10 分鐘過了才行。
更多跨所有連結計算,以位址為單位(IPv6 以 /64 計)。
訊息和不在範圍內的情況

安全性

項目重點
連結裡的機密很長的隨機機密(256 位元),只以打亂後的形式(雜湊)保存,一開啟就從網址列拿掉。
更多key 和 pass 只保存 SHA-256 雜湊。頁面會最先把它們從網址列移除,而且不送 Referer(Referrer-Policy: no-referrer)。
API 金鑰安全地比對(固定時間);可以同時設多把,方便更換;至少 32 字元。
更多不是 Development 環境時,用公開的 dev 金鑰或少於 32 字元的金鑰,Anping 伺服器會拒絕啟動:請用 openssl rand -hex 32 產生金鑰。
允許哪些電腦只有 Oturl:AllowedComputers,所以外洩的金鑰也連不到其他機器。
更多主機、主機加連接埠,或 IP 範圍。不會解析名稱;清單是空的就只能用 model。
電腦的憑證先檢查登入(NLA);只接受憑證對名稱受信任,或已釘選(SHA-256)的電腦。
更多憑證被拒絕時,連線以 target_cert_invalid 結束,Anping 伺服器記錄會寫出那台電腦出示的憑證(憑證)。
上限請求可以關掉功能,但不能開到超過 model 的 Allow 設定。
更多AllowCopy、AllowPaste、AllowUpload、AllowDownload、AllowAudio 和 AllowPrinting 對請求和設定檔都有效。會啟動程式的 model 會保留它的程式,除非設了 AllowProgramOverride。連到請求指定電腦的連結:Oturl:ComputerPolicy。
嘗試次數限制錯誤金鑰和打開連結失敗,都以網路位址計算次數;使用者永遠擋不到你的程式。
更多同一個位址(IPv6 以 /64 計)一分鐘內錯了 10 次 API 金鑰之後,那一分鐘內再錯的金鑰回 429;正確的金鑰永遠不會被擋。同一個位址一分鐘內 30 次開啟連結失敗,那一分鐘內不能開啟連結。重新連線不計入。登入:另有限制。
瀏覽器防護每個回應都帶標準的瀏覽器防護(CSP、nosniff、Permissions Policy、HSTS)。只有連結頁面能放進框裡,而且只限 Oturl:FrameAncestors。
更多每個回應都帶 Content Security Policy、X-Content-Type-Options: nosniff 和 Permissions Policy,https 時還有 HSTS;沒有 Server 標頭;請求內容最多 64 KB。/oturl.html 以外的回應都帶 frame-ancestors 'none' 和 X-Frame-Options: DENY。
記錄Anping 的記錄裡永遠沒有網址、金鑰、pass 或密碼。
更多有測試檢查這件事。你這邊的代理伺服器和遙測可能會記下網址:對 /ws/oturl/get、/ws/log 和 /oturl.html 不記查詢字串,或改用 POST。
只在伺服器端瀏覽器從不送電腦名稱、連接埠或連線設定。
更多它只會加上自己的顯示大小和時區(Anping 伺服器兩個都會檢查),以及連結缺少、由使用者輸入的使用者名稱和密碼。
時間和大小、啟動檢查連線時間和共用資料夾大小有上限(效期、設定);不安全的設定會讓 Anping 伺服器不啟動(主機)。

連線記錄

每次連線一筆:誰(apiuser)、連結的代碼、電腦、使用者的網路位址、開始時間、持續多久、怎麼結束,以及重新連線幾次。沒有密碼或金鑰。用 API 金鑰讀取:

在哪裡怎麼用
頁面/log.html:貼上金鑰、選日期、篩選,按 Show 或 Download CSV。
更多用 apiuser 或連結 id 篩選。清單上方有總計,每一筆怎麼結束用帶符號的標籤標示:✓ 正常,⚠ 到了限制或連線中斷,✕ 失敗,◐ 還在進行。有設定產品名稱或標誌的話,會顯示在頁首。手機上也能用。
APIGET|POST /ws/log,format=json 或 csv。
更多參數:apikey(用 POST 表單就不會出現在網址裡)、from 和 to(yyyy-MM-dd,以 UTC 日期計;預設最近 7 天)、apiuser、linkid、model、limit、format(給 Excel 用的 csv)。這裡錯誤的金鑰分開計算,所以永遠不會擋到產生連結。
存放ConnectionLog:Path,保留 ConnectionLog:RetentionDays(90)天。
更多JSON Lines 檔案,放在只有 Anping 伺服器掛載的 volume 上;較舊的日子會刪除。沒設路徑時只存在記憶體裡,重新啟動就不見了。
服務台連線結束時訊息方塊裡的 Reference,以及 Windows 看到的電腦名稱(Anping-…),都能找到那一筆。
更多連線結束時,頁面會顯示 Reference: <link id>, <UTC time>。Windows 看到的用戶端名稱是 Anping- 加上連結 id 的前 8 個字元(%CLIENTNAME%、工作管理員),除非 model 設了 ClientName。
怎麼結束closed、page_closed、taken_over、ended、gateway_stop 或錯誤代碼。
更多closed:按了 Disconnect,或遠端結束。page_closed:頁面關掉或重新整理。taken_over:同一個瀏覽器又開了這個連結。ended:結束連線。gateway_stop:Anping 伺服器停止或當掉時,每筆記錄仍然會寫上結束。錯誤代碼例如 auth_failed、target_cert_invalid、idle_timeout、max_duration、drive_full。被授權拒絕的連線也有一筆,立刻結束:license_limit(授權的連線都在使用中)或 license_expired。

授權

帶 API 金鑰的 GET|POST /ws/license 以 JSON 回答授權狀態和使用中的連線數;/log.html 的最上方顯示同樣的內容(安裝和續約)。

更多

試跑

/ws/oturl/check 接受跟 /ws/oturl/get 一樣的請求,但永遠不會產生連結。它的回應(JSON)會列出每一個問題,以及連結會拿到什麼(搭配重播工具使用)。

更多

Anping 伺服器設定

寫在 appsettings.json 或環境變數裡;環境變數的 : 寫成 __(Oturl__ApiKeys__0)。金鑰和密碼請放在機密儲存裡。每張表列出設定、預設值和它的意義。

一次性連結

設定預設意義
Oturl:ApiKeys無Anping 接受的 API 金鑰。沒設的話,每個請求都得到錯誤 401。
更多不是 Development 環境時每把至少 32 個亂數字元。
Oturl:AllowedComputers無請求的 computer 可以指定哪些電腦:host、host:port 或一段位址範圍(CIDR)。
更多host 允許任何連接埠;10.0.0.0/24 這樣的範圍比對 IP 位址。
Oturl:ComputerPolicy:
AllowCopy, AllowPaste,
AllowUpload, AllowDownload,
AllowAudio, AllowPrinting
true請求指定的電腦的上限。
Oturl:FrameAncestors無可以把連結頁面(/oturl.html)放進框裡的網站(來源)。
更多https://app.example.com(http 或 https,主機和連接埠,不含路徑和結尾斜線)或 'self'。其他寫法會被忽略。
Oturl:DefaultExpiresMinutes
Oturl:MaxExpiresMinutes
10、1440沒給 expires 時的值,和它的上限。
Oturl:ReconnectMinutes10每次斷線後,連結還能重新連線多久。
Oturl:MaxLifetimeHours12第一次開啟後這麼久,不能再建立新連線,連線中的也會結束。
Oturl:MaxLinks10000Anping 同時保存的連結數;超過就是錯誤 503。
Oturl:MaxLinksPerKeyPerMinute300每把金鑰每分鐘的連結數;超過就是錯誤 429。
Oturl:MaxFailuresPerMinute10每個網路位址每分鐘的錯誤金鑰次數;超過就是錯誤 429。
Oturl:MaxLinkFailuresPerMinute30每個網路位址每分鐘打開連結失敗的次數;超過就是錯誤 429。
Oturl:MaxSignInFailures
Oturl:SignInDelaySeconds
5、2連續幾次失敗會鎖住連結;第一次等待秒數,每失敗一次加倍(登入次數限制)。
Oturl:MaxSignInFailuresPerIp
Oturl:SignInFailureWindowMinutes
20、10每個網路位址在這麼多分鐘內,跨所有連結輸入的登入失敗次數上限。
Oturl:DefaultDiskName
Oturl:DefaultPrinterName
Anping、Anping PDF Printermodel 和請求都沒給 diskname 或 printername 時的名稱。

連結指定的電腦(Oturl:ComputerSettings:N)

給連結在 computer 指定的電腦用。沒有設定時,會提早檢查登入(NLA),憑證也必須對它的名稱受信任。連結只能改 disablenla。

設定預設意義
Computer必填host(任何連接埠)或 host:port(優先於 host),不能用位址範圍。
Securitynla跟 model 一樣;沒有提早登入檢查(NLA)的電腦用 tls。
CertFingerprints無它的憑證可以有的指紋(SHA-256);更換憑證期間可以列好幾個(憑證)。
更多寫法是 sha256:..。
IgnoreCertfalse不檢查憑證。只能用在開發和實驗用的伺服器。

電腦和 model(Targets:N)

設定預設意義
Id, Name必填、同 Idmodel 的值;工具列顯示的名稱。
Host, Port必填、3389那台 Windows 電腦(遠端桌面預設用連接埠 3389)。
Username, Password,
Domain
無缺少的由請求或使用者提供。
Securitynlanla、nla-ext、tls、vmconnect、any 或 rdp。
更多tls 給沒有 NLA 的電腦。any 和 rdp 允許標準 RDP 安全性,它不檢查憑證:啟動記錄會發出警告。
CertFingerprints無它的憑證可以有的指紋(SHA-256);沒設的話,憑證必須對 Host 的名稱受信任(憑證)。
IgnoreCertfalse不檢查憑證。只能用在開發和實驗用的伺服器。
更多其他地方有這個設定時 Anping 伺服器會拒絕啟動,除非設了 Dev:AllowIgnoreCert。
KeyboardLayouten-us-qwerty這次連線的鍵盤配置,用桌面引擎的名稱(例如 de-de-qwertz)。
AllowCopy, AllowPaste,
AllowUpload, AllowDownload,
AllowAudio, AllowPrinting
true請求不能超過的上限。
更多從遠端複製、貼到遠端、兩個方向的檔案傳輸、聲音、印表機。false:任何連結都不能開啟它。
ClipboardLineEndingswindows複製的文字怎麼換行:windows、unix 或 preserve。
TimeZone瀏覽器的時區一個時區(IANA 名稱,例如 Asia/Taipei),套用到每次連線。
更多空白:用各個瀏覽器自己的時區。不論哪一種,Windows 都要開啟一項原則才會套用(Windows 電腦)。
ClientNameAnping- 加連結 id 的 8 個字元Windows 看到的使用者電腦名稱。
更多%CLIENTNAME%:1 到 15 個英文字母、數字、- 或 _。不要放使用者名稱或機密。
TouchMouseMouse,或 Native:Windows 自己的多點觸控(還沒在 Windows 上試過)。
更多Mouse:觸控在任何電腦上都當成滑鼠。Native:Windows 開啟多點觸控通道後用它,在那之前仍是滑鼠。
WindowsIme不設工具列的 Windows IME 選單:true 都顯示,false 都不顯示。
更多不設時:只在瀏覽器的語言包含中文、日文或韓文時顯示。沒有滑鼠或觸控板時一律不顯示。
AllowProgramOverridefalsetrue:overrideDefaults=true 時可以換掉 model 的程式,跟 Thinfinity 一樣。
Oturl:<參數>無任何連結選項,例如 Targets__0__Oturl__startprg=2。
更多computer 和帳密除外,它們是上面的欄位。值不合法時,不是 Development 環境 Anping 伺服器會停止,Development 環境則是警告。
請求不能設定的設定

TimeZone、ClientName、Touch 和 WindowsIme 不是 OTURL 參數:不論哪種模式,請求都不能設定它們。不認得的 TimeZone 或不合法的 ClientName 會在啟動記錄裡發出警告,然後不採用。

網址、負載平衡器和上限

設定預設意義
ASPNETCORE_ENVIRONMENTProductionProduction 拒絕不安全的設定;Development 只發出警告。
更多映像檔的預設。不是 Development 時,API 金鑰是公開的 dev 金鑰或少於 32 字元、開著測試頁面或 dev 網路模擬、缺少下面的代理伺服器設定、AllowedHosts 是 *,或有不合法的設定,Anping 伺服器都會拒絕啟動,記錄會寫出原因。Development 只在你自己的電腦上用。
AllowedHostslocalhost;127.0.0.1;[::1]Anping 回應的名稱:加上你的公開名稱,不能用 *。
ForwardedHeaders:KnownNetworks無你那台處理 https 的負載平衡器(TLS 代理)所在的網段(CIDR)。
更多只有從那裡來的 X-Forwarded-For 和 X-Forwarded-Proto 才算數:次數限制用的用戶端位址,HSTS 和 cookie 用的 https。
ForwardedHeaders:NoProxyfalsetrue:瀏覽器直接連線,沒有負載平衡器。不是開發環境時,這個和上一個至少要設一個。
Tunnel:MaxSessions100每台 Anping 伺服器的連線數,加上正在建立中的連線;超過時頁面會顯示忙碌中。
更多授權的連線數也照樣有效;取兩者中較小的。
License:Path/etc/anping/license/anping.license授權檔(授權)。每次建立新連線都重新讀取,所以續約不用重新啟動。
License:Content無用授權檔的內容取代檔案(環境變數 License__Content);優先於路徑。
更多這兩個設定都不能讓 Anping 信任別的簽章金鑰:那些金鑰是建置在 Anping 裡的。
Sessions:IdleTimeoutMinutes60這麼久沒有輸入就結束連線(一分鐘前會警告)。0:關閉。
Sessions:MaxDurationMinutes720(12 小時)每次連線最長多久(五分鐘前會警告)。0:關閉。
更多連結的連線也會在 Oturl:MaxLifetimeHours 時結束。

桌面引擎、檔案和記錄

設定預設意義
Guacd:Host, Guacd:Portlocalhost、4822Anping 在哪裡找它的桌面引擎(guacd),就在它旁邊;外面永遠連不到(部署)。
Guacd:Printingfalse列印預設關閉:所有連結都不會有印表機。桌面引擎有 Ghostscript 時才能設成 true;Ghostscript 是 AGPL-3 授權,或要向 Artifex 買商業授權。
更多桌面引擎用 Ghostscript 把每個列印工作轉成 PDF。官方的 guacamole/guacd:1.6.0 映像檔有它;Anping 自己的引擎映像檔不放它。
Files:DriveRoot無放共用資料夾的地方,Anping 和桌面引擎用同一個路徑。
更多空的:完全沒有檔案傳輸,diskenabled 也不會有任何作用,而且不會報錯。
Files:MaxUploadBytes104857600(100 MB)最大的上傳檔案,也是最大的自動下載檔案。
Files:DriveQuotaBytes1073741824(1 GB)每次連線的共用資料夾最多能放多少。0:不限制。
更多放不下的上傳會被拒絕(The remote drive is full.);遠端寫入超過它時,連線會結束(drive_full),共用資料夾也會刪除。Anping 伺服器為自動下載或保留檔案而存的副本也算在內。volume 需要這個大小乘上每個 replica 的連線數。
Files:AutoDownloadSettleMs2000存好的檔案要多久沒再動,才下載(毫秒)。
更多檔案關閉或改名就位後,要多久(毫秒)沒有再動才送出。程式存檔常會經過暫存檔和改名。
Files:QuotaCheckSeconds5多久量一次正在使用的共用資料夾。
更多遠端自己的寫入擋不下來,所以寫得很快時,在連線結束前最多會多寫這幾秒的量。
ConnectionLog:Path
ConnectionLog:RetentionDays
無、90連線記錄的資料夾和保留天數(0:永久)。
更多放在只有 Anping 伺服器掛載的 volume 上。空的:只存在記憶體裡,重新啟動就不見了。

你的品牌(Brand)

設定預設意義
Brand:ProductName無你的產品名稱,顯示在工具列和瀏覽器分頁上,最多 64 個字元。
Brand:LogoUrl無你的標誌:Anping 伺服器上的路徑或 data:image 網址,不能用其他網站。
更多工具列的標誌和網站圖示,例如 /brand/logo.svg,或 base64 的 data:image 網址(png、svg+xml、webp、jpeg 或 gif)。不能用其他主機,所以第三方不會知道誰開了桌面。
Brand:AccentColor內建你的顏色:#rgb 或 #rrggbb。
不設的時候

頁面不顯示任何產品名稱:分頁標題是 Remote desktop,工具列沒有名稱,強調色用內建的顏色。頁面從 GET /api/brand 讀取這些設定。不合法的值會在啟動記錄裡發出警告,然後不採用。