├── .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("