Пример #1
0
  async createKeysAsync(froot) {
    //remove keys 
    try {
      await rimrafAsync(path.join(froot, 'station'))
      await mkdirpAsync(path.join(froot, 'station'))

      let modulusBit = 2048

      let pbkPath = path.join(froot, 'station', FILE.PUBKEY)
      let pvkPath = path.join(froot, 'station', FILE.PVKEY)

      let key = ursa.generatePrivateKey(modulusBit, 65537)

      let privatePem = ursa.createPrivateKey(key.toPrivatePem()) //生成私钥
      let privateKey = privatePem.toPrivatePem('utf8')
      await fs.writeFileAsync(pvkPath, privateKey, 'utf8')


      let publicPem = ursa.createPublicKey(key.toPublicPem())   //生成公钥
      let publicKey = publicPem.toPublicPem('utf8')
      await fs.writeFileAsync(pbkPath, publicKey, 'utf8')
      this.publicKey = publicKey
      this.privateKey = privateKey
      this.pbkPath = pbkPath
      this.pvkPath = pvkPath
      return
    } catch (e) {
      debug(e)
      throw e
    }
  }
Пример #2
0
	LogicHandler.Handle(req, res, next, co.wrap(function * () {
		var problem = req.body.problem;

		const igBlankLine = 1 << 0;
		const igTraillingSpace = 1 << 1;
		const igHeadingSpace = 1 << 2;
		const igSpaceAmount = 1 << 3;

		if (problem.igBlankLine) problem.judgeType |= igBlankLine;
		if (problem.igTraillingSpace) problem.judgeType |= igTraillingSpace;
		if (problem.igHeadingSpace) problem.judgeType |= igHeadingSpace;
		if (problem.igSpaceAmount) problem.judgeType |= igSpaceAmount;

		problem = new DB.Problem(problem);
		problem = yield problem.save();
		console.log(problem);

		var sampleInput = problem.sampleInput;
		var sampleOutput = problem.sampleOutput;

		var id = problem.problemId;

		var filePath = path.join(__dirname, "../problem/", id.toString());

		yield fs.mkdirAsync(filePath);

		yield [
			fs.writeFileAsync(filePath + "/sample.in", sampleInput, "utf-8"),
			fs.writeFileAsync(filePath + "/sample.out", sampleOutput, "utf-8")
		]

		return {};
	}));
Пример #3
0
 .then((result) => {
   logger.info('spawnWrapper: ' + command + ' returned');
   return Promise.all([
     fs.writeFileAsync(path.join(buildDir, command + '.out'), result.stdout),
     fs.writeFileAsync(path.join(buildDir, command + '.err'), result.stderr)
   ]);
 });
Пример #4
0
 beforeEach(async () => { 
   await mkdirpAsync(testFolder)
   await fs.writeFileAsync(fpath1, 'this is a')
   await fs.writeFileAsync(fpath2, 'this is b')
   await mkdirpAsync(folder)
   await fs.writeFileAsync(fpath3, 'this is c')
   await fs.writeFileAsync(fpath4, 'this is D')
   await child.execAsync(`ln -s ${fpath1} ${symbolic}`)
 })
Пример #5
0
  yield asyncEach(blogs, function *(blog, idx) {
    var articles = []
    var pageNum = 1
    var data

    let blogKey = `blogs/${blog.handle}/blog.json`

    yield fs.mkdirpAsync(path.dirname(blogKey))
    yield fs.writeFileAsync(blogKey, JSON.stringify(blog))

    var {metafields} = yield requestify(target, {
      method: 'get',
      url: `/admin/blogs/${blog.id}/metafields.json`
    })

    yield fs.writeFileAsync(`blogs/${blog.handle}/metafields.json`, JSON.stringify(metafields))

    do {
      data = yield requestify(target, {
        method: 'get',
        url: `/admin/blogs/${blog.id}/articles.json?limit=250&page=${pageNum}`
      })
      pageNum += 1
      articles = articles.concat(data.articles)
    } while (data.articles.length > 0)

    yield asyncEach(articles, function *(article, jdx) {
      let cleanName = article.title.replace(/\s/g, '_').replace(/[^a-zA-Z0-9_-]/g, '')
      let jsonKey = `blogs/${blog.handle}/${article.id}-${cleanName}/article.json`
      let htmlKey = `blogs/${blog.handle}/${article.id}-${cleanName}/article.html`

      yield fs.mkdirpAsync(path.dirname(jsonKey))

      let body_html = article.body_html
      delete article.body_html

      yield fs.writeFileAsync(jsonKey, JSON.stringify(article))
      yield fs.writeFileAsync(htmlKey, body_html)

      let {metafields} = yield requestify(target, {
        method: 'get',
        url: `/admin/articles/${article.id}/metafields.json`
      })

      yield fs.writeFileAsync(`blogs/${blog.handle}/${article.id}-${cleanName}/metafields.json`, JSON.stringify(metafields))
    }, {concurrency: config.concurrency})

    totalArticles += articles.length
  }, {concurrency: config.concurrency})
Пример #6
0
	LogicHandler.Handle(req, res, next, co.wrap(function * () {

		console.log("Start");
		var problem = req.body.problem;

		var problemId = parseInt(problem.problemId);
		if (problemId != problem.problemId) throw { message: "参数不合法" }

		const igBlankLine = 1 << 0;
		const igTraillingSpace = 1 << 1;
		const igHeadingSpace = 1 << 2;
		const igSpaceAmount = 1 << 3;

		problem.judgeType = 0;

		if (problem.igBlankLine) problem.judgeType |= igBlankLine;
		if (problem.igTraillingSpace) problem.judgeType |= igTraillingSpace;
		if (problem.igHeadingSpace) problem.judgeType |= igHeadingSpace;
		if (problem.igSpaceAmount) problem.judgeType |= igSpaceAmount;

		console.log(problem);
		console.log('problemId:', problemId);
		var updateRes = yield DB.Problem.findOneAndUpdate({ problemId: problemId }, problem, { new : true });

		if (updateRes) {
			updateRes = updateRes.toObject();
		}

		console.log(updateRes);

		var filePath = path.join(__dirname, "../problem/", problemId.toString());

		var cacheProblem = yield redis.getAsync('problem' + problemId);

		if (cacheProblem) {
			updateRes = _.omit(updateRes, "_id");
			yield redis.setAsync("problem" + problemId, JSON.stringify(updateRes));
			yield redis.expireAsync("problem" + problemId, 60 * 10);
		}


		yield [
			fs.writeFileAsync(filePath + "/sample.in", problem.sampleInput, "utf-8"),
			fs.writeFileAsync(filePath + "/sample.out", problem.sampleOutput, "utf-8")
		]

		return {};
	}));
Пример #7
0
  .then(function() {
    // clears our sites.txt


    fs.writeFileAsync(paths.list, '', 'utf8');
    
  })
 client.query(sql_recent, sql_recent_param, function(err, rows) {
     fs.writeFileAsync(filename, "")
     .then(fs.appendFileSync(filename, '<html lang="en">\r\n'))
     .then(fs.appendFileSync(filename, '<head>\r\n'))
     .then(fs.appendFileSync(filename, '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />\r\n'))
     .then(fs.appendFileSync(filename, '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r\n'))
     .then(fs.appendFileSync(filename, '<title><%= title %></title>\r\n'))
     .then(fs.appendFileSync(filename, '</head>\r\n'))
     .then(fs.appendFileSync(filename, '<body>\r\n'))
     .then(fs.appendFileSync(filename, '<div><h1> ' + callsign + ' </h1></div>\r\n'))
     .then(fs.appendFileSync(filename, '<div><h2> Last position: Latitude = ' + rows[0].Latitude + '; Longitude' + rows[0].Longitude + ' </h2></div>\r\n'))
     .then(fs.appendFileSync(filename, '<div><h2> data during the last 60 minutes: </h2></div>'))
     .then(function() {
         client.query(sql_60, sql_60_param, function(err, rows) {
             console.log(rows);
             if (rows.length == 0) {
                 fs.appendFileSync(filename, '<div> This station has no data in 60 minutes! </div>');
             }
             else {
                 for (i=0; i < rows.length; ++i) {
                     console.log(i);
                     var writeBuffer = new Buffer(JSON.stringify(rows[i]))
                     fs.appendFileSync(filename, '<div> ' + i + ':   ' + writeBuffer + '</div>\r\n');
                 }
             }
             fs.appendFileSync(filename, '</body>\r\n');
             fs.appendFileSync(filename, '</html>\r\n');
             res.render("callsign", {
                 title: 'Callsign'
             })
         });
     })
 })
Пример #9
0
 }, '').then(function (css) {
     var csspath = tempfile('.css');
     return fs.writeFileAsync(csspath, css).then(function () {
         return csspath;
     });
     // let penthouseAsync do the rest
 }).then(function (csspath) {
Пример #10
0
  updateSlideshowSettings: coroutine(function* updateSlideshowSettingsGen(settings, slideshow_id) {
    var slideshow = yield Slideshow.findById(slideshow_id).exec();
    var fPath = slideshow.asqFilePath;
    var html = yield fs.readFileAsync(fPath, 'utf-8');
    var r = yield hooks.doHook('update_slideshow_settings', {
      slideshow_id: slideshow_id,
      settings: settings,
      html: html,
      status: 'unknown'
    });

    if ( r.status !== 'success' ) {
      return Promise.reject(new Error('Failed to update presentation level settings.')); 
    }

    var parsedHtml = r.html;
    var exercise_ids = slideshow.exercises;
    exercise_ids = exercise_ids.map(function (s) { return ObjectId(s) });
    
    for ( var i in  exercise_ids ) {
      var rr = yield this.updateExerciseSettingsById(parsedHtml, settings, exercise_ids[i]);
      parsedHtml = rr.html;
    }

    yield fs.writeFileAsync(fPath, parsedHtml);

  }),
Пример #11
0
function markAsDone(dirpath) {
  fs.readdirAsync(dirpath)
  .then(files => collect.getAllImages(files, dirpath))
  .then(pages => collect.generateImageData(pages, path.join(dirpath, 'data.json')))
  .catch(handleError);
  return fs.writeFileAsync(path.join(dirpath, '.done'), '').catch(handleError);
}
Пример #12
0
function buildCore(jsCode) {
  var htmlText = [
    '<!DOCTYPE html allowfullscreen><html><head>',
    '<title>'+ title +'</title>',
    '<meta name="viewport" content="width=device-width, initial-scale=1.0">',
    '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">',
    '<link rel="shortcut icon" type="image/png" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUAAABGCKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6cq4bAAABAHRSTlMA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXgXLUgAAARtJREFUeNoBEAHv/gABAQAAAAAAAAAAAAAAAAEBAAEBAAAAAAAAAAAAAAAAAQEAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAEBAAAAAAAAAAAAAAAAAQEAAQEAAAAAAAAAAAAAAAABAQAAAAAAAQEAAAAAAQEAAAAAAAAAAAABAQAAAAABAQAAAAAAAAAAAAEBAAAAAAEBAAAAAAAAAAAAAQEAAAAAAQEAAAAAAAAAAQEAAAEBAQEAAAEBAAAAAAABAQAAAQEBAQAAAQEAAAAAAAEBAQEAAAAAAQEBAQAAAAAAAQEBAQAAAAABAQEBAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAABAQEBAAAAAAAAJ1AAUeGoJb0AAAAASUVORK5CYII=">',
    '<style type="text/css">'+ renderCss() +'</style>',
    '</head><body onload="__init__()"><div id="size" style="visibility:hidden; position:fixed; right:0; bottom:0"></div>',
    '<script type="text/javascript">',
    'var __loadStories__ = '+ fs.readFileSync(APP_DIR +'/public/assets/all-data.json') +';',
    'var __ = {}; function __init__() {',
    jsCode,
    '};',
    '</script>',
    '</body></html>'
  ].join('\n');

  var size = zlib.gzipSync(htmlText).length;
  var originalSize = Buffer.byteLength(htmlText);
  var compression = Math.round((originalSize / size) * 100) + '%';
  console.log("original size: "+ sizeOf(originalSize) +" final size: "+ sizeOf(size)
    +" so ~"+ (size > 14000
      ? sizeOf(size - 14000) +" over 14 kb, try reduce it !"
      : sizeOf(14000 - size) +" left under 14 kb, great job."),
    "("+ compression +" compression rate)");
  fs.writeFileAsync(APP_DIR +'/public/index.html', htmlText);
}
Пример #13
0
 function printOutput(output, options) {
   if (options.output) {
     return fs.writeFileAsync(path.resolve(options.output), output, 'utf8');
   } else {
     console.log(output);
   }
 }
Пример #14
0
const fillAsync = async (dir, tree) => {

  let xstats = []
  await Promise.delay(100)
  for (let prop in tree) {
    if (tree.hasOwnProperty(prop)) {

      let npath = path.join(tmpdir, prop)
      // console.log(npath)      
      if (tree[prop].type === 'directory') {
        await mkdirpAsync(npath)
        xattr.setAsync(npath, 'user.fruitmix', JSON.stringify({
          uuid: tree[prop].uuid 
        }))
      }
      else {
        await fs.writeFileAsync(npath, '\n')
        xattr.setAsync(npath, 'user.fruitmix', JSON.stringify({
          uuid: tree[prop].uuid,
          magic: 0
        }))
      } 

      xstats.push(await readXstatAsync(npath))
    }
  }

  xstats.sort((a, b) => a.name.localeCompare(b.name))

  let stats = await fs.lstatAsync(dir)
  let mtime = stats.mtime.getTime()

  return { mtime, xstats }
}
Пример #15
0
  findAndProcessMainFile: coroutine(function *findAndProcessMainFileGen(slideshowid){
    let slideshow = yield Slideshow.findById(slideshowid).exec();
    const presentationDir = slideshow.path;

    // find main file
    const mainFile = yield fsUtils.getFirstHtmlFile(presentationDir);
    slideshow.originalFile = path.basename(mainFile);
    logger.debug('will use ' + mainFile + ' as original presentation file...');

    const slideShowFileHtml = yield fs.readFileAsync(mainFile, 'utf-8');

    //create asq file (we're preserving the original one)
    const fileNoExt = path.basename(slideshow.originalFile, '.html');
    slideshow.asqFile =  fileNoExt + '.asq' +'.dust';
    logger.debug('will use ' + slideshow.asqFile + ' as active presentation file...');

    yield fs.writeFileAsync(slideshow.asqFilePath, slideShowFileHtml);

    // get slides Tree
    slideshow.slidesTree = this.getSlidesTree(slideShowFileHtml, slideshow.presentationFramework);

    //save existing process, more things to be added in parseAndPersist
    slideshow.lastEdit = Date.now();
    yield slideshow.save();

    // parse questions, stats etc. and persist parsed stuff to db
    yield parse.parseAndPersist(slideshow._id);
  }),
Пример #16
0
  writeFile: function (file, data) {
    if (_.isNil(file)) {
      return Promise.reject('writeFile() `file` is required');
    }

    return fs.writeFileAsync(file, data);
  },
Пример #17
0
 .then(function(){
   console.log('Writing ' + nodeVersion + ' as global node version');
   return fs.writeFileAsync(
     path.resolve(path.join(stagingDir,'.node-version-global')),
     nodeVersion
   );
 })
Пример #18
0
 .then(function(){
   console.log('Writing ' + npmVersion + ' as global npm version');
   return fs.writeFileAsync(
     path.resolve(path.join(stagingDir,'.npm-version-global')),
     npmVersion.replace('v','')
   );
 })
Пример #19
0
 it('stored file should be read only', async () => {
   let hash = await repo.storeFileAsync(filepath)
   try {
     await fs.writeFileAsync(path.join(repo.repoDir, hash), 'world')   
   } catch(e) {
     expect(e.code).to.equal('EACCES')
   }
 })
Пример #20
0
 .then((value) => {
   const config = value;
   if (config.liveMode === 'y') {
     raveUri = raveLiveUri;
   }
   delete config.liveMode;
   return fs.writeFileAsync(configFile, `${JSON.stringify(config, null, 2)}\n`);
 })
Пример #21
0
 return getData(byDigest, cache, key, opts).then(res => {
   return fs.writeFileAsync(dest, byDigest ? res : res.data)
   .then(() => byDigest ? key : {
     metadata: res.metadata,
     size: res.size,
     integrity: res.integrity
   })
 })
Пример #22
0
Token.prototype.writeAccessToken = function(data){
	var self = this;

	return fs.writeFileAsync(path.join(__dirname, 'token.js'), JSON.stringify(data),{flag:'w+'}).then(function () {
        console.log("Save Token Success!");
    },function(err){
    	if (err) throw err;
    });
};
Пример #23
0
const generateUserMapAsync = async () => {
  let userList = await getUserListAsync();
  let text = userList['users'].reduce((prev, user) =>
    prev + `${uuidToUnixName(user.uuid)} = "${user.username}"\n`, '')

  await fs.writeFileAsync('/etc/smbusermap', text)

  UPDATE_SAMBA('Create samba user map file')
}
Пример #24
0
 }, '').then(function (css) {
     var csspath = tempfile('.css');
     // add file to garbage collector so it get's removed on exit
     gc.addFile(csspath);
     return fs.writeFileAsync(csspath, css).then(function () {
         return csspath;
     });
     // let penthouseAsync do the rest
 }).then(function (csspath) {
Пример #25
0
 .then(function (filepath) {
     file.path = filepath;
     file.path = path.join(folder, path.basename(filepath));
     file.base = folder;
     file.contents = new Buffer(opts.html);
     gc.addFile(filepath);
     return fs.writeFileAsync(filepath, file.contents).then(function () {
         return file;
     });
 });
Пример #26
0
 .then(filepath => {
     file.path = filepath;
     file.path = path.join(folder, path.basename(filepath));
     file.base = folder;
     file.contents = Buffer.from(opts.html);
     gc.addFile(filepath);
     return fs.writeFileAsync(filepath, file.contents).then(() => {
         return file;
     });
 });
Пример #27
0
 }).then(function (final) {
     if (opts.htmlTarget) {
         return fs.writeFileAsync(path.join(opts.base, opts.htmlTarget), final).then(function () {
             return final;
         });
     } else {
         return final;
     }
 // error callback
 }).catch(function (err) {
Пример #28
0
const addSmbUsersAsync = async (fusers) => {
  let text = fusers.map(u => `${u.unixname}:${u.unixuid}:` + 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:' +
    `${u.md4}:[U          ]:${u.lct}:`).join('\n')

  await mkdirpAsync('/run/wisnuc/smb')
  await fs.writeFileAsync('/run/wisnuc/smb/tmp', text)
  await child.execAsync('pdbedit -i smbpasswd:/run/wisnuc/smb/tmp')

  UPDATE_SAMBA('Add samba user')
}
		utils.saveFile = function(dir,content,name){

			if (!fs.existsSync(dir)){
			    fs.mkdirSync(dir);
			}

			var filepath = path.join(dir, name);

			return fs.writeFileAsync(filepath, JSON.stringify(content));
		};
Пример #30
0
function saveCoverageToFile() {
  var coverageObject = core.getCoverageObject();
  var coverageFilePath = 'coverage.json';
  fs.writeFileAsync(coverageFilePath, JSON.stringify(coverageObject), function(error) {
    if (error) {
      return;
    }
    //publish a message to upload file to S3. delay that message by 5 seconds.
  });
};