* compressed files without decompressing the whole archive)
*/
static lws_fop_fd_t
-test_server_fops_open(struct lws_plat_file_ops *fops,
- const char *filename,
- lws_filepos_t *filelen,
+test_server_fops_open(const struct lws_plat_file_ops *fops,
+ const char *vfs_path, const char *vpath,
lws_fop_flags_t *flags)
{
lws_fop_fd_t fop_fd;
/* call through to original platform implementation */
- fop_fd = fops_plat.open(fops, filename, filelen, flags);
+ fop_fd = fops_plat.open(fops, vfs_path, vpath, flags);
- lwsl_info("%s: opening %s, ret %p, len %lu\n", __func__, filename,
- fop_fd, (long)*filelen);
+ if (fop_fd)
+ lwsl_info("%s: opening %s, ret %p, len %lu\n", __func__,
+ vfs_path, fop_fd,
+ (long)lws_vfs_get_length(fop_fd));
+ else
+ lwsl_info("%s: open %s failed\n", __func__, vfs_path);
return fop_fd;
}
int main(int argc, char **argv)
{
struct lws_context_creation_info info;
+ struct lws_vhost *vhost;
char interface_name[128] = "";
unsigned int ms, oldms = 0;
const char *iface = NULL;
info.port = 7681;
while (n >= 0) {
- n = getopt_long(argc, argv, "eci:hsap:d:Dr:C:K:A:R:vu:g:P:", options, NULL);
+ n = getopt_long(argc, argv, "eci:hsap:d:Dr:C:K:A:R:vu:g:P:k", options, NULL);
if (n < 0)
continue;
switch (n) {
interface_name[(sizeof interface_name) - 1] = '\0';
iface = interface_name;
break;
+ case 'k':
+ info.bind_iface = 1;
+#if defined(LWS_HAVE_SYS_CAPABILITY_H) && defined(LWS_HAVE_LIBCAP)
+ info.caps[0] = CAP_NET_RAW;
+ info.count_caps = 1;
+#endif
+ break;
case 'c':
close_testing = 1;
fprintf(stderr, " Close testing mode -- closes on "
info.gid = gid;
info.uid = uid;
info.max_http_header_pool = 16;
- info.options = opts | LWS_SERVER_OPTION_VALIDATE_UTF8;
+ info.options = opts | LWS_SERVER_OPTION_VALIDATE_UTF8 | LWS_SERVER_OPTION_EXPLICIT_VHOSTS | LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;
info.extensions = exts;
info.timeout_secs = 5;
info.ssl_cipher_list = "ECDHE-ECDSA-AES256-GCM-SHA384:"
return -1;
}
+ vhost = lws_create_vhost(context, &info);
+ if (!vhost) {
+ lwsl_err("vhost creation failed\n");
+ return -1;
+ }
+
+#if !defined(LWS_NO_CLIENT) && defined(LWS_OPENSSL_SUPPORT)
+ lws_init_vhost_client_ssl(&info, vhost);
+#endif
+
/* this shows how to override the lws file operations. You don't need
* to do any of this unless you have a reason (eg, want to serve
* compressed files without decompressing the whole archive)