def test_common_file_helpers(self): # genfile with self.getTestDir() as testdir: fd = s_common.genfile(testdir, 'woot', 'foo.bin') fd.write(b'genfile_test') fd.close() with open(os.path.join(testdir, 'woot', 'foo.bin'), 'rb') as fd: buf = fd.read() self.eq(buf, b'genfile_test') # reqpath with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'') self.eq(os.path.join(testdir, 'test.txt'), s_common.reqpath(testdir, 'test.txt')) self.raises(s_exc.NoSuchFile, s_common.reqpath, testdir, 'newp') # reqfile with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'reqfile_test') fd = s_common.reqfile(testdir, 'test.txt') buf = fd.read() self.eq(buf, b'reqfile_test') fd.close() self.raises(s_exc.NoSuchFile, s_common.reqfile, testdir, 'newp') # getfile with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'getfile_test') fd = s_common.getfile(testdir, 'test.txt') buf = fd.read() self.eq(buf, b'getfile_test') fd.close() self.none(s_common.getfile(testdir, 'newp')) # getbytes with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'getbytes_test') buf = s_common.getbytes(testdir, 'test.txt') self.eq(buf, b'getbytes_test') self.none(s_common.getbytes(testdir, 'newp')) # reqbytes with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'reqbytes_test') buf = s_common.reqbytes(testdir, 'test.txt') self.eq(buf, b'reqbytes_test') self.raises(s_exc.NoSuchFile, s_common.reqbytes, testdir, 'newp') # listdir with self.getTestDir() as dirn: path = os.path.join(dirn, 'woot.txt') with open(path, 'wb') as fd: fd.write(b'woot') os.makedirs(os.path.join(dirn, 'nest')) with open(os.path.join(dirn, 'nest', 'nope.txt'), 'wb') as fd: fd.write(b'nope') retn = tuple(s_common.listdir(dirn)) self.len(2, retn) retn = tuple(s_common.listdir(dirn, glob='*.txt')) self.eq(retn, ((path, )))
def main(argv, outp=None): if outp == None: outp = s_output.OutPutFd( sys.stdout ) pars = argparse.ArgumentParser(prog='easycert', description=descr) pars.add_argument('--certdir', default='~/.syn/certs', help='Directory for certs/keys') pars.add_argument('--signas', help='sign the new cert with the given cert name') pars.add_argument('--ca', default=False, action='store_true', help='mark the certificate as a CA/CRL signer') pars.add_argument('--server', default=False, action='store_true', help='mark the certificate as a server') pars.add_argument('name', help='common name for the certificate') opts = pars.parse_args(argv) certdir = gendir(opts.certdir) pkeypath = os.path.join(certdir,'%s.key' % opts.name) certpath = os.path.join(certdir,'%s.crt' % opts.name) if os.path.exists(pkeypath): outp.printf('key exists: %s' % (pkeypath,)) return(-1) if os.path.exists(certpath): outp.printf('cert exists: %s' % (certpath,)) return(-1) pkey = crypto.PKey() pkey.generate_key(crypto.TYPE_RSA, 2048) cert = crypto.X509() cert.set_pubkey(pkey) cert.gmtime_adj_notBefore(0) cert.gmtime_adj_notAfter(10*365*24*60*60) cert.set_serial_number( int(time.time()) ) if opts.ca: ext0 = crypto.X509Extension(b'basicConstraints',False,b'CA:TRUE') cert.add_extensions([ext0]) else: keyuse = [b'digitalSignature'] extuse = [b'clientAuth'] certtype = b'client' if opts.server: certtype = b'server' extuse = [b'serverAuth'] keyuse.append(b'keyEncipherment') ext0 = crypto.X509Extension(b'nsCertType',False,certtype) ext1 = crypto.X509Extension(b'keyUsage',False,b','.join(keyuse)) extuse = b','.join(extuse) ext2 = crypto.X509Extension(b'extendedKeyUsage',False,extuse) ext3 = crypto.X509Extension(b'basicConstraints',False,b'CA:FALSE') cert.add_extensions([ext0,ext1,ext2,ext3]) subj = cert.get_subject() subj.CN = opts.name signcert = cert signpkey = pkey if opts.signas: byts = reqbytes(certdir,'%s.key' % (opts.signas,)) signpkey = crypto.load_privatekey(crypto.FILETYPE_PEM, byts) byts = reqbytes(certdir,'%s.crt' % (opts.signas,)) signcert = crypto.load_certificate(crypto.FILETYPE_PEM, byts) cert.set_issuer( signcert.get_subject() ) cert.sign( signpkey, 'sha256' ) byts = crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey) with genfile(pkeypath) as fd: fd.write(byts) outp.printf('pkey saved: %s' % (pkeypath,)) byts = crypto.dump_certificate(crypto.FILETYPE_PEM, cert) with genfile(certpath) as fd: fd.write(byts) outp.printf('cert saved: %s' % (certpath,)) return 0
def test_common_file_helpers(self): # genfile with self.getTestDir() as testdir: fd = s_common.genfile(testdir, 'woot', 'foo.bin') fd.write(b'genfile_test') fd.close() with open(os.path.join(testdir, 'woot', 'foo.bin'), 'rb') as fd: buf = fd.read() self.eq(buf, b'genfile_test') # reqpath with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'') self.eq(os.path.join(testdir, 'test.txt'), s_common.reqpath(testdir, 'test.txt')) self.raises(s_exc.NoSuchFile, s_common.reqpath, testdir, 'newp') # reqfile with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'reqfile_test') fd = s_common.reqfile(testdir, 'test.txt') buf = fd.read() self.eq(buf, b'reqfile_test') fd.close() self.raises(s_exc.NoSuchFile, s_common.reqfile, testdir, 'newp') # getfile with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'getfile_test') fd = s_common.getfile(testdir, 'test.txt') buf = fd.read() self.eq(buf, b'getfile_test') fd.close() self.none(s_common.getfile(testdir, 'newp')) # getbytes with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'getbytes_test') buf = s_common.getbytes(testdir, 'test.txt') self.eq(buf, b'getbytes_test') self.none(s_common.getbytes(testdir, 'newp')) # reqbytes with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'reqbytes_test') buf = s_common.reqbytes(testdir, 'test.txt') self.eq(buf, b'reqbytes_test') self.raises(s_exc.NoSuchFile, s_common.reqbytes, testdir, 'newp') # listdir with self.getTestDir() as dirn: path = os.path.join(dirn, 'woot.txt') with open(path, 'wb') as fd: fd.write(b'woot') os.makedirs(os.path.join(dirn, 'nest')) with open(os.path.join(dirn, 'nest', 'nope.txt'), 'wb') as fd: fd.write(b'nope') retn = tuple(s_common.listdir(dirn)) self.len(2, retn) retn = tuple(s_common.listdir(dirn, glob='*.txt')) self.eq(retn, ((path,)))
def test_common_file_helpers(self): # genfile with self.getTestDir() as testdir: fd = s_common.genfile(testdir, 'woot', 'foo.bin') fd.write(b'genfile_test') fd.close() with open(os.path.join(testdir, 'woot', 'foo.bin'), 'rb') as fd: buf = fd.read() self.eq(buf, b'genfile_test') # reqpath with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'') self.eq(os.path.join(testdir, 'test.txt'), s_common.reqpath(testdir, 'test.txt')) self.raises(s_exc.NoSuchFile, s_common.reqpath, testdir, 'newp') # reqfile with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'reqfile_test') fd = s_common.reqfile(testdir, 'test.txt') buf = fd.read() self.eq(buf, b'reqfile_test') fd.close() self.raises(s_exc.NoSuchFile, s_common.reqfile, testdir, 'newp') # getfile with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'getfile_test') fd = s_common.getfile(testdir, 'test.txt') buf = fd.read() self.eq(buf, b'getfile_test') fd.close() self.none(s_common.getfile(testdir, 'newp')) # getbytes with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'getbytes_test') buf = s_common.getbytes(testdir, 'test.txt') self.eq(buf, b'getbytes_test') self.none(s_common.getbytes(testdir, 'newp')) # reqbytes with self.getTestDir() as testdir: with s_common.genfile(testdir, 'test.txt') as fd: fd.write(b'reqbytes_test') buf = s_common.reqbytes(testdir, 'test.txt') self.eq(buf, b'reqbytes_test') self.raises(s_exc.NoSuchFile, s_common.reqbytes, testdir, 'newp') # listdir with self.getTestDir() as dirn: path = os.path.join(dirn, 'woot.txt') with open(path, 'wb') as fd: fd.write(b'woot') os.makedirs(os.path.join(dirn, 'nest')) with open(os.path.join(dirn, 'nest', 'nope.txt'), 'wb') as fd: fd.write(b'nope') retn = tuple(s_common.listdir(dirn)) self.len(2, retn) retn = tuple(s_common.listdir(dirn, glob='*.txt')) self.eq(retn, ((path, ))) # getDirSize: check against du real, appr = s_common.getDirSize(dirn) durealstr = subprocess.check_output(['du', '-B', '1', '-s', dirn]) dureal = int(durealstr.split()[0]) duapprstr = subprocess.check_output(['du', '-bs', dirn]) duappr = int(duapprstr.split()[0]) self.eq(dureal, real) self.eq(duappr, appr)
continue done.add(formvalu) form, valu = formvalu mesg = s_common.splice('node:add', form=form, valu=valu, tags=tags) ret.append(mesg) return ret if __name__ == '__main__': import sys data = {} for path in sys.argv[1:]: byts = s_common.reqbytes(path) text = byts.decode('utf8') data = scrape(text, data=data) #FIXME options for taging all / tagging forms / form props print(json.dumps({'format': 'syn', 'data': data}, sort_keys=True, indent=2)) # #print( repr( data ) ) #def scanForEmailAddresses(txt): #return [ m[0] for m in email_regex.findall(txt) ]