Omnimaga

Calculator Community => TI Calculators => Lua => Topic started by: Deep Toaster on April 16, 2011, 12:38:26 pm

Title: Luna online
Post by: Deep Toaster on April 16, 2011, 12:38:26 pm
Thought this might be useful: http://clrhome.org/b/lua/ (URL subject to change, and the UI of course :P).

Just another Lua > TI converter, this time in PHP (read: online).

I actually have no idea if it really works or not. I checked the raw hex of the .tns files in a hex viewer, but who knows how well it stands up on an actual calculator. I don't have an Nspire to test and I lost the boot2.img I used for nspire_emu, so if someone could test for me that'd be great :)

The routine is based straight off of Levak's Python version. Source below. Feel free to offer suggestions/optimizations. I'm pretty new to PHP, anyway.
Spoiler For Code:
Code: (PHP) [Select]
<?
$zip = new ZipArchive;
$name = basename($_FILES['lua']['name'], '.lua');
if (file_exists("$name.lua"))
{
die ('NAMEFAIL');
}
else
{
if (move_uploaded_file($_FILES['lua']['tmp_name'], "$name.lua"))
{
if ($res = $zip->open("$name.zip", ZipArchive::CREATE))
{
$zip->addFromString('Problem1.xml', '<?xml version="1.0" encoding="UTF-8" ?><prob xmlns="urn:TI.Problem" ver="1.0" pbname=""><sym></sym><card clay="0" h1="10000" h2="10000" w1="10000" w2="10000"><isDummyCard>0</isDummyCard><flag>0</flag><wdgt xmlns:sc="urn:TI.ScriptApp" type="TI.ScriptApp" ver="1.0"><sc:mFlags>0</sc:mFlags><sc:value>-1</sc:value><sc:script>' . str_replace(array('&', '"', '\'', '<', '>'), array('&amp;', '&quot;', '&#039;', '&lt', '&gt'), file_get_contents("$name.lua")) . '</sc:script></wdgt></card></prob>');
$zip->close();
}
else
{
die ('ZIPFAIL');
}
}
else
{
die ('MOVEFAIL');
}
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$name.tns\"");
echo pack('c*', 0x2a, 0x54, 0x49, 0x4d, 0x4c, 0x50, 0x30, 0x35, 0x30, 0x30, 0x14, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x3c, 0x17, 0x8d, 0x3e, 0x73, 0x45, 0x68, 0x44, 0x40, 0x01, 0x00, 0x00, 0x93, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x78, 0x6d, 0x6c, 0x0f, 0xce, 0xd8, 0xd2, 0x81, 0x06, 0x86, 0x5b, 0x62, 0x81, 0xc2, 0xa6, 0x21, 0xa5, 0xfd, 0x08, 0x23, 0x0f, 0x92, 0xae, 0x38, 0x45, 0x2a, 0x05, 0x66, 0xbb, 0xc7, 0xdf, 0x98, 0x87, 0x55, 0x13, 0x61, 0x47, 0x75, 0x24, 0x66, 0xf9, 0x71, 0x1f, 0xcd, 0xe5, 0xb3, 0x41, 0x5d, 0x13, 0x33, 0x4e, 0x72, 0x0e, 0x08, 0xfb, 0x76, 0x87, 0xe6, 0x1d, 0x8f, 0x93, 0x18, 0x32, 0xe7, 0x06, 0x92, 0x6a, 0x58, 0xf0, 0x77, 0x22, 0x09, 0xba, 0xca, 0x25, 0xb3, 0x8e, 0x7b, 0x52, 0x98, 0xc5, 0x54, 0x9a, 0x5f, 0x8c, 0x34, 0x9e, 0x35, 0xf5, 0x6b, 0x75, 0x45, 0xc7, 0x7a, 0x10, 0x8a, 0x5f, 0x6e, 0x0d, 0xe6, 0x4a, 0x1e, 0x90, 0x92, 0xba, 0x1c, 0xd1, 0x96, 0xb0, 0xc1, 0x19, 0xcd, 0x5c, 0x0d, 0x27, 0x9b, 0x19, 0x2f, 0x58, 0x6f, 0x49, 0x14, 0x95, 0x0d, 0xf1, 0x3a, 0xc8, 0x99, 0x82, 0x2e, 0xa3, 0xad, 0x36, 0x9e, 0xb7, 0x13, 0x28, 0xaa, 0x9b, 0x89, 0xb5, 0x30, 0xfc, 0x3f, 0xd4, 0xd2, 0x45, 0xbe, 0xc4, 0x7f, 0x86, 0x87, 0x71, 0x25, 0x09, 0xd1, 0xed, 0xb3, 0xd3, 0x92, 0x69, 0xdf, 0xb5, 0x94, 0x72, 0xa6, 0x37, 0x58, 0x58, 0xc4, 0xd4, 0x29, 0xd1, 0xba, 0xaf, 0x84, 0x4a, 0x2e, 0xcf, 0x2e, 0x7b, 0xfb, 0xbd, 0x91, 0xac, 0x99, 0xba, 0xa8, 0xcc, 0xc0, 0x95, 0x5b, 0x21, 0xe4, 0x3d, 0x58, 0xfa, 0x8f, 0xc4, 0x21, 0xc7, 0x66, 0xc5, 0x7b, 0xa7, 0x31, 0x9f, 0x70, 0x2d, 0x1e, 0xce, 0x37, 0x8a, 0x13, 0xe1, 0xe8, 0x1e, 0x88, 0x67, 0x11, 0x7c, 0x3e, 0x7d, 0x75, 0x52, 0xbd, 0x9a, 0x40, 0xd7, 0xaf, 0x3d, 0xa1, 0x10, 0x3a, 0xeb, 0x91, 0xc8, 0x8d, 0x4a, 0x24, 0x9b, 0x38, 0x85, 0x8f, 0x38, 0xb5, 0x3c, 0xb5, 0xa3, 0xfa, 0x1b, 0xbe, 0x4a, 0xca, 0x93, 0xd7, 0x41, 0x69, 0x02, 0x0d, 0xad, 0x30, 0x6d, 0xba, 0x08, 0x54, 0xfc, 0x13, 0xe8, 0xfa, 0xeb, 0xc0, 0xfd, 0xe8, 0xad, 0x51, 0x1a, 0x4a, 0x89, 0x95, 0x3a, 0x27, 0xd4, 0xf2, 0xcc, 0x40, 0x46, 0xcd, 0xc9, 0x8a, 0x14, 0xd5, 0x83, 0xdf, 0x60, 0xdc, 0xce, 0x06, 0x5e, 0x9e, 0x2e, 0xb1, 0xd3, 0x54, 0x97, 0xf7, 0x7b, 0xae, 0x6f, 0x51, 0x4f, 0x74, 0xdc, 0x57, 0x6a, 0xd4, 0x7f, 0x37, 0x2a, 0x49, 0xba, 0x86, 0x2a);
readfile("$name.zip");
unlink("$name.lua");
unlink("$name.zip");
?>
UPDATE: New URL, new script. (http://omniurl.tk/7845/221967/)
Title: Re: Online Lua > TI converter
Post by: Ashbad on April 16, 2011, 12:45:11 pm
wow, this looks awesome :) nice work :D
Title: Re: Online Lua > TI converter
Post by: Adriweb on April 16, 2011, 12:46:07 pm
Great idea !

I tested it and it doesn't work, sorry.

When I compare a working .tns file (generated by the python converter, or mine), there are 7 extra bytes in some places around the files, and the inner part of the compressed (zipped) part is totally different.

The syntax and everything in the php source looks good so the problem must be coming from the zipping part.

The compression used here is quite special... Lionel Debroux found today that with the unix/linux/mac-version of zip, it had to be written like that : " zip -9 -q -X -j "...

and I don't know what PHP does for its zip function...
Title: Re: Online Lua > TI converter
Post by: Deep Toaster on April 16, 2011, 12:50:51 pm
Great idea !

I tested it and it doesn't work, sorry.

Darn. Bugs >:(

When I compare a working .tns file (generated by the python converter, or mine), there are 7 extra bytes in some places around the files, and the inner part of the compressed (zipped) part is totally different.

The syntax and everything in the php source looks good so the problem must be coming from the zipping part.

The compression used here is quite special... Lionel Debroux found today that with the unix/linux/mac-version of zip, it had to be written like that : " zip -9 -q -X -j "...

and I don't know what PHP does for its zip function...

I don't understand the different ZIP formats... Maybe I shouldn't have made this :P
Title: Re: Online Lua > TI converter
Post by: Adriweb on April 16, 2011, 12:52:32 pm
You can try to use the 7zip extension for PHP, as it directly compress the files in the right format, readble by the Nspire :)

http://download.modem-help.co.uk/non-modem/PHP/7z/ (http://download.modem-help.co.uk/non-modem/PHP/7z/)


and that might be interesting :

http://stackoverflow.com/questions/4596121/possible-to-feed-stdout-of-7-zip-to-php-script (http://stackoverflow.com/questions/4596121/possible-to-feed-stdout-of-7-zip-to-php-script)
Title: Re: Online Lua > TI converter
Post by: Deep Toaster on April 16, 2011, 01:06:29 pm
You can try to use the 7zip extension for PHP, as it directly compress the files in the right format, readble by the Nspire :)

http://download.modem-help.co.uk/non-modem/PHP/7z/ (http://download.modem-help.co.uk/non-modem/PHP/7z/)

I can't install extensions -- it's not my server :( And of course passthru is disabled (same reason).

Anybody who wants to host this on their own server, go ahead.
Title: Re: Online Lua > TI converter
Post by: Munchor on April 17, 2011, 05:33:28 am
You can try to use the 7zip extension for PHP, as it directly compress the files in the right format, readble by the Nspire :)

http://download.modem-help.co.uk/non-modem/PHP/7z/ (http://download.modem-help.co.uk/non-modem/PHP/7z/)

I can't install extensions -- it's not my server :( And of course passthru is disabled (same reason).

Anybody who wants to host this on their own server, go ahead.

Will you be able to do that in the new host?
Title: Re: Online Lua > TI converter
Post by: Deep Toaster on April 17, 2011, 09:56:46 am
Nope. Still doesn't support 7-zip or allow me to install software.
Title: Re: Online Lua > TI converter
Post by: Munchor on April 17, 2011, 01:35:17 pm
Nope. Still doesn't support 7-zip or allow me to install software.

I think I can make an online version of it... Isn't there a Python one? I can make it online!
Title: Re: Online Lua > TI converter
Post by: Deep Toaster on July 11, 2011, 12:21:12 am
EDIT: Never mind, found it: http://withg.us.to/lua2tns/MakeTNS.php (alberthro's script). Funnily enough, that one's hosted on the same server (his).

Mine is now officially of no use. But it works ;D
Title: Re: Luna online
Post by: Deep Toaster on January 04, 2012, 07:37:52 pm
Changed it again. This time, it's just an online front-end for Luna (http://omniurl.tk/9807/) (thanks to ExtendeD for permission).

You can upload your source in one of three ways:In any case, the file is sent to the server, which runs it through luna and gives you the TNS.

Luna online (http://clrhome.org/resources/lua/)
Title: Re: Luna online
Post by: Jim Bauwens on January 05, 2012, 03:37:39 am
Very nice and thanks,  I was waiting for the update :)
Title: Re: Luna online
Post by: Deep Toaster on July 06, 2012, 12:26:30 am
Fixed drag-and-drop upload and updated Luna to 0.3a.