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.
    • 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
                                        • orangeO
                                          orange @Matt_SF
                                          last edited by orange

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

                                          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....

                                          I think you shouldn't use creating serial number endpoint, that could be a security hole like you said.

                                          What you can do is: upload/create "unregistered" serials into your Woocommerce License Manager admin area. While uploading the serials, you need to mark them as "unregistered".

                                          Then the user needs to enter the exact serial number to register it. This way would be more secure because if the entered serial is not in your "unregistered serials list", then the license activation can't be done. You can also use this system for the resellers too. You can give unregistered serials to the resellers to sell them, then the users will need to register the code into their account.

                                          But giving a right to create a serial number is a different story and this might be a security issue.

                                          develop Branch / XCode 13.1
                                          macOS Monterey / M1 Max

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

                                            @orange @d-healey thanks for your answers. My problem was to at least assign thoses licenses - if not send them - to existing customers (there are about 300-400 of them so doing it manually was not an option 😅).

                                            But I just thought that it shouldn't be a problem to upload a bunch of unregistered licences and, instead of creating one via the plugin, just get one and activate it (I should have thought of that).

                                            Thank you ! 🙏

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

                                            36

                                            Online

                                            1.7k

                                            Users

                                            11.9k

                                            Topics

                                            103.5k

                                            Posts