Woocommerce linked licensing system for your plugins
-
@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('""');
-
@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 -
@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 anobject.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"
-
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.
-
@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.
-
@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 theresponse.token
into 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
test
but 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:
-
@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....
-
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
-
@orange said in Woocommerce linked licensing system for your plugins:
For removing spaces?
No, we're removing quotation marks
""
-
@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?
-
@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.
-
@d-healey Then substring can work here. This will extract the string between first and last chars.
exampleString.substring(1, exampleString.length-1);
-
@d-healey @orange so,
.substring
works but.replace
doesn't...
(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 ? -
@matt_sf I use an encrypted object.
-
@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.
-
-
@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!
-
This post is deleted! -
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....
-
@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