- got rid of the "passive" option
authorAndrew Tridgell <tridge@samba.org>
Wed, 19 Apr 2000 04:01:16 +0000 (04:01 +0000)
committerAndrew Tridgell <tridge@samba.org>
Wed, 19 Apr 2000 04:01:16 +0000 (04:01 +0000)
- cleaned up the standard_sub_*() calls a lot
(This used to be commit 2c2d95d77d3667eaa9252506a82b9054b0d0e01c)

source3/include/proto.h
source3/lib/substitute.c
source3/lib/util_sock.c
source3/smbd/ipc.c
source3/smbd/server.c
source3/smbd/service.c

index 9d1c158ceffe745c3319d1c861296ec2ca4d0945..843207391514f5f8f6e90f11afeaa7352835c12d 100644 (file)
@@ -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,
index 8e7b1cfa5a5da37a988ec2ed48e5b1c169fb9c5a..e7d620db16a6c0b4f7afac3a40fcf8773fcaa172 100644 (file)
@@ -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);
+}
+
index 33c6e91709c2b496b2da607870562d88d49368f1..bb62442bebb57e99abc3e12edf7549bb131646b9 100644 (file)
@@ -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) 
index 17aa83b72b43ec7dc8677078d102a704d745e4e0..64ec05b0176f6902d338421253fa195ad4aaaa29 100644 (file)
@@ -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 */
index cbcdad157a670de24ce6dd88e8f1d8938db223ba..a7baa9e3277737b3f9d04066cfdb212de78d6e7b 100644 (file)
@@ -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;
index 24ba79906b2b2de9f9f99f58ebbeccf8e8c89c97..b7942906dff6801a3d00d3682b1cb94ca545b113 100644 (file)
@@ -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);
        }