| OLD | NEW |
| 1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
| 2 # Copyright 2012 Google Inc. All Rights Reserved. | 2 # Copyright 2012 Google Inc. All Rights Reserved. |
| 3 # | 3 # |
| 4 # Licensed under the Apache License, Version 2.0 (the "License"); | 4 # Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 # you may not use this file except in compliance with the License. | 5 # you may not use this file except in compliance with the License. |
| 6 # You may obtain a copy of the License at | 6 # You may obtain a copy of the License at |
| 7 # | 7 # |
| 8 # http://www.apache.org/licenses/LICENSE-2.0 | 8 # http://www.apache.org/licenses/LICENSE-2.0 |
| 9 # | 9 # |
| 10 # Unless required by applicable law or agreed to in writing, software | 10 # Unless required by applicable law or agreed to in writing, software |
| 11 # distributed under the License is distributed on an "AS IS" BASIS, | 11 # distributed under the License is distributed on an "AS IS" BASIS, |
| 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 # See the License for the specific language governing permissions and | 13 # See the License for the specific language governing permissions and |
| 14 # limitations under the License. | 14 # limitations under the License. |
| 15 """Implementation of website configuration command for buckets.""" | 15 """Implementation of website configuration command for buckets.""" |
| 16 | 16 |
| 17 from __future__ import absolute_import | 17 from __future__ import absolute_import |
| 18 | 18 |
| 19 import getopt | |
| 20 import sys | 19 import sys |
| 21 | 20 |
| 22 from apitools.base.py import encoding | 21 from apitools.base.py import encoding |
| 23 | 22 |
| 24 from gslib.command import Command | 23 from gslib.command import Command |
| 25 from gslib.command_argument import CommandArgument | 24 from gslib.command_argument import CommandArgument |
| 26 from gslib.cs_api_map import ApiSelector | 25 from gslib.cs_api_map import ApiSelector |
| 27 from gslib.exception import CommandException | 26 from gslib.exception import CommandException |
| 28 from gslib.help_provider import CreateHelpText | 27 from gslib.help_provider import CreateHelpText |
| 29 from gslib.third_party.storage_apitools import storage_v1_messages as apitools_m
essages | 28 from gslib.third_party.storage_apitools import storage_v1_messages as apitools_m
essages |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 For example, suppose your company's Domain name is example.com. You could set | 82 For example, suppose your company's Domain name is example.com. You could set |
| 84 up a website bucket as follows: | 83 up a website bucket as follows: |
| 85 | 84 |
| 86 1. Create a bucket called example.com (see the "DOMAIN NAMED BUCKETS" | 85 1. Create a bucket called example.com (see the "DOMAIN NAMED BUCKETS" |
| 87 section of "gsutil help naming" for details about creating such buckets). | 86 section of "gsutil help naming" for details about creating such buckets). |
| 88 | 87 |
| 89 2. Create index.html and 404.html files and upload them to the bucket. | 88 2. Create index.html and 404.html files and upload them to the bucket. |
| 90 | 89 |
| 91 3. Configure the bucket to have website behavior using the command: | 90 3. Configure the bucket to have website behavior using the command: |
| 92 | 91 |
| 93 gsutil web set -m index.html -e 404.html gs://example.com | 92 gsutil web set -m index.html -e 404.html gs://www.example.com |
| 94 | 93 |
| 95 4. Add a DNS CNAME record for example.com pointing to c.storage.googleapis.com | 94 4. Add a DNS CNAME record for example.com pointing to c.storage.googleapis.com |
| 96 (ask your DNS administrator for help with this). | 95 (ask your DNS administrator for help with this). |
| 97 | 96 |
| 98 Now if you open a browser and navigate to http://example.com, it will display | 97 Now if you open a browser and navigate to http://www.example.com, it will |
| 99 the main page instead of the default bucket listing. Note: It can take time | 98 display the main page instead of the default bucket listing. Note: It can |
| 100 for DNS updates to propagate because of caching used by the DNS, so it may | 99 take time for DNS updates to propagate because of caching used by the DNS, |
| 101 take up to a day for the domain-named bucket website to work after you create | 100 so it may take up to a day for the domain-named bucket website to work after |
| 102 the CNAME DNS record. | 101 you create the CNAME DNS record. |
| 103 | 102 |
| 104 Additional notes: | 103 Additional notes: |
| 105 | 104 |
| 106 1. Because the main page is only served when a bucket listing request is made | 105 1. Because the main page is only served when a bucket listing request is made |
| 107 via the CNAME alias, you can continue to use "gsutil ls" to list the bucket | 106 via the CNAME alias, you can continue to use "gsutil ls" to list the bucket |
| 108 and get the normal bucket listing (rather than the main page). | 107 and get the normal bucket listing (rather than the main page). |
| 109 | 108 |
| 110 2. The main_page_suffix applies to each subdirectory of the bucket. For | 109 2. The main_page_suffix applies to each subdirectory of the bucket. For |
| 111 example, with the main_page_suffix configured to be index.html, a GET | 110 example, with the main_page_suffix configured to be index.html, a GET |
| 112 request for http://example.com would retrieve | 111 request for http://www.example.com would retrieve |
| 113 http://example.com/index.html, and a GET request for | 112 http://www.example.com/index.html, and a GET request for |
| 114 http://example.com/photos would retrieve | 113 http://www.example.com/photos would retrieve |
| 115 http://example.com/photos/index.html. | 114 http://www.example.com/photos/index.html. |
| 116 | 115 |
| 117 3. There is just one 404.html page: For example, a GET request for | 116 3. There is just one 404.html page: For example, a GET request for |
| 118 http://example.com/photos/missing would retrieve | 117 http://www.example.com/photos/missing would retrieve |
| 119 http://example.com/404.html, not http://example.com/photos/404.html. | 118 http://www.example.com/404.html, not |
| 119 http://www.example.com/photos/404.html. |
| 120 | 120 |
| 121 4. For additional details see | 121 4. For additional details see |
| 122 https://developers.google.com/storage/docs/website-configuration. | 122 https://developers.google.com/storage/docs/website-configuration. |
| 123 | 123 |
| 124 The web command has two sub-commands: | 124 The web command has two sub-commands: |
| 125 """ + _SET_DESCRIPTION + _GET_DESCRIPTION | 125 """ + _SET_DESCRIPTION + _GET_DESCRIPTION |
| 126 | 126 |
| 127 _DETAILED_HELP_TEXT = CreateHelpText(_SYNOPSIS, _DESCRIPTION) | 127 _DETAILED_HELP_TEXT = CreateHelpText(_SYNOPSIS, _DESCRIPTION) |
| 128 | 128 |
| 129 _get_help_text = CreateHelpText(_GET_SYNOPSIS, _GET_DESCRIPTION) | 129 _get_help_text = CreateHelpText(_GET_SYNOPSIS, _GET_DESCRIPTION) |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 self.ParseSubOpts(check_args=True) | 222 self.ParseSubOpts(check_args=True) |
| 223 if action_subcommand == 'get': | 223 if action_subcommand == 'get': |
| 224 func = self._GetWeb | 224 func = self._GetWeb |
| 225 elif action_subcommand == 'set': | 225 elif action_subcommand == 'set': |
| 226 func = self._SetWeb | 226 func = self._SetWeb |
| 227 else: | 227 else: |
| 228 raise CommandException(('Invalid subcommand "%s" for the %s command.\n' | 228 raise CommandException(('Invalid subcommand "%s" for the %s command.\n' |
| 229 'See "gsutil help web".') % | 229 'See "gsutil help web".') % |
| 230 (action_subcommand, self.command_name)) | 230 (action_subcommand, self.command_name)) |
| 231 return func() | 231 return func() |
| OLD | NEW |