def gencert(self, name, vars, hostname): # Make sure our folders are in place if not os.path.exists('/etc/ssl/certs/genesis'): os.mkdir('/etc/ssl/certs/genesis') if not os.path.exists('/etc/ssl/private/genesis'): os.mkdir('/etc/ssl/private/genesis') # If system time is way off, raise an error try: st = SystemTime.get_offset() if st < -3600 or st > 3600: raise SystemTimeError(st) except: raise SystemTimeError('UNKNOWN') # Check to see that we have a CA ready ca_cert_path = '/etc/ssl/certs/genesis/ca/' + hostname + '.pem' ca_key_path = '/etc/ssl/private/genesis/ca/' + hostname + '.key' if not os.path.exists(ca_cert_path) and not os.path.exists( ca_key_path): self.create_authority(hostname) ca_cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, open(ca_cert_path).read()) ca_key = OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM, open(ca_key_path).read()) # Generate a key, then use it to sign a new cert # We'll use 2048-bit RSA until pyOpenSSL supports ECC keytype = OpenSSL.crypto.TYPE_DSA if self.app.get_config( self).keytype == 'DSA' else OpenSSL.crypto.TYPE_RSA keylength = int(self.app.get_config(self).keylength) try: key = OpenSSL.crypto.PKey() key.generate_key(keytype, keylength) crt = OpenSSL.crypto.X509() crt.set_version(3) if vars.getvalue('certcountry', ''): crt.get_subject().C = vars.getvalue('certcountry') if vars.getvalue('certsp', ''): crt.get_subject().ST = vars.getvalue('certsp') if vars.getvalue('certlocale', ''): crt.get_subject().L = vars.getvalue('certlocale') if vars.getvalue('certcn', ''): crt.get_subject().CN = vars.getvalue('certcn') if vars.getvalue('certemail', ''): crt.get_subject().emailAddress = vars.getvalue('certemail') crt.get_subject().O = 'arkOS Servers' crt.set_serial_number(int(SystemTime.get_serial_time())) crt.gmtime_adj_notBefore(0) crt.gmtime_adj_notAfter(2 * 365 * 24 * 60 * 60) crt.set_issuer(ca_cert.get_subject()) crt.set_pubkey(key) crt.sign(ca_key, 'sha1') except Exception, e: raise Exception('Error generating self-signed certificate: ' + str(e))
def get_ui(self): ui = self.app.inflate('sysconfig:main') systime = SystemTime.get_datetime('%s, %s' \ % (self.app.gconfig.get('genesis', 'dformat', '%d %b %Y'), self.app.gconfig.get('genesis', 'tformat', '%H:%M'))) offset = 0 try: offset = SystemTime.get_offset() except Exception, e: self.app.log.error('Could not get Internet time. Please check your connection. Error: %s' % str(e)) self.put_message('err', 'Could not get Internet time. Please check your connection.')
def gencert(self, name, vars, keytype, keylength, hostname): # Make sure our folders are in place if not os.path.exists('/etc/ssl/certs/genesis'): os.mkdir('/etc/ssl/certs/genesis') if not os.path.exists('/etc/ssl/private/genesis'): os.mkdir('/etc/ssl/private/genesis') # If system time is way off, raise an error try: st = SystemTime.get_offset() if st < -3600 or st > 3600: raise SystemTimeError(st) except: raise SystemTimeError('UNKNOWN') # Check to see that we have a CA ready ca_cert_path = '/etc/ssl/certs/genesis/ca/'+hostname+'.pem' ca_key_path = '/etc/ssl/private/genesis/ca/'+hostname+'.key' if not os.path.exists(ca_cert_path) and not os.path.exists(ca_key_path): self.create_authority(hostname) ca_cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, open(ca_cert_path).read()) ca_key = OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM, open(ca_key_path).read()) # Generate a key, then use it to sign a new cert # We'll use 2048-bit RSA until pyOpenSSL supports ECC keytype = OpenSSL.crypto.TYPE_DSA if keytype == 'DSA' else OpenSSL.crypto.TYPE_RSA keylength = int(keylength) try: key = OpenSSL.crypto.PKey() key.generate_key(keytype, keylength) crt = OpenSSL.crypto.X509() crt.set_version(3) if vars.getvalue('certcountry', ''): crt.get_subject().C = vars.getvalue('certcountry') if vars.getvalue('certsp', ''): crt.get_subject().ST = vars.getvalue('certsp') if vars.getvalue('certlocale', ''): crt.get_subject().L = vars.getvalue('certlocale') if vars.getvalue('certcn', ''): crt.get_subject().CN = vars.getvalue('certcn') if vars.getvalue('certemail', ''): crt.get_subject().emailAddress = vars.getvalue('certemail') crt.get_subject().O = 'arkOS Servers' crt.set_serial_number(int(SystemTime.get_serial_time())) crt.gmtime_adj_notBefore(0) crt.gmtime_adj_notAfter(2*365*24*60*60) crt.set_issuer(ca_cert.get_subject()) crt.set_pubkey(key) crt.sign(ca_key, 'sha1') except Exception, e: raise Exception('Error generating self-signed certificate: '+str(e))
def get_ui(self): ui = self.app.inflate('sysconfig:main') systime = SystemTime.get_datetime('%s, %s' \ % (self.app.gconfig.get('genesis', 'dformat', '%d %b %Y'), self.app.gconfig.get('genesis', 'tformat', '%H:%M'))) offset = 0 try: offset = SystemTime.get_offset() except Exception, e: self.app.log.error( 'Could not get Internet time. Please check your connection. Error: %s' % str(e)) self.put_message( 'err', 'Could not get Internet time. Please check your connection.')
class SysConfigPlugin(CategoryPlugin): text = 'System Settings' iconfont = 'gen-cog' folder = False def on_init(self): self._mgr = self.app.get_backend(apis.services.IServiceManager) self._be = backend.Config(self.app) self._st = SystemTime() self.hostname = self._be.gethostname() def get_ui(self): ui = self.app.inflate('sysconfig:main') systime = self._st.get_datetime('%d %B %Y, %H:%M:%S') offset = 0 try: offset = self._st.get_offset() except Exception, e: self.app.log.error('Could not get Internet time. Please check your connection. Error: %s' % str(e)) self.put_message('err', 'Could not get Internet time. Please check your connection.') # General ui.find('hostname').set('value', self.hostname) if os.path.exists('/etc/localtime'): tz_active = os.path.realpath('/etc/localtime').split('/usr/share/zoneinfo/')[1] tz_sel = [UI.SelectOption(text=x, value=x, selected=True if tz_active in x else False) for x in zonelist.zones] ui.appendAll('zoneselect', *tz_sel) # Time ui.find('systime').set('text', systime) ui.find('offset').set('text', '%s seconds' % offset) # Tools if shell_cs('which logrunnerd')[0] != 0: lrstat = 'Not installed' else: if self._mgr.get_status('logrunner') == 'running': lrstat = 'Running' ui.find('fllogrunner').append(UI.Button(text="Stop", id="svc/logrunner/stop")) else: lrstat = 'Not running' ui.find('fllogrunner').append(UI.Button(text="Start", id="svc/logrunner/start")) if self._mgr.get_enabled('logrunner') == 'enabled': lrstat += ' and enabled on boot' ui.find('fllogrunner').append(UI.Button(text="Disable on boot", id="svc/logrunner/disable")) else: lrstat += ' and not enabled on boot' ui.find('fllogrunner').append(UI.Button(text="Enable on boot", id="svc/logrunner/enable")) if shell_cs('which beacond')[0] != 0: bestat = 'Not installed' else: if self._mgr.get_status('beacon') == 'running': lrstat = 'Running' ui.find('flbeacon').append(UI.Button(text="Stop", id="svc/beacon/stop")) else: lrstat = 'Not running' ui.find('flbeacon').append(UI.Button(text="Start", id="svc/beacon/start")) if self._mgr.get_enabled('beacon') == 'enabled': lrstat += ' and enabled on boot' ui.find('flbeacon').append(UI.Button(text="Disable on boot", id="svc/beacon/disable")) else: lrstat += ' and not enabled on boot' ui.find('flbeacon').append(UI.Button(text="Enable on boot", id="svc/beacon/enable")) ui.find('logrunner').set('text', lrstat) ui.find('beacon').set('text', bestat) if self._changed: self.put_message('warn', 'A restart is required for this setting change to take effect.') return ui
class SysConfigPlugin(CategoryPlugin): text = 'System Settings' iconfont = 'gen-cog' folder = False def on_init(self): self._mgr = self.app.get_backend(apis.services.IServiceManager) self._be = backend.Config(self.app) self._st = SystemTime() self.hostname = self._be.gethostname() def get_ui(self): ui = self.app.inflate('sysconfig:main') systime = self._st.get_datetime('%s, %s' \ % (self.app.gconfig.get('genesis', 'dformat', '%d %b %Y'), self.app.gconfig.get('genesis', 'tformat', '%H:%M'))) offset = 0 try: offset = self._st.get_offset() except Exception, e: self.app.log.error( 'Could not get Internet time. Please check your connection. Error: %s' % str(e)) self.put_message( 'err', 'Could not get Internet time. Please check your connection.') # General ui.find('hostname').set('value', self.hostname) tz_active = os.path.realpath('/etc/localtime').split( '/usr/share/zoneinfo/')[1] if os.path.exists( '/etc/localtime') else '' tz_sel = [ UI.SelectOption(text=x, value=x, selected=True if tz_active in x else False) for x in zonelist.zones ] ui.appendAll('zoneselect', *tz_sel) # Time ui.find('systime').set('text', systime) ui.find('offset').set('text', '%s seconds' % offset) # Tools if shell_cs('which logrunnerd')[0] != 0: lrstat = 'Not installed' else: if self._mgr.get_status('logrunner') == 'running': lrstat = 'Running' ui.find('fllogrunner').append( UI.Button(text="Stop", id="svc/logrunner/stop")) else: lrstat = 'Not running' ui.find('fllogrunner').append( UI.Button(text="Start", id="svc/logrunner/start")) if self._mgr.get_enabled('logrunner') == 'enabled': lrstat += ' and enabled on boot' ui.find('fllogrunner').append( UI.Button(text="Disable on boot", id="svc/logrunner/disable")) else: lrstat += ' and not enabled on boot' ui.find('fllogrunner').append( UI.Button(text="Enable on boot", id="svc/logrunner/enable")) if shell_cs('which beacond')[0] != 0: bestat = 'Not installed' else: if self._mgr.get_status('beacon') == 'running': bestat = 'Running' ui.find('flbeacon').append( UI.Button(text="Stop", id="svc/beacon/stop")) else: bestat = 'Not running' ui.find('flbeacon').append( UI.Button(text="Start", id="svc/beacon/start")) if self._mgr.get_enabled('beacon') == 'enabled': bestat += ' and enabled on boot' ui.find('flbeacon').append( UI.Button(text="Disable on boot", id="svc/beacon/disable")) else: bestat += ' and not enabled on boot' ui.find('flbeacon').append( UI.Button(text="Enable on boot", id="svc/beacon/enable")) ui.find('logrunner').set('text', lrstat) ui.find('beacon').set('text', bestat) if self._changed: self.put_message( 'warn', 'A restart is required for this setting change to take effect.' ) return ui