ic-code 1.2.4__tar.gz → 1.2.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. {ic_code-1.2.4/src/ic_code.egg-info → ic_code-1.2.5}/PKG-INFO +1 -1
  2. {ic_code-1.2.4 → ic_code-1.2.5}/docs/README.md +12 -0
  3. ic_code-1.2.5/docs/cloudflare_configuration_example.md +500 -0
  4. {ic_code-1.2.4 → ic_code-1.2.5}/docs/general/configuration.md +1 -0
  5. {ic_code-1.2.4 → ic_code-1.2.5}/pyproject.toml +1 -1
  6. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/ci-detect-platforms.py +2 -2
  7. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/__init__.py +1 -1
  8. ic_code-1.2.5/src/ic/platforms/cloudflare/README.md +564 -0
  9. ic_code-1.2.5/src/ic/platforms/cloudflare/account/__init__.py +1 -0
  10. ic_code-1.2.5/src/ic/platforms/cloudflare/account/info.py +222 -0
  11. ic_code-1.2.5/src/ic/platforms/cloudflare/client.py +786 -0
  12. ic_code-1.2.5/src/ic/platforms/cloudflare/dns/info.py +287 -0
  13. ic_code-1.2.5/src/ic/platforms/cloudflare/dns/list_info.py +88 -0
  14. ic_code-1.2.5/src/ic/platforms/cloudflare/rules/__init__.py +5 -0
  15. ic_code-1.2.5/src/ic/platforms/cloudflare/rules/info.py +425 -0
  16. ic_code-1.2.5/src/ic/platforms/cloudflare/traffic/__init__.py +5 -0
  17. ic_code-1.2.5/src/ic/platforms/cloudflare/traffic/info.py +433 -0
  18. ic_code-1.2.5/src/ic/platforms/cloudflare/waf/__init__.py +5 -0
  19. ic_code-1.2.5/src/ic/platforms/cloudflare/waf/info.py +361 -0
  20. ic_code-1.2.5/src/ic/platforms/cloudflare/zone/__init__.py +10 -0
  21. ic_code-1.2.5/src/ic/platforms/cloudflare/zone/info.py +323 -0
  22. {ic_code-1.2.4 → ic_code-1.2.5/src/ic_code.egg-info}/PKG-INFO +1 -1
  23. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic_code.egg-info/SOURCES.txt +13 -0
  24. ic_code-1.2.4/src/ic/platforms/cloudflare/README.md +0 -120
  25. ic_code-1.2.4/src/ic/platforms/cloudflare/dns/list_info.py +0 -293
  26. {ic_code-1.2.4 → ic_code-1.2.5}/LICENSE +0 -0
  27. {ic_code-1.2.4 → ic_code-1.2.5}/MANIFEST.in +0 -0
  28. {ic_code-1.2.4 → ic_code-1.2.5}/README.md +0 -0
  29. {ic_code-1.2.4 → ic_code-1.2.5}/SECURITY.md +0 -0
  30. {ic_code-1.2.4 → ic_code-1.2.5}/docs/_templates/configuration.md +0 -0
  31. {ic_code-1.2.4 → ic_code-1.2.5}/docs/_templates/installation.md +0 -0
  32. {ic_code-1.2.4 → ic_code-1.2.5}/docs/_templates/troubleshooting.md +0 -0
  33. {ic_code-1.2.4 → ic_code-1.2.5}/docs/_templates/usage.md +0 -0
  34. {ic_code-1.2.4 → ic_code-1.2.5}/docs/aws/README.md +0 -0
  35. {ic_code-1.2.4 → ic_code-1.2.5}/docs/aws/aws_cli_prd.md +0 -0
  36. {ic_code-1.2.4 → ic_code-1.2.5}/docs/aws/installation.md +0 -0
  37. {ic_code-1.2.4 → ic_code-1.2.5}/docs/azure/README.md +0 -0
  38. {ic_code-1.2.4 → ic_code-1.2.5}/docs/ci-workflow-guide.md +0 -0
  39. {ic_code-1.2.4 → ic_code-1.2.5}/docs/config_migration.md +0 -0
  40. {ic_code-1.2.4 → ic_code-1.2.5}/docs/deployment.md +0 -0
  41. {ic_code-1.2.4 → ic_code-1.2.5}/docs/development/README.md +0 -0
  42. {ic_code-1.2.4 → ic_code-1.2.5}/docs/development/cleanup_summary.md +0 -0
  43. {ic_code-1.2.4 → ic_code-1.2.5}/docs/development/development_guide.md +0 -0
  44. {ic_code-1.2.4 → ic_code-1.2.5}/docs/development/import_patterns.md +0 -0
  45. {ic_code-1.2.4 → ic_code-1.2.5}/docs/development/migration_guide.md +0 -0
  46. {ic_code-1.2.4 → ic_code-1.2.5}/docs/gcp/GCP_CONFIGURATION_GUIDE.md +0 -0
  47. {ic_code-1.2.4 → ic_code-1.2.5}/docs/gcp/GCP_SECURITY_BEST_PRACTICES.md +0 -0
  48. {ic_code-1.2.4 → ic_code-1.2.5}/docs/gcp/README.md +0 -0
  49. {ic_code-1.2.4 → ic_code-1.2.5}/docs/installation.md +0 -0
  50. {ic_code-1.2.4 → ic_code-1.2.5}/docs/mcp_integration.md +0 -0
  51. {ic_code-1.2.4 → ic_code-1.2.5}/docs/migration.md +0 -0
  52. {ic_code-1.2.4 → ic_code-1.2.5}/docs/migration_guide.md +0 -0
  53. {ic_code-1.2.4 → ic_code-1.2.5}/docs/ncp/README.md +0 -0
  54. {ic_code-1.2.4 → ic_code-1.2.5}/docs/ncp/configuration.md +0 -0
  55. {ic_code-1.2.4 → ic_code-1.2.5}/docs/ncp/installation.md +0 -0
  56. {ic_code-1.2.4 → ic_code-1.2.5}/docs/ncp/troubleshooting.md +0 -0
  57. {ic_code-1.2.4 → ic_code-1.2.5}/docs/ncp/usage.md +0 -0
  58. {ic_code-1.2.4 → ic_code-1.2.5}/docs/ncpgov/README.md +0 -0
  59. {ic_code-1.2.4 → ic_code-1.2.5}/docs/ncpgov/installation.md +0 -0
  60. {ic_code-1.2.4 → ic_code-1.2.5}/docs/oci/README.md +0 -0
  61. {ic_code-1.2.4 → ic_code-1.2.5}/docs/oci/installation.md +0 -0
  62. {ic_code-1.2.4 → ic_code-1.2.5}/docs/release-guide.md +0 -0
  63. {ic_code-1.2.4 → ic_code-1.2.5}/docs/security.md +0 -0
  64. {ic_code-1.2.4 → ic_code-1.2.5}/docs/ssh/configuration.md +0 -0
  65. {ic_code-1.2.4 → ic_code-1.2.5}/docs/troubleshooting.md +0 -0
  66. {ic_code-1.2.4 → ic_code-1.2.5}/docs/user_guide.md +0 -0
  67. {ic_code-1.2.4 → ic_code-1.2.5}/requirements.txt +0 -0
  68. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/analysis_summary.py +0 -0
  69. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/bump-version.sh +0 -0
  70. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
  71. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/ci-generate-matrix.py +0 -0
  72. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/cli_usage_analysis.py +0 -0
  73. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/dependency_mapper.py +0 -0
  74. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/deploy.sh +0 -0
  75. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/final_validation_and_documentation.py +0 -0
  76. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/fix_consolidated_imports.py +0 -0
  77. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/migration_execution_and_validation.py +0 -0
  78. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/ncp_security_scanner.py +0 -0
  79. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/oracle-policy/user_policy.py +0 -0
  80. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/performance_optimization.py +0 -0
  81. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/setup_venv.py +0 -0
  82. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/test-ci-detection.sh +0 -0
  83. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/unset_env.sh +0 -0
  84. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/validate_config.py +0 -0
  85. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/validate_dependencies.py +0 -0
  86. {ic_code-1.2.4 → ic_code-1.2.5}/scripts/validate_ncp_security.py +0 -0
  87. {ic_code-1.2.4 → ic_code-1.2.5}/setup.cfg +0 -0
  88. {ic_code-1.2.4 → ic_code-1.2.5}/setup.py +0 -0
  89. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/__init__.py +0 -0
  90. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/azure_utils.py +0 -0
  91. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/gather_env.py +0 -0
  92. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/gcp_config_validator.py +0 -0
  93. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/gcp_monitoring.py +0 -0
  94. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/gcp_utils.py +0 -0
  95. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/log.py +0 -0
  96. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/ncp_security_utils.py +0 -0
  97. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/ncp_utils.py +0 -0
  98. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/ncpgov_utils.py +0 -0
  99. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/progress_decorator.py +0 -0
  100. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/slack.py +0 -0
  101. {ic_code-1.2.4 → ic_code-1.2.5}/src/common/utils.py +0 -0
  102. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/cli.py +0 -0
  103. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/cli_backup.py +0 -0
  104. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/commands/__init__.py +0 -0
  105. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/commands/config.py +0 -0
  106. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/commands/migration.py +0 -0
  107. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/commands/security.py +0 -0
  108. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/compat/__init__.py +0 -0
  109. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/compat/cli.py +0 -0
  110. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/compat/common.py +0 -0
  111. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/__init__.py +0 -0
  112. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/cleanup.py +0 -0
  113. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/docs_organizer.py +0 -0
  114. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/external.py +0 -0
  115. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/installer.py +0 -0
  116. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/manager.py +0 -0
  117. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/migration.py +0 -0
  118. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/migration_utils.py +0 -0
  119. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/path_manager.py +0 -0
  120. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/schema.py +0 -0
  121. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/secrets.py +0 -0
  122. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/config/security.py +0 -0
  123. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/core/__init__.py +0 -0
  124. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/core/dependency_validator.py +0 -0
  125. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/core/logging.py +0 -0
  126. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/core/mcp_manager.py +0 -0
  127. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/core/platform_discovery.py +0 -0
  128. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/core/session.py +0 -0
  129. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/core/silence_logging.py +0 -0
  130. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/migration/__init__.py +0 -0
  131. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/migration/manager.py +0 -0
  132. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/migration/post_validation.py +0 -0
  133. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/migration/rollback.py +0 -0
  134. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/migration/validation.py +0 -0
  135. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/__init__.py +0 -0
  136. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/__init__.py +0 -0
  137. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/cloudfront/__init__.py +0 -0
  138. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/cloudfront/info.py +0 -0
  139. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/codepipeline/__init__.py +0 -0
  140. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/codepipeline/build.py +0 -0
  141. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/codepipeline/deploy.py +0 -0
  142. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/ec2/__init__.py +0 -0
  143. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/ec2/info.py +0 -0
  144. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/ec2/list_tags.py +0 -0
  145. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/ec2/tag_check.py +0 -0
  146. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/ecs/__init__.py +0 -0
  147. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/ecs/info.py +0 -0
  148. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/ecs/service.py +0 -0
  149. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/ecs/task.py +0 -0
  150. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/eks/__init__.py +0 -0
  151. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/eks/addons.py +0 -0
  152. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/eks/fargate.py +0 -0
  153. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/eks/info.py +0 -0
  154. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/eks/nodes.py +0 -0
  155. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/eks/pods.py +0 -0
  156. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/eks/update_config.py +0 -0
  157. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/fargate/__init__.py +0 -0
  158. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/fargate/info.py +0 -0
  159. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/lb/__init__.py +0 -0
  160. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/lb/info.py +0 -0
  161. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/lb/list_tags.py +0 -0
  162. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/lb/tag_check.py +0 -0
  163. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/msk/__init__.py +0 -0
  164. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/msk/broker.py +0 -0
  165. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/msk/info.py +0 -0
  166. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/nat/__init__.py +0 -0
  167. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/nat/list_tags.py +0 -0
  168. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/nat/tag_check.py +0 -0
  169. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/profile/__init__.py +0 -0
  170. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/profile/info.py +0 -0
  171. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/rds/__init__.py +0 -0
  172. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/rds/info.py +0 -0
  173. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/rds/list_tags.py +0 -0
  174. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/rds/tag_check.py +0 -0
  175. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/s3/__init__.py +0 -0
  176. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/s3/info.py +0 -0
  177. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/s3/list_tags.py +0 -0
  178. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/s3/tag_check.py +0 -0
  179. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/sg/__init__.py +0 -0
  180. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/sg/info.py +0 -0
  181. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/vpc/__init__.py +0 -0
  182. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/vpc/info.py +0 -0
  183. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/vpc/list_tags.py +0 -0
  184. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/vpc/tag_check.py +0 -0
  185. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/vpn/__init__.py +0 -0
  186. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/aws/vpn/info.py +0 -0
  187. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/README.md +0 -0
  188. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/__init__.py +0 -0
  189. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/aci/__init__.py +0 -0
  190. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/aci/info.py +0 -0
  191. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/aks/__init__.py +0 -0
  192. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/aks/info.py +0 -0
  193. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/lb/__init__.py +0 -0
  194. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/lb/info.py +0 -0
  195. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/nsg/__init__.py +0 -0
  196. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/nsg/info.py +0 -0
  197. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/storage/__init__.py +0 -0
  198. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/storage/info.py +0 -0
  199. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/vm/__init__.py +0 -0
  200. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/vm/info.py +0 -0
  201. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/vm/mock_data.json +0 -0
  202. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/vnet/__init__.py +0 -0
  203. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/vnet/info.py +0 -0
  204. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/azure/vnet/mock_data.json +0 -0
  205. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/cloudflare/__init__.py +0 -0
  206. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/cloudflare/dns/__init__.py +0 -0
  207. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/README.md +0 -0
  208. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/__init__.py +0 -0
  209. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/billing/__init__.py +0 -0
  210. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/billing/info.py +0 -0
  211. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/billing/mock_data.json +0 -0
  212. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/compute/__init__.py +0 -0
  213. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/compute/info.py +0 -0
  214. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/compute/mock_data.json +0 -0
  215. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/firewall/__init__.py +0 -0
  216. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/firewall/info.py +0 -0
  217. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/functions/__init__.py +0 -0
  218. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/functions/info.py +0 -0
  219. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/gke/__init__.py +0 -0
  220. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/gke/info.py +0 -0
  221. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/gke/mock_data.json +0 -0
  222. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/lb/__init__.py +0 -0
  223. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/lb/info.py +0 -0
  224. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/run/__init__.py +0 -0
  225. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/run/info.py +0 -0
  226. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/sql/__init__.py +0 -0
  227. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/sql/info.py +0 -0
  228. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/storage/__init__.py +0 -0
  229. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/storage/info.py +0 -0
  230. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/vpc/__init__.py +0 -0
  231. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/vpc/info.py +0 -0
  232. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/gcp/vpc/mock_data.json +0 -0
  233. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/__init__.py +0 -0
  234. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/client.py +0 -0
  235. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/ec2/__init__.py +0 -0
  236. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/ec2/info.py +0 -0
  237. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/rds/__init__.py +0 -0
  238. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/rds/info.py +0 -0
  239. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/s3/__init__.py +0 -0
  240. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/s3/info.py +0 -0
  241. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/sg/__init__.py +0 -0
  242. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/sg/info.py +0 -0
  243. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/vpc/__init__.py +0 -0
  244. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncp/vpc/info.py +0 -0
  245. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/__init__.py +0 -0
  246. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/client.py +0 -0
  247. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/ec2/__init__.py +0 -0
  248. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/ec2/info.py +0 -0
  249. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/rds/__init__.py +0 -0
  250. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/rds/info.py +0 -0
  251. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/s3/__init__.py +0 -0
  252. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/s3/info.py +0 -0
  253. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/sg/__init__.py +0 -0
  254. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/sg/info.py +0 -0
  255. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/vpc/__init__.py +0 -0
  256. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ncpgov/vpc/info.py +0 -0
  257. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/README.md +0 -0
  258. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/__init__.py +0 -0
  259. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/common/__init__.py +0 -0
  260. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/common/utils.py +0 -0
  261. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/compartment/__init__.py +0 -0
  262. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/compartment/info.py +0 -0
  263. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/cost/__init__.py +0 -0
  264. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/cost/credit.py +0 -0
  265. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/cost/usage.py +0 -0
  266. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/info/__init__.py +0 -0
  267. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/info/oci_info.py +0 -0
  268. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/lb/__init__.py +0 -0
  269. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/lb/info.py +0 -0
  270. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/nsg/__init__.py +0 -0
  271. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/nsg/info.py +0 -0
  272. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/obj/__init__.py +0 -0
  273. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/obj/info.py +0 -0
  274. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/policy/__init__.py +0 -0
  275. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/policy/info.py +0 -0
  276. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/policy/search.py +0 -0
  277. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/vcn/__init__.py +0 -0
  278. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/vcn/info.py +0 -0
  279. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/vm/__init__.py +0 -0
  280. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/vm/info.py +0 -0
  281. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/volume/__init__.py +0 -0
  282. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/oci/volume/info.py +0 -0
  283. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ssh/README.md +0 -0
  284. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ssh/__init__.py +0 -0
  285. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ssh/auto/__init__.py +0 -0
  286. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ssh/auto/scan.py +0 -0
  287. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ssh/auto_ssh.py +0 -0
  288. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ssh/server/__init__.py +0 -0
  289. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ssh/server/info.py +0 -0
  290. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/platforms/ssh/server_info.py +0 -0
  291. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/security/README.md +0 -0
  292. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/security/__init__.py +0 -0
  293. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/security/config.py +0 -0
  294. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/security/detector.py +0 -0
  295. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/security/guidance.py +0 -0
  296. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/security/hooks.py +0 -0
  297. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/security/patterns.py +0 -0
  298. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic/security/scanner.py +0 -0
  299. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic_code.egg-info/dependency_links.txt +0 -0
  300. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic_code.egg-info/entry_points.txt +0 -0
  301. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic_code.egg-info/requires.txt +0 -0
  302. {ic_code-1.2.4 → ic_code-1.2.5}/src/ic_code.egg-info/top_level.txt +0 -0
  303. {ic_code-1.2.4 → ic_code-1.2.5}/src/mcp/__init__.py +0 -0
  304. {ic_code-1.2.4 → ic_code-1.2.5}/src/mcp/gcp_connector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ic-code
3
- Version: 1.2.4
3
+ Version: 1.2.5
4
4
  Summary: Infrastructure CLI tool for managing AWS, Azure, GCP, OCI, NCP, CloudFlare, SSH, and more
5
5
  Home-page: https://github.com/dgr009/ic
6
6
  Author: SangYun Kim
@@ -47,6 +47,10 @@ This directory contains comprehensive documentation for the IC (Infrastructure R
47
47
  - [OCI Usage](oci/usage.md) - How to use OCI commands
48
48
  - [OCI Troubleshooting](oci/troubleshooting.md) - OCI-specific troubleshooting
49
49
 
50
+ ### CloudFlare
51
+ - [CloudFlare Platform README](../src/ic/platforms/cloudflare/README.md) - Complete CloudFlare integration guide
52
+ - [CloudFlare Configuration Examples](cloudflare_configuration_example.md) - Detailed configuration examples and use cases
53
+
50
54
  ## Advanced Topics
51
55
 
52
56
  - [MCP Integration](mcp_integration.md) - Model Context Protocol integration
@@ -81,6 +85,14 @@ ic aws s3 info
81
85
  ic azure vm info
82
86
  ic azure storage info
83
87
 
88
+ # CloudFlare
89
+ ic cf account info
90
+ ic cf zone info
91
+ ic cf dns info
92
+ ic cf traffic info
93
+ ic cf waf info
94
+ ic cf rules info
95
+
84
96
  # GCP
85
97
  ic gcp compute info
86
98
  ic gcp storage info
@@ -0,0 +1,500 @@
1
+ # CloudFlare Configuration Example for IC CLI
2
+
3
+ This document provides comprehensive examples for configuring CloudFlare credentials and filters in the IC CLI tool's `secrets.yaml` file.
4
+
5
+ ## Configuration File Location
6
+
7
+ CloudFlare configuration should be added to your secrets file:
8
+
9
+ ```
10
+ ~/.ic/config/secrets.yaml
11
+ ```
12
+
13
+ **Important:** Never commit this file to version control. It contains sensitive credentials.
14
+
15
+ ---
16
+
17
+ ## Basic Configuration
18
+
19
+ ### Minimal Configuration
20
+
21
+ The minimum required configuration includes your CloudFlare email and API token:
22
+
23
+ ```yaml
24
+ cloudflare:
25
+ email: "your-email@example.com"
26
+ api_token: "your_cloudflare_api_token_here"
27
+ ```
28
+
29
+ This configuration will:
30
+ - Allow access to all accounts associated with your email
31
+ - Display all zones across all accounts
32
+ - Enable all CloudFlare commands (`account`, `zone`, `dns`, `traffic`, `waf`, `rules`)
33
+
34
+ ---
35
+
36
+ ## Configuration with Filters
37
+
38
+ ### Account Filtering
39
+
40
+ Filter which CloudFlare accounts are displayed in commands. This is useful when you have access to multiple accounts but only want to manage specific ones.
41
+
42
+ #### List Format (Recommended)
43
+
44
+ ```yaml
45
+ cloudflare:
46
+ email: "your-email@example.com"
47
+ api_token: "your_cloudflare_api_token_here"
48
+
49
+ # Show only these accounts (case-insensitive substring matching)
50
+ cloudflare_accounts:
51
+ - "Production"
52
+ - "Development"
53
+ - "Staging"
54
+ ```
55
+
56
+ #### Comma-Separated Format
57
+
58
+ ```yaml
59
+ cloudflare:
60
+ email: "your-email@example.com"
61
+ api_token: "your_cloudflare_api_token_here"
62
+
63
+ # Alternative: comma-separated string format
64
+ cloudflare_accounts: "Production,Development,Staging"
65
+ ```
66
+
67
+ **Filter Behavior:**
68
+ - **Case-insensitive**: "production" matches "Production Account"
69
+ - **Substring matching**: "Prod" matches "Production Account"
70
+ - **Multiple matches**: All accounts containing any filter term are shown
71
+ - **Empty list**: Shows all accounts (same as commenting out the filter)
72
+
73
+ ### Zone Filtering
74
+
75
+ Filter which zones are displayed in commands. Zones are filtered after account filtering is applied.
76
+
77
+ #### List Format (Recommended)
78
+
79
+ ```yaml
80
+ cloudflare:
81
+ email: "your-email@example.com"
82
+ api_token: "your_cloudflare_api_token_here"
83
+
84
+ # Show only these zones (case-insensitive substring matching)
85
+ cloudflare_zones:
86
+ - "example.com"
87
+ - "api.example.com"
88
+ - "test.com"
89
+ ```
90
+
91
+ #### Comma-Separated Format
92
+
93
+ ```yaml
94
+ cloudflare:
95
+ email: "your-email@example.com"
96
+ api_token: "your_cloudflare_api_token_here"
97
+
98
+ # Alternative: comma-separated string format
99
+ cloudflare_zones: "example.com,api.example.com,test.com"
100
+ ```
101
+
102
+ **Filter Behavior:**
103
+ - **Case-insensitive**: "example.com" matches "Example.com"
104
+ - **Substring matching**: "example" matches "example.com", "api.example.com", "test.example.com"
105
+ - **Multiple matches**: All zones containing any filter term are shown
106
+ - **Empty list**: Shows all zones (same as commenting out the filter)
107
+
108
+ ---
109
+
110
+ ## Complete Configuration Examples
111
+
112
+ ### Example 1: Production Environment
113
+
114
+ Configuration for managing production infrastructure only:
115
+
116
+ ```yaml
117
+ cloudflare:
118
+ # CloudFlare API credentials
119
+ email: "devops@company.com"
120
+ api_token: "abc123def456ghi789jkl012mno345pqr678stu901vwx234yz"
121
+
122
+ # Only show production account
123
+ cloudflare_accounts:
124
+ - "Production"
125
+
126
+ # Only show production domains
127
+ cloudflare_zones:
128
+ - "company.com"
129
+ - "api.company.com"
130
+ - "cdn.company.com"
131
+ ```
132
+
133
+ **Use Case:** DevOps team member who only manages production infrastructure.
134
+
135
+ ### Example 2: Multi-Environment Management
136
+
137
+ Configuration for managing multiple environments:
138
+
139
+ ```yaml
140
+ cloudflare:
141
+ # CloudFlare API credentials
142
+ email: "admin@company.com"
143
+ api_token: "abc123def456ghi789jkl012mno345pqr678stu901vwx234yz"
144
+
145
+ # Show production, staging, and development accounts
146
+ cloudflare_accounts:
147
+ - "Production"
148
+ - "Staging"
149
+ - "Development"
150
+
151
+ # Show all company domains across environments
152
+ cloudflare_zones:
153
+ - "company.com"
154
+ - "staging.company.com"
155
+ - "dev.company.com"
156
+ - "api.company.com"
157
+ ```
158
+
159
+ **Use Case:** Platform administrator managing multiple environments.
160
+
161
+ ### Example 3: No Filtering (Show All)
162
+
163
+ Configuration to see all accounts and zones:
164
+
165
+ ```yaml
166
+ cloudflare:
167
+ # CloudFlare API credentials
168
+ email: "admin@company.com"
169
+ api_token: "abc123def456ghi789jkl012mno345pqr678stu901vwx234yz"
170
+
171
+ # No filters - show all accounts and zones
172
+ # Comment out or leave empty to show everything
173
+ # cloudflare_accounts:
174
+ # cloudflare_zones:
175
+ ```
176
+
177
+ **Use Case:** CloudFlare administrator who needs visibility into all accounts and zones.
178
+
179
+ ### Example 4: Specific Domains Only
180
+
181
+ Configuration for managing specific domains without account filtering:
182
+
183
+ ```yaml
184
+ cloudflare:
185
+ # CloudFlare API credentials
186
+ email: "webmaster@company.com"
187
+ api_token: "abc123def456ghi789jkl012mno345pqr678stu901vwx234yz"
188
+
189
+ # Show all accounts (no account filter)
190
+ # cloudflare_accounts:
191
+
192
+ # Only show specific domains
193
+ cloudflare_zones:
194
+ - "blog.company.com"
195
+ - "docs.company.com"
196
+ - "support.company.com"
197
+ ```
198
+
199
+ **Use Case:** Content team member managing specific web properties.
200
+
201
+ ### Example 5: Development and Testing
202
+
203
+ Configuration for development and testing environments:
204
+
205
+ ```yaml
206
+ cloudflare:
207
+ # CloudFlare API credentials
208
+ email: "developer@company.com"
209
+ api_token: "abc123def456ghi789jkl012mno345pqr678stu901vwx234yz"
210
+
211
+ # Only show development and testing accounts
212
+ cloudflare_accounts:
213
+ - "Development"
214
+ - "Testing"
215
+ - "QA"
216
+
217
+ # Show all zones in these accounts
218
+ # cloudflare_zones:
219
+ ```
220
+
221
+ **Use Case:** Developer working on non-production environments.
222
+
223
+ ---
224
+
225
+ ## Filter Behavior Details
226
+
227
+ ### How Filters Work
228
+
229
+ 1. **Account Filtering (First)**
230
+ - Filters are applied to account names
231
+ - Case-insensitive substring matching
232
+ - If no account filter is specified, all accounts are included
233
+
234
+ 2. **Zone Filtering (Second)**
235
+ - Filters are applied to zone names within filtered accounts
236
+ - Case-insensitive substring matching
237
+ - If no zone filter is specified, all zones from filtered accounts are included
238
+
239
+ 3. **CLI Override**
240
+ - Command-line arguments (`-a`, `-z`) override configuration filters
241
+ - Example: `ic cf zone info -a Production` overrides `cloudflare_accounts` config
242
+
243
+ ### Filter Priority
244
+
245
+ ```
246
+ CLI Arguments > Configuration File > Default (show all)
247
+ ```
248
+
249
+ ### Matching Examples
250
+
251
+ **Account Filter: "Production"**
252
+ - ✅ Matches: "Production", "Production Account", "production-env"
253
+ - ❌ Does not match: "Staging", "Development"
254
+
255
+ **Zone Filter: "example"**
256
+ - ✅ Matches: "example.com", "api.example.com", "test.example.org"
257
+ - ❌ Does not match: "mysite.com", "test.com"
258
+
259
+ **Multiple Filters: ["example", "test"]**
260
+ - ✅ Matches: "example.com", "test.com", "api.example.com", "test.example.com"
261
+ - ❌ Does not match: "mysite.com", "production.com"
262
+
263
+ ---
264
+
265
+ ## Getting Your API Token
266
+
267
+ ### Step-by-Step Guide
268
+
269
+ 1. **Log in to CloudFlare Dashboard**
270
+ - Go to: https://dash.cloudflare.com/
271
+
272
+ 2. **Navigate to API Tokens**
273
+ - Click on your profile icon (top right)
274
+ - Select "My Profile"
275
+ - Click "API Tokens" tab
276
+ - Or go directly to: https://dash.cloudflare.com/profile/api-tokens
277
+
278
+ 3. **Create API Token**
279
+ - Click "Create Token" button
280
+ - Choose "Read all resources" template (recommended)
281
+ - Or create custom token with specific permissions (see below)
282
+
283
+ 4. **Configure Token Permissions (Custom Token)**
284
+
285
+ **Account Permissions:**
286
+ - Account Settings: Read
287
+
288
+ **Zone Permissions:**
289
+ - Zone: Read
290
+ - DNS: Read
291
+ - Analytics: Read
292
+ - Firewall Services: Read
293
+ - Page Rules: Read
294
+
295
+ 5. **Set Token Restrictions (Optional but Recommended)**
296
+ - **IP Address Filtering**: Restrict to your IP addresses
297
+ - **TTL**: Set expiration date for security
298
+ - **Zone Resources**: Limit to specific zones if needed
299
+
300
+ 6. **Generate and Copy Token**
301
+ - Click "Continue to summary"
302
+ - Review permissions
303
+ - Click "Create Token"
304
+ - **Important**: Copy the token immediately (it won't be shown again)
305
+
306
+ 7. **Add to Configuration**
307
+ - Paste the token into your `~/.ic/config/secrets.yaml` file
308
+ - Ensure the file has restricted permissions: `chmod 600 ~/.ic/config/secrets.yaml`
309
+
310
+ ### Recommended Token Permissions
311
+
312
+ For full IC CLI functionality, your API token should have:
313
+
314
+ ```
315
+ Account Permissions:
316
+ - Account Settings: Read
317
+
318
+ Zone Permissions:
319
+ - Zone: Read
320
+ - DNS: Read
321
+ - Analytics: Read
322
+ - Firewall Services: Read
323
+ - Page Rules: Read
324
+ ```
325
+
326
+ ### Security Best Practices
327
+
328
+ 1. **Use API Tokens, Not Global API Keys**
329
+ - API tokens have granular permissions
330
+ - Can be revoked individually
331
+ - Can be restricted by IP and TTL
332
+
333
+ 2. **Principle of Least Privilege**
334
+ - Only grant "Read" permissions for IC CLI
335
+ - Don't grant "Edit" or "Delete" unless needed
336
+
337
+ 3. **Token Rotation**
338
+ - Rotate tokens regularly (every 90 days recommended)
339
+ - Set TTL when creating tokens
340
+
341
+ 4. **Secure Storage**
342
+ - Keep `secrets.yaml` out of version control
343
+ - Set file permissions: `chmod 600 ~/.ic/config/secrets.yaml`
344
+ - Never share tokens in chat, email, or documentation
345
+
346
+ 5. **IP Restrictions**
347
+ - Restrict tokens to known IP addresses when possible
348
+ - Update restrictions when IP addresses change
349
+
350
+ ---
351
+
352
+ ## Testing Your Configuration
353
+
354
+ ### Verify Configuration
355
+
356
+ After adding CloudFlare configuration, test it:
357
+
358
+ ```bash
359
+ # Test account access
360
+ ic cf account info
361
+
362
+ # Test zone access
363
+ ic cf zone info
364
+
365
+ # Test with filters
366
+ ic cf zone info -a Production
367
+ ic cf zone info -z example.com
368
+ ```
369
+
370
+ ### Validate Configuration File
371
+
372
+ ```bash
373
+ # Validate YAML syntax and structure
374
+ ic config validate
375
+
376
+ # Show merged configuration (credentials masked)
377
+ ic config show
378
+ ```
379
+
380
+ ### Troubleshooting
381
+
382
+ **Problem: Authentication Failed**
383
+ ```
384
+ ❌ CloudFlare authentication failed
385
+ ```
386
+
387
+ **Solutions:**
388
+ 1. Verify email and api_token in `secrets.yaml`
389
+ 2. Check token permissions in CloudFlare dashboard
390
+ 3. Ensure token is not expired
391
+ 4. Verify email matches the account associated with the token
392
+
393
+ **Problem: No Data Returned**
394
+ ```
395
+ Commands run but show no accounts/zones
396
+ ```
397
+
398
+ **Solutions:**
399
+ 1. Check if filters are too restrictive
400
+ 2. Try without filters: comment out `cloudflare_accounts` and `cloudflare_zones`
401
+ 3. Verify your CloudFlare account has zones
402
+ 4. Check token permissions include read access
403
+
404
+ **Problem: Rate Limit Exceeded**
405
+ ```
406
+ ⚠️ CloudFlare API rate limit exceeded
407
+ ```
408
+
409
+ **Solutions:**
410
+ 1. Wait for the suggested retry time
411
+ 2. Reduce the number of zones/accounts using filters
412
+ 3. Consider upgrading CloudFlare plan for higher rate limits
413
+
414
+ ---
415
+
416
+ ## Complete Configuration Template
417
+
418
+ Copy this template to `~/.ic/config/secrets.yaml` and customize:
419
+
420
+ ```yaml
421
+ # CloudFlare Configuration for IC CLI
422
+ # Location: ~/.ic/config/secrets.yaml
423
+ # IMPORTANT: Never commit this file to version control
424
+
425
+ cloudflare:
426
+ # Required: Your CloudFlare account email
427
+ email: "your-email@example.com"
428
+
429
+ # Required: Your CloudFlare API token
430
+ # Get token from: https://dash.cloudflare.com/profile/api-tokens
431
+ api_token: "your_cloudflare_api_token_here"
432
+
433
+ # Optional: Filter accounts (show only matching accounts)
434
+ # Supports both list format and comma-separated string
435
+ # Comment out or leave empty to show all accounts
436
+ # Case-insensitive substring matching
437
+ cloudflare_accounts:
438
+ - "Production"
439
+ - "Development"
440
+ - "Staging"
441
+ # Or use comma-separated format:
442
+ # cloudflare_accounts: "Production,Development,Staging"
443
+
444
+ # Optional: Filter zones (show only matching zones)
445
+ # Supports both list format and comma-separated string
446
+ # Comment out or leave empty to show all zones
447
+ # Case-insensitive substring matching
448
+ # Applied after account filtering
449
+ cloudflare_zones:
450
+ - "example.com"
451
+ - "api.example.com"
452
+ - "test.com"
453
+ # Or use comma-separated format:
454
+ # cloudflare_zones: "example.com,api.example.com,test.com"
455
+
456
+ # Other platform configurations can be added below
457
+ # aws:
458
+ # ...
459
+ # azure:
460
+ # ...
461
+ ```
462
+
463
+ ---
464
+
465
+ ## Additional Resources
466
+
467
+ **IC CLI Documentation:**
468
+ - CloudFlare Platform README: `src/ic/platforms/cloudflare/README.md`
469
+ - General Configuration Guide: `docs/general/configuration.md`
470
+ - Main README: `README.md`
471
+
472
+ **CloudFlare Resources:**
473
+ - API Documentation: https://developers.cloudflare.com/api/
474
+ - Dashboard: https://dash.cloudflare.com/
475
+ - API Tokens: https://dash.cloudflare.com/profile/api-tokens
476
+ - Status Page: https://www.cloudflarestatus.com/
477
+
478
+ **Security:**
479
+ - Never commit `secrets.yaml` to version control
480
+ - Add to `.gitignore`: `secrets.yaml`, `**/secrets.yaml`
481
+ - Set file permissions: `chmod 600 ~/.ic/config/secrets.yaml`
482
+ - Rotate API tokens regularly
483
+
484
+ ---
485
+
486
+ ## Quick Start Checklist
487
+
488
+ - [ ] Create `~/.ic/config/secrets.yaml` if it doesn't exist
489
+ - [ ] Add CloudFlare email and API token
490
+ - [ ] Set file permissions: `chmod 600 ~/.ic/config/secrets.yaml`
491
+ - [ ] (Optional) Add account and zone filters
492
+ - [ ] Test configuration: `ic cf account info`
493
+ - [ ] Verify access: `ic cf zone info`
494
+ - [ ] Review logs for any issues: `~/.ic/logs/ic_YYYYMMDD.log`
495
+
496
+ ---
497
+
498
+ **Last Updated:** November 2024
499
+ **IC CLI Version:** 1.2.x+
500
+ **CloudFlare API Version:** v4
@@ -40,6 +40,7 @@ Each platform has its own configuration directory and files:
40
40
 
41
41
  - **AWS**: See [AWS Configuration Guide](../aws/configuration.md)
42
42
  - **Azure**: See [Azure Configuration Guide](../azure/configuration.md)
43
+ - **CloudFlare**: See [CloudFlare Configuration Examples](../cloudflare_configuration_example.md)
43
44
  - **GCP**: See [GCP Configuration Guide](../gcp/configuration.md)
44
45
  - **NCP**: See [NCP Configuration Guide](../ncp/configuration.md)
45
46
  - **NCPGOV**: See [NCPGOV Configuration Guide](../ncpgov/configuration.md)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ic-code"
7
- version = "1.2.4"
7
+ version = "1.2.5"
8
8
  authors = [
9
9
  {name = "sykim", email = "cruiser594@gmail.com"},
10
10
  ]
@@ -120,8 +120,8 @@ def main():
120
120
 
121
121
  # Use defaults if nothing detected
122
122
  if not detected_platforms:
123
- print("No platforms detected, using defaults: ncp, ncpgov")
124
- detected_platforms = ["ncp", "ncpgov"]
123
+ print("No platforms detected, using default: aws")
124
+ detected_platforms = ["aws"]
125
125
 
126
126
  # Filter platforms that have tests
127
127
  platforms_with_tests = filter_platforms_with_tests(detected_platforms)
@@ -4,7 +4,7 @@ IC (Infra Resource Management CLI) - A comprehensive tool for managing cloud inf
4
4
  This package provides CLI tools and libraries for managing AWS, Azure, GCP, OCI, and CloudFlare resources.
5
5
  """
6
6
 
7
- __version__ = "1.2.4"
7
+ __version__ = "1.2.5"
8
8
  __author__ = "SangYun"
9
9
  __email__ = "cruiser594@gmail.com"
10
10