<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Preventing sharing of commercial GDL objects in GDL</title>
    <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/704992#M8506</link>
    <description>&lt;P&gt;The GDL add-ons are formally&amp;nbsp;&lt;A href="https://community.graphisoft.com/t5/Archicad-C-API/GDL-DevKit-Update/td-p/578807#:~:text=GDL%20add%2Don%2E%20We%20started%20to%20phase%20that%20out" target="_self"&gt;discontinued&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/runxel/archicad-gdl-addon/" target="_blank" rel="noopener"&gt;I wrote&lt;/A&gt; about how to make one a long time ago along with a template. But I'm pretty sure that will not compile anymore for newer versions.&lt;/P&gt;
&lt;P&gt;I think that the "modern" way is the other way around: You make an add-on that injects data into an object, instead of having the object requesting it. But for that type of convo&amp;nbsp;&lt;a href="https://community.graphisoft.com/t5/user/viewprofilepage/user-id/8527"&gt;@BerndSchwarzenbacher&lt;/a&gt;&amp;nbsp;is better equipped in knowledge.&lt;/P&gt;</description>
    <pubDate>Thu, 11 Jun 2026 09:46:11 GMT</pubDate>
    <dc:creator>runxel</dc:creator>
    <dc:date>2026-06-11T09:46:11Z</dc:date>
    <item>
      <title>Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703241#M8444</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-end="127" data-start="0"&gt;An author of a GDL object might want to sell it while also preventing buyers from sharing it with others. How is it done?&lt;/P&gt;
&lt;P data-end="242" data-start="129"&gt;A GDL object cannot make HTTP requests and, to my knowledge, does not have access to any crypto libraries.&lt;/P&gt;
&lt;P data-end="242" data-start="129"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-end="346" data-start="244"&gt;I have some ideas, but there may exist simpler solutions already:&lt;/P&gt;
&lt;P data-end="346" data-start="244"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-end="577" data-start="383"&gt;The GDL author creates a C++ Add-On and sets up a license server. The sole purpose of the Add-On is to communicate with the license server, since the GDL object itself cannot make HTTP requests.&lt;/P&gt;
&lt;P data-end="577" data-start="383"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-end="638" data-start="579"&gt;The flow:&lt;/P&gt;
&lt;OL data-end="1436" data-start="640"&gt;
&lt;LI data-end="735" data-start="640" data-section-id="1li3g3"&gt;A GDL object is placed, and the Add-On gets notified through &lt;CODE data-end="734" data-start="704"&gt;ACAPI_Notify_CatchNewElement&lt;/CODE&gt;.&lt;/LI&gt;
&lt;LI data-end="1103" data-start="737" data-section-id="1csepff"&gt;
&lt;P data-end="784" data-start="740"&gt;The Add-On queries the license server using:&lt;/P&gt;
&lt;UL data-end="875" data-start="788"&gt;
&lt;LI data-end="847" data-start="788" data-section-id="yv4rk2"&gt;a unique ID for the GDL object (essentially a product ID)&lt;/LI&gt;
&lt;LI data-end="875" data-start="851" data-section-id="pfh7ra"&gt;the Graphisoft user ID&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-end="1103" data-start="880"&gt;The server responds with a signed license (for example containing expiry date etc.). The important part is that the license is signed with the license server’s private key (for example using RSA).&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1188" data-start="1105" data-section-id="94iauo"&gt;The Add-On writes the license as a string parameter into the GDL object.&lt;/LI&gt;
&lt;LI data-end="1436" data-start="1190" data-section-id="1o1niw2"&gt;The GDL object verifies the license signature internally using the public key of the license server, validates the contents of the license, and disables itself (for example by not drawing any geometry) if the signature or contents are invalid.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-end="1567" data-start="1438"&gt;Since a GDL object can be password protected, a user would not be able to simply remove the license check from the script itself. And you cannot easily edit the GDL code outside of ArchiCAD either.&lt;/P&gt;
&lt;P data-end="1591" data-start="1569"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-end="1591" data-start="1569"&gt;The problem is step 4.&lt;/P&gt;
&lt;P data-end="1741" data-start="1593"&gt;How would you realistically verify RSA signatures inside a GDL object? It does not seem very feasible to implement RSA verification manually in GDL.&lt;/P&gt;
&lt;P data-end="2066" data-start="1743"&gt;The simpler alternative would be to let the C++ Add-On perform the license validation and then simply write an &lt;CODE data-end="1864" data-start="1854"&gt;is_valid&lt;/CODE&gt; parameter into the GDL object. However, that seems insecure because someone could create a fake Add-On that just writes &lt;CODE data-end="2016" data-start="1999"&gt;is_valid = true&lt;/CODE&gt; without checking any license.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier" color="grey"&gt;Operating system used: &lt;EM&gt;Windows &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2026 16:09:51 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703241#M8444</guid>
      <dc:creator>BenjiDev</dc:creator>
      <dc:date>2026-05-20T16:09:51Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703271#M8445</link>
      <description>&lt;P&gt;TBH, I've never made enough $ from selling my objects to care much about who's sharing them. In fact, when a firm pays me to build a custom template, I often just load the embeded library with a bunch of the more useful objects.&lt;BR /&gt;I think you'd need to get into an add-on/plug-in that ties to a given GS license/GSID... similar to cadimage. Maybe buy a c/i seat and reverse engineer how they did it?&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2026 21:57:00 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703271#M8445</guid>
      <dc:creator>Patrick M</dc:creator>
      <dc:date>2026-05-20T21:57:00Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703274#M8446</link>
      <description>&lt;P&gt;&lt;A href="https://community.graphisoft.com/t5/GDL/Cloud-Licensing-and-GDL/m-p/589158#M6356" target="_blank" rel="noopener"&gt;https://community.graphisoft.com/t5/GDL/Cloud-Licensing-and-GDL/m-p/589158#M6356&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can request the &lt;EM&gt;UserID &amp;amp;&lt;/EM&gt;&amp;nbsp;&lt;EM&gt;OrganisationID&lt;/EM&gt; so you can just hardcode in a check value against one of those. I think Ben's library has a seperate licencing object which all of the others reference that contains this check as well as an expiry date.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ling.&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2026 01:45:47 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703274#M8446</guid>
      <dc:creator>Lingwisyer</dc:creator>
      <dc:date>2026-05-21T01:45:47Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703495#M8459</link>
      <description>&lt;P&gt;Thanks for the link, that looks like a good and simple solution. If i understand it when a user makes a purchase you encode that user id into the GDL object? I wonder if it is possible to automate.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And if you want a recurring subscription model using only a GDL object the user would have to manually renew it after expiry date?&lt;/P&gt;</description>
      <pubDate>Sat, 23 May 2026 16:54:00 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703495#M8459</guid>
      <dc:creator>BenjiDev</dc:creator>
      <dc:date>2026-05-23T16:54:00Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703496#M8460</link>
      <description>&lt;P&gt;Thanks for the tip, at least if you want automated recurring subscription model you probably need an Add-On to make web requests to a license server.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And I'm not 100% sure but I think GDL datetime uses the system clock which can be changed by the user. If that is the case then using it for expiry checking might not be suitable.&lt;/P&gt;</description>
      <pubDate>Sat, 23 May 2026 17:03:10 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/703496#M8460</guid>
      <dc:creator>BenjiDev</dc:creator>
      <dc:date>2026-05-23T17:03:10Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/704848#M8503</link>
      <description>&lt;P&gt;The drawback is that the&amp;nbsp;&lt;EM&gt;OrganisationID&lt;/EM&gt;&amp;nbsp;which is better in such cases will load all organizations that the user is a guest, so there can be cases where the object will work for the "guest", and it is impossible to lock parameters with this request, as it was with old "req" command.&lt;/P&gt;</description>
      <pubDate>Wed, 10 Jun 2026 11:57:16 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/704848#M8503</guid>
      <dc:creator>Piotr Dobrowolski</dc:creator>
      <dc:date>2026-06-10T11:57:16Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/704964#M8505</link>
      <description>&lt;P&gt;Before you could make specific GDL add-ons in C++:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://archicadapi.graphisoft.com/downloads/gdl-development-kit" target="_blank" rel="noopener"&gt;https://archicadapi.graphisoft.com/downloads/gdl-development-kit&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;So you could maybe have created a GDL add-on for license checking (using a C++ RSA library) with the public key of the license server embedded.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Perhaps you could even have created a GDL-addon that made web requests.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But looks like they don't work for AC versions above 23:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BenjiDev_1-1781164259430.png" style="width: 772px;"&gt;&lt;img src="https://community.graphisoft.com/t5/image/serverpage/image-id/102004i306AE73B8B8BBE57/image-dimensions/772x234?v=v2" width="772" height="234" role="button" title="BenjiDev_1-1781164259430.png" alt="BenjiDev_1-1781164259430.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://community.graphisoft.com/t5/Archicad-C-API/Why-there-is-no-forward-version-of-GDL-Development-Kit/td-p/687639" target="_blank" rel="noopener"&gt;https://community.graphisoft.com/t5/Archicad-C-API/Why-there-is-no-forward-version-of-GDL-Development-Kit/td-p/687639&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I cannot find much information about it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And I'm not sure if it would be more secure/better compared to a normal C++ Add-On because the GDL Add-On could perhaps also be replaced.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 11 Jun 2026 08:02:13 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/704964#M8505</guid>
      <dc:creator>BenjiDev</dc:creator>
      <dc:date>2026-06-11T08:02:13Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/704992#M8506</link>
      <description>&lt;P&gt;The GDL add-ons are formally&amp;nbsp;&lt;A href="https://community.graphisoft.com/t5/Archicad-C-API/GDL-DevKit-Update/td-p/578807#:~:text=GDL%20add%2Don%2E%20We%20started%20to%20phase%20that%20out" target="_self"&gt;discontinued&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/runxel/archicad-gdl-addon/" target="_blank" rel="noopener"&gt;I wrote&lt;/A&gt; about how to make one a long time ago along with a template. But I'm pretty sure that will not compile anymore for newer versions.&lt;/P&gt;
&lt;P&gt;I think that the "modern" way is the other way around: You make an add-on that injects data into an object, instead of having the object requesting it. But for that type of convo&amp;nbsp;&lt;a href="https://community.graphisoft.com/t5/user/viewprofilepage/user-id/8527"&gt;@BerndSchwarzenbacher&lt;/a&gt;&amp;nbsp;is better equipped in knowledge.&lt;/P&gt;</description>
      <pubDate>Thu, 11 Jun 2026 09:46:11 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/704992#M8506</guid>
      <dc:creator>runxel</dc:creator>
      <dc:date>2026-06-11T09:46:11Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/704996#M8507</link>
      <description>&lt;P&gt;Thanks for the links and context.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Alright, yes I know you can inject data through parameters. But it feels complicated for a license as there are no crypto functions in GDL. A "license checker" Add-On could do the license check and write "is_valid=true" to a parameter but that could be written by a fake Add-On too. This parameter could be hidden/obfuscated of course. But this requires an Add-On that exists purely to verify licenses...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Encoding the customers GSID into to GDL object maybe is the best solution, what&amp;nbsp;&lt;SPAN&gt;&lt;SPAN class="UserName lia-user-name lia-user-rank-Guru lia-component-message-view-widget-author-username"&gt;&lt;A id="link_19" class="lia-link-navigation lia-page-link lia-user-name-link" href="https://community.graphisoft.com/t5/user/viewprofilepage/user-id/11140" target="_blank" rel="noopener" aria-label="View Profile of Lingwisyer"&gt;&lt;SPAN class=""&gt;Lingwisyer&lt;/SPAN&gt;&lt;/A&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;mentioned. Perhaps it could be automated with the converter tool&amp;nbsp;&amp;nbsp;&lt;A href="https://gdl.graphisoft.com/tips-and-tricks/how-to-use-the-lp_xmlconverter-tool/" target="_blank" rel="noopener"&gt;https://gdl.graphisoft.com/tips-and-tricks/how-to-use-the-lp_xmlconverter-tool/&lt;/A&gt;&amp;nbsp;by keeping the GDL source as XML and inserting the customer GSID on the correct line, and converting it back to .gsm before sending it to the customer, no C++ Add-On needed. I have not tried it so I'm not sure the tool works like that though, especially if the GDL object is password protected.&lt;/P&gt;</description>
      <pubDate>Thu, 11 Jun 2026 12:42:23 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/704996#M8507</guid>
      <dc:creator>BenjiDev</dc:creator>
      <dc:date>2026-06-11T12:42:23Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705005#M8508</link>
      <description>&lt;P&gt;Making a central macro that checks for the correct ID is exactly what I would do honestly. The only tricky part would be an automatic generation of that object. Otherwise your customer needs to wait for you to make it.&lt;/P&gt;</description>
      <pubDate>Thu, 11 Jun 2026 14:07:47 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705005#M8508</guid>
      <dc:creator>runxel</dc:creator>
      <dc:date>2026-06-11T14:07:47Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705046#M8509</link>
      <description>&lt;P&gt;Do you manually create it&amp;nbsp;&lt;a href="https://community.graphisoft.com/t5/user/viewprofilepage/user-id/7446"&gt;@Ben Cohen&lt;/a&gt;&amp;nbsp;, or do you have some automated way?&lt;/P&gt;</description>
      <pubDate>Fri, 12 Jun 2026 01:13:08 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705046#M8509</guid>
      <dc:creator>Lingwisyer</dc:creator>
      <dc:date>2026-06-12T01:13:08Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705095#M8510</link>
      <description>&lt;P&gt;I'd be careful with using a macro object for this. I think a "malicious" user could easily replace the macro with their own and just unlock all your objects.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Jun 2026 11:52:39 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705095#M8510</guid>
      <dc:creator>BerndSchwarzenbacher</dc:creator>
      <dc:date>2026-06-12T11:52:39Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705101#M8511</link>
      <description>&lt;P&gt;I know, but what would be the alternative?&lt;/P&gt;
&lt;P&gt;I clearly would not like the overhead to have every object doing it's own validation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Actually, thinking about this a bit longer: An additional secret that's returned as well and validated in the object might do the trick.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Jun 2026 12:39:21 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705101#M8511</guid>
      <dc:creator>runxel</dc:creator>
      <dc:date>2026-06-12T12:39:21Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705119#M8513</link>
      <description>&lt;P&gt;Yeah it's very annoying to add that code part to every single object and basically have to recompile the whole library for each customer.&lt;BR /&gt;&lt;BR /&gt;I also thought about additional secrets, but I always failed to actually make it work. Every way I can think about, it's always relatively easy to replace either the object or the macro and get to the secret this way.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Jun 2026 18:16:18 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705119#M8513</guid>
      <dc:creator>BerndSchwarzenbacher</dc:creator>
      <dc:date>2026-06-12T18:16:18Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705202#M8519</link>
      <description>&lt;P&gt;Even if either gets duped, would not the actor would be required to know what is being requested in order to fish the secret?&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2026 02:16:30 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705202#M8519</guid>
      <dc:creator>Lingwisyer</dc:creator>
      <dc:date>2026-06-15T02:16:30Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705221#M8520</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://community.graphisoft.com/t5/user/viewprofilepage/user-id/11140"&gt;@Lingwisyer&lt;/a&gt;&amp;nbsp; schrieb:&lt;BR /&gt;
&lt;P&gt;Even if either gets duped, would not the actor would be required to know what is being requested in order to fish the secret?&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I think so too. One would need to know the order and the contents of the returns. That's a bit far fetched imho.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2026 08:13:04 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705221#M8520</guid>
      <dc:creator>runxel</dc:creator>
      <dc:date>2026-06-15T08:13:04Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705226#M8521</link>
      <description>&lt;P&gt;Regarding licensing macro...it can be kind of safe if the "on/off" switch was not on the parameters list, but in "returned_parameters" - as it cannot be sniffed with schedule setup.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2026 09:34:03 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705226#M8521</guid>
      <dc:creator>Piotr Dobrowolski</dc:creator>
      <dc:date>2026-06-15T09:34:03Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing sharing of commercial GDL objects</title>
      <link>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705274#M8522</link>
      <description>&lt;P&gt;Like Lucas suggests - macro works - I tested this quite a bit. You could solve it with a "worker" mac or PC that polls every x minutes. If an order comes through it can insert company ID to xml and convert to password protected gsm. Then upload somewhere where you serve download link to customer.&lt;BR /&gt;Also&amp;nbsp;&lt;a href="https://community.graphisoft.com/t5/user/viewprofilepage/user-id/8527"&gt;@BerndSchwarzenbacher&lt;/a&gt;&amp;nbsp;- highly recommend for anything add-on related.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2026 13:42:46 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/Preventing-sharing-of-commercial-GDL-objects/m-p/705274#M8522</guid>
      <dc:creator>Davor P</dc:creator>
      <dc:date>2026-06-15T13:42:46Z</dc:date>
    </item>
  </channel>
</rss>

