WordPressプラグインを作成したいのですが、プラグインが各ドメインに固有のシリアルキーでアクティブ化された後にのみ使用できるようにしたいと思います。
これを想定した最良の方法は何ですか。
私はプラグインの処理のすべてをあなた自身のサーバーに置くのではなく、1つか2つの重要な機能を選んで、それらをあなたのシステムでホストし続けるようにします。その後、プラグインを使用するサイトごとにAPIキーが必要になります。そうすることで、それらのサイトはサーバーと通信できるようになります。
もう一つの選択肢は基本的な暗号化設定です - これは実際に私がしばらくの間一緒に使っていたシステムです、私はまだどこかにそれを展開することに悩まされていません。コード自体(GPLに忠実であるため)は、あなたが期待するのと同じようにすべて平文です。ただし、保存されているすべてのデータ(デフォルト値、プラグイン設定など)は、データベースに保存される前に暗号化されています。ここでの秘訣は、リモートシステムのプラグインが復号化キーを持っていないということです - データを復号化するためには、APIキーをあなたのシステムに送信しなければなりません。これは、フラッシュされるまでの一定期間、一時的(一時的なオプション)に保存することができます。つまり、トラフィックが多いときに2秒ごとにサイトにサーバーがアクセスすることはありません。
ただし、このアプローチのマイナス面はメリットを上回る可能性があります(これが私がまだどこにも展開していない理由です)。まず第一に、精通したプログラマーは復号化キーを取得することができ、それから彼らはもうあなたのサーバーを必要としません。あるいは、暗号化/復号化フックをすべてフラッシュして平文で実行することもできます。これはユーザにとってオープンソースの利点であり、制限はないが制限のあるシステムを配布したい開発者にとっては不利な点です。
もう一つの欠点はあなたのサーバーへの依存です。キーを一時的に保存するとサーバーの負担が軽減されます。ただし、サイトが1〜2時間停止した場合は、 プラグインを使用するすべてのサイト が1〜2時間停止します。ある種の優雅な無効化を計画していない限り。また、人々があなたのシステムを使い続けるならば、それはあなたが無期限に言われたサーバーを稼働させ続ける必要があることを意味するでしょう。
最後の選択肢、そして私が現在積極的に使っている選択肢は、プラグインの機能セットと機能を分割することです。システムの中核(UI、基本機能など)は登録なしで自由に利用できます。より高度な機能のために、ユーザーは自分のコピーを登録し、アクティベーションキーを取得し、そしてプロセスを完了するためにそのキーをUIに入力しなければなりません。 。
ここでの不利な点は、いったんダウンロードされると、すべてのコードがユーザーのサイトに置かれるようになり、GPLのもとではまだフルパッケージを再配布できることです。利点はそれがあなたのシステムに一度だけ依存し、どんな種類の長期のダウンロード/処理サポートも必要としないということです。
いずれにしても、サーバー上で何らかの外部APIを維持するか、システムの完全なソースをユーザーに提供することに悩まされることになります。あなたがあなたのシステムにいくつかの機能性を保っているなら、あなたはそれが価値があるためにほとんど100%の稼働時間を保証する必要があります。あなたが完全な情報源を提供しようとしているなら、他の誰かがあなたのシステムを再配布するのを防ぐための(GPLの下で)方法はありません。
あなたは、WordPressユーザーからソースコードを隠すことはできませんし、ライセンスの影響のためにあなたのプラグインの再配布を制限することも許可されていません。
あなたはあなたのプラグインでWordPressの派生物を作成していて、あなたのユーザはそのソースを入手して自由に再配布する権利を持っています(フリーソフトウェアの 4つの自由を見てください )。
WordPressがGPLv2の下でライセンスされていて、あなたが米国以外の顧客を持っていると仮定すると、あなたがあなたの(「保護された」)製品にあるかもしれないGPL違反の影響に対処するべきです。
あなたはあなたのユーザーのためにベンダーロックインを実装しようとしています。
中途半端なプログラマがハックすることができない安全なライセンスを持つ分散プラグインを持つ唯一の方法は、Akismetのようにあなた自身のサーバ上でプラグインの主な機能を実行することです。ユーザーは自分のライセンスキーを含むリクエストをサーバーに送信する必要があります。鍵がチェックアウトされたら、あなたの側でソースコードを実行し、結果を送り返してください。