[rtmpdump] [PATCH] RtmpSrv command line options
Steven Penny
svnpenn at gmail.com
Tue Nov 13 08:15:45 CET 2012
-c, --cert cert
-h, --help
-i, --printonly
-k, --key key
-p, --port port
-v, --version
-z, --debug
I chose to reuse the internal global variable "RTMP_ctrlC" for "--printonly" to
avoid rewriting several function calls.
---
rtmpsrv.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 66 insertions(+), 11 deletions(-)
diff --git a/rtmpsrv.c b/rtmpsrv.c
index 5bacbe7..77115a6 100644
--- a/rtmpsrv.c
+++ b/rtmpsrv.c
@@ -787,6 +787,12 @@ enum
}
else
{
+ if (RTMP_ctrlC)
+ {
+ printf("%s\n", cmd);
+ fflush(stdout);
+ exit(0);
+ }
printf("\n%s\n\n", cmd);
fflush(stdout);
server->filetime = now;
@@ -1115,11 +1121,26 @@ void doServe(STREAMING_SERVER * server, // server socket and state (our listenin
signal(SIGINT, SIG_DFL);
}
+void usage()
+{
+ RTMP_LogPrintf
+ (
+ "This is just a stub for an RTMP server. It doesn't do anything beyond\n"
+ "obtaining the connection parameters from the client.\n\n"
+ "-c, --cert cert RTMPS cert\n"
+ "-h, --help Prints this help screen.\n"
+ "-i, --printonly Print RtmpDump command and exit\n"
+ "-k, --key key RTMPS key\n"
+ "-p, --port port Overrides the port in the rtmp url\n"
+ "-v, --version Print version information and exit\n"
+ "-z, --debug Debug level command output.\n"
+ );
+}
+
int
main(int argc, char **argv)
{
int nStatus = RD_SUCCESS;
- int i;
// http streaming server
char DEFAULT_HTTP_STREAMING_DEVICE[] = "0.0.0.0"; // 0.0.0.0 is any device
@@ -1128,21 +1149,55 @@ void doServe(STREAMING_SERVER * server, // server socket and state (our listenin
int nRtmpStreamingPort = 1935; // port
char *cert = NULL, *key = NULL;
- RTMP_LogPrintf("RTMP Server %s\n", RTMPDUMP_VERSION);
- RTMP_LogPrintf("(c) 2010 Andrej Stepanchuk, Howard Chu; license: GPL\n\n");
-
RTMP_debuglevel = RTMP_LOGINFO;
- for (i = 1; i < argc; i++)
+ int opt;
+ struct option longopts[] = {
+ {"cert", 1, NULL, 'c'},
+ {"help", 0, NULL, 'h'},
+ {"printonly", 0, NULL, 'i'},
+ {"key", 1, NULL, 'k'},
+ {"port", 1, NULL, 'p'},
+ {"version", 0, NULL, 'v'},
+ {"debug", 0, NULL, 'z'},
+ {0, 0, 0, 0}
+ };
+
+ while ((opt = getopt_long(argc, argv, "c:hik:p:vz", longopts, NULL)) != -1)
{
- if (!strcmp(argv[i], "-z"))
- RTMP_debuglevel = RTMP_LOGALL;
- else if (!strcmp(argv[i], "-c") && i + 1 < argc)
- cert = argv[++i];
- else if (!strcmp(argv[i], "-k") && i + 1 < argc)
- key = argv[++i];
+ switch (opt)
+ {
+ case 'c':
+ cert = optarg;
+ break;
+ case 'h':
+ usage();
+ return RD_SUCCESS;
+ case 'i':
+ RTMP_ctrlC = 1;
+ break;
+ case 'k':
+ key = optarg;
+ break;
+ case 'p':
+ if (atoi(optarg))
+ nRtmpStreamingPort = atoi(optarg);
+ break;
+ case 'v':
+ printf("RTMP Server %s\n", RTMPDUMP_VERSION);
+ return RD_SUCCESS;
+ case 'z':
+ RTMP_debuglevel = RTMP_LOGALL;
+ break;
+ default:
+ usage();
+ return RD_FAILED;
+ }
}
+ RTMP_LogPrintf("RTMP Server %s\n", RTMPDUMP_VERSION);
+ RTMP_LogPrintf("(c) 2010 Andrej Stepanchuk, Howard Chu; license: GPL\n\n");
+
if (cert && key)
sslCtx = RTMP_TLS_AllocServerContext(cert, key);
--
1.7.10
More information about the rtmpdump
mailing list