Corretta la gestione degli utenti e delle connessioni per la versione Terminal Server
git-svn-id: svn://10.65.10.50/trunk@11924 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3234b3f1d9
commit
5e88c2707b
@ -22,6 +22,7 @@
|
||||
#include "ba0.h"
|
||||
#include "ba0101.h"
|
||||
#include "ba0102.h"
|
||||
#include "ba0100.h"
|
||||
|
||||
#include "ba0100a.h"
|
||||
#include "ba0400a.h"
|
||||
@ -45,13 +46,13 @@
|
||||
class TMenu_application : public TSkeleton_application
|
||||
{
|
||||
const char* _name;
|
||||
|
||||
|
||||
TMenu _menu;
|
||||
int _tree_view;
|
||||
TString_array _preferred;
|
||||
|
||||
TMask* _mask;
|
||||
|
||||
|
||||
static int _last_button;
|
||||
static bool _find_button;
|
||||
|
||||
@ -66,7 +67,7 @@ protected: // TApplication
|
||||
protected:
|
||||
void deconnect_user();
|
||||
virtual void main_loop();
|
||||
|
||||
|
||||
void test_temp();
|
||||
void load_menu();
|
||||
int do_level();
|
||||
@ -85,7 +86,7 @@ protected:
|
||||
bool choose_colors();
|
||||
bool choose_editors();
|
||||
bool choose_study();
|
||||
|
||||
|
||||
void load_preferences();
|
||||
void save_preferences();
|
||||
void update_preferred_tree();
|
||||
@ -96,7 +97,7 @@ protected:
|
||||
bool test_programs();
|
||||
bool test_network();
|
||||
|
||||
public:
|
||||
public:
|
||||
static bool tree_find_handler(TMask_field& f, KEY k);
|
||||
static bool tree_shrink_handler(TMask_field& f, KEY k);
|
||||
|
||||
@ -548,7 +549,7 @@ bool TMenu_application::menu_find_handler(TMask_field&f, KEY k)
|
||||
if (app()._menu.find_string(v))
|
||||
{
|
||||
f.set_focusdirty(FALSE);
|
||||
return f.mask().stop_run(K_F9);
|
||||
return m.stop_run(K_F9);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -592,7 +593,7 @@ int TMenu_application::do_level()
|
||||
ef.set_handler(menu_find_handler);
|
||||
|
||||
const bool top = _menu.at_top();
|
||||
TButton_field& bf = mask.add_button(DLG_QUIT, 0, PR("Fine"), -12, -1, bwidth, 2);
|
||||
mask.add_button(DLG_QUIT, 0, PR("Fine"), -12, -1, bwidth, 2);
|
||||
if (!top)
|
||||
mask.add_button(DLG_CANCEL, 0, TR("Menu precedente"), -22, -1, bwidth, 2);
|
||||
|
||||
@ -765,8 +766,8 @@ bool TMenu_application::check_user()
|
||||
|
||||
if (ok)
|
||||
{
|
||||
dongle().logout();
|
||||
user() = utente;
|
||||
dongle().logout();
|
||||
ok = get_serial_number() >= 0;
|
||||
if (!ok)
|
||||
error_box(TR("Probabilmente è stato superato il numero massimo di utenti"));
|
||||
@ -1046,7 +1047,9 @@ HIDDEN bool browse_file_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
FILE_SPEC fs; memset(&fs, 0, sizeof(FILE_SPEC));
|
||||
xvt_fsys_convert_str_to_dir(".", &fs.dir);
|
||||
#ifdef WIN32
|
||||
strcpy(fs.type, "EXE");
|
||||
#endif
|
||||
strcpy(fs.name, f.get());
|
||||
strcpy(fs.creator, "MENU");
|
||||
|
||||
@ -1069,10 +1072,13 @@ HIDDEN bool browse_file_handler(TMask_field& f, KEY k)
|
||||
if (infile.not_empty())
|
||||
{
|
||||
TFilename outfile;
|
||||
if (*infile.ext() == '\0')
|
||||
infile.ext("exe");
|
||||
if (!infile.search_in_path(outfile))
|
||||
ok = error_box("Il programma %s non esiste!", (const char*)infile);
|
||||
{
|
||||
if (*infile.ext() == '\0')
|
||||
infile.ext("exe");
|
||||
if (!infile.search_in_path(outfile))
|
||||
ok = error_box("Il programma %s non esiste!", (const char*)infile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1141,7 +1147,7 @@ HIDDEN int dir_sort(const TObject** d1, const TObject** d2)
|
||||
{
|
||||
const TString& s1 = (const TString&)**d1;
|
||||
const TString& s2 = (const TString&)**d2;
|
||||
return stricmp(s1, s2);
|
||||
return xvt_str_compare_ignoring_case(s1, s2);
|
||||
}
|
||||
|
||||
HIDDEN bool study_handler(TMask_field& f, KEY k)
|
||||
@ -1317,7 +1323,8 @@ bool TMenu_application::explore_handler(TMask_field& f, KEY k)
|
||||
void TMenu_application::update_preferred()
|
||||
{
|
||||
MENU_ITEM* mm = xvt_menu_get_tree(TASK_WIN);
|
||||
for (MENU_ITEM* mi = mm; mi != NULL && mi->tag != 0 && mi->tag != PREFERRED_MENU; mi++);
|
||||
MENU_ITEM* mi;
|
||||
for (mi = mm; mi != NULL && mi->tag != 0 && mi->tag != PREFERRED_MENU; mi++);
|
||||
if (mi == NULL || mi->tag <= 0 || mi->child == NULL)
|
||||
{
|
||||
NFCHECK("Can't find Preferiti Menu");
|
||||
@ -1410,7 +1417,8 @@ void TMenu_application::load_preferences()
|
||||
void TMenu_application::save_preferences()
|
||||
{
|
||||
TConfig cfg(CONFIG_GUI, "ba0");
|
||||
for (int i = 0; i < _preferred.items(); i++)
|
||||
int i;
|
||||
for (i = 0; i < _preferred.items(); i++)
|
||||
cfg.set("Preferred", _preferred.row(i), NULL, TRUE, i);
|
||||
cfg.set("Preferred", "", NULL, TRUE, i);
|
||||
cfg.set("TreeView", _tree_view);
|
||||
@ -1584,7 +1592,7 @@ int TMenu_application::do_tree()
|
||||
tree_fld.set_tree(&tree);
|
||||
tree_fld.set_handler(tree_handler);
|
||||
|
||||
TMask_field& sf = mask.add_static(DLG_NULL, 0, PR("Cerca"), -2, 0);
|
||||
mask.add_static(DLG_NULL, 0, PR("Cerca"), -2, 0);
|
||||
|
||||
TEdit_field& ef = mask.add_string(DLG_USER, 0, "", -2, 1, 50, "", bwidth);
|
||||
ef.set_handler(tree_find_handler);
|
||||
@ -1592,7 +1600,7 @@ int TMenu_application::do_tree()
|
||||
TButton_field& mf = mask.add_button(201, 0, PR("Menu Principale"), -1, 2, bwidth, 2);
|
||||
mf.set_handler(tree_shrink_handler);
|
||||
|
||||
TButton_field& bf = mask.add_button(DLG_QUIT, 0, PR("Fine"), -56, -1, bwidth/2, 2);
|
||||
mask.add_button(DLG_QUIT, 0, PR("Fine"), -56, -1, bwidth/2, 2);
|
||||
|
||||
mask.first_focus(DLG_TREE);
|
||||
KEY key = mask.run();
|
||||
@ -1625,7 +1633,7 @@ int TMenu_application::do_explore()
|
||||
TEdit_field& ef = mask.add_string(DLG_USER, 0, PR("Cerca "), 11, -4, 50);
|
||||
ef.set_handler(tree_find_handler);
|
||||
|
||||
TButton_field& bf = mask.add_button(DLG_QUIT, 0, "", -12, -2, 18, 2);
|
||||
mask.add_button(DLG_QUIT, 0, "", -12, -2, 18, 2);
|
||||
|
||||
TButton_field& mp = mask.add_button(201, 0, PR("Menu Principale"), -22, -2, 18, 2);
|
||||
mp.set_handler(tree_shrink_handler);
|
||||
|
@ -3,7 +3,7 @@
|
||||
#define F_USERDESC 103
|
||||
#define F_GROUP 104
|
||||
#define F_GROUPNAME 105
|
||||
#define F_TEST 106
|
||||
#define F_TESTS 106
|
||||
#define F_APPLICAT 107
|
||||
#define F_NOWRITE 108
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
#include "ba0100a.h"
|
||||
#include "ba0101.h"
|
||||
#include "ba0100.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Menu management
|
||||
@ -62,7 +63,8 @@ static int get_next_int(const char* s, int from, int& val)
|
||||
return -1;
|
||||
|
||||
const char* start = NULL;
|
||||
for (int i = from; s[i]; i++)
|
||||
int i = 0;
|
||||
for (i = from; s[i]; i++)
|
||||
{
|
||||
if (start == NULL)
|
||||
{
|
||||
@ -102,17 +104,25 @@ public:
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TMenuitem::TMenuitem(TSubmenu* sm)
|
||||
: _submenu(sm), _exist(-1), _firm(FALSE),
|
||||
_password(FALSE), _reloadmenu(FALSE),
|
||||
_color(NORMAL_COLOR), _icon(0)
|
||||
: _submenu(sm), _icon(0),_color(NORMAL_COLOR), _exist(-1),
|
||||
_firm(FALSE), _password(FALSE), _reloadmenu(FALSE)
|
||||
|
||||
{ }
|
||||
|
||||
TMenuitem::TMenuitem(const TMenuitem& mi)
|
||||
: _submenu(mi._submenu), _exist(mi._exist), _firm(mi._firm),
|
||||
_password(mi._password), _reloadmenu(mi._reloadmenu),
|
||||
_color(mi._color), _icon(mi._icon), _enabled(mi._enabled),
|
||||
_caption(mi._caption), _action(mi._action), _type(mi._type)
|
||||
{ }
|
||||
TMenuitem::TMenuitem(const TMenuitem& mi)
|
||||
{
|
||||
_submenu = mi._submenu;
|
||||
_exist = mi._exist;
|
||||
_firm = mi._firm;
|
||||
_password = mi._password;
|
||||
_reloadmenu = mi._reloadmenu;
|
||||
_color = mi._color;
|
||||
_icon = mi._icon;
|
||||
_enabled = mi._enabled;
|
||||
_caption = mi._caption;
|
||||
_action = mi._action;
|
||||
_type = mi._type;
|
||||
}
|
||||
|
||||
|
||||
TMenu& TMenuitem::menu() const
|
||||
@ -192,14 +202,21 @@ bool TMenuitem::enabled() const
|
||||
{
|
||||
const int endname = _action.find(' ');
|
||||
TFilename name(endname > 0 ? _action.left(endname) : _action);
|
||||
const char* ext[] = { "exe", "pif", "com", "bat", NULL };
|
||||
for (int e = 0; ext[e]; e++)
|
||||
if (name.exist())
|
||||
yes = TRUE;
|
||||
else
|
||||
{
|
||||
name.ext(ext[e]);
|
||||
if (name.exist())
|
||||
break;
|
||||
}
|
||||
yes = ext[e] != NULL;
|
||||
const char* ext[] = { "exe", "pif", "com", "bat", NULL };
|
||||
int e;
|
||||
|
||||
for (e = 0; ext[e]; e++)
|
||||
{
|
||||
name.ext(ext[e]);
|
||||
if (name.exist())
|
||||
break;
|
||||
}
|
||||
yes = ext[e] != NULL;
|
||||
}
|
||||
}
|
||||
((TMenuitem*)this)->_exist = yes;
|
||||
}
|
||||
@ -242,16 +259,16 @@ bool TMenuitem::perform_program() const
|
||||
}
|
||||
if (!ok) error_box("Password di servizio errata!\nAccesso negato.");
|
||||
}
|
||||
|
||||
|
||||
if (_firm && main_app().get_firm() == 0)
|
||||
#ifdef _DEMO_
|
||||
ok = menu().set_firm(1);
|
||||
#else
|
||||
#else
|
||||
ok = menu().set_firm(0);
|
||||
#endif
|
||||
|
||||
|
||||
if (ok)
|
||||
{
|
||||
{
|
||||
TCurrency::force_cache_update(); // Chiude cache valute
|
||||
prefix().set(NULL); // Chiude prefix
|
||||
TExternal_app a(_action);
|
||||
@ -309,7 +326,7 @@ bool TMenuitem::perform() const
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TSubmenu::TSubmenu(TMenu* menu, const char* name)
|
||||
: _menu(menu), _name(name), _enabled(TRUE), _firm(FALSE), _items(12)
|
||||
: _menu(menu), _name(name), _items(12), _enabled(TRUE), _firm(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
@ -560,7 +577,10 @@ TSubmenu* TMenu::find_string(const TString& str)
|
||||
}
|
||||
|
||||
restart();
|
||||
for (TSubmenu* sm = (TSubmenu*)get(); sm; sm = (TSubmenu*)get())
|
||||
|
||||
TSubmenu * sm;
|
||||
|
||||
for (sm = (TSubmenu*)get(); sm; sm = (TSubmenu*)get())
|
||||
{
|
||||
if (sm->enabled() && !_ignore_list.is_key(sm->name()))
|
||||
{
|
||||
@ -585,7 +605,8 @@ TSubmenu* TMenu::find_string(const TString& str)
|
||||
TSubmenu* TMenu::find_parent(const TSubmenu& sub)
|
||||
{
|
||||
restart();
|
||||
for (TSubmenu* sm = (TSubmenu*)get(); sm; sm = (TSubmenu*)get())
|
||||
TSubmenu* sm;
|
||||
for (sm = (TSubmenu*)get(); sm; sm = (TSubmenu*)get())
|
||||
{
|
||||
for (int i = sm->items()-1; i >= 0; i--)
|
||||
{
|
||||
|
11
ba/ba0101.h
11
ba/ba0101.h
@ -31,12 +31,13 @@ class TMenuitem : public TObject
|
||||
TString _caption, _action;
|
||||
int _icon;
|
||||
char _type;
|
||||
|
||||
COLOR _color;
|
||||
int _exist : 2;
|
||||
bool _enabled : 2;
|
||||
bool _firm : 2;
|
||||
bool _password : 2;
|
||||
bool _reloadmenu : 2;
|
||||
char _exist : 2;
|
||||
char _enabled : 2;
|
||||
char _firm : 2;
|
||||
char _password : 2;
|
||||
char _reloadmenu : 2;
|
||||
|
||||
protected:
|
||||
bool perform_submenu() const;
|
||||
|
@ -363,7 +363,7 @@ TObject* TMenulist_images::key2obj(const char* key)
|
||||
const int w = image.width();
|
||||
const int h = image.height();
|
||||
const int radius = min(w, h) / 4;
|
||||
const clock_t start_timer = clock();
|
||||
// const clock_t start_timer = clock();
|
||||
for (int y = h-1; y >= 0; y--)
|
||||
{
|
||||
for (int x = w-1; x >= 0; x--)
|
||||
@ -383,7 +383,7 @@ TObject* TMenulist_images::key2obj(const char* key)
|
||||
}
|
||||
}
|
||||
}
|
||||
const clock_t stop_timer = clock()-start_timer;
|
||||
// const clock_t stop_timer = clock()-start_timer;
|
||||
|
||||
RCT rct; xvt_vobj_get_client_rect(_win, &rct);
|
||||
const double ratiox = double(rct.right) / image.width();
|
||||
@ -465,11 +465,11 @@ void TMenulist_window::draw_item(int i)
|
||||
const int left = col * width / MENU_COLS;
|
||||
const int right = (col+1) * width / MENU_COLS;
|
||||
const int top = row * height / MENU_ROWS;
|
||||
const int bottom = (row+1) * height / MENU_ROWS;
|
||||
// const int bottom = (row+1) * height / MENU_ROWS;
|
||||
|
||||
const int maxchars = (right-left)/CHARX - 1;
|
||||
const int cx = (left+right)/2;
|
||||
const int cy = (top+bottom)/2;
|
||||
// const int cy = (top+bottom)/2; verificare
|
||||
|
||||
const int ico = item.enabled() ? item.icon() : 0;
|
||||
const int ix = cx-16;
|
||||
@ -585,7 +585,7 @@ void TMenulist_window::handler(WINDOW win, EVENT* ep)
|
||||
RCT rct; xvt_vobj_get_client_rect(win, &rct);
|
||||
const int row = ep->v.mouse.where.v * MENU_ROWS / rct.bottom;
|
||||
const int col = ep->v.mouse.where.h * MENU_COLS / rct.right;
|
||||
const index = row * MENU_COLS + col;
|
||||
const int index = row * MENU_COLS + col;
|
||||
if (ep->v.mouse.button > 0) // Tasto destro
|
||||
{
|
||||
if (index < _sorted.items())
|
||||
|
@ -155,7 +155,7 @@ XVT_FNTID xvt_default_font(bool bold)
|
||||
#ifdef WIN32
|
||||
font_ser_desc = "01\\Courier\\0\\10\\WIN01/-13/0/0/0/400/0/0/0/0/1/2/1/49/Courier";
|
||||
#else
|
||||
font_ser_desc = "01\\Courier\\0\\10\\WIN01/12/0/0/0/400/0/0/0/0/1/2/1/49/Courier";
|
||||
font_ser_desc = "01\\Courier\\0\\10\\WIN01/10/0/0/0/400/0/0/0/0/1/2/1/49/Courier";
|
||||
#endif
|
||||
xvt_font_deserialize(DEF_FONT, (char *)(const char *) font_ser_desc);
|
||||
xvt_font_map_using_default(DEF_FONT);
|
||||
|
@ -442,14 +442,16 @@ bool TDongle::eutron_login(bool test_all_keys)
|
||||
|
||||
bool TDongle::network_login(bool test_all_keys)
|
||||
{
|
||||
if (network())
|
||||
if (network() && ok())
|
||||
rpc_UserLogout();
|
||||
|
||||
TConfig ini(CONFIG_INSTALL, "Server");
|
||||
const char* server = ini.get("Dongle");
|
||||
const char* guest = "******";
|
||||
const TString16 appname = main_app().name();
|
||||
const char* utente = (!main_app().is_running() && appname == "ba0100") ? guest : (const char *) user();
|
||||
// const char* guest = "******";
|
||||
// const TString16 appname = main_app().name();
|
||||
// const char* utente = (!main_app().is_running() && appname == "ba0100") ? guest : (const char *) user();
|
||||
const char* appname = main_app().name();
|
||||
const char* utente = user();
|
||||
|
||||
const bool ok = rpc_UserLogin(server, utente, "******", appname);
|
||||
if (ok)
|
||||
|
@ -261,9 +261,12 @@ bool rpc_UserLogin(const char* server, const char* user,
|
||||
if (_connection)
|
||||
{
|
||||
TString16 password;
|
||||
|
||||
CreatePassword(password);
|
||||
|
||||
_rpc_call.format("UserLogin(%s,%s,%s)", user, (const char*)password, application);
|
||||
|
||||
const int session = xvt_sys_get_session_id();
|
||||
_rpc_call.format("UserLogin(%s,%s,%s,%d)", user, (const char*)password, application, session);
|
||||
|
||||
long answer = 0;
|
||||
bool connected = _client->RequestInteger(_connection, _rpc_call, answer) != 0;
|
||||
if (connected)
|
||||
@ -303,7 +306,8 @@ bool rpc_UserLogout()
|
||||
{
|
||||
if (_connection)
|
||||
{
|
||||
_rpc_call.format("UserLogout(%s)", (const char*)user());
|
||||
const int session = xvt_sys_get_session_id();
|
||||
_rpc_call.format("UserLogout(%s, %d)", (const char*)user(), session);
|
||||
rpc_Call(_rpc_call);
|
||||
_client->RemoveConnection(_connection);
|
||||
_connection = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user