#include "StdAfx.h"

#include "connect.h"
#include "server.h"

int f_DongleHasModule(TConnection& conn, void* pJolly)
{
	BOOL ok = FALSE;
	CStringArray& argv = *(CStringArray*)pJolly;
	const int argc = argv.GetSize();
	if (argc > 0)
	{
		const int n = atoi(argv[0]) - 1;
		if (n >= 0)
		{
			unsigned short nSize;
			const unsigned short* int_tab = GetServer().Authorizations(nSize);
			if (int_tab)
			{
				const unsigned short index = n / 16;
				if (index < (nSize/2))
					ok = (int_tab[index] >> (n % 16)) & 0x1;
			}
		}
		else
			ok = TRUE;
	}
	return conn.ReturnBool(ok);
}

int f_DongleModules(TConnection& conn, void* pJolly)
{
	unsigned short nSize;
	const unsigned short* int_tab = GetServer().Authorizations(nSize);
	if (int_tab)
	{
		BYTE* buff = GetServer().GetBuffer(nSize);
		memcpy(buff, int_tab, nSize);
	}
	return int_tab != NULL;
}

int f_DongleNumber(TConnection& conn, void* pJolly)
{
	int serno = GetServer().SerialNumber();
	return conn.ReturnInteger(serno);
}

int f_DongleYear(TConnection& conn, void* pJolly)
{
    int year = GetServer().AssistanceYear();
    return conn.ReturnInteger(year);
}