HISE Logo Forum
    • Categories
    • Register
    • Login

    Woocommerce linked licensing system for your plugins

    Scheduled Pinned Locked Moved General Questions
    91 Posts 14 Posters 17.4k 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('""');

      Free HISE Bootcamp Full Course for beginners.
      YouTube Channel - Public HISE tutorials
      My Patreon - 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.

              Free HISE Bootcamp Full Course for beginners.
              YouTube Channel - Public HISE tutorials
              My Patreon - 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) 😂

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

                      Free HISE Bootcamp Full Course for beginners.
                      YouTube Channel - Public HISE tutorials
                      My Patreon - 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.

                          Free HISE Bootcamp Full Course for beginners.
                          YouTube Channel - Public HISE tutorials
                          My Patreon - 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.

                                Free HISE Bootcamp Full Course for beginners.
                                YouTube Channel - Public HISE tutorials
                                My Patreon - 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 🙏
                                    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

                                            Free HISE Bootcamp Full Course for beginners.
                                            YouTube Channel - Public HISE tutorials
                                            My Patreon - HISE tutorials

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

                                            22

                                            Online

                                            2.0k

                                            Users

                                            12.7k

                                            Topics

                                            110.5k

                                            Posts