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
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()
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
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()