Пример #1
0
static int do_rotate(LOGGER_HANDLE *log)
{
  char namebuf[FN_REFLEN];
  int result;
  unsigned int i;
  char *buf_old, *buf_new, *tmp;

  if (log->rotations == 0)
    return 0;

  memcpy(namebuf, log->path, log->path_len);

  buf_new= logname(log, namebuf, log->rotations);
  buf_old= log->path;
  for (i=log->rotations-1; i>0; i--)
  {
    logname(log, buf_old, i);
    if (!access(buf_old, F_OK) &&
        (result= my_rename(buf_old, buf_new, MYF(0))))
      goto exit;
    tmp= buf_old;
    buf_old= buf_new;
    buf_new= tmp;
  }
  if ((result= my_close(log->file, MYF(0))))
    goto exit;
  namebuf[log->path_len]= 0;
  result= my_rename(namebuf, logname(log, log->path, 1), MYF(0));
  log->file= my_open(namebuf, LOG_FLAGS, MYF(0));
exit:
  errno= my_errno;
  return log->file < 0 || result;
}
Пример #2
0
void
finduser(register struct packet *pkt)
{
    register char *p;
    char	*user;
    char groupid[6];
    int none;
    int ok_user;
    extern char saveid[];

    none = 1;
#if 0
    user = logname();
#else
    user = saveid;
#endif
    sprintf(groupid,"%lu",(unsigned long)getgid());
    while ((p = getline(pkt)) != NULL && *p != CTLCHAR) {
        none = 0;
        ok_user = 1;
        repl(p,'\n','\0');	/* this is done for equal test below */
        if(*p == '!') {
            ++p;
            ok_user = 0;
        }
        if (!pkt->p_user)
            if (equal(user,p) || equal(groupid,p))
                pkt->p_user = ok_user;
        *(strend(p)) = '\n';	/* repl \0 end of line w/ \n again */
    }
    if (none)
        pkt->p_user = 1;
    if (p == NULL || p[1] != EUSERNAM)
        fmterr(pkt);
}
Пример #3
0
//-------------------------------------------------------------------------------------------------
Logger *Configuration::create_logger(const XmlElement *from, const Logtype ltype, const SessionID *sid) const
{
	string name;
	if (from && from->GetAttr(ltype == session_log ? "session_log" : "protocol_log", name))
	{
		const XmlElement *which(find_logger(name));
		if (which)
		{
			string type;
			if (which->GetAttr("type", type)
				&& ((type % "session" && ltype == session_log) || (type % "protocol" && ltype == protocol_log)))
			{
				string logname("logname_not_set.log");
				which->FindAttrRef("filename", logname);
				trim(logname);

				if (logname[0] == '|')
#ifndef HAVE_POPEN
					throw f8Exception("popen not supported on your platform");
#endif
					return new PipeLogger(logname, get_logflags(which));

				RegMatch match;
				if (_ipexp.SearchString(match, logname, 3) == 3)
				{
					f8String ip, port;
					_ipexp.SubExpr(match, logname, ip, 0, 1);
					_ipexp.SubExpr(match, logname, port, 0, 2);
					BCLogger *bcl(new BCLogger(ip, get_value<unsigned>(port), get_logflags(which)));
					if (*bcl)
						return bcl;
				}

				get_logname(which, logname, sid); // only applies to file loggers
				return new FileLogger(logname, get_logflags(which), get_logfile_rotation(which));
			}
		}
	}

	return 0;
}
Пример #4
0
//-------------------------------------------------------------------------------------------------
Logger *Configuration::create_logger(const XmlEntity *from, const Logtype ltype) const
{
	string name;
	if (from && from->GetAttr(ltype == session_log ? "session_log" : "protocol_log", name))
	{
		const XmlEntity *which(find_logger(name));
		if (which)
		{
			string type;
			if (which->GetAttr("type", type)
				&& ((type % "session" && ltype == session_log) || (type % "protocol" && ltype == protocol_log)))
			{
				string logname("logname_not_set.log");
				trim(get_logname(which, logname));

				if (logname[0] == '|' || logname[0] == '!')
					return new PipeLogger(logname, get_logflags(which));

				RegMatch match;
				if (_ipexp.SearchString(match, logname, 3) == 3)
				{
					f8String ip, port;
					_ipexp.SubExpr(match, logname, ip, 0, 1);
					_ipexp.SubExpr(match, logname, port, 0, 2);
					BCLogger *bcl(new BCLogger(ip, GetValue<unsigned>(port), get_logflags(which)));
					if (*bcl)
						return bcl;
				}

				return new FileLogger(logname, get_logflags(which), get_logfile_rotation(which));
			}
		}
	}

	return 0;
}
Пример #5
0
void unpackLM(UINT8 *buf, long recno)
{
FILE *fp;
IDA10_LM lm;
static char *fid = "unpackLM";

    if (!ida10UnpackLM(buf, &lm)) {
        sprintf(Buffer, "%s: can't decode LM record no. %ld\n",
            fid, recno
        );
        logmsg(Buffer);
        return;
    }

    if ((fp = fopen(logname(lm.sname), "a")) == NULL) {
        sprintf(Buffer, "%s: fopen: %s: %s",
            fid, logname, strerror(errno)
        );
        logmsg(Buffer);
    } else {
        fprintf(fp, "%s", lm.text);
        fclose(fp);
    }
}
Пример #6
0
int main(int argc, char **argv)
{
    if (argc<6) {
        fprintf(stderr,"ERROR, not enough argument\n");
        exit(1);
    }
    std::string filename(argv[1]);
    int SERVICE_PORT =atoi(argv[2]);
    std::string s_add(argv[3]);
    int portno = atoi(argv[4]);
    std::string logname(argv[5]);
    
    char cCurrentPath[FILENAME_MAX];
    if (!getcwd(cCurrentPath, sizeof(cCurrentPath)))
    {
        return errno;
    }
    std::string pathname(cCurrentPath);
    filename = pathname + "/" + filename;
    
    if (logname=="stdout") {
        logfs = stdout;
    }
    else{
        logname = pathname + "/" + logname;
        logfs = fopen(logname.c_str(), "w");
    }
    FILE *ofs = fopen(filename.c_str(), "w");
    //FILE *ofs = fopen("/Users/Rex/Desktop/cn_second/cn_second/o.txt", "w");
    
    
    struct sockaddr_in myaddr;  /* our address */
    struct sockaddr_in remaddr; /* remote address */
    socklen_t addrlen = sizeof(remaddr);        /* length of addresses */
    int recvlen;            /* # bytes received */
    int fd;             /* our socket */
    
    
    /* create a UDP socket */
    if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
        perror("cannot create socket\n");
        return 0;
    }
    
    /* bind the socket to any valid IP address and a specific port */
    
    memset((char *)&myaddr, 0, sizeof(myaddr));
    myaddr.sin_family = AF_INET;
    myaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    myaddr.sin_port = htons(SERVICE_PORT);
    
    if (bind(fd, (struct sockaddr *)&myaddr, sizeof(myaddr)) < 0) {
        perror("bind failed");
        return 0;
    }
    
    /////intial ack related sender tcp//////
    int n,sockfd;
    struct sockaddr_in serv_addr;
    struct hostent *server;
    
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
        printf("ERROR opening socket");
    server = gethostbyname(s_add.c_str());
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
    }
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr,
          (char *)&serv_addr.sin_addr.s_addr,
          server->h_length);
    serv_addr.sin_port = htons(portno);
    if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0)
        printf("ERROR connecting");
    int ws;
    char addtmp[256];
    read(sockfd, &ws, sizeof(int));
    read(sockfd, addtmp, 255);
    write(sockfd,s_add.c_str() , s_add.size() );
    //local = string(addtmp,strlen(addtmp));
    local = "127.0.0.1";
    //////////
    std::vector<out_order_buffer_unit> out_order_buf;
    
    for(int i = 0; i<ws; i ++){
        byte *temp = new byte[BUFSIZE+20];
        out_order_buffer_unit tmp(-1,temp);
        out_order_buf.push_back(tmp);
    }
    
    /* now loop, receiving data and printing what we received */
    //printf("waiting on port %d\n", SERVICE_PORT);
    byte *tcp_packet = new byte[20+BUFSIZE];
    short flag,checksum,trash_short;
    short len = BUFSIZE;
    int totalbyte = 0,countretrans=0;
    int seq = 0,acknum = 0,rcv_base = 0,trash_int = 0,hehe;
    
    while(1){
        recvlen = recvfrom(fd, tcp_packet, 20+BUFSIZE, 0, (struct sockaddr *)&serv_addr, &addrlen);
        len = parse_packet(tcp_packet, &seq, &acknum, &flag, &checksum);
        
        writelog(time(0), s_add, local, seq*BUFSIZE, seq*BUFSIZE+1, flag, -1);
        if (flag == END) {
            break;
        }
        if (len==-1){
            continue;
        }
        else{
            if (seq==rcv_base) {
                totalbyte += 20+len;
                //string tmp = "len is "+std::to_string(len)+"\n";
                //fwrite(tmp.c_str(), 1, tmp.size(), logfs);
                //std::cout<<"len is "<<len<<"\n";
                //std::cout<<"Write seq # "<<seq<<" with len = "<<len<<"\n";
                fwrite(tcp_packet+20, 1, len, ofs);
                
                //greedy check buffer
                int target = seq+1;
                rcv_base++;
                for(int i = 0; i<ws; i++){
                    if (out_order_buf[i].first == target){
                        short len_t = parse_packet(out_order_buf[i].second, &hehe, &trash_int, &trash_short, &trash_short);
                        //tmp = "len_t is "+std::to_string(len_t)+"\n";
                        //fwrite(tmp.c_str(), 1, tmp.size(), logfs);
                        fwrite( (out_order_buf[i].second)+ 20, 1, len_t, ofs);
                        totalbyte += 20+len_t;
                        rcv_base++;
                        target++;
                        out_order_buf[i].first = -1;
                    }
                }
                acknum = seq+1;
                flag = ACK;
                
                make_packet(tcp_packet, &seq, &acknum, &flag, &checksum, ofs);
                n = write(sockfd, tcp_packet, 20);
                if (n < 0)
                    printf("ERROR writing to socket");
                writelog(time(0), local, s_add, seq*BUFSIZE, seq*BUFSIZE+1, flag, -1);
                
            }
            else  //out of order, buffer it
            {
                for(int i = 0; i<ws; i++){
                    if (out_order_buf[i].first == -1){
                        memcpy(out_order_buf[i].second, tcp_packet, 20+BUFSIZE);
                        out_order_buf[i].first = seq;
                        sort(out_order_buf.begin(),out_order_buf.end());
                        break;
                    }
                }
                
                acknum = seq + 1;
                flag = ACK;
                checksum = 0;
                make_packet(tcp_packet, &seq, &acknum, &flag, &checksum, ofs);
                n = write(sockfd, tcp_packet, 20);
                if (n < 0)
                    printf("ERROR writing to socket");
                writelog(time(0), local, s_add, seq*BUFSIZE, seq*BUFSIZE+1, flag, -1);
            }
        }
        //printf("seq is %d\n",seq);
    }
    string summary = "Transmission was successful!\nTotal bytes sent is "+std::to_string(totalbyte)+
    "\nNumber of sent segment is "+std::to_string(seq)+"\n";
    fwrite(summary.c_str(), 1, summary.size(), logfs);
    fclose(logfs);
    fclose(ofs);
    free(tcp_packet);
    for(int i = 0; i<ws; i ++){
        free(out_order_buf[i].second);
    }
    return 0;
}
Пример #7
0
void YamlConfigurable::logEffective(int verbosity) const {
  LOG_INFO_NAMESTR(SDL_LOG_PREFIX_STR + logname(), "effective configuration for "
                                                   << *this << "\n "
                                                   << YamlConfigurableEffective(*this, verbosity));
  logEffectiveOnce_.finishNonAtomic();
}
Пример #8
0
StringConsumer YamlConfigurable::log() const {
  return Util::logWarning(logname());
}
Пример #9
0
int main(int argc, const char **argv)
{
#ifdef _WIN32
    _setmode( _fileno( stdout ), _O_BINARY );
    _setmode( _fileno( stdin ), _O_BINARY );
#endif
    Owned<IProperties> globals = createProperties("dumpkey.ini", true);
    for (int i = 1; i < argc; i++)
    {
        if (argv[i][0] == '-')
            doOption(argv[i]);
        else if (strchr(argv[i], '='))
            globals->loadProp(argv[i]);
        else
            globals->setProp("keyfile", argv[i]);
    }
    try
    {
        StringBuffer logname("dumpkey.");
        logname.append(GetCachedHostName()).append(".");
        StringBuffer lf;
        openLogFile(lf, logname.append("log").str());
        
        Owned <IKeyIndex> index;
        const char * keyName = globals->queryProp("keyfile");
        if (keyName)
            index.setown(createKeyIndex(keyName, 0, false, false));
        else
            usage();
        Owned <IKeyCursor> cursor = index->getCursor(NULL);

        size32_t key_size = index->keySize();
        Owned<IFile> in = createIFile(keyName);
        Owned<IFileIO> io = in->open(IFOread);
        if (!io)
            throw MakeStringException(999, "Failed to open file %s", keyName);
        Owned<CKeyHdr> header = new CKeyHdr;
        MemoryAttr block(sizeof(KeyHdr));
        io->read(0, sizeof(KeyHdr), (void *)block.get());
        header->load(*(KeyHdr*)block.get());
        unsigned nodeSize = header->getNodeSize();

        if (!optRaw)
        {
            printf("Key '%s'\nkeySize=%d NumParts=%x, Top=%d\n", keyName, key_size, index->numParts(), index->isTopLevelKey());
            printf("File size = %"I64F"d, nodes = %"I64F"d\n", in->size(), in->size() / nodeSize - 1);
            printf("rootoffset=%"I64F"d[%"I64F"d]\n", header->getRootFPos(), header->getRootFPos()/nodeSize);
        }
        char *buffer = (char*)alloca(key_size);

        if (globals->hasProp("node"))
        {
            if (stricmp(globals->queryProp("node"), "all")==0)
            {
            }
            else
            {
                int node = globals->getPropInt("node");
                if (node != 0)
                    index->dumpNode(stdout, node * nodeSize, globals->getPropInt("recs", 0), optRaw);
            }
        }
        else if (globals->hasProp("fpos"))
        {
            index->dumpNode(stdout, globals->getPropInt("fpos"), globals->getPropInt("recs", 0), optRaw);
        }
        else
        {
            bool backwards=false;
            bool ok;
            if (globals->hasProp("end"))
            {
                memset(buffer, 0, key_size);
                strcpy(buffer, globals->queryProp("end"));
                ok = cursor->ltEqual(buffer, buffer);
                backwards = true;
            }
            else if (globals->hasProp("start"))
            {
                memset(buffer, 0, key_size);
                strcpy(buffer, globals->queryProp("start"));
                ok = cursor->gtEqual(buffer, buffer);
            }
            else
                ok = cursor->first(buffer);
            
            unsigned count = globals->getPropInt("recs", 1);
            while (ok && count--)
            {
                offset_t pos = cursor->getFPos();
                unsigned __int64 seq = cursor->getSequence();
                size32_t size = cursor->getSize();
                if (optRaw)
                {
                    fwrite(buffer, 1, size, stdout);
                }
                else if (optHex)
                {
                    for (unsigned i = 0; i < size; i++)
                        printf("%02x", ((unsigned char) buffer[i]) & 0xff);
                    printf("  :%"I64F"u:%012"I64F"x\n", seq, pos);
                }
                else
                    printf("%.*s  :%"I64F"u:%012"I64F"x\n", size, buffer, seq, pos);
                if (backwards)
                    ok = cursor->prev(buffer);
                else
                    ok = cursor->next(buffer);
            }
        }
    }
    catch (IException *E)
    {
        StringBuffer msg;
        E->errorMessage(msg);
        E->Release();
        fatal("%s", msg.str());
    }
    releaseAtoms();
    ExitModuleObjects();
    return 0;
}