libdsm with meson support

Felix Paul Kühne f82e4776db smb: don't use asserts for error handling 9 gadi atpakaļ
bin 80a5c0be65 Fix dsm compilation when udp.h is not present 10 gadi atpakaļ
compat 5003022c1e compat: add support for clock_gettime on Darwin 10 gadi atpakaļ
contrib 33f4a0e556 Fix libtasn1 version detection. Move tasn1 compat types to config.h 11 gadi atpakaļ
doc 425f8c82c4 doxygen: only generate doc for include 10 gadi atpakaļ
include 357b7417b2 Fix shares listing issue if server returns a tid equal to 0 9 gadi atpakaļ
m4 0483435c39 Add -Wall -Wextra to build flags 10 gadi atpakaļ
src f82e4776db smb: don't use asserts for error handling 9 gadi atpakaļ
www 3a25719776 add www/README 10 gadi atpakaļ
.gitignore 92686fb3cb update .gitignore 10 gadi atpakaļ
AUTHORS 5604b40f8d update AUTHORS 10 gadi atpakaļ
COPYING dce710003c Update license and Readme 11 gadi atpakaļ
Makefile.am 1906a9e8dc Don't pass -W options in Makefile.am 10 gadi atpakaļ
NEWS 727e7654f4 Update NEWS 9 gadi atpakaļ
NOTES.md ab4a6299da Adds a NOTES file with some details/discoveries during the implementation 11 gadi atpakaļ
README.md d375ba3a1f Rework README.md 10 gadi atpakaļ
abi_version.sh 69bdc304e1 build: Initial autotools 11 gadi atpakaļ
bootstrap 70b038c85f allow to run bootstrap from build-folder 9 gadi atpakaļ
configure.ac 0e6c30f3d0 build: check for clock_gettime presence in librt for old glibc versions. 10 gadi atpakaļ
libdsm.pc.in e2c5ac4ae1 Fix PKG-CONFIG generation 10 gadi atpakaļ
package_version.sh 69bdc304e1 build: Initial autotools 11 gadi atpakaļ

README.md

liBDSM

lib Defective SMb (libDSM) is a SMB protocol client implementation in pure old C, with a lot less features than Samba but is simpler, and has with a more permissive license (currently LGPL + proprietary).

The initial goal of this project is to have a library that can access most SMB shares to read files and that has with a license compatible with the iOS/Android/WinRT appstores in order to integrate it into VLC for iOS and VLC for Android.

This library is also licensable under a proprietary license, if LGPL is not good enough for you.

The lib is provided as a static library or as a dynamically linked library. A few useless (yet) utils are also provided, mostly for testing purpose.

Features

Here's a list of the currently supported features:

  • NETBIOS
    • Basic bi-directionnal NETBIOS name resolution
    • Hacky LAN SMB servers discovery (Listing all the smb servers on the LAN, no WINS, etc.)
    • Basic NETBIOS Session transport layer
  • SMB
    • Support only required parts of 'NT LM 0.12' (aka CIFS?) dialect.
    • User based authentication
    • List Shares
    • Browse folders
    • Read file
    • No write, lock, RPCs, etc. [Hum... yet]

Support

liBDSM has been tested/reported to work with the following devices/OSes:

  • Windows 7
  • Windows 8/8.1
  • Samba
  • smbX (OSX new smb implementation)
  • QNAP TS-212
  • A cheap NAS whose name i can't remember :)

Feel free to contribute items to this list (or network trace of not working devices)

Building

Requirements

  • A Unix system with a bash-compatible shell
  • C99 C compiler
  • (GNU) Make
  • Autotools
  • libc with iconv
  • getopt_long
  • GNU tasn1 compiler/support library

The build dependencies can be installed on Debian(-based) systems using

sudo apt-get install build-essential autoconf libtool pkg-config libtasn1-3-dev libtasn1-3-bin libbsd-dev

HowTo

$> ./bootstrap
$> ./configure --prefix=/your/prefix
$> make
$> make install # maybe

TODO

  • HEAVILY refactor. Any help is welcome.
  • Support more of the SMBv2 and v3 protocols.

Contributing

  • Fork videolabs/libdsm
  • Make a feature branch
  • Commits your work there
  • Make a pull request
  • ...
  • Profit !