2011-08-19 7 views
5

私は、UrwidフロントエンドとMongoDBバックエンドを持つアプリケーションをPythonで作成しています。最終的な目標は、SSH経由でアプリケーションを提供できるようにすることです。アプリケーションには独自の認証/識別システムがあります。私は各ユーザーのために新しいプロセスを起動するオーバーヘッドについて心配していません、同時ユーザーの予想数は低いです。クライアントは状態情報をリコールせず、代わりにすべてがDBに格納されているので、認証目的以外のセッションについては心配していません。SSH上でPython CLIアプリケーションを提供する

自分のソケットサーバーコードをロールバックしたり、Twistedを使用してアプリケーションを再コードする必要がなく、アプリケーションを提供する方法があるかどうかは疑問でした。私は正直なところ、アーウィッドとツイストが一緒に遊ぶ方法を知らない。 UrwidにはTwistedEventLoopメソッドがあり、Twisted Reactorを使用すると言われていますが、Twisted接続でUrwidアプリケーションを実行するサンプルコードは見つかりません。単純なものであっても、例は理解されるであろう。私もZeroMQを見てきましたが、それはTwistedよりもはっきりしないようです。簡単に言えば、私はtcp上でアプリケーションを提供することを目的とした数多くの異なるライブラリを調査しました。それらのほとんどはtelnetによって提供されています。ほぼすべてがhttpに焦点を当てています。

私は非常にロックされたユーザーをグローバルログインとして作成し、chrootされたSSHセッションを使用することが予想されます。そのようにして各ユーザは自分のchroot/process/clientを取得します。はい、私はそれがおそらく "非常に悪いアイデア(tm)"であることを知っています。しかし、私は可能性としてそこにそれを投げなければならなかった。

私は建設的なフィードバックを感謝します。侮辱、過激さ、傲慢さは、驚かされ、印刷され、吐き出されるでしょう。

-CH

答えて

1

アプリケーションは、独自の認証を行いますので、あなただけのxinetdを通してそれをダンプし、それがI/Oを処理させることができます。その後、ユーザーは適切なポートにtelnetで接続して動作させることができます。

+0

音が面白いです。私はそれを見て、stunnelはsslラッパーを提供することができ、xinetdは接続を処理できます。うーん。ありがとうございました。 – TehCorwiz

+0

これは、合理的かつ手間のかかる方法ですが、「SSL」と「SSH」は同じプロトコルではありません。 – Glyph

4

Twistedには、この種の物を書くためのレイヤーがあります。twisted.conch.insults。私はそれを過度にしないように注意したい。それでもさらに多くのドキュメンテーションが必要になり、いくつかの機能が欠けています。 docstringが言うように、それは「現時点では非常に基本的」です。

侮辱が理由で来た。私の理解はUrwidはTwistedモードであってもファイル記述子と直接話しているため、出力を暗号化して同じスレッドで転送することはできません。誰かがそのファイル記述子の反対側を読んでいる必要があります。 TwistedモードはTwistedネットワークを使用しているUrwidを使ってコンソールアプリケーションを持っていることに関するものだと信じています。その他 stuff;クライアントアプリケーションやコンソールビューを持つサーバーに置くことができます。

Conchを使用してSSHサーバを作成すると、UrwidプログラムをPTYを使用してサブプロセスとして生成し、その認証と環境に関する情報を提供することができます。たとえば、環境変数を介して。 spawnProcess APIとJean-Paul Calderoneのexcellent series on using Conchをチェックしてください。

0

あなたのアプリを特定のユーザーのためのデフォルトのシェルとして置くことは、安くて危険なハックです。あなたは非常に注意する必要があります(示唆chrootそれを地獄にして、バック)は、アプリやサーバーに侵入する可能性がありますように。

関連する問題