void CUILevelMap::Init (shared_str name, CInifile& gameLtx, LPCSTR sh_name) { inherited::Init(name, gameLtx, sh_name); Fvector4 tmp = gameLtx.r_fvector4(MapName(),"global_rect"); m_GlobalRect.set(tmp.x, tmp.y, tmp.z, tmp.w); #ifdef DEBUG float kw = m_GlobalRect.width () / BoundRect().width (); float kh = m_GlobalRect.height () / BoundRect().height (); if(FALSE==fsimilar(kw,kh,EPS_L)){ Msg(" --incorrect global rect definition for map [%s] kw=%f kh=%f",*MapName(),kw,kh); Msg(" --try x2=%f or y2=%f",m_GlobalRect.x1+kh*BoundRect().width(), m_GlobalRect.y1+kw*BoundRect().height()); } #endif // Msg("Succesfully loaded map %s. Zoom=%f",*name, kw); /* if(gameLtx.line_exist(MapName(),"anomalies_texture")){ LPCSTR texture = gameLtx.r_string (MapName(),"anomalies_texture"); Fvector4 tmp = gameLtx.r_fvector4(MapName(),"anomalies_texture_rect"); //lt,wh Frect rect; rect.set (tmp.x,tmp.y,tmp.x+tmp.z,tmp.y+tmp.w); m_anomalies_map = xr_new<CUIStatic>(); m_anomalies_map->Init (texture,0.0f,0.0f,0.0f,0.0f); m_anomalies_map->GetUIStaticItem().SetOriginalRect(rect); m_anomalies_map->SetStretchTexture (true); m_anomalies_map->SetAutoDelete (false); } */ }
static time_t ReadPolicyValidatedFileMTime(const GenericAgentConfig *config) { char filename[CF_MAXVARSIZE]; if (MINUSF) { snprintf(filename, CF_MAXVARSIZE, "%s/state/validated_%s", CFWORKDIR, CanonifyName(config->original_input_file)); MapName(filename); } else { snprintf(filename, CF_MAXVARSIZE, "%s/masterfiles/cf_promises_validated", CFWORKDIR); MapName(filename); } struct stat sb; if (stat(filename, &sb) != -1) { return sb.st_mtime; } else { return 0; } }
void MonEntropyClassesInit(void) { snprintf(ENVFILE_NEW,CF_BUFSIZE,"%s/state/%s",CFWORKDIR,CF_ENVNEW_FILE); MapName(ENVFILE_NEW); snprintf(ENVFILE,CF_BUFSIZE,"%s/state/%s",CFWORKDIR,CF_ENV_FILE); MapName(ENVFILE); }
void MonitorInitialize(void) { int i, j, k; char vbuff[CF_BUFSIZE]; sprintf(vbuff, "%s/state/cf_users", CFWORKDIR); MapName(vbuff); CreateEmptyFile(vbuff); snprintf(ENVFILE_NEW, CF_BUFSIZE, "%s/state/%s", CFWORKDIR, CF_ENVNEW_FILE); MapName(ENVFILE_NEW); snprintf(ENVFILE, CF_BUFSIZE, "%s/state/%s", CFWORKDIR, CF_ENV_FILE); MapName(ENVFILE); MonEntropyClassesInit(); GetDatabaseAge(); for (i = 0; i < CF_OBSERVABLES; i++) { LOCALAV.Q[i] = QDefinite(0.0); } for (i = 0; i < 7; i++) { for (j = 0; j < CF_OBSERVABLES; j++) { for (k = 0; k < CF_GRAINS; k++) { HISTOGRAM[i][j][k] = 0; } } } for (i = 0; i < CF_OBSERVABLES; i++) { CHI[i] = 0; CHI_LIMIT[i] = 0.1; LDT_AVG[i] = 0; LDT_SUM[i] = 0; } srand((unsigned int) time(NULL)); LoadHistogram(); /* Look for local sensors - this is unfortunately linux-centric */ MonNetworkInit(); MonTempInit(); MonOtherInit(); Log(LOG_LEVEL_DEBUG, "Finished with monitor initialization"); }
static void KeepHardClasses(EvalContext *ctx) { char name[CF_BUFSIZE]; if (name != NULL) { snprintf(name, sizeof(name), "%s%cpolicy_server.dat", CFWORKDIR, FILE_SEPARATOR); FILE *fp = fopen(name, "r"); if (fp != NULL) { fclose(fp); snprintf(name, sizeof(name), "%s/state/am_policy_hub", CFWORKDIR); MapName(name); struct stat sb; if (stat(name, &sb) != -1) { EvalContextHeapAddHard(ctx, "am_policy_hub"); } } } /* FIXME: why is it not in generic_agent?! */ #if defined HAVE_NOVA EvalContextHeapAddHard(ctx, "nova_edition"); EvalContextHeapAddHard(ctx, "enterprise_edition"); #else EvalContextHeapAddHard(ctx, "community_edition"); #endif }
void LogTotalCompliance(const char *version, int background_tasks) { double total = (double) (PR_KEPT + PR_NOTKEPT + PR_REPAIRED) / 100.0; char string[CF_BUFSIZE] = { 0 }; snprintf(string, CF_BUFSIZE, "Outcome of version %s (" CF_AGENTC "-%d): Promises observed to be kept %.0f%%, Promises repaired %.0f%%, Promises not repaired %.0f\%%", version, background_tasks, (double) PR_KEPT / total, (double) PR_REPAIRED / total, (double) PR_NOTKEPT / total); CfOut(OUTPUT_LEVEL_VERBOSE, "", "Total: %s", string); char filename[CF_BUFSIZE]; snprintf(filename, CF_BUFSIZE, "%s/%s", CFWORKDIR, CF_PROMISE_LOG); MapName(filename); FILE *fout = fopen(filename, "a"); if (fout == NULL) { CfOut(OUTPUT_LEVEL_ERROR, "fopen", "Could not open %s", filename); } else { fprintf(fout, "%" PRIdMAX ",%" PRIdMAX ": %s\n", (intmax_t)CFSTARTTIME, (intmax_t)time(NULL), string); fclose(fout); } }
void MonProcessesGatherData(double *cf_this) { struct Item *userList = NULL; char vbuff[CF_BUFSIZE]; int numProcUsers = 0; int numRootProcs = 0; int numOtherProcs = 0; if (!GatherProcessUsers(&userList, &numProcUsers, &numRootProcs, &numOtherProcs)) { return; } cf_this[ob_users] += numProcUsers; cf_this[ob_rootprocs] += numRootProcs; cf_this[ob_otherprocs] += numOtherProcs; snprintf(vbuff,CF_MAXVARSIZE,"%s/state/cf_users",CFWORKDIR); MapName(vbuff); RawSaveItemList(userList,vbuff); DeleteItemList(userList); CfOut(cf_verbose,"","(Users,root,other) = (%d,%d,%d)\n",cf_this[ob_users],cf_this[ob_rootprocs],cf_this[ob_otherprocs]); }
void AgentDiagnosticsRun(const char *workdir, const AgentDiagnosticCheck checks[], Writer *output) { { char diagnostics_path[CF_BUFSIZE] = { 0 }; snprintf(diagnostics_path, CF_BUFSIZE, "%s/diagnostics", workdir); MapName(diagnostics_path); struct stat sb; if (stat(diagnostics_path, &sb) != 0) { if (mkdir(diagnostics_path, DEFAULTMODE) != 0) { WriterWriteF(output, "Cannot create diagnostics output directory '%s'", diagnostics_path); return; } } } for (int i = 0; checks[i].description; i++) { AgentDiagnosticsResult result = checks[i].check(workdir); WriterWriteF(output, "[ %s ] %s: %s\n", result.success ? "YES" : "NO ", checks[i].description, result.message); AgentDiagnosticsResultDestroy(result); } }
ENTERPRISE_VOID_FUNC_2ARG_DEFINE_STUB(void, LogTotalCompliance, const char *, version, int, background_tasks) { double total = (double) (PR_KEPT + PR_NOTKEPT + PR_REPAIRED) / 100.0; char string[CF_BUFSIZE] = { 0 }; snprintf(string, CF_BUFSIZE, "Outcome of version %s (" CF_AGENTC "-%d): Promises observed to be kept %.2f%%, Promises repaired %.2f%%, Promises not repaired %.2f%%", version, background_tasks, (double) PR_KEPT / total, (double) PR_REPAIRED / total, (double) PR_NOTKEPT / total); Log(LOG_LEVEL_VERBOSE, "Logging total compliance, total '%s'", string); char filename[CF_BUFSIZE]; snprintf(filename, CF_BUFSIZE, "%s/%s", GetLogDir(), CF_PROMISE_LOG); MapName(filename); FILE *fout = fopen(filename, "a"); if (fout == NULL) { Log(LOG_LEVEL_ERR, "In total compliance logging, could not open file '%s'. (fopen: %s)", filename, GetErrorStr()); } else { fprintf(fout, "%jd,%jd: %s\n", (intmax_t)CFSTARTTIME, (intmax_t)time(NULL), string); fclose(fout); } }
static void KeepHardClasses() { char name[CF_BUFSIZE]; if (name != NULL) { snprintf(name, sizeof(name), "%s%cpolicy_server.dat", CFWORKDIR, FILE_SEPARATOR); FILE *fp = fopen(name, "r"); if (fp != NULL) { fclose(fp); snprintf(name, sizeof(name), "%s/state/am_policy_hub", CFWORKDIR); MapName(name); struct stat sb; if (stat(name, &sb) != -1) { HardClass("am_policy_hub"); } } } #if defined HAVE_NOVA HardClass("nova_edition"); HardClass("enterprise_edition"); #else HardClass("community_edition"); #endif }
void TestExpandVariables() { Promise pp = { 0 }, *pcopy; Rlist *args, *listvars = NULL, *scalarvars = NULL; Constraint *cp; FnCall *fp; strcpy(CFWORKDIR, GetWorkDir()); MapName(CFWORKDIR); /* Still have diagnostic scope */ NewScope("control_common"); printf("%d. Testing variable expansion\n", ++NR); pp.promiser = "the originator"; pp.promisee = (Rval) {"the recipient with $(two)", CF_SCALAR}; pp.classes = "proletariat"; pp.offset.line = 12; pp.audit = NULL; pp.conlist = NULL; pp.agentsubtype = "none"; pp.bundletype = "bundle_type"; pp.bundle = "test_bundle"; pp.ref = "commentary"; pp.agentsubtype = xstrdup("files"); pp.done = false; pp.next = NULL; pp.cache = NULL; pp.inode_cache = NULL; pp.this_server = NULL; pp.donep = &(pp.done); pp.conn = NULL; args = SplitStringAsRList("$(administrator)", ','); fp = NewFnCall("getuid", args); AppendConstraint(&(pp.conlist), "lval1", (Rval) {xstrdup("@(one)"), CF_SCALAR}, "lower classes1", false); AppendConstraint(&(pp.conlist), "lval2", (Rval) {xstrdup("$(four)"), CF_SCALAR}, "upper classes1", false); AppendConstraint(&(pp.conlist), "lval3", (Rval) {fp, CF_FNCALL}, "upper classes2", false); /* Now copy promise and delete */ pcopy = DeRefCopyPromise("diagnostic", &pp); MapIteratorsFromRval("diagnostic", &scalarvars, &listvars, (Rval) {pcopy->promiser, CF_SCALAR}, NULL); if (pcopy->promisee.item != NULL) { MapIteratorsFromRval("diagnostic", &scalarvars, &listvars, pp.promisee, NULL); } for (cp = pcopy->conlist; cp != NULL; cp = cp->next) { MapIteratorsFromRval("diagnostic", &scalarvars, &listvars, cp->rval, NULL); } ExpandPromiseAndDo(cf_common, "diagnostic", pcopy, scalarvars, listvars, NULL); /* No cleanup */ }
void CUILevelMap::Update() { CUIGlobalMap* w = MapWnd()->GlobalMap(); Frect rect; Fvector2 tmp; tmp = w->ConvertRealToLocal(GlobalRect().lt); rect.lt = tmp; tmp = w->ConvertRealToLocal(GlobalRect().rb); rect.rb = tmp; SetWndRect (rect); inherited::Update (); if(m_bCursorOverWindow){ VERIFY(m_dwFocusReceiveTime>=0); if( Device.dwTimeGlobal>(m_dwFocusReceiveTime+500) ){ if(fsimilar(MapWnd()->GlobalMap()->GetCurrentZoom(), MapWnd()->GlobalMap()->GetMinZoom(),EPS_L )) MapWnd()->ShowHint(this, *MapName()); else MapWnd()->HideHint(this); } } }
void SavePublicKey(const char *user, const char *digest, const RSA *key) { char keyname[CF_MAXVARSIZE], filename[CF_BUFSIZE]; struct stat statbuf; FILE *fp; int err; snprintf(keyname, CF_MAXVARSIZE, "%s-%s", user, digest); snprintf(filename, CF_BUFSIZE, "%s/ppkeys/%s.pub", CFWORKDIR, keyname); MapName(filename); if (stat(filename, &statbuf) != -1) { return; } Log(LOG_LEVEL_VERBOSE, "Saving public key to file '%s'", filename); if ((fp = fopen(filename, "w")) == NULL) { Log(LOG_LEVEL_ERR, "Unable to write a public key '%s'. (fopen: %s)", filename, GetErrorStr()); return; } if (!PEM_write_RSAPublicKey(fp, key)) { err = ERR_get_error(); Log(LOG_LEVEL_ERR, "Error saving public key to '%s'. (PEM_write_RSAPublicKey: %s)", filename, ERR_reason_error_string(err)); } fclose(fp); }
bool MasterfileExists(const char *workdir) { char filename[CF_BUFSIZE] = { 0 }; snprintf(filename, sizeof(filename), "%s/masterfiles/promises.cf", workdir); MapName(filename); struct stat sb; if (stat(filename, &sb) == -1) { if (errno == ENOENT) { return false; } else { Log(LOG_LEVEL_ERR, "Could not stat file '%s'. (stat: %s)", filename, GetErrorStr()); return false; } } if (!S_ISREG(sb.st_mode)) { Log(LOG_LEVEL_ERR, "Path exists at '%s', but it is not a regular file", filename); return false; } return true; }
static void ThisAgentInit(void) { FILE *fp; char filename[CF_BUFSIZE]; #ifdef HAVE_SETSID CfOut(cf_verbose, "", " -> Immunizing against parental death"); setsid(); #endif signal(SIGINT, HandleSignalsForAgent); signal(SIGTERM, HandleSignalsForAgent); signal(SIGHUP, SIG_IGN); signal(SIGPIPE, SIG_IGN); signal(SIGUSR1, HandleSignalsForAgent); signal(SIGUSR2, HandleSignalsForAgent); CFA_MAXTHREADS = 30; EDITFILESIZE = 100000; /* do not set signal(SIGCHLD,SIG_IGN) in agent near popen() - or else pclose will fail to return status which we need for setting returns */ snprintf(filename, CF_BUFSIZE, "%s/cfagent.%s.log", CFWORKDIR, VSYSNAME.nodename); MapName(filename); if ((fp = fopen(filename, "a")) != NULL) { fclose(fp); } }
bool RemoveAllExistingPolicyInInputs(const char *workdir) { char inputs_path[CF_BUFSIZE] = { 0 }; snprintf(inputs_path, sizeof(inputs_path), "%s/inputs/", workdir); MapName(inputs_path); Log(LOG_LEVEL_INFO, "Removing all files in '%s'", inputs_path); struct stat sb; if (stat(inputs_path, &sb) == -1) { if (errno == ENOENT) { return true; } else { Log(LOG_LEVEL_ERR, "Could not stat inputs directory at '%s'. (stat: %s)", inputs_path, GetErrorStr()); return false; } } if (!S_ISDIR(sb.st_mode)) { Log(LOG_LEVEL_ERR, "Inputs path exists at '%s', but it is not a directory", inputs_path); return false; } return DeleteDirectoryTree(inputs_path); }
void SetPolicyServer(EvalContext *ctx, const char *new_policy_server) { if (new_policy_server) { snprintf(POLICY_SERVER, CF_MAX_IP_LEN, "%s", new_policy_server); ScopeNewSpecial(ctx, "sys", "policy_hub", new_policy_server, DATA_TYPE_STRING); } else { POLICY_SERVER[0] = '\0'; ScopeNewSpecial(ctx, "sys", "policy_hub", "undefined", DATA_TYPE_STRING); } // Get the timestamp on policy update struct stat sb; { char cf_promises_validated_filename[CF_MAXVARSIZE]; snprintf(cf_promises_validated_filename, CF_MAXVARSIZE, "%s/masterfiles/cf_promises_validated", CFWORKDIR); MapName(cf_promises_validated_filename); if ((stat(cf_promises_validated_filename, &sb)) != 0) { return; } } char timebuf[26]; cf_strtimestamp_local(sb.st_mtime, timebuf); ScopeNewSpecial(ctx, "sys", "last_policy_update", timebuf, DATA_TYPE_STRING); }
/* 'resolved' argument needs to be at least CF_BUFSIZE long */ static bool ResolveFilename(const char *req_path, char *res_path) { #if !defined _WIN32 if (realpath(req_path, res_path) == NULL) { return false; } #else memset(res_path, 0, CF_BUFSIZE); CompressPath(res_path, req_path); #endif /* Adjust for forward slashes */ MapName(res_path); /* NT has case-insensitive path names */ #ifdef __MINGW32__ int i; for (i = 0; i < strlen(res_path); i++) { res_path[i] = ToLower(res_path[i]); } #endif /* __MINGW32__ */ return true; }
void MonProcessesGatherData(double *cf_this) { Item *userList = NULL; int numProcUsers = 0; int numRootProcs = 0; int numOtherProcs = 0; if (!GatherProcessUsers(&userList, &numProcUsers, &numRootProcs, &numOtherProcs)) { return; } cf_this[ob_users] += numProcUsers; cf_this[ob_rootprocs] += numRootProcs; cf_this[ob_otherprocs] += numOtherProcs; char vbuff[CF_MAXVARSIZE]; xsnprintf(vbuff, sizeof(vbuff), "%s/cf_users", GetStateDir()); MapName(vbuff); RawSaveItemList(userList, vbuff, NewLineMode_Unix); DeleteItemList(userList); Log(LOG_LEVEL_VERBOSE, "(Users,root,other) = (%d,%d,%d)", (int) cf_this[ob_users], (int) cf_this[ob_rootprocs], (int) cf_this[ob_otherprocs]); }
FArchive& FLinkerSave::operator<<( FName& InName ) { int32 Save = MapName(InName); ensure(Save != INDEX_NONE); int32 Number = InName.GetNumber(); FArchive& Ar = *this; return Ar << Save << Number; }
bool WriteBuiltinFailsafePolicy(const char *workdir) { char failsafe_path[CF_BUFSIZE]; snprintf(failsafe_path, CF_BUFSIZE - 1, "%s/inputs/failsafe.cf", workdir); MapName(failsafe_path); return WriteBuiltinFailsafePolicyToPath(failsafe_path); }
static void LoadSetuid(void) { char filename[CF_BUFSIZE]; snprintf(filename, CF_BUFSIZE, "%s/cfagent.%s.log", GetLogDir(), VSYSNAME.nodename); MapName(filename); VSETUIDLIST = RawLoadItemList(filename); }
bool GetAmPolicyHub(const char *workdir) { char path[CF_BUFSIZE] = { 0 }; snprintf(path, sizeof(path), "%s/state/am_policy_hub", workdir); MapName(path); struct stat sb; return stat(path, &sb) == 0; }
/** * @return True if the file STATEDIR/am_policy_hub exists */ bool GetAmPolicyHub(void) { char path[CF_BUFSIZE] = { 0 }; snprintf(path, sizeof(path), "%s/am_policy_hub", GetStateDir()); MapName(path); struct stat sb; return stat(path, &sb) == 0; }
WeatherFaxImageCoordinates::MapType WeatherFaxImageCoordinates::GetMapType(wxString name) { for(int i=0; i < MAP_TYPES; i++) { WeatherFaxImageCoordinates::MapType type = (WeatherFaxImageCoordinates::MapType)i; if(name == MapName(type)) return type; } return MERCATOR; }
static bool TwinExists(void) { char twinfilename[CF_BUFSIZE]; struct stat sb; snprintf(twinfilename, CF_BUFSIZE, "%s/%s", CFWORKDIR, TwinFilename()); MapName(twinfilename); return (stat(twinfilename, &sb) == 0) && (IsExecutable(twinfilename)); }
bool CUILevelMap::OnMouse (float x, float y, EUIMessages mouse_action) { if (inherited::OnMouse(x,y,mouse_action)) return true; if (MapWnd()->GlobalMap()->Locked()) return true; /* if (MapWnd()->m_flags.is_any(CUIMapWnd::lmZoomIn+CUIMapWnd::lmZoomOut)) return false; if (mouse_action == WINDOW_LBUTTON_DOWN) { if (MapWnd()->m_flags.test(CUIMapWnd::lmUserSpotAdd) ) MapWnd()->AddUserSpot(this); else if(fsimilar(MapWnd()->GlobalMap()->GetCurrentZoom(), MapWnd()->GlobalMap()->GetMinZoom(),EPS_L) ) MapWnd()->SetTargetMap( this, true ); return true; }; */ // Real Wolf: Колбек с позицией и названием карты при клике по самой карте. 03.08.2014. if (mouse_action == WINDOW_LBUTTON_DOWN) { Fvector2 cursor_pos = GetUICursor()->GetCursorPosition(); Fvector2 _p; GetAbsolutePos (_p); cursor_pos.sub (_p); Fvector2 p = ConvertLocalToReal(cursor_pos); Fvector pos; pos.set (p.x, 0.0f, p.y); g_actor->callback(GameObject::eUIMapClick)(pos, MapName().c_str() ); } if(mouse_action==WINDOW_MOUSE_MOVE && (FALSE==pInput->iGetAsyncBtnState(0)) ) { if( MapWnd() ) { MapWnd()->Hint (MapName()); return true; } } return false; }
void MonNetworkInit(void) { DeleteItemList(MON_TCP4); DeleteItemList(MON_TCP6); MON_TCP4 = MON_TCP6 = NULL; for (int i = 0; i < ATTR; i++) { char vbuff[CF_BUFSIZE]; sprintf(vbuff, "%s/state/cf_incoming.%s", CFWORKDIR, ECGSOCKS[i].name); MapName(vbuff); CreateEmptyFile(vbuff); sprintf(vbuff, "%s/state/cf_outgoing.%s", CFWORKDIR, ECGSOCKS[i].name); MapName(vbuff); CreateEmptyFile(vbuff); } }
const char *GetMasterDir(void) { const char *masterdir = getenv("CFENGINE_TEST_OVERRIDE_WORKDIR"); if (masterdir != NULL) { static char workbuf[CF_BUFSIZE]; snprintf(workbuf, CF_BUFSIZE, "%s%cmasterfiles", masterdir, FILE_SEPARATOR); return MapName(workbuf); } else if (strcmp(MASTERDIR, "default") == 0 ) { static char workbuf[CF_BUFSIZE]; snprintf(workbuf, CF_BUFSIZE, "%s%cmasterfiles", GetWorkDir(), FILE_SEPARATOR); return MapName(workbuf); } else { return GetDefaultMasterDir(); } }
bool CUIGlobalMap::OnMouse (float x, float y, EUIMessages mouse_action) { if(inherited::OnMouse(x,y,mouse_action)) return true; if(mouse_action==WINDOW_MOUSE_MOVE && (FALSE==pInput->iGetAsyncBtnState(0))) { if( MapWnd() ) { MapWnd()->Hint (MapName()); return true; } } return false; }