Very rough first start, not even everything added
This commit is contained in:
commit
af3619d4fa
88 changed files with 24251 additions and 0 deletions
167
StreamingProxy.tproj/proxy.h
Normal file
167
StreamingProxy.tproj/proxy.h
Normal file
|
@ -0,0 +1,167 @@
|
|||
/*
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_START@
|
||||
*
|
||||
* Copyright (c) 1999-2008 Apple Inc. All Rights Reserved.
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original Code
|
||||
* as defined in and that are subject to the Apple Public Source License
|
||||
* Version 2.0 (the 'License'). You may not use this file except in
|
||||
* compliance with the License. Please obtain a copy of the License at
|
||||
* http://www.opensource.apple.com/apsl/ and read it before using this
|
||||
* file.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* proxy.h
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __PROXY_H__
|
||||
#define __PROXY_H__
|
||||
|
||||
#include "shared_udp.h"
|
||||
/**********************************************/
|
||||
enum {
|
||||
stIdle,
|
||||
stError,
|
||||
|
||||
stRecvClientCommand,
|
||||
stWaitingForIPAddress,
|
||||
stParseClientCommand,
|
||||
stSendClientResponse,
|
||||
stServerTransactionSend,
|
||||
stServerTransactionRecv,
|
||||
stClientShutdown,
|
||||
stServerShutdown,
|
||||
stBadServerName,
|
||||
stCantConnectToServer,
|
||||
stDone
|
||||
}; // rtsp session states
|
||||
|
||||
enum {
|
||||
ttNone,
|
||||
ttDescribe,
|
||||
ttSetup,
|
||||
ttPlay,
|
||||
ttPause,
|
||||
ttStop,
|
||||
ttTeardown,
|
||||
ttOptions,
|
||||
ttAnnounce,
|
||||
ttRedirect,
|
||||
ttGetParameter,
|
||||
ttSetParameter
|
||||
}; // rtsp command types
|
||||
|
||||
enum {
|
||||
kPermissionDenied,
|
||||
kTooManyUsers,
|
||||
kServerNotFound,
|
||||
kUnknownError
|
||||
}; // refusal type
|
||||
|
||||
typedef struct {
|
||||
char *cmd;
|
||||
int type;
|
||||
} t_cmd_map;
|
||||
|
||||
#define MAX_TRACKS 32
|
||||
|
||||
typedef struct {
|
||||
int ID;
|
||||
shok *RTP_S2P;
|
||||
shok *RTCP_S2P;
|
||||
shok *RTP_P2C;
|
||||
shok *RTCP_P2C;
|
||||
int ClientRTPPort;
|
||||
int ServerRTPPort;
|
||||
trans_pb RTP_S2C_tpb;
|
||||
trans_pb RTCP_S2C_tpb;
|
||||
trans_pb RTCP_C2S_tpb;
|
||||
} track_info;
|
||||
|
||||
/* This size will fit nicely in a standard ethernet frame */
|
||||
#define RTSP_SESSION_BUF_SIZE 4096
|
||||
|
||||
typedef struct rtsp_session {
|
||||
struct rtsp_session *next;
|
||||
int die;
|
||||
int newSession;
|
||||
int client_skt;
|
||||
int client_ip;
|
||||
char *server_address;
|
||||
int server_skt;
|
||||
int server_interface_addr;
|
||||
int client_interface_addr;
|
||||
int server_ip;
|
||||
int server_port;
|
||||
int server_skt_pending_connection;
|
||||
int state;
|
||||
int transaction_type;
|
||||
char *sessionID;
|
||||
|
||||
int cur_trk;
|
||||
int numTracks;
|
||||
track_info trk[MAX_TRACKS];
|
||||
|
||||
char cinbuf[RTSP_SESSION_BUF_SIZE];
|
||||
int amtInClientInBuffer;
|
||||
char coutbuf[RTSP_SESSION_BUF_SIZE];
|
||||
int amtInClientOutBuffer;
|
||||
char sinbuf[RTSP_SESSION_BUF_SIZE];
|
||||
int amtInServerInBuffer;
|
||||
char soutbuf[RTSP_SESSION_BUF_SIZE];
|
||||
int amtInServerOutBuffer;
|
||||
int totalContentLength;
|
||||
int haveParsedServerReplyHeaders;
|
||||
int contentLength;
|
||||
char* responseBodyP;
|
||||
|
||||
int tempIP;
|
||||
} rtsp_session;
|
||||
|
||||
typedef struct subnet_allow {
|
||||
struct subnet_allow *next;
|
||||
int ip;
|
||||
int range;
|
||||
} subnet_allow;
|
||||
|
||||
typedef struct rtsp_listener {
|
||||
struct rtsp_listener *next;
|
||||
int port;
|
||||
int skt;
|
||||
} rtsp_listener;
|
||||
|
||||
/**********************************************/
|
||||
int service_listeners();
|
||||
int service_sessions();
|
||||
|
||||
void add_rtsp_port_listener(int address,int port);
|
||||
void cleanup_listeners(void);
|
||||
void answer_new_connection(rtsp_listener *listener);
|
||||
void add_session(rtsp_session *session);
|
||||
void remove_session(rtsp_session *session);
|
||||
rtsp_session *new_session(void);
|
||||
void cleanup_sessions(void);
|
||||
void cleanup_session(rtsp_session *session);
|
||||
void service_session(rtsp_session *session);
|
||||
void service_session_rtp(rtsp_session *session);
|
||||
void read_config(void);
|
||||
void add_allow_subnet(int ip, int range);
|
||||
bool allow_ip(int ip);
|
||||
void send_rtsp_error(int skt, int refusal);
|
||||
|
||||
#endif // __PROXY_H__
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue