All of lore.kernel.org
 help / color / mirror / Atom feed
From: Henrik Carlqvist <hc981@poolhem.se>
To: Henrik Carlqvist <hc94@poolhem.se>
Cc: samuel.thibault@gnu.org, qemu-devel@nongnu.org
Subject: Ping 2: [PATCH v2] Allowing setting and overriding parameters in smb.conf
Date: Sat, 17 Feb 2024 23:28:24 +0100	[thread overview]
Message-ID: <20240217232824.3db4c9c7.hc981@poolhem.se> (raw)
In-Reply-To: <20230910134812.7fa3a603.hc94@poolhem.se>

Still wondering if there are any plans to apply my patch or if you would like
to change anything in the patch?

Being able to set parameters in smb.conf would be really useful these days for
people running old versions of Windows like Windows XP in a qemu guest. Today,
the default settings of Samba has disabled SMBv1 making old versions of
Windows unable to connect to Samba shares.

regards Henrik

On Sun, 10 Sep 2023 13:48:12 +0200
Henrik Carlqvist <hc94@poolhem.se> wrote:

> I'm just wondering if there are any plans to apply my patch in this version
> or if you would like me to change anything more in the patch? I am aware
> that during this time of the year many have been away on vacation and it has
> also been a new release 8.1 which has blocked any submitted patches but bug
> fixes. However, now might be a good time to push this patch towards master?
> 
> Best regards Henrik
> 
> On Thu, 3 Aug 2023 17:12:56 +0200
> Henrik Carlqvist <hc981@poolhem.se> wrote:
> 
> > From a6dfb322a88965281e3bba00a92f8d5e437bfa95 Mon Sep 17 00:00:00 2001
> > From: Henrik Carlqvist <hc1245@poolhem.se>
> > Date: Thu, 3 Aug 2023 16:52:25 +0200
> > Subject: [PATCH] Allowing setting and overriding parameters in smb.conf,
> >  moving some parameters from the [qemu] section to the [global] section to
> >  allow them to get overridden by custom user settings.
> > 
> > Signed-off-by: Henrik Carlqvist <hc1245@poolhem.se>
> > ---
> > 
> > In this second version of the patch I have moved also the "force user" 
> > parameter to the global section of smb.conf. Even though I do not self see
> > the usefullness of altering that parameter we might just as well give the
> > users the freedom to alter anything in smb.conf. Maybe someone else will
> > see the need to alter that parameter.
> > 
> > Best regards Henrik
> > 
> >  net/slirp.c     | 50 ++++++++++++++++++++++++++++++++++++++++---------
> >  qapi/net.json   |  3 +++
> >  qemu-options.hx | 15 ++++++++++++---
> >  3 files changed, 56 insertions(+), 12 deletions(-)
> > 
> > diff --git a/net/slirp.c b/net/slirp.c
> > index c33b3e02e7..e27d115bc4 100644
> > --- a/net/slirp.c
> > +++ b/net/slirp.c
> > @@ -106,7 +106,8 @@ static int slirp_guestfwd(SlirpState *s, const char
> > *config_str, Error **errp);
> >  
> >  #if defined(CONFIG_SMBD_COMMAND)
> >  static int slirp_smb(SlirpState *s, const char *exported_dir,
> > -                     struct in_addr vserver_addr, Error **errp);
> > +                     struct in_addr vserver_addr, const char *smbparams,
> > +                     Error **errp);
> >  static void slirp_smb_cleanup(SlirpState *s);
> >  #else
> >  static inline void slirp_smb_cleanup(SlirpState *s) { }
> > @@ -424,6 +425,7 @@ static int net_slirp_init(NetClientState *peer, const
> > char *model,
> >                            const char *bootfile, const char *vdhcp_start,
> >                            const char *vnameserver, const char
> >                            *vnameserver6, const char *smb_export, const
> >                            char*vsmbserver,
> > +                          const char *smbparams,
> >                            const char **dnssearch, const char
> >                            *vdomainname, const char *tftp_server_name,
> >                            Error **errp)
> > @@ -678,7 +680,7 @@ static int net_slirp_init(NetClientState *peer, const
> > char *model,
> >      }
> >  #if defined(CONFIG_SMBD_COMMAND)
> >      if (smb_export) {
> > -        if (slirp_smb(s, smb_export, smbsrv, errp) < 0) {
> > +        if (slirp_smb(s, smb_export, smbsrv, smbparams, errp) < 0) {
> >              goto error;
> >          }
> >      }
> > @@ -891,7 +893,8 @@ static void slirp_smb_cleanup(SlirpState *s)
> >  }
> >  
> >  static int slirp_smb(SlirpState* s, const char *exported_dir,
> > -                     struct in_addr vserver_addr, Error **errp)
> > +                     struct in_addr vserver_addr, const char *smbparams,
> > +                     Error **errp)
> >  {
> >      char *smb_conf;
> >      char *smb_cmdline;
> > @@ -950,11 +953,12 @@ static int slirp_smb(SlirpState* s, const char
> > *exported_dir,
> >              "printing = bsd\n"
> >              "disable spoolss = yes\n"
> >              "usershare max shares = 0\n"
> > -            "[qemu]\n"
> > -            "path=%s\n"
> >              "read only=no\n"
> >              "guest ok=yes\n"
> > -            "force user=%s\n",
> > +            "force user=%s\n"
> > +	    "%s"
> > +            "[qemu]\n"
> > +            "path=%s\n",
> >              s->smb_dir,
> >              s->smb_dir,
> >              s->smb_dir,
> > @@ -963,8 +967,9 @@ static int slirp_smb(SlirpState* s, const char
> > *exported_dir,
> >              s->smb_dir,
> >              s->smb_dir,
> >              s->smb_dir,
> > -            exported_dir,
> > -            passwd->pw_name
> > +            passwd->pw_name,
> > +            smbparams,
> > +            exported_dir
> >              );
> >      fclose(f);
> >  
> > @@ -1143,6 +1148,29 @@ static const char **slirp_dnssearch(const
> > StringList*dnsname)
> >      return ret;
> >  }
> >  
> > +static char *slirp_smbparams(const StringList *smbparam)
> > +{
> > +    const StringList *c = smbparam;
> > +    size_t i = 1; /* for string terminating 0 */
> > +    char *ret;
> > +
> > +    while (c) {
> > +        i += strlen(c->value->str);
> > +        i++; /* for \n */
> > +        c = c->next;
> > +    }
> > +    ret = g_malloc(i * sizeof(*ret));
> > +    ret[0]=0; /* Start with empty string */
> > +
> > +    c = smbparam;
> > +    while (c) {
> > +        pstrcat(ret, i * sizeof(*ret), c->value->str);
> > +        pstrcat(ret, i * sizeof(*ret), "\n");
> > +        c = c->next;
> > +    }
> > +    return ret;
> > +}
> > +
> >  int net_init_slirp(const Netdev *netdev, const char *name,
> >                     NetClientState *peer, Error **errp)
> >  {
> > @@ -1151,6 +1179,7 @@ int net_init_slirp(const Netdev *netdev, const char
> > *name,
> >      int ret;
> >      const NetdevUserOptions *user;
> >      const char **dnssearch;
> > +    char *smbparams;
> >      bool ipv4 = true, ipv6 = true;
> >  
> >      assert(netdev->type == NET_CLIENT_DRIVER_USER);
> > @@ -1170,6 +1199,7 @@ int net_init_slirp(const Netdev *netdev, const char
> > *name,
> >             NULL;
> >  
> >      dnssearch = slirp_dnssearch(user->dnssearch);
> > +    smbparams = slirp_smbparams(user->smbparam);
> >  
> >      /* all optional fields are initialized to "all bits zero" */
> >  
> > @@ -1182,7 +1212,8 @@ int net_init_slirp(const Netdev *netdev, const char
> > *name,
> >                           user->ipv6_host, user->hostname, user->tftp,
> >                           user->bootfile, user->dhcpstart,
> >                           user->dns, user->ipv6_dns, user->smb,
> > -                         user->smbserver, dnssearch, user->domainname,
> > +                         user->smbserver, smbparams,
> > +                         dnssearch, user->domainname,
> >                           user->tftp_server_name, errp);
> >  
> >      while (slirp_configs) {
> > @@ -1193,6 +1224,7 @@ int net_init_slirp(const Netdev *netdev, const char
> > *name,
> >  
> >      g_free(vnet);
> >      g_free(dnssearch);
> > +    g_free(smbparams);
> >  
> >      return ret;
> >  }
> > diff --git a/qapi/net.json b/qapi/net.json
> > index 313c8a606e..163091719c 100644
> > --- a/qapi/net.json
> > +++ b/qapi/net.json
> > @@ -156,6 +156,8 @@
> >  #
> >  # @smbserver: IP address of the built-in SMB server
> >  #
> > +# @smbparam: list of parameters with values for smb.conf
> > +#
> >  # @hostfwd: redirect incoming TCP or UDP host connections to guest
> >  #     endpoints
> >  #
> > @@ -186,6 +188,7 @@
> >      '*ipv6-dns':         'str',
> >      '*smb':       'str',
> >      '*smbserver': 'str',
> > +    '*smbparam': ['String'],
> >      '*hostfwd':   ['String'],
> >      '*guestfwd':  ['String'],
> >      '*tftp-server-name': 'str' } }
> > diff --git a/qemu-options.hx b/qemu-options.hx
> > index 29b98c3d4c..7b92d08c3e 100644
> > --- a/qemu-options.hx
> > +++ b/qemu-options.hx
> > @@ -2758,9 +2758,9 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
> >      "         [,ipv6=on|off][,ipv6-net=addr[/int]][,ipv6-host=addr]\n"
> >      "         [,restrict=on|off][,hostname=host][,dhcpstart=addr]\n"
> >      "        
> >      [,dns=addr][,ipv6-dns=addr][,dnssearch=domain][,domainname=domain]\n"
> > -    "        
> > [,tftp=dir][,tftp-server-name=name][,bootfile=f][,hostfwd=rule][,guestfwd
> > =r ule]"+    "        
> > [,tftp=dir][,tftp-server-name=name][,bootfile=f][,hostfwd=rule][,guestfwd
> > =r ule]\n"
> >  #ifndef _WIN32
> > -                                            
> > "[,smb=dir[,smbserver=addr]]\n"+    "        
> > [,smb=dir[,smbserver=addr][,smbparam=parameter=value]]\n"
> >  #endif
> >      "                configure a user mode network backend with ID
> >      'str',\n""                its DHCP server and optional services\n"
> > @@ -3062,7 +3062,7 @@ SRST
> >              |qemu_system| -hda linux.img -boot n -device e1000,netdev=n1
> >              |\\
> >                  -netdev
> >                  user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0
> >  
> > -    ``smb=dir[,smbserver=addr]``
> > +    ``smb=dir[,smbserver=addr][,smbparam=parameter=value]``
> >          When using the user mode network stack, activate a built-in SMB
> >          server so that Windows OSes can access to the host files in
> >          ``dir`` transparently. The IP address of the SMB server can be
> > @@ -3081,6 +3081,15 @@ SRST
> >  
> >          Then ``dir`` can be accessed in ``\\smbserver\qemu``.
> >  
> > +        It is possible to set samba parameters in the generated smb.conf
> > +        with one or more ``smbparam=parameter=value``. Example:
> > +
> > +        .. parsed-literal::
> > +
> > +            |qemu_system| -nic user,smb=/tmp,smbparam="read
> > only"=yes,smbparam="server min protocol"=NT1+
> > +        See the man page of smb.conf for a complete listing of
> > parameters.+
> >          Note that a SAMBA server must be installed on the host OS.
> >  
> >      ``hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport``
> > -- 
> > 2.35.1
> > 


  reply	other threads:[~2024-02-17 22:31 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-07  2:37 [PATCH qemu v3 0/1] [PATCH v3] Emulate dip switch language layout settings on SUN keyboard ~henca
2023-01-06 21:33 ` [PATCH qemu v3 1/1] Emulating sun keyboard language layout dip switches, taking the value for the dip switches from the "-k" option to qemu ~henca
2023-01-10 23:08   ` Mark Cave-Ayland
2023-01-23 19:09     ` [PATCH v5] Emulate dip switch language layout settings on SUN keyboard Henrik Carlqvist
2023-03-04 21:07       ` Henrik Carlqvist
2023-03-28 14:01         ` Daniel P. Berrangé
2023-03-28 17:19           ` Henrik Carlqvist
2023-03-28 17:59             ` Daniel P. Berrangé
2023-03-28 20:16               ` Henrik Carlqvist
2023-04-30 20:55                 ` [PATCH v6] " Henrik Carlqvist
2023-06-08 16:14                   ` Ping: " Henrik Carlqvist
2023-06-10  7:06                     ` Mark Cave-Ayland
2023-06-10 10:29                       ` Henrik Carlqvist
2023-06-10 23:47                         ` [PATCH v7] " Henrik Carlqvist
2023-06-20  9:22                           ` Daniel P. Berrangé
2023-06-20 19:50                             ` Henrik Carlqvist
2023-06-21  7:09                               ` Daniel P. Berrangé
2023-06-21 18:14                                 ` Henrik Carlqvist
2023-06-23 18:30                                   ` [PATCH v8] " Henrik Carlqvist
2023-06-26  9:42                                     ` Daniel P. Berrangé
2023-06-27  6:33                                     ` Mark Cave-Ayland
2023-06-27 17:18                                       ` Henrik Carlqvist
2023-08-01 21:27                                     ` [PATCH v1] Allowing setting and overriding parameters in smb.conf Henrik Carlqvist
2023-08-02 19:53                                       ` Samuel Thibault
2023-08-02 23:09                                         ` Henrik Carlqvist
2023-08-02 23:13                                           ` Samuel Thibault
2023-08-02 23:26                                             ` Henrik Carlqvist
2023-08-02 23:34                                               ` Samuel Thibault
2023-08-03  0:13                                                 ` Henrik Carlqvist
2023-08-03 15:12                                                 ` [PATCH v2] " Henrik Carlqvist
2023-09-10 11:48                                                   ` Ping: " Henrik Carlqvist
2024-02-17 22:28                                                     ` Henrik Carlqvist [this message]
2024-02-18  9:30                                                       ` Ping 2: " Michael Tokarev
2024-02-18 14:55                                                         ` Henrik Carlqvist
2023-06-08 16:22                   ` [PATCH v6] Emulate dip switch language layout settings on SUN keyboard Daniel P. Berrangé
2023-06-08 18:12                     ` Henrik Carlqvist
2023-06-09  7:50                       ` Daniel P. Berrangé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240217232824.3db4c9c7.hc981@poolhem.se \
    --to=hc981@poolhem.se \
    --cc=hc94@poolhem.se \
    --cc=qemu-devel@nongnu.org \
    --cc=samuel.thibault@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.