Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
 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.')
Exemplo n.º 3
0
	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))
Exemplo n.º 4
0
 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.')
Exemplo n.º 5
0
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
Exemplo n.º 6
0
Arquivo: main.py Projeto: tewe/genesis
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