static BOOL cli_open_policy_hnd(void) { /* Initialise cli LSA connection */ if (!cli_ipc) { cli_ipc = connect_one("IPC$"); if (!cli_nt_session_open (cli_ipc, PI_LSARPC)) { return False; } } /* Open policy handle */ if (!got_policy_hnd) { /* Some systems don't support SEC_RIGHTS_MAXIMUM_ALLOWED, but NT sends 0x2000000 so we might as well do it too. */ if (!NT_STATUS_IS_OK(cli_lsa_open_policy(cli_ipc, cli_ipc->mem_ctx, True, GENERIC_EXECUTE_ACCESS, &pol))) { return False; } got_policy_hnd = True; } return True; }
static void reconnect(struct tevent_context *ev, struct loadparm_context *lp_ctx, TALLOC_CTX *mem_ctx, struct smbcli_state *cli[NSERVERS][NCONNECTIONS], int fnum[NSERVERS][NCONNECTIONS][NFILES], char *share[NSERVERS]) { int server, conn, f; for (server=0;server<NSERVERS;server++) for (conn=0;conn<NCONNECTIONS;conn++) { if (cli[server][conn]) { for (f=0;f<NFILES;f++) { if (fnum[server][conn][f] != -1) { smbcli_close(cli[server][conn]->tree, fnum[server][conn][f]); fnum[server][conn][f] = -1; } } talloc_free(cli[server][conn]); } cli[server][conn] = connect_one(ev, lp_ctx, mem_ctx, share[server], server, conn); if (!cli[server][conn]) { DEBUG(0,("Failed to connect to %s\n", share[server])); exit(1); } } }
static bool cli_open_policy_hnd(void) { /* Initialise cli LSA connection */ if (!cli_ipc) { NTSTATUS ret; cli_ipc = connect_one("IPC$"); ret = cli_rpc_pipe_open_noauth(cli_ipc, &ndr_table_lsarpc, &global_pipe_hnd); if (!NT_STATUS_IS_OK(ret)) { return False; } } /* Open policy handle */ if (!got_policy_hnd) { /* Some systems don't support SEC_FLAG_MAXIMUM_ALLOWED, but NT sends 0x2000000 so we might as well do it too. */ if (!NT_STATUS_IS_OK(rpccli_lsa_open_policy(global_pipe_hnd, talloc_tos(), True, GENERIC_EXECUTE_ACCESS, &pol))) { return False; } got_policy_hnd = True; } return True; }
static void reconnect(struct smbcli_state *cli[NSERVERS][NCONNECTIONS], char *nfs[NSERVERS], int fnum[NSERVERS][NUMFSTYPES][NCONNECTIONS][NFILES], char *share1, char *share2) { int server, conn, f, fstype; char *share[2]; share[0] = share1; share[1] = share2; fstype = FSTYPE_SMB; for (server=0;server<NSERVERS;server++) for (conn=0;conn<NCONNECTIONS;conn++) { if (cli[server][conn]) { for (f=0;f<NFILES;f++) { smbcli_close(cli[server][conn], fnum[server][fstype][conn][f]); } smbcli_ulogoff(cli[server][conn]); talloc_free(cli[server][conn]); } cli[server][conn] = connect_one(share[server]); if (!cli[server][conn]) { DEBUG(0,("Failed to connect to %s\n", share[server])); exit(1); } } }
void Migrate::run() { uint32_t connection_id; RedPeer::ConnectionOptions::Type conn_type; DBG(0, ""); try { conn_type = _client.get_connection_options(SPICE_CHANNEL_MAIN); RedPeer::ConnectionOptions con_opt(conn_type, _port, _sport, _client.get_protocol(), _auth_options, _con_ciphers); MigChannels::iterator iter = _channels.begin(); connection_id = _client.get_connection_id(); connect_one(**iter, con_opt, connection_id); for (++iter; iter != _channels.end(); ++iter) { conn_type = _client.get_connection_options((*iter)->get_type()); con_opt = RedPeer::ConnectionOptions(conn_type, _port, _sport, _protocol, _auth_options, _con_ciphers); connect_one(**iter, con_opt, connection_id); } _connected = true; DBG(0, "connected"); } catch (...) { close_channels(); } Lock lock(_lock); _cond.notify_one(); if (_connected) { Message* message = new Message(SPICE_MSGC_MAIN_MIGRATE_CONNECTED); _client.post_message(message); } else { Message* message = new Message(SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR); _client.post_message(message); } _running = false; }
static void reconnect(struct cli_state *cli[NSERVERS][NCONNECTIONS], uint16_t fnum[NSERVERS][NCONNECTIONS][NFILES], char *share[NSERVERS]) { int server, conn, f; for (server=0;server<NSERVERS;server++) for (conn=0;conn<NCONNECTIONS;conn++) { if (cli[server][conn]) { for (f=0;f<NFILES;f++) { if (fnum[server][conn][f] != (uint16_t)-1) { cli_close(cli[server][conn], fnum[server][conn][f]); fnum[server][conn][f] = (uint16_t)-1; } } cli_ulogoff(cli[server][conn]); cli_shutdown(cli[server][conn]); } cli[server][conn] = connect_one(share[server], server); if (!cli[server][conn]) { DEBUG(0,("Failed to connect to %s\n", share[server])); exit(1); } } }
/**************************************************************************** main program ****************************************************************************/ int main(int argc,char *argv[]) { char *share1, *share2; struct cli_state *cli1, *cli2; extern char *optarg; extern int optind; extern FILE *dbf; int opt; char *p; int seed; setlinebuf(stdout); dbf = stderr; if (argv[1][0] == '-' || argc < 3) { usage(); exit(1); } share1 = argv[1]; share2 = argv[2]; all_string_sub(share1,"/","\\",0); all_string_sub(share2,"/","\\",0); setup_logging(argv[0],True); argc -= 2; argv += 2; TimeInit(); charset_initialise(); if (getenv("USER")) { pstrcpy(username,getenv("USER")); } seed = time(NULL); while ((opt = getopt(argc, argv, "U:s:hm:f:a")) != EOF) { switch (opt) { case 'U': pstrcpy(username,optarg); p = strchr(username,'%'); if (p) { *p = 0; pstrcpy(password, p+1); got_pass = 1; } break; case 's': seed = atoi(optarg); break; case 'h': usage(); exit(1); case 'm': maskchars = optarg; break; case 'f': filechars = optarg; break; case 'a': showall = 1; break; default: printf("Unknown option %c (%d)\n", (char)opt, opt); exit(1); } } argc -= optind; argv += optind; DEBUG(0,("seed=%d\n", seed)); srandom(seed); cli1 = connect_one(share1); if (!cli1) { DEBUG(0,("Failed to connect to %s\n", share1)); exit(1); } cli2 = connect_one(share2); if (!cli2) { DEBUG(0,("Failed to connect to %s\n", share2)); exit(1); } test_mask(argc, argv, cli1, cli2); return(0); }