feat: added supported protocols field processing

This commit is contained in:
vladimir.kuznetsov 2025-06-30 22:43:05 +08:00
parent ab340c3257
commit 98c4389445
3 changed files with 18 additions and 2 deletions

View file

@ -35,6 +35,7 @@ namespace
constexpr char serviceType[] = "service_type"; constexpr char serviceType[] = "service_type";
constexpr char serviceInfo[] = "service_info"; constexpr char serviceInfo[] = "service_info";
constexpr char serviceProtocol[] = "service_protocol"; constexpr char serviceProtocol[] = "service_protocol";
constexpr char supportedProtocols[] = "supported_protocols";
constexpr char apiPayload[] = "api_payload"; constexpr char apiPayload[] = "api_payload";
constexpr char keyPayload[] = "key_payload"; constexpr char keyPayload[] = "key_payload";
@ -197,8 +198,8 @@ namespace
auto apiConfig = QJsonObject::fromVariantMap(map); auto apiConfig = QJsonObject::fromVariantMap(map);
if (newServerConfig.value(config_key::configVersion).toInt() == apiDefs::ConfigSource::AmneziaGateway) { if (newServerConfig.value(config_key::configVersion).toInt() == apiDefs::ConfigSource::AmneziaGateway) {
apiConfig.insert(configKey::serviceInfo, apiConfig.insert(configKey::supportedProtocols,
QJsonDocument::fromJson(apiResponseBody).object().value(configKey::serviceInfo).toObject()); QJsonDocument::fromJson(apiResponseBody).object().value(configKey::supportedProtocols).toArray());
} }
serverConfig[configKey::apiConfig] = apiConfig; serverConfig[configKey::apiConfig] = apiConfig;
@ -592,6 +593,18 @@ bool ApiConfigsController::isVlessProtocol()
return false; return false;
} }
bool ApiConfigsController::isProtocolSelectionSupported()
{
auto serverIndex = m_serversModel->getProcessedServerIndex();
auto serverConfigObject = m_serversModel->getServerConfig(serverIndex);
auto apiConfigObject = serverConfigObject.value(configKey::apiConfig).toObject();
if (apiConfigObject[configKey::supportedProtocols].toArray().isEmpty()) {
return false;
}
return true;
}
QList<QString> ApiConfigsController::getQrCodes() QList<QString> ApiConfigsController::getQrCodes()
{ {
return m_qrCodes; return m_qrCodes;

View file

@ -37,6 +37,7 @@ public slots:
void setCurrentProtocol(const QString &protocolName); void setCurrentProtocol(const QString &protocolName);
bool isVlessProtocol(); bool isVlessProtocol();
bool isProtocolSelectionSupported();
signals: signals:
void errorOccurred(ErrorCode errorCode); void errorOccurred(ErrorCode errorCode);

View file

@ -168,6 +168,8 @@ PageType {
Layout.rightMargin: 16 Layout.rightMargin: 16
Layout.leftMargin: 16 Layout.leftMargin: 16
visible: ApiConfigsController.isProtocolSelectionSupported()
text: qsTr("Use VLESS protocol") text: qsTr("Use VLESS protocol")
checked: switcher.isVlessProtocol checked: switcher.isVlessProtocol
onToggled: function() { onToggled: function() {