forum.bitel.ru http://forum.bitel.ru/ |
|
Mikrotik - Шлюз не доступен http://forum.bitel.ru/viewtopic.php?f=7&t=3292 |
Страница 1 из 1 |
Автор: | Dog [ 06 дек 2009, 20:48 ] |
Заголовок сообщения: | Mikrotik - Шлюз не доступен |
Добрый день, вчера возникла проблема с открытием шлюза Микротик. в server.log сыпятся следующие ошибки: Код: 12-06/17:34:52 ERROR [Thread-41] MikrotikGateWorker - Eval error2: TargetError 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - java.lang.RuntimeException: TargetError : at Line: 94 : in file: inline evaluation of: ``import java.util.*; import java.util.regex.*; import java.text.*; import java.sq . . . '' : throw new RuntimeException ( e ) ; 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:230) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:106) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:85) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - Caused by: TargetError : at Line: 94 : in file: inline evaluation of: ``import java.util.*; import java.util.regex.*; import java.text.*; import java.sq . . . '' : throw new RuntimeException ( e ) ; 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BSHThrowStatement.eval(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BSHBlock.evalBlock(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BSHBlock.eval(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BSHBlock.eval(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BSHTryStatement.eval(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BSHBlock.evalBlock(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BSHBlock.eval(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BshMethod.invokeImpl(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BshMethod.invoke(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bsh.BshMethod.invoke(Unknown Source) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:256) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:217) 12-06/17:34:52 ERROR [Thread-41] LoggingPrintStream - ... 2 more 12-06/17:34:52 ERROR [Thread-41] MikrotikGateWorker - Gate unaccesible - 172.31.0.253 12-06/17:34:52 ERROR [Thread-41] MikrotikGateWorker - ------------------------- 12-06/17:34:52 ERROR [Thread-41] MikrotikGateWorker - error: TargetError : at Line: 94 : in file: inline evaluation of: ``import java.util.*; import java.util.regex.*; import java.text.*; import java.sq . . . '' : throw new RuntimeException ( e ) ; сам по себе шлюз с сервера с BGB пингуется и по telnet\ssh доступен. никаких обновлений на сервер за последнее время не накатывали, кроме обновления ipn коллектора связанного с функцией "0" интерфейса. Микротик так же не обновляли, текущая версия 4.1. Используем скриптовый шлюз Микротика: Код: user_rule.editor.class=bitel.billing.module.services.ipn.editor.MikrotikContractRuleEditor gate_manager.class=bitel.billing.server.ipn.MikrotikGateWorker use.script=1 пробывал ставить use.script=0, не помогло. Код: import java.util.*;
import java.util.regex.*; import java.text.*; import java.sql.*; import ru.bitel.bgbilling.common.*; import bitel.billing.common.module.ipn.*; import bitel.billing.server.ipn.bean.*; import bitel.billing.server.ipn.*; import bitel.billing.server.util.ssh.*; import bitel.billing.server.util.*; import bitel.billing.server.util.ssh.SSHSession; protected void doSync() { host = gate.getHost(); port = gate.getPort(); gateSetup = new DefaultServerSetup( gate.getConfig(), "\r\n" ); login = gateSetup.getStringValue( "login", "root" ); pswd = gate.getKeyword(); if ( log.isDebugEnabled() ) { log.debug( " gate: " + host + ":" + port + " login: " + login + " pswd: " + pswd ); } session = null; try { session = new SSHSessionExec( host, port, login, pswd ); address_list = session.command( "ip firewall address-list print without-paging" ); for ( UserStatus status : statusList ) { new_address_list = null; cid = status.contractId; getNewRule(status); ruleType = status.ruleType; rule_id = 0; if (ruleType != null) { rule_id = ruleType.getId(); }; rules = null; if (address_list.indexOf( "cid="+cid+";rule_id="+rule_id+";") != -1) { // правило для этого договора есть на шлюзе if ( status.status > 0 ) { if ( status.status == IPNContractStatus.STATUS_REMOVED ) { // удаляем rules = getDeleteRules( status ); log.info("DeleteRules cid="+cid+" rule_id="+rule_id); } else { // закрываем rules = getCloseRules( status ); log.info("CloseRules cid="+cid+" rule_id="+rule_id); }; }; } else if ( status.status == IPNContractStatus.STATUS_OPEN ) { //открываем rules = getOpenRules( status ); log.info("OpenRules cid="+cid+" rule_id="+rule_id); }; if (rules != null) { for ( String rule : rules ) { p = Pattern.compile("rule_id"); m = p.matcher(rule); if (new_address_list == null) { new_address_list = ""; }; new_address_list = new_address_list + m.replaceAll("rule_id="+rule_id) + "\n"; }; }; if (new_address_list != null){ // print(address_list); // print(new_address_list); result = session.command(new_address_list); // print(result); }; }; } catch( Exception e ) { throw new RuntimeException( e ); } finally { if ( session != null ) { session.disconnect(); } } } private getOpenRules( status ) { return getRules( status, "\\[OPEN\\](.*)\\[/OPEN\\]" ); } private getCloseRules( status ) { return getRules( status, "\\[CLOSE\\](.*)\\[/CLOSE\\]" ); } private getDeleteRules( status ) { return getRules( status, "\\[DELETE\\](.*)\\[/DELETE\\]" ); } private getRules( status, template ) { // пользовательское правило, без типа - то все оставляем как есть rule = status.rule.getRuleText(); // типизированное правило if ( status.ruleType != null ) { rule = generateRule( rule, status.gateType, status.ruleType, status.contractId ); } pattern = Pattern.compile( template, Pattern.DOTALL ); m = pattern.matcher( rule ); if ( m.find() ) { rule = m.group( 1 ); } rule.replaceAll( "\r", "" ); return rule.split( "\n" ); } private generateRule( addresses, gateType, ruleType, cid ) { String rule; replacements = new HashMap(); replacements.put( "\\{CID\\}", String.valueOf( cid ) ); ruleText = ManadUtils.getRule( gateType, ruleType ); rule = ManadUtils.generateRule( ruleText, addresses, replacements, ruleType ); return rule; } private getNewRule(status) { if (status.ruleType == null){ return; }; H = new Hashtable(); H.put("operation", "get_ipn_rule_id"); H.put("cid", status.contractId); H.put("mid", status.mid); H.put("sid", 5); H.put("time", new GregorianCalendar()); ParseTarif(H); rule_id = H.get("rule_id"); if (rule_id != null) { rule_type_manager = new RuleTypeManager(con,status.mid); status.ruleType = rule_type_manager.getType(Integer.parseInt(rule_id)); }; } private ParseTarif(H) { H.put("is_found", false); cid = H.get("cid"); if (cid == null) { return; }; time = H.get("time"); if (time == null) { return; }; formatter = new SimpleDateFormat("yyyy-MM-dd"); tarif_date = formatter.format(time.getTime()).toString(); query = "SELECT contract_tree_link.tree_id "+ "FROM contract_tree_link "+ "WHERE "+ "(contract_tree_link.date1 is NULL OR contract_tree_link.date1<='"+tarif_date+"') AND "+ "(contract_tree_link.date2 is NULL OR contract_tree_link.date2>='"+tarif_date+"') AND "+ "contract_tree_link.cid='"+cid+"' "+ "UNION "+ "SELECT tariff_tree_link.tree_id "+ "FROM contract_tariff "+ " INNER JOIN tariff_tree_link "+ " ON (contract_tariff.tpid=tariff_tree_link.tpid) "+ "WHERE (contract_tariff.date1 is NULL OR contract_tariff.date1<='"+tarif_date+"') AND "+ "(contract_tariff.date2 is NULL OR contract_tariff.date2>='"+tarif_date+"') AND "+ "contract_tariff.cid='"+cid+"'"; re = con.prepareStatement(query); rs = re.executeQuery(); while (rs.next()) { tree_id = rs.getString(1); ParseMTree(tree_id,H); }; } private ParseMTree(tree_id,H) { is_found = H.get("is_found"); if (is_found == null) { return; }; if (is_found) { return; }; mid = H.get("mid"); if (mid == null) { return; }; query = "SELECT mtree_node.id "+ "FROM module_tariff_tree "+ " INNER JOIN mtree_node "+ " ON (module_tariff_tree.id=mtree_node.mtree_id) "+ "WHERE mtree_node.type='root' AND module_tariff_tree.tree_id='"+tree_id+"' AND module_tariff_tree.mid='"+mid+"'"; re = con.prepareStatement(query); rs = re.executeQuery(); while (rs.next()) { node_id = rs.getString(1); ParseNode(node_id,H); }; } private ParseNode(node_id,H) { is_found = H.get("is_found"); if (is_found == null) { return; }; if (is_found) { return; }; sid = H.get("sid"); if (sid == null) { return; }; operation = H.get("operation"); if (operation == null) { return; }; time = H.get("time"); if (time == null) { return; }; query = "SELECT id, type, data FROM mtree_node WHERE parent_node='"+node_id+"'"; re = con.prepareStatement(query); rs = re.executeQuery(); while (rs.next()) { id = rs.getString(1); type = rs.getString(2); data = rs.getString(3); if (type.equals("service") && sid != Integer.parseInt(data)) { continue; }; if (type.equals("ipn_rule") && operation.equals("get_ipn_rule_id")) { datas = data.split ("&"); H.put("rule_id",datas[1]); H.put("is_found",true); }; if (type.equals("period")) { datas = data.split ("%"); date1 = null; date2 = null; for (i=0; i<datas.length; i++) { date_arr = datas[i].split("&"); if (date_arr.length != 2) { continue; }; formatter = new SimpleDateFormat("dd.MM.yyyy"); date = formatter.parse(date_arr[1]); if (date_arr[0].equals("date1")) { date1 = date; }; if (date_arr[0].equals("date2")) { date2 = date; }; }; if (date1 != null && date1.compareTo(time.getTime()) != -1){ continue; }; if (date2 != null && date2.compareTo(time.getTime()) != 1){ continue; }; }; ParseNode(id,H); }; }; |
Автор: | Dog [ 07 дек 2009, 13:41 ] |
Заголовок сообщения: | Re: Mikrotik - Шлюз не доступен |
BGBillingServer v 4.6 build 580 from 07.10.2009 10:01:50 |
Автор: | Dog [ 08 дек 2009, 15:52 ] |
Заголовок сообщения: | Re: Mikrotik - Шлюз не доступен |
Уважаемые разработчики, ответьте по проблеме, половина наших пользователей висит в закрытом состоянии после блокировки, приходится дергать их руками. |
Автор: | Dog [ 08 дек 2009, 18:00 ] |
Заголовок сообщения: | Re: Mikrotik - Шлюз не доступен |
вопрос закрыт. проблема решена. |
Автор: | stark [ 11 дек 2009, 20:23 ] |
Заголовок сообщения: | Re: Mikrotik - Шлюз не доступен |
Dog писал(а): вопрос закрыт. проблема решена. а в чем дело то было? |
Автор: | mikos [ 12 апр 2010, 20:58 ] |
Заголовок сообщения: | Re: Mikrotik - Шлюз не доступен |
Полагаю таймаут добавил |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |