N.BこのプロジェクトではGoogle Cloudを使用する必要があり、Google Cloudでは認証が必要です。 具体的には、このプロジェクトでは、Google CloudのDNSを使用する場合、APIキーが必要です。 テストにgoogle DNSを使用するのは事実上無料ですが、それでもアカウントが必要です。
私は自宅で持っていた問題を解決するためにこれを書いた、それは私にyear100USD年を節約してしまいました。 ありがとう、Python! あなたにCS50をありがとう!
私はすべてが使用するために、このプロジェクトをソースを開いています。
さらに、これは意図的に一つのファイルアプリケーションです。 それは、したがって、オープンソースをクローンして使用することが容易になるように設計されており、それがバックグラウンドで実行できるように、Linuxサービ 理論的には、すべてのプラットフォーム、MAC、Windows、Linux、組み込みlinuxデバイス、ホームネットワーク機器で実行できます。私はこれをWindows10、Debian9Stretch、およびMax OSX Mojaveでテストしました。
私はCS50Webを取ってhootを持っていたし、現在CS50Webのための私の最終的なプロジェクトに取り組んでいます。
Cheers,
Conor
Google Cloud Dynamic DNSクライアント
これは、Google Cloud DNS用の単純な動的DNSスクリプトです。 スクリプトはパブリックIPアドレスをチェックし、設定ファイルから読み取った設定に基づいて、Google Cloud DNSに対応するDNSエントリがあるかどうかを 対応するエントリが見つからない場合、スクリプトはそれを作成します。 対応するエントリが見つかったが、スクリプトが見つかったものと一致しないIPアドレスがある場合、スクリプトはGoogle Cloud entryを更新します(削除を読 最後に、スクリプト設定ファイルがGoogle Cloud DNSエントリの設定ファイルと一致する場合、xの間隔でスリープ状態になり、プロセスが繰り返されます。
このプロジェクトは以下のコンポーネントで構成されています:
- gcloud-ddns.py:動的dnsクライアントスクリプト
- ddns-conf。yaml:プログラム設定ファイル
- 要件。txt:インストールするための要件
要件
このスクリプトにはPython3.6以上が必要です。 fストリングが広く使用されています。 パッケージの要件は、要件に記載されています。txt
Usage: python gcloud-ddns.py
セットアップ
$ git clone [email protected]:conorcunningham/google-ddns.git$ cd google-ddns$ python3 gcloud-ddns.py
スクリプトはフォアグラウンドで実行されます。 私はそれを試してテストして、サービスとして確実に実行できるかどうかを確認します。
設定ファイル
スクリプトの設定はyamlファイルから読み込まれます。 Ddns-confの例の内容は次のとおりです。yamlファイル
api-key: './ddns-api-key.json'logfile: './ddns.log'hosts: - host: 'firewall.example.com.' project_id: 'fluffy-penguin-242411' managed_zone: 'example' domain: 'example.com' ttl: 60 interval: 600 - host: 'www.example-two.com.' project_id: 'fluffy-penguin-242411' managed_zone: 'example-two' domain: 'example-two.com' ttl: 60 interval: 600
このスクリプトは、設定ファイルへのパスであるオプションのCLI引数を受け入れます。 何も指定されていない場合、スクリプトはスクリプトと同じディレクトリ内のddns-config.yaml
を検索します。
- host:設定するホストの完全修飾ドメイン名。 NB*あなたが含める必要があります.
- project_id:Google Cloud内のプロジェクトID
- managed_zone:Google Cloud内の管理ゾーンの名前
- ドメイン:ドメイン名
- ttl:TTLの秒数
- 間隔:スクリプトが再び実行される前にスリープ状態になる時間
- api-key:json形式のapiキーへのパス
- log-path: ログファイルへのパス
認証
Google Cloud APIを使用するには、アカウントのAPIキーが必要です。 このキーはjsonファイルになり、設定ファイルで設定する必要があります。
スクリプトはGOOGLE_APPLICATION_CREDENTIALS
環境変数をAPIキーのパスに設定し、Googleのモジュールはこの環境変数を使用して認証を処理します。
os.environ = api_key
Docker
dockerfileはリポジトリに含まれているため、Dockerインスタンス内のコンテナとして起動できます。
docker build -t google-ddns .
デフォルトのdockerコマンドは設定を必要とします。/ddnsディレクトリ内のyamlファイル
docker run -it --rm -v <path/to/config>:/ddns google-ddns
設定ファイル内のパスはコンテナからの相対パスであることに注意してください
api-key: '/ddns/ddns-api-key.json'logfile: '/ddns/ddns.log'...
あなたがそれを使うならば、ここに素早く汚いdocker-composeファイルがあります
version: '3'services: ddns: image: google-ddns volumes: - ./config:/ddns
ipify.org API
このプロジェクトは、snazzyを利用していますipify.org クライアントのパブリックIPアドレスを取得するためのAPI。