def post(self, name): req = self.validate_message(self.request.content.read(), requests.AdminTLSCfgFileResourceDesc) file_res_cls = self.get_file_res_or_raise(name) yield file_res_cls.generate_dh_params_if_missing() ok = yield file_res_cls.create_file(req['content']) if not ok: raise errors.ValidationError()
def perform_action(store, csr_fields): db_cfg = load_tls_dict(store) pkv = tls.PrivKeyValidator() ok, err = pkv.validate(db_cfg) if not ok or not err is None: raise err key_pair = db_cfg['ssl_key'] try: csr_txt = tls.gen_x509_csr_pem(key_pair, csr_fields, GLSettings.csr_sign_bits) log.debug("Generated a new CSR") return csr_txt except Exception as e: log.err(e) raise errors.ValidationError('CSR gen failed')
def post(self): if GLSettings.memory_copy.hostname == '': raise errors.ValidationError('hostname is not set') net_agent = GLSettings.get_agent() t = ('http', GLSettings.memory_copy.hostname, 'robots.txt', None, None) url = bytes(urlparse.urlunsplit(t)) try: resp = yield net_agent.request('GET', url) body = yield readBody(resp) server_h = resp.headers.getRawHeaders('Server', [None])[-1].lower() if not body.startswith('User-agent: *') or server_h != 'globaleaks': raise EnvironmentError('Response unexpected') except (EnvironmentError, ConnectError) as e: log.err(e) raise errors.ExternalResourceError()
def post(self, name): request = self.validate_message(self.request.content.read(), requests.AdminCSRFileDesc) desc = request['content'] csr_fields = { 'C': desc['country'].upper(), 'ST': desc['province'], 'L': desc['city'], 'O': desc['company'], 'OU': desc['department'], 'CN': desc['commonname'], 'emailAddress': desc['email'], } csr_txt = yield self.perform_action(csr_fields) file_res_cls = self.get_file_res_or_raise(name) ok = yield file_res_cls.create_file(csr_txt) if not ok: raise errors.ValidationError()