📄 slptool.c
字号:
/***************************************************************************//* *//* Project: OpenSLP command line UA wrapper *//* *//* File: slptool.c *//* *//* Abstract: Command line wrapper for OpenSLP *//* *//* Requires: OpenSLP installation *//* *//* Author(s): Matt Peterson <mpeterson@caldera.com> *//* *//* Copyright (c) 1995, 1999 Caldera Systems, Inc. *//* *//* This program is free software; you can redistribute it and/or modify it *//* under the terms of the GNU Lesser General Public License as published *//* by the Free Software Foundation; either version 2.1 of the License, or *//* (at your option) any later version. *//* *//* This program is distributed in the hope that it will be useful, *//* but WITHOUT ANY WARRANTY; without even the implied warranty of *//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *//* GNU Lesser General Public License for more details. *//* *//* You should have received a copy of the GNU Lesser General Public *//* License along with this program; see the file COPYING. If not, *//* please obtain a copy from http://www.gnu.org/copyleft/lesser.html *//* *//*-------------------------------------------------------------------------*//* *//* Please submit patches to maintainer of http://www.openslp.org *//* *//***************************************************************************/#include "slptool.h"#ifdef _WIN32# define strncasecmp(String1, String2, Num) strnicmp(String1, String2, Num)# define strcasecmp(String1, String2) stricmp(String1, String2)# define inet_aton(opt,bind) ((bind)->s_addr = inet_addr(opt))#else# ifdef HAVE_CONFIG_H# include "config.h"# define SLP_VERSION VERSION# else# define SLP_VERSION 1.2.1# endif# ifndef HAVE_STRNCASECMPint strncasecmp(const char *s1, const char *s2, size_t len);# endif# ifndef HAVE_STRCASECMPint strcasecmp(const char *s1, const char *s2);# endif#endif /*=========================================================================*/SLPBoolean mySrvTypeCallback( SLPHandle hslp, const char* srvtypes, SLPError errcode, void* cookie ) /*=========================================================================*/{ char* cpy; char* slider1; char* slider2; if(errcode == SLP_OK && *srvtypes) { cpy = strdup(srvtypes); if(cpy) { slider1 = slider2 = cpy; slider1 = strchr(slider2,','); while(slider1) { *slider1 = 0; printf("%s\n",slider2); slider1 ++; slider2 = slider1; slider1 = strchr(slider2,','); } /* print the final itam */ printf("%s\n",slider2); free(cpy); } } return SLP_TRUE;}/*=========================================================================*/void FindSrvTypes(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { if(cmdline->cmdparam1) { result = SLPFindSrvTypes(hslp, cmdline->cmdparam1, cmdline->scopes, mySrvTypeCallback, 0); } else { result = SLPFindSrvTypes(hslp, "*", cmdline->scopes, mySrvTypeCallback, 0); } if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); }}#ifndef UNICAST_NOT_SUPPORTED/*=========================================================================*/void UnicastFindSrvTypes(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { if((result = SLPAssociateIP(hslp, cmdline->cmdparam3)) != SLP_OK) { printf("errorcode: %i\n",result); SLPClose(hslp); return; } if(cmdline->cmdparam1) { result = SLPFindSrvTypes(hslp, cmdline->cmdparam1, cmdline->scopes, mySrvTypeCallback, 0); } else { result = SLPFindSrvTypes(hslp, "*", cmdline->scopes, mySrvTypeCallback, 0); } if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); }}#endif#ifndef MI_NOT_SUPPORTED/*=========================================================================*/void FindSrvTypesUsingIFList(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { if((result = SLPAssociateIFList(hslp, cmdline->cmdparam3)) != SLP_OK) { printf("errorcode: %i\n",result); SLPClose(hslp); return; } if(cmdline->cmdparam1) { result = SLPFindSrvTypes(hslp, cmdline->cmdparam1, cmdline->scopes, mySrvTypeCallback, 0); } else { result = SLPFindSrvTypes(hslp, "*", cmdline->scopes, mySrvTypeCallback, 0); } if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); }}#endif /* MI_NOT_SUPPORTED *//*=========================================================================*/SLPBoolean myAttrCallback(SLPHandle hslp, const char* attrlist, SLPError errcode, void* cookie )/*=========================================================================*/{ if(errcode == SLP_OK) { printf("%s\n",attrlist); } return SLP_TRUE;}/*=========================================================================*/void FindAttrs(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { result = SLPFindAttrs(hslp, cmdline->cmdparam1, cmdline->scopes, cmdline->cmdparam2, myAttrCallback, 0); if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); } }#ifndef UNICAST_NOT_SUPPORTED/*=========================================================================*/void UnicastFindAttrs(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { if((result = SLPAssociateIP(hslp, cmdline->cmdparam3)) != SLP_OK) { printf("errorcode: %i\n",result); SLPClose(hslp); return; } result = SLPFindAttrs(hslp, cmdline->cmdparam1, cmdline->scopes, cmdline->cmdparam2, myAttrCallback, 0); if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); }}#endif#ifndef MI_NOT_SUPPORTED /*=========================================================================*/void FindAttrsUsingIFList(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { if((result = SLPAssociateIFList(hslp, cmdline->cmdparam3)) != SLP_OK) { printf("errorcode: %i\n",result); SLPClose(hslp); return; } result = SLPFindAttrs(hslp, cmdline->cmdparam1, cmdline->scopes, cmdline->cmdparam2, myAttrCallback, 0); if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); } }#endif /* MI_NOT_SUPPORTED */ /*=========================================================================*/SLPBoolean mySrvUrlCallback( SLPHandle hslp, const char* srvurl, unsigned short lifetime, SLPError errcode, void* cookie ) /*=========================================================================*/{ if(errcode == SLP_OK) { printf("%s,%i\n",srvurl,lifetime); } return SLP_TRUE;}/*=========================================================================*/void FindSrvs(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { result = SLPFindSrvs(hslp, cmdline->cmdparam1, cmdline->scopes, cmdline->cmdparam2, mySrvUrlCallback, 0); if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); } }#ifndef MI_NOT_SUPPORTED/*=========================================================================*/void FindSrvsUsingIFList(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { if((result = SLPAssociateIFList(hslp, cmdline->cmdparam3)) != SLP_OK) { printf("errorcode: %i\n",result); SLPClose(hslp); return; } result = SLPFindSrvs(hslp, cmdline->cmdparam1, cmdline->scopes, cmdline->cmdparam2, mySrvUrlCallback, 0); if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); } }#endif /* MI_NOT_SUPPORTED */#ifndef UNICAST_NOT_SUPPORTED/*=========================================================================*/void UnicastFindSrvs(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { if((result = SLPAssociateIP(hslp, cmdline->cmdparam3)) != SLP_OK) { printf("errorcode: %i\n",result); SLPClose(hslp); return; } result = SLPFindSrvs(hslp, cmdline->cmdparam1, cmdline->scopes, cmdline->cmdparam2, mySrvUrlCallback, 0); if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); }}#endif/*=========================================================================*/void FindScopes(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; char* scopes; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { result = SLPFindScopes(hslp,&scopes); if(result == SLP_OK) { printf("%s\n",scopes); SLPFree(scopes); } SLPClose(hslp); } }/*-------------------------------------------------------------------------*/void mySLPRegReport(SLPHandle hslp, SLPError errcode, void* cookie){ if (errcode) printf("(de)registration errorcode %d\n", errcode);}/*=========================================================================*/void Register(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; char srvtype[80] = "", *s; int len = 0; if (strncasecmp(cmdline->cmdparam1, "service:", 8) == 0) len = 8; s = strchr(cmdline->cmdparam1 + len, ':'); if (!s) { printf("Invalid URL: %s\n", cmdline->cmdparam1); return; } len = s - cmdline->cmdparam1; strncpy(srvtype, cmdline->cmdparam1, len); srvtype[len] = 0; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { result = SLPReg(hslp, cmdline->cmdparam1, SLP_LIFETIME_MAXIMUM, srvtype, cmdline->cmdparam2, SLP_TRUE, mySLPRegReport, 0); if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); } }/*=========================================================================*/void Deregister(SLPToolCommandLine* cmdline)/*=========================================================================*/{ SLPError result; SLPHandle hslp; if(SLPOpen(cmdline->lang,SLP_FALSE,&hslp) == SLP_OK) { result = SLPDereg(hslp, cmdline->cmdparam1, mySLPRegReport, 0); if(result != SLP_OK) { printf("errorcode: %i\n",result); } SLPClose(hslp); } }/*=========================================================================*/void PrintVersion(SLPToolCommandLine* cmdline)/*=========================================================================*/{ printf("slptool version = %s\n", SLP_VERSION); printf("libslp version = %s\n", SLPGetProperty("net.slp.OpenSLPVersion")); printf("libslp configuration file = %s\n", SLPGetProperty("net.slp.OpenSLPConfigFile"));}/*=========================================================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -