Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var http = require('http'),
- sys = require('sys');
- url = require('url')
- spawn = require('child_process').spawn;
- fs = require('fs');
- var handleRequests = function(response, data){
- //Create a req
- var crypto = require("crypto");
- var fs = require('fs');
- var f = fs.openSync('/dev/random', 'r', mode=0666);
- var rand = fs.readSync(f, 10,0, encoding='base64');
- var key = rand[0] ;
- var hmacdata = '1234567890' ;
- var hmac = crypto.createHmac("sha1", key);
- var hash2 = hmac.update(hmacdata);
- var filename = hmac.digest(encoding="hex");
- //Create a file by this name and stream to it...
- var latex = spawn('latex',['-jobname='+filename]);
- //TODO:Write to a system log
- latex.stdout.on('data', function (data) {
- sys.print('***Latex stdout: ' + data);
- });
- //On closing the stdout?? I dont quite understand
- latex.stdout.on('close', function(data_temp){
- console.log('***CLOSED LATEX STREAM...');
- dvi2svg = spawn('dvisvgm',['-s', filename])
- response.writeHead(200, {'Content-Type': 'text/html'});
- response.write('<HTML><HEAD></HEAD>');
- dvi2svg.stdout.on('data',
- function(data) {
- console.log('***DVISVGM stdout detected.'+data );
- //Stream the o/p
- response.write(data);
- })
- dvi2svg.stdout.on('end',function(data){
- console.log('***DVISVG Data...'+data)
- response.end('</HTML>');
- spawn('rm',[filename+'.dvi',filename+'.aux',filename+'.log']).stderr.on('data', function(data){
- console.log('Deleted temp files...'+data)
- });
- });
- })
- latex.stderr.on('data', function (data) {
- sys.print('***Latex stdout: ' + data);
- });
- //TODO: Write to Sockets and read from there...Write Latex O/P to a socket using -ipc option.
- //Create a socket and read and write from it
- //mkfifo is for making named pipes
- latex.stdin.write('\\documentclass{article} \\usepackage{amsmath} \\usepackage{amssymb} \\usepackage{amsfonts} \\thispagestyle{empty} \\begin{document} \\[ '+data+' \\] \\end{document}')
- //TO DO: USE DVI
- latex.stdin.end();
- //TODO: Read from socket
- }
- server = http.createServer(function(req, response){
- // your normal server code
- //Attempt to return a latex SVG image...
- var qs = require('querystring');
- var querystring = url.parse(req.url).query;
- var queryobject = qs.parse(querystring);
- console.log(querystring);
- if('latex' in queryobject){
- var data = queryobject['latex'];
- handleRequests(response, data);
- }else{
- //Serve the normal HTML index file...
- response.writeHead(200, {'Content-Type': 'text/html'});
- fs.readFile('index.html', encoding='utf8', function (err, data) {
- if (err) throw err;
- response.write(data);
- response.end();
- });
- }
- });
- server.listen(80);
- process.setuid('sid')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement