void start_session (tcp_socket_t *sock) { int n; array_t *t; stream_t *stream; for (n=0; n<MAXSESS; ++n) if (! streamtab[n]) break; if (n >= MAXSESS) { debug_printf ("Too many sessions\n"); tcp_close (sock); return; } if (tasktab[n] != 0) { /* Free the memory of the previous session. */ mem_free (tasktab[n]); tasktab[n] = 0; } t = (array_t*) mem_alloc (&pool, TASKSZ); if (! t) { debug_printf ("No memory for task\n"); tcp_close (sock); return; } stream = telnet_init (sock); if (! stream) { debug_printf ("Error initializing telnet\n"); tcp_close (sock); return; } streamtab[n] = stream; tasktab[n] = task_create (tcl_main, stream, "tcl", PRIO_TCL, t, TASKSZ); }
int server_init(struct command_context *cmd_ctx) { int ret = tcl_init(); if (ERROR_OK != ret) return ret; return telnet_init("Open On-Chip Debugger"); }
static int bbs_inet_main(char* argv) { KBS_SOCKADDR_IN sin; socklen_t sinlen; sinlen=sizeof(KBS_SOCKADDR_IN); getpeername(0,(struct sockaddr*)&sin,&sinlen); KBS_SET_FROMHOST(sin,getSession()->fromhost); telnet_init(); return bbs_main(argv); }
TelnetConnection::TelnetConnection(boost::asio::io_service& io_service, void (*disconnectHandler)(pointer), void (*msgHandler)(pointer, const std::string &)): mSocket(io_service), mSendQueue(64), mIncompleteMessage(false), mInputBuffer(), mMessageHandler(msgHandler), mDisconnectHandler(disconnectHandler), mTelnet(0) { mTelnet = telnet_init(telopts, telnetEvent, 0, this); }
int main(int argc, char ** argv) { struct telnet_connection dummy_conn; handle_options(argc, argv); vty_init(&vty_info); telnet_init(l23_ctx, NULL, vty_port); while(1) { osmo_select_main(0); } return 0; }
int server_init(struct command_context *cmd_ctx) { int ret = tcl_init(); if (ret != ERROR_OK) return ret; ret = telnet_init("Open On-Chip Debugger"); if (ret != ERROR_OK) { remove_services(); return ret; } return ERROR_OK; }
ICACHE_FLASH_ATTR static void netclient_init_espconn(struct netclient *netclient, struct espconn *espconn) { memset(netclient, 0, sizeof(*netclient)); telnet_init(&netclient->telnet); fifo_init(&netclient->fifo_net); netclient->fifo_net_sending = 0; netclient->espconn = espconn; /* copy tcp info from espconn */ memcpy(netclient->remote_ip, espconn->proto.tcp->remote_ip, sizeof(netclient->remote_ip)); netclient->remote_port = espconn->proto.tcp->remote_port; netclient->local_port = espconn->proto.tcp->local_port; }
void prepare_ipc() { nd_init(); #ifndef NO_IP_DEMON if (!no_ip_demon) hname = hname_init(receive_hname, shutdown_hname); #endif telnet_init((u_short)port_number); #ifdef SERVICE_PORT tcpsvc_init((u_short)service_port); #endif /* SERVICE_PORT */ #ifdef CATCH_UDP_PORT udpsvc = udpsvc_init(udp_port); #endif /* CATCH_UDP_PORT */ (void)signal(SIGPIPE, SIG_IGN); }
/****************************************************************************** DECLARE PUBLIC FUNCTIONS ******************************************************************************/ void TASK_Servers (void *pvParameters) { bool cycle = false; strcpy (servers_user, SERVERS_DEF_USER); strcpy (servers_pass, SERVERS_DEF_PASS); telnet_init(); ftp_init(); for ( ;; ) { if (servers_data.do_enable) { // enable network services telnet_enable(); ftp_enable(); // now set/clear the flags servers_data.enabled = true; servers_data.do_enable = false; } else if (servers_data.do_disable) { // disable network services telnet_disable(); ftp_disable(); // now clear the flags servers_data.do_disable = false; servers_data.enabled = false; } if (cycle) { telnet_run(); } else { ftp_run(); } // move to the next cycle cycle = cycle ? false : true; HAL_Delay(SERVERS_CYCLE_TIME_MS); // set the alive flag for the wdt pybwdt_srv_alive(); } }
int main(int argc, char** argv) { FILE *fh; telnet_t *telnet; char buffer[4096]; size_t len; /* check for a requested input file */ if (argc != 2) { fprintf(stderr, "Usage: telnet-test [test file]\n"); return 1; } /* open requested file */ if ((fh = fopen(argv[1], "rt")) == NULL) { fprintf(stderr, "Failed to open %s: %s\n", argv[1], strerror(errno)); return 2; } /* create telnet parser instance */ if ((telnet = telnet_init(telopts, event_print, 0, NULL)) == 0) { fprintf(stderr, "Failed to initialize libtelnet: %s\n", strerror(errno)); return 3; } /* read input until we hit EOF or marker */ while (fgets(buffer, sizeof(buffer), fh) != NULL && strcmp(buffer, "%%\n") != 0) { if (buffer[0] != '#') { len = strlen(buffer); decode(buffer, &len); telnet_recv(telnet, buffer, len); } } /* clean up */ telnet_free(telnet); fclose(fh); return 0; }
int main(int argc, char** argv) { tall_bts_ctx = talloc_named_const(NULL, 1, "softBTS"); handle_options(argc, argv); set_globals(); bts_core_set_rlimits(); daemonize(); /* Initialize */ srand(time(NULL)); telnet_init(TELNET_PORT); socket_init(&oml.addr, &oml.socket, BSC_OML_PORT); socket_init(&rsl.addr, &rsl.socket, BSC_RSL_PORT); trx_socket_init(TRX_PORT); while(1){ socket_select_main(0); } }
int main(int argc, char *argv[]) { int listen_sock; struct sockaddr_in addr; //telnet_t *telnet; //struct sockaddr_in client_addr; socklen_t addrlen; int rs; struct pollfd pfd[2]; char buffer[512]; memset(&pfd, 0, sizeof(pfd)); if((listen_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("cant open socket\n"); exit(errno); } setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, (void*)&rs, sizeof(rs)); rs = 1; //bzero(&self, sizeof(self)); memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(MY_PORT); addr.sin_addr.s_addr = INADDR_ANY; if( bind(listen_sock, (struct sockaddr*)&addr, sizeof(addr)) != 0 ) { perror("cant bind"); exit(errno); } if( listen(listen_sock, 20) != 0 ) { perror("cant listen"); exit(errno); } pfd[1].fd = listen_sock; pfd[1].events = POLLIN; while(1) { if(user.sock != -1) { pfd[0].fd = user.sock; pfd[0].events = POLLIN; } else { pfd[0].fd = -1; pfd[0].events = 0; } rs = poll(pfd, 2, -1); if(rs == -1 && errno == EINTR) { printf("Poll failed\n"); return 1; } if(pfd[1].revents & POLLIN) { addrlen = sizeof(addr); if((rs = accept(listen_sock, (struct sockaddr*)&addr, &addrlen)) == -1) { fprintf(stderr, "accept() failed %d.\n", errno); return 1; } printf("Connected client: %s:%d\n", inet_ntoa(addr.sin_addr), ntohs(addr.sin_port)); user.sock = rs; user.telnet = telnet_init(telopts, _event_handler, 0, &user); telnet_negotiate(user.telnet, TELNET_DO, TELNET_TELOPT_NAWS); } if(pfd[0].revents & POLLIN) { if( (rs = recv(user.sock, buffer, sizeof(buffer), 0)) > 0) { telnet_recv(user.telnet, buffer, sizeof(buffer)); } else if(rs == 0) { printf("connection closed\n"); close(user.sock); telnet_free(user.telnet); user.sock = -1; break; } else if(errno != EINTR) { fprintf(stderr, "recv() failed\n"); exit(1); } } //send(clientfd, "Hello, world!", sizeof("Hello, world!"), 0); } close(listen_sock); return 0; }
int main(int argc, char **argv) { char buffer[512]; int rs; int sock; struct sockaddr_in addr; struct pollfd pfd[2]; struct addrinfo *ai; struct addrinfo hints; struct termios tios; /* check usage */ if (argc != 3) { fprintf(stderr, "Usage:\n ./telnet-client <host> <port>\n"); return 1; } /* look up server host */ memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if ((rs = getaddrinfo(argv[1], argv[2], &hints, &ai)) != 0) { fprintf(stderr, "getaddrinfo() failed for %s: %s\n", argv[1], gai_strerror(rs)); return 1; } /* create server socket */ if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { fprintf(stderr, "socket() failed: %s\n", strerror(errno)); return 1; } /* bind server socket */ memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) == -1) { fprintf(stderr, "bind() failed: %s\n", strerror(errno)); return 1; } /* connect */ if (connect(sock, ai->ai_addr, ai->ai_addrlen) == -1) { fprintf(stderr, "connect() failed: %s\n", strerror(errno)); return 1; } /* free address lookup info */ freeaddrinfo(ai); /* get current terminal settings, set raw mode, make sure we * register atexit handler to restore terminal settings */ tcgetattr(STDOUT_FILENO, &orig_tios); atexit(_cleanup); tios = orig_tios; cfmakeraw(&tios); tcsetattr(STDOUT_FILENO, TCSADRAIN, &tios); /* set input echoing on by default */ do_echo = 1; /* initialize telnet box */ telnet = telnet_init(telopts, _event_handler, 0, &sock); /* initialize poll descriptors */ memset(pfd, 0, sizeof(pfd)); pfd[0].fd = STDIN_FILENO; pfd[0].events = POLLIN; pfd[1].fd = sock; pfd[1].events = POLLIN; /* loop while both connections are open */ while (poll(pfd, 2, -1) != -1) { /* read from stdin */ if (pfd[0].revents & POLLIN) { if ((rs = read(STDIN_FILENO, buffer, sizeof(buffer))) > 0) { _input(buffer, rs); } else if (rs == 0) { break; } else { fprintf(stderr, "recv(server) failed: %s\n", strerror(errno)); exit(1); } } /* read from client */ if (pfd[1].revents & POLLIN) { if ((rs = recv(sock, buffer, sizeof(buffer), 0)) > 0) { telnet_recv(telnet, buffer, rs); } else if (rs == 0) { break; } else { fprintf(stderr, "recv(client) failed: %s\n", strerror(errno)); exit(1); } } } /* clean up */ telnet_free(telnet); close(sock); return 0; }
bool AIXERRPT_TEL_VALUE(char *server, int port, char *uid, char *pwd, char *pserver, int pport, char *puid, char *ppwd, char *lprom, char *pprom, char *prom, char *inifile, int ngid, char* strmid, char *custpath, char *szReturn) { int ret = 0; int hSocket = 0; bool bResult = TRUE; char buffer[256] = {0}; char mbuffer[256] = {0}; char mdate[256] = {0}; char datebuff[64] = {0}; char curdate[64] = {0}; //char szIniFile[256] = {0}; char szTmpIniFile[256] = {0}; int isChinese = 0; //puts("ok"); /************************************* * For Reason Of Prompt */ int c = 0; char *ca = prom, *cb = NULL; char arprompt[PR_NUM][256]; memset(arprompt, 0, sizeof(arprompt)); LPGDATA pgd=new GDATA; memset(pgd,0,sizeof(GDATA)); while(cb = strchr(ca, 0x20)) { if(ca == cb) { ca ++; continue; } strncpy(arprompt[c++], ca, cb - ca); ca = cb + 1; } strcpy(arprompt[c++], ca); /***********************************/ hSocket = telnet_init(server, port, pserver, pport, puid, ppwd); if(hSocket <= 0) { if(hSocket == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_1%>"));//<%IDS_MQ_1%>"连接失败:域名解析" else if(hSocket == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_2%>"));//<%IDS_MQ_2%>"连接失败:通信初始化" else if(hSocket == -3) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_3%>"));//<%IDS_MQ_3%>"连接失败:连接超时" else if(hSocket == -4) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_4%>"));//<%IDS_MQ_4%>"代理服务器连接失败" else if(hSocket == -5) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_5%>"));//<%IDS_MQ_5%>"代理服务器错误" else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_6%>"));//<%IDS_MQ_6%>"连接失败:未知错误" bResult = FALSE; goto err; } Tel_Param param; if((ret = telnet_connect(hSocket, uid, pwd, lprom, pprom, arprompt,pgd,¶m)) < 0) { if(ret == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_7%>"));//<%IDS_MQ_7%>"登录失败:读数据超时" else if(ret == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_8%>"));//<%IDS_MQ_8%>"登录失败:读数据错误" else if(ret == -3) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_9%>"));//<%IDS_MQ_9%>"登录失败:查找提示符" else if(ret == -4) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_10%>"));//<%IDS_MQ_10%>"登录失败:查找登录提示符" else if(ret == -5) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_11%>"));//<%IDS_MQ_11%>"登录失败:查找密码提示符" else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_MQ_12%>"));//<%IDS_MQ_12%>"登录失败:未知错误" bResult = FALSE; goto err; } if(DFNParser_GetPrivateProfileString("errorlog", "command", "", buffer, sizeof(buffer), inifile) <= 0) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_LOGFILE_02%>")); bResult = FALSE; goto err; } if(DFNParser_GetPrivateProfileString("errorlog", "matchline", "", mbuffer, sizeof(mbuffer), inifile) <= 0) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_LOGFILE_02%>")); bResult = FALSE; goto err; } if(DFNParser_GetPrivateProfileString("date", "command", "", mdate, sizeof(mdate), inifile) <= 0) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_LOGFILE_02%>")); bResult = FALSE; goto err; } isChinese = DFNParser_GetPrivateProfileInt("date", "isChinese", 0, inifile); if((ret = telnet_command(hSocket, mdate,pgd,¶m)) < 0) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_LOGFILE_01%>")); bResult = FALSE; goto err; } if(isChinese) { char week[64] = {0}; int years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0; if(sscanf(pgd->databuffer, "公元%d年%d月%d日 %s %d时%d分%d秒", &years, &months, &days, week, &hours, &minutes, &seconds) != 7) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_LOGFILE_01%>")); bResult = FALSE; goto err; } sprintf(curdate, "%2.2d%2.2d%2.2d%2.2d%2.2d", months, days, hours, minutes, years % 100); } else { char week[16] = {0}; char month[16] = {0}; int day = 0; int hours = 0, mins = 0, secs = 0; char div[16] = {0}; int year = 0; if(sscanf(pgd->databuffer, "%s %s %d %d:%d:%d %s %d", week, month, &day, &hours, &mins, &secs, div, &year) != 8) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_LOGFILE_01%>")); bResult = FALSE; goto err; } if(convert_date(month, day, hours, mins, year, curdate)) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_LOGFILE_01%>")); bResult = FALSE; goto err; } } sprintf(szTmpIniFile, "logfile.ini"); DFN_GetPrivateProfileString(strmid, "lastdate", "", datebuff, sizeof(datebuff), szTmpIniFile); if(!*datebuff) strncpy(datebuff, curdate, 10); if(ca = strchr(buffer, '<')) { strncpy(ca, datebuff, 10); *(ca + 10) = 0; } memset(pgd->databuffer, 0, BUF_SIZE); pgd->datalen = 0; printf("Error Report Command is :%s\n", buffer); if((ret = telnet_command(hSocket, buffer,pgd)) < 0) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_LOGFILE_01%>")); bResult = FALSE; goto err; } if(ret == 0 || !strstr(pgd->databuffer, mbuffer)) { char tmp [256] = {0}; //ofstream fout("aixerr.log",ios::app); //int i = GetConfirms(strmid); //fout << itoa(i, tmp, 10) <<"\r\n"; //fout << flush; //fout.close(); if(GetConfirms(strmid) > 0) DFN_WritePrivateProfileString(strmid, "needconfirm", _ltoa(FALSE, tmp, 10), szTmpIniFile); BOOL bChange = DFN_GetPrivateProfileInt(strmid, "needconfirm", FALSE, szTmpIniFile); if (!bChange) { sprintf(szReturn, "status=0$" ); //0: 未改变 1:改变 } else { sprintf(szReturn, "status=1$" ); } } else { sprintf(szReturn, "status=1$" ); FILE *fp = NULL; char szErrptLogFile[256] = {0}; sprintf(szErrptLogFile, "%s\\data\\TmpIniFile\\logfile_%s.log", FuncGetInstallRootPath(), strmid); if(fp = fopen(szErrptLogFile, "a+")) { fprintf(fp, "%s", pgd->databuffer); fclose(fp); } char tmp [256] = {0}; printf("Track record\n"); DFN_WritePrivateProfileString(strmid, "needconfirm", _ltoa(TRUE, tmp, 10), szTmpIniFile); } DFN_WritePrivateProfileString(strmid, "lastdate", curdate, szTmpIniFile); err: shutdown(hSocket, 0x02); closesocket(hSocket); delete pgd; return bResult; }
int main(int argc, char **argv) { struct gsm_network dummy_network; struct sockaddr_in addr; int on = 1, rc; tall_bsc_ctx = talloc_named_const(NULL, 1, "mgcp-callagent"); osmo_init_ignore_signals(); osmo_init_logging(&log_info); cfg = mgcp_config_alloc(); if (!cfg) return -1; #ifdef BUILD_MGCP_TRANSCODING cfg->setup_rtp_processing_cb = &mgcp_transcoding_setup; cfg->rtp_processing_cb = &mgcp_transcoding_process_rtp; cfg->get_net_downlink_format_cb = &mgcp_transcoding_net_downlink_format; #endif vty_info.copyright = openbsc_copyright; vty_init(&vty_info); logging_vty_add_cmds(&log_info); mgcp_vty_init(); handle_options(argc, argv); rc = mgcp_parse_config(config_file, cfg, MGCP_BSC); if (rc < 0) return rc; rc = telnet_init(tall_bsc_ctx, &dummy_network, OSMO_VTY_PORT_BSC_MGCP); if (rc < 0) return rc; /* set some callbacks */ cfg->reset_cb = mgcp_rsip_cb; /* we need to bind a socket */ if (rc == 0) { cfg->gw_fd.bfd.when = BSC_FD_READ; cfg->gw_fd.bfd.cb = read_call_agent; cfg->gw_fd.bfd.fd = socket(AF_INET, SOCK_DGRAM, 0); if (cfg->gw_fd.bfd.fd < 0) { perror("Gateway failed to listen"); return -1; } setsockopt(cfg->gw_fd.bfd.fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(cfg->source_port); inet_aton(cfg->source_addr, &addr.sin_addr); if (bind(cfg->gw_fd.bfd.fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) { perror("Gateway failed to bind"); return -1; } cfg->gw_fd.bfd.data = msgb_alloc(4096, "mgcp-msg"); if (!cfg->gw_fd.bfd.data) { fprintf(stderr, "Gateway memory error.\n"); return -1; } if (cfg->call_agent_addr) { addr.sin_port = htons(2727); inet_aton(cfg->call_agent_addr, &addr.sin_addr); if (connect(cfg->gw_fd.bfd.fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) { LOGP(DMGCP, LOGL_ERROR, "Failed to connect to: '%s'. errno: %d\n", cfg->call_agent_addr, errno); close(cfg->gw_fd.bfd.fd); cfg->gw_fd.bfd.fd = -1; return -1; } } if (osmo_fd_register(&cfg->gw_fd.bfd) != 0) { LOGP(DMGCP, LOGL_FATAL, "Failed to register the fd\n"); return -1; } LOGP(DMGCP, LOGL_NOTICE, "Configured for MGCP.\n"); } /* initialisation */ srand(time(NULL)); if (daemonize) { rc = osmo_daemonize(); if (rc < 0) { perror("Error during daemonize"); exit(1); } } /* main loop */ while (1) { osmo_select_main(0); } return 0; }
int main (int argc, char** argv) { const char* default_port = "23"; struct sigaction sa; int i; /* process command line args */ for (i = 1; i < argc; ++i) { /* help */ if (strcmp(argv[i], "-h") == 0) { printf( "CLC %s by Sean Middleditch <*****@*****.**>\n" "This program has been released into the PUBLIC DOMAIN.\n\n" "Usage:\n" " clc [-h] <host> [<port>]\n\n" "Options:\n" " -h display help\n", CLC_VERSION ); return 0; } /* other unknown option */ if (argv[i][0] == '-') { fprintf(stderr, "Unknown option %s.\nUse -h to see available options.\n", argv[i]); exit(1); } /* if host is unset, this is the host */ if (host == NULL) { host = argv[i]; /* otherwise, it's a port */ } else { port = argv[i]; } } /* ensure we have a host */ if (host == NULL) { fprintf(stderr, "No host was given.\nUse -h to see command format.\n"); exit(1); } /* set default port if none was given */ if (port == NULL) port = default_port; /* cleanup on any failure */ atexit(cleanup); /* set terminal defaults */ memset(&terminal, 0, sizeof(struct TERMINAL)); terminal.state = TERM_ASCII; terminal.flags = TERM_FLAGS_DEFAULT; terminal.color = TERM_COLOR_DEFAULT; /* initial telnet handler */ telnet = telnet_init(telnet_telopts, telnet_event, 0, 0); /* connect to server */ sock = do_connect(host, port); if (sock == -1) { fprintf(stderr, "Failed to connect to %s:%s\n", host, port); exit(1); } printf("Connected to %s:%s\n", host, port); /* set initial banner */ snprintf(banner, sizeof(banner), "CLC - %s:%s (connected)", host, port); /* configure curses */ initscr(); start_color(); nonl(); cbreak(); noecho(); win_main = newwin(LINES-2, COLS, 0, 0); win_banner = newwin(1, COLS, LINES-2, 0); win_input = newwin(1, COLS, LINES-1, 0); idlok(win_main, TRUE); scrollok(win_main, TRUE); nodelay(win_input, FALSE); keypad(win_input, TRUE); use_default_colors(); init_pair(COLOR_RED, COLOR_RED, -1); init_pair(COLOR_BLUE, COLOR_BLUE, -1); init_pair(COLOR_GREEN, COLOR_GREEN, -1); init_pair(COLOR_CYAN, COLOR_CYAN, -1); init_pair(COLOR_MAGENTA, COLOR_MAGENTA, -1); init_pair(COLOR_YELLOW, COLOR_YELLOW, -1); init_pair(COLOR_WHITE, COLOR_WHITE, -1); init_pair(TERM_COLOR_DEFAULT, -1, -1); wbkgd(win_main, COLOR_PAIR(TERM_COLOR_DEFAULT)); wclear(win_main); init_pair(10, COLOR_WHITE, COLOR_BLUE); wbkgd(win_banner, COLOR_PAIR(10)); wclear(win_banner); init_pair(11, -1, -1); wbkgd(win_input, COLOR_PAIR(11)); wclear(win_input); redraw_display(); /* set signal handlers */ memset(&sa, 0, sizeof(sa)); sa.sa_handler = handle_signal; sigaction(SIGINT, &sa, NULL); sigaction(SIGWINCH, &sa, NULL); /* initial edit buffer */ memset(&editbuf, 0, sizeof(struct EDITBUF)); /* setup poll info */ struct pollfd fds[2]; fds[0].fd = 1; fds[0].events = POLLIN; fds[1].fd = sock; fds[1].events = POLLIN; /* main loop */ while (running) { /* poll sockets */ if (poll(fds, 2, -1) == -1) { if (errno != EAGAIN && errno != EINTR) { endwin(); fprintf(stderr, "poll() failed: %s\n", strerror(errno)); return 1; } } /* resize event? */ if (have_sigwinch) { have_sigwinch = 0; redraw_display(); } /* escape? */ if (have_sigint) { exit(0); } /* input? */ if (fds[0].revents & POLLIN) { int key = wgetch(win_input); if (key != ERR) on_key(key); } /* process input data */ if (fds[1].revents & POLLIN) { char buffer[2048]; int ret = recv(sock, buffer, sizeof(buffer), 0); if (ret == -1) { if (errno != EAGAIN && errno != EINTR) { endwin(); fprintf(stderr, "recv() failed: %s\n", strerror(errno)); return 1; } } else if (ret == 0) { running = 0; } else { recv_bytes += ret; telnet_recv(telnet, buffer, ret); } } /* flush output */ paint_banner(); wnoutrefresh(win_main); wnoutrefresh(win_banner); wnoutrefresh(win_input); doupdate(); } /* final display, pause */ sock = -1; autobanner = 1; paint_banner(); wnoutrefresh(win_banner); doupdate(); wgetch(win_input); /* clean up */ endwin(); printf("Disconnected.\n"); /* free memory (so Valgrind leak detection is useful) */ telnet_free(telnet); return 0; }
int main(int argc, char **argv) { struct ctrl_handle *ctrl; struct gsm_network dummy_network; int rc; tall_bsc_ctx = talloc_named_const(NULL, 0, "osmo_sgsn"); tall_msgb_ctx = talloc_named_const(tall_bsc_ctx, 0, "msgb"); signal(SIGINT, &signal_handler); signal(SIGABRT, &signal_handler); signal(SIGUSR1, &signal_handler); signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); osmo_init_logging(&gprs_log_info); vty_info.copyright = openbsc_copyright; vty_init(&vty_info); logging_vty_add_cmds(&gprs_log_info); sgsn_vty_init(); handle_options(argc, argv); rate_ctr_init(tall_bsc_ctx); rc = telnet_init(tall_bsc_ctx, &dummy_network, OSMO_VTY_PORT_SGSN); if (rc < 0) exit(1); ctrl = sgsn_controlif_setup(NULL, OSMO_CTRL_PORT_SGSN); if (!ctrl) { LOGP(DGPRS, LOGL_ERROR, "Failed to create CTRL interface.\n"); exit(1); } if (sgsn_ctrl_cmds_install() != 0) { LOGP(DGPRS, LOGL_ERROR, "Failed to install CTRL commands.\n"); exit(1); } gprs_ns_set_log_ss(DNS); bssgp_set_log_ss(DBSSGP); sgsn_nsi = gprs_ns_instantiate(&sgsn_ns_cb, tall_bsc_ctx); if (!sgsn_nsi) { LOGP(DGPRS, LOGL_ERROR, "Unable to instantiate NS\n"); exit(1); } bssgp_nsi = sgsn_inst.cfg.nsi = sgsn_nsi; gprs_llc_init("/usr/local/lib/osmocom/crypt/"); sgsn_inst_init(); gprs_ns_vty_init(bssgp_nsi); bssgp_vty_init(); gprs_llc_vty_init(); gprs_sndcp_vty_init(); sgsn_auth_init(); sgsn_cdr_init(&sgsn_inst); /* FIXME: register signal handler for SS_L_NS */ rc = sgsn_parse_config(sgsn_inst.config_file, &sgsn_inst.cfg); if (rc < 0) { LOGP(DGPRS, LOGL_FATAL, "Cannot parse config file\n"); exit(2); } rc = sgsn_gtp_init(&sgsn_inst); if (rc) { LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen on GTP socket\n"); exit(2); } rc = gprs_subscr_init(&sgsn_inst); if (rc < 0) { LOGP(DGPRS, LOGL_FATAL, "Cannot set up subscriber management\n"); exit(2); } rc = gprs_ns_nsip_listen(sgsn_nsi); if (rc < 0) { LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen on NSIP socket\n"); exit(2); } rc = gprs_ns_frgre_listen(sgsn_nsi); if (rc < 0) { LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen GRE " "socket. Do you have CAP_NET_RAW?\n"); exit(2); } if (sgsn->cfg.dynamic_lookup) { if (sgsn_ares_init(sgsn) != 0) { LOGP(DGPRS, LOGL_FATAL, "Failed to initialize c-ares(%d)\n", rc); exit(4); } } if (daemonize) { rc = osmo_daemonize(); if (rc < 0) { perror("Error during daemonize"); exit(1); } } while (1) { rc = osmo_select_main(0); if (rc < 0) exit(3); } /* not reached */ exit(0); }
int main(int argc, char **argv) { char buffer[512]; short listen_port; int listen_sock; int rs; int i; struct sockaddr_in addr; socklen_t addrlen; struct pollfd pfd[MAX_USERS + 1]; /* initialize Winsock */ #if defined(_WIN32) WSADATA wsd; WSAStartup(MAKEWORD(2, 2), &wsd); #endif /* check usage */ if (argc != 2) { fprintf(stderr, "Usage:\n ./telnet-chatd <port>\n"); return 1; } /* initialize data structures */ memset(&pfd, 0, sizeof(pfd)); memset(users, 0, sizeof(users)); for (i = 0; i != MAX_USERS; ++i) users[i].sock = -1; /* parse listening port */ listen_port = (short)strtol(argv[1], 0, 10); /* create listening socket */ if ((listen_sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { fprintf(stderr, "socket() failed: %s\n", strerror(errno)); return 1; } /* reuse address option */ rs = 1; setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, (void*)&rs, sizeof(rs)); /* bind to listening addr/port */ memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(listen_port); if (bind(listen_sock, (struct sockaddr *)&addr, sizeof(addr)) == -1) { fprintf(stderr, "bind() failed: %s\n", strerror(errno)); return 1; } /* listen for clients */ if (listen(listen_sock, 5) == -1) { fprintf(stderr, "listen() failed: %s\n", strerror(errno)); return 1; } printf("LISTENING ON PORT %d\n", listen_port); /* initialize listening descriptors */ pfd[MAX_USERS].fd = listen_sock; pfd[MAX_USERS].events = POLLIN; /* loop for ever */ for (;;) { /* prepare for poll */ for (i = 0; i != MAX_USERS; ++i) { if (users[i].sock != -1) { pfd[i].fd = users[i].sock; pfd[i].events = POLLIN; } else { pfd[i].fd = -1; pfd[i].events = 0; } } /* poll */ rs = poll(pfd, MAX_USERS + 1, -1); if (rs == -1 && errno != EINTR) { fprintf(stderr, "poll() failed: %s\n", strerror(errno)); return 1; } /* new connection */ if (pfd[MAX_USERS].revents & POLLIN) { /* acept the sock */ addrlen = sizeof(addr); if ((rs = accept(listen_sock, (struct sockaddr *)&addr, &addrlen)) == -1) { fprintf(stderr, "accept() failed: %s\n", strerror(errno)); return 1; } printf("Connection received.\n"); /* find a free user */ for (i = 0; i != MAX_USERS; ++i) if (users[i].sock == -1) break; if (i == MAX_USERS) { printf(" rejected (too many users)\n"); _send(rs, "Too many users.\r\n", 14); close(rs); } /* init, welcome */ users[i].sock = rs; users[i].telnet = telnet_init(telopts, _event_handler, 0, &users[i]); telnet_negotiate(users[i].telnet, TELNET_WILL, TELNET_TELOPT_COMPRESS2); telnet_printf(users[i].telnet, "Enter name: "); } /* read from client */ for (i = 0; i != MAX_USERS; ++i) { /* skip users that aren't actually connected */ if (users[i].sock == -1) continue; if (pfd[i].revents & POLLIN) { if ((rs = recv(users[i].sock, buffer, sizeof(buffer), 0)) > 0) { telnet_recv(users[i].telnet, buffer, rs); } else if (rs == 0) { printf("Connection closed.\n"); close(users[i].sock); if (users[i].name != 0) { _message(users[i].name, "** HAS DISCONNECTED **"); free(users[i].name); users[i].name = 0; } telnet_free(users[i].telnet); users[i].sock = -1; break; } else if (errno != EINTR) { fprintf(stderr, "recv(client) failed: %s\n", strerror(errno)); exit(1); } } } } /* not that we can reach this, but GCC will cry if it's not here */ return 0; }
int main(int argc, char *argv[]) { struct sched_param param; struct gprs_rlcmac_bts *bts; int rc; tall_pcu_ctx = talloc_named_const(NULL, 1, "Osmo-PCU context"); if (!tall_pcu_ctx) return -ENOMEM; bv_tall_ctx = tall_pcu_ctx; bts = bts_main_data(); bts->fc_interval = 1; bts->initial_cs_dl = bts->initial_cs_ul = 1; bts->cs1 = 1; bts->t3142 = 20; bts->t3169 = 5; bts->t3191 = 5; bts->t3193_msec = 100; bts->t3195 = 5; bts->n3101 = 10; bts->n3103 = 4; bts->n3105 = 8; bts->alpha = 0; /* a = 0.0 */ msgb_set_talloc_ctx(tall_pcu_ctx); osmo_init_logging(&gprs_log_info); vty_init(&pcu_vty_info); pcu_vty_init(&gprs_log_info); handle_options(argc, argv); if ((!!spoof_mcc) + (!!spoof_mnc) == 1) { fprintf(stderr, "--mcc and --mnc must be specified " "together.\n"); exit(0); } rc = vty_read_config_file(config_file, NULL); if (rc < 0 && config_given) { fprintf(stderr, "Failed to parse the config file: '%s'\n", config_file); exit(1); } if (rc < 0) fprintf(stderr, "No config file: '%s' Using default config.\n", config_file); rc = telnet_init(tall_pcu_ctx, NULL, 4240); if (rc < 0) { fprintf(stderr, "Error initializing telnet\n"); exit(1); } if (!bts->alloc_algorithm) bts->alloc_algorithm = alloc_algorithm_b; rc = pcu_l1if_open(); if (rc < 0) return rc; signal(SIGINT, sighandler); signal(SIGHUP, sighandler); signal(SIGTERM, sighandler); signal(SIGPIPE, sighandler); signal(SIGABRT, sighandler); signal(SIGUSR1, sighandler); signal(SIGUSR2, sighandler); /* enable realtime priority for us */ if (rt_prio != -1) { memset(¶m, 0, sizeof(param)); param.sched_priority = rt_prio; rc = sched_setscheduler(getpid(), SCHED_RR, ¶m); if (rc != 0) { fprintf(stderr, "Setting SCHED_RR priority(%d) failed: %s\n", param.sched_priority, strerror(errno)); exit(1); } } while (!quit) { osmo_gsm_timers_check(); osmo_gsm_timers_prepare(); osmo_gsm_timers_update(); osmo_select_main(0); } telnet_exit(); pcu_l1if_close(); bts->bts->timing_advance()->flush(); talloc_report_full(tall_pcu_ctx, stderr); talloc_free(tall_pcu_ctx); return 0; }
static int bbs_standalone_main(char* argv) { KBS_SOCKADDR_IN sin; socklen_t sinlen; char addr_buf[IPLEN]; int sockfd,count; time_t lasttime,now; lasttime=time(NULL); count=0; while (1) { sinlen=sizeof(KBS_SOCKADDR_IN); #ifdef SMTH if ((now=time(NULL))!=lasttime) count=0; else { if (count>5) sleep(1); } #endif /* SMTH */ sockfd=accept(SOCKFD,(struct sockaddr*)&sin,&sinlen); count++; if (sockfd==-1) continue; proxy_getpeername(sockfd,(struct sockaddr*)&sin,&sinlen); #ifdef CHECK_IP_LINK #ifdef HAVE_IPV6_SMTH if (check_IP_lists(sin.sin6_addr)==1) { #else /* ! HAVE_IPV6_SMTH */ if (check_IP_lists(sin.sin_addr.s_addr)==1) { #endif /* HAVE_IPV6_SMTH */ close(sockfd); continue; } #endif /* CHECK_IP_LINK */ if (!no_fork) { switch (fork()) { case -1: exit(3); case 0: break; default: close(sockfd); continue; } } KBS_SET_FROMHOST(sin,addr_buf); bbslog("0Connect","connect from %d (%d) in port %d",addr_buf,htons(KBS_SIN_MEMBER(sin,port)),mport); setsid(); if (dup2(sockfd,0)==-1) /* dup tcp link to fd 0 and then in the main_bbs func also to fd 1 */ exit(2); close(3); /* close listen sock fd in child session */ close(4); /* close pid file fd in child session */ close(sockfd); /* close accept peer fd in child session */ break; /* leave fd 2 still open holding /dev/null */ } KBS_SET_FROMHOST(sin,getSession()->fromhost); telnet_init(); return bbs_main(argv); } int main(int argc,char **argv) { char addr[STRLEN]; int ret,inetd,port; addr[0]=0;inetd=0;port=23; while ((ret=getopt(argc,argv,"idha:p:"))!=-1) { switch (ret) { case 'i': inetd=1; break; case 'd': no_fork=1; break; case 'h': puts("usage: bbsd [-i] [-d] [-h] [-a <addr>] [-p <port>]"); return 0; case 'a': if (optarg[0]) snprintf(addr,STRLEN,"%s",optarg); break; case 'p': if (!isdigit(optarg[0])) return -1; port=atoi(optarg); break; case '?': return -1; } } #ifndef HAVE_IPV6_SMTH inaddr_any.s_addr=htonl(INADDR_ANY); #endif /* HAVE_IPV6_SMTH */ start_daemon(inetd,port,(!addr[0]?NULL:addr)); main_signals(); return (!inetd?bbs_standalone_main(argv[0]):bbs_inet_main(argv[0])); }
static void daemon_login(int argc, char *argv[], char *envp[]) { int msock, csock; /* socket for Master and Child */ FILE *fp; int listen_port = 23; int len_of_sock_addr; char buf[256]; /* setup standalone */ start_daemon(); signal_restart(SIGCHLD, reapchild); /* choose port */ if(argc == 1) listen_port = 3006; else if(argc >= 2) listen_port = atoi(argv[1]); sprintf(margs, "%s %d ", argv[0],listen_port); /* port binding */ xsin.sin_family = AF_INET; msock = bind_port(listen_port); if(msock<0) { syslog(LOG_INFO, "mbbsd bind_port failed.\n"); exit(1); } initsetproctitle(argc, argv, envp); setproctitle("%s: listening ", margs); /* Give up root privileges: no way back from here */ setgid(BBSGID); setuid(BBSUID); chdir(BBSHOME); /* mmap passwd file */ if(passwd_mmap()) exit(1); sprintf(buf, "/var/run/mbbsd.%d.pid", listen_port); if((fp = fopen(buf, "w"))) { fprintf(fp, "%d\n", getpid()); fclose(fp); } /* main loop */ for(;;) { len_of_sock_addr = sizeof(xsin); csock = accept(msock, (struct sockaddr *)&xsin, &len_of_sock_addr); if(csock < 0) { if(errno!=EINTR) sleep(1); continue; } if(check_ban_and_load(csock)) { close(csock); continue; } if(fork()==0) break; else close(csock); } /* here is only child running */ close(msock); dup2(csock, 0); close(csock); getremotename(&xsin, fromhost, remoteusername); /* RFC931 */ /* ban 掉 bad host / bad user shiuan88: 賣補帖的 */ if(bad_host(fromhost) || strstr(fromhost, "bbs.") || strstr(fromhost, "ccsun53.cc.ntu") || !strcmp(remoteusername, "shiuan88")) { outs("\n 抱歉, 本站謝絕由此處來的user...\n"); refresh(); exit(1); } { char RFC931[80]; sprintf(RFC931, "%s@%s", remoteusername, fromhost); setenv("RFC931", RFC931, 1); } telnet_init(); setproctitle("%s: ..login..", margs); }
int main(int argc, char *argv[]) { struct gprs_rlcmac_bts *bts; int rc; tall_pcu_ctx = talloc_named_const(NULL, 1, "Osmo-PCU context"); if (!tall_pcu_ctx) return -ENOMEM; bv_tall_ctx = tall_pcu_ctx; bts = gprs_rlcmac_bts = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_bts); if (!gprs_rlcmac_bts) return -ENOMEM; bts->fc_interval = 1; bts->initial_cs_dl = bts->initial_cs_ul = 1; bts->cs1 = 1; bts->t3142 = 20; bts->t3169 = 5; bts->t3191 = 5; bts->t3193_msec = 100; bts->t3195 = 5; bts->n3101 = 10; bts->n3103 = 4; bts->n3105 = 8; bts->alpha = 0; /* a = 0.0 */ msgb_set_talloc_ctx(tall_pcu_ctx); osmo_init_logging(&gprs_log_info); vty_init(&pcu_vty_info); pcu_vty_init(&gprs_log_info); handle_options(argc, argv); if ((!!spoof_mcc) + (!!spoof_mnc) == 1) { fprintf(stderr, "--mcc and --mnc must be specified " "together.\n"); exit(0); } rc = vty_read_config_file(config_file, NULL); if (rc < 0 && config_given) { fprintf(stderr, "Failed to parse the config file: '%s'\n", config_file); exit(1); } if (rc < 0) fprintf(stderr, "No config file: '%s' Using default config.\n", config_file); rc = telnet_init(tall_pcu_ctx, NULL, 4240); if (rc < 0) { fprintf(stderr, "Error initializing telnet\n"); exit(1); } if (!bts->alloc_algorithm) bts->alloc_algorithm = alloc_algorithm_b; rc = pcu_l1if_open(); if (rc < 0) return rc; signal(SIGINT, sighandler); signal(SIGHUP, sighandler); signal(SIGTERM, sighandler); signal(SIGPIPE, sighandler); signal(SIGABRT, sighandler); signal(SIGUSR1, sighandler); signal(SIGUSR2, sighandler); while (!quit) { osmo_gsm_timers_check(); osmo_gsm_timers_prepare(); osmo_gsm_timers_update(); osmo_select_main(0); #ifdef DEBUG_DIAGRAM gettimeofday(&diagram_time, NULL); #endif } telnet_exit(); pcu_l1if_close(); talloc_free(gprs_rlcmac_bts); talloc_report_full(tall_pcu_ctx, stderr); talloc_free(tall_pcu_ctx); return 0; }
/****************************************************************************** DECLARE PUBLIC FUNCTIONS ******************************************************************************/ void TASK_Servers (void *pvParameters) { bool cycle = false; strcpy (servers_user, SERVERS_DEF_USER); strcpy (servers_pass, SERVERS_DEF_PASS); telnet_init(); ftp_init(); for ( ;; ) { if (servers_data.do_enable) { // enable network services telnet_enable(); ftp_enable(); // now set/clear the flags servers_data.enabled = true; servers_data.do_enable = false; } else if (servers_data.do_disable) { // disable network services telnet_disable(); ftp_disable(); // now clear the flags servers_data.do_disable = false; servers_data.enabled = false; } else if (servers_data.do_reset) { // resetting the servers is needed to prevent half-open sockets servers_data.do_reset = false; if (servers_data.enabled) { telnet_reset(); ftp_reset(); } // and we should also close all user sockets. We do it here // for convinience and to save on code size. modusocket_close_all_user_sockets(); } if (cycle) { telnet_run(); } else { ftp_run(); } if (sleep_sockets) { sleep_sockets = false; pybwdt_srv_sleeping(true); modusocket_enter_sleep(); pybwdt_srv_sleeping(false); } // set the alive flag for the wdt pybwdt_srv_alive(); // move to the next cycle cycle = cycle ? false : true; mp_hal_delay_ms(SERVERS_CYCLE_TIME_MS); } }
int bts_main(int argc, char **argv) { struct gsm_bts_role_bts *btsb; struct gsm_bts_trx *trx; struct e1inp_line *line; void *tall_msgb_ctx; int rc, i; printf("((*))\n |\n / \\ OsmoBTS\n"); tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); tall_msgb_ctx = talloc_pool(tall_bts_ctx, 100*1024); msgb_set_talloc_ctx(tall_msgb_ctx); bts_log_init(NULL); handle_options(argc, argv); bts = gsm_bts_alloc(tall_bts_ctx); if (!bts) { fprintf(stderr, "Failed to create BTS structure\n"); exit(1); } for (i = 1; i < trx_num; i++) { trx = gsm_bts_trx_alloc(bts); if (!trx) { fprintf(stderr, "Failed to create TRX structure\n"); exit(1); } } vty_init(&bts_vty_info); e1inp_vty_init(); bts_vty_init(bts, &bts_log_info); /* enable realtime priority for us */ if (rt_prio != -1) { struct sched_param param; memset(¶m, 0, sizeof(param)); param.sched_priority = rt_prio; rc = sched_setscheduler(getpid(), SCHED_RR, ¶m); if (rc != 0) { fprintf(stderr, "Setting SCHED_RR priority(%d) failed: %s\n", param.sched_priority, strerror(errno)); exit(1); } } if (gsmtap_ip) { gsmtap = gsmtap_source_init(gsmtap_ip, GSMTAP_UDP_PORT, 1); if (!gsmtap) { fprintf(stderr, "Failed during gsmtap_init()\n"); exit(1); } gsmtap_source_add_sink(gsmtap); } if (bts_init(bts) < 0) { fprintf(stderr, "unable to open bts\n"); exit(1); } abis_init(bts); rc = vty_read_config_file(config_file, NULL); if (rc < 0) { fprintf(stderr, "Failed to parse the config file: '%s'\n", config_file); exit(1); } write_pid_file("osmo-bts"); bts_controlif_setup(bts); rc = telnet_init(tall_bts_ctx, NULL, OSMO_VTY_PORT_BTS); if (rc < 0) { fprintf(stderr, "Error initializing telnet\n"); exit(1); } if (pcu_sock_init()) { fprintf(stderr, "PCU L1 socket failed\n"); exit(1); } signal(SIGINT, &signal_handler); //signal(SIGABRT, &signal_handler); signal(SIGUSR1, &signal_handler); signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); btsb = bts_role_bts(bts); if (!btsb->bsc_oml_host) { fprintf(stderr, "Cannot start BTS without knowing BSC OML IP\n"); exit(1); } line = abis_open(bts, btsb->bsc_oml_host, "sysmoBTS"); if (!line) { fprintf(stderr, "unable to connect to BSC\n"); exit(2); } if (daemonize) { rc = osmo_daemonize(); if (rc < 0) { perror("Error during daemonize"); exit(1); } } while (quit < 2) { log_reset_context(); osmo_select_main(0); } return EXIT_SUCCESS; }
int main(int argc, char **argv) { struct gsm_network dummy_network; int rc; tall_bsc_ctx = talloc_named_const(NULL, 0, "osmo_sgsn"); tall_msgb_ctx = talloc_named_const(tall_bsc_ctx, 0, "msgb"); signal(SIGINT, &signal_handler); signal(SIGABRT, &signal_handler); signal(SIGUSR1, &signal_handler); signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); osmo_init_logging(&gprs_log_info); vty_info.copyright = openbsc_copyright; vty_init(&vty_info); logging_vty_add_cmds(&gprs_log_info); sgsn_vty_init(); handle_options(argc, argv); rate_ctr_init(tall_bsc_ctx); rc = telnet_init(tall_bsc_ctx, &dummy_network, 4245); if (rc < 0) exit(1); gprs_ns_set_log_ss(DNS); bssgp_set_log_ss(DBSSGP); sgsn_nsi = gprs_ns_instantiate(&sgsn_ns_cb, tall_bsc_ctx); if (!sgsn_nsi) { LOGP(DGPRS, LOGL_ERROR, "Unable to instantiate NS\n"); exit(1); } bssgp_nsi = sgsn_inst.cfg.nsi = sgsn_nsi; gprs_llc_init("/usr/local/lib/osmocom/crypt/"); gprs_ns_vty_init(bssgp_nsi); bssgp_vty_init(); gprs_llc_vty_init(); gprs_sndcp_vty_init(); /* FIXME: register signal handler for SS_L_NS */ rc = sgsn_parse_config(sgsn_inst.config_file, &sgsn_inst.cfg); if (rc < 0) { LOGP(DGPRS, LOGL_FATAL, "Cannot parse config file\n"); exit(2); } rc = sgsn_gtp_init(&sgsn_inst); if (rc) { LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen on GTP socket\n"); exit(2); } rc = gprs_ns_nsip_listen(sgsn_nsi); if (rc < 0) { LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen on NSIP socket\n"); exit(2); } rc = gprs_ns_frgre_listen(sgsn_nsi); if (rc < 0) { LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen GRE " "socket. Do you have CAP_NET_RAW?\n"); exit(2); } if (daemonize) { rc = osmo_daemonize(); if (rc < 0) { perror("Error during daemonize"); exit(1); } } while (1) { rc = osmo_select_main(0); if (rc < 0) exit(3); } /* not reached */ exit(0); }
BOOL TELCLUSTER_MONITOR(char *server, int port, char *uid, char *pwd, char *pserver, int pport, char *puid, char *ppwd, char *lprompt, char *pprompt, char *prompts, char *ostype, char *clusterlog, char *cpath, char *szReturn) { int ret = 0; int hSocket = 0; BOOL bResult = TRUE; char iniFile[256] = {0}; char cmd[256] = {0}; /************************************* * For Reason Of Prompt */ int c = 0; char *ca = prompts, *cb = NULL; char arprompt[PR_NUM][256]; memset(arprompt, 0, sizeof(arprompt)); LPGDATA pgd=new GDATA; memset(pgd,0,sizeof(GDATA)); while(cb = strchr(ca, 0x20)) { if(ca == cb) { ca ++; continue; } strncpy(arprompt[c++], ca, cb - ca); ca = cb + 1; } strcpy(arprompt[c++], ca); /***********************************/ hSocket = telnet_init(server, port, pserver, pport, puid, ppwd); if(hSocket <= 0) { if(hSocket == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_1%>")); // <%IDS_TelMonitor_1%> else if(hSocket == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_2%>")); // <%IDS_TelMonitor_2%> else if(hSocket == -3) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_3%>")); // <%IDS_TelMonitor_3%> else if(hSocket == -4) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_4%>")); // <%IDS_TelMonitor_4%> else if(hSocket == -5) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_5%>")); // <%IDS_TelMonitor_5%> else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_6%>")); // <%IDS_TelMonitor_6%> bResult = FALSE; goto err; } if((ret = telnet_connect(hSocket, uid, pwd, lprompt, pprompt, arprompt,pgd)) < 0) { if(ret == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_7%>")); // <%IDS_TelMonitor_7%> else if(ret == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_8%>")); // <%IDS_TelMonitor_8%> else if(ret == -3) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_9%>")); // <%IDS_TelMonitor_9%> else if(ret == -4) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_10%>")); // <%IDS_TelMonitor_10%> else if(ret == -5) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_11%>")); // <%IDS_TelMonitor_11%> else if(ret == -6) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_12%>")); // <%IDS_TelMonitor_12%> else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_13%>")); // <%IDS_TelMonitor_13%> bResult = FALSE; goto err; } #if _DEBUG sprintf(iniFile, "%s\\templates.os\\%s", FuncGetInstallRootPath(), ostype); #else sprintf(iniFile, "%s\\MonitorManager\\templates.os\\%s", FuncGetInstallRootPath(), ostype); #endif DFN_GetPrivateProfileString("cat", "command", "", cmd, sizeof(cmd), iniFile); if(!*cmd) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_14%>")); // <%IDS_TelMonitor_14%> bResult = FALSE; goto err; } if(ca = strstr(cmd, "<file>")) { strcpy(ca, clusterlog); *(ca + strlen(clusterlog)) = 0; } if((ret = telnet_command(hSocket, cmd,pgd)) < 0) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_15%>")); // <%IDS_TelMonitor_15%> bResult = FALSE; goto err; } { int index = 0; CString strBuffer(pgd->databuffer); CString strLine = _T(""); // Cluster if((index = strBuffer.Find("CLUSTER", 0)) >= 0) { strBuffer.Delete(0, index); } else { sprintf(szReturn, "error=%s", "No Cluster"); // No Cluster bResult = FALSE; goto err; } strLine = GetStringFromLineNo(strBuffer, 2); sprintf(szReturn, "%sClusterName=%s$ClusterStatus=%s$", szReturn, GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2)); // Node if((index = strBuffer.Find("NODE", 0)) >= 0) { strBuffer.Delete(0, index); } else { sprintf(szReturn, "error=%s", "No Node"); // No Node bResult = FALSE; goto err; } strLine = GetStringFromLineNo(strBuffer, 2); sprintf(szReturn, "%sNodeName=%s$NodeStatus=%s$NodeState=%s$", szReturn, GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2), GetColumnFromLine(strLine, 3)); // Package if((index = strBuffer.Find("PACKAGE", 0)) >= 0) { strBuffer.Delete(0, index); } else { sprintf(szReturn, "error=%s", "No Package"); // No Package bResult = FALSE; goto err; } strLine = GetStringFromLineNo(strBuffer, 2); sprintf(szReturn, "%sPackageName=%s$PackageStatus=%s$PackageState=%s$PackageAutorun=%s$", szReturn, GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2), GetColumnFromLine(strLine, 3), GetColumnFromLine(strLine, 4)); } err: shutdown(hSocket, 0x02); closesocket(hSocket); delete pgd; return bResult; }
int main(int argc, char *argv[]) { struct netif *nif; int vdefd; char *conffile=NULL; char *nodename=NULL; int c; progname=argv[0]; while (1) { int option_index = 0; static struct option long_options[] = { {"daemon", 0, 0, 'd'}, {"mgmt", 1, 0, 'M'}, {"telnet", 0, 0, 't'}, {"web", 0, 0, 'w'}, {"help",0,0,'h'}, {"rcfile",1,0,'f'}, {"nodename",1,0,'n'}, {"pidfile", 1, 0, 'p'}, {0, 0, 0, 0} }; c = getopt_long_only (argc, argv, "hdwtM:f:n:", long_options, &option_index); if (c == -1) break; switch (c) { case 'M': mgmt=strdup(optarg); break; case 'f': conffile=strdup(optarg); break; case 'n': nodename=strdup(optarg); break; case 't': telnet=1; break; case 'w': web=1; break; case 'd': daemonize=1; break; case 'p': pidfile=strdup(optarg); break; case 'h': usage(argv[0]); //implies exit break; } } if (optind < argc && mgmt==NULL) mgmt=argv[optind]; if (mgmt==NULL) { printlog(LOG_ERR,"mgmt_socket not defined"); exit(-1); } if (telnet==0 && web==0) { printlog(LOG_ERR,"at least one service option (-t -w) must be specified"); exit(-1); } atexit(cleanup); setsighandlers(); /* saves current path in pidfile_path, because otherwise with daemonize() we * forget it */ if(getcwd(pidfile_path, _POSIX_PATH_MAX-1) == NULL) { printlog(LOG_ERR, "getcwd: %s", strerror(errno)); exit(1); } strcat(pidfile_path, "/"); /* call daemon before starting the stack otherwise the stack threads * does not get inherited by the forked process */ if (daemonize && special_daemon()) { printlog(LOG_ERR,"daemon: %s",strerror(errno)); exit(1); } lwipstack=lwip_stack_new(); lwip_stack_set(lwipstack); vdefd = openvdem(mgmt, argv[0], &nif, nodename); /* If rcfile is specified, try it and nothing else */ if (conffile && readconffile(conffile,nif) < 0) { printlog(LOG_ERR, "Error reading configuration file '%s': %s", conffile, strerror(errno)); exit(1); } /* Else try default ones */ else if (!conffile) { int rv; char *homedir = getenv("HOME"); if (homedir) { int len = strlen(homedir) + strlen(USERCONFFILE) + 1; conffile = malloc(len); snprintf(conffile, len, "%s%s", homedir, USERCONFFILE); if ((rv = readconffile(conffile, nif)) >= 0) free(conffile); } if (!homedir || rv < 0) rv = readconffile(conffile = ROOTCONFFILE, nif); if (rv < 0) { printlog(LOG_ERR, "Error reading configuration file '%s': %s", conffile, strerror(errno)); exit(1); } } /* once here, we're sure we're the true process which will continue as a * server: save PID file if needed */ if(pidfile) save_pidfile(); if (telnet) telnet_init(vdefd); if (web) web_init(vdefd); if (daemonize) { int fd; if ((fd=open("/dev/null",O_RDWR)) >= 0) { close(STDERR_FILENO); dup2(fd,STDERR_FILENO); close(fd); openlog(basename(argv[0]), LOG_PID, 0); logok=1; } printlog(LOG_INFO,"VDETELWEB started"); } while (1) { int i; int m=lwip_poll(pfd,npfd,-1); for (i=0;i<npfd && m>0;i++) { if (pfd[i].revents) { m--; fpfd[i](i,pfd[i].fd,vdefd); } } } }
int main(int n, char *cmd[]) { int c, m, i; int dx, dy; telnet_init(); if (map_init() == 0) printf("map.dat error\n"); if (n >= 2) { char buf[40]; strsncpy(userid, cmd[1], sizeof (userid)); readuservalue(userid, "worker.laststage", buf, sizeof (buf)); lastMaxStage = atoi(buf); if (lastMaxStage >= map_total) lastMaxStage = map_total - 1; stage = lastMaxStage; } if (n >= 3) strsncpy(fromhost, cmd[2], sizeof (fromhost)); if (stage == 0) { clear(); printf("»¶Ó¹âÁÙ[1;32mÍÆÏä×Ó[mÓÎÏ·¡£\r\n"); printf ("¹æÔòºÜ¼òµ¥£¬Ö»Ðè°ÑËùÓеÄ'¡õ'¶¼ÍƵ½'¡¤'ÉÏÃæÈ¥(»á±ä³ÉÂÌÉ«)¾Í¹ý¹ØÁË¡£\r\n"); printf("µ«ÍæÆðÀ´ÄѶȿÉÊÇÏ൱´óµÄ£¬²»ÒªÇáÊÓม£\r\n"); pressanykey(); goto start; } win_showrec(); clear(); printf("ÇëÓ÷½Ïò¼üÑ¡¹Ø, »Ø³µ¼üÈ·ÈÏ: %d ", stage); move(0, 14); while (1) { c = inkey(); if ((c == KEY_LEFT || c == KEY_UP) && stage > 0) stage--; if ((c == KEY_RIGHT || c == KEY_DOWN) && stage < lastMaxStage) stage++; if (c == 10 || c == 13) break; if (c == 3 || c == 4 || c == 32) quit(); move(0, 14); printf("%d ", stage); move(0, 14); } start: if (stage < 0 || stage >= map_total) stage = 0; clear(); printf("ÍÆÏä×Ó: µÚ [1;32m%d[m ¹Ø:\033[m", stage); move(20, 0); refresh(); sleep(1); start2: for (n = 0; n < 20; n++) for (m = 0; m < 30; m++) map_now[n][m] = map_data[stage][n][m]; if (!find_y_x(&now_y, &now_x)) printf("stage error\n"); map_show(); bzero(&my_history, sizeof (my_history)); while (1) { c = inkey(); if (my_history.max >= 1999) { move(21, 0); printf("ÄãÓÃÁË2000²½»¹Ã»Óйý¹Ø! GAME OVER."); quit(); } dx = 0; dy = 0; if (c == 8 && my_history.max > 0) { my_history.max--; i = my_history.max; map_move(my_history.y1[i], my_history.x1[i], my_history.y0[i], my_history.x0[i]); find_y_x(&now_y, &now_x); move(now_y, now_x); continue; } if (c == ' ') quit(); if (c == '') map_show(); if (c == 9) goto start2; if (c == KEY_UP) dy = -1; if (c == KEY_DOWN) dy = 1; if (c == KEY_LEFT) dx = -1; if (c == KEY_RIGHT) dx = 1; if (dx == 0 && dy == 0) continue; if (map_now[now_y + dy][now_x + dx] & 4) if (map_now[now_y + dy * 2][now_x + dx * 2] < 2) { map_move(now_y + dy, now_x + dx, now_y + dy * 2, now_x + dx * 2); i = my_history.max; my_history.y0[i] = now_y + dy; my_history.x0[i] = now_x + dx; my_history.y1[i] = now_y + dy * 2; my_history.x1[i] = now_x + dx * 2; my_history.max++; } if (map_now[now_y + dy][now_x + dx] < 2) { map_move(now_y, now_x, now_y + dy, now_x + dx); i = my_history.max; my_history.y0[i] = now_y; my_history.x0[i] = now_x; my_history.y1[i] = now_y + dy; my_history.x1[i] = now_x + dx; my_history.max++; } if (check_if_win()) break; find_y_x(&now_y, &now_x); move(now_y, now_x); } move(19, 0); printf("×£ºØÄã, Äã³É¹¦ÁË£¡"); steps = my_history.max; win_checkrec(); stage++; if (stage > lastMaxStage) { lastMaxStage = stage; if (strcmp(userid, "null.")) { char buf[30]; sprintf(buf, "%d", lastMaxStage); saveuservalue(userid, "worker.laststage", buf); } } goto start; }
int main(int argc, char **argv) { int rc; struct ctrl_connection *ccon; tall_mgr_ctx = talloc_named_const(NULL, 1, "bts manager"); msgb_talloc_ctx_init(tall_mgr_ctx, 0); srand(time(NULL)); osmo_init_logging2(tall_mgr_ctx, &mgr_log_info); if (classify_bts() != 0) exit(2); osmo_init_ignore_signals(); signal(SIGINT, &signal_handler); signal(SIGTERM, &signal_handler); signal(SIGUSR1, &signal_handler); signal(SIGUSR2, &signal_handler); rc = parse_options(argc, argv); if (rc < 0) exit(2); sysmobts_mgr_vty_init(); logging_vty_add_cmds(&mgr_log_info); rc = sysmobts_mgr_parse_config(&manager); if (rc < 0) { LOGP(DFIND, LOGL_FATAL, "Cannot parse config file\n"); exit(1); } rc = telnet_init(tall_mgr_ctx, NULL, OSMO_VTY_PORT_BTSMGR); if (rc < 0) { fprintf(stderr, "Error initializing telnet\n"); exit(1); } /* start temperature check timer */ temp_timer.cb = check_temp_timer_cb; check_temp_timer_cb(NULL); /* start operational hours timer */ hours_timer.cb = hours_timer_cb; hours_timer_cb(NULL); /* start uc temperature check timer */ sbts2050_uc_initialize(); /* handle broadcast messages for ipaccess-find */ if (sysmobts_mgr_nl_init() != 0) exit(3); /* Initialize the temperature control */ ccon = osmo_ctrl_conn_alloc(tall_mgr_ctx, NULL); rc = -1; if (ccon) { ccon->write_queue.bfd.data = ccon; rc = osmo_sock_init_ofd(&ccon->write_queue.bfd, AF_INET, SOCK_STREAM, IPPROTO_TCP, "localhost", OSMO_CTRL_PORT_BTS, OSMO_SOCK_F_CONNECT); } if (rc < 0) LOGP(DLCTRL, LOGL_ERROR, "Can't connect to CTRL @ localhost:%u\n", OSMO_CTRL_PORT_BTS); else LOGP(DLCTRL, LOGL_NOTICE, "CTRL connected to locahost:%u\n", OSMO_CTRL_PORT_BTS); sysmobts_mgr_temp_init(&manager, ccon); if (sysmobts_mgr_calib_init(&manager) != 0) exit(3); if (daemonize) { rc = osmo_daemonize(); if (rc < 0) { perror("Error during daemonize"); exit(1); } } while (1) { log_reset_context(); osmo_select_main(0); } }
/* OpenOCD can't really handle failure of this command. Patches welcome! :-) */ int handle_init_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { if (argc!=0) return ERROR_COMMAND_SYNTAX_ERROR; int retval; static int initialized=0; if (initialized) return ERROR_OK; initialized=1; atexit(exit_handler); if (target_init(cmd_ctx) != ERROR_OK) return ERROR_FAIL; LOG_DEBUG("target init complete"); if ((retval=jtag_interface_init(cmd_ctx)) != ERROR_OK) { /* we must be able to set up the jtag interface */ return retval; } LOG_DEBUG("jtag interface init complete"); /* Try to initialize & examine the JTAG chain at this point, but * continue startup regardless */ if (jtag_init(cmd_ctx) == ERROR_OK) { LOG_DEBUG("jtag init complete"); if (target_examine() == ERROR_OK) { LOG_DEBUG("jtag examine complete"); } } if (flash_init_drivers(cmd_ctx) != ERROR_OK) return ERROR_FAIL; LOG_DEBUG("flash init complete"); if (mflash_init_drivers(cmd_ctx) != ERROR_OK) return ERROR_FAIL; LOG_DEBUG("mflash init complete"); if (nand_init(cmd_ctx) != ERROR_OK) return ERROR_FAIL; LOG_DEBUG("NAND init complete"); if (pld_init(cmd_ctx) != ERROR_OK) return ERROR_FAIL; LOG_DEBUG("pld init complete"); /* initialize tcp server */ server_init(); /* initialize telnet subsystem */ telnet_init("Open On-Chip Debugger"); gdb_init(); tcl_init(); /* allows tcl to just connect without going thru telnet */ target_register_event_callback(log_target_callback_event_handler, cmd_ctx); return ERROR_OK; }