summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2000-04-19 04:01:16 +0000
committerAndrew Tridgell <tridge@samba.org>2000-04-19 04:01:16 +0000
commit612682354fa978d7b883028b3aace52a2882adca (patch)
tree9c0067c0162178774ce251422370991663fd85aa /source3
parentd2db520692898c317acc2eba78f88f8398a1fd21 (diff)
downloadsamba-612682354fa978d7b883028b3aace52a2882adca.tar.gz
samba-612682354fa978d7b883028b3aace52a2882adca.tar.bz2
samba-612682354fa978d7b883028b3aace52a2882adca.zip
- got rid of the "passive" option
- cleaned up the standard_sub_*() calls a lot (This used to be commit 2c2d95d77d3667eaa9252506a82b9054b0d0e01c)
Diffstat (limited to 'source3')
-rw-r--r--source3/include/proto.h16
-rw-r--r--source3/lib/substitute.c124
-rw-r--r--source3/lib/util_sock.c7
-rw-r--r--source3/smbd/ipc.c14
-rw-r--r--source3/smbd/server.c10
-rw-r--r--source3/smbd/service.c10
6 files changed, 80 insertions, 101 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 9d1c158cef..8432073915 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -197,10 +197,11 @@ int smbrun(char *cmd,char *outfile,BOOL shared);
/*The following definitions come from lib/substitute.c */
-void standard_sub_basic(char *str);
-void standard_sub_advanced(int snum, char *user, char *connectpath, gid_t gid, char *str);
-void standard_sub(connection_struct *conn, char *str);
+void standard_sub_conn(connection_struct *conn, char *str);
void standard_sub_snum(int snum, char *str);
+void standard_sub_basic(char *str);
+void standard_sub_vuser(char *str, user_struct *vuser);
+void standard_sub_vsnum(char *str, user_struct *vuser, int snum);
/*The following definitions come from lib/system.c */
@@ -567,6 +568,15 @@ smb_ucs2_t *string_truncate_w(smb_ucs2_t *s, size_t length);
int cli_set_port(struct cli_state *cli, int port);
char *cli_errstr(struct cli_state *cli);
+void cli_safe_smb_errstr(struct cli_state *cli, char *msg, size_t len);
+BOOL get_safe_rap_errstr(int rap_error, char *err_msg, size_t msglen);
+void cli_safe_errstr(struct cli_state *cli, char *err_msg, size_t msglen);
+BOOL cli_send_trans(struct cli_state *cli, int trans,
+ char *name, int pipe_name_len,
+ int fid, int flags,
+ uint16 *setup, int lsetup, int msetup,
+ char *param, int lparam, int mparam,
+ char *data, int ldata, int mdata);
BOOL cli_api_pipe(struct cli_state *cli, char *pipe_name, int pipe_name_len,
uint16 *setup, uint32 setup_count, uint32 max_setup_count,
char *params, uint32 param_count, uint32 max_param_count,
diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c
index 8e7b1cfa5a..e7d620db16 100644
--- a/source3/lib/substitute.c
+++ b/source3/lib/substitute.c
@@ -157,78 +157,43 @@ static char *automount_server(char *user_name)
return server_name;
}
-/*******************************************************************
- Substitute strings with useful parameters.
- Rewritten by Stefaan A Eeckels <Stefaan.Eeckels@ecc.lu> and
- Paul Rippin <pr3245@nopc.eurostat.cec.be>.
-********************************************************************/
-void standard_sub_basic(char *str)
-{
- char *s, *p;
- char pidstr[10];
- struct passwd *pass;
- char *username = sam_logon_in_ssb ? samlogon_user : sesssetup_user;
-
- for (s = str ; s && *s && (p = strchr(s,'%')); s = p )
- {
- int l = sizeof(pstring) - (int)(p-str);
-
- if (l < 0) {
- DEBUG(0,("ERROR: string overflow by %d in standard_sub_basic(%.50s)\n",
- -l, str));
-
- return;
- }
-
- switch (*(p+1))
- {
- case 'G' :
- {
- if ((pass = Get_Pwnam(username,False))!=NULL) {
- string_sub(p,"%G",gidtoname(pass->pw_gid),l);
- } else {
- p += 2;
- }
- break;
- }
- case 'N' : string_sub(p,"%N", automount_server(username),l); break;
- case 'I' : string_sub(p,"%I", client_addr(),l); break;
- case 'L' : string_sub(p,"%L", local_machine,l); break;
- case 'M' : string_sub(p,"%M", client_name(),l); break;
- case 'R' : string_sub(p,"%R", remote_proto,l); break;
- case 'T' : string_sub(p,"%T", timestring(False),l); break;
- case 'U' : string_sub(p,"%U", username,l); break;
- case 'a' : string_sub(p,"%a", remote_arch,l); break;
- case 'd' :
- {
- slprintf(pidstr,sizeof(pidstr) - 1, "%d",(int)getpid());
- string_sub(p,"%d", pidstr,l);
- break;
- }
- case 'h' : string_sub(p,"%h", myhostname(),l); break;
- case 'm' : string_sub(p,"%m", remote_machine,l); break;
- case 'v' : string_sub(p,"%v", VERSION,l); break;
- case '$' : p += expand_env_var(p,l); break; /* Expand environment variables */
- case '\0': p++; break; /* don't run off end if last character is % */
- default : p+=2; break;
- }
- }
- return;
-}
-
/****************************************************************************
Do some standard substitutions in a string.
****************************************************************************/
-
-void standard_sub_advanced(int snum, char *user, char *connectpath, gid_t gid, char *str)
+static void standard_sub_advanced(int snum, char *user, char *connectpath, gid_t gid, char *str)
{
char *p, *s, *home;
+ fstring pidstr;
+ struct passwd *pass;
for (s=str; (p=strchr(s, '%'));s=p) {
int l = sizeof(pstring) - (int)(p-str);
-
+
switch (*(p+1)) {
+ case 'I' : string_sub(p,"%I", client_addr(),l); break;
+ case 'L' : string_sub(p,"%L", local_machine,l); break;
+ case 'M' : string_sub(p,"%M", client_name(),l); break;
+ case 'R' : string_sub(p,"%R", remote_proto,l); break;
+ case 'T' : string_sub(p,"%T", timestring(False),l); break;
+ case 'U' : string_sub(p,"%U", user,l); break;
+ case 'a' : string_sub(p,"%a", remote_arch,l); break;
+ case 'd' :
+ slprintf(pidstr,sizeof(pidstr), "%d",(int)getpid());
+ string_sub(p,"%d", pidstr,l);
+ break;
+ case 'h' : string_sub(p,"%h", myhostname(),l); break;
+ case 'm' : string_sub(p,"%m", remote_machine,l); break;
+ case 'v' : string_sub(p,"%v", VERSION,l); break;
+ case '$' : p += expand_env_var(p,l); break; /* Expand environment variables */
+ case 'G' :
+ if ((pass = Get_Pwnam(user,False))!=NULL) {
+ string_sub(p,"%G",gidtoname(pass->pw_gid),l);
+ } else {
+ p += 2;
+ }
+ break;
+ case 'N' : string_sub(p,"%N", automount_server(user),l); break;
case 'H':
if ((home = get_user_home_dir(user))) {
string_sub(p,"%H",home, l);
@@ -236,7 +201,6 @@ void standard_sub_advanced(int snum, char *user, char *connectpath, gid_t gid, c
p += 2;
}
break;
-
case 'P':
string_sub(p,"%P", connectpath, l);
break;
@@ -270,19 +234,14 @@ void standard_sub_advanced(int snum, char *user, char *connectpath, gid_t gid, c
break;
}
}
-
- standard_sub_basic(str);
}
/****************************************************************************
Do some standard substitutions in a string.
****************************************************************************/
-void standard_sub(connection_struct *conn, char *str)
+void standard_sub_conn(connection_struct *conn, char *str)
{
- if (conn==NULL)
- standard_sub_advanced(-1, "", "", -1, str);
- else
- standard_sub_advanced(SNUM(conn), conn->user, conn->connectpath, conn->gid, str);
+ standard_sub_advanced(SNUM(conn), conn->user, conn->connectpath, conn->gid, str);
}
/****************************************************************************
@@ -293,3 +252,28 @@ void standard_sub_snum(int snum, char *str)
standard_sub_advanced(snum, "", "", -1, str);
}
+
+/*******************************************************************
+ Substitute strings with useful parameters.
+********************************************************************/
+void standard_sub_basic(char *str)
+{
+ standard_sub_advanced(-1, "", "", -1, str);
+}
+
+/*******************************************************************
+ Substitute strings with useful parameters.
+********************************************************************/
+void standard_sub_vuser(char *str, user_struct *vuser)
+{
+ standard_sub_advanced(-1, vuser->name, "", -1, str);
+}
+
+/*******************************************************************
+ Substitute strings with useful parameters.
+********************************************************************/
+void standard_sub_vsnum(char *str, user_struct *vuser, int snum)
+{
+ standard_sub_advanced(snum, vuser->name, "", -1, str);
+}
+
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c
index 33c6e91709..bb62442beb 100644
--- a/source3/lib/util_sock.c
+++ b/source3/lib/util_sock.c
@@ -30,8 +30,6 @@ extern int sslFd;
extern int DEBUGLEVEL;
-BOOL passive = False;
-
/* the last IP received from */
struct in_addr lastip;
@@ -538,8 +536,6 @@ ssize_t write_socket(int fd,char *buf,size_t len)
{
ssize_t ret=0;
- if (passive)
- return(len);
DEBUG(6,("write_socket(%d,%d)\n",fd,(int)len));
ret = write_socket_data(fd,buf,len);
@@ -752,9 +748,6 @@ BOOL send_one_packet(char *buf,int len,struct in_addr ip,int port,int type)
int out_fd;
struct sockaddr_in sock_out;
- if (passive)
- return(True);
-
/* create a socket to write to */
out_fd = socket(AF_INET, type, 0);
if (out_fd == -1)
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c
index 17aa83b72b..64ec05b017 100644
--- a/source3/smbd/ipc.c
+++ b/source3/smbd/ipc.c
@@ -80,7 +80,7 @@ static int CopyExpanded(connection_struct *conn,
StrnCpy(buf,src,sizeof(buf)/2);
pstring_sub(buf,"%S",lp_servicename(snum));
- standard_sub(conn,buf);
+ standard_sub_conn(conn,buf);
StrnCpy(*dst,buf,*n);
l = strlen(*dst) + 1;
(*dst) += l;
@@ -105,7 +105,7 @@ static int StrlenExpanded(connection_struct *conn, int snum, char* s)
if (!s) return(0);
StrnCpy(buf,s,sizeof(buf)/2);
pstring_sub(buf,"%S",lp_servicename(snum));
- standard_sub(conn,buf);
+ standard_sub_conn(conn,buf);
return strlen(buf) + 1;
}
@@ -115,7 +115,7 @@ static char* Expand(connection_struct *conn, int snum, char* s)
if (!s) return(NULL);
StrnCpy(buf,s,sizeof(buf)/2);
pstring_sub(buf,"%S",lp_servicename(snum));
- standard_sub(conn,buf);
+ standard_sub_conn(conn,buf);
return &buf[0];
}
@@ -2137,7 +2137,7 @@ static BOOL api_RNetServerGetInfo(connection_struct *conn,uint16 vuid, char *par
SIVAL(p,6,0);
} else {
SIVAL(p,6,PTR_DIFF(p2,*rdata));
- standard_sub(conn,comment);
+ standard_sub_conn(conn,comment);
StrnCpy(p2,comment,MAX(mdrcnt - struct_len,0));
p2 = skip_string(p2,1);
}
@@ -2519,7 +2519,7 @@ static BOOL api_RNetUserGetInfo(connection_struct *conn,uint16 vuid, char *param
SSVAL(p,52,0); /* flags */
SIVAL(p,54,PTR_DIFF(p2,*rdata)); /* script_path */
pstrcpy(p2,lp_logon_script());
- standard_sub( conn, p2 );
+ standard_sub_conn( conn, p2 );
p2 = skip_string(p2,1);
if (uLevel == 2)
{
@@ -2544,7 +2544,7 @@ static BOOL api_RNetUserGetInfo(connection_struct *conn,uint16 vuid, char *param
SSVALS(p,104,-1); /* num_logons */
SIVAL(p,106,PTR_DIFF(p2,*rdata)); /* logon_server */
pstrcpy(p2,"\\\\%L");
- standard_sub_basic(p2);
+ standard_sub_conn(conn, p2);
p2 = skip_string(p2,1);
SSVAL(p,110,49); /* country_code */
SSVAL(p,112,860); /* code page */
@@ -2667,7 +2667,7 @@ static BOOL api_WWkstaUserLogon(connection_struct *conn,uint16 vuid, char *param
{
pstring logon_script;
pstrcpy(logon_script,lp_logon_script());
- standard_sub( conn, logon_script );
+ standard_sub_conn( conn, logon_script );
PACKS(&desc,"z", logon_script); /* script path */
}
/* End of JHT mods */
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index cbcdad157a..a7baa9e327 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -512,7 +512,6 @@ static void usage(char *pname)
printf("\t-D Become a daemon\n");
printf("\t-a Append to log file (default)\n");
printf("\t-o Overwrite log file, don't append\n");
- printf("\t-P Passive only\n");
printf("\t-h Print usage\n");
printf("\t-? Print usage\n");
printf("\t-V Print version\n");
@@ -548,19 +547,12 @@ static void usage(char *pname)
argc--;
}
- while ( EOF != (opt = getopt(argc, argv, "O:l:s:d:Dp:h?VPaof:")) )
+ while ( EOF != (opt = getopt(argc, argv, "O:l:s:d:Dp:h?Vaof:")) )
switch (opt) {
case 'O':
pstrcpy(user_socket_options,optarg);
break;
- case 'P':
- {
- extern BOOL passive;
- passive = True;
- }
- break;
-
case 's':
pstrcpy(servicesf,optarg);
break;
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index 24ba79906b..b7942906df 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -488,7 +488,7 @@ connection_struct *make_connection(char *service,char *user,char *password, int
{
pstring s;
pstrcpy(s,lp_pathname(snum));
- standard_sub(conn,s);
+ standard_sub_conn(conn,s);
string_set(&conn->connectpath,s);
DEBUG(3,("Connect path is %s\n",s));
}
@@ -523,7 +523,7 @@ connection_struct *make_connection(char *service,char *user,char *password, int
if (*lp_rootpreexec(SNUM(conn))) {
pstring cmd;
pstrcpy(cmd,lp_rootpreexec(SNUM(conn)));
- standard_sub(conn,cmd);
+ standard_sub_conn(conn,cmd);
DEBUG(5,("cmd=%s\n",cmd));
ret = smbrun(cmd,NULL,False);
if (ret != 0 && lp_rootpreexec_close(SNUM(conn))) {
@@ -584,7 +584,7 @@ connection_struct *make_connection(char *service,char *user,char *password, int
if (*lp_preexec(SNUM(conn))) {
pstring cmd;
pstrcpy(cmd,lp_preexec(SNUM(conn)));
- standard_sub(conn,cmd);
+ standard_sub_conn(conn,cmd);
ret = smbrun(cmd,NULL,False);
if (ret != 0 && lp_preexec_close(SNUM(conn))) {
DEBUG(1,("preexec gave %d - failing connection\n", ret));
@@ -680,7 +680,7 @@ void close_cnum(connection_struct *conn, uint16 vuid)
become_user(conn, vuid)) {
pstring cmd;
pstrcpy(cmd,lp_postexec(SNUM(conn)));
- standard_sub(conn,cmd);
+ standard_sub_conn(conn,cmd);
smbrun(cmd,NULL,False);
unbecome_user();
}
@@ -690,7 +690,7 @@ void close_cnum(connection_struct *conn, uint16 vuid)
if (*lp_rootpostexec(SNUM(conn))) {
pstring cmd;
pstrcpy(cmd,lp_rootpostexec(SNUM(conn)));
- standard_sub(conn,cmd);
+ standard_sub_conn(conn,cmd);
smbrun(cmd,NULL,False);
}