HISE Logo Forum
    • Categories
    • Register
    • Login

    Woocommerce linked licensing system for your plugins

    Scheduled Pinned Locked Moved General Questions
    91 Posts 14 Posters 16.3k 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

      @d-healey ... sorry it was a generic snippet, here I put some test credentials :

      HiseSnippet 1361.3ocsWs0aaaCElJIJnxadXEa6cA8jLVpuz10Mjhs45bYMnMIdwIoaO0QKQGyFYRARp35FDf8Sa+j1+fsCE0M65jEXrpWRH44x246bHOG2WvCHRIWfrbNcVLAY841ClwTi2YLlxPGrKx5qrGPDWQD6fihbupcyNMeBp2rXrTRBQVVq+KZAsb1.k982+bObDlEPJ2BgNmSCHulNgpJ2se2WQih1GGRNkNohzOs6AAb1N7HdB.p0saihwAWhufbDVK1Z1HqM2Kjp3hAJrhHQVaziGNavX9TlQ9yoR5vHhdQGz.vPls2mGEpQrdWzNioQg8yCdIBrR+RpXcCU701GRCoE6WRIeY5AtkZTkOrVad3s9bvqSU30tB7VBjrp.oMLP5g1CBDzXU4IZ77Y1GvTDwHLP6UghQVzZtaZuCGjfoZNAeIYeArnPC+m0t8VtOtc6FOuds50.xWpbuBKbiFFcljHX.u69it4F3BhZG9jXNCV36UQFOs9yoce.HS4hv6R6bY7LdWPtvMALHnRESqUy2SQduJULsP5fzHTtEVPnbrPXAhYwJJm8JxLPiNO9IOs.ngD4kJdLr89zHxfYREYh1No0JB+JatqQxxXjxFwA8xrPZfoSfZU78zG1TUfDyEnlRhpGVRN6jW66MVohka2pkjmvBGQYWPDxlA7IdKlE.vUu100q43kjSzamRQa4p2LNm+1NkRpW6lT8orHJi3NJgEnCcWNqmhMfvB0IBAOxOHOKrE3knDRCiSh3AX3VNDXJgt1PPjfXRRim6BeZK6PG45mqhy0tYev+6jElfEhdCUMt+wCN02q0z3G8NIm05cSUOBmnF25pNsT7KILusbi2p.h9R39RhbK2BW5Vw15+bcw+4jxuSETE43guiDnJvYyTKq4PifP3J4QjlwBptf6jLwb210y8aWLFMAYEOdSdX6bSNwt7B4gFx0qgNGmQw52KGBOc4uH2234oVZYIIvNmSDzQy9ORSymCzbuIwoq9gbWJ8DwwguPNPAQ9E9oLxhrwoZtJmJ.MKnsx50WBkoujf0WF7dAj73B5GvZvtsaOBV.WTqp77peeqCZAQBMDdrDJH77tqJh7BAmr+Q+MeLYxnFEaTDO2lbUx7kY76U11jkts78howFYI7JY5i3PsKyuQsqq4T6lZtKdznQK8rLCFA4ikcrtUp3tTzmkLYn9sCS0StfP+k4aZYe6Msp1SMvvOUDjyNfQUGGSX2VmVTFopavkgJPTUZ6suHq8VuDkhyPzPcusB1DkB5pCVfN6fcwJbto.qBdJlHTTcPXsK4JXvCSmSG6rmvgXsHWByRbqN1wN6VM58kt726NqXQ2+nqDeE4.VenNhnLLBUdHeBXYrXVNAT5rGXbV8Lm8Z7PRTpupaWoaWU+cTE+g1sq9hldDM4nlPZR0DX4ozP03RYncGSnWLtxfV+T2Q.0Lf9gJLW6tUgkycBq79q2Fr9yeMCVeictnmBX6EAAPqM0phuz8Tyzkb0Jr6bj4l2qRlRP+WSmO2Y.8CryD7iSbe7zWvbe7vjHrZ9gA0S.mc.bYatIvzSYwjT0rpSH++1Dh2WH9P69TUv3kiw0VBFgKTeJvX1b00s2azHnqcI.2vd+e6SyPznS3IJnC3gXnQHTLXeTxjAvOsHf.dmwHQ5G6rVS+rjYca8ZMCnu5mt3efurC6nWakcXm7CQSvAB9aCLOlomb+Ao6.XJ89L7Txg50tcxeAy1tcy1nIvOh3sAA5v+QP81x04wqfNOYEz4oqfNe2JnyyVAc99UPme3N0Q+62f4Y3SLWGfM5uWZmDKq8XXnxJsJD8uPIY6vM
      
      d.healeyD 1 Reply Last reply Reply Quote 0
      • 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
                                            • First post
                                              Last post

                                            16

                                            Online

                                            2.0k

                                            Users

                                            12.7k

                                            Topics

                                            109.9k

                                            Posts