*** empty log message ***

git-svn-id: svn://10.65.10.50/trunk@11886 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2004-03-18 12:16:40 +00:00
parent 349ff9ed3d
commit 6d32436f9e
3 changed files with 132 additions and 83 deletions

View File

@ -44,19 +44,11 @@ int OsLinux_EnumerateFamilies(char** families, int max_count)
int OsLinux_EnumerateSizes(const char* name, long* sizes, short* scalable, int max_count)
{
int i = 0;
TFontId f;
wxPrinter printer;
wxPostScriptDC dc(printer.GetPrintDialogData().GetPrintData());
*scalable = 1;
f.SetFaceName(name);
for (int size = 7; size < 80; size++)
{
f.SetPointSize(size);
if (f.Font((wxDC *) &dc).Ok())
sizes[i++] = size;
}
return i;
for (int size = 4; size < 80; size++)
sizes[i++] = size;
return i;
}
void OsLinux_PlaceProcessInWindow(unsigned int instance, const char* name, unsigned int parent)
@ -115,102 +107,64 @@ bool OsLinux_HL_Crypt(unsigned short* data) // Array di 4 words (8 bytes)
// Eutron Smartlink Support
///////////////////////////////////////////////////////////
#include "skeylink.h"
#include "skeylinux.h"
static KEY_NET _eutron_key;
static short smartlink(KEY_NET * key)
{
SKEY_DATA skey;
int i;
skey.lpt = key->lpt;
skey.command = key->command;
for (i = 0; i < LABEL_LENGTH; i++)
skey.label[i] = key->label[i];
for (i = 0; i < PASSWORD_LENGTH; i++)
skey.password[i] = key->password[i];
for (i = 0; i < DATA_LENGTH; i++)
skey.data[i] = key->data[i];
skey.fail_counter = key->fail_counter;
skey.status = key->status;
for (i = 0; i < EXTENDED_DATA_LENGTH; i++)
skey.ext_data[i] = key->ext_data[i];
short retval = clink(&skey);
key->lpt = skey.lpt;
key->command = skey.command;
for (i = 0; i < LABEL_LENGTH; i++)
key->label[i] = skey.label[i];
for (i = 0; i < PASSWORD_LENGTH; i++)
key->password[i] = skey.password[i];
for (i = 0; i < DATA_LENGTH; i++)
key->data[i] = skey.data[i];
key->fail_counter = skey.fail_counter;
key->status = skey.status;
for (i = 0; i < EXTENDED_DATA_LENGTH; i++)
key->ext_data[i] = skey.ext_data[i];
return retval;
}
static SKEY_DATA skey;
bool OsLinux_SL_Crypt(unsigned short* data)
{
_eutron_key.net_command = NET_KEY_ACCESS;
_eutron_key.command = SCRAMBLING_MODE;
memcpy(_eutron_key.data, data, 8);
smartlink(&_eutron_key);
if (_eutron_key.status == ST_OK)
memcpy(data, _eutron_key.data, 8);
return _eutron_key.status == ST_OK;
skey.command = SCRAMBLING_MODE;
memset(skey.data, 0, sizeof(skey.data));
memcpy(skey.data, data, 8);
clink(&skey);
const bool ok = (skey.status == ST_OK);
if (ok)
memcpy(data, skey.data, 8);
return ok;
}
bool OsLinux_SL_Login(const unsigned char* label, const unsigned char* password)
{
memset(&_eutron_key, 0, sizeof(KEY_NET));
_eutron_key.net_command = NET_KEY_OPEN;
_eutron_key.status = ST_HW_FAILURE; // Don't leave ST_OK = 0 here!
memcpy(_eutron_key.label, label, strlen((const char*)label));
memcpy(_eutron_key.password, password, strlen((const char*)password));
skey.command = LOCATING_MODE;
skey.status = ST_HW_FAILURE; // Don't leave ST_OK = 0 here!
memcpy(skey.label, label, strlen((const char*)label));
memcpy(skey.password, password, strlen((const char*)password));
smartlink(&_eutron_key);
return _eutron_key.status == ST_OK;
clink(&skey);
return skey.status == ST_OK;
}
bool OsLinux_SL_Logout()
{
_eutron_key.net_command = NET_KEY_CLOSE;
_eutron_key.command = 0;
smartlink(&_eutron_key);
skey.command = 0;
clink(&skey);
return true;
}
bool OsLinux_SL_ReadBlock(unsigned short reg, unsigned short size, unsigned short* data)
{
_eutron_key.net_command = NET_KEY_ACCESS;
_eutron_key.command = BLOCK_READING_MODE;
unsigned short* pointer = (unsigned short*)(&_eutron_key.data[0]);
unsigned short* number = (unsigned short*)(&_eutron_key.data[2]);
skey.command = BLOCK_READING_MODE;
unsigned short* pointer = (unsigned short*)(&skey.data[0]);
unsigned short* number = (unsigned short*)(&skey.data[2]);
*pointer = reg;
*number = size;
smartlink(&_eutron_key);
bool ok = _eutron_key.status == ST_OK;
clink(&skey);
const bool ok = skey.status == ST_OK;
if (ok)
memcpy(data, &_eutron_key.data[4], size*sizeof(unsigned short));
memcpy(data, &skey.data[4], size*sizeof(unsigned short));
return ok;
}
bool OsLinux_SL_WriteBlock(unsigned short reg, unsigned short size, const unsigned short* data)
{
_eutron_key.net_command = NET_KEY_ACCESS;
_eutron_key.command = BLOCK_WRITING_MODE;
unsigned short* pointer = (unsigned short*)(&_eutron_key.data[0]);
unsigned short* number = (unsigned short*)(&_eutron_key.data[2]);
skey.command = BLOCK_WRITING_MODE;
unsigned short* pointer = (unsigned short*)(&skey.data[0]);
unsigned short* number = (unsigned short*)(&skey.data[2]);
*pointer = reg;
*number = size;
memcpy(&_eutron_key.data[4], data, size*sizeof(unsigned short));
smartlink(&_eutron_key);
return _eutron_key.status == ST_OK;
memcpy(&skey.data[4], data, size*sizeof(unsigned short));
clink(&skey);
return skey.status == ST_OK;
}
void OsLinux_GetFileSys(const char* path, char * dev, char * dir, char * type)

84
xvaga/skeylinux.h Executable file
View File

@ -0,0 +1,84 @@
#ifndef __SKEYLINK_H
#define __SKEYLINK_H
#ifndef __SKEYDRV_H
#define __SKEYDRV_H
#ifdef __cplusplus
extern "C" {
#endif
/***************************************************************************/
/* Smartkey mode codes */
#define SCRAMBLING_MODE 's'
#define READING_MODE 'r'
#define WRITING_MODE 'w'
#define FIXING_MODE 'f'
#define LOCATING_MODE 'l'
#define COMPARING_MODE 'c'
#define PROGRAMMING_MODE 'p'
#define MODEL_READING_MODE 'm'
#define ENCRYPTING_MODE 'e'
#define SERIAL_NUMBER_READING_MODE 'n'
#define FIX_READING_MODE 'x'
#define EXT_MODEL_READING_MODE 'h'
#define FAIL_COUNTER_READING_MODE 'a'
#define BLOCK_READING_MODE ('b' | ((unsigned)'r' << 8))
#define BLOCK_WRITING_MODE ('b' | ((unsigned)'w' << 8))
/***************************************************************************/
/* Smartkey models */
#define SKEY_NONE '0' /* No Smartkey */
#define SKEY_FX '1' /* Smartkey mod. FX */
#define SKEY_PR '2' /* Smartkey mod. PR */
#define SKEY_EP '3' /* Smartkey mod. EP */
#define SKEY_SP '9' /* Smartkey mod. SP */
#define SKEY_NET 'A' /* Smartkey mod. NET */
/***************************************************************************/
/* Return codes */
#define ST_OK 0 /* No errors */
#define ST_NONE_KEY -1 /* No Smartkey present */
#define ST_SYNT_ERR -2 /* Syntax error */
#define ST_LABEL_FAILED -3 /* Uncorrect label */
#define ST_PW_DATA_FAILED -4 /* Uncorrect password or data */
#define ST_HW_FAILURE -20 /* Smartkey damaged */
/***************************************************************************/
/* Field length */
#define LABEL_LENGTH 16
#define PASSWORD_LENGTH 16
#define DATA_LENGTH 64
#define EXTENDED_DATA_LENGTH 352
#define SCRAMBLE_LENGTH 8
/***************************************************************************/
/* Communication structure definition */
typedef struct smartkey {
short lpt;
short command;
unsigned char label[LABEL_LENGTH];
unsigned char password[PASSWORD_LENGTH];
unsigned char data[DATA_LENGTH];
short fail_counter;
short status;
unsigned char ext_data[EXTENDED_DATA_LENGTH];
} SKEY_DATA;
/***************************************************************************/
/* Interface function prototype */
int clink(SKEY_DATA*);
#ifdef __cplusplus
}
#endif
#endif
#endif

View File

@ -766,7 +766,7 @@ int xvt_fsys_get_campo_stp_value(const char* name, char* value, int valsize)
Versione WIN32 e LINUX.
@(FSV)
*/
*/
const char* xvt_fsys_get_campo_ini()
{
static char* prawin = NULL;
@ -774,12 +774,12 @@ const char* xvt_fsys_get_campo_ini()
{
BOOLEAN bFound = FALSE;
char exedir[_MAX_PATH], path[_MAX_PATH];
#ifdef WIN32
// Nelle installazioni sfigate con programmi in rete cerca di stabilire il percorso locale di Campo.ini
DIRECTORY dir;
DIRECTORY dir;
xvt_fsys_get_default_dir(&dir);
xvt_fsys_convert_dir_to_str(&dir, exedir, sizeof(exedir));
#ifdef WIN32
if (xvt_fsys_is_network_drive(exedir))
{
bFound = xvt_fsys_get_campo_stp_value("CampoIni", path, sizeof(path));
@ -807,9 +807,20 @@ const char* xvt_fsys_get_campo_ini()
#endif
if (!xvt_fsys_file_exists(path))
{
#ifdef LINUX
char pathstd[_MAX_PATH];
xvt_fsys_build_pathname(pathstd, NULL, exedir, "campo", "ini", NULL);
if (!xvt_fsys_file_exists(pathstd))
{
#endif
char msg[256];
sprintf(msg, "Impossibile aprire '%s'", (const char *)path);
xvt_dm_post_fatal_exit(msg);
#ifdef LINUX
}
else
wxCopyFile(pathstd, path);
#endif
}
}
prawin = xvt_str_duplicate(path);