Exemple #1
0
static void processpkt(acarsmsg_t * msg, char *ipaddr)
{
	char *pr, *pf;
	int lm;

	pr = strtok(msg->reg, " ");
	pf = strtok(msg->fid, " ");
	strtok(msg->no, " ");

	lm = 0;
	if (msg->mode < 0x5d && pr && pf)
		lm = 1;

	if ((lm || station) &&
	    (allmess
	     || (strcmp(msg->label, "Q0") != 0
		 && strcmp(msg->label, "_d") != 0))
	    )
		lm = lm + 2;

	if (dupmess)
		lm = lm + 4;

	updatedb(msg, lm, ipaddr);
}
void MangaDownloadWidget::downloadFinished(int status, QProcess::ExitStatus exitStatus) {
  switch (exitStatus) {
  case QProcess::CrashExit: {
    _messageModel->editMessageWarning("Warning: Downlaod failed. Status code: "+QString::number(status));
    break;
  }
  case QProcess::NormalExit: {
    ++_downloadedCount;
    _chaptersOnWebModel->removeRow(_chaptersQueue.takeFirst().row());
    updatedb();
    updateChaptersOnPCView();
    _messageModel->editMessageSuccess("Downlaod succeeded. Status code: "+QString::number(status));
    break;
  }
  }

  startNextDownload();
}
Exemple #3
0
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    this->setWindowTitle(APP_FRIENDLY_NAME);

    loadScreenPosition();

    showTrayIcon();
    configureContextMenu();

    connect(&findutils, SIGNAL(updatedb_finished()), this, SLOT(updatedb_finished()));
    connect(&findutils, SIGNAL(locate_finished(const QStringList &)), this, SLOT(locate_finished(const QStringList &)));
    connect(&findutils, SIGNAL(statistics_finished(QString)), this, SLOT(statistics_finished(QString)));

    updatedb();
}
Exemple #4
0
int downloadmanager(const struct optstruct *opts, const char *hostname, const char *dbdir, int logerr)
{
	time_t currtime;
	int ret, updated = 0, outdated = 0, signo = 0;
	unsigned int ttl;
	char ipaddr[46], *dnsreply = NULL, *pt, *localip = NULL, *newver = NULL;
	const struct optstruct *opt;
	struct mirdat mdat;
#ifdef HAVE_RESOLV_H
	const char *dnsdbinfo;
#endif

    time(&currtime);
    logg("ClamAV update process started at %s", ctime(&currtime));
#ifdef HAVE_GETADDRINFO
    logg("*Using IPv6 aware code\n");
#endif

#ifdef HAVE_RESOLV_H
    dnsdbinfo = optget(opts, "DNSDatabaseInfo")->strarg;

    if(optget(opts, "no-dns")->enabled) {
	dnsreply = NULL;
    } else {
	if((dnsreply = txtquery(dnsdbinfo, &ttl))) {
	    logg("*TTL: %d\n", ttl);

	    if((pt = cli_strtok(dnsreply, 3, ":"))) {
		    int rt;
		    time_t ct;

		rt = atoi(pt);
		free(pt);
		time(&ct);
		if((int) ct - rt > 10800) {
		    logg("^DNS record is older than 3 hours.\n");
		    free(dnsreply);
		    dnsreply = NULL;
		}

	    } else {
		free(dnsreply);
		dnsreply = NULL;
	    }

	    if(dnsreply) {
		    int vwarning = 1;

		if((pt = cli_strtok(dnsreply, 4, ":"))) {
		    if(*pt == '0')
			vwarning = 0;

		    free(pt);
		}

		if((newver = cli_strtok(dnsreply, 0, ":"))) {
			char vstr[32];

		    logg("*Software version from DNS: %s\n", newver);
		    strncpy(vstr, get_version(), 32);
		    vstr[31] = 0;
		    if((pt = strstr(vstr, "-exp")) || (pt = strstr(vstr,"-broken")))
			*pt = 0;

		    if(vwarning && !strstr(vstr, "devel") && !strstr(vstr, "rc")) {
			if(strcmp(vstr, newver)) {
			    logg("Your ClamAV installation is out of date.\n");
			    logg("^Local version: %s Recommended version: %s\n", get_version(), newver);
			    logg("A firmware upgrade might resolve this issue..\n");
			    logg("Also read http://sgkb.securecomputing.com/article.asp?article=11282&p=2\n");
			    outdated = 1;
			}
		    }
		}
	    }
	}

	if(!dnsreply) {
	    logg("^Invalid DNS reply. Falling back to HTTP mode.\n");
	}
    }
#endif /* HAVE_RESOLV_H */

    if((opt = optget(opts, "LocalIPAddress"))->enabled)
	localip = opt->strarg;

    if(optget(opts, "HTTPProxyServer")->enabled)
	mirman_read("mirrors.dat", &mdat, 0);
    else
	mirman_read("mirrors.dat", &mdat, 1);

    memset(ipaddr, 0, sizeof(ipaddr));

    if((ret = updatedb("main", hostname, ipaddr, &signo, opts, dnsreply, localip, outdated, &mdat, logerr)) > 50) {
	if(dnsreply)
	    free(dnsreply);

	if(newver)
	    free(newver);

	mirman_write("mirrors.dat", &mdat);
	return ret;

    } else if(ret == 0)
	updated = 1;

    /* if ipaddr[0] != 0 it will use it to connect to the web host */
    if((ret = updatedb("daily", hostname, ipaddr, &signo, opts, dnsreply, localip, outdated, &mdat, logerr)) > 50) {
	if(dnsreply)
	    free(dnsreply);

	if(newver)
	    free(newver);

	mirman_write("mirrors.dat", &mdat);
	return ret;

    } else if(ret == 0)
	updated = 1;

    /* if ipaddr[0] != 0 it will use it to connect to the web host */
    if(!optget(opts, "SafeBrowsing")->enabled) {
	    const char *safedb = NULL;

	if(!access("safebrowsing.cvd", R_OK))
	    safedb = "safebrowsing.cvd";
	else if(!access("safebrowsing.cld", R_OK))
            safedb = "safebrowsing.cld";

	if(safedb) {
	    if(unlink(safedb))
		logg("^SafeBrowsing is disabled but can't remove old %s\n", safedb);
	    else
		logg("*%s removed\n", safedb);
	}
    } else if((ret = updatedb("safebrowsing", hostname, ipaddr, &signo, opts, dnsreply, localip, outdated, &mdat, logerr)) > 50) {
	if(dnsreply)
	    free(dnsreply);

	if(newver)
	    free(newver);

	mirman_write("mirrors.dat", &mdat);
	return ret;
    } else if(ret == 0)
	updated = 1;

    if(dnsreply)
	free(dnsreply);

    mirman_write("mirrors.dat", &mdat);

    if(updated) {
	if(optget(opts, "HTTPProxyServer")->enabled) {
	    logg("Database updated (%d signatures) from %s\n", signo, hostname);
	} else {
	    logg("Database updated (%d signatures) from %s (IP: %s)\n", signo, hostname, ipaddr);
	}

#ifdef BUILD_CLAMD
	if((opt = optget(opts, "NotifyClamd"))->active)
	    notify(opt->strarg);
#endif

	if((opt = optget(opts, "OnUpdateExecute"))->enabled)
	    execute("OnUpdateExecute", opt->strarg, opts);
    }

    if(outdated) {
	if((opt = optget(opts, "OnOutdatedExecute"))->enabled) {
		char *cmd = strdup(opt->strarg);

	    if((pt = newver)) {
		while(*pt) {
		    if(!strchr("0123456789.", *pt)) {
			logg("!downloadmanager: OnOutdatedExecute: Incorrect version number string\n");
			free(newver);
			newver = NULL;
			break;
		    }
		    pt++;
		}
	    }

	    if(newver && (pt = strstr(cmd, "%v"))) {
		    char *buffer = (char *) malloc(strlen(cmd) + strlen(newver) + 10);

		if(!buffer) {
		    logg("!downloadmanager: Can't allocate memory for buffer\n");
		    free(cmd);
		    if(newver)
			free(newver);
		    return 75;
		}

		*pt = 0; pt += 2;
		strcpy(buffer, cmd);
		strcat(buffer, newver);
		strcat(buffer, pt);
		free(cmd);
		cmd = strdup(buffer);
		free(buffer);
	    }

	    if(newver)
		execute("OnOutdatedExecute", cmd, opts);

	    free(cmd);
	}
    }

    if(newver)
	free(newver);

    return updated ? 0 : 1;
}