diff --git a/[Help b/[Help new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java b/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java index 29533cc072655bb1bc0805590291f490a108d815..5a87dfbe48b20062e12cbbcd43b3f2fe09b3fc2e 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java @@ -41,8 +41,8 @@ public class DeviceRegistrationResponse { private String receiptSignature; private String userPhoto; //Backward compatibility fix so all the fields are included here. - private Boolean allowPeersFromHistory; - private Boolean allowPeersFromTrusted; + private Boolean allowCertFromHistory; + private Boolean allowCertFromTrusted; private Boolean proxyEnabled; private String dhtProxyListUrl; private String proxyServer; @@ -53,10 +53,11 @@ public class DeviceRegistrationResponse { private String turnServerPassword; private Boolean videoEnabled; private Boolean turnEnabled; - private Boolean allowPeersFromContact; + private Boolean allowCertFromContact; private Boolean accountDiscovery; private Boolean peerDiscovery; private Boolean upnpEnabled; + private Boolean rendezVous; public void setCertificateChain(X509Certificate[] certificateChain){ StringBuilder stringBuilder = new StringBuilder(); @@ -70,8 +71,8 @@ public class DeviceRegistrationResponse { public void setPolicyData(String policyData){ PolicyData policy = JsonIterator.deserialize(policyData,PolicyData.class); - this.allowPeersFromHistory = policy.getAllowPeersFromHistory(); - this.allowPeersFromTrusted = policy.getAllowPeersFromTrusted(); + this.allowCertFromHistory = policy.getAllowCertFromHistory(); + this.allowCertFromTrusted = policy.getAllowCertFromTrusted(); this.proxyEnabled = policy.getProxyEnabled(); this.dhtProxyListUrl = policy.getDhtProxyListUrl(); this.proxyServer = policy.getProxyServer(); @@ -82,10 +83,11 @@ public class DeviceRegistrationResponse { this.turnServerPassword = policy.getTurnServerPassword(); this.videoEnabled = policy.getVideoEnabled(); this.turnEnabled = policy.getTurnEnabled(); - this.allowPeersFromContact = policy.getAllowPeersFromContact(); + this.allowCertFromContact = policy.getAllowCertFromContact(); this.accountDiscovery = policy.getAccountDiscovery(); this.peerDiscovery = policy.getPeerDiscovery(); this.upnpEnabled = policy.getUpnpEnabled(); + this.rendezVous = policy.getRendezVous(); } diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java index 7198e403108677333acca1ccb833548bb9b17748..3256faeb95cdb2a4e7191f6d86555e431415cc4d 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java @@ -7,8 +7,8 @@ import lombok.Setter; @Setter public class PolicyData { - private Boolean allowPeersFromHistory; - private Boolean allowPeersFromTrusted; + private Boolean allowCertFromHistory; + private Boolean allowCertFromTrusted; private Boolean proxyEnabled; private String dhtProxyListUrl; private String proxyServer; @@ -19,8 +19,9 @@ public class PolicyData { private String turnServerPassword; private Boolean videoEnabled; private Boolean turnEnabled; - private Boolean allowPeersFromContact; + private Boolean allowCertFromContact; private Boolean accountDiscovery; private Boolean peerDiscovery; private Boolean upnpEnabled; + private Boolean rendezVous; } diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js b/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js index a5d4c98030610ecbb68655f687136c5d1e9bb772..a88d6f7b5c60a96f5a1ad94cf664b09a966f9183 100644 --- a/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js +++ b/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js @@ -171,11 +171,9 @@ export default function EditBlueprintConfiguration(props) { const history = useHistory(); const [videoEnabled, setVideoEnabled] = React.useState(true); - const [allowPeersFromContact, setAllowPeersFromContact] = React.useState( - true - ); + const [allowCertFromContact, setallowCertFromContact] = React.useState(true); const [autoAnswer, setAutoAnswer] = React.useState(false); - const [accountPeerDiscovery, setAccountPeerDiscovery] = React.useState(true); + const [peerDiscovery, setpeerDiscovery] = React.useState(true); const [rendezVous, setRendezVous] = React.useState(false); const [selectedTurnOption, setSelectedTurnOption] = React.useState( @@ -191,9 +189,7 @@ export default function EditBlueprintConfiguration(props) { const [turnServerPassword, setTurnServerPassword] = React.useState("ring"); const [proxyEnabled, setProxyEnabled] = React.useState(false); const [proxyServer, setProxyServer] = React.useState("dhtproxy.jami.net"); - const [accountDhtProxyListUrl, setAccountDhtProxyListUrl] = React.useState( - "" - ); + const [dhtProxyListUrl, setDhtProxyListUrl] = React.useState(""); const [turnPassowrdVisible, setTurnPasswordVisible] = React.useState(false); @@ -213,9 +209,9 @@ export default function EditBlueprintConfiguration(props) { .then((response) => { let policyData = JSON.parse(response.data.policyData); setVideoEnabled(policyData["videoEnabled"]); - setAllowPeersFromContact(policyData["allowPeersFromContact"]); + setallowCertFromContact(policyData["allowCertFromContact"]); setAutoAnswer(policyData["autoAnswer"]); - setAccountPeerDiscovery(policyData["Account.peerDiscovery"]); + setpeerDiscovery(policyData["peerDiscovery"]); setRendezVous(policyData["rendezVous"]); setUpnpEnabled(policyData["upnpEnabled"]); @@ -235,7 +231,7 @@ export default function EditBlueprintConfiguration(props) { setSelectedDHTProxyOption("customDHTProxy"); setProxyEnabled(policyData["proxyEnabled"]); setProxyServer(policyData["proxyServer"]); - setAccountDhtProxyListUrl(policyData["Account.dhtProxyListUrl"]); + setDhtProxyListUrl(policyData["dhtProxyListUrl"]); } else if (policyData["proxyEnabled"] === false) { setSelectedDHTProxyOption("disabledDHTProxy"); setTurnEnabled(false); @@ -256,13 +252,13 @@ export default function EditBlueprintConfiguration(props) { const handleUpdateConfiguration = (field, value, selectedOptions = []) => { let data = { videoEnabled: videoEnabled, - allowPeersFromContact: allowPeersFromContact, - allowPeersFromHistory: allowPeersFromContact, - allowPeersFromTrusted: allowPeersFromContact, + allowCertFromContact: allowCertFromContact, + allowCertFromHistory: allowCertFromContact, + allowCertFromTrusted: allowCertFromContact, autoAnswer: autoAnswer, - "Account.peerDiscovery": accountPeerDiscovery, - "Account.accountDiscovery": accountPeerDiscovery, - "Account.accountPublish": accountPeerDiscovery, + peerDiscovery: peerDiscovery, + accountDiscovery: peerDiscovery, + accountPublish: peerDiscovery, rendezVous: rendezVous, upnpEnabled: upnpEnabled, turnEnabled: turnEnabled, @@ -271,14 +267,10 @@ export default function EditBlueprintConfiguration(props) { turnServerPassword: turnServerPassword, proxyEnabled: proxyEnabled, proxyServer: proxyServer, - "Account.dhtProxyListUrl": accountDhtProxyListUrl, + dhtProxyListUrl: dhtProxyListUrl, }; - if (field === "accountDhtProxyListUrl") { - data["Account.dhtProxyListUrl"] = value; - } else { - data[field] = value; - } + data[field] = value; selectedOptions.forEach((selectedOption) => { if (selectedOption === "defaultTurn") { @@ -291,7 +283,7 @@ export default function EditBlueprintConfiguration(props) { if (selectedOption === "defaultDHTProxy") { delete data.proxyEnabled; delete data.proxyServer; - delete data["Account.dhtProxyListUrl"]; + delete data.dhtProxyListUrl; } if (selectedOption == "customTurn") { @@ -627,21 +619,21 @@ export default function EditBlueprintConfiguration(props) { : "none", }} > - <InputLabel htmlFor="accountDhtProxyListUrl"> + <InputLabel htmlFor="dhtProxyListUrl"> DHT proxy List URL </InputLabel> <Input id="proxyServer" - placeholder={accountDhtProxyListUrl} + placeholder={dhtProxyListUrl} startAdornment={ <InputAdornment position="start"> <LanguageOutlinedIcon /> </InputAdornment> } onChange={(e) => { - setAccountDhtProxyListUrl(e.target.value); + setDhtProxyListUrl(e.target.value); handleUpdateConfiguration( - "accountDhtProxyListUrl", + "dhtProxyListUrl", e.target.value, [selectedTurnOption, "customDHTProxy"] ); diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js index f479737ca87097bc4b4234df5294c71c0d8d150a..86e9ff85f17f5c451760118f606857f4801425c0 100644 --- a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js +++ b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js @@ -94,11 +94,9 @@ export default function EditBlueprintPermissions(props) { const history = useHistory(); const [videoEnabled, setVideoEnabled] = React.useState(true); - const [allowPeersFromContact, setAllowPeersFromContact] = React.useState( - true - ); + const [allowCertFromContact, setallowCertFromContact] = React.useState(true); const [autoAnswer, setAutoAnswer] = React.useState(false); - const [accountPeerDiscovery, setAccountPeerDiscovery] = React.useState(true); + const [peerDiscovery, setpeerDiscovery] = React.useState(true); const [rendezVous, setRendezVous] = React.useState(false); const [upnpEnabled, setUpnpEnabled] = React.useState(true); @@ -108,9 +106,7 @@ export default function EditBlueprintPermissions(props) { const [turnServerPassword, setTurnServerPassword] = React.useState("ring"); const [proxyEnabled, setProxyEnabled] = React.useState(false); const [proxyServer, setProxyServer] = React.useState("dhtproxy.jami.net"); - const [accountDhtProxyListUrl, setAccountDhtProxyListUrl] = React.useState( - "" - ); + const [dhtProxyListUrl, setdhtProxyListUrl] = React.useState(""); const [open, setOpen] = React.useState(false); const [message, setMessage] = React.useState(false); @@ -128,9 +124,9 @@ export default function EditBlueprintPermissions(props) { .then((response) => { let policyData = JSON.parse(response.data.policyData); setVideoEnabled(policyData["videoEnabled"]); - setAllowPeersFromContact(policyData["allowPeersFromContact"]); + setallowCertFromContact(policyData["allowCertFromContact"]); setAutoAnswer(policyData["autoAnswer"]); - setAccountPeerDiscovery(policyData["Account.peerDiscovery"]); + setpeerDiscovery(policyData["peerDiscovery"]); setRendezVous(policyData["rendezVous"]); setUpnpEnabled(policyData["upnpEnabled"]); @@ -140,7 +136,7 @@ export default function EditBlueprintPermissions(props) { setTurnServerPassword(policyData["turnServerPassword"]); setProxyEnabled(policyData["proxyEnabled"]); setProxyServer(policyData["proxyServer"]); - setAccountDhtProxyListUrl(policyData["Account.dhtProxyListUrl"]); + setdhtProxyListUrl(policyData["Account.dhtProxyListUrl"]); }) .catch((error) => { console.log( @@ -155,13 +151,13 @@ export default function EditBlueprintPermissions(props) { const handleUpdatePermissions = (field, value) => { let data = { videoEnabled: videoEnabled, - allowPeersFromContact: allowPeersFromContact, - allowPeersFromHistory: allowPeersFromContact, - allowPeersFromTrusted: allowPeersFromContact, + allowCertFromContact: allowCertFromContact, + allowCertFromHistory: allowCertFromContact, + allowCertFromTrusted: allowCertFromContact, autoAnswer: autoAnswer, - "Account.peerDiscovery": accountPeerDiscovery, - "Account.accountDiscovery": accountPeerDiscovery, - "Account.accountPublish": accountPeerDiscovery, + peerDiscovery: peerDiscovery, + accountDiscovery: peerDiscovery, + accountPublish: peerDiscovery, rendezVous: rendezVous, upnpEnabled: upnpEnabled, turnEnabled: turnEnabled, @@ -170,17 +166,17 @@ export default function EditBlueprintPermissions(props) { turnServerPassword: turnServerPassword, proxyEnabled: proxyEnabled, proxyServer: proxyServer, - "Account.dhtProxyListUrl": accountDhtProxyListUrl, + dhtProxyListUrl: dhtProxyListUrl, }; - if (field === "allowPeersFromContact") { - data["allowPeersFromContact"] = value; - data["allowPeersFromHistory"] = value; - data["allowPeersFromTrusted"] = value; - } else if (field === "accountPeerDiscovery") { - data["Account.peerDiscovery"] = value; - data["Account.accountDiscovery"] = value; - data["Account.accountPublish"] = value; + if (field === "allowCertFromContact") { + data.allowCertFromContact = value; + data.allowCertFromHistory = value; + data.allowCertFromTrusted = value; + } else if (field === "peerDiscovery") { + data.peerDiscovery = value; + data.accountDiscovery = value; + data.accountPublish = value; } else { data[field] = value; } @@ -195,7 +191,7 @@ export default function EditBlueprintPermissions(props) { if (proxyEnabled == undefined) { delete data.proxyEnabled; delete data.proxyServer; - delete data["Account.dhtProxyListUrl"]; + delete data.dhtProxyListUrl; } axios( @@ -274,16 +270,16 @@ export default function EditBlueprintPermissions(props) { <FormControlLabel control={ <Checkbox - checked={allowPeersFromContact} + checked={allowCertFromContact} color="primary" onChange={(e) => { - setAllowPeersFromContact(e.target.checked); + setallowCertFromContact(e.target.checked); handleUpdatePermissions( - "allowPeersFromContact", + "allowCertFromContact", e.target.checked ); }} - name="allowPeersFromContact" + name="allowCertFromContact" /> } label="Allow incomming calls from unknown contacts" @@ -312,16 +308,16 @@ export default function EditBlueprintPermissions(props) { <FormControlLabel control={ <Checkbox - checked={accountPeerDiscovery} + checked={peerDiscovery} color="primary" onChange={(e) => { - setAccountPeerDiscovery(e.target.checked); + setpeerDiscovery(e.target.checked); handleUpdatePermissions( - "accountPeerDiscovery", + "peerDiscovery", e.target.checked ); }} - name="accountPeerDiscovery" + name="peerDiscovery" /> } label="Allow use of Jami in a local lan" diff --git a/jams-react-client/src/views/Blueprints/Blueprints.js b/jams-react-client/src/views/Blueprints/Blueprints.js index d3bae49376e6e22f2893a58565a6e851ed9d6251..f5c973f45913dae9e34cdc572b418ffceacd3bc1 100644 --- a/jams-react-client/src/views/Blueprints/Blueprints.js +++ b/jams-react-client/src/views/Blueprints/Blueprints.js @@ -172,8 +172,12 @@ export default function Blueprints() { let defaultPolicyData = { videoEnabled: true, allowPeersFromContact: true, + allowPeersFromHistory: true, + allowPeersFromTrusted: true, autoAnswer: false, - accountPeerDiscovery: true, + "Account.peerDiscovery": true, + "Account.accountDiscovery": true, + "Account.accountPublish": true, rendezVous: false, upnpEnabled: true, }; diff --git a/jams-server/pom.xml b/jams-server/pom.xml index c5ec791315b64db5c5645d3746781dc29a546e35..c0df945e47d480f2f2ef4fc1c078127ea02195fc 100644 --- a/jams-server/pom.xml +++ b/jams-server/pom.xml @@ -89,6 +89,11 @@ <artifactId>json</artifactId> <version>20190722</version> </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.8.6</version> + </dependency> </dependencies> <build> diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java index b9e0e5eeb4e17a96736129870674b99bc1f82d15..317a6637ffe559eda0f1e66433fb3cc96c29b621 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java @@ -30,6 +30,7 @@ import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.objects.devices.Device; import net.jami.jams.common.objects.requests.DeviceRegistrationRequest; import net.jami.jams.common.objects.responses.DeviceRegistrationResponse; +import net.jami.jams.common.objects.user.Group; import net.jami.jams.common.objects.user.Policy; import net.jami.jams.common.objects.user.PolicyData; import net.jami.jams.common.objects.user.User; @@ -72,14 +73,24 @@ public class RegisterDeviceFlow { DeviceRegistrationResponse response = new DeviceRegistrationResponse(); if(userProfile.getGroupMemberships() != null) { userProfile.getGroupMemberships().forEach(e -> { - StatementElement st = new StatementElement("name", "=", e, ""); - StatementList statementList1 = new StatementList(); - statementList1.addStatement(st); - try { - Policy policy = dataStore.getPolicyDao().getObjects(statementList1).get(0); - response.setPolicyData(policy.getPolicyData()); - } catch (Exception e1) { - log.warn("No policy available for user - not adding a policy component to response"); + if (!e.equals("")) { + StatementElement st = new StatementElement("name", "=", e, ""); + StatementList statementList1 = new StatementList(); + statementList1.addStatement(st); + + Group group = dataStore.getGroupDao().getObjects(statementList1).get(0); + String policyName = group.getBlueprint(); + if(group != null && policyName != null){ + StatementElement st2 = new StatementElement("name", "=", policyName, ""); + StatementList statementList2 = new StatementList(); + statementList2.addStatement((st2)); + try { + Policy policy = dataStore.getPolicyDao().getObjects(statementList2).get(0); + response.setPolicyData(policy.getPolicyData()); + } catch (Exception e1) { + log.warn("No policy available for user - not adding a policy component to response"); + } + } } }); } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java index 02c4bf65f0d5a32761ae245a45bcdbfe5edb0d43..f05bd2f55722d4ab1b7cefa067140c8f53b7d8b6 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java @@ -1,27 +1,29 @@ /* -* Copyright (C) 2020 by Savoir-faire Linux -* Authors: William Enright <william.enright@savoirfairelinux.com> -* Ndeye Anna Ndiaye <anna.ndiaye@savoirfairelinux.com> -* Johnny Flores <johnny.flores@savoirfairelinux.com> -* Mohammed Raza <mohammed.raza@savoirfairelinux.com> -* Felix Sidokhine <felix.sidokhine@savoirfairelinux.com> -* -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <https://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2020 by Savoir-faire Linux + * Authors: William Enright <william.enright@savoirfairelinux.com> + * Ndeye Anna Ndiaye <anna.ndiaye@savoirfairelinux.com> + * Johnny Flores <johnny.flores@savoirfairelinux.com> + * Mohammed Raza <mohammed.raza@savoirfairelinux.com> + * Felix Sidokhine <felix.sidokhine@savoirfairelinux.com> + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ package net.jami.jams.server.servlets.api.auth.device; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; import com.jsoniter.JsonIterator; import com.jsoniter.output.JsonStream; import jakarta.servlet.ServletException; @@ -41,6 +43,8 @@ import net.jami.jams.common.serialization.tomcat.TomcatCustomErrorHandler; import net.jami.jams.server.core.workflows.RegisterDeviceFlow; import net.jami.jams.server.core.workflows.RevokeDeviceFlow; +import com.google.gson.Gson; + import java.io.IOException; import static net.jami.jams.server.Server.certificateAuthority; @@ -113,10 +117,89 @@ public class DeviceServlet extends HttpServlet { */ @Override @ScopedServletMethod(securityGroups = {AccessLevel.USER}) - protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { DeviceRegistrationRequest request = JsonIterator.deserialize(req.getInputStream().readAllBytes(), DeviceRegistrationRequest.class); DeviceRegistrationResponse devResponse = RegisterDeviceFlow.registerDevice(req.getAttribute("username").toString(),request); - if(devResponse != null) resp.getOutputStream().write(JsonStream.serialize(devResponse).getBytes()); + if(devResponse != null) { + Gson gson = new Gson(); + String filteredJson = gson.toJson(devResponse); + JsonObject obj = gson.fromJson(filteredJson, JsonObject.class); + + if (obj.get("videoEnabled") != null) { + obj.add("Account.videoEnabled", obj.get("videoEnabled")); + obj.remove("videoEnabled"); + } + + if (obj.get("allowCertFromContact") != null) { + obj.add("Account.allowCertFromContact", obj.get("allowCertFromContact")); + obj.remove("allowCertFromContact"); + } + if (obj.get("allowCertFromHistory") != null) { + obj.add("Account.allowCertFromHistory", obj.get("allowCertFromHistory")); + obj.remove("allowCertFromHistory"); + } + if (obj.get("allowCertFromTrusted") != null) { + obj.add("Account.allowCertFromTrusted", obj.get("allowCertFromTrusted")); + obj.remove("allowCertFromTrusted"); + } + + if (obj.get("autoAnswer") != null) { + obj.add("Account.autoAnswer", obj.get("autoAnswer")); + obj.remove("autoAnswer"); + } + if (obj.get("peerDiscovery") != null) { + obj.add("Account.peerDiscovery", obj.get("peerDiscovery")); + obj.remove("peerDiscovery"); + } + if (obj.get("accountDiscovery") != null) { + obj.add("Account.accountDiscovery", obj.get("accountDiscovery")); + obj.remove("accountDiscovery"); + } + if (obj.get("accountPublish") != null) { + obj.add("Account.accountPublish", obj.get("accountPublish")); + obj.remove("accountPublish"); + } + + if (obj.get("rendezVous") != null) { + obj.add("Account.rendezVous", obj.get("rendezVous")); + obj.remove("rendezVous"); + } + if (obj.get("upnpEnabled") != null) { + obj.add("Account.upnpEnabled", obj.get("upnpEnabled")); + obj.remove("upnpEnabled"); + } + + if (obj.get("turnEnabled") != null) { + obj.add("TURN.enable", obj.get("turnEnabled")); + obj.remove("turnEnabled"); + } + if (obj.get("turnServer") != null) { + obj.add("TURN.server", obj.get("turnServer")); + obj.remove("turnServer"); + } + if (obj.get("turnServerUserName") != null) { + obj.add("TURN.username", obj.get("turnServerUserName")); + obj.remove("turnServerUserName"); + } + if (obj.get("turnServerPassword") != null) { + obj.add("TURN.password", obj.get("turnServerPassword")); + obj.remove("turnServerPassword"); + } + + if (obj.get("proxyEnabled") != null) { + obj.add("Account.proxyEnabled", obj.get("proxyEnabled")); + obj.remove("proxyEnabled"); + } + if (obj.get("proxyServer") != null) { + obj.add("Account.proxyServer", obj.get("proxyServer")); + obj.remove("proxyServer"); + } + if (obj.get("dhtProxyListUrl") != null) { + obj.add("Account.dhtProxyListUrl", obj.get("dhtProxyListUrl")); + obj.remove("dhtProxyListUrl"); + } + resp.getOutputStream().write((obj.toString()).getBytes()); + } else TomcatCustomErrorHandler.sendCustomError(resp,500,"could not enroll a device due to server-side error"); } @@ -169,7 +252,7 @@ public class DeviceServlet extends HttpServlet { StatementElement statementElement = new StatementElement("owner","=",req.getAttribute("username").toString(),""); statementList.addStatement(statementElement); if(dataStore.getDeviceDao().getObjects(statementList).stream().filter(device -> - device.getDeviceId().equals(deviceId)).count() == 0){ + device.getDeviceId().equals(deviceId)).count() == 0){ TomcatCustomErrorHandler.sendCustomError(resp,403,"You do not have sufficient rights to revoke this device!"); return; }