static lisp_cfg_t * copy_lisp_cfg (apr_pool_t * pool, lisp_cfg_t * cfg) { lisp_cfg_t * copy = (make_lisp_cfg (pool)); (SERVER_ADDRESS (copy)) = (SERVER_ADDRESS (cfg)); (SERVER_PORT (copy)) = (SERVER_PORT (cfg)); (SERVER_ID (copy)) = (SERVER_ID (cfg)); (SERVER_SPECIFIED_P (copy)) = (SERVER_SPECIFIED_P (cfg)); return (copy); }
void check_cfg_for_reuse(lisp_cfg_t *local_cfg, lisp_cfg_t *cfg) { if (strcmp((SERVER_ADDRESS (local_cfg)), (SERVER_ADDRESS (cfg))) || (SERVER_PORT (local_cfg)) != (SERVER_PORT (cfg)) || strcmp((SERVER_ID (local_cfg)), (SERVER_ID (cfg)))) { (SERVER_ADDRESS (local_cfg)) = (SERVER_ADDRESS (cfg)); (SERVER_PORT (local_cfg)) = (SERVER_PORT (cfg)); (SERVER_ID (local_cfg)) = (SERVER_ID (cfg)); (SERVER_SPECIFIED_P (local_cfg)) = (SERVER_SPECIFIED_P (cfg)); (SERVER_SOCKET_SAFE_P (local_cfg)) = 0; } }
static lisp_cfg_t * default_lisp_cfg (apr_pool_t * pool) { lisp_cfg_t * cfg = (make_lisp_cfg (pool)); (SERVER_ADDRESS (cfg)) = (apr_pstrdup (pool, "127.0.0.1")); (SERVER_PORT (cfg)) = 3000; (SERVER_ID (cfg)) = (apr_pstrdup (pool, "apache")); (SERVER_SPECIFIED_P (cfg)) = 0; (SERVER_SOCKET (cfg)) = 0; (SERVER_SOCKET_SAFE_P (cfg)) = 0; return (cfg); }
static int sftpsv(int port,PCStr(host),PVStr(lhost)){ int acsk,svsk,lport,lports; VSAddr vsa; lport = SERVER_PORT() + 1; lports = (lport<<16) | (lport+32); strcpy(lhost,"127.0.0.1"); VSA_atosa(&vsa,0,lhost); acsk = newSocket("sftp",""); if( BindSocket(acsk,&vsa,lports) != 0 ){ BindSocket(acsk,&vsa,0); } lport = sockPort(acsk); listen(acsk,1); svsk = connect_to_sv(MainConn(),"sftp",host,port); sfsv_acsock = acsk; sfsv_svsock = svsk; SftpTid = thread_fork(0x80000,0,"sftpsv1",(IFUNCP)sftpsv1,acsk,svsk); sv1log("-Esf %d/%d %d/%d %X\n",lport,acsk,sockPort(svsk),svsk,SftpTid); return lport; }
int main(int argc, char const **argv) { int sockfd; // Дескриптор сокета const int val = 1; // Для установки параметров сокета char buffer[BUF_SIZE()]; // Буффер сообщения struct sockaddr_in servaddr, clientaddr; // Параметры сервера и клиента sockfd = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // Сокет инициализируется как простой UDP-сокет memset(&servaddr, 0, sizeof(servaddr)); /* Заполнение буффера сообщения */ strcpy(buffer, "HEY ITS MY BROADCAST"); /* Установка параметров сервера и клиента */ servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = INADDR_ANY; servaddr.sin_port = htons(SERVER_PORT()); clientaddr.sin_family = AF_INET; clientaddr.sin_addr.s_addr = inet_addr("192.168.1.255"); clientaddr.sin_port = htons(CLIENT_PORT()); /* Установка параметров сокета */ Setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &val, sizeof(int)); /* Привязка параметров сервера к сокету */ Bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); /* Отправка broadcast - сообщения */ Sendto(sockfd, buffer, BUF_SIZE(), 0, (struct sockaddr *)&clientaddr, sizeof(clientaddr)); /* Закрываем сокет и освобождаем память */ shutdown(sockfd, SHUT_RDWR); close(sockfd); return 0; }
static const char * lisp_set_server (cmd_parms * cmd, void * cfg_void, const char * server_address, const char * server_port, const char * server_id) { lisp_cfg_t * cfg = cfg_void; long port; { char * end; port = (strtol (server_port, (&end), 0)); if (((*end) != '\0') || (port < 0)) return ("malformed server port"); } (SERVER_ADDRESS (cfg)) = (apr_pstrdup ((cmd->pool), server_address)); (SERVER_PORT (cfg)) = port; (SERVER_ID (cfg)) = (apr_pstrdup ((cmd->pool), server_id)); (SERVER_SPECIFIED_P (cfg)) = 1; close_lisp_socket (cfg); return (0); }
int DELEGATE_subfunc(DGC*Conn,int ac,const char *av[],PCStr(func),int Fopt,int type) { int fi; const char *fname; const char *sp; mainFUNCP ifunc; int ctype; const char *nav[64]; /**/ CStr(nab,1024); const char **avx; int acx; int impok = 0; for( fi = 0; fname = subfuncs[fi].f_name; fi++ ){ if( !strcaseeq(func,fname) ) if( !strncaseeq(func,"dg",2) || !strcaseeq(func+2,fname) ) continue; if( subfuncs[fi].f_stats & FC_DISABLE ){ if( FimpByOwner(func) ){ impok = 1; }else{ fprintf(stderr,"Forbidden: %s\n",fname); Finish(-1); } } if( geteuid() == 0 && getuid() != 0 ) if( (subfuncs[fi].f_stats & FC_ASROOT) == 0 ) if( subfuncs[fi].f_func != (mainFunc*)implant_main ) { /* fprintf(stderr,"Not allowed in root: %s\n",fname); */ seteuid(getuid()); } ctype = subfuncs[fi].f_type; if( ctype == MS ){ setIsFunc(Conn,1); LOG_type |= L_ISFUNC; } if( ctype == MV ){ if( type != MV ) return 1; }else if( ctype == MN ){ if( type != MN ) return 1; if( subfuncs[fi].f_proto[0] ) DELEGATE_ScanGlobal(Conn,subfuncs[fi].f_proto); } ifunc = (mainFUNCP)subfuncs[fi].f_func; if( subfuncs[fi].f_withLog ){ /* special case of "expire" */ ac = replace_log(ac,&av,64,nav,AVStr(nab)); }else if( ctype == MV ){ /* already did arg_scan() */ /* don't need config for any client */ }else{ if( ifunc == (mainFUNCP)argdec_main ){ /* don't decrypt +=enc:... arg. */ }else ac = DELEGATE_scan_args(ac,av); DELEGATE_config(Conn,-1); } if( subfuncs[fi].f_withAdmin ) if( subfuncs[fi].f_proto[0] ) checkADMIN(Conn,subfuncs[fi].f_proto); if( Fopt ){ int ai; acx = ac - Fopt; avx = &av[Fopt]; for( ai = 0; ai < acx; ai++ ){ if( strcmp(avx[ai],"--") == 0 ){ acx = ai; break; } } }else{ acx = ac; avx = av; } if( getenv("DELEGATE_DEBUG") ){ int ai; for(ai=0;ai<acx;ai++) fprintf(stderr,"##[%d] %s\n",ai,avx[ai]); } DELEGATE_ver(); /* set MyVer for debugging */ (*ifunc)(acx,avx,Conn,ServSock(),SERVER_PORT()); Finish(0); } if( Fopt ){ printf("DeleGate: unknown function -F\"%s\"\r\n",func); help_main(ac,av); Finish(-1); } return 0; }