int CRuleManager::MatchRule(CWebPage* web, int Range, string fileName) { string ruleString; web->m_pageRule = new CRule; switch(Range) { case 0:/*All Range*/ { break; } case 1:/*Local File*/ { //read file ruleString = GetJsonToStringFromLocal(fileName); //turn to rule class ReadJson(ruleString, web->m_pageRule); //turn rule to string ruleString = ""; WriteJson(web->m_pageRule, ruleString); //cout << ruleString << endl; //string cmd = string("echo \'") + ruleString + "\' >> "+"./b.txt"; //system(cmd.c_str()); break; } case 2:/*Rule DateBase*/ { break; } case 3:/*Cloud*/ { break; } } return 0; }
int cli(int argc, char** argv) { int s, rv; char port[6]; /* strlen("65535"); */ struct addrinfo hints, *servinfo, *p; if(argc < 2) { printf("Usage: cli <dest> [<payload>]\n"); return 1; } snprintf(port, 6, "%d", 7621); memset(&hints,0,sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; if ((rv = getaddrinfo("127.0.0.1",port,&hints,&servinfo)) != 0) { printf("Error: %s\n", gai_strerror(rv)); return 1; } for (p = servinfo; p != NULL; p = p->ai_next) { if ((s = socket(p->ai_family,p->ai_socktype,p->ai_protocol)) == -1) continue; if (connect(s,p->ai_addr,p->ai_addrlen) == -1) { close(s); continue; } goto end; } if (p == NULL) { printf("Can't create socket: %s\n",strerror(errno)); return 1; } end: freeaddrinfo(servinfo); Socket sock(s); if(argc == 3) { wire::Message msg; if(getenv("CONFIRM")) { wire::ConnectionConfigure cfg; cfg.set_confirm(true); wire::Action act; act.set_type(eConfigure); act.set_payload(cfg.SerializeAsString()); msg.set_destination("+"); msg.set_payload(act.SerializeAsString()); sock.write_block(msg); msg.set_confirm_id(7); } msg.set_destination(argv[1]); msg.set_payload(argv[2]); if(getenv("QUEUE")) { msg.set_flags(eQueue); } sock.write_block(msg); std::cout << "Sent " << msg.ByteSize() << " bytes to " << argv[1] << "\n"; if(getenv("CONFIRM")) { wire::Message in; if(!sock.read_block(in)) { std::cerr << "Unable to read confirm message\n"; return 1; } if(in.destination() == "+") { wire::Action act; if(!act.ParseFromString(in.payload())) { std::cerr << "Malformed action received to '+'\n"; return 1; } if(act.id() == 7) { std::cout << "Confirmed message received\n"; } } } } else { bool use_acks = (getenv("REQ_ACK") != 0); if(use_acks) { wire::ConnectionConfigure cfg; cfg.set_ack(true); wire::Action act; act.set_type(eConfigure); act.set_payload(cfg.SerializeAsString()); wire::Message msg; msg.set_destination("+"); msg.set_payload(act.SerializeAsString()); sock.write_block(msg); } wire::Action act; if(std::string(argv[1]) == "-t") { wire::ConnectionConfigure cfg; cfg.set_tap(true); act.set_type(eConfigure); act.set_payload(cfg.SerializeAsString()); std::cout << "Tapped all messages\n"; } else { act.set_type(eSubscribe); act.set_payload(argv[1]); std::cout << "Listening on " << argv[1] << "\n"; } wire::Message msg; msg.set_destination("+"); msg.set_payload(act.SerializeAsString()); sock.write_block(msg); for(;;) { wire::Message in; if(!sock.read_block(in)) { std::cerr << "Socket closed by server\n"; return 1; } WriteJson(in, std::cout); if(use_acks) { if(getenv("ACK_CRASH")) return -1; if(in.has_id()) { act.set_type(eAck); act.set_id(in.id()); msg.set_destination("+"); msg.set_payload(act.SerializeAsString()); std::cout << "ACK'd message " << act.id() << "\n"; sock.write_block(msg); } else { std::cerr << "Wanted to ACK a message with no id\n"; } } if(getenv("ONCE")) break; } } return 0; }