Example #1
0
class TestAeolusHA(unittest.TestCase):
    def setUp(self):
        self.qpidd = ProcessMonitor(['qpidd', '-p', '49000', '--auth', 'no'])
        time.sleep(1)
        self.cped = ProcessMonitor(['../src/cped', '-v', '-v', '-v'])
        self.manufacturer = manufacturer.Manufacturer('rhel6')
        time.sleep(2)

    def test_one_assembly(self):
        '''
        Start a deployable wth one assembly.
        Assertion: it is started and we can run acommand on it.
        '''
        self.assertTrue(self.qpidd.is_running())
        self.assertTrue(self.cped.is_running())

        d = deployable.Deployable('test')
        ai1 = self.manufacturer.assemble('rhel6-cpe-test', 2)
        d.assembly_add(ai1)
        d.start()
        (rc, out) = d.assemblies['rhel6-cpe-test-2'].rsh('hostname')
        self.assertEqual(rc, 0)
        self.assertEqual(out.strip(), 'rhel6-cpe-test-2')
        d.stop()

        self.assertTrue(self.qpidd.is_running())
        self.assertTrue(self.cped.is_running())

    def tearDown(self):
        #self.manufacturer.stop()
        self.cped.stop()
        self.qpidd.stop()
        pass
Example #2
0
def hack():
    only_startup = False
    dist = "rhel6"

    qpidd = ProcessMonitor(['qpidd', '-p', '49000', '--auth', 'no'])
    time.sleep(1)
    cped = ProcessMonitor(['../src/cped', '-v', '-v', '-v'])
    manu = manufacturer.Manufacturer(dist)
    time.sleep(2)

    print 'qpidd and cped running, moving on ...'
    d = deployable.Deployable('test')
    print 'assemling guest'
    ai1 = manu.assemble('%s-cpe-test' % dist, 2)
    print 'adding to dep'
    d.assembly_add(ai1)

    httpd = deployable.Service('httpd')
    d.service_add(httpd)

    print 'starting dep'
    d.start(only_startup)
    while (only_startup):
        time.sleep(1)

    ai1 = d.assemblies['%s-cpe-test-2' % dist]
    print "rsh'ing to assembly"
    ai1.rsh('hostname')

    time.sleep(90)

    d.stop()
    time.sleep(10)
    cped.stop()
    qpidd.stop()
Example #3
0
class TestAeolusHA(unittest.TestCase):

    def setUp(self):
        self.qpidd = ProcessMonitor(['qpidd', '-p', '49000', '--auth', 'no'])
        time.sleep(1)
        self.cped = ProcessMonitor(['../src/cped', '-v', '-v', '-v'])
        self.manufacturer = manufacturer.Manufacturer('rhel6')
        time.sleep(2)

    def test_one_assembly(self):
        '''
        Start a deployable wth one assembly.
        Assertion: it is started and we can run acommand on it.
        '''
        self.assertTrue(self.qpidd.is_running())
        self.assertTrue(self.cped.is_running())

        d = deployable.Deployable('test')
        ai1 = self.manufacturer.assemble('rhel6-cpe-test', 2)
        d.assembly_add(ai1)
        d.start()
        (rc, out) = d.assemblies['rhel6-cpe-test-2'].rsh('hostname')
        self.assertEqual(rc, 0)
        self.assertEqual(out.strip(), 'rhel6-cpe-test-2')
        d.stop()

        self.assertTrue(self.qpidd.is_running())
        self.assertTrue(self.cped.is_running())

    def tearDown(self):
        #self.manufacturer.stop()
        self.cped.stop()
        self.qpidd.stop()
        pass
Example #4
0
def hack():
    only_startup = False
    dist = "rhel6"

    qpidd = ProcessMonitor(['qpidd', '-p', '49000', '--auth', 'no'])
    time.sleep(1)
    cped = ProcessMonitor(['../src/cped', '-v', '-v', '-v'])
    manu = manufacturer.Manufacturer(dist)
    time.sleep(2)

    print 'qpidd and cped running, moving on ...'
    d = deployable.Deployable('test')
    print 'assemling guest'
    ai1 = manu.assemble('%s-cpe-test' % dist, 2)
    print 'adding to dep'
    d.assembly_add(ai1)

    httpd = deployable.Service('httpd')
    d.service_add(httpd)

    print 'starting dep'
    d.start(only_startup)
    while (only_startup):
        time.sleep(1)

    ai1 = d.assemblies['%s-cpe-test-2' % dist]
    print "rsh'ing to assembly"
    ai1.rsh('hostname')

    time.sleep(90)

    d.stop()
    time.sleep(10)
    cped.stop()
    qpidd.stop()
Example #5
0
class SsManager():
    def __init__(self, settings):
        # Initialise the parent class
        self.settings = settings
        self.conf = None
        self.tmp_folder = os.path.join(tempfile.gettempdir(), 'shadowsocks')
        self.ss_cmd = "/system/bin/ss-server -c /etc/shadowsocks/config.json"
        self.settings['APP'] = 'ss_server'
        self.settings['CMD'] = self.ss_cmd.split()
        self.settings['PIDFILE'] = self.tmp_folder + '/ss_server.pid'
        self.settings['LOG'] = self.tmp_folder + '/ss_server.log'
        self.settings['TMP'] = self.tmp_folder + '/ss_server.tmp'
        self.ssMgr = ProcessMonitor(settings)
        self.__do_init()
        logger = logging.getLogger("ss-server")
        logger.setLevel(logging.DEBUG)
        formatter = logging.Formatter(
            '%(asctime)s %(levelname)-8s %(message)s', '%Y-%m-%d %H:%M:%S')
        file_handler = logging.FileHandler(self.settings['LOG'])
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)
        self.portInfo = {}

    def start(self):
        logger.info('...shadowsocks start')
        self.ret, self.portInfo = add_socks_port()
        if self.ret is not True:
            logger.info('Added upnp port failed')
            self.portInfo = setup_relay_info()

        self.ret, self.conf = generate_client_conf(self.portInfo)
        if self.ret is not True:
            return self.ret[0]
        logger.info('client conf path: %s' % self.get_client_conf())

        if self.ssMgr.start() is True:
            logger.info('...shadowsocks start success')

        return 0

    def stop(self):
        logger.info('...shadowsocks stop')
        self.ret = self.ssMgr.stop()
        if self.portInfo.has_key('exPort'):
            del_socks_port(self.portInfo)
        if self.ret is not True:
            return self.ret[0]
        logger.info('...shadowsocks stop success')

    def check_state(self):
        if self.ssMgr.status() is None:
            return False
        else:
            return True

    def restart(self):
        self.ssMgr.restart()

    def __init_folder(self):
        if not os.path.exists(self.tmp_folder):
            os.makedirs(self.tmp_folder)

    def __is_reboot(self):
        if (os.path.exists(self.tmp_folder)):
            return False
        else:
            os.mkdir(self.tmp_folder)
            return True

    def __do_init(self):
        if self.__is_reboot() is True:
            print '...shadowsocks do init'
            self.__init_folder()

    def get_client_conf(self):
        cert_list = check_ss_conf()
        if self.conf is None:
            return None
        if self.conf in cert_list:
            cert_path = get_conf_dir() + '/' + self.conf
            return cert_path
        else:
            return None
Example #6
0
class OpenvpnManager():
    def __init__(self, settings):
        # Initialise the parent class
        self.settings = settings
        self.conf = None
        self.tmp_folder = os.path.join(tempfile.gettempdir(), 'openvpn')
        self.openvpn_cmd = "/system/bin/openvpn --dev-node /dev/tun --config /etc/openvpn/openvpn_server.conf --tmp-dir %s" % self.tmp_folder
        self.settings['APP'] = 'openvpn_server'
        self.settings['CMD'] = self.openvpn_cmd.split()
        self.settings['PIDFILE'] = self.tmp_folder + '/openvpn_server.pid'
        self.settings['LOG'] = self.tmp_folder + '/openvpn_server.log'
        self.settings['TMP'] = self.tmp_folder + '/openvpn_server.tmp'
        self.openvpnMgr = ProcessMonitor(settings)
        self.__do_init()
        logger = logging.getLogger("openvpn")
        logger.setLevel(logging.DEBUG)
        formatter = logging.Formatter(
            '%(asctime)s %(levelname)-8s %(message)s', '%Y-%m-%d %H:%M:%S')
        file_handler = logging.FileHandler(self.settings['LOG'])
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)
        #logger.basicConfig(level=logger.DEBUG,
        #                format='%(asctime)s %(levelname)-8s %(message)s',
        #                filename=self.settings['LOG'],datefmt='%Y-%m-%d %H:%M:%S', filemode='a+')
        self.portInfo = {}
        #self.stop()

    def start(self):
        logger.info('...openvpn start')
        self.ret = cert_init()
        if self.ret is not True:
            return self.ret[0]
        self.ret, self.portInfo = add_openvpn_port()
        if self.ret is not True:
            logger.info('Added upnp port failed')
            self.portInfo = setup_relay_info()

        self.ret, self.conf = generate_client_conf(self.portInfo)
        if self.ret is not True:
            return self.ret[0]
        logger.info('client conf path: %s' % self.get_client_conf())

        self.ret = self.openvpnMgr.start()

        if self.ret is not True:
            return self.ret[0]

        #if self.portInfo['ip']=='relay_ip':
        #    self.ret=lunch_ecs()

        logger.info('...openvpn start success')
        return 0

    def stop(self):
        logger.info('...openvpn stop')
        self.ret = self.openvpnMgr.stop()
        if self.portInfo.has_key('exPort'):
            del_openvpn_port(self.portInfo)
        if self.ret is not True:
            return self.ret[0]
        logger.info('...openvpn stop success')
        return 0

    def restart(self):
        self.openvpnMgr.restart()

    def check_state(self):
        if self.openvpnMgr.status() is None:
            return False
        else:
            return True

    def __insert_tunko(self):
        cmd = 'insmod /system/lib/tun.ko'
        ret = os.system(cmd)

    def __init_folder(self):
        if not os.path.exists(self.tmp_folder):
            os.makedirs(self.tmp_folder)
        os.system('chmod -R 755 /etc/openvpn')  #generate crt in the folder

    def __iptable_setup(self):
        ret = 0
        cmd = 'echo "1" > /proc/sys/net/ipv4/ip_forward'
        ret |= os.system(cmd)
        cmd = 'iptables -A INPUT -i eth0 -p tcp --dport 1194 -j ACCEPT'
        ret |= os.system(cmd)
        # Allow TUN interface connections to OpenVPN server
        cmd = 'iptables -A INPUT -i tun+ -j ACCEPT'
        ret |= os.system(cmd)
        # Allow TUN interface connections to be forwarded through other interfaces
        cmd = 'iptables -A FORWARD -i tun+ -j ACCEPT'
        ret |= os.system(cmd)
        cmd = 'iptables -A FORWARD -i tun+ -o eth0 -j ACCEPT'
        ret |= os.system(cmd)
        cmd = 'iptables -A FORWARD -i eth0 -o tun+ -j ACCEPT'
        ret |= os.system(cmd)
        # NAT the VPN client traffic to the internet
        cmd = 'iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE'
        ret |= os.system(cmd)
        return ret

    def __is_reboot(self):
        if (os.path.exists(self.tmp_folder)):
            return False
        else:
            os.mkdir(self.tmp_folder)
            return True

    def __do_init(self):
        if self.__is_reboot() is True:
            print '...openvpn do init'
            if os.path.exists('/dev/tun') is not True:
                self.__insert_tunko()
            self.__iptable_setup()
            self.__init_folder()

    def get_client_conf(self):
        cert_list = check_ovpn_file()
        if self.conf is None:
            return None
        if self.conf in cert_list:
            cert_path = get_key_dir() + '/' + self.conf
            return cert_path
        else:
            return None

    def gen_client_conf(self):
        logger.info('...generate client conf')
        self.ret = cert_init()
        if self.ret is not True:
            return self.ret[0]
        self.ret, self.portInfo = add_openvpn_port()
        if self.ret is not True:
            return self.ret[0]
        self.ret, self.conf = generate_client_conf(self.portInfo)
        if self.ret is not True:
            return self.ret[0]
        logger.info('client conf path: %s' % self.get_client_conf())
        return 0

    def revoke_client(self):
        return revoke_client_crt()