You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
281 lines
13 KiB
281 lines
13 KiB
5 years ago
|
From 5192b35d5e8644f000277c2f075b2ae90c514cbd Mon Sep 17 00:00:00 2001
|
||
|
From: Andreas Schneider <asn@samba.org>
|
||
|
Date: Tue, 4 Sep 2018 15:48:03 +0200
|
||
|
Subject: [PATCH] s3:libsmbclient: Add function to set protocol levels
|
||
|
|
||
|
Signed-off-by: Andreas Schneider <asn@samba.org>
|
||
|
Reviewed-by: Jeremy Allison <jra@samba.org>
|
||
|
(cherry picked from commit 0dae4e2f5c65167fdb2405e232436921a0bb17e6)
|
||
|
---
|
||
|
source3/include/libsmbclient.h | 19 ++-
|
||
|
source3/libsmb/ABI/smbclient-0.5.0.sigs | 185 ++++++++++++++++++++++++
|
||
|
source3/libsmb/libsmb_setget.c | 18 +++
|
||
|
source3/libsmb/wscript | 2 +-
|
||
|
4 files changed, 222 insertions(+), 2 deletions(-)
|
||
|
create mode 100644 source3/libsmb/ABI/smbclient-0.5.0.sigs
|
||
|
|
||
|
diff --git a/source3/include/libsmbclient.h b/source3/include/libsmbclient.h
|
||
|
index ca5c7f87f71..5e4a1715402 100644
|
||
|
--- a/source3/include/libsmbclient.h
|
||
|
+++ b/source3/include/libsmbclient.h
|
||
|
@@ -831,7 +831,24 @@ smbc_getOptionUseNTHash(SMBCCTX *c);
|
||
|
void
|
||
|
smbc_setOptionUseNTHash(SMBCCTX *c, smbc_bool b);
|
||
|
|
||
|
-
|
||
|
+/**
|
||
|
+ * @brief Set the 'client min protocol' and the 'client max protocol'.
|
||
|
+ *
|
||
|
+ * IMPORTANT: This overrrides the values 'client min protocol' and 'client max
|
||
|
+ * protocol' set in the smb.conf file!
|
||
|
+ *
|
||
|
+ * @param[in] c The smbc context to use.
|
||
|
+ *
|
||
|
+ * @param[in] min_proto The minimal protocol to use or NULL for leaving it
|
||
|
+ * untouched.
|
||
|
+ *
|
||
|
+ * @param[in] max_proto The maximum protocol to use or NULL for leaving it
|
||
|
+ * untouched.
|
||
|
+ *
|
||
|
+ * @returns true for success, false otherwise
|
||
|
+ */
|
||
|
+smbc_bool
|
||
|
+smbc_setOptionProtocols(SMBCCTX *c, const char *min_proto, const char *max_proto);
|
||
|
|
||
|
/*************************************
|
||
|
* Getters and setters for FUNCTIONS *
|
||
|
diff --git a/source3/libsmb/ABI/smbclient-0.5.0.sigs b/source3/libsmb/ABI/smbclient-0.5.0.sigs
|
||
|
new file mode 100644
|
||
|
index 00000000000..b4245979c24
|
||
|
--- /dev/null
|
||
|
+++ b/source3/libsmb/ABI/smbclient-0.5.0.sigs
|
||
|
@@ -0,0 +1,185 @@
|
||
|
+smbc_chmod: int (const char *, mode_t)
|
||
|
+smbc_close: int (int)
|
||
|
+smbc_closedir: int (int)
|
||
|
+smbc_creat: int (const char *, mode_t)
|
||
|
+smbc_fgetxattr: int (int, const char *, const void *, size_t)
|
||
|
+smbc_flistxattr: int (int, char *, size_t)
|
||
|
+smbc_free_context: int (SMBCCTX *, int)
|
||
|
+smbc_fremovexattr: int (int, const char *)
|
||
|
+smbc_fsetxattr: int (int, const char *, const void *, size_t, int)
|
||
|
+smbc_fstat: int (int, struct stat *)
|
||
|
+smbc_fstatvfs: int (int, struct statvfs *)
|
||
|
+smbc_ftruncate: int (int, off_t)
|
||
|
+smbc_getDebug: int (SMBCCTX *)
|
||
|
+smbc_getFunctionAddCachedServer: smbc_add_cached_srv_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionAuthData: smbc_get_auth_data_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionAuthDataWithContext: smbc_get_auth_data_with_context_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionCheckServer: smbc_check_server_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionChmod: smbc_chmod_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionClose: smbc_close_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionClosedir: smbc_closedir_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionCreat: smbc_creat_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionFstat: smbc_fstat_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionFstatVFS: smbc_fstatvfs_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionFstatdir: smbc_fstatdir_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionFtruncate: smbc_ftruncate_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionGetCachedServer: smbc_get_cached_srv_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionGetdents: smbc_getdents_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionGetxattr: smbc_getxattr_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionListPrintJobs: smbc_list_print_jobs_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionListxattr: smbc_listxattr_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionLseek: smbc_lseek_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionLseekdir: smbc_lseekdir_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionMkdir: smbc_mkdir_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionNotify: smbc_notify_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionOpen: smbc_open_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionOpenPrintJob: smbc_open_print_job_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionOpendir: smbc_opendir_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionPrintFile: smbc_print_file_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionPurgeCachedServers: smbc_purge_cached_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionRead: smbc_read_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionReaddir: smbc_readdir_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionReaddirPlus: smbc_readdirplus_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionRemoveCachedServer: smbc_remove_cached_srv_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionRemoveUnusedServer: smbc_remove_unused_server_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionRemovexattr: smbc_removexattr_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionRename: smbc_rename_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionRmdir: smbc_rmdir_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionSetxattr: smbc_setxattr_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionSplice: smbc_splice_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionStat: smbc_stat_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionStatVFS: smbc_statvfs_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionTelldir: smbc_telldir_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionUnlink: smbc_unlink_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionUnlinkPrintJob: smbc_unlink_print_job_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionUtimes: smbc_utimes_fn (SMBCCTX *)
|
||
|
+smbc_getFunctionWrite: smbc_write_fn (SMBCCTX *)
|
||
|
+smbc_getNetbiosName: const char *(SMBCCTX *)
|
||
|
+smbc_getOptionBrowseMaxLmbCount: int (SMBCCTX *)
|
||
|
+smbc_getOptionCaseSensitive: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionDebugToStderr: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionFallbackAfterKerberos: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionFullTimeNames: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionNoAutoAnonymousLogin: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionOneSharePerServer: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionOpenShareMode: smbc_share_mode (SMBCCTX *)
|
||
|
+smbc_getOptionSmbEncryptionLevel: smbc_smb_encrypt_level (SMBCCTX *)
|
||
|
+smbc_getOptionUrlEncodeReaddirEntries: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionUseCCache: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionUseKerberos: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionUseNTHash: smbc_bool (SMBCCTX *)
|
||
|
+smbc_getOptionUserData: void *(SMBCCTX *)
|
||
|
+smbc_getPort: uint16_t (SMBCCTX *)
|
||
|
+smbc_getServerCacheData: struct smbc_server_cache *(SMBCCTX *)
|
||
|
+smbc_getTimeout: int (SMBCCTX *)
|
||
|
+smbc_getUser: const char *(SMBCCTX *)
|
||
|
+smbc_getWorkgroup: const char *(SMBCCTX *)
|
||
|
+smbc_getdents: int (unsigned int, struct smbc_dirent *, int)
|
||
|
+smbc_getxattr: int (const char *, const char *, const void *, size_t)
|
||
|
+smbc_init: int (smbc_get_auth_data_fn, int)
|
||
|
+smbc_init_context: SMBCCTX *(SMBCCTX *)
|
||
|
+smbc_lgetxattr: int (const char *, const char *, const void *, size_t)
|
||
|
+smbc_list_print_jobs: int (const char *, smbc_list_print_job_fn)
|
||
|
+smbc_listxattr: int (const char *, char *, size_t)
|
||
|
+smbc_llistxattr: int (const char *, char *, size_t)
|
||
|
+smbc_lremovexattr: int (const char *, const char *)
|
||
|
+smbc_lseek: off_t (int, off_t, int)
|
||
|
+smbc_lseekdir: int (int, off_t)
|
||
|
+smbc_lsetxattr: int (const char *, const char *, const void *, size_t, int)
|
||
|
+smbc_mkdir: int (const char *, mode_t)
|
||
|
+smbc_new_context: SMBCCTX *(void)
|
||
|
+smbc_notify: int (int, smbc_bool, uint32_t, unsigned int, smbc_notify_callback_fn, void *)
|
||
|
+smbc_open: int (const char *, int, mode_t)
|
||
|
+smbc_open_print_job: int (const char *)
|
||
|
+smbc_opendir: int (const char *)
|
||
|
+smbc_option_get: void *(SMBCCTX *, char *)
|
||
|
+smbc_option_set: void (SMBCCTX *, char *, ...)
|
||
|
+smbc_print_file: int (const char *, const char *)
|
||
|
+smbc_read: ssize_t (int, void *, size_t)
|
||
|
+smbc_readdir: struct smbc_dirent *(unsigned int)
|
||
|
+smbc_readdirplus: const struct libsmb_file_info *(unsigned int)
|
||
|
+smbc_removexattr: int (const char *, const char *)
|
||
|
+smbc_rename: int (const char *, const char *)
|
||
|
+smbc_rmdir: int (const char *)
|
||
|
+smbc_setConfiguration: int (SMBCCTX *, const char *)
|
||
|
+smbc_setDebug: void (SMBCCTX *, int)
|
||
|
+smbc_setFunctionAddCachedServer: void (SMBCCTX *, smbc_add_cached_srv_fn)
|
||
|
+smbc_setFunctionAuthData: void (SMBCCTX *, smbc_get_auth_data_fn)
|
||
|
+smbc_setFunctionAuthDataWithContext: void (SMBCCTX *, smbc_get_auth_data_with_context_fn)
|
||
|
+smbc_setFunctionCheckServer: void (SMBCCTX *, smbc_check_server_fn)
|
||
|
+smbc_setFunctionChmod: void (SMBCCTX *, smbc_chmod_fn)
|
||
|
+smbc_setFunctionClose: void (SMBCCTX *, smbc_close_fn)
|
||
|
+smbc_setFunctionClosedir: void (SMBCCTX *, smbc_closedir_fn)
|
||
|
+smbc_setFunctionCreat: void (SMBCCTX *, smbc_creat_fn)
|
||
|
+smbc_setFunctionFstat: void (SMBCCTX *, smbc_fstat_fn)
|
||
|
+smbc_setFunctionFstatVFS: void (SMBCCTX *, smbc_fstatvfs_fn)
|
||
|
+smbc_setFunctionFstatdir: void (SMBCCTX *, smbc_fstatdir_fn)
|
||
|
+smbc_setFunctionFtruncate: void (SMBCCTX *, smbc_ftruncate_fn)
|
||
|
+smbc_setFunctionGetCachedServer: void (SMBCCTX *, smbc_get_cached_srv_fn)
|
||
|
+smbc_setFunctionGetdents: void (SMBCCTX *, smbc_getdents_fn)
|
||
|
+smbc_setFunctionGetxattr: void (SMBCCTX *, smbc_getxattr_fn)
|
||
|
+smbc_setFunctionListPrintJobs: void (SMBCCTX *, smbc_list_print_jobs_fn)
|
||
|
+smbc_setFunctionListxattr: void (SMBCCTX *, smbc_listxattr_fn)
|
||
|
+smbc_setFunctionLseek: void (SMBCCTX *, smbc_lseek_fn)
|
||
|
+smbc_setFunctionLseekdir: void (SMBCCTX *, smbc_lseekdir_fn)
|
||
|
+smbc_setFunctionMkdir: void (SMBCCTX *, smbc_mkdir_fn)
|
||
|
+smbc_setFunctionNotify: void (SMBCCTX *, smbc_notify_fn)
|
||
|
+smbc_setFunctionOpen: void (SMBCCTX *, smbc_open_fn)
|
||
|
+smbc_setFunctionOpenPrintJob: void (SMBCCTX *, smbc_open_print_job_fn)
|
||
|
+smbc_setFunctionOpendir: void (SMBCCTX *, smbc_opendir_fn)
|
||
|
+smbc_setFunctionPrintFile: void (SMBCCTX *, smbc_print_file_fn)
|
||
|
+smbc_setFunctionPurgeCachedServers: void (SMBCCTX *, smbc_purge_cached_fn)
|
||
|
+smbc_setFunctionRead: void (SMBCCTX *, smbc_read_fn)
|
||
|
+smbc_setFunctionReaddir: void (SMBCCTX *, smbc_readdir_fn)
|
||
|
+smbc_setFunctionReaddirPlus: void (SMBCCTX *, smbc_readdirplus_fn)
|
||
|
+smbc_setFunctionRemoveCachedServer: void (SMBCCTX *, smbc_remove_cached_srv_fn)
|
||
|
+smbc_setFunctionRemoveUnusedServer: void (SMBCCTX *, smbc_remove_unused_server_fn)
|
||
|
+smbc_setFunctionRemovexattr: void (SMBCCTX *, smbc_removexattr_fn)
|
||
|
+smbc_setFunctionRename: void (SMBCCTX *, smbc_rename_fn)
|
||
|
+smbc_setFunctionRmdir: void (SMBCCTX *, smbc_rmdir_fn)
|
||
|
+smbc_setFunctionSetxattr: void (SMBCCTX *, smbc_setxattr_fn)
|
||
|
+smbc_setFunctionSplice: void (SMBCCTX *, smbc_splice_fn)
|
||
|
+smbc_setFunctionStat: void (SMBCCTX *, smbc_stat_fn)
|
||
|
+smbc_setFunctionStatVFS: void (SMBCCTX *, smbc_statvfs_fn)
|
||
|
+smbc_setFunctionTelldir: void (SMBCCTX *, smbc_telldir_fn)
|
||
|
+smbc_setFunctionUnlink: void (SMBCCTX *, smbc_unlink_fn)
|
||
|
+smbc_setFunctionUnlinkPrintJob: void (SMBCCTX *, smbc_unlink_print_job_fn)
|
||
|
+smbc_setFunctionUtimes: void (SMBCCTX *, smbc_utimes_fn)
|
||
|
+smbc_setFunctionWrite: void (SMBCCTX *, smbc_write_fn)
|
||
|
+smbc_setLogCallback: void (SMBCCTX *, void *, smbc_debug_callback_fn)
|
||
|
+smbc_setNetbiosName: void (SMBCCTX *, const char *)
|
||
|
+smbc_setOptionBrowseMaxLmbCount: void (SMBCCTX *, int)
|
||
|
+smbc_setOptionCaseSensitive: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionDebugToStderr: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionFallbackAfterKerberos: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionFullTimeNames: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionNoAutoAnonymousLogin: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionOneSharePerServer: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionOpenShareMode: void (SMBCCTX *, smbc_share_mode)
|
||
|
+smbc_setOptionProtocols: smbc_bool (SMBCCTX *, const char *, const char *)
|
||
|
+smbc_setOptionSmbEncryptionLevel: void (SMBCCTX *, smbc_smb_encrypt_level)
|
||
|
+smbc_setOptionUrlEncodeReaddirEntries: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionUseCCache: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionUseKerberos: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionUseNTHash: void (SMBCCTX *, smbc_bool)
|
||
|
+smbc_setOptionUserData: void (SMBCCTX *, void *)
|
||
|
+smbc_setPort: void (SMBCCTX *, uint16_t)
|
||
|
+smbc_setServerCacheData: void (SMBCCTX *, struct smbc_server_cache *)
|
||
|
+smbc_setTimeout: void (SMBCCTX *, int)
|
||
|
+smbc_setUser: void (SMBCCTX *, const char *)
|
||
|
+smbc_setWorkgroup: void (SMBCCTX *, const char *)
|
||
|
+smbc_set_context: SMBCCTX *(SMBCCTX *)
|
||
|
+smbc_set_credentials: void (const char *, const char *, const char *, smbc_bool, const char *)
|
||
|
+smbc_set_credentials_with_fallback: void (SMBCCTX *, const char *, const char *, const char *)
|
||
|
+smbc_setxattr: int (const char *, const char *, const void *, size_t, int)
|
||
|
+smbc_stat: int (const char *, struct stat *)
|
||
|
+smbc_statvfs: int (char *, struct statvfs *)
|
||
|
+smbc_telldir: off_t (int)
|
||
|
+smbc_unlink: int (const char *)
|
||
|
+smbc_unlink_print_job: int (const char *, int)
|
||
|
+smbc_urldecode: int (char *, char *, size_t)
|
||
|
+smbc_urlencode: int (char *, char *, int)
|
||
|
+smbc_utime: int (const char *, struct utimbuf *)
|
||
|
+smbc_utimes: int (const char *, struct timeval *)
|
||
|
+smbc_version: const char *(void)
|
||
|
+smbc_write: ssize_t (int, const void *, size_t)
|
||
|
diff --git a/source3/libsmb/libsmb_setget.c b/source3/libsmb/libsmb_setget.c
|
||
|
index 60b822a395c..b1c4ff3b557 100644
|
||
|
--- a/source3/libsmb/libsmb_setget.c
|
||
|
+++ b/source3/libsmb/libsmb_setget.c
|
||
|
@@ -526,6 +526,24 @@ smbc_setOptionUseNTHash(SMBCCTX *c, smbc_bool b)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+smbc_bool
|
||
|
+smbc_setOptionProtocols(SMBCCTX *c,
|
||
|
+ const char *min_proto,
|
||
|
+ const char *max_proto)
|
||
|
+{
|
||
|
+ bool ok = true;
|
||
|
+
|
||
|
+ if (min_proto != NULL) {
|
||
|
+ ok = lp_set_cmdline("client min protocol", min_proto);
|
||
|
+ }
|
||
|
+
|
||
|
+ if (max_proto != NULL) {
|
||
|
+ ok &= lp_set_cmdline("client min protocol", max_proto);
|
||
|
+ }
|
||
|
+
|
||
|
+ return ok;
|
||
|
+}
|
||
|
+
|
||
|
/** Get the function for obtaining authentication data */
|
||
|
smbc_get_auth_data_fn
|
||
|
smbc_getFunctionAuthData(SMBCCTX *c)
|
||
|
diff --git a/source3/libsmb/wscript b/source3/libsmb/wscript
|
||
|
index 5482aea7d9c..298afc3c0e3 100644
|
||
|
--- a/source3/libsmb/wscript
|
||
|
+++ b/source3/libsmb/wscript
|
||
|
@@ -27,5 +27,5 @@ def build(bld):
|
||
|
public_headers='../include/libsmbclient.h',
|
||
|
abi_directory='ABI',
|
||
|
abi_match='smbc_*',
|
||
|
- vnum='0.4.0',
|
||
|
+ vnum='0.5.0',
|
||
|
pc_files='smbclient.pc')
|
||
|
--
|
||
|
2.19.2
|
||
|
|