├── .gitignore
├── .golangci.yaml
├── LICENSE
├── README.md
├── build
├── README.md
├── build-messages.sh
├── build.sh
├── proto-json.sh
└── rpc.json
├── cmd
├── langs
│ └── main.go
└── proto-json
│ └── main.go
├── go.mod
├── go.sum
└── pkg
├── configutils
├── charsets.go
├── copy.go
├── copy_test.go
├── domain.go
├── domain_test.go
├── ip.go
├── ip_test.go
├── log.go
├── match.go
├── match_test.go
├── state.go
├── variable.go
├── variable_test.go
└── yaml.go
├── dnsconfigs
├── .gitignore
├── cluster_dns_config.go
├── dns_resolver.go
└── record_types.go
├── errors
├── detailed_error.go
├── error.go
└── error_test.go
├── iplibrary
├── .gitignore
├── default_ip_library.go
├── default_ip_library_test.go
├── encrypt.go
├── internal-ip-library.db
├── ip_item.go
├── meta.go
├── meta_test.go
├── parser.go
├── parser_config.go
├── parser_reader.go
├── parser_reader_test.go
├── parser_test.go
├── reader.go
├── reader_file.go
├── reader_file_test.go
├── reader_interface.go
├── reader_result.go
├── reader_test.go
├── reader_v2.go
├── template.go
├── template_test.go
├── updater.go
├── updater_test.go
├── version.go
├── writer.go
├── writer_file.go
├── writer_file_test.go
├── writer_interface.go
├── writer_v2.go
└── writer_v2_test.go
├── iputils
├── cidr.go
├── cidr_test.go
├── ip.go
└── ip_test.go
├── langs
├── codes
│ └── codes.go
├── lang.go
├── manager.go
├── manager_test.go
├── message.go
├── message_test.go
├── messages
│ ├── messages_en_us.go
│ └── messages_zh_cn.go
├── protos
│ ├── README.md
│ ├── en-us
│ │ ├── admin_common.json
│ │ ├── admin_dashboard.json
│ │ ├── admin_menu.json
│ │ ├── admin_setting.json
│ │ ├── node_cluster_menu.json
│ │ ├── node_menu.json
│ │ ├── server.json
│ │ └── system.json
│ └── zh-cn
│ │ ├── acme_provider_account.json
│ │ ├── acme_task.json
│ │ ├── acme_user.json
│ │ ├── ad_network.json
│ │ ├── ad_package.json
│ │ ├── ad_package_instance.json
│ │ ├── ad_package_period.json
│ │ ├── ad_package_price.json
│ │ ├── admin.json
│ │ ├── admin_common.json
│ │ ├── admin_dashboard.json
│ │ ├── admin_login.json
│ │ ├── admin_menu.json
│ │ ├── admin_profile.json
│ │ ├── admin_security.json
│ │ ├── admin_server.json
│ │ ├── admin_setting.json
│ │ ├── admin_ui.json
│ │ ├── admin_update.json
│ │ ├── admin_user_ui.json
│ │ ├── api_node.json
│ │ ├── client_browser.json
│ │ ├── client_system.json
│ │ ├── database.json
│ │ ├── db_node.json
│ │ ├── ddos_protection.json
│ │ ├── dns.json
│ │ ├── dns_provider.json
│ │ ├── dns_task.json
│ │ ├── finance.json
│ │ ├── finance_fee.json
│ │ ├── http_access_log_policy.json
│ │ ├── http_auth_policy.json
│ │ ├── http_cache_task.json
│ │ ├── http_fastcgi.json
│ │ ├── http_location.json
│ │ ├── http_rewrite_rule.json
│ │ ├── ip_item.json
│ │ ├── ip_library.json
│ │ ├── ip_library_artifact.json
│ │ ├── ip_library_file.json
│ │ ├── ip_list.json
│ │ ├── level.json
│ │ ├── log.json
│ │ ├── message.json
│ │ ├── message_media_instance.json
│ │ ├── message_receiver.json
│ │ ├── message_recipient.json
│ │ ├── message_task.json
│ │ ├── metric_chart.json
│ │ ├── metric_item.json
│ │ ├── monitor_node.json
│ │ ├── node.json
│ │ ├── node_action.json
│ │ ├── node_cache.json
│ │ ├── node_cluster.json
│ │ ├── node_cluster_dns.json
│ │ ├── node_cluster_menu.json
│ │ ├── node_dns.json
│ │ ├── node_grant.json
│ │ ├── node_group.json
│ │ ├── node_ip_address.json
│ │ ├── node_log.json
│ │ ├── node_menu.json
│ │ ├── node_price_item.json
│ │ ├── node_region.json
│ │ ├── node_region_price.json
│ │ ├── node_schedule.json
│ │ ├── node_ssh.json
│ │ ├── node_system.json
│ │ ├── node_systemd.json
│ │ ├── node_task.json
│ │ ├── node_threshold.json
│ │ ├── node_toa.json
│ │ ├── ns.json
│ │ ├── ns_cluster.json
│ │ ├── ns_domain.json
│ │ ├── ns_domain_group.json
│ │ ├── ns_key.json
│ │ ├── ns_node.json
│ │ ├── ns_node_ssh.json
│ │ ├── ns_plan.json
│ │ ├── ns_record.json
│ │ ├── ns_route.json
│ │ ├── ns_route_category.json
│ │ ├── ns_user_plan.json
│ │ ├── order_method.json
│ │ ├── plan.json
│ │ ├── post.json
│ │ ├── region_city.json
│ │ ├── region_country.json
│ │ ├── region_provider.json
│ │ ├── region_province.json
│ │ ├── region_town.json
│ │ ├── report_node.json
│ │ ├── report_node_group.json
│ │ ├── reverse_proxy.json
│ │ ├── script.json
│ │ ├── server.json
│ │ ├── server_access_log.json
│ │ ├── server_auth.json
│ │ ├── server_cache.json
│ │ ├── server_cache_policy.json
│ │ ├── server_cc.json
│ │ ├── server_charset.json
│ │ ├── server_common.json
│ │ ├── server_compression.json
│ │ ├── server_dns.json
│ │ ├── server_fastcgi.json
│ │ ├── server_global_setting.json
│ │ ├── server_group.json
│ │ ├── server_hls.json
│ │ ├── server_http.json
│ │ ├── server_http3.json
│ │ ├── server_http_header.json
│ │ ├── server_https.json
│ │ ├── server_optimization.json
│ │ ├── server_origin.json
│ │ ├── server_page.json
│ │ ├── server_redirect.json
│ │ ├── server_referer.json
│ │ ├── server_request_limit.json
│ │ ├── server_reverse_proxy.json
│ │ ├── server_root.json
│ │ ├── server_script.json
│ │ ├── server_stat.json
│ │ ├── server_tcp.json
│ │ ├── server_tls.json
│ │ ├── server_traffic_limit.json
│ │ ├── server_traffic_stat.json
│ │ ├── server_uam.json
│ │ ├── server_udp.json
│ │ ├── server_user_agent.json
│ │ ├── server_user_script.json
│ │ ├── server_waf.json
│ │ ├── server_webp.json
│ │ ├── server_websocket.json
│ │ ├── ssl_cert.json
│ │ ├── system.json
│ │ ├── ticket_category.json
│ │ ├── traffic_package.json
│ │ ├── traffic_package_period.json
│ │ ├── traffic_package_price.json
│ │ ├── user.json
│ │ ├── user_access_key.json
│ │ ├── user_account.json
│ │ ├── user_ad_instance.json
│ │ ├── user_bill.json
│ │ ├── user_common.json
│ │ ├── user_identity.json
│ │ ├── user_login.json
│ │ ├── user_node.json
│ │ ├── user_order.json
│ │ ├── user_plan.json
│ │ ├── user_ticket.json
│ │ ├── user_ticket_log.json
│ │ ├── user_traffic_package.json
│ │ ├── waf.json
│ │ ├── waf_action.json
│ │ ├── waf_policy.json
│ │ ├── waf_rule.json
│ │ ├── waf_rule_group.json
│ │ └── waf_rule_set.json
├── utils.go
└── utils_test.go
├── messageconfigs
├── messages.go
└── ns_messages.go
├── monitorconfigs
└── rate_config.go
├── nodeconfigs
├── clock_config.go
├── connectivity.go
├── defaults.go
├── dns_resolver.go
├── http3_policy.go
├── http_cc_policy.go
├── http_pages_policy.go
├── image_webp_policy.go
├── networking_security_policy.go
├── node_config.go
├── node_config_test.go
├── node_ip_addr.go
├── node_levels.go
├── node_log_type.go
├── node_parent_config.go
├── node_roles.go
├── node_status.go
├── node_value_item.go
├── node_value_thresholds.go
├── product_config.go
├── service_systemd_config.go
├── ssh_params.go
├── timezones.go
├── timezones_test.go
├── toa_config.go
└── uam_policy.go
├── nodeutils
├── aes_256.go
├── aes_utils.go
├── aes_utils_test.go
├── base64_map.go
└── base64_map_test.go
├── reporterconfigs
├── global_setting.go
├── messages.go
├── node_config.go
├── report_levels.go
├── status.go
└── tasks.go
├── rpc
├── dao
│ ├── base_dao.go
│ ├── http_cache_policy_dao.go
│ ├── http_firewall_policy_dao.go
│ ├── http_firewall_rule_group_dao.go
│ ├── http_firewall_rule_set_dao.go
│ ├── http_web_dao.go
│ ├── ip_list_dao.go
│ ├── log_dao.go
│ ├── node_cluster_dao.go
│ ├── rpc_client.go
│ └── server_dao.go
├── errors
│ └── utils.go
├── jsons
│ ├── bit_size_capacity.md
│ ├── hsts.md
│ ├── http_access_log_ref.md
│ ├── http_cache_config.md
│ ├── http_cache_ref.md
│ ├── http_firewall_ref.md
│ ├── http_protocol.md
│ ├── http_remote_addr_config.md
│ ├── http_stat_stat_ref.md
│ ├── http_websocket_ref.md
│ ├── https_protocol.md
│ ├── network_address.md
│ ├── origin_refs.md
│ ├── reverse_proxy_ref.md
│ ├── scheduling.md
│ ├── server_name.md
│ ├── server_names.md
│ ├── size_capacity.md
│ ├── ssl_cert_refs.md
│ ├── tcp_protocol.md
│ ├── tls_protocol.md
│ └── udp_protocol.md
├── pb
│ ├── api_method_stat_service.pb.go
│ ├── api_method_stat_service_grpc.pb.go
│ ├── model_acme_provider.pb.go
│ ├── model_acme_provider_account.pb.go
│ ├── model_acme_task.pb.go
│ ├── model_acme_task_log.pb.go
│ ├── model_acme_user.pb.go
│ ├── model_ad_network.pb.go
│ ├── model_ad_package.pb.go
│ ├── model_ad_package_instance.pb.go
│ ├── model_ad_package_period.pb.go
│ ├── model_ad_package_price.pb.go
│ ├── model_admin.pb.go
│ ├── model_admin_list.pb.go
│ ├── model_admin_module.pb.go
│ ├── model_api_method_stat.pb.go
│ ├── model_api_node.pb.go
│ ├── model_api_token.pb.go
│ ├── model_authority_key.pb.go
│ ├── model_authority_node.pb.go
│ ├── model_client_agent.pb.go
│ ├── model_client_agent_ip.pb.go
│ ├── model_client_browser.pb.go
│ ├── model_client_system.pb.go
│ ├── model_db_node.pb.go
│ ├── model_db_table.pb.go
│ ├── model_dns_domain.pb.go
│ ├── model_dns_issue.pb.go
│ ├── model_dns_provider.pb.go
│ ├── model_dns_record.pb.go
│ ├── model_dns_route.pb.go
│ ├── model_dns_task.pb.go
│ ├── model_file.pb.go
│ ├── model_file_chunk.pb.go
│ ├── model_formal_client_browser.pb.go
│ ├── model_formal_client_system.pb.go
│ ├── model_http_access_log.pb.go
│ ├── model_http_access_log_policy.pb.go
│ ├── model_http_auth_policy.pb.go
│ ├── model_http_cache_policy.pb.go
│ ├── model_http_cache_task.pb.go
│ ├── model_http_cache_task_key.pb.go
│ ├── model_http_fastcgi.pb.go
│ ├── model_http_firewall_policy.pb.go
│ ├── model_http_firewall_rule_group.pb.go
│ ├── model_http_firewall_rule_set.pb.go
│ ├── model_http_gzip.pb.go
│ ├── model_http_web.pb.go
│ ├── model_ip_item.pb.go
│ ├── model_ip_library.pb.go
│ ├── model_ip_library_artifact.pb.go
│ ├── model_ip_library_file.pb.go
│ ├── model_ip_list.pb.go
│ ├── model_log.pb.go
│ ├── model_login.pb.go
│ ├── model_login_session.pb.go
│ ├── model_message.pb.go
│ ├── model_message_media.pb.go
│ ├── model_message_media_instance.pb.go
│ ├── model_message_receiver.pb.go
│ ├── model_message_recipient.pb.go
│ ├── model_message_recipient_group.pb.go
│ ├── model_message_task.pb.go
│ ├── model_message_task_log.pb.go
│ ├── model_metric_chart.pb.go
│ ├── model_metric_item.pb.go
│ ├── model_metric_stat.pb.go
│ ├── model_network_address.pb.go
│ ├── model_node.pb.go
│ ├── model_node_action.pb.go
│ ├── model_node_cluster.pb.go
│ ├── model_node_cluster_firewall_action.pb.go
│ ├── model_node_grant.pb.go
│ ├── model_node_group.pb.go
│ ├── model_node_install_status.pb.go
│ ├── model_node_ip_address.pb.go
│ ├── model_node_ip_address_log.pb.go
│ ├── model_node_ip_address_threshold.pb.go
│ ├── model_node_log.pb.go
│ ├── model_node_login.pb.go
│ ├── model_node_price_item.pb.go
│ ├── model_node_region.pb.go
│ ├── model_node_task.pb.go
│ ├── model_node_threshold.pb.go
│ ├── model_node_value.pb.go
│ ├── model_ns_access_log.pb.go
│ ├── model_ns_cluster.pb.go
│ ├── model_ns_domain.pb.go
│ ├── model_ns_domain_group.pb.go
│ ├── model_ns_key.pb.go
│ ├── model_ns_node.pb.go
│ ├── model_ns_plan.pb.go
│ ├── model_ns_question_option.pb.go
│ ├── model_ns_record.pb.go
│ ├── model_ns_record_hourly_stat.pb.go
│ ├── model_ns_route.pb.go
│ ├── model_ns_route_category.pb.go
│ ├── model_ns_user_plan.pb.go
│ ├── model_ns_zone.pb.go
│ ├── model_order_method.pb.go
│ ├── model_origin.pb.go
│ ├── model_plan.pb.go
│ ├── model_post.pb.go
│ ├── model_post_category.pb.go
│ ├── model_region_city.pb.go
│ ├── model_region_country.pb.go
│ ├── model_region_provider.pb.go
│ ├── model_region_province.pb.go
│ ├── model_region_town.pb.go
│ ├── model_report_node.pb.go
│ ├── model_report_node_group.pb.go
│ ├── model_report_result.pb.go
│ ├── model_report_task.pb.go
│ ├── model_reverse_proxy.pb.go
│ ├── model_script.pb.go
│ ├── model_server.pb.go
│ ├── model_server_bandwidth_stat.pb.go
│ ├── model_server_bill.pb.go
│ ├── model_server_daily_stat.pb.go
│ ├── model_server_domain_hourly_stat.pb.go
│ ├── model_server_group.pb.go
│ ├── model_server_name_auditing_result.pb.go
│ ├── model_server_stat_board.pb.go
│ ├── model_server_stat_board_chart.pb.go
│ ├── model_size_capacity.pb.go
│ ├── model_ssl_cert.pb.go
│ ├── model_traffic_daily_stat.pb.go
│ ├── model_traffic_package.pb.go
│ ├── model_traffic_package_period.pb.go
│ ├── model_traffic_package_price.pb.go
│ ├── model_user.pb.go
│ ├── model_user_access_key.pb.go
│ ├── model_user_account.pb.go
│ ├── model_user_account_daily_stat.pb.go
│ ├── model_user_account_log.pb.go
│ ├── model_user_ad_instance.pb.go
│ ├── model_user_bandwidth_stat.pb.go
│ ├── model_user_bill.pb.go
│ ├── model_user_email_verification.pb.go
│ ├── model_user_feature.pb.go
│ ├── model_user_identity.pb.go
│ ├── model_user_mobile_verification.pb.go
│ ├── model_user_node.pb.go
│ ├── model_user_order.pb.go
│ ├── model_user_plan.pb.go
│ ├── model_user_script.pb.go
│ ├── model_user_ticket.pb.go
│ ├── model_user_ticket_category.pb.go
│ ├── model_user_ticket_log.pb.go
│ ├── model_user_traffic_bill.pb.go
│ ├── model_user_traffic_package.pb.go
│ ├── rpc_messages.pb.go
│ ├── service_acme_authentication.pb.go
│ ├── service_acme_authentication_grpc.pb.go
│ ├── service_acme_provider.pb.go
│ ├── service_acme_provider_acount.pb.go
│ ├── service_acme_provider_acount_grpc.pb.go
│ ├── service_acme_provider_grpc.pb.go
│ ├── service_acme_task.pb.go
│ ├── service_acme_task_grpc.pb.go
│ ├── service_acme_user.pb.go
│ ├── service_acme_user_grpc.pb.go
│ ├── service_ad_network.pb.go
│ ├── service_ad_network_grpc.pb.go
│ ├── service_ad_package.pb.go
│ ├── service_ad_package_grpc.pb.go
│ ├── service_ad_package_instance.pb.go
│ ├── service_ad_package_instance_grpc.pb.go
│ ├── service_ad_package_period.pb.go
│ ├── service_ad_package_period_grpc.pb.go
│ ├── service_ad_package_price.pb.go
│ ├── service_ad_package_price_grpc.pb.go
│ ├── service_admin.pb.go
│ ├── service_admin_grpc.pb.go
│ ├── service_api_access_token.pb.go
│ ├── service_api_access_token_grpc.pb.go
│ ├── service_api_node.pb.go
│ ├── service_api_node_grpc.pb.go
│ ├── service_api_token.pb.go
│ ├── service_api_token_grpc.pb.go
│ ├── service_authority_key.pb.go
│ ├── service_authority_key_grpc.pb.go
│ ├── service_authority_node.pb.go
│ ├── service_authority_node_grpc.pb.go
│ ├── service_client_agent.pb.go
│ ├── service_client_agent_grpc.pb.go
│ ├── service_client_agent_ip.pb.go
│ ├── service_client_agent_ip_grpc.pb.go
│ ├── service_db.pb.go
│ ├── service_db_grpc.pb.go
│ ├── service_db_node.pb.go
│ ├── service_db_node_grpc.pb.go
│ ├── service_dns.pb.go
│ ├── service_dns_domain.pb.go
│ ├── service_dns_domain_grpc.pb.go
│ ├── service_dns_grpc.pb.go
│ ├── service_dns_provider.pb.go
│ ├── service_dns_provider_grpc.pb.go
│ ├── service_dns_task.pb.go
│ ├── service_dns_task_grpc.pb.go
│ ├── service_file.pb.go
│ ├── service_file_chunk.pb.go
│ ├── service_file_chunk_grpc.pb.go
│ ├── service_file_grpc.pb.go
│ ├── service_firewall.pb.go
│ ├── service_firewall_grpc.pb.go
│ ├── service_formal_client_browser.pb.go
│ ├── service_formal_client_browser_grpc.pb.go
│ ├── service_formal_client_system.pb.go
│ ├── service_formal_client_system_grpc.pb.go
│ ├── service_http_access_log.pb.go
│ ├── service_http_access_log_grpc.pb.go
│ ├── service_http_access_log_policy.pb.go
│ ├── service_http_access_log_policy_grpc.pb.go
│ ├── service_http_auth_policy.pb.go
│ ├── service_http_auth_policy_grpc.pb.go
│ ├── service_http_cache_policy.pb.go
│ ├── service_http_cache_policy_grpc.pb.go
│ ├── service_http_cache_task.pb.go
│ ├── service_http_cache_task_grpc.pb.go
│ ├── service_http_cache_task_key.pb.go
│ ├── service_http_cache_task_key_grpc.pb.go
│ ├── service_http_fastcgi.pb.go
│ ├── service_http_fastcgi_grpc.pb.go
│ ├── service_http_firewall_policy.pb.go
│ ├── service_http_firewall_policy_grpc.pb.go
│ ├── service_http_firewall_rule_group.pb.go
│ ├── service_http_firewall_rule_group_grpc.pb.go
│ ├── service_http_firewall_rule_set.pb.go
│ ├── service_http_firewall_rule_set_grpc.pb.go
│ ├── service_http_gzip.pb.go
│ ├── service_http_gzip_grpc.pb.go
│ ├── service_http_header.pb.go
│ ├── service_http_header_grpc.pb.go
│ ├── service_http_header_policy.pb.go
│ ├── service_http_header_policy_grpc.pb.go
│ ├── service_http_location.pb.go
│ ├── service_http_location_grpc.pb.go
│ ├── service_http_page.pb.go
│ ├── service_http_page_grpc.pb.go
│ ├── service_http_rewrite_rule.pb.go
│ ├── service_http_rewrite_rule_grpc.pb.go
│ ├── service_http_web.pb.go
│ ├── service_http_web_grpc.pb.go
│ ├── service_http_websocket.pb.go
│ ├── service_http_websocket_grpc.pb.go
│ ├── service_ip_item.pb.go
│ ├── service_ip_item_grpc.pb.go
│ ├── service_ip_library.pb.go
│ ├── service_ip_library_artifact.pb.go
│ ├── service_ip_library_artifact_grpc.pb.go
│ ├── service_ip_library_file.pb.go
│ ├── service_ip_library_file_grpc.pb.go
│ ├── service_ip_library_grpc.pb.go
│ ├── service_ip_list.pb.go
│ ├── service_ip_list_grpc.pb.go
│ ├── service_latest_item.pb.go
│ ├── service_latest_item_grpc.pb.go
│ ├── service_log.pb.go
│ ├── service_log_grpc.pb.go
│ ├── service_login.pb.go
│ ├── service_login_grpc.pb.go
│ ├── service_login_session.pb.go
│ ├── service_login_session_grpc.pb.go
│ ├── service_message.pb.go
│ ├── service_message_grpc.pb.go
│ ├── service_message_media.pb.go
│ ├── service_message_media_grpc.pb.go
│ ├── service_message_media_instance.pb.go
│ ├── service_message_media_instance_grpc.pb.go
│ ├── service_message_receiver.pb.go
│ ├── service_message_receiver_grpc.pb.go
│ ├── service_message_recipient.pb.go
│ ├── service_message_recipient_group.pb.go
│ ├── service_message_recipient_group_grpc.pb.go
│ ├── service_message_recipient_grpc.pb.go
│ ├── service_message_task.pb.go
│ ├── service_message_task_grpc.pb.go
│ ├── service_message_task_log.pb.go
│ ├── service_message_task_log_grpc.pb.go
│ ├── service_metric_chart.pb.go
│ ├── service_metric_chart_grpc.pb.go
│ ├── service_metric_item.pb.go
│ ├── service_metric_item_grpc.pb.go
│ ├── service_metric_stat.pb.go
│ ├── service_metric_stat_grpc.pb.go
│ ├── service_node.pb.go
│ ├── service_node_action.pb.go
│ ├── service_node_action_grpc.pb.go
│ ├── service_node_cluster.pb.go
│ ├── service_node_cluster_firewall_action.pb.go
│ ├── service_node_cluster_firewall_action_grpc.pb.go
│ ├── service_node_cluster_grpc.pb.go
│ ├── service_node_cluster_metric_item.pb.go
│ ├── service_node_cluster_metric_item_grpc.pb.go
│ ├── service_node_grant.pb.go
│ ├── service_node_grant_grpc.pb.go
│ ├── service_node_group.pb.go
│ ├── service_node_group_grpc.pb.go
│ ├── service_node_grpc.pb.go
│ ├── service_node_ip_address.pb.go
│ ├── service_node_ip_address_grpc.pb.go
│ ├── service_node_ip_address_log.pb.go
│ ├── service_node_ip_address_log_grpc.pb.go
│ ├── service_node_ip_address_threshold.pb.go
│ ├── service_node_ip_address_threshold_grpc.pb.go
│ ├── service_node_log.pb.go
│ ├── service_node_log_grpc.pb.go
│ ├── service_node_login.pb.go
│ ├── service_node_login_grpc.pb.go
│ ├── service_node_price_item.pb.go
│ ├── service_node_price_item_grpc.pb.go
│ ├── service_node_region.pb.go
│ ├── service_node_region_grpc.pb.go
│ ├── service_node_task.pb.go
│ ├── service_node_task_grpc.pb.go
│ ├── service_node_threshold.pb.go
│ ├── service_node_threshold_grpc.pb.go
│ ├── service_node_value.pb.go
│ ├── service_node_value_grpc.pb.go
│ ├── service_ns.pb.go
│ ├── service_ns_access_log.pb.go
│ ├── service_ns_access_log_grpc.pb.go
│ ├── service_ns_cluster.pb.go
│ ├── service_ns_cluster_grpc.pb.go
│ ├── service_ns_domain.pb.go
│ ├── service_ns_domain_group.pb.go
│ ├── service_ns_domain_group_grpc.pb.go
│ ├── service_ns_domain_grpc.pb.go
│ ├── service_ns_grpc.pb.go
│ ├── service_ns_key.pb.go
│ ├── service_ns_key_grpc.pb.go
│ ├── service_ns_node.pb.go
│ ├── service_ns_node_grpc.pb.go
│ ├── service_ns_plan.pb.go
│ ├── service_ns_plan_grpc.pb.go
│ ├── service_ns_question_option.pb.go
│ ├── service_ns_question_option_grpc.pb.go
│ ├── service_ns_record.pb.go
│ ├── service_ns_record_grpc.pb.go
│ ├── service_ns_record_hourly_stat.pb.go
│ ├── service_ns_record_hourly_stat_grpc.pb.go
│ ├── service_ns_route.pb.go
│ ├── service_ns_route_category.pb.go
│ ├── service_ns_route_category_grpc.pb.go
│ ├── service_ns_route_grpc.pb.go
│ ├── service_ns_user_plan.pb.go
│ ├── service_ns_user_plan_grpc.pb.go
│ ├── service_order_method.pb.go
│ ├── service_order_method_grpc.pb.go
│ ├── service_origin.pb.go
│ ├── service_origin_grpc.pb.go
│ ├── service_ping.pb.go
│ ├── service_ping_grpc.pb.go
│ ├── service_plan.pb.go
│ ├── service_plan_grpc.pb.go
│ ├── service_post.pb.go
│ ├── service_post_category.pb.go
│ ├── service_post_category_grpc.pb.go
│ ├── service_post_grpc.pb.go
│ ├── service_price.pb.go
│ ├── service_price_grpc.pb.go
│ ├── service_region_city.pb.go
│ ├── service_region_city_grpc.pb.go
│ ├── service_region_country.pb.go
│ ├── service_region_country_grpc.pb.go
│ ├── service_region_provider.pb.go
│ ├── service_region_provider_grpc.pb.go
│ ├── service_region_province.pb.go
│ ├── service_region_province_grpc.pb.go
│ ├── service_region_town.pb.go
│ ├── service_region_town_grpc.pb.go
│ ├── service_report_node.pb.go
│ ├── service_report_node_group.pb.go
│ ├── service_report_node_group_grpc.pb.go
│ ├── service_report_node_grpc.pb.go
│ ├── service_report_result.pb.go
│ ├── service_report_result_grpc.pb.go
│ ├── service_reverse_proxy.pb.go
│ ├── service_reverse_proxy_grpc.pb.go
│ ├── service_script.pb.go
│ ├── service_script_grpc.pb.go
│ ├── service_server.pb.go
│ ├── service_server_bandwidth_stat.pb.go
│ ├── service_server_bandwidth_stat_grpc.pb.go
│ ├── service_server_bill.pb.go
│ ├── service_server_bill_grpc.pb.go
│ ├── service_server_client_browser_monthly_stat.pb.go
│ ├── service_server_client_browser_monthly_stat_grpc.pb.go
│ ├── service_server_client_system_monthly_stat.pb.go
│ ├── service_server_client_system_monthly_stat_grpc.pb.go
│ ├── service_server_daily_stat.pb.go
│ ├── service_server_daily_stat_grpc.pb.go
│ ├── service_server_domain_hourly_stat.pb.go
│ ├── service_server_domain_hourly_stat_grpc.pb.go
│ ├── service_server_group.pb.go
│ ├── service_server_group_grpc.pb.go
│ ├── service_server_grpc.pb.go
│ ├── service_server_http_firewall_daily_stat.pb.go
│ ├── service_server_http_firewall_daily_stat_grpc.pb.go
│ ├── service_server_region_city_monthly_stat.pb.go
│ ├── service_server_region_city_monthly_stat_grpc.pb.go
│ ├── service_server_region_country_monthly_stat.pb.go
│ ├── service_server_region_country_monthly_stat_grpc.pb.go
│ ├── service_server_region_provider_monthly_stat.pb.go
│ ├── service_server_region_provider_monthly_stat_grpc.pb.go
│ ├── service_server_region_province_monthly_stat.pb.go
│ ├── service_server_region_province_monthly_stat_grpc.pb.go
│ ├── service_server_stat_board.pb.go
│ ├── service_server_stat_board_chart.pb.go
│ ├── service_server_stat_board_chart_grpc.pb.go
│ ├── service_server_stat_board_grpc.pb.go
│ ├── service_sms_sender.pb.go
│ ├── service_sms_sender_grpc.pb.go
│ ├── service_ssl_cert.pb.go
│ ├── service_ssl_cert_grpc.pb.go
│ ├── service_ssl_policy.pb.go
│ ├── service_ssl_policy_grpc.pb.go
│ ├── service_sys_locker.pb.go
│ ├── service_sys_locker_grpc.pb.go
│ ├── service_sys_setting.pb.go
│ ├── service_sys_setting_grpc.pb.go
│ ├── service_traffic_daily_stat.pb.go
│ ├── service_traffic_daily_stat_grpc.pb.go
│ ├── service_traffic_package.pb.go
│ ├── service_traffic_package_grpc.pb.go
│ ├── service_traffic_package_period.pb.go
│ ├── service_traffic_package_period_grpc.pb.go
│ ├── service_traffic_package_price.pb.go
│ ├── service_traffic_package_price_grpc.pb.go
│ ├── service_updating_server_list.pb.go
│ ├── service_updating_server_list_grpc.pb.go
│ ├── service_user.pb.go
│ ├── service_user_access_key.pb.go
│ ├── service_user_access_key_grpc.pb.go
│ ├── service_user_account.pb.go
│ ├── service_user_account_daily_stat.pb.go
│ ├── service_user_account_daily_stat_grpc.pb.go
│ ├── service_user_account_grpc.pb.go
│ ├── service_user_account_log.pb.go
│ ├── service_user_account_log_grpc.pb.go
│ ├── service_user_ad_instance.pb.go
│ ├── service_user_ad_instance_grpc.pb.go
│ ├── service_user_bill.pb.go
│ ├── service_user_bill_grpc.pb.go
│ ├── service_user_email_verification.pb.go
│ ├── service_user_email_verification_grpc.pb.go
│ ├── service_user_grpc.pb.go
│ ├── service_user_identity.pb.go
│ ├── service_user_identity_grpc.pb.go
│ ├── service_user_mobile_verification.pb.go
│ ├── service_user_mobile_verification_grpc.pb.go
│ ├── service_user_node.pb.go
│ ├── service_user_node_grpc.pb.go
│ ├── service_user_order.pb.go
│ ├── service_user_order_grpc.pb.go
│ ├── service_user_plan.pb.go
│ ├── service_user_plan_grpc.pb.go
│ ├── service_user_script.pb.go
│ ├── service_user_script_grpc.pb.go
│ ├── service_user_ticket.pb.go
│ ├── service_user_ticket_category.pb.go
│ ├── service_user_ticket_category_grpc.pb.go
│ ├── service_user_ticket_grpc.pb.go
│ ├── service_user_ticket_log.pb.go
│ ├── service_user_ticket_log_grpc.pb.go
│ ├── service_user_traffic_bill.pb.go
│ ├── service_user_traffic_bill_grpc.pb.go
│ ├── service_user_traffic_package.pb.go
│ ├── service_user_traffic_package_grpc.pb.go
│ ├── service_user_verify_code.pb.go
│ └── service_user_verify_code_grpc.pb.go
└── protos
│ ├── api_method_stat_service.proto
│ ├── models
│ ├── model_acme_provider.proto
│ ├── model_acme_provider_account.proto
│ ├── model_acme_task.proto
│ ├── model_acme_task_log.proto
│ ├── model_acme_user.proto
│ ├── model_ad_network.proto
│ ├── model_ad_package.proto
│ ├── model_ad_package_instance.proto
│ ├── model_ad_package_period.proto
│ ├── model_ad_package_price.proto
│ ├── model_admin.proto
│ ├── model_admin_list.proto
│ ├── model_admin_module.proto
│ ├── model_api_method_stat.proto
│ ├── model_api_node.proto
│ ├── model_api_token.proto
│ ├── model_authority_key.proto
│ ├── model_authority_node.proto
│ ├── model_client_agent.proto
│ ├── model_client_agent_ip.proto
│ ├── model_client_browser.proto
│ ├── model_client_system.proto
│ ├── model_db_node.proto
│ ├── model_db_table.proto
│ ├── model_dns_domain.proto
│ ├── model_dns_issue.proto
│ ├── model_dns_provider.proto
│ ├── model_dns_record.proto
│ ├── model_dns_route.proto
│ ├── model_dns_task.proto
│ ├── model_file.proto
│ ├── model_file_chunk.proto
│ ├── model_formal_client_browser.proto
│ ├── model_formal_client_system.proto
│ ├── model_http_access_log.proto
│ ├── model_http_access_log_policy.proto
│ ├── model_http_auth_policy.proto
│ ├── model_http_cache_policy.proto
│ ├── model_http_cache_task.proto
│ ├── model_http_cache_task_key.proto
│ ├── model_http_fastcgi.proto
│ ├── model_http_firewall_policy.proto
│ ├── model_http_firewall_rule_group.proto
│ ├── model_http_firewall_rule_set.proto
│ ├── model_http_gzip.proto
│ ├── model_http_web.proto
│ ├── model_ip_item.proto
│ ├── model_ip_library.proto
│ ├── model_ip_library_artifact.proto
│ ├── model_ip_library_file.proto
│ ├── model_ip_list.proto
│ ├── model_log.proto
│ ├── model_login.proto
│ ├── model_login_session.proto
│ ├── model_message.proto
│ ├── model_message_media.proto
│ ├── model_message_media_instance.proto
│ ├── model_message_receiver.proto
│ ├── model_message_recipient.proto
│ ├── model_message_recipient_group.proto
│ ├── model_message_task.proto
│ ├── model_message_task_log.proto
│ ├── model_metric_chart.proto
│ ├── model_metric_item.proto
│ ├── model_metric_stat.proto
│ ├── model_network_address.proto
│ ├── model_node.proto
│ ├── model_node_action.proto
│ ├── model_node_cluster.proto
│ ├── model_node_cluster_firewall_action.proto
│ ├── model_node_grant.proto
│ ├── model_node_group.proto
│ ├── model_node_install_status.proto
│ ├── model_node_ip_address.proto
│ ├── model_node_ip_address_log.proto
│ ├── model_node_ip_address_threshold.proto
│ ├── model_node_log.proto
│ ├── model_node_login.proto
│ ├── model_node_price_item.proto
│ ├── model_node_region.proto
│ ├── model_node_task.proto
│ ├── model_node_threshold.proto
│ ├── model_node_value.proto
│ ├── model_ns_access_log.proto
│ ├── model_ns_cluster.proto
│ ├── model_ns_domain.proto
│ ├── model_ns_domain_group.proto
│ ├── model_ns_key.proto
│ ├── model_ns_node.proto
│ ├── model_ns_plan.proto
│ ├── model_ns_question_option.proto
│ ├── model_ns_record.proto
│ ├── model_ns_record_hourly_stat.proto
│ ├── model_ns_route.proto
│ ├── model_ns_route_category.proto
│ ├── model_ns_user_plan.proto
│ ├── model_ns_zone.proto
│ ├── model_order_method.proto
│ ├── model_origin.proto
│ ├── model_plan.proto
│ ├── model_post.proto
│ ├── model_post_category.proto
│ ├── model_region_city.proto
│ ├── model_region_country.proto
│ ├── model_region_provider.proto
│ ├── model_region_province.proto
│ ├── model_region_town.proto
│ ├── model_report_node.proto
│ ├── model_report_node_group.proto
│ ├── model_report_result.proto
│ ├── model_report_task.proto
│ ├── model_reverse_proxy.proto
│ ├── model_script.proto
│ ├── model_server.proto
│ ├── model_server_bandwidth_stat.proto
│ ├── model_server_bill.proto
│ ├── model_server_daily_stat.proto
│ ├── model_server_domain_hourly_stat.proto
│ ├── model_server_group.proto
│ ├── model_server_name_auditing_result.proto
│ ├── model_server_stat_board.proto
│ ├── model_server_stat_board_chart.proto
│ ├── model_size_capacity.proto
│ ├── model_ssl_cert.proto
│ ├── model_traffic_daily_stat.proto
│ ├── model_traffic_package.proto
│ ├── model_traffic_package_period.proto
│ ├── model_traffic_package_price.proto
│ ├── model_user.proto
│ ├── model_user_access_key.proto
│ ├── model_user_account.proto
│ ├── model_user_account_daily_stat.proto
│ ├── model_user_account_log.proto
│ ├── model_user_ad_instance.proto
│ ├── model_user_bandwidth_stat.proto
│ ├── model_user_bill.proto
│ ├── model_user_email_verification.proto
│ ├── model_user_feature.proto
│ ├── model_user_identity.proto
│ ├── model_user_mobile_verification.proto
│ ├── model_user_node.proto
│ ├── model_user_order.proto
│ ├── model_user_plan.proto
│ ├── model_user_script.proto
│ ├── model_user_ticket.proto
│ ├── model_user_ticket_category.proto
│ ├── model_user_ticket_log.proto
│ ├── model_user_traffic_bill.proto
│ ├── model_user_traffic_package.proto
│ └── rpc_messages.proto
│ ├── service_acme_authentication.proto
│ ├── service_acme_provider.proto
│ ├── service_acme_provider_acount.proto
│ ├── service_acme_task.proto
│ ├── service_acme_user.proto
│ ├── service_ad_network.proto
│ ├── service_ad_package.proto
│ ├── service_ad_package_instance.proto
│ ├── service_ad_package_period.proto
│ ├── service_ad_package_price.proto
│ ├── service_admin.proto
│ ├── service_api_access_token.proto
│ ├── service_api_node.proto
│ ├── service_api_token.proto
│ ├── service_authority_key.proto
│ ├── service_authority_node.proto
│ ├── service_client_agent.proto
│ ├── service_client_agent_ip.proto
│ ├── service_db.proto
│ ├── service_db_node.proto
│ ├── service_dns.proto
│ ├── service_dns_domain.proto
│ ├── service_dns_provider.proto
│ ├── service_dns_task.proto
│ ├── service_file.proto
│ ├── service_file_chunk.proto
│ ├── service_firewall.proto
│ ├── service_formal_client_browser.proto
│ ├── service_formal_client_system.proto
│ ├── service_http_access_log.proto
│ ├── service_http_access_log_policy.proto
│ ├── service_http_auth_policy.proto
│ ├── service_http_cache_policy.proto
│ ├── service_http_cache_task.proto
│ ├── service_http_cache_task_key.proto
│ ├── service_http_fastcgi.proto
│ ├── service_http_firewall_policy.proto
│ ├── service_http_firewall_rule_group.proto
│ ├── service_http_firewall_rule_set.proto
│ ├── service_http_gzip.proto
│ ├── service_http_header.proto
│ ├── service_http_header_policy.proto
│ ├── service_http_location.proto
│ ├── service_http_page.proto
│ ├── service_http_rewrite_rule.proto
│ ├── service_http_web.proto
│ ├── service_http_websocket.proto
│ ├── service_ip_item.proto
│ ├── service_ip_library.proto
│ ├── service_ip_library_artifact.proto
│ ├── service_ip_library_file.proto
│ ├── service_ip_list.proto
│ ├── service_latest_item.proto
│ ├── service_log.proto
│ ├── service_login.proto
│ ├── service_login_session.proto
│ ├── service_message.proto
│ ├── service_message_media.proto
│ ├── service_message_media_instance.proto
│ ├── service_message_receiver.proto
│ ├── service_message_recipient.proto
│ ├── service_message_recipient_group.proto
│ ├── service_message_task.proto
│ ├── service_message_task_log.proto
│ ├── service_metric_chart.proto
│ ├── service_metric_item.proto
│ ├── service_metric_stat.proto
│ ├── service_node.proto
│ ├── service_node_action.proto
│ ├── service_node_cluster.proto
│ ├── service_node_cluster_firewall_action.proto
│ ├── service_node_cluster_metric_item.proto
│ ├── service_node_grant.proto
│ ├── service_node_group.proto
│ ├── service_node_ip_address.proto
│ ├── service_node_ip_address_log.proto
│ ├── service_node_ip_address_threshold.proto
│ ├── service_node_log.proto
│ ├── service_node_login.proto
│ ├── service_node_price_item.proto
│ ├── service_node_region.proto
│ ├── service_node_task.proto
│ ├── service_node_threshold.proto
│ ├── service_node_value.proto
│ ├── service_ns.proto
│ ├── service_ns_access_log.proto
│ ├── service_ns_cluster.proto
│ ├── service_ns_domain.proto
│ ├── service_ns_domain_group.proto
│ ├── service_ns_key.proto
│ ├── service_ns_node.proto
│ ├── service_ns_plan.proto
│ ├── service_ns_question_option.proto
│ ├── service_ns_record.proto
│ ├── service_ns_record_hourly_stat.proto
│ ├── service_ns_route.proto
│ ├── service_ns_route_category.proto
│ ├── service_ns_user_plan.proto
│ ├── service_order_method.proto
│ ├── service_origin.proto
│ ├── service_ping.proto
│ ├── service_plan.proto
│ ├── service_post.proto
│ ├── service_post_category.proto
│ ├── service_price.proto
│ ├── service_region_city.proto
│ ├── service_region_country.proto
│ ├── service_region_provider.proto
│ ├── service_region_province.proto
│ ├── service_region_town.proto
│ ├── service_report_node.proto
│ ├── service_report_node_group.proto
│ ├── service_report_result.proto
│ ├── service_reverse_proxy.proto
│ ├── service_script.proto
│ ├── service_server.proto
│ ├── service_server_bandwidth_stat.proto
│ ├── service_server_bill.proto
│ ├── service_server_client_browser_monthly_stat.proto
│ ├── service_server_client_system_monthly_stat.proto
│ ├── service_server_daily_stat.proto
│ ├── service_server_domain_hourly_stat.proto
│ ├── service_server_group.proto
│ ├── service_server_http_firewall_daily_stat.proto
│ ├── service_server_region_city_monthly_stat.proto
│ ├── service_server_region_country_monthly_stat.proto
│ ├── service_server_region_provider_monthly_stat.proto
│ ├── service_server_region_province_monthly_stat.proto
│ ├── service_server_stat_board.proto
│ ├── service_server_stat_board_chart.proto
│ ├── service_sms_sender.proto
│ ├── service_ssl_cert.proto
│ ├── service_ssl_policy.proto
│ ├── service_sys_locker.proto
│ ├── service_sys_setting.proto
│ ├── service_traffic_daily_stat.proto
│ ├── service_traffic_package.proto
│ ├── service_traffic_package_period.proto
│ ├── service_traffic_package_price.proto
│ ├── service_updating_server_list.proto
│ ├── service_user.proto
│ ├── service_user_access_key.proto
│ ├── service_user_account.proto
│ ├── service_user_account_daily_stat.proto
│ ├── service_user_account_log.proto
│ ├── service_user_ad_instance.proto
│ ├── service_user_bill.proto
│ ├── service_user_email_verification.proto
│ ├── service_user_identity.proto
│ ├── service_user_mobile_verification.proto
│ ├── service_user_node.proto
│ ├── service_user_order.proto
│ ├── service_user_plan.proto
│ ├── service_user_script.proto
│ ├── service_user_ticket.proto
│ ├── service_user_ticket_category.proto
│ ├── service_user_ticket_log.proto
│ ├── service_user_traffic_bill.proto
│ ├── service_user_traffic_package.proto
│ └── service_user_verify_code.proto
├── serverconfigs
├── access_log_queue_config.go
├── access_log_storage_command.go
├── access_log_storage_es.go
├── access_log_storage_file.go
├── access_log_storage_syslog.go
├── access_log_storage_tcp.go
├── access_log_storages.go
├── config_codes.go
├── ddosconfigs
│ ├── ip_config.go
│ ├── port_config.go
│ ├── protection_config.go
│ └── tcp_config.go
├── domain_mismatch_action.go
├── filterconfigs
│ ├── filter_base64_decode.go
│ ├── filter_base64_decode_test.go
│ ├── filter_base64_encode.go
│ ├── filter_base64_encode_test.go
│ ├── filter_dec2hex.go
│ ├── filter_dec2hex_test.go
│ ├── filter_hex2dec.go
│ ├── filter_hex2dec_test.go
│ ├── filter_html_escape.go
│ ├── filter_html_escape_test.go
│ ├── filter_html_unescape.go
│ ├── filter_html_unescape_test.go
│ ├── filter_interface.go
│ ├── filter_length.go
│ ├── filter_length_test.go
│ ├── filter_md5.go
│ ├── filter_md5_test.go
│ ├── filter_sha1.go
│ ├── filter_sha1_test.go
│ ├── filter_sha256.go
│ ├── filter_sha256_test.go
│ ├── filter_unicode_decode.go
│ ├── filter_unicode_decode_test.go
│ ├── filter_unicode_encode.go
│ ├── filter_unicode_encode_test.go
│ ├── filter_urldecode.go
│ ├── filter_urldecode_test.go
│ ├── filter_urlencode.go
│ ├── filter_urlencode_test.go
│ ├── filters.go
│ ├── utils.go
│ └── utils_test.go
├── firewallconfigs
│ ├── captcha_types.go
│ ├── consts.go
│ ├── firewall_action_config.go
│ ├── firewall_actions.go
│ ├── firewall_levels.go
│ ├── firewall_mode.go
│ ├── firewall_scope.go
│ ├── http_firewall_action_allow.go
│ ├── http_firewall_action_block.go
│ ├── http_firewall_action_captcha.go
│ ├── http_firewall_action_definition.go
│ ├── http_firewall_action_get_302.go
│ ├── http_firewall_action_go_group.go
│ ├── http_firewall_action_go_set.go
│ ├── http_firewall_action_instance.go
│ ├── http_firewall_action_javascript_cookie.go
│ ├── http_firewall_action_log.go
│ ├── http_firewall_action_notify.go
│ ├── http_firewall_action_post_307.go
│ ├── http_firewall_action_record_ip.go
│ ├── http_firewall_action_tag.go
│ ├── http_firewall_action_types.go
│ ├── http_firewall_action_utils.go
│ ├── http_firewall_action_utils_test.go
│ ├── http_firewall_checkpoint_definition.go
│ ├── http_firewall_checkpoints.go
│ ├── http_firewall_checkpoints_test.go
│ ├── http_firewall_inbound_config.go
│ ├── http_firewall_outbound_config.go
│ ├── http_firewall_page_action.go
│ ├── http_firewall_policy.go
│ ├── http_firewall_policy_log_config.go
│ ├── http_firewall_ref.go
│ ├── http_firewall_region_config.go
│ ├── http_firewall_region_config_test.go
│ ├── http_firewall_rule.go
│ ├── http_firewall_rule_group.go
│ ├── http_firewall_rule_group_ref.go
│ ├── http_firewall_rule_operator.go
│ ├── http_firewall_rule_operator_test.go
│ ├── http_firewall_rule_ref.go
│ ├── http_firewall_rule_set.go
│ ├── http_firewall_rule_set_ref.go
│ ├── http_firewall_template.go
│ ├── http_firewall_template_test.go
│ ├── option.go
│ ├── option_field.go
│ ├── option_options.go
│ ├── param_filter.go
│ └── syn_flood_config.go
├── follow_protocol_config.go
├── ftp_server_config.go
├── ftp_server_ref.go
├── global_server_config.go
├── health_check_config.go
├── hls_config.go
├── hls_encrypting_config.go
├── http_access_log_fields.go
├── http_access_log_ref.go
├── http_access_log_ref_test.go
├── http_auth_config.go
├── http_auth_method_base.go
├── http_auth_method_basic.go
├── http_auth_method_basic_test.go
├── http_auth_method_interface.go
├── http_auth_method_sub_request.go
├── http_auth_method_sub_request_test.go
├── http_auth_methods.go
├── http_auth_policy.go
├── http_auth_policy_init.go
├── http_auth_policy_ref.go
├── http_cache_config.go
├── http_cache_key_config.go
├── http_cache_policy.go
├── http_cache_policy_test.go
├── http_cache_policy_types.go
├── http_cache_ref.go
├── http_cache_stale_config.go
├── http_cache_storage_file.go
├── http_cache_storage_memory.go
├── http_cc_config.go
├── http_charset_config.go
├── http_common_headers.go
├── http_compression_brotli_config.go
├── http_compression_config.go
├── http_compression_config_test.go
├── http_compression_deflate_config.go
├── http_compression_gzip_config.go
├── http_compression_gzip_ref.go
├── http_compression_types.go
├── http_expires_time_config.go
├── http_fastcgi_config.go
├── http_fastcgi_ref.go
├── http_filter_config.go
├── http_filter_ref.go
├── http_host_redirect_config.go
├── http_host_redirect_config_test.go
├── http_location_config.go
├── http_location_config_test.go
├── http_location_pattern_types.go
├── http_location_ref.go
├── http_location_ref_test.go
├── http_page_config.go
├── http_page_config_test.go
├── http_page_optimization_base.go
├── http_page_optimization_config.go
├── http_page_optimization_css.go
├── http_page_optimization_html.go
├── http_page_optimization_javascript.go
├── http_redirect_to_https_config.go
├── http_remote_addr_config.go
├── http_remote_addr_config_test.go
├── http_request_limit_config.go
├── http_request_scripts_config.go
├── http_rewrite_ref.go
├── http_rewrite_rule.go
├── http_rewrite_rule_test.go
├── http_root_config.go
├── http_root_config_test.go
├── http_shutdown_config.go
├── http_stat_config.go
├── http_status.go
├── http_web_config.go
├── http_websocket_config.go
├── http_websocket_ref.go
├── http_wildcard_status.go
├── http_wildcard_status_test.go
├── image_webp_config.go
├── image_webp_config_test.go
├── ip_library_types.go
├── ip_version.go
├── ipconfigs
│ ├── ip_item_config.go
│ ├── ip_list_config.go
│ ├── ip_list_ref.go
│ └── ip_list_types.go
├── metric_chart.go
├── metric_item_config.go
├── metric_item_config_test.go
├── metric_item_utils.go
├── network_address_config.go
├── network_address_config_test.go
├── open_file_cache_config.go
├── origin_config.go
├── origin_config_test.go
├── origin_ref.go
├── origin_server_group_config.go
├── ossconfigs
│ ├── oss_bucket_param.go
│ ├── oss_config.go
│ ├── oss_options.go
│ ├── oss_types.go
│ └── oss_utils.go
├── plan_config.go
├── protocol.go
├── protocol_base.go
├── protocol_http_config.go
├── protocol_https_config.go
├── protocol_tcp_config.go
├── protocol_test.go
├── protocol_tls_config.go
├── protocol_udp_config.go
├── proxy_protocol_config.go
├── referers_config.go
├── referers_config_test.go
├── regionconfigs
│ ├── china.go
│ └── china_test.go
├── reverse_proxy_config.go
├── reverse_proxy_config_test.go
├── reverse_proxy_ref.go
├── scheduling_config.go
├── scheduling_group.go
├── schedulingconfigs
│ ├── candidate.go
│ ├── scheduling.go
│ ├── scheduling_hash.go
│ ├── scheduling_hash_test.go
│ ├── scheduling_random.go
│ ├── scheduling_random_test.go
│ ├── scheduling_round_robin.go
│ ├── scheduling_round_robin_test.go
│ ├── scheduling_sticky.go
│ ├── scheduling_sticky_test.go
│ ├── utils.go
│ └── utils_test.go
├── script_common.go
├── script_config.go
├── script_group_config.go
├── server_address_group.go
├── server_address_group_test.go
├── server_config.go
├── server_config_test.go
├── server_group_config.go
├── server_name_config.go
├── server_name_config_test.go
├── server_types.go
├── shared
│ ├── bit_size_capacity.go
│ ├── bit_size_capacity_test.go
│ ├── body_type.go
│ ├── data_map.go
│ ├── data_map_test.go
│ ├── definition.go
│ ├── formatter.go
│ ├── http_cors_header_config.go
│ ├── http_expire_header_config.go
│ ├── http_header_config.go
│ ├── http_header_config_test.go
│ ├── http_header_policy.go
│ ├── http_header_policy_ref.go
│ ├── http_header_policy_test.go
│ ├── http_header_ref.go
│ ├── http_request_cond.go
│ ├── http_request_cond_group.go
│ ├── http_request_cond_group_test.go
│ ├── http_request_cond_test.go
│ ├── http_request_conds_config.go
│ ├── http_status_config.go
│ ├── ip_range.go
│ ├── ip_range_test.go
│ ├── locker.go
│ ├── mime_type_rule.go
│ ├── mime_type_rule_test.go
│ ├── regexp.go
│ ├── regexp_test.go
│ ├── request_call.go
│ ├── request_operators.go
│ ├── request_variables.go
│ ├── size_capacity.go
│ ├── size_capacity_test.go
│ ├── time_duration.go
│ ├── url_pattern.go
│ └── url_pattern_test.go
├── sslconfigs
│ ├── ssl_auth.go
│ ├── ssl_cert_config.go
│ ├── ssl_cert_config_test.go
│ ├── ssl_cert_ref.go
│ ├── ssl_consts.go
│ ├── ssl_hsts.go
│ ├── ssl_hsts_test.go
│ ├── ssl_policy.go
│ ├── ssl_policy_ref.go
│ └── ssl_policy_test.go
├── traffic_limit_config.go
├── traffic_limit_status.go
├── uam_config.go
├── user_agent_config.go
├── user_agent_config_test.go
├── user_plan_config.go
└── vars
│ ├── var_func.go
│ └── var_func_test.go
├── systemconfigs
├── admin_module.go
├── admin_ui_config.go
├── bandwidth.go
├── check_updates_config.go
├── database_config.go
├── log_config.go
├── security_config.go
├── settings.go
├── theme_config.go
└── user_ui_config.go
└── userconfigs
├── user_features.go
├── user_identity_constants.go
├── user_modules.go
├── user_register_config.go
├── user_server_config.go
└── user_ticket_config.go
/.gitignore:
--------------------------------------------------------------------------------
1 | *_plus.go
2 | *_plus_test.go
3 | *_plus.json
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | GoEdge公共配置项。
2 |
3 | 目录结构:
4 | ~~~
5 | pkg/
6 | dnsconfigs/ - 域名解析和NameServer相关配置
7 | langs/ 多语言配置
8 | messageconfigs/ - 消息通知相关配置
9 | monitorconfigs/ - 监控相关配置
10 | nodeconfigs/ - 边缘节点相关配置
11 | nodeutils/ - 边缘节点相关函数
12 | serverconfigs/ - 网站服务相关配置
13 | systemconfigs/ - 系统全局配置
14 | reporterconfigs/ - 区域监控终端配置
15 | userconfigs/ - 用户相关配置
16 |
17 | configutils/ - 配置公共函数等
18 | iplibrary/ - IP库
19 | errors/ - 错误处理
20 | rpc/ - RPC通讯
21 | protos/ RPC数据和接口定义
22 | sevice_*.proto RPC接口定义
23 | models/
24 | model_*.proto RPC数据定义
25 | ~~~
26 |
27 | 开发时需要将 `rpc/protos/` 和 `rpc/protos/models/` 两个目录放入到Proto Buffer检查工具可以找到的位置。
--------------------------------------------------------------------------------
/build/README.md:
--------------------------------------------------------------------------------
1 | # 脚本使用指南
2 |
3 | ## 编译多语言相关源文件
4 | ~~~bash
5 | ./build-messages.sh
6 | ~~~
7 |
8 | ## 编译API相关源文件
9 | 在使用 `build.sh` 编译 `.proto` 文件之前,你需要确保已经为 `protoc` 安装了对应的插件:
10 | ~~~bash
11 | # install protoc-gen-go plugin
12 | go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
13 |
14 | # install protoc-gen-go-grpc plugin
15 | go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
16 | ~~~
17 |
18 | 之后每次 `.proto` 文件有更新的时候,请运行 `build.sh` 重新生成相应的Go源代码和`rpc.json`文件:
19 | ~~~bash
20 | ./build.sh
21 | ~~~
22 |
23 | 如果文件名有更改,请清空 `pkg/rpc/pb/*.go` 文件,然后再次运行 `build.sh`。
24 |
25 |
26 | ## 生成RPC列表文件
27 | 运行:
28 | ~~~bash
29 | ./proto-json.sh
30 | ~~~
31 | 可以重新生成 `rpc.json` 文件。
--------------------------------------------------------------------------------
/build/build-messages.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ROOT=$(dirname "$0")
4 | /usr/local/bin/go run "${ROOT}"/../cmd/langs/main.go generate
--------------------------------------------------------------------------------
/build/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | echo "starting ..."
4 |
5 | function assert() {
6 | RESULT=$?
7 | if [ "${RESULT}" != "0" ]; then
8 | exit
9 | fi
10 | }
11 |
12 | #rm -f ../pkg/rpc/pb/*.pb.go
13 | protoc --go_out=../pkg/rpc --proto_path=../pkg/rpc/protos ../pkg/rpc/protos/*.proto
14 | assert
15 |
16 | protoc --go-grpc_out=../pkg/rpc --go-grpc_opt=require_unimplemented_servers=false --proto_path=../pkg/rpc/protos ../pkg/rpc/protos/*.proto
17 | assert
18 |
19 | protoc --go_out=../pkg/rpc --proto_path=../pkg/rpc/protos ../pkg/rpc/protos/models/*.proto
20 | RESULT=$?
21 | assert
22 |
23 |
24 | # generate rpc.json
25 | ./proto-json.sh --quiet
26 | assert
27 |
28 | echo "ok"
--------------------------------------------------------------------------------
/build/proto-json.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | go run ../cmd/proto-json/main.go $1
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/TeaOSLab/EdgeCommon
2 |
3 | go 1.21
4 |
5 | require (
6 | github.com/iwind/TeaGo v0.0.0-20230623080147-cd1e53b4915f
7 | golang.org/x/net v0.24.0
8 | google.golang.org/grpc v1.62.0
9 | google.golang.org/protobuf v1.33.0
10 | gopkg.in/yaml.v3 v3.0.1
11 | )
12 |
13 | require (
14 | github.com/golang/protobuf v1.5.3 // indirect
15 | github.com/kr/text v0.2.0 // indirect
16 | golang.org/x/sys v0.19.0 // indirect
17 | golang.org/x/text v0.14.0 // indirect
18 | google.golang.org/genproto/googleapis/rpc v0.0.0-20240228224816-df926f6c8641 // indirect
19 | )
20 |
--------------------------------------------------------------------------------
/pkg/configutils/copy.go:
--------------------------------------------------------------------------------
1 | package configutils
2 |
3 | import (
4 | "reflect"
5 | )
6 |
7 | // CopyStructObject 拷贝同类型struct指针对象中的字段
8 | func CopyStructObject(destPtr, sourcePtr interface{}) {
9 | value := reflect.ValueOf(destPtr)
10 | value2 := reflect.ValueOf(sourcePtr)
11 |
12 | countFields := value2.Elem().NumField()
13 | for i := 0; i < countFields; i++ {
14 | v := value2.Elem().Field(i)
15 | if !v.IsValid() || !v.CanSet() {
16 | continue
17 | }
18 | value.Elem().Field(i).Set(v)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/pkg/configutils/copy_test.go:
--------------------------------------------------------------------------------
1 | package configutils
2 |
3 | import (
4 | "github.com/iwind/TeaGo/logs"
5 | "testing"
6 | )
7 |
8 | func TestCopyStructObject(t *testing.T) {
9 | type Book struct {
10 | Name string
11 | Price int
12 | Year int
13 | Author string
14 | press string
15 | }
16 |
17 | book1 := &Book{
18 | Name: "Hello Golang",
19 | Price: 100,
20 | Year: 2020,
21 | Author: "Liu",
22 | press: "Beijing",
23 | }
24 | book2 := new(Book)
25 | CopyStructObject(book2, book1)
26 | logs.PrintAsJSON(book2, t)
27 | logs.PrintAsJSON(book1, t)
28 | }
29 |
--------------------------------------------------------------------------------
/pkg/configutils/log.go:
--------------------------------------------------------------------------------
1 | package configutils
2 |
3 | import "github.com/iwind/TeaGo/logs"
4 |
5 | // 记录错误
6 | func LogError(arg ...interface{}) {
7 | if len(arg) == 0 {
8 | return
9 | }
10 | logs.Println(arg...)
11 | }
12 |
--------------------------------------------------------------------------------
/pkg/configutils/match.go:
--------------------------------------------------------------------------------
1 | package configutils
2 |
3 | import (
4 | "regexp"
5 | "strings"
6 | )
7 |
8 | var whitespaceReg = regexp.MustCompile(`\s+`)
9 |
10 | // MatchKeyword 关键词匹配
11 | func MatchKeyword(source, keyword string) bool {
12 | if len(keyword) == 0 {
13 | return false
14 | }
15 |
16 | pieces := whitespaceReg.Split(keyword, -1)
17 | source = strings.ToLower(source)
18 | for _, piece := range pieces {
19 | if strings.Contains(source, strings.ToLower(piece)) {
20 | return true
21 | }
22 | }
23 |
24 | return false
25 | }
26 |
--------------------------------------------------------------------------------
/pkg/configutils/match_test.go:
--------------------------------------------------------------------------------
1 | package configutils
2 |
3 | import (
4 | "github.com/iwind/TeaGo/assert"
5 | "testing"
6 | )
7 |
8 | func TestMatchKeyword(t *testing.T) {
9 | a := assert.NewAssertion(t)
10 | a.IsTrue(MatchKeyword("a b c", "a"))
11 | a.IsFalse(MatchKeyword("a b c", ""))
12 | a.IsTrue(MatchKeyword("abc", "BC"))
13 | }
14 |
--------------------------------------------------------------------------------
/pkg/configutils/state.go:
--------------------------------------------------------------------------------
1 | package configutils
2 |
3 | import "github.com/iwind/TeaGo/types"
4 |
5 | type BoolState = int8
6 |
7 | const (
8 | BoolStateAll BoolState = 0 // 全部
9 | BoolStateYes BoolState = 1 // 已安装
10 | BoolStateNo BoolState = 2 // 未安装
11 | )
12 |
13 | func ToBoolState(v interface{}) BoolState {
14 | return types.Int8(v)
15 | }
16 |
--------------------------------------------------------------------------------
/pkg/configutils/yaml.go:
--------------------------------------------------------------------------------
1 | package configutils
2 |
3 | import (
4 | "gopkg.in/yaml.v3"
5 | "os"
6 | )
7 |
8 | func UnmarshalYamlFile(file string, ptr interface{}) error {
9 | data, err := os.ReadFile(file)
10 | if err != nil {
11 | return err
12 | }
13 | return yaml.Unmarshal(data, ptr)
14 | }
15 |
--------------------------------------------------------------------------------
/pkg/dnsconfigs/.gitignore:
--------------------------------------------------------------------------------
1 | ns_*
--------------------------------------------------------------------------------
/pkg/errors/detailed_error.go:
--------------------------------------------------------------------------------
1 | package errors
2 |
3 | type DetailedError struct {
4 | msg string
5 | code string
6 | }
7 |
8 | func (this *DetailedError) Error() string {
9 | return this.msg
10 | }
11 |
12 | func (this *DetailedError) Code() string {
13 | return this.code
14 | }
15 |
16 | func NewDetailedError(code string, errString string) *DetailedError {
17 | return &DetailedError{
18 | msg: errString,
19 | code: code,
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/pkg/errors/error_test.go:
--------------------------------------------------------------------------------
1 | package errors
2 |
3 | import (
4 | "errors"
5 | "testing"
6 | )
7 |
8 | func TestNew(t *testing.T) {
9 | t.Log(New("hello"))
10 | t.Log(Wrap(errors.New("hello")))
11 | t.Log(testError1())
12 | t.Log(Wrap(testError1()))
13 | t.Log(Wrap(testError2()))
14 | }
15 |
16 | func testError1() error {
17 | return New("test error1")
18 | }
19 |
20 | func testError2() error {
21 | return Wrap(testError1())
22 | }
23 |
--------------------------------------------------------------------------------
/pkg/iplibrary/.gitignore:
--------------------------------------------------------------------------------
1 | *-plus.db
2 | internal-ip-library-test.db
--------------------------------------------------------------------------------
/pkg/iplibrary/internal-ip-library.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GoEdgeLab/EdgeCommon/b49c631fa56902665c7fbf6311bc368a1e53c684/pkg/iplibrary/internal-ip-library.db
--------------------------------------------------------------------------------
/pkg/iplibrary/meta_test.go:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package iplibrary_test
4 |
--------------------------------------------------------------------------------
/pkg/iplibrary/parser_config.go:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package iplibrary
4 |
5 | type ParserConfig struct {
6 | Template *Template
7 | EmptyValues []string
8 | Iterator func(values map[string]string) error
9 | }
10 |
--------------------------------------------------------------------------------
/pkg/iplibrary/reader_interface.go:
--------------------------------------------------------------------------------
1 | // Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package iplibrary
4 |
5 | import "net"
6 |
7 | type ReaderVersion = int
8 |
9 | const (
10 | ReaderVersionV1 ReaderVersion = 0
11 | ReaderVersionV2 ReaderVersion = 2
12 | )
13 |
14 | type ReaderInterface interface {
15 | Meta() *Meta
16 | Lookup(ip net.IP) *QueryResult
17 | Destroy()
18 | }
19 |
--------------------------------------------------------------------------------
/pkg/iplibrary/version.go:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package iplibrary
4 |
5 | type Version = int
6 |
7 | const (
8 | Version1 Version = 1
9 | Version2 Version = 2 // 主要变更为数字使用32进制
10 | )
11 |
--------------------------------------------------------------------------------
/pkg/iplibrary/writer_interface.go:
--------------------------------------------------------------------------------
1 | // Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package iplibrary
4 |
5 | type WriterInterface interface {
6 | WriteMeta() error
7 | Write(ipFrom string, ipTo string, countryId int64, provinceId int64, cityId int64, townId int64, providerId int64) error
8 | Sum() string
9 | }
10 |
--------------------------------------------------------------------------------
/pkg/iputils/cidr_test.go:
--------------------------------------------------------------------------------
1 | // Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package iputils_test
4 |
5 | import (
6 | "github.com/TeaOSLab/EdgeCommon/pkg/iputils"
7 | "testing"
8 | )
9 |
10 | func TestParseCIDR(t *testing.T) {
11 | for _, cidrString := range []string{
12 | "192.168.2.100/24",
13 | "2607:5300:203:afac::/125",
14 | } {
15 | cidr, err := iputils.ParseCIDR(cidrString)
16 | if err != nil {
17 | t.Fatal(err)
18 | }
19 | t.Log(cidr, "=> [", cidr.From(), "-", cidr.To(), "]")
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/pkg/langs/message.go:
--------------------------------------------------------------------------------
1 | // Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package langs
4 |
5 | type MessageCode string
6 |
7 | func (this MessageCode) For(langCode LangCode, args ...any) string {
8 | return Message(langCode, this, args...)
9 | }
10 |
11 | func (this MessageCode) String() string {
12 | return string(this)
13 | }
14 |
--------------------------------------------------------------------------------
/pkg/langs/message_test.go:
--------------------------------------------------------------------------------
1 | // Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package langs
4 |
5 | import "testing"
6 |
7 | func TestMessageCode_For(t *testing.T) {
8 | defaultManager.AddLang("en-us").
9 | Set("name", "Lily")
10 |
11 | var messageCode MessageCode = "name"
12 | t.Log(messageCode.String(), string(messageCode))
13 | t.Log(messageCode.For("en-us"))
14 | }
15 |
--------------------------------------------------------------------------------
/pkg/langs/protos/README.md:
--------------------------------------------------------------------------------
1 | After changing the messages, remember to run 'langs generate' to generate Go codes:
2 | ~~~bash
3 | go run cmd/langs/main.go generate
4 | ~~~
--------------------------------------------------------------------------------
/pkg/langs/protos/en-us/admin_dashboard.json:
--------------------------------------------------------------------------------
1 | {
2 | "ui_overview": "Overview",
3 | "ui_waf": "WAF",
4 | "ui_dns": "DNS",
5 | "ui_user": "Users",
6 | "ui_events": "Events",
7 |
8 | "disk_usage_warning": "当前服务器磁盘空间不足,请立即扩充容量,文件路径:%s,已使用:%dG,已使用比例:%.2f%%,仅剩余空间:%.2f%%。
如果是因为本机数据库数据过多,你可以:[清理访问日志] [调整数据库binlog设置]"
9 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/en-us/system.json:
--------------------------------------------------------------------------------
1 | {
2 | "home_page": "https://goedge.cn"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/acme_provider_account.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_acme_provider_account": "创建ACME服务商账号 %d",
3 | "log_delete_acme_provider_account": "删除ACME服务商账号 %d",
4 | "log_update_acme_provider_account": "修改ACME服务商账号 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/acme_task.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_acme_task": "创建证书申请任务 %d",
3 | "log_update_acme_task": "修改证书申请任务 %d",
4 | "log_delete_acme_task": "删除证书申请任务 %d",
5 | "log_run_acme_task": "执行ACME任务 %d"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/acme_user.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_acme_user": "创建ACME用户 %d",
3 | "log_delete_acme_user": "删除ACME用户 %d",
4 | "log_update_acme_user": "修改ACME用户 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ad_network.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_ad_network": "删除高防IP线路",
3 | "log_update_ad_network": "修改高防IP线路 %d",
4 | "log_create_ad_network": "创建高防IP线路 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ad_package.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_ad_package": "创建高防产品 %d",
3 | "log_delete_ad_package": "删除高防产品 %d",
4 | "log_update_ad_package": "修改高防产品 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ad_package_instance.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_ad_package_instance": "删除高防实例 %d",
3 | "log_update_ad_package_instance": "修改高防实例 %d",
4 | "log_create_ad_package_instance": "创建高防实例 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ad_package_period.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_ad_package_period": "创建高防IP实例有效期 %d",
3 | "log_delete_ad_package_period": "删除高防IP实例有效期选项 %d",
4 | "log_update_ad_package_period": "修改高防IP实例有效期选项 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ad_package_price.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_ad_package_price": "为用户 %d 创建高防实例:%d,有效期:%d,数量:%d",
3 | "log_update_ad_package_price": "修改高防产品 %d 有效期 %d 的价格"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_admin": "创建系统用户 %d",
3 | "log_delete_admin": "删除系统用户 %d",
4 | "log_update_admin": "修改系统用户 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_common.json:
--------------------------------------------------------------------------------
1 | {
2 | "menu_setting_basic": "基础设置",
3 | "menu_setting_dns": "DNS设置",
4 | "menu_setting_health_check": "健康检查",
5 | "menu_setting_cache_policy": "缓存策略",
6 | "menu_setting_waf_policy": "WAF策略",
7 | "menu_setting_webp": "WebP",
8 | "menu_setting_webp_policy": "WebP策略",
9 | "menu_setting_metrics": "统计指标",
10 | "menu_setting_ddos_protection": "DDoS防护",
11 | "menu_setting_security_policy": "网络安全",
12 | "menu_setting_cache": "缓存设置",
13 |
14 | "system": "系统",
15 | "canceled": "已取消",
16 |
17 | "server_error": "服务器出了点小问题,请联系技术人员处理。",
18 | "log_system_error": "系统发生错误:%s"
19 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_dashboard.json:
--------------------------------------------------------------------------------
1 | {
2 | "ui_overview": "概况",
3 | "ui_waf": "WAF",
4 | "ui_dns": "DNS",
5 | "ui_user": "用户",
6 | "ui_events": "事件",
7 |
8 | "disk_usage_warning": "当前服务器磁盘空间不足,请立即扩充容量,文件路径:%s,已使用:%dG,已使用比例:%.2f%%,仅剩余空间:%.2f%%。
如果是因为本机数据库数据过多,你可以:[清理访问日志] [调整数据库binlog设置]"
9 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_login.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_system_error": "登录时发生系统错误:%s",
3 | "log_failed": "登录失败,用户名:%s",
4 | "log_success": "成功登录系统,用户名:%s",
5 | "log_otp_verified_success": "成功通过OTP验证登录系统",
6 |
7 | "log_update_login": "修改登录设置"
8 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_profile.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_profile": "修改个人资料"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_security.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_security_settings": "修改管理界面安全设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_server.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_server_http_settings": "修改管理界面的HTTP设置",
3 | "log_update_server_https_settings": "修改管理界面的HTTPS设置"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_setting.json:
--------------------------------------------------------------------------------
1 | {
2 | "tab_admin_server": "Web服务",
3 | "tab_admin_ui": "管理界面设置",
4 | "tab_user_ui": "用户界面设置",
5 | "tab_admin_security_settings": "安全设置",
6 | "tab_updates": "检查更新",
7 | "tab_profile": "个人资料",
8 | "tab_login": "登录设置",
9 | "tab_database": "数据库",
10 | "tab_api_nodes": "API节点",
11 | "tab_user_nodes": "用户节点",
12 | "tab_monitor_nodes": "监控节点",
13 | "tab_ip_library": "IP库",
14 | "tab_client_operation_systems": "操作系统库",
15 | "tab_client_browsers": "浏览器库",
16 | "tab_authority": "商业版认证",
17 | "tab_access_log_databases": "日志数据库",
18 | "tab_transfer": "迁移",
19 | "tab_backup": "备份"
20 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_ui.json:
--------------------------------------------------------------------------------
1 | {
2 | "default_product_name": "GoEdge",
3 | "default_system_name": "GoEdge管理员系统",
4 |
5 | "log_update_ui_settings": "修改管理界面设置"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_update.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_ignore_version": "忽略升级版本 %s",
3 | "log_reset_ignore_version": "重置忽略升级版本",
4 | "log_update_check_settings": "修改检查更新设置"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/admin_user_ui.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_ui_settings": "修改用户界面设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/api_node.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_api_node": "创建API节点 %d",
3 | "log_update_api_node": "修改API节点 %d",
4 | "log_delete_api_node": "删除API节点 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/client_browser.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_client_browser": "修改浏览器信息 %d",
3 | "log_create_browser": "创建浏览器信息 %s"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/client_system.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_client_system": "修改操作系统信息 %d",
3 | "log_create_system": "创建操作系统信息 %s"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/database.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_clean_days": "修改数据库自动清理设置",
3 | "log_delete_table": "删除数据表 %s",
4 | "log_truncate_table": "清空数据表 %s 数据",
5 | "log_update_api_node_database_config": "修改API节点数据库设置"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/db_node.json:
--------------------------------------------------------------------------------
1 | {
2 | "tab_nodes": "数据库节点",
3 |
4 | "log_create_db_node": "创建数据库节点 %d",
5 | "log_delete_db_node": "删除数据库节点 %d",
6 | "log_update_db_node": "修改数据库节点 %d",
7 | "log_delete_table": "删除数据库节点 %d 数据表 %s",
8 | "log_truncate_table": "清空数据库节点 %d 数据表 %s 数据"
9 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ddos_protection.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_ddos_protection": "修改集群 %d 的DDOS防护设置",
3 | "log_update_node_ddos_protection": "修改节点 %d 的DDOS防护设置"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/dns.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_dns": "修改集群 %d DNS设置",
3 | "log_sync_domain": "同步DNS域名数据 %d",
4 | "log_sync_cluster": "同步集群 %d 的DNS设置",
5 | "log_create_domain": "添加管理域名到DNS服务商 %d",
6 | "log_delete_domain": "从DNS服务商中删除域名 %d",
7 | "log_recover_domain": "从DNS服务商中恢复域名 %d",
8 | "log_update_domain": "修改DNS服务商域名 %d",
9 | "log_update_node_dns": "修改节点 %d 的DNS设置"
10 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/dns_provider.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_dns_provider": "创建DNS服务商 %d",
3 | "log_delete_dns_provider": "删除DNS服务商 %d",
4 | "log_update_dns_provider": "修改DNS服务商 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/dns_task.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_dns_task": "删除DNS同步任务 %d",
3 | "log_delete_all_dns_tasks": "删除所有DNS同步任务"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/finance.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_bill_generate_manually": "手动生成上个月 %s 账单",
3 | "log_update_user_order_config": "修改订单设置"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/finance_fee.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_fee_setting": "修改默认计费方式"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/http_access_log_policy.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_http_access_log_policy": "创建访问日志策略 %d",
3 | "log_delete_http_access_log_policy": "删除访问日志策略 %d",
4 | "log_test_http_access_log_policy": "测试向访问日志策略 %d 写入数据",
5 | "log_update_http_access_log_policy": "修改访问日志策略 %d"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/http_auth_policy.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_http_auth_policy": "创建HTTP鉴权 %d",
3 | "log_update_http_auth_policy": "修改HTTP鉴权 %d"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/http_cache_task.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_http_cache_task": "删除缓存任务 %d",
3 | "log_create_http_cache_task_fetch": "批量预热缓存Key",
4 | "log_create_http_cache_task_purge": "批量刷新缓存Key",
5 | "log_reset_http_cache_task": "重置缓存任务 %d 状态"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/http_fastcgi.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_http_fastcgi": "创建Fastcgi %d",
3 | "log_update_http_fastcgi": "修改Fastcgi %d"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/http_location.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_http_location": "创建路由规则:%s", // 参数:pattern
3 | "log_update_http_location": "修改路由规则 %d 设置"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/http_rewrite_rule.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_rewrite_rule": "在Web %d 中创建重写规则 %d",
3 | "log_delete_rewrite_rule": "从Web %d 中删除重写规则 %d",
4 | "log_sort_rewrite_rules": "对Web %d 中的重写规则进行排序",
5 | "log_update_rewrite_rule": "修改Web %d 中的重写规则 %d"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ip_item.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_ip_item": "在名单 %d 中创建IP %d",
3 | "log_delete_ip_item": "从IP名单 %d 中删除IP %d",
4 | "log_read_all_ip_items": "将所有IP名单置为已读",
5 | "log_update_ip_item": "修改IP名单中的IP %d"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ip_library.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_finish_ip_library": "完成IP库%d 制作"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ip_library_artifact.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_ip_library_artifact": "删除IP库 %d",
3 | "log_use_ip_library_artifact": "使用IP库 %d",
4 | "log_cancel_ip_library_artifact": "取消使用IP库 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ip_library_file.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_generate_ip_library_file": "重新生成IP库 %d 文件",
3 | "log_upload_ip_library_file": "上传IP库 %d",
4 | "log_delete_ip_library_file": "删除IP库文件 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ip_list.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_ip_batch": "批量删除IP名单中的IP:%s",
3 | "log_create_ip_items_batch": "在IP名单 %d 中批量添加IP",
4 | "log_bind_ip_list_waf_policy": "绑定IP名单 %d 到WAF策略 %d",
5 | "log_unbind_ip_list_waf_policy": "解除绑定IP名单 %d WAF策略 %d",
6 | "log_create_ip_list": "创建IP名单 %d",
7 | "log_delete_ip_list": "删除IP名单 %d",
8 | "log_export_ip_list": "导出IP名单 %d",
9 | "log_import_ip_list": "导入IP名单 %d",
10 | "log_update_ip_list": "修改IP名单 %d"
11 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/level.json:
--------------------------------------------------------------------------------
1 | {
2 | "info": "信息",
3 | "warn": "警告",
4 | "error": "错误"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/log.json:
--------------------------------------------------------------------------------
1 | {
2 | "tag_listener": "端口监听",
3 | "tag_waf": "WAF",
4 | "tag_access_log": "访问日志",
5 | "tag_script": "脚本",
6 |
7 | "log_clean_all_logs": "清除全部日志",
8 | "log_clean_logs_days_before": "清除 %d 以前的日志",
9 | "log_delete_log": "删除单个操作日志 %d",
10 | "log_update_settings": "修改日志相关配置"
11 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/message.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_read_all": "将所有消息置为已读",
3 | "log_read_messages": "将一组消息置为已读"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/message_media_instance.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_message_media_instance": "创建消息媒介 %d",
3 | "log_delete_message_media_instance": "删除消息媒介 %d",
4 | "log_update_message_media_instance": "修改消息媒介 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/message_receiver.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_message_receivers": "修改集群 %d 消息接收人",
3 | "log_delete_receiver": "删除接收人关联关系 %d"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/message_recipient.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_message_recipient": "创建媒介接收人 %d",
3 | "log_delete_message_recipient": "删除媒介接收人 %d",
4 | "log_update_message_recipient": "修改媒介接收人 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/message_task.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_message_task": "删除消息发送任务 %d",
3 | "log_create_testing_message_task": "创建媒介测试任务 %d",
4 | "log_update_message_task_status": "修改消息任务 %d 状态为 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/metric_chart.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_metric_chart": "创建指标图表 %d",
3 | "log_delete_metric_chart": "删除指标图表 %d",
4 | "log_update_metric_chart": "修改指标图表 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/metric_item.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_add_metric_item_to_cluster": "添加指标 %d 到集群 %d",
3 | "log_delete_metric_item_from_cluster": "从集群 %d 中移除指标 %d",
4 | "log_create_metric_item": "创建统计指标 %d",
5 | "log_delete_metric_item": "删除统计指标",
6 | "log_update_metric_item": "修改统计指标 %d"
7 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/monitor_node.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_monitor_node": "创建监控节点 %d",
3 | "log_update_monitor_node": "修改监控节点 %d",
4 | "log_delete_monitor_node": "删除监控节点 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node.json:
--------------------------------------------------------------------------------
1 | {
2 | "ungrouped_label": "未分组",
3 |
4 | "log_create_node": "创建节点 %d",
5 | "log_create_node_batch": "批量创建节点",
6 | "log_install_node": "安装节点 %d",
7 | "log_install_node_remotely": "远程安装节点 %d",
8 | "log_upgrade_node_remotely": "远程升级节点 %d",
9 | "log_start_node_remotely": "远程启动节点 %d",
10 | "log_stop_node_remotely": "远程停止节点 %d",
11 | "log_update_node": "修改节点 %d 基本信息",
12 | "log_update_node_installation_status": "修改节点安装状态 %d",
13 | "log_up_node": "手动上线节点 %d",
14 | "log_update_node_on": "启用节点 %d",
15 | "log_update_node_off": "停用节点 %d",
16 | "log_delete_node_from_cluster": "从集群 %d 中删除节点 %d"
17 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_action.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_copy_node_actions_to_cluster": "复制节点 %d 调度动作到集群",
3 | "log_copy_node_actions_to_group": "复制节点 %d 调度动作到分组",
4 | "log_create_node_action": "创建动作 %d",
5 | "log_delete_node_action": "删除节点动作 %d",
6 | "log_sort_node_actions": "修改节点 %d 动作排序",
7 | "log_update_node_action": "修改节点动作 %d"
8 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_cache.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_node_cache_settings": "修改节点 %d 缓存设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_cluster.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_cluster": "创建节点集群:%d",
3 | "log_delete_cluster": "删除集群 %d",
4 | "log_update_cluster_health_check": "修改集群健康检查设置 %d",
5 | "log_run_cluster_health_check": "执行集群健康检查设置 %d",
6 | "log_update_cluster_basic_settings": "修改集群基础设置 %d",
7 | "log_pin_cluster": "置顶集群 %d",
8 | "log_unpin_cluster": "取消置顶集群 %d"
9 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_cluster_dns.json:
--------------------------------------------------------------------------------
1 | {
2 |
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_dns.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_node_dns": "修改节点 %d DNS设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_grant.json:
--------------------------------------------------------------------------------
1 | {
2 | "method_user_password": "用户名+密码",
3 | "method_private_key": "私钥",
4 |
5 | "log_create_ssh_grant": "创建SSH认证 %d",
6 | "log_delete_ssh_grant": "删除SSH认证 %d",
7 | "log_update_ssh_grant": "修改SSH认证 %d"
8 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_group.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_node_group": "创建节点分组 %d",
3 | "log_delete_node_group": "删除节点分组 %d",
4 | "log_sort_node_groups": "修改节点分组排序",
5 | "log_update_node_group": "修改节点分组 %d"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_ip_address.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_node_ip_address": "删除IP地址 %d",
3 | "log_restore_node_ip_address": "取消IP地址 %d 的备用IP",
4 | "log_up_node_ip_address": "手动设置IP地址 %d 上线",
5 | "log_down_node_ip_address": "手动设置IP地址 %d 下线"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_log.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_node_logs_batch": "批量删除节点运行日志",
3 | "log_fix_node_logs": "设置日志 %s 为已修复",
4 | "log_fix_all_logs": "设置所有日志为已修复"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_price_item.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_node_price_item_bandwidth": "创建带宽价格项目 %d",
3 | "log_create_node_price_item_traffic": "创建流量价格项目 %d",
4 | "log_delete_node_price_item": "删除流量价格项目 %d",
5 | "log_update_node_price_item_bandwidth": "修改带宽价格项目 %d",
6 | "log_update_node_price_item_traffic": "修改流量价格项目 %d"
7 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_region.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_node_region": "创建节点区域 %d",
3 | "log_delete_node_region": "删除节点区域 %d",
4 | "log_sort_node_regions": "修改节点区域排序",
5 | "log_move_node_between_regions": "修改节点 %d 区域到 %d",
6 | "log_update_node_region": "修改节点区域 %d"
7 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_region_price.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_node_region_price": "修改区域 %d - 价格项 %d 的价格"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_schedule.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_node_schedule_basic": "修改节点调度基本信息",
3 | "log_reset_node_action_status": "重置节点 %d 动作状态"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_ssh.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_node_ssh": "修改节点 %d SSH配置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_system.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_node_system_settings": "修改节点 %d 系统信息"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_systemd.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_systemd_settings": "修改集群 %d 的系统服务设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_task.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_node_task": "删除同步任务 %d",
3 | "log_delete_node_tasks_batch": "批量删除节点同步任务",
4 | "log_delete_all_node_tasks": "删除所有节点同步任务"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_threshold.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_node_threshold": "创建节点阈值 %d",
3 | "log_delete_node_threshold": "删除阈值 %d",
4 | "log_update_node_threshold": "修改节点阈值 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/node_toa.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_toa": "修改集群 %d 的TOA设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns.json:
--------------------------------------------------------------------------------
1 | {
2 | "setting_user": "用户设置",
3 | "setting_access_logs": "访问日志设置",
4 |
5 | "log_create_ns_records_batch": "批量添加解析",
6 | "log_delete_ns_domains_batch": "批量删除域名,用户 %d",
7 | "log_delete_ns_records_batch": "批量删除域名记录",
8 | "log_enable_ns_records_batch": "批量启用域名记录",
9 | "log_disable_ns_records_batch": "批量停用域名记录",
10 | "log_import_records_batch": "批量导入记录",
11 | "log_create_ns_domains_batch": "批量添加域名",
12 | "log_update_ns_records_batch": "批量修改域名记录",
13 |
14 | "log_update_ns_user_config": "修改NS全局设置--用户相关设置"
15 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_domain.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_ns_domain_status": "修改域名 %d 状态为 %s",
3 | "log_create_ns_domains_batch": "批量添加域名",
4 | "log_create_ns_domain": "创建域名 %d",
5 | "log_delete_ns_domain": "删除域名 %d",
6 | "log_update_ns_domain": "修改域名 %d",
7 |
8 | "log_update_ns_domain_health_check": "修改域名 %d 健康检查设置",
9 | "log_update_ns_domain_tsig": "修改域名 %d 的TSIG配置",
10 |
11 | "log_validate_ns_domains": "批量验证域名"
12 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_domain_group.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_ns_domain_group": "创建域名分组 %d",
3 | "log_delete_ns_domain_group": "删除域名分组 %d",
4 | "log_update_ns_domain_group": "修改域名分组 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_key.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_ns_key": "创建DNS密钥 %d",
3 | "log_delete_ns_key": "删除DNS密钥 %d",
4 | "log_update_ns_key": "修改DNS密钥 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_node.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_start_ns_node_remotely": "远程启动节点 %d",
3 | "log_stop_ns_node_remotely": "远程停止节点 %d",
4 | "log_update_ns_node": "修改节点 %d",
5 | "log_update_ns_node_installation_status": "修改节点安装状态 %d",
6 | "log_create_ns_node": "创建域名服务节点 %d",
7 | "log_install_ns_node_remotely": "安装节点 %d",
8 | "log_delete_ns_node": "删除域名服务节点 %d"
9 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_node_ssh.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_ns_node_ssh": "修改节点 %d SSH配置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_plan.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_ns_plan": "修改套餐 %d",
3 | "log_create_ns_plan": "创建套餐 %d",
4 | "log_delete_ns_plan": "删除套餐 %d",
5 | "log_sort_ns_plans": "套餐排序"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_record.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_ns_records_batch": "批量创建域名记录",
3 | "log_create_ns_record": "创建域名记录 %d",
4 | "log_delete_ns_record": "删除域名记录 %d",
5 | "log_update_ns_record_health_check": "修改记录 %d 的健康检查",
6 | "log_update_ns_record": "修改域名记录 %d",
7 | "log_up_ns_record": "手动设置DNS记录 %d 为上线状态"
8 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_route.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_ns_route": "创建域名服务线路 %d",
3 | "log_delete_ns_route": "删除域名服务线路 %d",
4 | "log_sort_ns_routes": "对线路进行排序",
5 | "log_update_ns_route": "修改域名线路 %d"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_route_category.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_ns_route_category": "删除NS线路分类 %d",
3 | "log_update_ns_route_category": "修改NS线路分类 %d",
4 | "log_create_ns_route_category": "创建NS线路分类 %d",
5 | "log_sort_ns_route_categories": "对NS线路分类进行排序"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ns_user_plan.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_ns_user_plan": "删除用户套餐 %d",
3 | "log_create_ns_user_plan": "为用户 %d 创建DNS套餐 %d",
4 | "log_update_ns_user_plan": "修改用户DNS套餐 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/order_method.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_order_method": "创建支付方式 %d",
3 | "log_delete_order_method": "删除支付方式 %d",
4 | "log_update_order_method": "修改支付方式 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/plan.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_plan": "删除套餐 %d",
3 | "log_update_plan": "修改套餐 %d",
4 | "log_create_plan": "创建套餐 %d",
5 | "log_sort_plans": "对套餐进行排序"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/post.json:
--------------------------------------------------------------------------------
1 | {
2 | "product_global": "全站",
3 |
4 | "log_create_post": "创建文章 %d",
5 | "log_publish_post": "发布文章 %d",
6 | "log_delete_post": "删除文章 %d",
7 | "log_update_post": "修改文章 %d"
8 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/region_city.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_region_city_custom": "定制城市 %d 信息",
3 | "log_add_region_city_code": "添加城市/市 %d 别名 %s"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/region_country.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_region_country_custom": "定制国家/地区 %d 信息",
3 | "log_add_region_country_code": "添加国家/地区 %d 别名 %s",
4 |
5 | "region_china": "中国",
6 | "region_greater_china": "中国全境",
7 | "region_china_tw": "中国台湾",
8 | "region_china_hk": "中国香港",
9 | "region_china_mo": "中国澳门",
10 | "region_china_mainland": "中国内地"
11 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/region_provider.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_add_region_provider_code": "添加ISP服务商 %d 别名 %s",
3 | "log_update_region_provider_custom": "定制ISP %d 信息"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/region_province.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_add_region_province_code": "添加省份/州 %d 别名 %s",
3 | "log_update_region_province_custom": "定制省份 %d 信息"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/region_town.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_add_region_town_code": "添加区/县 %d 别名 %s",
3 | "log_update_region_town_custom": "定制县级 %d 信息"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/report_node.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_report_node": "创建监控终端 %d",
3 | "log_delete_report_node": "删除监控终端 %d",
4 | "log_update_report_node": "修改监控终端 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/report_node_group.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_report_node_group": "创建监控节点分组 %d",
3 | "log_delete_report_node_group": "删除监控节点分组 %d",
4 | "log_update_report_node_group": "修改监控节点分组 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/reverse_proxy.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_reverse_proxy_scheduling": "修改反向代理 %d 负载均衡算法"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/script.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_script": "创建脚本 %d",
3 | "log_delete_script": "删除脚本 %d",
4 | "log_publish_scripts": "发布脚本库到边缘节点",
5 | "log_update_script": "修改脚本 %d"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_access_log.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_access_log_setting": "修改Web %d 的访问日志设置" // 参数 webId
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_auth.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_http_auth_settings": "修改Web %d 的鉴权设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_cache.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_fetch_caches": "预热网站 %d 缓存",
3 | "log_purge_caches": "删除网站 %d 缓存",
4 | "log_update_cache_settings": "修改Web %d 的缓存设置",
5 | "log_update_cluster_cache_policy": "设置集群 %d 的缓存策略为 %d"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_cache_policy.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_clean_all": "清除缓存,缓存策略:%d",
3 | "log_create_cache_policy": "创建缓存策略:%d",
4 | "log_delete_cache_policy": "删除缓存策略:%d",
5 | "log_fetch_caches": "预热缓存,缓存策略:%d",
6 | "log_purge_caches": "删除缓存,缓存策略:%d",
7 | "log_stat_caches": "统计缓存,缓存策略:%d",
8 | "log_test_reading": "测试读取,缓存策略:%d",
9 | "log_test_writing": "测试写入,缓存策略:%d",
10 | "log_update_cache_policy": "修改缓存策略:%d"
11 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_cc.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_http_cc_policy": "修改集群 %d 的HTTP CC策略设置",
3 | "log_update_cc_settings": "修改Web %d CC防护配置"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_charset.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_charset_setting": "修改Web %d 的字符集设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_common.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_common_settings": "修改网站Web %d 设置的其他设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_compression.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_compression_settings": "修改Web %d 的压缩设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_dns.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_dns_settings": "修改网站 %d 的DNS设置",
3 | "log_regenerate_dns_name": "重新生成网站 %d 的CNAME",
4 | "log_update_dns_name": "修改网站 %d CNAME为 %s"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_fastcgi.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_http_fastcgi": "修改Web %d 的Fastcgi设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_global_setting.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_global_server_config": "修改集群 %d 全局配置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_group.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_server_group": "删除网站分组 %d",
3 | "log_update_server_group": "修改网站分组 %d",
4 | "log_create_server_group": "创建网站分组 %d",
5 | "log_sort_server_groups": "修改网站分组排序"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_hls.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_hls": "修改Web %d 的HLS设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_http.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_http_settings": "修改网站 %d 的HTTP设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_http3.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_http3_policy": "修改集群 %d 的HTTP3策略设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_https.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_https_settings": "修改网站 %d 的HTTPS设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_optimization.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_optimization_settings": "修改Web %d 的页面优化设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_origin.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_origin": "创建源站 %d",
3 | "log_delete_origin": "删除源站 %d",
4 | "log_update_origin": "修改源站 %d",
5 | "log_update_origin_is_on": "修改源站 %d 启用状态"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_page.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_page": "创建自定义页面 %d",
3 | "log_update_pages": "修改Web %d 的自定义页面设置", // 参数:webId
4 | "log_update_page": "修改自定义页面 %d",
5 | "log_update_cluster_pages": "修改集群 %d 自定义页面策略"
6 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_redirect.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_redirects": "修改Web %d 的跳转设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_referer.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_referers": "修改Web %d 防盗链设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_request_limit.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_request_limit_settings": "修改Web %d 请求限制"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_reverse_proxy.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_server_group_reverse_proxy_settings": "修改分组 %d 的反向代理设置",
3 | "log_update_location_reverse_proxy_settings": "修改路由规则 %d 的反向代理设置",
4 | "log_update_server_reverse_proxy_settings": "修改网站 %d 的反向代理设置"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_root.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_root": "修改Web %d 静态分发设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_script.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_scripts": "修改Web %d 边缘脚本"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_stat.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_stat_settings": "修改Web %d 的统计设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_tcp.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_tcp_settings": "修改网站 %d TCP设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_tls.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_tls_settings": "修改网站 %d TLS设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_traffic_limit.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_traffic_limit_settings": "修改网站 %d 流量限制"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_traffic_stat.json:
--------------------------------------------------------------------------------
1 | {
2 | "all_servers": "全部网站(%d)"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_uam.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_uam_policy": "修改集群 %d 的UAM设置",
3 | "log_update_uam_settings": "修改Web %d 全站防护模式",
4 | "log_update_server_uam_settings": "修改网站 %d 全站防护模式"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_udp.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_udp_settings": "修改网站 %d UDP设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_user_agent.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_user_agents": "修改Web %d User-Agent设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_user_script.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_pass_user_script": "通过用户脚本 %d",
3 | "log_reject_user_script": "驳回用户脚本 %d"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_waf.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_waf_settings": "修改Web %d 的WAF设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_webp.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_cluster_webp_policy": "修改集群 %d 的WebP设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/server_websocket.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_websocket_settings": "修改Web %d 的Websocket设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ssl_cert.json:
--------------------------------------------------------------------------------
1 | {
2 | "menu_certs": "证书",
3 | "menu_apply": "申请证书",
4 | "menu_ocsp": "OCSP日志",
5 |
6 | "log_delete_ssl_cert": "删除SSL证书 %d",
7 | "log_update_ssl_cert": "修改SSL证书 %d",
8 | "log_upload_ssl_cert": "上传SSL证书 %d",
9 | "log_upload_ssl_cert_batch": "批量上传证书",
10 | "log_download_ssl_cert": "下载SSL证书 %d",
11 | "log_download_ssl_cert_key": "下载SSL密钥 %d",
12 | "log_download_ssl_cert_zip": "下载SSL证书压缩包 %d",
13 |
14 | "log_ocsp_ignore_ocsp_status": "忽略一组证书的OCSP状态",
15 | "log_ocsp_reset_ocsp_status": "重置一组证书的OCSP状态",
16 | "log_ocsp_reset_all_ocsp_status": "忽略所有证书的OCSP状态"
17 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/system.json:
--------------------------------------------------------------------------------
1 | {
2 | "home_page": "https://goedge.cn"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/ticket_category.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_ticket_category": "添加工单分类 %d",
3 | "log_delete_ticket_category": "删除工单分类 %d",
4 | "log_update_ticket_category": "修改分类 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/traffic_package.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_traffic_package": "创建流量包 %d",
3 | "log_delete_traffic_package": "删除流量包 %d",
4 | "log_update_traffic_package": "修改流量包 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/traffic_package_period.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_traffic_package_period": "创建流量包有效期 %d",
3 | "log_delete_traffic_package_period": "删除流量包有效期选项 %d",
4 | "log_update_traffic_package_period": "修改流量包有效期选项 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/traffic_package_price.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_traffic_package_price": "修改流量包 %d 区域 %d x 有效期 %d 的价格"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_user_email_settings": "修改用户邮件设置",
3 | "log_update_user_sms_settings": "修改用户短信设置",
4 | "log_update_user_global_settings": "修改用户设置",
5 | "log_create_user": "创建用户 %d",
6 | "log_delete_user": "删除用户 %d",
7 | "log_update_user_features": "设置用户 %d 的功能列表",
8 | "log_update_user": "修改用户 %d",
9 | "log_verify_user": "审核用户:%d 结果:%s",
10 |
11 | "log_update_user_profile": "修改个人资料",
12 |
13 | "log_update_user_price_period": "修改计费周期为 %s",
14 | "log_update_user_price_type": "修改计费类型为 %s"
15 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_access_key.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_user_access_key_is_on": "设置AccessKey %d 启用状态",
3 | "log_create_user_access_key": "创建AccessKey %d",
4 | "log_delete_user_access_key": "删除AccessKey %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_account.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_user_account": "操作用户账户 %d: %s"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_ad_instance.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_user_ad_instance": "删除用户高防实例 %d",
3 | "log_renew_user_ad_instance": "为用户高防实例 %d 续期",
4 | "log_update_user_ad_instance_objects": "修改用户高防实例 %d 防护对象"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_bill.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_pay_user_bill": "支付账单 %d"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_common.json:
--------------------------------------------------------------------------------
1 | {
2 | "system": "系统",
3 | "canceled": "已取消",
4 |
5 | "server_error": "服务器出了点小问题,请联系技术人员处理。",
6 | "log_system_error": "系统发生错误:%s"
7 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_identity.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_reject_user_identity":"驳回用户 %d 的实名认证",
3 | "log_reset_user_identity": "重置用户 %d 的实名认证",
4 | "log_verify_user_identity": "通过用户 %d 的实名认证",
5 |
6 | "log_cancel_user_identity": "取消身份认证审核",
7 | "log_submit_user_identity": "提交身份认证审核",
8 | "log_update_user_identity_individual": "修改/上传个人实名认证信息",
9 | "log_update_user_identity_enterprise": "修改/上传企业实名认证信息"
10 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_login.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_update_login": "修改登录设置"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_node.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_user_node": "创建用户节点 %d",
3 | "log_update_user_node": "修改用户节点 %d",
4 | "log_delete_user_node": "删除用户节点 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_order.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_finish_user_order": "设置订单 %s 为完成支付"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_plan.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_buy_user_plan": "为用户 %d 购买套餐 %d",
3 | "log_delete_user_plan": "删除用户已购套餐 %d",
4 | "log_renew_user_plan": "续费已购套餐 %d",
5 | "log_cancel_user_plan_from_server": "取消网站 %d 绑定的套餐",
6 | "log_bind_user_plan_to_server": "修改网站 %d 绑定的套餐为 %d"
7 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_ticket.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_user_ticket": "创建工单 %d"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_ticket_log.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_reply_ticket": "回复工单 %d"
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/user_traffic_package.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_user_traffic_package": "为用户 %d 创建流量包:%d,区域:%d,有效期:%d,数量:%d",
3 | "log_delete_user_traffic_package": "删除用户流量包 %d"
4 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/waf.json:
--------------------------------------------------------------------------------
1 | {
2 | "connector_and": "和(AND)",
3 | "connector_and_description": "所有规则都满足才视为匹配",
4 | "connector_or": "或(OR)",
5 | "connector_or_description": "任一规则满足了就视为匹配",
6 |
7 | "log_update_forbidden_countries": "WAF策略 %d 设置禁止访问的国家和地区",
8 | "log_update_forbidden_provinces": "WAF策略 %d 设置禁止访问的省份",
9 | "log_delete_ip_from_waf_policy": "从WAF策略 %d 名单中删除IP %d",
10 | "log_update_ip_from_waf_policy": "修改WAF策略 %d 名单中的IP %d"
11 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/waf_action.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_waf_action": "创建集群 %d 的WAF动作",
3 | "log_delete_waf_action": "删除WAF动作 %d",
4 | "log_update_waf_action": "修改WAF动作 %d"
5 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/waf_policy.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_waf_policy": "创建WAF策略 %d",
3 | "log_delete_waf_policy": "删除WAF策略 %d",
4 | "log_update_waf_policy": "修改WAF策略 %d 基本信息",
5 | "log_update_cluster_waf_policy": "设置集群 %d 的WAF策略为 %d",
6 | "log_export_waf_policy": "导出WAF策略 %d",
7 | "log_import_waf_policy": "从文件中导入规则到WAF策略 %d",
8 | "log_upgrade_waf_policy": "升级WAF %d 内置规则"
9 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/waf_rule.json:
--------------------------------------------------------------------------------
1 | {
2 |
3 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/waf_rule_group.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_create_rule_group": "创建规则分组 %d,名称:%s",
3 | "log_delete_rule_group": "删除WAF策略 %d 的规则分组 %d",
4 | "log_sort_rule_groups": "修改WAF策略 %d 中的规则分组中的排序",
5 | "log_update_rule_group_is_on": "设置WAF规则分组 %d 开启状态",
6 | "log_update_rule_group": "修改WAF规则分组 %d 基本信息"
7 | }
--------------------------------------------------------------------------------
/pkg/langs/protos/zh-cn/waf_rule_set.json:
--------------------------------------------------------------------------------
1 | {
2 | "log_delete_rule_set":"删除WAF规则分组 %d 中的规则集 %d",
3 | "log_sort_rule_sets": "修改WAF规则分组 %d 中的规则集排序",
4 | "log_update_rule_set_is_on": "修改WAF规则集 %d 开启状态",
5 | "log_update_rule_set": "修改WAF规则集 %d 基本信息"
6 | }
--------------------------------------------------------------------------------
/pkg/monitorconfigs/rate_config.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package monitorconfigs
4 |
5 | type RateConfig struct {
6 | Minutes int32 `json:"minutes"` // 周期分钟
7 | Count int32 `json:"count"` // 数量
8 | }
9 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/connectivity.go:
--------------------------------------------------------------------------------
1 | package nodeconfigs
2 |
3 | import "github.com/TeaOSLab/EdgeCommon/pkg/reporterconfigs"
4 |
5 | // Connectivity 连通性状态
6 | type Connectivity struct {
7 | CostMs float64 `json:"costMs"` // 平均耗时
8 | Level reporterconfigs.ReportLevel `json:"level"` // 级别
9 | Percent float64 `json:"percent"` // 连通的百分比,是一个0到100之间的小数
10 | UpdatedAt int64 `json:"updatedAt"` // 更新时间
11 | }
12 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/dns_resolver.go:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package nodeconfigs
4 |
5 | type DNSResolverType = string
6 |
7 | const (
8 | DNSResolverTypeDefault = "default"
9 | DNSResolverTypeGoNative = "goNative"
10 | DNSResolverTypeCGO = "cgo"
11 | )
12 |
13 | func DefaultDNSResolverConfig() *DNSResolverConfig {
14 | return &DNSResolverConfig{
15 | Type: DNSResolverTypeDefault,
16 | }
17 | }
18 |
19 | type DNSResolverConfig struct {
20 | Type string `yaml:"type" json:"type"` // 使用Go语言内置的DNS解析器
21 | }
22 |
23 | func (this *DNSResolverConfig) Init() error {
24 | return nil
25 | }
26 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/http_cc_policy.go:
--------------------------------------------------------------------------------
1 | // Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 | //go:build !plus
3 |
4 | package nodeconfigs
5 |
6 | import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
7 |
8 | // HTTPCCPolicy CC策略
9 | type HTTPCCPolicy struct {
10 | IsOn bool `json:"isOn" yaml:"isOn"`
11 | Thresholds []*serverconfigs.HTTPCCThreshold `json:"thresholds" yaml:"thresholds"` // 阈值
12 | }
13 |
14 | func NewHTTPCCPolicy() *HTTPCCPolicy {
15 | return &HTTPCCPolicy{
16 | IsOn: true,
17 | }
18 | }
19 |
20 | func (this *HTTPCCPolicy) Init() error {
21 | return nil
22 | }
23 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/node_ip_addr.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package nodeconfigs
4 |
5 | type NodeIPAddr struct {
6 | Id int64 `json:"id"`
7 | Name string `json:"name"`
8 | IP string `json:"ip"`
9 | IsOn bool `json:"isOn"`
10 | IsUp bool `json:"isUp"`
11 | CanAccess bool `json:"canAccess"`
12 | }
13 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/node_log_type.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package nodeconfigs
4 |
5 | type NodeLogType = string
6 |
7 | const (
8 | NodeLogTypeListenAddressFailed NodeLogType = "listenAddressFailed"
9 | NodeLogTypeServerConfigInitFailed NodeLogType = "serverConfigInitFailed"
10 | NodeLogTypeRunScriptFailed NodeLogType = "runScriptFailed"
11 | NodeLogTypeScriptConsoleLog NodeLogType = "scriptConsoleLog"
12 | )
13 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/node_parent_config.go:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package nodeconfigs
4 |
5 | // ParentNodeConfig 父级节点配置
6 | type ParentNodeConfig struct {
7 | Id int64 `yaml:"id" json:"id"`
8 | Addrs []string `yaml:"addrs" json:"addrs"`
9 | SecretHash string `yaml:"secretHash" json:"secretHash"`
10 | }
11 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/node_roles.go:
--------------------------------------------------------------------------------
1 | package nodeconfigs
2 |
3 | type NodeRole = string
4 |
5 | const (
6 | NodeRoleAdmin NodeRole = "admin"
7 | NodeRoleUser NodeRole = "user"
8 | NodeRoleProvider NodeRole = "provider"
9 | NodeRoleAPI NodeRole = "api"
10 | NodeRoleDatabase NodeRole = "database"
11 | NodeRoleLog NodeRole = "log"
12 | NodeRoleDNS NodeRole = "dns"
13 | NodeRoleMonitor NodeRole = "monitor"
14 | NodeRoleNode NodeRole = "node"
15 | NodeRoleCluster NodeRole = "cluster"
16 | NodeRoleAuthority NodeRole = "authority"
17 | NodeRoleReport NodeRole = "report"
18 | )
19 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/product_config.go:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package nodeconfigs
4 |
5 | const DefaultProductName = "GoEdge"
6 |
7 | // ProductConfig 产品相关设置
8 | type ProductConfig struct {
9 | Name string `yaml:"name" json:"name"`
10 | Version string `yaml:"version" json:"version"`
11 | }
12 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/ssh_params.go:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 |
3 | package nodeconfigs
4 |
5 | func DefaultSSHParams() *SSHParams {
6 | return &SSHParams{Port: 22}
7 | }
8 |
9 | type SSHParams struct {
10 | Port int `json:"port"`
11 | }
12 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/timezones_test.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package nodeconfigs
4 |
5 | import (
6 | "github.com/iwind/TeaGo/logs"
7 | "testing"
8 | "time"
9 | )
10 |
11 | func TestFindAllTimeZoneLocations(t *testing.T) {
12 | var before = time.Now()
13 | var locations = FindAllTimeZoneLocations()
14 | t.Log(len(locations), "locations")
15 | t.Logf("%.2f %s", time.Since(before).Seconds()*1000, "ms")
16 | logs.PrintAsJSON(locations, t)
17 | }
18 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/toa_config.go:
--------------------------------------------------------------------------------
1 | // Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 | //go:build !plus
3 |
4 | package nodeconfigs
5 |
6 | // NewTOAConfig 默认的TOA配置
7 | func NewTOAConfig() *TOAConfig {
8 | return &TOAConfig{}
9 | }
10 |
11 | // TOAConfig TOA相关配置
12 | type TOAConfig struct {
13 | IsOn bool `yaml:"isOn" json:"isOn"`
14 | }
15 |
16 | func (this *TOAConfig) Init() error {
17 | return nil
18 | }
19 |
20 | func (this *TOAConfig) RandLocalPort() uint16 {
21 | return 0
22 | }
23 |
--------------------------------------------------------------------------------
/pkg/nodeconfigs/uam_policy.go:
--------------------------------------------------------------------------------
1 | // Copyright 2023 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
2 | //go:build !plus
3 |
4 | package nodeconfigs
5 |
6 | func NewUAMPolicy() *UAMPolicy {
7 | return &UAMPolicy{}
8 | }
9 |
10 | type UAMPolicy struct {
11 | IsOn bool `yaml:"isOn" json:"isOn"`
12 | }
13 |
14 | func (this *UAMPolicy) Init() error {
15 | return nil
16 | }
17 |
--------------------------------------------------------------------------------
/pkg/reporterconfigs/global_setting.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package reporterconfigs
4 |
5 | // GlobalSetting 全局设置
6 | type GlobalSetting struct {
7 | MinNotifyConnectivity float64 `json:"minNotifyConnectivity"` // 需要通知的最小连通值
8 | NotifyWebHookURL string `json:"notifyWebHookURL"` // WebHook通知地址
9 | }
10 |
11 | func DefaultGlobalSetting() *GlobalSetting {
12 | return &GlobalSetting{
13 | MinNotifyConnectivity: 100,
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/pkg/reporterconfigs/node_config.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package reporterconfigs
4 |
5 | type NodeConfig struct {
6 | Id int64 `json:"id"`
7 | }
8 |
9 | func (this *NodeConfig) Init() error {
10 | return nil
11 | }
12 |
--------------------------------------------------------------------------------
/pkg/reporterconfigs/status.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package reporterconfigs
4 |
5 | type Status struct {
6 | IP string `json:"ip"`
7 | OS string `json:"os"`
8 | OSName string `json:"osName"`
9 | Username string `json:"username"`
10 | BuildVersion string `json:"buildVersion"` // 编译版本
11 | BuildVersionCode uint32 `json:"buildVersionCode"` // 版本数字
12 | UpdatedAt int64 `json:"updatedAt"` // 更新时间
13 |
14 | Location string `json:"location"` // 从IP查询到的Location
15 | ISP string `json:"isp"` // 从IP查询到的ISP
16 | }
17 |
--------------------------------------------------------------------------------
/pkg/reporterconfigs/tasks.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package reporterconfigs
4 |
5 | type TaskType = string
6 |
7 | const (
8 | TaskTypeIPAddr TaskType = "ipAddr"
9 | )
10 |
11 | type IPTask struct {
12 | AddrId int64 `json:"addrId"`
13 | IP string `json:"ip"`
14 | Port int `json:"port"`
15 | }
16 |
17 | func FindTaskTypeName(taskType TaskType) string {
18 | switch taskType {
19 | case TaskTypeIPAddr:
20 | return "IP地址"
21 | }
22 | return ""
23 | }
24 |
--------------------------------------------------------------------------------
/pkg/rpc/dao/base_dao.go:
--------------------------------------------------------------------------------
1 | package dao
2 |
3 | type BaseDAO struct {
4 | }
5 |
6 | func (this *BaseDAO) RPC() RPCClient {
7 | return sharedRPCClient
8 | }
9 |
--------------------------------------------------------------------------------
/pkg/rpc/jsons/bit_size_capacity.md:
--------------------------------------------------------------------------------
1 | # 比特位尺寸
2 | ## 定义
3 | ~~~json
4 | {
5 | "count": "数量",
6 | "unit": "单位"
7 | }
8 | ~~~
9 |
10 | 其中:
11 | * `数量` - 必须是一个整数数字
12 | * `单位` - 有以下几个值:
13 | * `b` - 比特
14 | * `kb` - Kb
15 | * `mb` - Mb
16 | * `gb` - Gb
17 | * `tb` - Tb
18 | * `pb` - Pb
19 | * `eb` - Eb
20 |
21 | ## 示例
22 | 100Mb:
23 | ~~~
24 | {
25 | "count": 100,
26 | "unit": "mb"
27 | }
28 | ~~~
29 |
30 |
31 | 32Gb:
32 | ~~~
33 | {
34 | "count": 32,
35 | "unit": "gb"
36 | }
37 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/http_firewall_ref.md:
--------------------------------------------------------------------------------
1 | # HTTP防火墙(即WAF)引用
2 | ## 定义
3 | ~~~json
4 | {
5 | "isPrior": "是否覆盖上级配置",
6 | "isOn": "是否启用配置",
7 | "firewallPolicyId": "WAF策略ID",
8 | "ignoreGlobalRules": "是否忽略系统定义的全局规则",
9 | "defaultCaptchaType": "默认人机识别方式,可以选none(不设置)、default(默认)、oneClick(单击验证)、slide(滑动解锁)、geetest(极验)"
10 | }
11 | ~~~
12 |
13 | ## 示例
14 | ~~~json
15 | {
16 | "isPrior": true,
17 | "isOn": true,
18 | "firewallPolicyId": 123,
19 | "ignoreGlobalRules": false,
20 | "defaultCaptchaType": "none"
21 | }
22 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/http_remote_addr_config.md:
--------------------------------------------------------------------------------
1 | # HTTP获取客户端IP地址方式配置
2 | ## 定义
3 | ~~~json
4 | {
5 | "isPrior": "是否覆盖父级应用",
6 | "isOn": "是否启用配置",
7 | "value": "自定义值变量",
8 | "isCustomized": "是否自定义"
9 | }
10 | ~~~
11 |
12 | ## 示例
13 | ### 不启用自定义
14 | ~~~json
15 | {
16 | "isPrior": false,
17 | "isOn": false,
18 | "value": "",
19 | "isCustomized": false
20 | }
21 | ~~~
22 |
23 | ### 启用自定义
24 | ~~~json
25 | {
26 | "isPrior": true,
27 | "isOn": true,
28 | "value": "${remoteAddr}",
29 | "isCustomized": true
30 | }
31 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/http_stat_stat_ref.md:
--------------------------------------------------------------------------------
1 | # 统计引用
2 | ## 定义
3 | ~~~json
4 | {
5 | "isPrior": "是否覆盖父级配置",
6 | "isOn": "是否启用配置"
7 | }
8 | ~~~
9 |
10 | ## 示例
11 | ~~~json
12 | {
13 | "isPrior": true,
14 | "isOn": true
15 | }
16 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/http_websocket_ref.md:
--------------------------------------------------------------------------------
1 | # WebSocket引用
2 |
3 | ## 定义
4 | ~~~json
5 | {
6 | "isPrior": "是否覆盖上级配置,true|false",
7 | "isOn": "是否启用,true|false",
8 | "websocketId": "Websocket配置ID"
9 | }
10 | ~~~
11 | 其中:
12 | * `Websocket配置ID` - 需要调用 `HTTPWebsocketService.CreateHTTPWebsocketRequest()` 生成
13 |
14 | ## 示例
15 | ~~~json
16 | {
17 | "isPrior": true,
18 | "isOn": true,
19 | "websocketId": 123
20 | }
21 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/network_address.md:
--------------------------------------------------------------------------------
1 | # 网络地址定义
2 |
3 | ## 定义
4 | ~~~json
5 | {
6 | "protocol": "协议",
7 | "host": "主机地址,通常为空",
8 | "portRange": "端口或者端口范围"
9 | }
10 | ~~~
11 |
12 | ## 示例
13 | 对于 `http://example.com`:
14 | ~~~json
15 | {
16 | "protocol": "http",
17 | "host": "example.com",
18 | "portRange": "80"
19 | }
20 | ~~~
21 |
22 |
23 | 对于 `https://example.com`:
24 | ~~~json
25 | {
26 | "protocol": "https",
27 | "host": "example.com",
28 | "portRange": "443"
29 | }
30 | ~~~
31 |
--------------------------------------------------------------------------------
/pkg/rpc/jsons/origin_refs.md:
--------------------------------------------------------------------------------
1 | # 源站引用列表
2 |
3 | ## 定义
4 | ~~~json
5 | [
6 | {
7 | "isOn": "是否启用",
8 | "originId": "源站ID 1"
9 | },
10 | {
11 | "isOn": "是否启用",
12 | "originId": "源站ID 2"
13 | },
14 | ...
15 | ]
16 | ~~~
17 |
18 | 其中:
19 | * `originId` - 源站ID,可以通过 `/OriginService/createOrigin` 接口创建源站后获得
20 |
21 | ## 示例
22 | ~~~json
23 | [
24 | {
25 | "isOn": true,
26 | "originId": 1
27 | },
28 | {
29 | "isOn": true,
30 | "originId": 2,
31 | }
32 | ]
33 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/reverse_proxy_ref.md:
--------------------------------------------------------------------------------
1 | # 反向代理引用
2 | ## 定义
3 | ~~~json
4 | {
5 | "isOn": "是否启用",
6 | "isPrior": "是否覆盖上级配置,用于路由规则",
7 | "reverseProxyId": "反向代理ID"
8 | }
9 | ~~~
10 | 其中:
11 | * `reverseProxyId` - 反向代理ID,可以通过 `/ReverseProxyService/createReverseProxy` 创建
12 |
13 | ## 示例
14 | ~~~json
15 | {
16 | "isOn": true,
17 | "reverseProxyId": 123
18 | }
19 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/scheduling.md:
--------------------------------------------------------------------------------
1 | # 反向代理调度
2 | ## 定义
3 | ~~~json
4 | {
5 | "code": "调度方法代号",
6 | "options": "调度选项"
7 | }
8 | ~~~
9 |
10 | 其中:
11 | * `code` 调度方法代号
12 | * `random` - 随机
13 | * `roundRobin` - 轮询
14 | * `hash` - Hash算法
15 | * `key` - 自定义Key,可以使用请求变量,比如 `${remoteAddr}`
16 | * `sticky` - Sticky算法
17 | * `type` - 类型:cookie、header、argument
18 | * `param` - 参数值
19 |
20 |
21 | ## 示例
22 | ~~~json
23 | {
24 | "code": "random",
25 | "options": null
26 | }
27 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/server_name.md:
--------------------------------------------------------------------------------
1 | # 域名信息
2 |
3 | ## 示例
4 | ~~~json
5 | {
6 | "name": "example.com",
7 | "type": "full"
8 | }
9 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/size_capacity.md:
--------------------------------------------------------------------------------
1 | # 容量
2 | ## 定义
3 | ~~~json
4 | {
5 | "count": "数量",
6 | "unit": "单位"
7 | }
8 | ~~~
9 |
10 | 其中:
11 | * `数量` - 必须是一个整数数字
12 | * `单位` - 有以下几个值:
13 | * `byte` - 字节
14 | * `kb` - KB
15 | * `mb` - MB
16 | * `gb` - GB
17 | * `tb` - TB
18 | * `pb` - PB
19 | * `eb` - EB
20 |
21 | ## 示例
22 | 100MB:
23 | ~~~
24 | {
25 | "count": 100,
26 | "unit": "mb"
27 | }
28 | ~~~
29 |
30 |
31 | 32GB:
32 | ~~~
33 | {
34 | "count": 32,
35 | "unit": "gb"
36 | }
37 | ~~~
--------------------------------------------------------------------------------
/pkg/rpc/jsons/ssl_cert_refs.md:
--------------------------------------------------------------------------------
1 | # SSL证书引用
2 |
3 | 可以用来引用一组证书。
4 |
5 | ## 定义
6 | ~~~json
7 | [
8 | {
9 | "isOn": "是否启用",
10 | "certId": "证书ID 1"
11 | },
12 | {
13 | "isOn": "是否启用",
14 | "certId": "证书ID 2"
15 | },
16 | ...
17 | ]
18 | ~~~
19 |
20 | ## 示例
21 | ~~~json
22 | [
23 | {
24 | "isOn": true,
25 | "certId": 12345
26 | },
27 | {
28 | "isOn": true,
29 | "certId": 12346
30 | }
31 | ]
32 | ~~~
33 |
34 | 其中:
35 | * `certId` - 证书的ID
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_acme_provider.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message ACMEProvider {
7 | string name = 1;
8 | string code = 2;
9 | string description = 4;
10 | string apiURL = 5;
11 | bool requireEAB = 6;
12 | string eabDescription = 7;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_acme_provider_account.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_acme_provider.proto";
7 |
8 | message ACMEProviderAccount {
9 | int64 id = 1;
10 | string name = 2;
11 | bool isOn = 3;
12 | string providerCode = 4;
13 | string eabKid = 5;
14 | string eabKey = 6;
15 | string error = 7;
16 |
17 | ACMEProvider acmeProvider = 30;
18 | }
19 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_acme_task.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_acme_user.proto";
7 | import "models/model_dns_provider.proto";
8 | import "models/model_ssl_cert.proto";
9 | import "models/model_acme_task_log.proto";
10 |
11 | message ACMETask {
12 | int64 id = 1;
13 | bool isOn = 2;
14 | string dnsDomain = 3;
15 | repeated string domains = 4;
16 | int64 createdAt = 5;
17 | bool autoRenew = 6;
18 | string authType = 7;
19 | string authURL = 8;
20 |
21 | ACMEUser acmeUser = 30;
22 | DNSProvider dnsProvider = 31;
23 | SSLCert sslCert = 32;
24 | ACMETaskLog latestACMETaskLog = 33;
25 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_acme_task_log.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // ACME任务日志
7 | message ACMETaskLog {
8 | int64 id = 1;
9 | bool isOk = 2;
10 | string error = 3;
11 | int64 createdAt = 4;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_acme_user.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_acme_provider.proto";
7 | import "models/model_acme_provider_account.proto";
8 |
9 | message ACMEUser {
10 | int64 id = 1;
11 | string email = 2;
12 | string description = 3;
13 | int64 createdAt = 4;
14 | string acmeProviderCode = 5;
15 |
16 | ACMEProvider acmeProvider = 30;
17 | ACMEProviderAccount acmeProviderAccount = 31;
18 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ad_network.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 高防线路
7 | message ADNetwork {
8 | int64 id = 1;
9 | bool isOn = 2;
10 | string name = 3;
11 | string description = 4;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ad_package.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_ad_network.proto";
7 |
8 | // 高防产品
9 | message ADPackage {
10 | int64 id = 1;
11 | bool isOn = 2;
12 | int64 adNetworkId = 3;
13 | int32 protectionBandwidthSize = 4;
14 | string protectionBandwidthUnit = 5;
15 | int32 serverBandwidthSize = 6;
16 | string serverBandwidthUnit = 7;
17 |
18 | ADNetwork adNetwork = 30;
19 | string summary = 31; // 概述
20 | int64 countIdleADPackageInstances = 32; // 剩余可用的实例数,只有在获取可用高防产品的时候才会返回
21 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ad_package_instance.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node_cluster.proto";
7 | import "models/model_ad_package.proto";
8 | import "models/model_user.proto";
9 |
10 | // 高防产品实例
11 | message ADPackageInstance {
12 | int64 id = 1;
13 | bool isOn = 2;
14 | int64 adPackageId = 3;
15 | int64 nodeClusterId = 4;
16 | repeated int64 nodeIds = 5;
17 | repeated string ipAddresses = 6;
18 | int64 userId = 7; // 租用用户ID
19 | string userDayTo = 8; // 租用日期
20 | int64 userInstanceId = 9; // 当前绑定的用户实例ID
21 |
22 | NodeCluster nodeCluster = 30;
23 | ADPackage adPackage = 31;
24 | User user = 32;
25 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ad_package_period.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 高防实例有效期
7 | message ADPackagePeriod {
8 | int64 id = 1;
9 | bool isOn = 2;
10 | int32 count = 3;
11 | string unit = 4;
12 | int32 months = 5;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ad_package_price.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 高防产品价格定义
7 | message ADPackagePrice {
8 | int64 adPackageId = 1;
9 | int64 adPackagePeriodId = 2;
10 | double price = 3;
11 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_admin.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_admin_module.proto";
7 | import "models/model_login.proto";
8 |
9 | message Admin {
10 | int64 id = 1; // ID
11 | string fullname = 2; // 全称
12 | string username = 3; // 用户名
13 | bool isOn = 4; // 是否启用
14 | bool isSuper = 5; // 是否为超级用户
15 | int64 createdAt = 6; // 创建时间
16 | repeated AdminModule Modules = 7; // 有权限的模块
17 | Login otpLogin = 8; // OTP认证
18 | bool canLogin = 9; // 是否可以登录
19 | bool hasWeakPassword = 10; // 是否设置了弱密码,只有超级管理员能看到此项
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_admin_list.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_admin_module.proto";
7 |
8 | message AdminModuleList {
9 | int64 adminId = 1;
10 | bool isSuper = 2;
11 | repeated AdminModule Modules = 3;
12 | string fullname = 4;
13 | string theme = 5; // 风格模板
14 | string lang = 6; // 界面语言
15 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_admin_module.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message AdminModule {
7 | bool allowAll = 1;
8 | string code = 2;
9 | repeated string actions = 3;
10 | }
11 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_api_method_stat.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_api_node.proto";
7 |
8 | message APIMethodStat {
9 | int64 id = 1;
10 | int64 apiNodeId = 2;
11 | string method = 3;
12 | string tag = 4;
13 | float costMs = 5;
14 | float peekMs = 6;
15 | int64 countCalls = 7;
16 |
17 | APINode apiNode = 30;
18 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_api_node.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message APINode {
7 | int64 id = 1;
8 | bool isOn = 2;
9 | int64 nodeClusterId = 3;
10 | string uniqueId = 4;
11 | string secret = 5;
12 | string name = 6;
13 | string description = 7;
14 | bytes httpJSON = 8;
15 | bytes httpsJSON = 9;
16 | bool RestIsOn = 13;
17 | bytes restHTTPJSON = 14;
18 | bytes restHTTPSJSON = 15;
19 | bytes accessAddrsJSON = 10;
20 | repeated string accessAddrs = 11;
21 | bytes statusJSON = 12;
22 | bool isPrimary = 16;
23 |
24 | bool debug = 30;
25 | string instanceCode = 31;
26 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_api_token.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // API令牌
7 | message APIToken {
8 | int64 id = 1;
9 | string nodeId = 2;
10 | string secret = 3;
11 | string role = 4;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_authority_key.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 版本认证
7 | message AuthorityKey {
8 | string value = 1;
9 | string dayFrom = 2;
10 | string dayTo = 3;
11 | string hostname = 4;
12 | repeated string macAddresses = 5;
13 | int64 updatedAt = 6;
14 | string company = 7;
15 | int32 nodes = 8;
16 | repeated string components = 9;
17 | string edition = 10;
18 | string requestCode = 11;
19 | }
20 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_authority_node.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message AuthorityNode {
7 | int64 id = 1;
8 | bool isOn = 2;
9 | string uniqueId = 3;
10 | string secret = 4;
11 | string name = 5;
12 | string description = 6;
13 | bytes statusJSON = 7;
14 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_client_agent.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message ClientAgent {
7 | int64 id = 1;
8 | string name = 2;
9 | string code = 3;
10 | string description = 4;
11 | int64 countIPs = 5;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_client_agent_ip.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_client_agent.proto";
7 |
8 | message ClientAgentIP {
9 | int64 id = 1;
10 | string ip = 2;
11 | string ptr = 3;
12 |
13 | ClientAgent clientAgent = 30;
14 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_client_browser.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message ClientBrowser {
7 | int64 id = 1;
8 | string name = 2;
9 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_client_system.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message ClientSystem {
7 | int64 id = 1;
8 | string name = 2;
9 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_db_node.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message DBNode {
7 | int64 id = 1;
8 | string name = 2;
9 | string description = 3;
10 | bool isOn = 4;
11 | string host = 5;
12 | int32 port = 6;
13 | string database = 7;
14 | string username = 8;
15 | string password = 9;
16 | string charset = 10;
17 | DBNodeStatus status = 30;
18 | }
19 |
20 | message DBNodeStatus {
21 | bool isOk = 1;
22 | int64 size = 2;
23 | string error = 3;
24 | string version = 4;
25 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_db_table.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 数据表信息
7 | message DBTable {
8 | string name = 1;
9 | string schema = 2;
10 | string type = 3;
11 | string engine = 4;
12 | int64 rows = 5;
13 | int64 dataLength = 6;
14 | int64 indexLength = 7;
15 | string comment = 8;
16 | string collation = 9;
17 | bool isBaseTable = 10;
18 | bool canClean = 11;
19 | bool canDelete = 12;
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_dns_domain.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_dns_route.proto";
7 |
8 | message DNSDomain {
9 | int64 id = 1;
10 | string name = 2;
11 | bool isOn = 3;
12 | int64 dataUpdatedAt = 4;
13 | string dataError = 5;
14 | int64 countServerRecords = 6;
15 | int64 countAllServers = 13;
16 | bool serversChanged = 7;
17 | int64 countNodeRecords = 8;
18 | int64 countAllNodes = 14;
19 | bool nodesChanged = 9;
20 | repeated DNSRoute routes = 10;
21 | int64 providerId = 11;
22 | int64 countNodeClusters = 12;
23 | bool isUp = 15;
24 | bool isDeleted = 16;
25 | }
26 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_dns_issue.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message DNSIssue {
7 | string target = 1;
8 | int64 targetId = 2;
9 | string type = 3;
10 | string description = 4;
11 | map params = 5;
12 | bool mustFix = 6; // 是否必须修复
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_dns_provider.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message DNSProvider {
7 | int64 id = 1;
8 | string name = 2;
9 | string type = 3;
10 | string typeName = 4;
11 | bytes apiParamsJSON = 5;
12 | int64 dataUpdatedAt = 6;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_dns_record.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message DNSRecord {
7 | string id = 1;
8 | string name = 2;
9 | string value = 3;
10 | string type = 4;
11 | string route = 5;
12 | }
13 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_dns_route.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message DNSRoute {
7 | string name = 1;
8 | string code = 2;
9 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_dns_task.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node.proto";
7 | import "models/model_node_cluster.proto";
8 | import "models/model_server.proto";
9 | import "models/model_dns_domain.proto";
10 |
11 | // DNS相关同步任务
12 | message DNSTask {
13 | int64 id = 1;
14 | string type = 2;
15 | bool isDone = 3;
16 | bool isOk = 4;
17 | string error = 5;
18 | int64 updatedAt = 6;
19 |
20 | Node node = 30;
21 | NodeCluster nodeCluster = 31;
22 | Server server = 32;
23 | DNSDomain dnsDomain = 33;
24 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_file.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message File {
7 | int64 id = 1;
8 | string filename = 2;
9 | int64 size = 3;
10 | int64 createdAt = 4;
11 | bool isPublic = 5;
12 | string mimeType = 6;
13 | string type = 7;
14 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_file_chunk.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message FileChunk {
7 | bytes data = 1;
8 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_formal_client_browser.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message FormalClientBrowser {
7 | int64 id = 1;
8 | string name = 2;
9 | repeated string codes = 3;
10 | string dataId = 4;
11 | int32 state = 5;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_formal_client_system.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message FormalClientSystem {
7 | int64 id = 1;
8 | string name = 2;
9 | repeated string codes = 3;
10 | string dataId = 4;
11 | int32 state = 5;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_access_log_policy.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message HTTPAccessLogPolicy {
7 | int64 id = 1; // 策略ID
8 | string name = 2; // 策略名称
9 | bool isOn = 3; // 是否启用
10 | string type = 4; // 策略类型
11 | bytes optionsJSON = 5; // 策略选项
12 | bytes condsJSON = 6; // 记录条件选项
13 | bool isPublic = 7; // 是否公用
14 | bool firewallOnly = 8; // 是否只记录WAF相关访问日志
15 | bool disableDefaultDB = 9; // 停用默认数据库存储
16 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_auth_policy.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 服务认证策略
7 | message HTTPAuthPolicy {
8 | int64 id = 1;
9 | bool isOn = 2;
10 | string name = 3;
11 | string type = 4;
12 | bytes paramsJSON = 5;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_cache_policy.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message HTTPCachePolicy {
7 | int64 id = 1; // ID
8 | string name = 2; // 名称
9 | bool isOn = 3; // 是否启用
10 | bytes maxBytesJSON = 4; // 内容最大尺寸配置
11 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_cache_task.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_user.proto";
7 | import "models/model_http_cache_task_key.proto";
8 |
9 | message HTTPCacheTask {
10 | int64 id = 1; // 任务ID
11 | int64 userId = 2;
12 | string type = 3;
13 | string keyType = 4;
14 | int64 createdAt = 5;
15 | int64 doneAt = 6;
16 | bool isDone = 7;
17 | bool isOk = 8;
18 | string description = 9;
19 |
20 | User user = 30; // 所属用户
21 | repeated HTTPCacheTaskKey httpCacheTaskKeys = 31; // 包含的Key
22 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_cache_task_key.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node_cluster.proto";
7 |
8 | message HTTPCacheTaskKey {
9 | int64 id = 1; // 缓存键ID
10 | int64 taskId = 2; // 任务ID
11 | string key = 3; // 缓存键
12 | string type = 4; // 操作类型:purge|fetch
13 | string keyType = 5; // 键类型:key|prefix
14 | bool isDone = 6; // 是否已完成
15 | bool isDoing = 9; // 是否执行中
16 | bytes errorsJSON = 7; // 错误信息
17 | int64 nodeClusterId = 8; // 所属集群ID
18 |
19 | NodeCluster nodeCluster = 30; // 所属集群,不一定有内容
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_fastcgi.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // HTTP Fastcgi定义
7 | message HTTPFastcgi {
8 | int64 id = 1;
9 | bool isOn = 2;
10 | string address = 3;
11 | bytes paramsJSON = 4;
12 | bytes readTimeoutJSON = 5;
13 | bytes connTimeoutJSON = 6;
14 | int32 poolSize = 7;
15 | string pathInfoPattern = 8;
16 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_firewall_rule_group.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message HTTPFirewallRuleGroup {
7 | int64 id = 1;
8 | string name = 2;
9 | bool isOn = 3;
10 | string description = 4;
11 | string code = 5;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_firewall_rule_set.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message HTTPFirewallRuleSet {
7 | int64 id = 1;
8 | string name = 2;
9 | bool isOn = 3;
10 | string description = 4;
11 | string code = 5;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_gzip.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_size_capacity.proto";
7 |
8 | message HTTPGzip {
9 | int64 id = 1;
10 | bool isOn = 2;
11 | int32 level = 3;
12 | SizeCapacity minLength = 4;
13 | SizeCapacity maxLength = 5;
14 | bytes condsJSON = 6;
15 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_http_web.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message HTTPWeb {
7 | int64 id = 1;
8 | bool isOn = 2;
9 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ip_library.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_file.proto";
7 |
8 | message IPLibrary {
9 | int64 id = 1;
10 | string type = 2;
11 | int64 createdAt = 3;
12 |
13 | File file = 30;
14 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ip_library_artifact.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_file.proto";
7 |
8 | message IPLibraryArtifact {
9 | int64 id = 1;
10 | int64 fileId = 2;
11 | int64 createdAt = 3;
12 | bytes metaJSON = 4;
13 | bool isPublic = 5; // 是否公开
14 | string name = 6;
15 | string code = 7;
16 |
17 | File file = 30; // 文件信息
18 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ip_list.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message IPList {
7 | int64 id = 1;
8 | bool isOn = 2;
9 | string type = 3;
10 | string name = 4;
11 | string code = 5;
12 | bytes timeoutJSON = 6;
13 | bool isPublic = 7;
14 | string description = 8;
15 | bool isGlobal = 9;
16 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_log.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message Log {
7 | int64 id = 1;
8 | string level = 2;
9 | string action = 3;
10 | int64 adminId = 4;
11 | int64 userId = 5;
12 | int64 providerId = 6;
13 | int64 createdAt = 7;
14 | string type = 8;
15 | string ip = 9;
16 | string userName = 10;
17 | string description = 11;
18 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_login.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message Login {
7 | int64 id = 1;
8 | string type = 2;
9 | bytes paramsJSON = 3;
10 | bool isOn = 4;
11 | int64 adminId = 5;
12 | int64 userId = 6;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_login_session.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 登录SESSION
7 | message LoginSession {
8 | int64 id = 1;
9 | int64 adminId = 2;
10 | int64 userId = 3;
11 | string sid = 4;
12 | bytes valuesJSON = 5;
13 | string ip = 6;
14 | int64 createdAt = 7;
15 | int64 expiresAt = 8;
16 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_message.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node_cluster.proto";
7 | import "models/model_node.proto";
8 |
9 | message Message {
10 | int64 id = 1;
11 | string type = 2;
12 | string body = 3;
13 | string level = 4;
14 | bytes paramsJSON = 5;
15 | bool isRead = 6;
16 | int64 createdAt = 7;
17 | string role = 8;
18 |
19 | NodeCluster nodeCluster = 30;
20 | Node node = 31;
21 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_message_media.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message MessageMedia {
7 | int64 id = 1;
8 | string type = 2;
9 | string name = 3;
10 | string description = 4;
11 | string userDescription = 5;
12 | bool isOn = 6;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_message_media_instance.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_message_media.proto";
7 |
8 | message MessageMediaInstance {
9 | int64 id = 1;
10 | bool isOn = 2;
11 | string name = 3;
12 | MessageMedia messageMedia = 4;
13 | bytes paramsJSON = 5;
14 | string description = 6;
15 | bytes rateJSON = 7;
16 | int32 hashLife = 8;
17 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_message_receiver.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_message_recipient.proto";
7 | import "models/model_message_recipient_group.proto";
8 |
9 | message MessageReceiver {
10 | int64 id = 1;
11 | int64 clusterId = 2;
12 | int64 nodeId = 3;
13 | int64 serverId = 4;
14 | string type = 5;
15 | bytes paramsJSON = 6;
16 | string role = 9; // 集群角色:node 或 dns
17 |
18 | MessageRecipient messageRecipient = 7;
19 | MessageRecipientGroup messageRecipientGroup = 8;
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_message_recipient.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_admin.proto";
7 | import "models/model_message_recipient_group.proto";
8 | import "models/model_message_media_instance.proto";
9 |
10 | message MessageRecipient {
11 | int64 id = 1;
12 | Admin admin = 2;
13 | MessageMediaInstance messageMediaInstance = 3;
14 | bool isOn = 4;
15 | repeated MessageRecipientGroup messageRecipientGroups = 5;
16 | string description = 6;
17 | string user = 7;
18 | string timeFrom = 8;
19 | string timeTo = 9;
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_message_recipient_group.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message MessageRecipientGroup {
7 | int64 id = 1;
8 | string name = 2;
9 | bool isOn = 3;
10 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_message_task.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_message_recipient.proto";
7 | import "models/model_message_media_instance.proto";
8 |
9 | message MessageTask {
10 | int64 id = 1;
11 | MessageRecipient messageRecipient = 2;
12 | string user = 3;
13 | string subject = 4;
14 | string body = 5;
15 | int64 createdAt = 6;
16 | int32 status = 7;
17 | int64 sentAt = 8;
18 | MessageTaskResult result = 9;
19 | MessageMediaInstance messageMediaInstance = 10;
20 | }
21 |
22 | message MessageTaskResult {
23 | bool isOk = 1;
24 | string error = 2;
25 | string response = 3;
26 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_message_task_log.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_message_task.proto";
7 |
8 | // 消息任务日志
9 | message MessageTaskLog {
10 | int64 id = 1;
11 | int64 createdAt = 2;
12 | bool isOk = 3;
13 | string error = 4;
14 | string response = 5;
15 | MessageTask messageTask = 6;
16 | }
17 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_metric_chart.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_metric_item.proto";
7 |
8 | // 指标图表
9 | message MetricChart {
10 | int64 id = 1;
11 | string name = 2;
12 | string type = 3;
13 | int32 widthDiv = 4;
14 | bytes paramsJSON = 5;
15 | bool isOn = 6;
16 | int32 maxItems = 7;
17 | bool ignoreEmptyKeys = 8;
18 | repeated string ignoredKeys = 9;
19 |
20 | MetricItem metricItem = 30;
21 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_metric_item.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 指标定义
7 | message MetricItem {
8 | int64 id = 1;
9 | bool isOn = 2;
10 | string code = 3;
11 | string category = 4;
12 | string name = 5;
13 | repeated string keys = 6;
14 | int32 period = 7;
15 | string periodUnit = 8;
16 | int32 expiresPeriod = 12;
17 | string value = 10;
18 | bool isPublic = 11;
19 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_network_address.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NetworkAddress {
7 | string protocol = 1;
8 | string host = 2;
9 | string portRange = 3;
10 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_action.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 节点动作
7 | message NodeAction {
8 | int64 id = 1;
9 | int64 nodeId = 2;
10 | string role = 3;
11 | bool isOn = 4; // 是否启用
12 | bytes condsJSON = 5; // 条件定义
13 | bytes actionJSON = 6; // 动作定义
14 | bytes durationJSON = 7; // 持续时间
15 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_cluster_firewall_action.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NodeClusterFirewallAction {
7 | int64 id = 1;
8 | int64 nodeClusterId = 2;
9 | string name = 3;
10 | string eventLevel = 4;
11 | bytes paramsJSON = 5;
12 | string type = 6;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_grant.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NodeGrant {
7 | int64 id = 1;
8 | string name = 2;
9 | string method = 3;
10 | string username = 4;
11 | string password = 5;
12 | bool su = 6;
13 | string privateKey = 7;
14 | string passphrase = 10;
15 | string description = 8;
16 | int64 nodeId = 9;
17 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_group.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NodeGroup {
7 | int64 id = 1;
8 | string name = 2;
9 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_install_status.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NodeInstallStatus {
7 | bool isRunning = 1;
8 | bool isFinished = 2;
9 | bool isOk = 3;
10 | string error = 4;
11 | string errorCode = 6;
12 | int64 updatedAt = 5;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_ip_address.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node_cluster.proto";
7 |
8 | // 节点地址
9 | message NodeIPAddress {
10 | int64 id = 1;
11 | int64 nodeId = 2;
12 | string name = 3;
13 | string ip = 4;
14 | string description = 5;
15 | int64 state = 6;
16 | int64 order = 7;
17 | bool canAccess = 8;
18 | bool isOn = 9;
19 | bool isUp = 10;
20 | string role = 12;
21 | string backupIP = 13;
22 | bool isHealthy = 14;
23 |
24 | repeated NodeCluster nodeClusters = 30;
25 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_ip_address_log.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node_ip_address.proto";
7 | import "models/model_admin.proto";
8 |
9 | message NodeIPAddressLog {
10 | int64 id = 1;
11 | string description = 2;
12 | int64 createdAt = 3;
13 | bool isUp = 4;
14 | bool isOn = 5;
15 | bool canAccess = 6;
16 | string backupIP = 7;
17 |
18 | NodeIPAddress nodeIPAddress = 30;
19 | Admin admin = 31;
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_ip_address_threshold.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NodeIPAddressThreshold {
7 | int64 id = 1;
8 | bytes itemsJSON = 2;
9 | bytes actionsJSON = 3;
10 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_log.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NodeLog {
7 | int64 id = 1;
8 | string role = 2;
9 | string tag = 3;
10 | string description = 4;
11 | string level = 5;
12 | int64 nodeId = 6;
13 | int64 createdAt = 7;
14 | int32 count = 8;
15 | int64 serverId = 9;
16 | bool isFixed = 10;
17 | int64 originId = 11;
18 | bool isRead = 12;
19 | bytes paramsJSON = 13;
20 | string type = 14;
21 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_login.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NodeLogin {
7 | int64 id = 1;
8 | string name = 2;
9 | string type = 3;
10 | bytes params = 4;
11 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_price_item.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NodePriceItem {
7 | int64 id = 1;
8 | bool isOn = 2;
9 | string name = 3;
10 | string type = 4;
11 | int64 bitsFrom = 5;
12 | int64 bitsTo = 6;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_region.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NodeRegion {
7 | int64 id = 1;
8 | bool isOn = 2;
9 | string name = 3;
10 | string description = 4;
11 | bytes pricesJSON = 5;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_task.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node.proto";
7 | import "models/model_node_cluster.proto";
8 |
9 | // 节点相关同步任务
10 | message NodeTask {
11 | int64 id = 1;
12 | string type = 2;
13 | bool isDone = 3;
14 | bool isOk = 4;
15 | string error = 5;
16 | int64 updatedAt = 6;
17 | int64 version = 7;
18 | bool isPrimary = 8; // 是否为主节点,非主节点稍等再同步有利于提升同步速度
19 | int64 serverId = 9;
20 | int64 userId = 10;
21 |
22 | Node node = 30;
23 | NodeCluster nodeCluster = 31;
24 | NodeCluster server = 32;
25 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_threshold.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node.proto";
7 |
8 | message NodeThreshold {
9 | int64 id = 1;
10 | int64 clusterId = 2;
11 | Node node = 3;
12 | string item = 4;
13 | string param = 5;
14 | string operator = 6;
15 | bytes valueJSON = 7;
16 | string message = 8;
17 | int32 duration = 9;
18 | string durationUnit = 10;
19 | string sumMethod = 11;
20 | bool isOn = 12;
21 | int32 notifyDuration = 13;
22 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_node_value.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 节点监控值
7 | message NodeValue {
8 | bytes valueJSON = 1;
9 | int64 createdAt = 2;
10 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_cluster.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 域名服务集群
7 | message NSCluster {
8 | int64 id = 1;
9 | bool isOn = 2;
10 | string name = 3;
11 | string installDir = 4;
12 | bytes tcpJSON = 5; // TCP设置
13 | bytes tlsJSON = 6; // TLS设置
14 | bytes udpJSON = 7; // UDP设置
15 | bytes dohJSON = 16; // DoH设置
16 | repeated string hosts = 8;
17 | bytes soaJSON = 12;
18 | string email = 13;
19 | bool autoRemoteStart = 9;
20 | string timeZone = 10;
21 | bytes answerJSON = 11;
22 | bool detectAgents = 14;
23 | bool checkingPorts = 15; // 检查端口连通性
24 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_domain_group.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 域名分组
7 | message NSDomainGroup {
8 | int64 id = 1;
9 | string name = 2;
10 | bool isOn = 3;
11 | int64 userId = 4;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_key.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_ns_domain.proto";
7 | import "models/model_ns_zone.proto";
8 |
9 | // NS密钥
10 | message NSKey {
11 | int64 id = 1;
12 | bool isOn = 2;
13 | string name = 3;
14 | string algo = 4;
15 | string secret = 5;
16 | string secretType = 6;
17 | bool isDeleted = 7;
18 | int64 version = 8;
19 |
20 | NSDomain nsDomain = 30;
21 | NSZone nsZone = 31;
22 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_plan.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NSPlan {
7 | int64 id = 1;
8 | string name = 2;
9 | bool isOn = 3;
10 | float monthlyPrice = 4;
11 | float yearlyPrice = 5;
12 | bytes configJSON = 6;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_question_option.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // DNS查询选项
7 | message NSQuestionOption {
8 | int64 id = 1;
9 | string name = 2;
10 | bytes valuesJSON = 3;
11 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_record_hourly_stat.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message NSRecordHourlyStat {
7 | int64 nsClusterId = 1;
8 | int64 nsNodeId = 2;
9 | int64 nsDomainId = 3;
10 | int64 nsRecordId = 4;
11 | int64 bytes = 5;
12 | int64 countRequests = 6;
13 | int64 createdAt = 7;
14 | string hour = 8;
15 | }
16 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_route.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_ns_cluster.proto";
7 | import "models/model_ns_domain.proto";
8 | import "models/model_ns_route_category.proto";
9 |
10 | // 线路
11 | message NSRoute {
12 | int64 id = 1;
13 | bool isOn = 2;
14 | string name = 3;
15 | bytes rangesJSON = 4;
16 | bool isDeleted = 5;
17 | int32 order = 6;
18 | int64 version = 7;
19 | string code = 8;
20 | bool isPublic = 9;
21 | int32 priority = 10; // 优先级
22 | int64 userId = 11; // 所属用户ID
23 |
24 | NSCluster nsCluster = 30;
25 | NSDomain nsDomain = 31;
26 | NSRouteCategory nsRouteCategory = 32;
27 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_route_category.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 线路分类
7 | message NSRouteCategory {
8 | int64 id = 1;
9 | string name = 2;
10 | bool isOn = 3;
11 | int32 order = 4;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_user_plan.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_ns_plan.proto";
7 | import "models/model_user.proto";
8 |
9 | message NSUserPlan {
10 | int64 id = 1;
11 | int64 nsPlanId = 2;
12 | int64 userId = 3;
13 | string dayFrom = 4;
14 | string dayTo = 5;
15 | string periodUnit = 6;
16 |
17 | NSPlan nsPlan = 30;
18 | User user = 31;
19 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ns_zone.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // DNS子域
7 | message NSZone {
8 | int64 id = 1;
9 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_order_method.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 订单支付方式
7 | message OrderMethod {
8 | int64 id = 1;
9 | string name = 2;
10 | string code = 3;
11 | string description = 4;
12 | string secret = 6;
13 | bool isOn = 7;
14 |
15 | string url = 5;
16 |
17 | string parentCode = 8;
18 | bytes params = 9;
19 |
20 | string clientType = 10;
21 | string qrcodeTitle = 11;
22 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_origin.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_network_address.proto";
7 |
8 | message Origin {
9 | int64 id = 1;
10 | bool isOn = 2;
11 | string name = 3;
12 | NetworkAddress addr = 4; // 源站网络地址
13 | bytes ossJSON = 9; // 源站网络地址为oss:开头时有此内容
14 | string description = 5;
15 | repeated string domains = 6;
16 | string host = 7;
17 | bool followPort = 8;
18 | bool http2Enabled = 10; // 是否支持HTTP/2,只在HTTPS源站时生效
19 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_post.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_post_category.proto";
7 |
8 | // 文章
9 | message Post {
10 | int64 id = 1; // ID
11 | int64 postCategoryId = 2; // 分类ID
12 | string productCode = 3; // 产品代号
13 | string type = 4; // 类型:normal, url
14 | string subject = 5; // 标题
15 | string url = 6; // URL
16 | string body = 7; // 内容
17 | int64 createdAt = 8; // 创建时间
18 | bool isPublished = 9; // 是否已发布
19 | int64 publishedAt = 10; // 发布时间
20 |
21 | PostCategory postCategory = 30; // 分类信息
22 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_post_category.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 文章分类
7 | message PostCategory {
8 | int64 id = 1; // ID
9 | string name = 2; // 名称
10 | string code = 3; // 文章代号
11 | bool isOn = 4; // 是否启用
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_region_city.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_region_province.proto";
7 |
8 | message RegionCity {
9 | int64 id = 1;
10 | string name = 2;
11 | repeated string codes = 3;
12 | int64 regionProvinceId = 4;
13 | string customName = 5;
14 | repeated string customCodes = 6;
15 | string displayName = 7;
16 |
17 | RegionProvince regionProvince = 30;
18 | }
19 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_region_country.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 国家/地区
7 | message RegionCountry {
8 | int64 id = 1;
9 | string name = 2;
10 | repeated string codes = 3;
11 | repeated string pinyin = 4;
12 | string customName = 5;
13 | repeated string customCodes = 6;
14 | string displayName = 7;
15 | bool isCommon = 8; // 是否常用
16 | string routeCode = 9; // 线路代号
17 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_region_provider.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message RegionProvider {
7 | int64 id = 1;
8 | string name = 2;
9 | repeated string codes = 3;
10 | string customName = 4;
11 | repeated string customCodes = 5;
12 | string displayName = 6;
13 | }
14 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_region_province.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_region_country.proto";
7 |
8 | // 省份|州|区域信息
9 | message RegionProvince {
10 | int64 id = 1;
11 | string name = 2;
12 | repeated string codes = 3;
13 | int64 regionCountryId = 4;
14 | string customName = 5;
15 | repeated string customCodes = 6;
16 | string displayName = 7;
17 |
18 | RegionCountry regionCountry = 30; // 国家|地区信息
19 | }
20 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_region_town.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_region_city.proto";
7 |
8 | message RegionTown {
9 | int64 id = 1;
10 | string name = 2;
11 | repeated string codes = 3;
12 | int64 regionCityId = 4;
13 | string customName = 5;
14 | repeated string customCodes = 6;
15 | string displayName = 7;
16 |
17 | RegionCity regionCity = 30;
18 | }
19 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_report_node.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_report_node_group.proto";
7 |
8 | message ReportNode {
9 | int64 id = 1;
10 | string uniqueId = 2;
11 | string secret = 3;
12 | bool isOn = 4;
13 | string name = 5;
14 | string location = 6;
15 | string isp = 7;
16 | bool isActive = 8;
17 | bytes statusJSON = 9;
18 | repeated string allowIPs = 10;
19 | repeated ReportNodeGroup reportNodeGroups = 11;
20 | }
21 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_report_node_group.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 监控节点分组
7 | message ReportNodeGroup {
8 | int64 id = 1;
9 | string name = 2;
10 | bool isOn = 3;
11 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_report_result.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message ReportResult {
7 | int64 id = 1;
8 | string type = 2;
9 | int64 targetId = 3;
10 | string targetDesc = 4;
11 | int64 reportNodeId = 5;
12 | bool isOk = 6;
13 | float costMs = 7;
14 | string error = 8;
15 | int64 updatedAt = 9;
16 | string level =10;
17 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_report_task.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node_ip_address.proto";
7 |
8 | // IP地址任务
9 | message IPAddrReportTask {
10 | string ip = 1;
11 | int32 port = 2;
12 | float costMs = 3;
13 | string level = 4;
14 | float connectivity = 5;
15 |
16 | NodeIPAddress nodeIPAddress = 30;
17 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_reverse_proxy.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message ReverseProxy {
7 | int64 id = 1;
8 | bytes schedulingJSON = 2;
9 | bytes primaryOriginsJSON = 3;
10 | bytes backupOriginsJSON = 4;
11 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_script.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message Script {
7 | int64 id = 1;
8 | int64 userId = 2;
9 | bool isOn = 3;
10 | string name = 4;
11 | string filename = 5;
12 | string code = 6;
13 | int64 updatedAt = 7;
14 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_server_daily_stat.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 服务每日统计
7 | message ServerDailyStat {
8 | int64 serverId = 1;
9 | int64 userId = 16; // 用户ID
10 | int64 nodeRegionId = 2;
11 | int64 bytes = 3;
12 | int64 cachedBytes = 5;
13 | int64 countRequests = 6;
14 | int64 countCachedRequests = 7;
15 | int64 createdAt = 4;
16 | int64 countAttackRequests = 8;
17 | int64 attackBytes = 9;
18 | bool checkTrafficLimiting = 10;
19 | int64 planId = 11; // 套餐ID
20 | string day = 12; // 日期 YYYYMMDD
21 | string hour = 13;
22 | string timeFrom = 14;
23 | string timeTo = 15;
24 | int64 countIPs = 17; // 独立IP数量
25 | }
26 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_server_domain_hourly_stat.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 单个小时统计
7 | message ServerDomainHourlyStat {
8 | int64 serverId = 1;
9 | string domain = 2;
10 | int64 countRequests = 3;
11 | int64 bytes = 4;
12 | int64 countAttackRequests = 6;
13 | int64 attackBytes = 7;
14 | }
15 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_server_group.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message ServerGroup {
7 | int64 id = 1; // ID
8 | string name = 2; // 分组名称
9 | int64 userId = 3; // 所属用户ID
10 | bool isOn = 4; // 是否启用
11 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_server_name_auditing_result.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message ServerNameAuditingResult {
7 | bool isOk = 1;
8 | string reason = 2;
9 | int64 createdAt = 3;
10 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_server_stat_board.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 统计看板
7 | message ServerStatBoard {
8 | int64 id = 1;
9 | string name = 2;
10 | bool isOn = 3;
11 | }
12 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_server_stat_board_chart.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_metric_chart.proto";
7 |
8 | // 统计看板条目
9 | message ServerStatBoardChart {
10 | int64 id = 1;
11 |
12 | MetricChart metricChart = 30;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_size_capacity.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message SizeCapacity {
7 | int64 count = 1;
8 | string unit = 2;
9 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_ssl_cert.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message SSLCert {
7 | int64 id = 1;
8 | bool isOn = 2;
9 | string name = 3;
10 | int64 timeBeginAt = 4;
11 | int64 timeEndAt = 5;
12 | repeated string dnsNames = 6;
13 | repeated string commonNames = 7;
14 | bool isACME = 8;
15 | int64 acmeTaskId = 17;
16 | bytes ocsp = 9;
17 | bool ocspIsUpdated = 10;
18 | string ocspError = 11;
19 | string description = 12;
20 | bool isCA = 13;
21 | string serverName = 14;
22 | int64 createdAt = 15;
23 | int64 updatedAt = 16;
24 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_traffic_daily_stat.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message TrafficDailyStat {
7 | int64 id = 1;
8 | string day = 2;
9 | int64 cachedBytes = 3;
10 | int64 bytes = 4;
11 | int64 countRequests = 5;
12 | int64 countCachedRequests = 6;
13 | int64 countAttackRequests = 7;
14 | int64 attackBytes = 8;
15 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_traffic_package.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 流量包
7 | message TrafficPackage {
8 | int64 id = 1;
9 | int32 size = 2;
10 | string unit = 3;
11 | int64 bytes = 4;
12 | bool isOn = 5;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_traffic_package_period.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 流量包有效期
7 | message TrafficPackagePeriod {
8 | int64 id = 1;
9 | bool isOn = 2;
10 | int32 count = 3;
11 | string unit = 4;
12 | int32 months = 5;
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_traffic_package_price.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 流量包价格定义
7 | message TrafficPackagePrice {
8 | int64 trafficPackageId = 1;
9 | int64 nodeRegionId = 2;
10 | int64 trafficPackagePeriodId = 3;
11 | double price = 4;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_access_key.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 用户AccessKey
7 | message UserAccessKey {
8 | int64 id = 1;
9 | int64 userId = 2;
10 | int64 subUserId = 3;
11 | bool isOn = 4;
12 | string uniqueId = 5;
13 | string secret = 6;
14 | string description = 7;
15 | int64 accessedAt = 8;
16 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_account.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_user.proto";
7 |
8 | message UserAccount {
9 | int64 id = 1; // 账户ID
10 | int64 userId = 2; // 用户ID
11 | double total = 3; // 总可用余额
12 | double totalFrozen = 4; // 总冻结余额
13 |
14 | User user = 30; // 用户信息
15 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_account_daily_stat.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message UserAccountDailyStat {
7 | int64 id = 1;
8 | string day = 2;
9 | string month = 3;
10 | float income = 4;
11 | float expense = 5;
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_account_log.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_user.proto";
7 | import "models/model_user_account.proto";
8 |
9 | message UserAccountLog {
10 | int64 id = 1;
11 | int64 userId = 2;
12 | int64 userAccountId = 3;
13 | double delta = 4;
14 | double deltaFrozen = 5;
15 | double total = 6;
16 | double totalFrozen = 7;
17 | string eventType = 8;
18 | string description = 9;
19 | int64 createdAt = 10;
20 | bytes paramsJSON = 11;
21 |
22 | User user = 30;
23 | UserAccount userAccount = 31;
24 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_bandwidth_stat.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 带宽统计数据
7 | message UserBandwidthStat {
8 | int64 id = 1;
9 | int64 userId = 2;
10 | string day = 3;
11 | string timeAt = 4;
12 | int64 bytes = 5; // 峰值带宽字节
13 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_bill.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_user.proto";
7 |
8 | message UserBill {
9 | int64 id = 1;
10 | User user = 2;
11 | string type = 3;
12 | string typeName = 4;
13 | string description = 5;
14 | double amount = 6;
15 | string month = 7;
16 | bool isPaid = 8;
17 | int64 paidAt = 9;
18 | string code = 10;
19 | bool canPay = 11;
20 | string dayFrom = 12;
21 | string dayTo = 13;
22 | string pricePeriod = 14;
23 | bool isOverdue = 15; // 是否已逾期
24 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_email_verification.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 电子邮箱认证
7 | message UserEmailVerification {
8 | int64 id = 1;
9 | string email = 2; // Email
10 | int64 userId = 3; // 用户ID
11 | string code = 4; // 代号
12 | int64 createdAt = 5; // 创建时间
13 | bool isSent = 6; // 已发送
14 | bool isVerified = 7; // 已激活
15 | int64 expiresAt = 8; // 过期时间,动态计算而来
16 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_feature.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 用户功能定义
7 | message UserFeature {
8 | string code = 1; // 代号
9 | string name = 2; // 名称
10 | string description = 3; // 描述
11 | bool supportPlan = 4; // 是否支持套餐
12 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_identity.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message UserIdentity {
7 | int64 id = 1;
8 | string orgType = 2;
9 | string type = 3;
10 | string realName = 4;
11 | string number = 5;
12 | repeated int64 fileIds = 6;
13 | string status = 7;
14 | int64 createdAt = 8;
15 | int64 updatedAt = 9;
16 | int64 submittedAt = 10;
17 | int64 rejectedAt = 11;
18 | int64 verifiedAt = 12;
19 | string rejectReason = 13;
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_mobile_verification.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 手机号码认证
7 | message UserMobileVerification {
8 | int64 id = 1; // ID
9 | string mobile = 2; // 手机号码
10 | int64 userId = 3; // 用户ID
11 | string code = 4; // 代号
12 | int64 createdAt = 5; // 创建时间
13 | bool isSent = 6; // 已发送
14 | bool isVerified = 7; // 已激活
15 | int64 expiresAt = 8; // 过期时间,动态计算而来
16 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_node.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | message UserNode {
7 | int64 id = 1;
8 | bool isOn = 2;
9 | string uniqueId = 3;
10 | string secret = 4;
11 | string name = 5;
12 | string description = 6;
13 | bytes httpJSON = 7;
14 | bytes httpsJSON = 8;
15 | bytes accessAddrsJSON = 9;
16 | repeated string accessAddrs = 10;
17 | bytes statusJSON = 11;
18 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_order.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_user.proto";
7 | import "models/model_order_method.proto";
8 |
9 | // 用户订单
10 | message UserOrder {
11 | int64 userId = 2;
12 | string code = 3;
13 | string type = 4;
14 | int64 orderMethodId = 5;
15 | string status = 6;
16 | float amount = 7;
17 | bytes paramsJSON = 8;
18 | int64 createdAt = 9;
19 | int64 cancelledAt = 10;
20 | int64 finishedAt = 11;
21 | bool isExpired = 12;
22 |
23 | User user = 30;
24 | OrderMethod orderMethod = 31;
25 |
26 | bool canPay = 32; // 是否可以支付
27 | string payURL = 33; // 构造后的支付URL
28 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_plan.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_user.proto";
7 | import "models/model_plan.proto";
8 | import "models/model_server.proto";
9 |
10 | message UserPlan {
11 | int64 id = 1; // 套餐ID
12 | int64 userId = 2; // 用户ID
13 | int64 planId = 3; // 套餐定义ID
14 | bool isOn = 4; // 是否启用
15 | string dayTo = 5; // 到期日期Y-m-d
16 | string name = 6; // 自定义备注名称
17 |
18 | User user = 30; // 用户信息
19 | Plan plan = 31; // 套餐定义信息
20 | repeated Server servers = 33; // 绑定的网站列表
21 |
22 | Server server = 32 [deprecated = true]; // 绑定的网站,已过期,使用 servers 代替
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_script.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_user.proto";
7 |
8 | // 用户脚本
9 | message UserScript {
10 | int64 id = 1; // 用户脚本ID
11 | int64 userId = 2; // 用户ID
12 | int64 adminId = 3; // 审核的管理员
13 | string code = 4; // 脚本代码
14 | string codeMD5 = 5; // 脚本代码MD5
15 | int64 createdAt = 6; // 创建时间
16 | bool isRejected = 7; // 是否被驳回
17 | int64 rejectedAt = 8; // 驳回时间
18 | string rejectedReason = 9; // 驳回原因
19 | bool isPassed = 10; // 是否被通过
20 | int64 passedAt = 11; // 通过时间
21 |
22 | User user = 30; // 用户信息
23 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_ticket.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_user_ticket_category.proto";
7 | import "models/model_user.proto";
8 | import "models/model_user_ticket_log.proto";
9 |
10 | // 工单
11 | message UserTicket {
12 | int64 id = 1;
13 | int64 categoryId = 2;
14 | int64 userId = 3;
15 | string subject = 4;
16 | string body = 5;
17 | string status = 6;
18 | int64 createdAt = 7;
19 | int64 lastLogAt = 8;
20 |
21 | UserTicketCategory userTicketCategory = 30;
22 | User user = 31;
23 | UserTicketLog latestUserTicketLog = 32;
24 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_ticket_category.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 工单分类
7 | message UserTicketCategory {
8 | int64 id = 1;
9 | string name = 2;
10 | bool isOn = 3;
11 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_ticket_log.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_admin.proto";
7 | import "models/model_user.proto";
8 |
9 | // 工单日志
10 | message UserTicketLog {
11 | int64 id = 1;
12 | int64 adminId = 2;
13 | int64 userId = 3;
14 | int64 ticketId = 4;
15 | string status = 5;
16 | string comment = 6;
17 | int64 createdAt = 7;
18 | bool isReadonly = 8;
19 |
20 | Admin admin = 30;
21 | User user = 31;
22 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/model_user_traffic_bill.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_node_region.proto";
7 |
8 | // 用户流量带宽子账单
9 | message UserTrafficBill {
10 | int64 id = 1;
11 | int64 billId = 2;
12 | int64 nodeRegionId = 3;
13 | double amount = 4;
14 | double bandwidthMB = 5;
15 | int32 bandwidthPercentile = 6;
16 | double trafficGB = 7;
17 | double trafficPackageGB = 8;
18 | repeated int64 userTrafficPackageIds = 9;
19 | double pricePerUnit = 10;
20 | string priceType = 11;
21 |
22 | NodeRegion nodeRegion = 30;
23 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/models/rpc_messages.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 操作成功
7 | message RPCSuccess {
8 |
9 | }
10 |
11 | // 返回数量
12 | message RPCCountResponse {
13 | int64 count = 1;
14 | }
15 |
16 | // 是否存在
17 | message RPCExists {
18 | bool exists = 1;
19 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_acme_authentication.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // ACME认证相关信息
7 | service ACMEAuthenticationService {
8 | // 获取Key
9 | rpc findACMEAuthenticationKeyWithToken (FindACMEAuthenticationKeyWithTokenRequest) returns (FindACMEAuthenticationKeyWithTokenResponse);
10 | }
11 |
12 | // 获取Key
13 | message FindACMEAuthenticationKeyWithTokenRequest {
14 | string token = 1;
15 | }
16 |
17 | message FindACMEAuthenticationKeyWithTokenResponse {
18 | string key = 1;
19 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_api_access_token.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // AccessToken相关服务
7 | service APIAccessTokenService {
8 | // 获取AccessToken
9 | rpc GetAPIAccessToken (GetAPIAccessTokenRequest) returns (GetAPIAccessTokenResponse);
10 | }
11 |
12 | // 获取AccessToken
13 | message GetAPIAccessTokenRequest {
14 | string type = 1;
15 | string accessKeyId = 2;
16 | string accessKey = 3;
17 | }
18 |
19 | message GetAPIAccessTokenResponse {
20 | string token = 1;
21 | int64 expiresAt = 2;
22 | }
23 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_api_token.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_api_token.proto";
7 |
8 | // API令牌服务
9 | service APITokenService {
10 | // 获取API令牌
11 | rpc findAllEnabledAPITokens (FindAllEnabledAPITokensRequest) returns (FindAllEnabledAPITokensResponse);
12 | }
13 |
14 | // 获取API令牌
15 | message FindAllEnabledAPITokensRequest {
16 | string role = 1;
17 | }
18 |
19 | message FindAllEnabledAPITokensResponse {
20 | repeated APIToken apiTokens = 1;
21 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_client_agent.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_client_agent.proto";
7 |
8 | // Agent服务
9 | service ClientAgentService {
10 | // 查找所有Agent
11 | rpc findAllClientAgents(FindAllClientAgentsRequest) returns (FindAllClientAgentsResponse);
12 | }
13 |
14 | // 查找所有Agent
15 | message FindAllClientAgentsRequest {
16 | }
17 |
18 | message FindAllClientAgentsResponse {
19 | repeated ClientAgent clientAgents = 1;
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_dns.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_dns_issue.proto";
7 |
8 | // 域名解析服务
9 | service DNSService {
10 | // 查找问题
11 | rpc findAllDNSIssues (FindAllDNSIssuesRequest) returns (FindAllDNSIssuesResponse);
12 | }
13 |
14 | // 查找问题
15 | message FindAllDNSIssuesRequest {
16 | int64 nodeClusterId = 1;
17 | }
18 |
19 | message FindAllDNSIssuesResponse {
20 | repeated DNSIssue issues = 1;
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_latest_item.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/rpc_messages.proto";
7 |
8 | // 最近使用的条目服务
9 | service LatestItemService {
10 | // 记录最近使用的条目
11 | rpc increaseLatestItem (IncreaseLatestItemRequest) returns (RPCSuccess);
12 | }
13 |
14 | // 记录最近使用的条目
15 | message IncreaseLatestItemRequest {
16 | string itemType = 1;
17 | int64 itemId = 2;
18 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_node_login.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 节点登录相关
7 | service NodeLoginService {
8 | // 读取建议的端口
9 | rpc findNodeLoginSuggestPorts(FindNodeLoginSuggestPortsRequest) returns (FindNodeLoginSuggestPortsResponse);
10 | }
11 |
12 | // 读取建议的端口
13 | message FindNodeLoginSuggestPortsRequest {
14 | string host = 1;
15 | }
16 |
17 | message FindNodeLoginSuggestPortsResponse {
18 | repeated int32 ports = 1;
19 | repeated int32 availablePorts = 2;
20 | }
21 |
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_ping.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // Ping服务
7 | // 用来测试连接是否可用
8 | service PingService {
9 | // 发起Ping
10 | rpc ping(PingRequest) returns (PingResponse);
11 | }
12 |
13 | // 发起Ping
14 | message PingRequest {
15 |
16 | }
17 |
18 | message PingResponse {
19 |
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_price.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 价格相关服务
7 | service PriceService {
8 | // 计算费用
9 | rpc calculatePrice(CalculatePriceRequest) returns (CalculatePriceResponse);
10 | }
11 |
12 | // 计算费用
13 | message CalculatePriceRequest {
14 | string priceType = 1;
15 | double trafficGB = 2;
16 | double bandwidthMB = 3;
17 | int64 nodeRegionId = 4;
18 | }
19 |
20 | message CalculatePriceResponse {
21 | double amount = 1;
22 | bool hasNodeRegionPrice = 2;
23 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_sms_sender.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 短信发送服务
7 | service SMSSenderService {
8 | // 发送短信
9 | rpc sendSMS(SendSMSRequest) returns (SendSMSResponse);
10 | }
11 |
12 | // 发送短信
13 | message SendSMSRequest {
14 | string mobile = 1; // 手机号
15 | string body = 2; // 内容
16 | string code = 3; // 验证码
17 | string type = 4; // 渠道类型:webHook ...
18 | bytes paramsJSON = 5; // 参数
19 | }
20 |
21 | message SendSMSResponse {
22 | bool isOk = 1; // 是否成功
23 | string result = 2; // 发送返回内容,只有失败时才会有数据
24 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_sys_locker.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/rpc_messages.proto";
7 |
8 | // 互斥锁管理
9 | service SysLockerService {
10 | // 获得锁
11 | rpc SysLockerLock (SysLockerLockRequest) returns (SysLockerLockResponse);
12 |
13 | // 释放锁
14 | rpc SysLockerUnlock (SysLockerUnlockRequest) returns (RPCSuccess);
15 | }
16 |
17 | // 获得锁
18 | message SysLockerLockRequest {
19 | string key = 1;
20 | int64 timeoutSeconds = 2;
21 | }
22 |
23 | message SysLockerLockResponse {
24 | bool ok = 1;
25 | }
26 |
27 | // 释放锁
28 | message SysLockerUnlockRequest {
29 | string key = 1;
30 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_sys_setting.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/rpc_messages.proto";
7 |
8 | // 系统设置管理服务
9 | service SysSettingService {
10 | // 更改配置
11 | rpc updateSysSetting (UpdateSysSettingRequest) returns (RPCSuccess);
12 |
13 | // 读取配置
14 | rpc readSysSetting (ReadSysSettingRequest) returns (ReadSysSettingResponse);
15 | }
16 |
17 | // 更改配置
18 | message UpdateSysSettingRequest {
19 | string code = 1;
20 | bytes valueJSON = 2;
21 | }
22 |
23 | // 读取配置
24 | message ReadSysSettingRequest {
25 | string code = 1;
26 | }
27 |
28 | message ReadSysSettingResponse {
29 | bytes valueJSON = 1;
30 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_traffic_daily_stat.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_traffic_daily_stat.proto";
7 |
8 | // 按日统计服务
9 | service TrafficDailyStatService {
10 | // 查找某日统计
11 | rpc findTrafficDailyStatWithDay(FindTrafficDailyStatWithDayRequest) returns (FindTrafficDailyStatWithDayResponse);
12 | }
13 |
14 | // 查找某日统计
15 | message FindTrafficDailyStatWithDayRequest {
16 | string day = 1; // YYYYMMDD
17 | string minute = 2; // HHIISS,可选项
18 | }
19 |
20 | message FindTrafficDailyStatWithDayResponse {
21 | TrafficDailyStat trafficDailyStat = 1;
22 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_updating_server_list.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | // 待更新服务列表服务
7 | service UpdatingServerListService {
8 | // 查找要更新的服务配置
9 | rpc findUpdatingServerLists(FindUpdatingServerListsRequest) returns (FindUpdatingServerListsResponse);
10 | }
11 |
12 | // 查找要更新的服务配置
13 | message FindUpdatingServerListsRequest {
14 | int64 lastId = 1; // 上一次读取的列表ID
15 | }
16 |
17 | message FindUpdatingServerListsResponse {
18 | bytes serversJSON = 1; // 服务配置列表
19 | int64 maxId = 2; // 最大的一个列表ID
20 | }
--------------------------------------------------------------------------------
/pkg/rpc/protos/service_user_traffic_bill.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "./pb";
3 |
4 | package pb;
5 |
6 | import "models/model_user_traffic_bill.proto";
7 |
8 | // 用户流量带宽子账单服务
9 | service UserTrafficBillService {
10 | // 列出某个账单下的流量带宽子账单
11 | rpc findUserTrafficBills(FindUserTrafficBillsRequest) returns (FindUserTrafficBillsResponse);
12 | }
13 |
14 | // 列出某个账单下的流量带宽子账单
15 | message FindUserTrafficBillsRequest {
16 | int64 userBillId = 1;
17 | }
18 |
19 | message FindUserTrafficBillsResponse {
20 | repeated UserTrafficBill userTrafficBills = 1;
21 | }
--------------------------------------------------------------------------------
/pkg/serverconfigs/access_log_queue_config.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package serverconfigs
4 |
5 | // AccessLogQueueConfig 访问日志队列配置
6 | type AccessLogQueueConfig struct {
7 | MaxLength int `yaml:"maxLength" json:"maxLength"` // 队列最大长度
8 | CountPerSecond int `yaml:"countPerSecond" json:"countPerSecond"` // 每秒写入数量
9 | Percent int `yaml:"percent" json:"percent"` // 比例,如果为0-100,默认为100
10 |
11 | EnableAutoPartial bool `yaml:"enableAutoPartial" json:"enableAutoPartial"` // 是否启动自动分表
12 | RowsPerTable int64 `yaml:"rowsPerTable" json:"rowsPerTable"` // 单表最大行数
13 | }
14 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/access_log_storage_command.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package serverconfigs
4 |
5 | // AccessLogCommandStorageConfig 通过命令行存储
6 | type AccessLogCommandStorageConfig struct {
7 | Command string `yaml:"command" json:"command"`
8 | Args []string `yaml:"args" json:"args"`
9 | Dir string `yaml:"dir" json:"dir"`
10 | }
11 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/access_log_storage_es.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package serverconfigs
4 |
5 | // AccessLogESStorageConfig ElasticSearch存储策略
6 | type AccessLogESStorageConfig struct {
7 | Endpoint string `yaml:"endpoint" json:"endpoint"`
8 | Index string `yaml:"index" json:"index"`
9 | MappingType string `yaml:"mappingType" json:"mappingType"`
10 | Username string `yaml:"username" json:"username"`
11 | Password string `yaml:"password" json:"password"`
12 | IsDataStream bool `yaml:"isDataStream" json:"isDataStream"` // 是否为Data Stream模式
13 | }
14 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/access_log_storage_file.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package serverconfigs
4 |
5 | // AccessLogFileStorageConfig 文件存储配置
6 | type AccessLogFileStorageConfig struct {
7 | Path string `yaml:"path" json:"path"` // 文件路径,支持变量:${year|month|week|day|hour|minute|second}
8 | AutoCreate bool `yaml:"autoCreate" json:"autoCreate"` // 是否自动创建目录
9 | }
10 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/access_log_storage_tcp.go:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package serverconfigs
4 |
5 | // AccessLogTCPStorageConfig TCP存储策略
6 | type AccessLogTCPStorageConfig struct {
7 | Network string `yaml:"network" json:"network"` // tcp, unix
8 | Addr string `yaml:"addr" json:"addr"`
9 | }
10 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/ddosconfigs/ip_config.go:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package ddosconfigs
4 |
5 | type IPConfig struct {
6 | IP string `json:"ip"`
7 | Description string `json:"description"`
8 | }
9 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/ddosconfigs/port_config.go:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
2 |
3 | package ddosconfigs
4 |
5 | type PortConfig struct {
6 | Port int32 `json:"port"`
7 | Description string `json:"description"`
8 | }
9 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_base64_decode.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import (
4 | "encoding/base64"
5 | )
6 |
7 | type Base64DecodeFilter struct {
8 | }
9 |
10 | func (this *Base64DecodeFilter) Init() error {
11 | return nil
12 | }
13 |
14 | func (this *Base64DecodeFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) {
15 | output, err = base64.StdEncoding.DecodeString(ToString(input))
16 | if err != nil {
17 | return
18 | }
19 | goNext = true
20 | return
21 | }
22 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_base64_decode_test.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import (
4 | "encoding/base64"
5 | "testing"
6 | )
7 |
8 | func TestBase64DecodeFilter_Do(t *testing.T) {
9 | filter := &Base64DecodeFilter{}
10 | t.Log(filter.Do("123456", nil))
11 |
12 | encodedString := base64.StdEncoding.EncodeToString([]byte("hello"))
13 | t.Log(filter.Do(encodedString, nil))
14 | }
15 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_base64_encode.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import (
4 | "encoding/base64"
5 | )
6 |
7 | type Base64EncodeFilter struct {
8 | }
9 |
10 | func (this *Base64EncodeFilter) Init() error {
11 | return nil
12 | }
13 |
14 | func (this *Base64EncodeFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) {
15 | data := ToBytes(input)
16 | output = base64.StdEncoding.EncodeToString(data)
17 | goNext = true
18 | return
19 | }
20 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_dec2hex.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import (
4 | "fmt"
5 | "github.com/iwind/TeaGo/types"
6 | )
7 |
8 | type Dec2HexFilter struct {
9 | }
10 |
11 | // 初始化
12 | func (this *Dec2HexFilter) Init() error {
13 | return nil
14 | }
15 |
16 | // 执行过滤
17 | func (this *Dec2HexFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) {
18 | v := types.Int64(input)
19 | return fmt.Sprintf("%x", v), true, nil
20 | }
21 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_dec2hex_test.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import (
4 | "testing"
5 | )
6 |
7 | func TestDec2HexFilter_Do(t *testing.T) {
8 | filter := &Dec2HexFilter{}
9 | err := filter.Init()
10 | if err != nil {
11 | t.Fatal(err)
12 | }
13 | t.Log(filter.Do("123456", nil))
14 | t.Log(filter.Do("1", nil))
15 | }
16 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_hex2dec.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import (
4 | "github.com/iwind/TeaGo/types"
5 | "math/big"
6 | )
7 |
8 | type Hex2DecFilter struct {
9 | }
10 |
11 | // 初始化
12 | func (this *Hex2DecFilter) Init() error {
13 | return nil
14 | }
15 |
16 | // 执行过滤
17 | func (this *Hex2DecFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) {
18 | n := new(big.Int)
19 | n.SetString(types.String(input), 16)
20 | return n.Uint64(), true, nil
21 | }
22 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_hex2dec_test.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import (
4 | stringutil "github.com/iwind/TeaGo/utils/string"
5 | "testing"
6 | )
7 |
8 | func TestHex2DecFilter_Do(t *testing.T) {
9 | filter := &Hex2DecFilter{}
10 | err := filter.Init()
11 | if err != nil {
12 | t.Fatal(err)
13 | }
14 | t.Log(filter.Do("0e", nil))
15 | t.Log(filter.Do("e", nil))
16 |
17 | {
18 | result, _, _ := filter.Do("123", nil)
19 | t.Logf("%x", result)
20 | }
21 |
22 | {
23 | md5 := stringutil.Md5("123456")
24 | t.Log("md5:", md5)
25 | result, _, _ := filter.Do(md5, nil)
26 | t.Log(result)
27 | t.Logf("%x", result)
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_html_escape.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import (
4 | "github.com/iwind/TeaGo/types"
5 | "html"
6 | )
7 |
8 | type HTMLEscapeFilter struct {
9 | }
10 |
11 | // 初始化
12 | func (this *HTMLEscapeFilter) Init() error {
13 | return nil
14 | }
15 |
16 | // 执行过滤
17 | func (this *HTMLEscapeFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) {
18 | s := types.String(input)
19 | return html.EscapeString(s), true, nil
20 | }
21 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_html_escape_test.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import "testing"
4 |
5 | func TestHTMLEscapeFilter_Do(t *testing.T) {
6 | filter := &HTMLEscapeFilter{}
7 | t.Log(filter.Do("Hello", nil))
8 | t.Log(filter.Do("", nil))
9 | }
10 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_html_unescape.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import (
4 | "github.com/iwind/TeaGo/types"
5 | "html"
6 | )
7 |
8 | type HTMLUnescapeFilter struct {
9 | }
10 |
11 | // 初始化
12 | func (this *HTMLUnescapeFilter) Init() error {
13 | return nil
14 | }
15 |
16 | // 执行过滤
17 | func (this *HTMLUnescapeFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) {
18 | s := types.String(input)
19 | return html.UnescapeString(s), true, nil
20 | }
21 |
--------------------------------------------------------------------------------
/pkg/serverconfigs/filterconfigs/filter_html_unescape_test.go:
--------------------------------------------------------------------------------
1 | package filterconfigs
2 |
3 | import "testing"
4 |
5 | func TestHTMLUnescapeFilter_Do(t *testing.T) {
6 | filter := &HTMLUnescapeFilter{}
7 | t.Log(filter.Do("Hello", nil))
8 | t.Log(filter.Do("<script>", nil))
9 | t.Log(filter.Do("