HISE Logo Forum
    • Categories
    • Register
    • Login

    Woocommerce linked licensing system for your plugins

    Scheduled Pinned Locked Moved General Questions
    91 Posts 14 Posters 9.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • d.healeyD
      d.healey @Matt_SF
      last edited by

      @matt_sf Mystery solved. Look in your info.txt file, see those quotation marks? They're not part of your token are they :)

      Try

      local text = info.loadAsString().replace('""');

      Libre Wave - Freedom respecting instruments and effects
      My Patreon - HISE tutorials
      YouTube Channel - Public HISE tutorials

      Matt_SFM 2 Replies Last reply Reply Quote 4
      • Matt_SFM
        Matt_SF @d.healey
        last edited by

        @d-healey aaaarrh, I sensed they might be the cause of the error, I tried to use .replace but didn't write it correctly.
        Thanks a lot David, as always you're here to save the day 👍

        1 Reply Last reply Reply Quote 1
        • Matt_SFM
          Matt_SF @d.healey
          last edited by Matt_SF

          @d-healey I tried it this morning but no luck, the .replace function didn't work, I still ended up with the quotation marks...
          But I tried different things and ended up writing the whole response object (not just the token) to a file and load it as an object.value and it finally worked.

          HiseSnippet 1368.3ocsWs0aaaCElJIpnxadXEa6cA8jLVpuz10Mjhs45bYMnMod0oYaO0QKQGyFYRARp35FDf8Sa+j1+fsyQWrjcbRKLV8KQj7b467cNjmS5qjALsVpHVNmLKlQr9b6AyDlw6NlxEjC2iX8U1CXpKXpcoQQtWztYmlOjzaVLUqYgDKqM+ETPKmsHo+9metGMhJBXkaQHmJ4ArWvmvMk61u6y4QQGPCYmvmTQ5G08v.oXWYjLA.0l1sIwzfyomwNlhhsgMw5N6GxMR0.C0vzDqs5ICmMXrbpHS9S4Z9vHFtnCY.XnrsOPFEhHF2kr6XdTX+hfWS.qzujJ1LiJ9Z6i3g746WRIeY5AtkZTkOr1XQ3s4BvqSU30tB7VAjrp.osxfz8rGDn3wlxSP77Y1GJLL0HJP6UgRlrjM5dG6ckfDBSyIzyYGnfEy0v+wsaus6CZ2twSpWqdMf70F2KnJ2ngQuVyTBf2c+Q2BCbFyrqbRrT.K78pHiGp+BZ2G.xToJ71ztPFuLuqXm4l.FDTohoQ078Lr2YRECEBCxLgJrvRBUfElHPMK1vkhmylAZz4AO7QyAZHSetQFCae.OhMXl1vlf1IsVQ4WYy8xjrLF4hQRPubKjFXXBDUw2COroYNRxt.0TyL8nZ1qe0K78FaLw5cZ0RKSDgi3hyXJcy.4DukyB.3pW6x50b7RJH5cRonscwMiK3ucRoj50tJUetHhKXtiRDAXn6JE8LhALQHlHTxH+fhrv1fWhRXMxbRjLfB2xg.ynvZCESChoYMdhK7CsrCejqegJNW5l+C91IOLAKD8aby39ubvI9dslFe+2pkhVucp49zDy3VWzokQdNS3ssa71ygnuFtujn21ctKcqXa7OWN+KHHzxHVyXEGKidUtFt63549sKibjPS0xIMqLUwMrWN7sr.SknqPjkb4UEwsyUEL6pqjGlwtdMvjbNGiOXNDd6xeYxuwSRszpxRfcNko3il8AxSKlDPxOKygk+PxKMRijzvmpyC0zPrPHj8wTLHbyzEoGtDqdRpT4TJ98bVprb9YPU7yXT7th2SgbqTweOECkcb6wnJ3d7BZun9er0Isf.kGBOlBELdd2VESQghS9GWuVIq1HSwxJiaRtqWCcU5We3hgrj3MUNrbVtQd8PkBgikPUpvuQsKq4T6pZtKeznQq7rbCFAIjUcL1pUcaJ5KRlLDeaIq3pPPn+yhM0ru4lZU64FjwOUDTJNTvMuLlItoNwjbREa.liJPTSZ6uuHu8WuDiQJH7Pr22b1jjB5pCdPd8g6QMzBSAVE7TLSY3XPXsG6BXvjrNqN14OwCw57bILqwM5XG67K8j2U5x+n6r4K59mc0zKXGJ5C0QLSFiv0GIm.VlplUP.kN6tYNqdtydAcHKJ0W0sqzMrp+Nth+H60EuQiivoG0DRSll.KOkGZFWJCu6XF+rwUFD6m5NBnlA72Wg4Z2sJrbtUXUz+8lf0e8q4v5arKD8D.aOMH.Z8YVW7ktmYFVxUatcWfLuyGUISIn+6oKl6x.8csyE75ItqOcFLWnLLIhZVbXQbB47CfKaKLgFNElPyMypNA8+aSP9wBw6Y2maBFuZLtwJvHbg5SAFym6tt89iFAMsJA3V1G76eZFxl7JYhAF+5HpQwghA6iSlL.9WOBXf2EBVD9Xm0F3yRYqaiqQF.u5mt3ege4G1AWakeXmhCISnAJ4aBxdLCmr+to6.XJ89L7TxQ3Z2NEufYa2tYaxD3ex3MAAX3eenda057f0PmGtF57n0PmuaMz4wqgNe+ZnyObq5f++cv.MxIYWGfM5ueZmDKq8ETnxJsJj7efpnPjI
          

          Edit : I tried just this little bit of code and the .replace function doesn't work as expected...? :

          const text = '"text"';
          
          Console.print(text.replace('""'));
          

          Console prints : "text"

          ulrikU d.healeyD 2 Replies Last reply Reply Quote 0
          • ulrikU
            ulrik @Matt_SF
            last edited by

            @matt_sf

            HiseSnippet 685.3ocsU0taSCCE0tsdhV9bR7.D0e0JMpZgw.oIDi0OfJXaUjwD+axywc0ZN1QNNiUg3cl2.35jrkVnTFQh7ijd+33bx8dt2NwnY73XsAgqe77HNBeOh+bkcV+YTgBMd.B+.xAzXK23k4Z+4Qz3Xd.Biq9VmCb8Znzqu+58oRphwKbgPmnEL9GDgBag2I68dgTNhFvOVDtP1au2XlV0WK0I.epR5hhnrKnmyOj5RqBAg2XXfvpM9VpkGiv01WGL2el9Kpr7OQDKNSxcF8P9vAk4djVF3XryKp+LgLXx0e2wH3TlTTEplUEdL4.Qf3F+EUiGkFvq.wh0CbkkoW0knWu+D8VAkvKPoZYTZShOyHhrEQb74tjwJn4LkBk8EoRVtnJODS5qgLT1NgzK3iLfwMHZsS2ta4A2ZuaiFPoO15Y4WY8dkWS2ylfW.brVx6DYDJaKm2NFdjzAtoKks7ZNi68NsbtWHkQgiWzrc6cmlnXVgV4oUGps7iTsZ23qMp23aM790PSmtxXNVazRI2rxvNkiYc.aoRBOia1x6RpLgeShP4b4dzF2tdDKqHtPhZ0XkvdTDO2d8hLTdW.90mFOfZotlbtOHuHtwJbzAOfeILwj0xqSFviuvpifYleSO.JQcPhjZWVd5lIyC.0ikzDt9tJVXmu3L6+fls6Z0r2VJtIYhvxlsZNVYEbDpT+O3X9j98ICmNkyrEDrFYzmK6X8e40+QchUnN+.p0HtBgIGlD5CK6Xb3sqTbIb3DbEmZIytqy1UA74pfTie.W4A64rw4A6ccPDLFZzmxxlBb6RtSpGfSpz0n0g84fsWOT5jAfizsSWTHrV6TFy84+DP.uZLOsDXdVIvrcIv77RfYmRf4Ek.yKWKF2+n7lDqNLab.bLYX5JBLdnhBJqTUH5mbvmDj.
            

            Hise Develop branch
            MacOs 15.3.1, Xcode 16.2
            http://musikboden.se

            1 Reply Last reply Reply Quote 0
            • d.healeyD
              d.healey @Matt_SF
              last edited by

              @matt_sf Console always shows quotation marks for strings. I tested the code before I suggested it to you with your snippet and it worked for me.

              Libre Wave - Freedom respecting instruments and effects
              My Patreon - HISE tutorials
              YouTube Channel - Public HISE tutorials

              Matt_SFM 2 Replies Last reply Reply Quote 0
              • Matt_SFM
                Matt_SF @d.healey
                last edited by Matt_SF

                @d-healey @ustk oh that's odd.

                @matt_sf said in Woocommerce linked licensing system for your plugins:

                const text = '"text"';

                Console.print(text.replace('""'));

                Ok in this example I put the "string" inside the simple quotes ' so that was my mistake.

                But If I use a txtFile.txt containing "Some text" (with the double quotes like I get when writing the response.tokeninto a file) and use this code:

                const desktop = FileSystem.getFolder(FileSystem.Desktop);
                const textFile = desktop.getChildFile("txtFile.txt");
                
                const test = "test";
                
                Console.print(test.replace('""'));
                Console.print(textFile.loadAsString().replace('""'));
                

                It doesn't work. The console output correctly testbut outputs "Some text"...

                HiseSnippet 741.3ocsU01aSCCD1tsdhVXHlD+.h5WVpznpEFCjlPrs9BpB1VEYLw2l7bbWslicThyXUH9yvuP9G.mSxVRGkxnRjOzz64tG6Ge9tKiizLdbrNBgqexrPNB+Hh2LkYZuoTgBMpOB+XxgzXCOxIC5fYgz3XtOBiq9NK.tdMT5yOd6ATIUw3EPHzoZAi+AQfvTfNdu2KjxgTe9IhfRQu8diXZUOsTm.5oJoCJjxtjdA+HpMrJDDdsA9BiNxyPM7XDt1AZ+YdS0eQkE+ohXw4Rt0nKxCVnL3gZouUwVTTuoBo+3aN2wHXUFWjEplkEdJ4Pgu3V7hrwSRc3Tvnb9.WYd4UcN408OIuEHIbIIUKSRaP7XQhPSgGqddHYjBtblPgzdYojEKpx2wjdZHBkoc.8R9vHv3VFt6zoyVNvOs1sQCH0Gab74wWZzgNuwYnPx8lA27AsufaRSgQtk.6mEYqcWOmpgesw5G3luJVhomMKraSSl+1v6lE6HjoL.kl12MATPtwZHpvHgx3ZQaGwCkV4tYyla1BXd2PxWWol5uermAPuvs0cYMIQwLBsxQqNRa3Gqba03qMp23aMbtqqISVnOahLRKkPdXQtsEyQKinqJI3bdzVNWQkI7aCDtgmurYs6WYCK6dsTfZ0HkvbbHO2d408n7BC3eeZTepgZq6xwf3B4QFgUN397qfl3rpv5j76cnM92JQglCsehjZluiwNlH2AjOlqL0VJphElYkGi7OzF0YosQ2WItAYrvvltXMVYAZDxT+OzX9vm0IClLgyLEBrFY3mW0IM+ks+i5DCzubHEZatFgIGkD3AyeYbX2UJtDVbBthsZIyti01lA73J+TieBO4N6Zsw4N6diST.kEoOik0EXGu8fTDPSpzI60gOw.1NcQocF.ORm1cPAvj1yXL6w+YPA7h477UfyKVANauBbd4JvYmUfyqVANudobreja+DiNHqc..FOHcDAFOPQgJqzpPzuvoOTjw
                

                The other answer would be that I'm totally losing It (which wouldn't be impossible) :face_with_tears_of_joy:

                1 Reply Last reply Reply Quote 0
                • Matt_SFM
                  Matt_SF @d.healey
                  last edited by

                  @d-healey said in Woocommerce linked licensing system for your plugins:

                  I tested the code before I suggested it to you with your snippet and it worked for me.

                  I thought so, that's why I was surprised it didn't work here....

                  orangeO 1 Reply Last reply Reply Quote 0
                  • orangeO
                    orange @Matt_SF
                    last edited by

                    @matt_sf

                    Try below snippet. By the way, why are you using replace? For removing spaces? If yes, you should use it like this: textFile.loadAsString().replace(" ", "")

                    HiseSnippet 738.3ocsU0taSCCE0tqAQKTDShGfn7qToQUJLFHgPrs9ApB1VEYLw+l7bbWslicThyXUHdt30h2.353rkrQ2zTkVpTS84dOtmb84dyzTEkkkoRQ3VGtHggvO0IbgTOevbBWhlLDgelydjLMK00Bs6hDRVFKBgwq8IC.tUSTw0e93tDAQRYUPHzQJNk8EdLWWgNc6OyEhwjH1g73ZYu41SnJ4.kPkC5YMm.TBgdF4T19DSZMbP3GMJhqUogZhlkgvM2UEsHbt5GRa9Gwy3mHXlE8QgvFYgGqDQFEaPQClyEQSu74NCA6xzppvZ1pvKb1iGwuBupZ77h.tULpWOvMtK40ut7Bt+xCWSdMsxacmPZJOQWEwnsm3LQBGTyHvQPcYYyE032XmNsGnfbj5dwjyXiSgEWwweqffMbgu599Ns6zFNJxztQrryzpD2O3NlKXgK.mPbuSY5BMm5WCbnMSCYKUM6BsINvsbWLDKd9Lv9dZa7dvcu5+mPsSCj7L28JvAQmofLSR4RsuAuWJKQXDsm2FtddcM7uYVkauPQh1IKTCnm52cYDselkKoZtR5pj6qzrCj9ca+y1sZ+q1t2LzrYKMlo1lpDBnvrrvF2d5cQzWlGeBKcC2yIhb1UIBG6W2W4b69p51dp8ntVhJ4DIWePBSdatMTo+.902lLjnIFCXIFjWBKUyMR.OjcNzYasisbJO7gd6+yqBcLpnbAQe81Hyrix.PM3Z9UiiTlw0KpOa4Ao259J20clx0z4KWuMVhdgp1CsdKmT0wYzrYLptRrMcF+8G9wRnupx0PG0dDnw5BvStedbHL3lx.kHkLgwmhaXbT10Al0lJSHSFUr3uvUYv9l03xf8uLHJlPSUGSscGlYgOt.Azjr3UBsf2MAqc6iJ5X.dNA8BPwvH5ioTSo3kf1WNmWsBbd8JvYyUfyaVANasBbd6Jv4c2IGyaG2IWqhssI.vzQEiQv3QRB3xJbjn+Q023zw
                    

                    develop Branch / XCode 13.1
                    macOS Monterey / M1 Max

                    d.healeyD 1 Reply Last reply Reply Quote 0
                    • d.healeyD
                      d.healey @orange
                      last edited by

                      @orange said in Woocommerce linked licensing system for your plugins:

                      For removing spaces?

                      No, we're removing quotation marks ""

                      Libre Wave - Freedom respecting instruments and effects
                      My Patreon - HISE tutorials
                      YouTube Channel - Public HISE tutorials

                      orangeO 1 Reply Last reply Reply Quote 1
                      • orangeO
                        orange @d.healey
                        last edited by orange

                        @d-healey said in Woocommerce linked licensing system for your plugins:

                        No, we're removing quotation marks ""

                        Why? I think there is no need to do that?

                        develop Branch / XCode 13.1
                        macOS Monterey / M1 Max

                        d.healeyD 1 Reply Last reply Reply Quote 0
                        • d.healeyD
                          d.healey @orange
                          last edited by

                          @orange When the token is written to the text file it adds quotation marks. These need to be removed before being added to the header.

                          Libre Wave - Freedom respecting instruments and effects
                          My Patreon - HISE tutorials
                          YouTube Channel - Public HISE tutorials

                          orangeO 1 Reply Last reply Reply Quote 0
                          • orangeO
                            orange @d.healey
                            last edited by orange

                            @d-healey Then substring can work here. This will extract the string between first and last chars.

                            exampleString.substring(1, exampleString.length-1);
                            

                            develop Branch / XCode 13.1
                            macOS Monterey / M1 Max

                            1 Reply Last reply Reply Quote 2
                            • Matt_SFM
                              Matt_SF
                              last edited by Matt_SF

                              @d-healey @orange so, .substring works but .replace doesn't...

                              29a554b7-59f9-4b77-a6dc-f81b80795ee0-image.png
                              (no matter if I write .replace("", "") or .replace('""', "") the result is the same).

                              By using this, I mananged to get it to work :

                              const info = desktop.getChildFile("info.txt");
                              
                              // Function getTheToken
                              info.writeObject(response);
                              
                              // Function verifyTheToken
                              local text = info.loadAsObject();
                              local token = text.token;
                              
                              Server.setHttpHeader("Authorization: Bearer " + token);
                              

                              Is there a preferred method between .loadAsObject() and .loadAsString for these kind of things or is there no difference ?

                              d.healeyD orangeO 2 Replies Last reply Reply Quote 0
                              • d.healeyD
                                d.healey @Matt_SF
                                last edited by

                                @matt_sf I use an encrypted object.

                                Libre Wave - Freedom respecting instruments and effects
                                My Patreon - HISE tutorials
                                YouTube Channel - Public HISE tutorials

                                1 Reply Last reply Reply Quote 1
                                • orangeO
                                  orange @Matt_SF
                                  last edited by orange

                                  @matt_sf said in Woocommerce linked licensing system for your plugins:

                                  Is there a preferred method between .loadAsObject() and .loadAsString for these kind of things or is there no difference ?

                                  I think objects would be better choice. Writing and Rreading encrypted objects is more secure way for that purpose. You can encrypt the file with a combination of complex pin and machine ID. Also you can change the encrypted file extension from .json to .dat or whatever you like.

                                  develop Branch / XCode 13.1
                                  macOS Monterey / M1 Max

                                  Matt_SFM 1 Reply Last reply Reply Quote 1
                                  • Matt_SFM
                                    Matt_SF @orange
                                    last edited by

                                    Noted ! Thank you @d-healey, @orange and @ustk for your help, I really appreciate :folded_hands:
                                    I'll probably be back soon with another issue :)

                                    1 Reply Last reply Reply Quote 0
                                    • ?
                                      A Former User
                                      last edited by

                                      @orange I am trying to make a similar thing like you did for license activation but as I see it's very very complicated to make the same licensing application in HISE. Much more harder than I think!

                                      As I also see you do analog modeling plugins too. It's very interesting that you do very very hard to implemet stuff directly in HISE :D For me, unbelievable and extraordinary, congrats dude!

                                      1 Reply Last reply Reply Quote 0
                                      • Matt_SFM
                                        Matt_SF
                                        last edited by

                                        This post is deleted!
                                        1 Reply Last reply Reply Quote 0
                                        • Matt_SFM
                                          Matt_SF
                                          last edited by

                                          Hey, it's me again ! I have a question regarding security :

                                          I'm into the process of "converting" my Kontakt instruments into VSTs and I'm using JWT Auth + the License manager plugin, but I just set up the license system so the customers who already purchased my Kontakt instruments don't have a serial number yet.

                                          In order to offer the smoothest user experience, my first tought of managing this was to implement an 'Auth + Register' system in the VST plugin which does this (roughly) :

                                          User enter Username & Password then use JWT to authenticate the user then :

                                          if (User owns the product)
                                          {
                                              if (User already have a serial)
                                              {
                                                  ServerCall.use License Manager endpoint to check the serial and authorize the plugin;
                                              }
                                              else if (User dont have a serial in his account)
                                              {
                                                  plugin.function(generateSerial);
                                          
                                                  ServerCall.use License Manager endpoint to create a serial number into User account and authorize the plugin;
                                              }
                                          }
                                          else
                                          {
                                              Dont unlock the plugin
                                          }
                                          

                                          But I'm concerned by automatically creating a serial with the License manager endpoint. Wouldn't it be a major security breach to let a plugin use this endpoint ? Technically it writes something in my DB....

                                          d.healeyD orangeO 2 Replies Last reply Reply Quote 0
                                          • d.healeyD
                                            d.healey @Matt_SF
                                            last edited by

                                            @matt_sf If it's an authorised request via jwt it shouldn't be anymore of a risk than doing the same thing through your website

                                            Libre Wave - Freedom respecting instruments and effects
                                            My Patreon - HISE tutorials
                                            YouTube Channel - Public HISE tutorials

                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            36

                                            Online

                                            1.7k

                                            Users

                                            11.9k

                                            Topics

                                            103.5k

                                            Posts