⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slptool.c

📁 SLP协议在linux下的实现。此版本为1.2.1版。官方网站为www.openslp.org
💻 C
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************//*                                                                         *//* 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 + -