2010-06-30 99 views
2

我需要通過一個C#軟件,這是運行客戶端創建FTP用戶,我不知道從哪裏開始或如何做到這一點,我甚至不知道這是可能的,因爲這會需要以root身份登錄?創建FTP用戶動態

我的另一個選項是調用通過C#軟件PHP腳本,它可以調用系統()腳本?

此功能需要在Linux共享主機上工作(因爲這是共享我不能盡我所能)。

+0

您使用的是什麼FTP服務器?如何正常創建FTP用戶? – William 2010-06-30 17:35:53

+0

通常我通過DirectAdmin控制面板創建它們,但我不知道安裝了哪臺服務器。 – Dominique 2010-06-30 17:36:55

+0

使用客戶端軟件的用戶是否知道DirectAdmin的信息? – William 2010-06-30 17:38:12

回答

1

如果這是我 - 這是再增加一個運動部件,我知道 - 我倒是分離用戶的創建,並放置在遠程服務器上,其中兩個服務器上的一個長期運行的進程過程和PHP外觀使用類似Gearman來協調作業。如果沒有像rsh這樣的外部設施,您將無法從C#創建遠程Linux服務器上的進程。除了只能通過專用Intranet訪問並且沒有外部訪問權限之外,某些內容只會讓我想到通過PHP網站創建用戶的想法。有一個單獨的過程會給你一個額外的步驟來驗證。

+0

我想更像是調用系統函數或類似的東西來創建FTP用戶。在某些情況下,軟件的用戶需要訪問某人才能將文件放入服務器,但我不希望他們手動創建FTP用戶,也不需要設置用戶/密碼/默認文件夾。 我也不喜歡PHP的想法,但我需要能夠遠程創建FTP用戶,我希望能找到更好的解決方案:) – Dominique 2010-06-30 17:43:47

2

您必須通過DirectAdmin管理FTP服務器的唯一方法。因此,除非有DirectAdmin的API並且您有權訪問它,否則您的共享主機提供商提供某種類型的API,您將無法執行此操作。

如果您可以使用system()管理共享主機上的用戶,那麼請儘量使用該路由。

如果你不能,那麼你可能需要創建一個服務器,接受傳入請求上運行的腳本,然後直接與管理嚮導來管理用戶。這需要腳本知道DirectAdmin憑據,並且如果DirectAdmin發生任何更新,它可能會破壞腳本。我會對這種方法非常小心,因爲任何有權訪問此腳本的人都可以管理ftp用戶。如果你的客戶可以管理這些FTP用戶,任何人都可以。如果有任何身份驗證,用戶如何與客戶端進行「身份驗證」。如果是這樣,他們如何被認證?因爲你的「api」腳本也需要使用該認證。

我的問題是,你真的需要創建一個FTP用戶嗎?如果他們只需要上傳一個文件,他們不能簡單地通過在線表單上傳文件嗎?或通過客戶?你需要使用FTP嗎?

編輯: 所以正如我在評論中所說,一個想法是有一個服務器端腳本(也許PHP),將處理管理文件。它會接受上傳/刪除/刪除文件的請求。當一個文件上傳到網站時,它將被存儲,並且它會返回一個特殊的令牌以及文件的位置。

客戶端會再取令牌,本地存儲它,當用戶管理客戶端上的文件時,它會使用該令牌進行進一步修改。我會隨機生成此令牌(不基於用戶的任何數據)。如何存儲令牌取決於您,可以在文件系統上使用這些文件或在數據庫中。

如果可能的話,客戶端和站點之間的通信應該通過SSL來完成,以阻止MITM攻擊。

至於上傳文件,這真的取決於你的客戶端如何認證它的用戶。如果通過中央數據庫,共享託管服務器可以訪問它,如果你不想這樣做,那麼你需要類似於公鑰系統的東西。以便客戶端可以發送共享主機腳本可以判斷用戶是否有效的密鑰。但是,您必須知道密鑰何時被撤銷等腳本。

因此,您要如何處理這部分內容取決於您。

+0

該軟件的用戶將銳意創建新的FTP用戶,但他們會通過它在線發送文件很多,我不希望每個用戶都使用相同的FTP帳戶/密碼,這就是爲什麼我想爲每個用戶創建一個FTP,我可以使用相同的子文件夾,但是如果有人希望他能找到賬戶/密碼並弄亂其他用戶文件。 – Dominique 2010-06-30 17:52:54

+0

但他們如何發送文件,他們已經使用FTP?他們會通過客戶端通過FTP客戶端發送它們嗎? – William 2010-06-30 17:54:43

+0

他們只通過軟件發送文件,這個軟件的用戶不知道FTP是什麼,一切都發送到FTP服務器,但在後臺,用戶甚至不知道他們有一個與他們的軟件相關的FTP密碼帳戶。 – Dominique 2010-06-30 17:58:04