Blob Blame History Raw
/*********************************************************/
/*  toksvc: a framework-native token broker service      */
/*  Copyright (C) 2020  SysDeer Technologies, LLC        */
/*  Released under GPLv2 and GPLv3; see COPYING.TOKSVC.  */
/*********************************************************/

#include <psxtypes/psxtypes.h>
#include <ntapi/nt_tty.h>

#include <toksvc/toksvc.h>
#include "toksvc_driver_impl.h"
#include "toksvc_daemon_impl.h"
#include "toksvc_log_impl.h"

void toks_log_service_info(struct toks_daemon_ctx * dctx)
{
	struct toks_driver_ctx * drvctx = dctx->driver_ctx;

	TOKS_LOG_LEVEL(drvctx,1);

	nt_cid          cid;
	void *          addr;
	char *          mark;
	char            path[2048];
	char            uuid[40];
	char            sbuf[64];

	cid.process_id = pe_get_current_process_id();
	cid.thread_id  = pe_get_current_thread_id();
	sbuf[0]        = 0;

	toks_log_get_arbitrary_process_name(
		&cid,path,sizeof(path));

	toks_uuid_to_string(drvctx->cctx->uuid,&uuid);

	if (dctx->request.syncinfo.ipcsvc.keys.key[0]) {
		addr = dctx->request.syncinfo.ipcsvc.keys.key;
		mark = addr;

		ntapi->sprintf(sbuf,".refstr=``%s'', ",mark);
	}

	toks_log_header(
		drvctx,
		TOKS_LOG_ENTRY_SERVER_INFO,
		"token service information for %s "
		"(syspid %d, systid %d): "
		"DRIVER_INFO = {"
		".uuid=%s, "
		".allocated_tokens=%d, "
		".available_tokens=%d, "
		".pending_tokens=%d, "
		".log_level=%d}, "
		"%s"
		"DAEMON_INFO = {"
		".free_tokens=%d, "
		".used_tokens=%d, "
		".controlling_pid=%d, "
		".controlling_syspid=%d}\n",
		toks_log_basename(path),
		cid.process_id,
		cid.thread_id,
		uuid,
		toks_get_driver_atokens(dctx->driver_ctx),
		toks_get_driver_ntokens(dctx->driver_ctx),
		toks_get_driver_nwaiters(dctx->driver_ctx),
		dctx->driver_ctx->cctx->loglevel,
		sbuf,
		dctx->ftokens,
		dctx->utokens,
		dctx->ctrlpid,
		dctx->csyspid);

	toks_log_write(
		drvctx,
		TOKS_LOG_ENTRY_SUB_LEVEL_2,
		"%s.\n",path);
}